@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,298 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mermaidRenderer = exports.MermaidRenderer = void 0;
4
+ exports.renderMermaidDiagram = renderMermaidDiagram;
5
+ const mermaid_ascii_1 = require("../utils/mermaid-ascii");
6
+ /**
7
+ * Mermaid diagram renderer for TTY
8
+ * Converts Mermaid diagrams to ASCII art using mermaid-ascii when available
9
+ */
10
+ class MermaidRenderer {
11
+ config;
12
+ useExternalTool = true;
13
+ constructor(config = {}) {
14
+ this.config = {
15
+ theme: config.theme || 'default',
16
+ flowchart: config.flowchart || {},
17
+ sequence: config.sequence || {},
18
+ gantt: config.gantt || {},
19
+ };
20
+ }
21
+ /**
22
+ * Render mermaid diagram to ASCII (async to support external tool)
23
+ */
24
+ async render(mermaidCode) {
25
+ const trimmed = mermaidCode.trim();
26
+ // Try external mermaid-ascii tool first if enabled
27
+ if (this.useExternalTool) {
28
+ try {
29
+ const result = await mermaid_ascii_1.mermaidASCII.convertToASCII(trimmed, {
30
+ paddingX: 2,
31
+ paddingY: 1,
32
+ borderPadding: 1,
33
+ ascii: true
34
+ });
35
+ // If external tool succeeded, return result
36
+ if (result && !result.includes('mermaid-ascii not found')) {
37
+ return result;
38
+ }
39
+ }
40
+ catch (error) {
41
+ // Fall back to internal renderer
42
+ this.useExternalTool = false;
43
+ }
44
+ }
45
+ // Fallback to internal renderer
46
+ return this.renderInternal(trimmed);
47
+ }
48
+ /**
49
+ * Internal mermaid rendering (existing logic)
50
+ */
51
+ renderInternal(mermaidCode) {
52
+ const trimmed = mermaidCode.trim();
53
+ // Detect diagram type
54
+ if (trimmed.startsWith('graph') || trimmed.startsWith('flowchart')) {
55
+ return this.renderFlowchart(trimmed);
56
+ }
57
+ else if (trimmed.startsWith('sequenceDiagram')) {
58
+ return this.renderSequence(trimmed);
59
+ }
60
+ else if (trimmed.startsWith('gantt')) {
61
+ return this.renderGantt(trimmed);
62
+ }
63
+ else if (trimmed.startsWith('classDiagram')) {
64
+ return this.renderClassDiagram(trimmed);
65
+ }
66
+ else if (trimmed.startsWith('stateDiagram')) {
67
+ return this.renderStateDiagram(trimmed);
68
+ }
69
+ else if (trimmed.startsWith('pie')) {
70
+ return this.renderPie(trimmed);
71
+ }
72
+ return this.renderFallback(trimmed);
73
+ }
74
+ /**
75
+ * Render flowchart to ASCII
76
+ */
77
+ renderFlowchart(code) {
78
+ const lines = code.split('\n').slice(1); // Skip graph/flowchart line
79
+ const nodes = new Map();
80
+ const edges = [];
81
+ // Parse nodes and edges
82
+ for (const line of lines) {
83
+ const trimmed = line.trim();
84
+ if (!trimmed || trimmed.startsWith('%%'))
85
+ continue;
86
+ // Match node definition: A[Label] or A(Label) or A{Label}
87
+ const nodeMatch = trimmed.match(/(\w+)([\[({])(.*?)([\])}])/);
88
+ if (nodeMatch) {
89
+ const [, id, open, label, close] = nodeMatch;
90
+ const shape = this.getNodeShape(open, close);
91
+ nodes.set(id, { id, label, shape });
92
+ }
93
+ // Match edge: A --> B or A -- text --> B
94
+ const edgeMatch = trimmed.match(/(\w+)\s*(-+>?|-+)\s*(?:\|([^|]+)\|)?\s*(\w+)/);
95
+ if (edgeMatch) {
96
+ const [, from, arrow, label, to] = edgeMatch;
97
+ edges.push({ from, to, label: label?.trim(), arrow });
98
+ }
99
+ }
100
+ // Render ASCII
101
+ return this.buildFlowchartASCII(nodes, edges);
102
+ }
103
+ /**
104
+ * Get node shape from brackets
105
+ */
106
+ getNodeShape(open, close) {
107
+ if (open === '[' && close === ']')
108
+ return 'box';
109
+ if (open === '(' && close === ')')
110
+ return 'rounded';
111
+ if (open === '{' && close === '}')
112
+ return 'diamond';
113
+ return 'box';
114
+ }
115
+ /**
116
+ * Build flowchart ASCII representation
117
+ */
118
+ buildFlowchartASCII(nodes, edges) {
119
+ const lines = [];
120
+ const rendered = new Set();
121
+ // Simple vertical layout
122
+ for (const [id, node] of nodes) {
123
+ if (rendered.has(id))
124
+ continue;
125
+ // Render node
126
+ lines.push(this.renderNode(node));
127
+ rendered.add(id);
128
+ // Find outgoing edges
129
+ const outgoing = edges.filter(e => e.from === id);
130
+ for (const edge of outgoing) {
131
+ // Render edge
132
+ lines.push(this.renderEdge(edge));
133
+ }
134
+ }
135
+ return lines.join('\n');
136
+ }
137
+ /**
138
+ * Render a single node
139
+ */
140
+ renderNode(node) {
141
+ const label = node.label || node.id;
142
+ const width = Math.max(label.length + 4, 12);
143
+ switch (node.shape) {
144
+ case 'box':
145
+ return [
146
+ '┌' + '─'.repeat(width) + '┐',
147
+ '│ ' + label.padEnd(width - 2) + ' │',
148
+ '└' + '─'.repeat(width) + '┘',
149
+ ].join('\n');
150
+ case 'rounded':
151
+ return [
152
+ '╭' + '─'.repeat(width) + '╮',
153
+ '│ ' + label.padEnd(width - 2) + ' │',
154
+ '╰' + '─'.repeat(width) + '╯',
155
+ ].join('\n');
156
+ case 'diamond':
157
+ const padding = Math.floor((width - label.length) / 2);
158
+ return [
159
+ ' '.repeat(padding) + '╱' + '─'.repeat(label.length) + '╲',
160
+ '│ ' + label + ' │',
161
+ ' '.repeat(padding) + '╲' + '─'.repeat(label.length) + '╱',
162
+ ].join('\n');
163
+ default:
164
+ return label;
165
+ }
166
+ }
167
+ /**
168
+ * Render an edge
169
+ */
170
+ renderEdge(edge) {
171
+ const connector = edge.arrow.includes('>') ? '▼' : '│';
172
+ const label = edge.label ? ` ${edge.label} ` : '';
173
+ return [
174
+ ' │',
175
+ ` ${connector}${label}`,
176
+ ].join('\n');
177
+ }
178
+ /**
179
+ * Render sequence diagram
180
+ */
181
+ renderSequence(code) {
182
+ const lines = code.split('\n').slice(1);
183
+ const participants = [];
184
+ const messages = [];
185
+ // Parse participants and messages
186
+ for (const line of lines) {
187
+ const trimmed = line.trim();
188
+ if (!trimmed || trimmed.startsWith('%%'))
189
+ continue;
190
+ // Participant
191
+ const partMatch = trimmed.match(/participant\s+(\w+)(?:\s+as\s+(.+))?/);
192
+ if (partMatch) {
193
+ participants.push(partMatch[2] || partMatch[1]);
194
+ continue;
195
+ }
196
+ // Message
197
+ const msgMatch = trimmed.match(/(\w+)\s*(-+>>?|-+x)\s*(\w+)\s*:\s*(.+)/);
198
+ if (msgMatch) {
199
+ const [, from, arrow, to, text] = msgMatch;
200
+ messages.push({ from, to, text, arrow });
201
+ }
202
+ }
203
+ // Render ASCII timeline
204
+ return this.buildSequenceASCII(participants, messages);
205
+ }
206
+ /**
207
+ * Build sequence diagram ASCII
208
+ */
209
+ buildSequenceASCII(participants, messages) {
210
+ const lines = [];
211
+ const width = 20;
212
+ // Header with participants
213
+ const header = participants.map(p => p.padEnd(width)).join(' ');
214
+ lines.push(header);
215
+ lines.push(participants.map(() => '│'.padEnd(width)).join(' '));
216
+ // Messages
217
+ for (const msg of messages) {
218
+ const arrow = msg.arrow.includes('x') ? '──X' : '──▶';
219
+ lines.push(` ${arrow} ${msg.text}`);
220
+ lines.push(participants.map(() => '│'.padEnd(width)).join(' '));
221
+ }
222
+ return lines.join('\n');
223
+ }
224
+ /**
225
+ * Render Gantt chart (simplified)
226
+ */
227
+ renderGantt(code) {
228
+ const lines = ['[Gantt Chart]'];
229
+ const tasks = code.split('\n').filter(line => {
230
+ const trimmed = line.trim();
231
+ return trimmed && !trimmed.startsWith('%%') && !trimmed.startsWith('gantt');
232
+ });
233
+ for (const task of tasks) {
234
+ const taskMatch = task.match(/(.+?)\s*:\s*(.+)/);
235
+ if (taskMatch) {
236
+ const [, name, duration] = taskMatch;
237
+ const barLength = Math.min(Math.max(10, Math.floor(Math.random() * 30)), 40);
238
+ const bar = '█'.repeat(barLength);
239
+ lines.push(`${name.trim().padEnd(20)} ${bar}`);
240
+ }
241
+ }
242
+ return lines.join('\n');
243
+ }
244
+ /**
245
+ * Render class diagram (simplified)
246
+ */
247
+ renderClassDiagram(code) {
248
+ return '[Class Diagram]\n' + this.renderFallback(code);
249
+ }
250
+ /**
251
+ * Render state diagram (simplified)
252
+ */
253
+ renderStateDiagram(code) {
254
+ return '[State Diagram]\n' + this.renderFallback(code);
255
+ }
256
+ /**
257
+ * Render pie chart (simplified)
258
+ */
259
+ renderPie(code) {
260
+ return '[Pie Chart]\n' + this.renderFallback(code);
261
+ }
262
+ /**
263
+ * Fallback renderer for unsupported diagrams
264
+ */
265
+ renderFallback(code) {
266
+ const lines = code.split('\n');
267
+ const boxWidth = Math.max(...lines.map(l => l.length)) + 4;
268
+ return [
269
+ '┌' + '─'.repeat(boxWidth) + '┐',
270
+ '│ [Mermaid Diagram]' + ' '.repeat(boxWidth - 20) + ' │',
271
+ '│' + ' '.repeat(boxWidth) + '│',
272
+ ...lines.slice(0, 10).map(line => '│ ' + line.padEnd(boxWidth - 2) + '│'),
273
+ '└' + '─'.repeat(boxWidth) + '┘',
274
+ ].join('\n');
275
+ }
276
+ /**
277
+ * Update configuration
278
+ */
279
+ updateConfig(config) {
280
+ this.config = { ...this.config, ...config };
281
+ }
282
+ }
283
+ exports.MermaidRenderer = MermaidRenderer;
284
+ /**
285
+ * Singleton instance
286
+ */
287
+ exports.mermaidRenderer = new MermaidRenderer();
288
+ /**
289
+ * Convenience function for rendering mermaid diagrams
290
+ */
291
+ async function renderMermaidDiagram(mermaidCode, config) {
292
+ if (config) {
293
+ const renderer = new MermaidRenderer(config);
294
+ return renderer.render(mermaidCode);
295
+ }
296
+ return exports.mermaidRenderer.render(mermaidCode);
297
+ }
298
+ //# sourceMappingURL=mermaid-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-renderer.js","sourceRoot":"","sources":["../../src/renderers/mermaid-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { type BundledLanguage } from 'shiki';
2
+ /**
3
+ * Shiki to ANSI color converter
4
+ * Converts Shiki syntax highlighting to ANSI terminal codes
5
+ */
6
+ export declare class ShikiANSIRenderer {
7
+ private highlighter;
8
+ private initialized;
9
+ private theme;
10
+ private static readonly ANSI_COLORS;
11
+ /**
12
+ * Initialize Shiki highlighter
13
+ */
14
+ initialize(languages?: BundledLanguage[], theme?: 'light' | 'dark'): Promise<void>;
15
+ /**
16
+ * Highlight code with Shiki and convert to ANSI
17
+ */
18
+ highlight(code: string, language: string): Promise<string>;
19
+ /**
20
+ * Convert hex color to closest ANSI color code
21
+ */
22
+ private colorToANSI;
23
+ /**
24
+ * Check if highlighter supports a language
25
+ */
26
+ supportsLanguage(language: string): boolean;
27
+ /**
28
+ * Switch theme
29
+ */
30
+ setTheme(theme: 'light' | 'dark'): Promise<void>;
31
+ /**
32
+ * Load additional language
33
+ */
34
+ loadLanguage(language: BundledLanguage): Promise<void>;
35
+ /**
36
+ * Get loaded languages
37
+ */
38
+ getLoadedLanguages(): string[];
39
+ /**
40
+ * Check if initialized
41
+ */
42
+ isInitialized(): boolean;
43
+ }
44
+ /**
45
+ * Singleton instance
46
+ */
47
+ export declare const shikiRenderer: ShikiANSIRenderer;
48
+ //# sourceMappingURL=shiki-ansi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shiki-ansi.d.ts","sourceRoot":"","sources":["../../src/renderers/shiki-ansi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,eAAe,EAAqB,MAAM,OAAO,CAAC;AAErG;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,KAAK,CAA4B;IAGzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CA2BjC;IAEF;;OAEG;IACG,UAAU,CACZ,SAAS,GAAE,eAAe,EAAuE,EACjG,KAAK,GAAE,OAAO,GAAG,MAAe,GACjC,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkChE;;OAEG;IACH,OAAO,CAAC,WAAW;IA4DnB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK3C;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,aAAa,IAAI,OAAO;CAG3B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,mBAA0B,CAAC"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shikiRenderer = exports.ShikiANSIRenderer = void 0;
4
+ const shiki_1 = require("shiki");
5
+ /**
6
+ * Shiki to ANSI color converter
7
+ * Converts Shiki syntax highlighting to ANSI terminal codes
8
+ */
9
+ class ShikiANSIRenderer {
10
+ highlighter = null;
11
+ initialized = false;
12
+ theme = 'dark';
13
+ // Map Shiki colors to ANSI codes
14
+ static ANSI_COLORS = {
15
+ // Foreground colors
16
+ black: '\x1b[30m',
17
+ red: '\x1b[31m',
18
+ green: '\x1b[32m',
19
+ yellow: '\x1b[33m',
20
+ blue: '\x1b[34m',
21
+ magenta: '\x1b[35m',
22
+ cyan: '\x1b[36m',
23
+ white: '\x1b[37m',
24
+ gray: '\x1b[90m',
25
+ // Bright colors
26
+ brightRed: '\x1b[91m',
27
+ brightGreen: '\x1b[92m',
28
+ brightYellow: '\x1b[93m',
29
+ brightBlue: '\x1b[94m',
30
+ brightMagenta: '\x1b[95m',
31
+ brightCyan: '\x1b[96m',
32
+ brightWhite: '\x1b[97m',
33
+ // Styles
34
+ reset: '\x1b[0m',
35
+ bold: '\x1b[1m',
36
+ dim: '\x1b[2m',
37
+ italic: '\x1b[3m',
38
+ underline: '\x1b[4m',
39
+ };
40
+ /**
41
+ * Initialize Shiki highlighter
42
+ */
43
+ async initialize(languages = ['typescript', 'javascript', 'python', 'bash', 'json', 'markdown'], theme = 'dark') {
44
+ if (this.initialized)
45
+ return;
46
+ try {
47
+ const themeMap = {
48
+ light: 'github-light',
49
+ dark: 'github-dark',
50
+ };
51
+ this.theme = theme;
52
+ this.highlighter = await (0, shiki_1.createHighlighter)({
53
+ themes: [themeMap[theme]],
54
+ langs: languages,
55
+ });
56
+ this.initialized = true;
57
+ }
58
+ catch (error) {
59
+ console.warn('Failed to initialize Shiki highlighter:', error);
60
+ this.initialized = false;
61
+ }
62
+ }
63
+ /**
64
+ * Highlight code with Shiki and convert to ANSI
65
+ */
66
+ async highlight(code, language) {
67
+ if (!this.initialized || !this.highlighter) {
68
+ return code; // Fallback to unhighlighted
69
+ }
70
+ try {
71
+ const themeMap = {
72
+ light: 'github-light',
73
+ dark: 'github-dark',
74
+ };
75
+ // Get themed tokens from Shiki
76
+ const tokens = this.highlighter.codeToTokensBase(code, {
77
+ lang: language,
78
+ theme: themeMap[this.theme],
79
+ });
80
+ // Convert tokens to ANSI codes
81
+ let result = '';
82
+ for (const line of tokens) {
83
+ for (const token of line) {
84
+ const ansiCode = this.colorToANSI(token.color || '#ffffff');
85
+ result += ansiCode + token.content + ShikiANSIRenderer.ANSI_COLORS.reset;
86
+ }
87
+ result += '\n';
88
+ }
89
+ return result.trimEnd();
90
+ }
91
+ catch (error) {
92
+ console.warn(`Failed to highlight code for language '${language}':`, error);
93
+ return code; // Fallback
94
+ }
95
+ }
96
+ /**
97
+ * Convert hex color to closest ANSI color code
98
+ */
99
+ colorToANSI(hexColor) {
100
+ // Parse hex color
101
+ const hex = hexColor.replace('#', '');
102
+ const r = parseInt(hex.substring(0, 2), 16);
103
+ const g = parseInt(hex.substring(2, 4), 16);
104
+ const b = parseInt(hex.substring(4, 6), 16);
105
+ // Calculate luminance
106
+ const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;
107
+ // Map to closest ANSI color based on hue and luminance
108
+ if (luminance < 50) {
109
+ return ShikiANSIRenderer.ANSI_COLORS.gray;
110
+ }
111
+ else if (luminance > 200) {
112
+ return ShikiANSIRenderer.ANSI_COLORS.brightWhite;
113
+ }
114
+ // Determine dominant color
115
+ const max = Math.max(r, g, b);
116
+ const min = Math.min(r, g, b);
117
+ const delta = max - min;
118
+ if (delta < 30) {
119
+ // Grayish
120
+ return luminance > 128
121
+ ? ShikiANSIRenderer.ANSI_COLORS.white
122
+ : ShikiANSIRenderer.ANSI_COLORS.gray;
123
+ }
124
+ // Color-specific mapping
125
+ if (r > g && r > b) {
126
+ // Red-ish
127
+ return luminance > 128
128
+ ? ShikiANSIRenderer.ANSI_COLORS.brightRed
129
+ : ShikiANSIRenderer.ANSI_COLORS.red;
130
+ }
131
+ else if (g > r && g > b) {
132
+ // Green-ish
133
+ return luminance > 128
134
+ ? ShikiANSIRenderer.ANSI_COLORS.brightGreen
135
+ : ShikiANSIRenderer.ANSI_COLORS.green;
136
+ }
137
+ else if (b > r && b > g) {
138
+ // Blue-ish
139
+ return luminance > 128
140
+ ? ShikiANSIRenderer.ANSI_COLORS.brightBlue
141
+ : ShikiANSIRenderer.ANSI_COLORS.blue;
142
+ }
143
+ else if (r > 150 && g > 150 && b < 100) {
144
+ // Yellow-ish
145
+ return ShikiANSIRenderer.ANSI_COLORS.yellow;
146
+ }
147
+ else if (r > 150 && b > 150) {
148
+ // Magenta-ish
149
+ return ShikiANSIRenderer.ANSI_COLORS.magenta;
150
+ }
151
+ else if (g > 150 && b > 150) {
152
+ // Cyan-ish
153
+ return ShikiANSIRenderer.ANSI_COLORS.cyan;
154
+ }
155
+ // Default
156
+ return ShikiANSIRenderer.ANSI_COLORS.white;
157
+ }
158
+ /**
159
+ * Check if highlighter supports a language
160
+ */
161
+ supportsLanguage(language) {
162
+ if (!this.highlighter)
163
+ return false;
164
+ return this.highlighter.getLoadedLanguages().includes(language);
165
+ }
166
+ /**
167
+ * Switch theme
168
+ */
169
+ async setTheme(theme) {
170
+ this.theme = theme;
171
+ // Re-initialize with new theme
172
+ this.initialized = false;
173
+ await this.initialize(this.highlighter?.getLoadedLanguages() || [], theme);
174
+ }
175
+ /**
176
+ * Load additional language
177
+ */
178
+ async loadLanguage(language) {
179
+ if (!this.highlighter)
180
+ return;
181
+ try {
182
+ await this.highlighter.loadLanguage(language);
183
+ }
184
+ catch (error) {
185
+ console.warn(`Failed to load language '${language}':`, error);
186
+ }
187
+ }
188
+ /**
189
+ * Get loaded languages
190
+ */
191
+ getLoadedLanguages() {
192
+ return this.highlighter?.getLoadedLanguages() || [];
193
+ }
194
+ /**
195
+ * Check if initialized
196
+ */
197
+ isInitialized() {
198
+ return this.initialized;
199
+ }
200
+ }
201
+ exports.ShikiANSIRenderer = ShikiANSIRenderer;
202
+ /**
203
+ * Singleton instance
204
+ */
205
+ exports.shikiRenderer = new ShikiANSIRenderer();
206
+ //# sourceMappingURL=shiki-ansi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shiki-ansi.js","sourceRoot":"","sources":["../../src/renderers/shiki-ansi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Table rendering to ASCII art
3
+ * Handles markdown table parsing and ASCII box generation
4
+ * Inline rendering, no dependencies
5
+ */
6
+ export interface TableRenderOptions {
7
+ maxWidth?: number;
8
+ colWidths?: number[];
9
+ align?: Array<'left' | 'center' | 'right'>;
10
+ borderStyle?: 'simple' | 'rounded' | 'double';
11
+ stripMarkdown?: boolean;
12
+ colors?: boolean;
13
+ }
14
+ /**
15
+ * Render table to ASCII art
16
+ */
17
+ export declare function renderTableToASCII(headers: string[], rows: string[][], options?: TableRenderOptions): string;
18
+ /**
19
+ * Parse and render markdown table in one go
20
+ */
21
+ export declare function renderMarkdownTableToASCII(content: string, options?: TableRenderOptions): string;
22
+ /**
23
+ * Check if content looks like a markdown table
24
+ */
25
+ export declare function isMarkdownTable(content: string): boolean;
26
+ /**
27
+ * Extract table from markdown content
28
+ */
29
+ export declare function extractTable(content: string): string | null;
30
+ //# sourceMappingURL=table-ascii.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-ascii.d.ts","sourceRoot":"","sources":["../../src/renderers/table-ascii.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;IAC1C,WAAW,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AA6JD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAyDR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAexD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2B3D"}