@nicomatt69/streamtty 0.0.3 → 0.2.0

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 (127) hide show
  1. package/dist/ai-sdk-adapter.d.ts +10 -1
  2. package/dist/ai-sdk-adapter.d.ts.map +1 -1
  3. package/dist/ai-sdk-adapter.js +53 -6
  4. package/dist/ai-sdk-adapter.js.map +1 -1
  5. package/dist/cli.js +46 -5
  6. package/dist/cli.js.map +1 -1
  7. package/dist/errors.js +25 -11
  8. package/dist/errors.js.map +1 -1
  9. package/dist/events.js +17 -9
  10. package/dist/events.js.map +1 -1
  11. package/dist/index.d.ts +40 -27
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +127 -43
  14. package/dist/index.js.map +1 -1
  15. package/dist/parser/streaming-parser.js +8 -4
  16. package/dist/parser/streaming-parser.js.map +1 -1
  17. package/dist/performance.js +15 -9
  18. package/dist/performance.js.map +1 -1
  19. package/dist/plugins/index.d.ts +1 -1
  20. package/dist/plugins/index.d.ts.map +1 -1
  21. package/dist/plugins/index.js +17 -1
  22. package/dist/plugins/index.js.map +1 -1
  23. package/dist/plugins/plugin-system-inline.js +29 -24
  24. package/dist/plugins/plugin-system-inline.js.map +1 -1
  25. package/dist/plugins/plugin-system.js +6 -2
  26. package/dist/plugins/plugin-system.js.map +1 -1
  27. package/dist/plugins/rehype/harden.js +6 -3
  28. package/dist/plugins/rehype/harden.js.map +1 -1
  29. package/dist/plugins/rehype/index.d.ts +1 -1
  30. package/dist/plugins/rehype/index.d.ts.map +1 -1
  31. package/dist/plugins/rehype/index.js +17 -1
  32. package/dist/plugins/rehype/index.js.map +1 -1
  33. package/dist/plugins/remark/index.d.ts +2 -2
  34. package/dist/plugins/remark/index.d.ts.map +1 -1
  35. package/dist/plugins/remark/index.js +18 -2
  36. package/dist/plugins/remark/index.js.map +1 -1
  37. package/dist/plugins/remark/math.js +4 -1
  38. package/dist/plugins/remark/math.js.map +1 -1
  39. package/dist/plugins/remark/mermaid.js +4 -1
  40. package/dist/plugins/remark/mermaid.js.map +1 -1
  41. package/dist/plugins/types.js +2 -1
  42. package/dist/renderer/{ansi-renderer.d.ts → blessed-renderer.d.ts} +36 -20
  43. package/dist/renderer/blessed-renderer.d.ts.map +1 -0
  44. package/dist/renderer/blessed-renderer.js +610 -0
  45. package/dist/renderer/blessed-renderer.js.map +1 -0
  46. package/dist/renderers/index.d.ts +3 -3
  47. package/dist/renderers/index.d.ts.map +1 -1
  48. package/dist/renderers/index.js +17 -3
  49. package/dist/renderers/index.js.map +1 -1
  50. package/dist/renderers/math-renderer.js +11 -4
  51. package/dist/renderers/math-renderer.js.map +1 -1
  52. package/dist/renderers/mermaid-ascii.js +6 -2
  53. package/dist/renderers/mermaid-ascii.js.map +1 -1
  54. package/dist/renderers/mermaid-renderer.js +11 -6
  55. package/dist/renderers/mermaid-renderer.js.map +1 -1
  56. package/dist/renderers/shiki-ansi.js +8 -4
  57. package/dist/renderers/shiki-ansi.js.map +1 -1
  58. package/dist/renderers/table-ascii.js +10 -4
  59. package/dist/renderers/table-ascii.js.map +1 -1
  60. package/dist/renderers/table-renderer.d.ts +49 -0
  61. package/dist/renderers/table-renderer.d.ts.map +1 -0
  62. package/dist/renderers/table-renderer.js +224 -0
  63. package/dist/renderers/table-renderer.js.map +1 -0
  64. package/dist/renderers/unicode-math.js +12 -5
  65. package/dist/renderers/unicode-math.js.map +1 -1
  66. package/dist/security/ansi-sanitizer.js +18 -8
  67. package/dist/security/ansi-sanitizer.js.map +1 -1
  68. package/dist/security/chunk-processor.js +30 -14
  69. package/dist/security/chunk-processor.js.map +1 -1
  70. package/dist/security/index.d.ts +1 -1
  71. package/dist/security/index.d.ts.map +1 -1
  72. package/dist/security/index.js +17 -1
  73. package/dist/security/index.js.map +1 -1
  74. package/dist/security/input-validator.js +13 -8
  75. package/dist/security/input-validator.js.map +1 -1
  76. package/dist/stream-protocol.d.ts.map +1 -1
  77. package/dist/stream-protocol.js +30 -3
  78. package/dist/stream-protocol.js.map +1 -1
  79. package/dist/streamdown-compat.d.ts +8 -5
  80. package/dist/streamdown-compat.d.ts.map +1 -1
  81. package/dist/streamdown-compat.js +26 -13
  82. package/dist/streamdown-compat.js.map +1 -1
  83. package/dist/streaming/stream-stats.js +7 -2
  84. package/dist/streaming/stream-stats.js.map +1 -1
  85. package/dist/streaming-integration.js +34 -22
  86. package/dist/streaming-integration.js.map +1 -1
  87. package/dist/themes/index.js +14 -9
  88. package/dist/themes/index.js.map +1 -1
  89. package/dist/types/index.d.ts +81 -27
  90. package/dist/types/index.d.ts.map +1 -1
  91. package/dist/types/index.js +2 -1
  92. package/dist/types/plugin-types.js +2 -1
  93. package/dist/types/plugin-types.js.map +1 -1
  94. package/dist/types/stream-events.d.ts +1 -1
  95. package/dist/types/stream-events.d.ts.map +1 -1
  96. package/dist/types/stream-events.js +2 -1
  97. package/dist/types/stream-events.js.map +1 -1
  98. package/dist/utils/blessed-syntax-highlighter.js +92 -66
  99. package/dist/utils/blessed-syntax-highlighter.js.map +1 -1
  100. package/dist/utils/enhanced-table-renderer.js +52 -8
  101. package/dist/utils/enhanced-table-renderer.js.map +1 -1
  102. package/dist/utils/formatting.js +33 -17
  103. package/dist/utils/formatting.js.map +1 -1
  104. package/dist/utils/index.d.ts +4 -4
  105. package/dist/utils/index.d.ts.map +1 -1
  106. package/dist/utils/index.js +20 -4
  107. package/dist/utils/index.js.map +1 -1
  108. package/dist/utils/math-unicode-renderer.js +14 -6
  109. package/dist/utils/math-unicode-renderer.js.map +1 -1
  110. package/dist/utils/mermaid-ascii-renderer.js +8 -3
  111. package/dist/utils/mermaid-ascii-renderer.js.map +1 -1
  112. package/dist/utils/mermaid-ascii.js +23 -17
  113. package/dist/utils/mermaid-ascii.js.map +1 -1
  114. package/dist/utils/shiki-ansi-renderer.js +14 -7
  115. package/dist/utils/shiki-ansi-renderer.js.map +1 -1
  116. package/dist/utils/syntax-highlighter.js +44 -27
  117. package/dist/utils/syntax-highlighter.js.map +1 -1
  118. package/dist/utils/table-formatter-inline.js +12 -5
  119. package/dist/utils/table-formatter-inline.js.map +1 -1
  120. package/dist/utils/table.js +15 -9
  121. package/dist/utils/table.js.map +1 -1
  122. package/dist/widgets/stream-indicator.js +15 -6
  123. package/dist/widgets/stream-indicator.js.map +1 -1
  124. package/package.json +14 -12
  125. package/dist/renderer/ansi-renderer.d.ts.map +0 -1
  126. package/dist/renderer/ansi-renderer.js +0 -391
  127. package/dist/renderer/ansi-renderer.js.map +0 -1
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@nicomatt69/streamtty",
3
- "version": "0.0.3",
4
- "description": "A drop-in replacement for markdown rendering in TTY, designed for AI-powered streaming",
5
- "type": "module",
3
+ "version": "0.2.0",
4
+ "description": "A drop-in replacement for markdown rendering in TTY, designed for AI-powered streaming with blessed",
6
5
  "main": "dist/index.js",
7
6
  "types": "dist/index.d.ts",
8
7
  "bin": {
@@ -17,24 +16,24 @@
17
16
  "url": "https://github.com/nikomatt69/streamtty/issues"
18
17
  },
19
18
  "scripts": {
20
- "build": "bun build src/index.ts --outdir dist --target node && tsc",
19
+ "build": "tsc",
21
20
  "dev": "tsc --watch",
22
21
  "clean": "rm -rf dist",
23
- "prepublishOnly": "bun run clean && bun run build",
22
+ "prepublishOnly": "npm run clean && npm run build",
24
23
  "test": "echo \"Warning: no tests specified\"",
25
- "example:basic": "bun examples/basic.ts",
26
- "example:streaming": "bun examples/streaming.ts",
27
- "example:interactive": "bun examples/enhanced-streaming-test.ts",
28
- "example:chat": "bun examples/chat.ts"
24
+ "example:basic": "npx tsx examples/basic.ts",
25
+ "example:streaming": "npx tsx examples/streaming.ts",
26
+ "example:interactive": "npx tsx examples/enhanced-streaming-test.ts",
27
+ "example:chat": "npx tsx examples/chat.ts"
29
28
  },
30
29
  "keywords": [
31
30
  "markdown",
32
31
  "tty",
33
32
  "terminal",
34
- "ansi",
33
+ "blessed",
35
34
  "streaming",
36
35
  "ai",
37
- "cli"
36
+ "tui"
38
37
  ],
39
38
  "author": "Nicomatt69 <nicola.mattioli.95@gmail.com>",
40
39
  "license": "MIT",
@@ -50,6 +49,8 @@
50
49
  "dependencies": {
51
50
  "ansi-regex": "^6.0.1",
52
51
  "asciichart": "^1.5.25",
52
+ "blessed": "^0.1.81",
53
+ "blessed-contrib": "^4.11.0",
53
54
  "chalk": "^4.1.2",
54
55
  "cli-highlight": "^2.1.11",
55
56
  "katex": "^0.16.9",
@@ -63,11 +64,12 @@
63
64
  "tty-table": "^4.2.3"
64
65
  },
65
66
  "devDependencies": {
67
+ "@types/blessed": "^0.1.25",
66
68
  "@types/node": "^20.19.20",
67
69
  "tsx": "^4.20.6",
68
70
  "typescript": "^5.9.3"
69
71
  },
70
72
  "engines": {
71
- "bun": ">=1.0.0"
73
+ "node": ">=18.0.0"
72
74
  }
73
75
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ansi-renderer.d.ts","sourceRoot":"","sources":["../../src/renderer/ansi-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAA6B,MAAM,mBAAmB,CAAC;AAyC1F,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAiB;gBAE1B,OAAO,EAAE,aAAa;IAKlC;;OAEG;IACU,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBzD;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;YACW,WAAW;IA8DzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;OAEG;YACW,aAAa;IAuB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAsBzB;AAGD,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,CAAC"}
@@ -1,391 +0,0 @@
1
- import { renderMermaidDiagram } from '../renderers/mermaid-renderer.js';
2
- import { EnhancedTableRenderer, parseMarkdownTable, parseCSVToChart } from '../utils/enhanced-table-renderer.js';
3
- const ANSI = {
4
- reset: '\x1b[0m',
5
- bold: '\x1b[1m',
6
- dim: '\x1b[2m',
7
- italic: '\x1b[3m',
8
- underline: '\x1b[4m',
9
- inverse: '\x1b[7m',
10
- strikethrough: '\x1b[9m',
11
- // Foreground colors
12
- black: '\x1b[30m',
13
- red: '\x1b[31m',
14
- green: '\x1b[32m',
15
- yellow: '\x1b[33m',
16
- blue: '\x1b[34m',
17
- magenta: '\x1b[35m',
18
- cyan: '\x1b[36m',
19
- white: '\x1b[37m',
20
- gray: '\x1b[90m',
21
- // Bright colors
22
- brightRed: '\x1b[91m',
23
- brightGreen: '\x1b[92m',
24
- brightYellow: '\x1b[93m',
25
- brightBlue: '\x1b[94m',
26
- brightMagenta: '\x1b[95m',
27
- brightCyan: '\x1b[96m',
28
- brightWhite: '\x1b[97m',
29
- // Background colors
30
- bgBlack: '\x1b[40m',
31
- bgRed: '\x1b[41m',
32
- bgGreen: '\x1b[42m',
33
- bgYellow: '\x1b[43m',
34
- bgBlue: '\x1b[44m',
35
- bgMagenta: '\x1b[45m',
36
- bgCyan: '\x1b[46m',
37
- bgWhite: '\x1b[47m',
38
- };
39
- export class ANSIRenderer {
40
- context;
41
- defaultStyles;
42
- constructor(context) {
43
- this.context = context;
44
- this.defaultStyles = this.getDefaultStyles();
45
- }
46
- /**
47
- * Render tokens to ANSI output
48
- */
49
- async render(tokens) {
50
- let currentLineTokens = [];
51
- for (const token of tokens) {
52
- // If it's an inline token, add to current line
53
- if (['strong', 'em', 'code', 'link', 'del', 'text'].includes(token.type)) {
54
- currentLineTokens.push(token);
55
- }
56
- else {
57
- // Render current line if we have content
58
- if (currentLineTokens.length > 0) {
59
- this.renderInlineLine(currentLineTokens);
60
- currentLineTokens = [];
61
- }
62
- // Render the block token
63
- await this.renderToken(token);
64
- }
65
- }
66
- // Render any remaining inline content
67
- if (currentLineTokens.length > 0) {
68
- this.renderInlineLine(currentLineTokens);
69
- }
70
- }
71
- /**
72
- * Write to output stream
73
- */
74
- write(text) {
75
- this.context.output.write(text);
76
- }
77
- /**
78
- * Render a line of inline tokens
79
- */
80
- renderInlineLine(tokens) {
81
- let content = '';
82
- for (const token of tokens) {
83
- switch (token.type) {
84
- case 'strong':
85
- content += `${ANSI.bold}${token.content}${ANSI.reset}`;
86
- break;
87
- case 'em':
88
- content += `${ANSI.italic}${token.content}${ANSI.reset}`;
89
- break;
90
- case 'code':
91
- content += `${ANSI.cyan}${ANSI.bold}${token.content}${ANSI.reset}`;
92
- break;
93
- case 'link':
94
- content += `${ANSI.blue}${ANSI.underline}${token.content}${ANSI.reset}`;
95
- break;
96
- case 'del':
97
- content += `${ANSI.gray}${ANSI.strikethrough}${token.content}${ANSI.reset}`;
98
- break;
99
- default:
100
- content += token.content;
101
- }
102
- }
103
- this.write(content + '\n');
104
- }
105
- /**
106
- * Render a single token
107
- */
108
- async renderToken(token) {
109
- switch (token.type) {
110
- case 'heading':
111
- this.renderHeading(token);
112
- break;
113
- case 'paragraph':
114
- case 'text':
115
- this.renderText(token);
116
- break;
117
- case 'strong':
118
- this.write(`${ANSI.bold}${token.content}${ANSI.reset}`);
119
- break;
120
- case 'em':
121
- this.write(`${ANSI.italic}${token.content}${ANSI.reset}`);
122
- break;
123
- case 'code':
124
- this.write(`${ANSI.cyan}${ANSI.bold}${token.content}${ANSI.reset}`);
125
- break;
126
- case 'link':
127
- this.write(`${ANSI.blue}${ANSI.underline}${token.content}${ANSI.reset}`);
128
- break;
129
- case 'del':
130
- this.write(`${ANSI.gray}~~${token.content}~~${ANSI.reset}`);
131
- break;
132
- case 'codeblock':
133
- this.renderCodeBlock(token);
134
- break;
135
- case 'blockquote':
136
- this.renderBlockquote(token);
137
- break;
138
- case 'listitem':
139
- this.renderListItem(token);
140
- break;
141
- case 'hr':
142
- this.renderHorizontalRule();
143
- break;
144
- case 'table':
145
- this.renderTable(token);
146
- break;
147
- case 'mermaid':
148
- await this.renderMermaid(token);
149
- break;
150
- default:
151
- if (token.content) {
152
- this.write(token.content + '\n');
153
- }
154
- }
155
- }
156
- /**
157
- * Render heading
158
- */
159
- renderHeading(token) {
160
- const depth = token.depth || 1;
161
- const style = this.getHeadingStyle(depth);
162
- const prefix = '#'.repeat(depth) + ' ';
163
- let ansiStyle = '';
164
- if (style.bold)
165
- ansiStyle += ANSI.bold;
166
- if (style.fg)
167
- ansiStyle += this.colorToAnsi(style.fg);
168
- this.write(`\n${ansiStyle}${prefix}${token.content}${ANSI.reset}\n\n`);
169
- }
170
- /**
171
- * Render text/paragraph
172
- */
173
- renderText(token) {
174
- let content = this.formatInlineStyles(token.content);
175
- if (token.incomplete) {
176
- content += `${ANSI.yellow}...${ANSI.reset}`;
177
- }
178
- this.write(content + '\n');
179
- }
180
- /**
181
- * Render code block
182
- */
183
- renderCodeBlock(token) {
184
- const lang = token.lang || 'text';
185
- let content = token.content;
186
- if (token.incomplete) {
187
- content = `${ANSI.yellow}[Code block (${lang})...]${ANSI.reset}`;
188
- }
189
- else {
190
- content = this.highlightCode(content, lang);
191
- }
192
- const border = '─'.repeat(Math.min(60, this.context.options.maxWidth || 80));
193
- this.write(`\n${ANSI.gray}┌${border}┐${ANSI.reset}\n`);
194
- this.write(`${ANSI.gray}│${ANSI.reset} ${ANSI.dim}${lang}${ANSI.reset}\n`);
195
- this.write(`${ANSI.gray}├${border}┤${ANSI.reset}\n`);
196
- const lines = content.split('\n');
197
- for (const line of lines) {
198
- this.write(`${ANSI.gray}│${ANSI.reset} ${line}\n`);
199
- }
200
- this.write(`${ANSI.gray}└${border}┘${ANSI.reset}\n\n`);
201
- }
202
- /**
203
- * Render blockquote
204
- */
205
- renderBlockquote(token) {
206
- const lines = token.content.split('\n');
207
- for (const line of lines) {
208
- this.write(`${ANSI.gray}│ ${this.formatInlineStyles(line)}${ANSI.reset}\n`);
209
- }
210
- this.write('\n');
211
- }
212
- /**
213
- * Render list item
214
- */
215
- renderListItem(token) {
216
- let bullet = token.ordered ? `${token.depth || 1}.` : '•';
217
- let content = token.content;
218
- // Handle task list formatting: - [ ] or - [x]
219
- const taskMatch = content.match(/^(\[ \]|\[x\]|\[X\])\s*(.*)/);
220
- if (taskMatch) {
221
- const isCompleted = taskMatch[1] !== '[ ]';
222
- bullet = isCompleted ? '✅' : '☐';
223
- content = taskMatch[2];
224
- }
225
- const indent = ' '.repeat(token.depth || 0);
226
- this.write(`${indent}${bullet} ${this.formatInlineStyles(content)}\n`);
227
- }
228
- /**
229
- * Render horizontal rule
230
- */
231
- renderHorizontalRule() {
232
- const width = Math.min(80, this.context.options.maxWidth || 80);
233
- this.write(`\n${ANSI.gray}${'─'.repeat(width)}${ANSI.reset}\n\n`);
234
- }
235
- /**
236
- * Render table
237
- */
238
- renderTable(token) {
239
- let content;
240
- try {
241
- const tableData = parseMarkdownTable(token.content);
242
- if (tableData && tableData.headers.length > 0) {
243
- content = EnhancedTableRenderer.renderTable(tableData, {
244
- borderStyle: 'solid',
245
- compact: false,
246
- width: this.context.options.maxWidth || 80
247
- });
248
- }
249
- else if (EnhancedTableRenderer.isChartData(token.content)) {
250
- const chartData = parseCSVToChart(token.content);
251
- if (chartData) {
252
- content = EnhancedTableRenderer.renderChart(chartData);
253
- }
254
- else {
255
- content = '[Chart Data]\n' + token.content;
256
- }
257
- }
258
- else {
259
- content = token.content;
260
- }
261
- }
262
- catch {
263
- content = token.content;
264
- }
265
- this.write(`\n${ANSI.cyan}${content}${ANSI.reset}\n\n`);
266
- }
267
- /**
268
- * Render mermaid diagram
269
- */
270
- async renderMermaid(token) {
271
- let content;
272
- try {
273
- content = await renderMermaidDiagram(token.content);
274
- }
275
- catch {
276
- content = `[Mermaid Diagram]\n${token.content}`;
277
- }
278
- const border = '─'.repeat(Math.min(60, this.context.options.maxWidth || 80));
279
- this.write(`\n${ANSI.blue}┌${border}┐${ANSI.reset}\n`);
280
- this.write(`${ANSI.blue}│${ANSI.reset} ${ANSI.dim}mermaid${ANSI.reset}\n`);
281
- this.write(`${ANSI.blue}├${border}┤${ANSI.reset}\n`);
282
- const lines = content.split('\n');
283
- for (const line of lines) {
284
- this.write(`${ANSI.blue}│${ANSI.reset} ${ANSI.cyan}${line}${ANSI.reset}\n`);
285
- }
286
- this.write(`${ANSI.blue}└${border}┘${ANSI.reset}\n\n`);
287
- }
288
- /**
289
- * Format inline styles
290
- */
291
- formatInlineStyles(text) {
292
- if (!text)
293
- return '';
294
- let formatted = text;
295
- // Bold: **text** or __text__
296
- formatted = formatted.replace(/\*\*(.+?)\*\*/g, `${ANSI.bold}$1${ANSI.reset}`);
297
- formatted = formatted.replace(/__(.+?)__/g, `${ANSI.bold}$1${ANSI.reset}`);
298
- // Italic: *text* or _text_
299
- formatted = formatted.replace(/\*(.+?)\*/g, `${ANSI.italic}$1${ANSI.reset}`);
300
- formatted = formatted.replace(/_(.+?)_/g, `${ANSI.italic}$1${ANSI.reset}`);
301
- // Inline code: `code`
302
- formatted = formatted.replace(/`(.+?)`/g, `${ANSI.cyan}${ANSI.bold}$1${ANSI.reset}`);
303
- // Links: [text](url)
304
- formatted = formatted.replace(/\[(.+?)\]\((.+?)\)/g, `${ANSI.blue}${ANSI.underline}$1${ANSI.reset}`);
305
- // Strikethrough: ~~text~~
306
- formatted = formatted.replace(/~~(.+?)~~/g, `${ANSI.gray}${ANSI.strikethrough}$1${ANSI.reset}`);
307
- return formatted;
308
- }
309
- /**
310
- * Highlight code
311
- */
312
- highlightCode(code, lang) {
313
- if (!this.context.options.syntaxHighlight) {
314
- return code;
315
- }
316
- const keywords = ['function', 'const', 'let', 'var', 'if', 'else', 'return', 'for', 'while', 'class', 'import', 'export', 'from', 'async', 'await', 'try', 'catch', 'throw', 'new', 'this'];
317
- let highlighted = code;
318
- for (const keyword of keywords) {
319
- const regex = new RegExp(`\\b(${keyword})\\b`, 'g');
320
- highlighted = highlighted.replace(regex, `${ANSI.magenta}$1${ANSI.reset}`);
321
- }
322
- // Strings
323
- highlighted = highlighted.replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, `${ANSI.green}$&${ANSI.reset}`);
324
- // Comments
325
- highlighted = highlighted.replace(/(\/\/.*)$/gm, `${ANSI.gray}$1${ANSI.reset}`);
326
- highlighted = highlighted.replace(/(\/\*[\s\S]*?\*\/)/g, `${ANSI.gray}$1${ANSI.reset}`);
327
- // Numbers
328
- highlighted = highlighted.replace(/\b(\d+\.?\d*)\b/g, `${ANSI.yellow}$1${ANSI.reset}`);
329
- return highlighted;
330
- }
331
- /**
332
- * Convert color name to ANSI code
333
- */
334
- colorToAnsi(color) {
335
- const colorMap = {
336
- black: ANSI.black,
337
- red: ANSI.red,
338
- green: ANSI.green,
339
- yellow: ANSI.yellow,
340
- blue: ANSI.blue,
341
- magenta: ANSI.magenta,
342
- cyan: ANSI.cyan,
343
- white: ANSI.white,
344
- gray: ANSI.gray,
345
- grey: ANSI.gray,
346
- };
347
- return colorMap[color.toLowerCase()] || '';
348
- }
349
- /**
350
- * Get heading style based on depth
351
- */
352
- getHeadingStyle(depth) {
353
- const styles = [
354
- this.defaultStyles.h1,
355
- this.defaultStyles.h2,
356
- this.defaultStyles.h3,
357
- this.defaultStyles.h4,
358
- this.defaultStyles.h5,
359
- this.defaultStyles.h6,
360
- ];
361
- return styles[depth - 1] || styles[0];
362
- }
363
- /**
364
- * Get default styles
365
- */
366
- getDefaultStyles() {
367
- return {
368
- h1: { fg: 'cyan', bold: true },
369
- h2: { fg: 'blue', bold: true },
370
- h3: { fg: 'green', bold: true },
371
- h4: { fg: 'yellow', bold: true },
372
- h5: { fg: 'magenta', bold: true },
373
- h6: { fg: 'white', bold: true },
374
- paragraph: { fg: 'white' },
375
- strong: { bold: true },
376
- em: { italic: true },
377
- code: { fg: 'cyan', bold: true },
378
- codeBlock: { fg: 'white' },
379
- blockquote: { fg: 'gray' },
380
- link: { fg: 'blue', underline: true },
381
- list: { fg: 'white' },
382
- listItem: { fg: 'white' },
383
- table: { fg: 'cyan' },
384
- tableHeader: { fg: 'cyan', bold: true },
385
- hr: { fg: 'gray' },
386
- };
387
- }
388
- }
389
- // Re-export for backward compatibility
390
- export { ANSIRenderer as BlessedRenderer };
391
- //# sourceMappingURL=ansi-renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ansi-renderer.js","sourceRoot":"","sources":["../../src/renderer/ansi-renderer.ts"],"names":[],"mappings":"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"}