bonecode 1.2.2 → 1.2.3

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.
package/dist/src/tui.js CHANGED
@@ -380,17 +380,81 @@ function printProviders(providers, currentProvider) {
380
380
  * "text" — pass deltas through verbatim (with partial-fence detection)
381
381
  * "fence" — buffer everything; emit marker on close fence
382
382
  */
383
+ /**
384
+ * Apply lightweight inline markdown styling to a streamed chunk.
385
+ *
386
+ * - `# `, `## `, `### ` at line-start become bold colored headers
387
+ * - `**text**` becomes bold
388
+ * - `` `code` `` becomes inverted gray
389
+ * - `- ` and `* ` at line-start become a bullet
390
+ *
391
+ * Operates per-line on the chunk. Cross-chunk markdown (a `**` opening in one
392
+ * delta and closing in another) is not handled — we just leave those raw.
393
+ * That's acceptable because it's rare and the model's output is still readable.
394
+ */
395
+ function applyInlineMarkdown(text) {
396
+ if (!text)
397
+ return text;
398
+ // Split on newlines so we can match line-anchored patterns (headers, bullets)
399
+ const lines = text.split("\n");
400
+ const styled = lines.map((line) => {
401
+ // Headers
402
+ let m = line.match(/^(#{1,6})\s+(.*)$/);
403
+ if (m) {
404
+ const level = m[1].length;
405
+ const content = m[2];
406
+ if (level === 1)
407
+ return `${CYAN}${BOLD}${content}${R}`;
408
+ if (level === 2)
409
+ return `${CYAN}${BOLD}${content}${R}`;
410
+ if (level === 3)
411
+ return `${WHITE}${BOLD}${content}${R}`;
412
+ return `${WHITE}${content}${R}`;
413
+ }
414
+ // Bullets at line start
415
+ m = line.match(/^(\s*)[-*]\s+(.*)$/);
416
+ if (m) {
417
+ line = `${m[1]}${GRAY}•${R} ${m[2]}`;
418
+ }
419
+ // Numbered lists
420
+ m = line.match(/^(\s*)(\d+\.)\s+(.*)$/);
421
+ if (m) {
422
+ line = `${m[1]}${GRAY}${m[2]}${R} ${m[3]}`;
423
+ }
424
+ // Bold (**text**)
425
+ line = line.replace(/\*\*([^*]+)\*\*/g, `${BOLD}$1${R}`);
426
+ // Inline code (`code`)
427
+ line = line.replace(/`([^`]+)`/g, `${GRAY}$1${R}`);
428
+ return line;
429
+ });
430
+ return styled.join("\n");
431
+ }
432
+ /**
433
+ * Stateful code-fence collapser.
434
+ *
435
+ * Replaces ```lang ... ``` blocks with a one-line marker
436
+ * " ┃ code: lang, N lines" so streaming code blocks don't flood the TUI.
437
+ *
438
+ * State:
439
+ * "text" — pass through verbatim (with partial-fence buffering)
440
+ * "fence" — silently buffer body; emit final marker on close
441
+ *
442
+ * Newline handling:
443
+ * We strip up to one trailing newline before the opening fence and one
444
+ * leading newline after the closing fence so the marker sits on its own
445
+ * line without doubling blank lines around it.
446
+ */
383
447
  function makeCodeFenceCollapser() {
384
448
  let mode = "text";
385
449
  let lang = "";
386
- let buffered = ""; // bytes accumulated inside a fence
387
- let pending = ""; // partial-fence buffer (when we see backticks but don't know yet)
388
- const lines = (s) => s.split("\n").length;
389
- function flushPending() {
390
- const out = pending;
391
- pending = "";
392
- return out;
393
- }
450
+ let buffered = "";
451
+ let pending = "";
452
+ const countLines = (s) => {
453
+ if (!s)
454
+ return 0;
455
+ const trimmed = s.replace(/^\n+/, "").replace(/\n+$/, "");
456
+ return trimmed ? trimmed.split("\n").length : 0;
457
+ };
394
458
  return {
395
459
  feed(chunk) {
396
460
  let result = "";
@@ -399,23 +463,26 @@ function makeCodeFenceCollapser() {
399
463
  pending = "";
400
464
  while (i < buf.length) {
401
465
  if (mode === "text") {
402
- // Look for ``` to enter fence mode
403
466
  const fenceIdx = buf.indexOf("```", i);
404
467
  if (fenceIdx === -1) {
405
- // No fence in remaining text emit it all, but hold the last 2 chars
406
- // in case they're part of an upcoming fence.
468
+ // No fence in remaining text. Hold last 2 chars in case they're
469
+ // the start of an upcoming fence.
407
470
  const safeEnd = Math.max(i, buf.length - 2);
408
471
  result += buf.slice(i, safeEnd);
409
472
  pending = buf.slice(safeEnd);
410
473
  i = buf.length;
411
474
  break;
412
475
  }
413
- // Emit text up to the fence
414
- result += buf.slice(i, fenceIdx);
415
- // Read the language (everything until newline)
476
+ // Emit text up to the fence, but trim a single trailing newline so
477
+ // the marker sits on its own line without extra blank space.
478
+ let preFence = buf.slice(i, fenceIdx);
479
+ if (preFence.endsWith("\n"))
480
+ preFence = preFence.slice(0, -1);
481
+ result += preFence;
482
+ // Read the language declaration (everything up to the next newline).
416
483
  const nlIdx = buf.indexOf("\n", fenceIdx + 3);
417
484
  if (nlIdx === -1) {
418
- // Don't have the full opening line yet — buffer
485
+ // Opening line not complete yet — buffer for next feed.
419
486
  pending = buf.slice(fenceIdx);
420
487
  i = buf.length;
421
488
  break;
@@ -424,31 +491,35 @@ function makeCodeFenceCollapser() {
424
491
  i = nlIdx + 1;
425
492
  mode = "fence";
426
493
  buffered = "";
427
- // Print a leading marker (will be amended when we close)
428
- result += `${GRAY}┃ code: ${lang}…${R}`;
494
+ // Don't emit anything yet — the final marker is written when we
495
+ // see the closing fence so we have the line count.
429
496
  continue;
430
497
  }
431
498
  // mode === "fence" — look for closing ```
432
499
  const closeIdx = buf.indexOf("```", i);
433
500
  if (closeIdx === -1) {
501
+ // No close fence yet — buffer the body.
434
502
  buffered += buf.slice(i);
435
- // Hold last 2 chars in case they're part of an upcoming close fence
503
+ // Hold last 2 chars in case they're part of an upcoming close fence.
436
504
  const safeEnd = Math.max(i, buf.length - 2);
437
505
  buffered = buffered.slice(0, buffered.length - (buf.length - safeEnd));
438
506
  pending = buf.slice(safeEnd);
439
507
  i = buf.length;
440
508
  break;
441
509
  }
442
- // Closing fence found
510
+ // Closing fence found.
443
511
  buffered += buf.slice(i, closeIdx);
444
- const lineCount = lines(buffered.replace(/\n+$/, ""));
445
- // Replace the placeholder we already wrote with the final marker.
446
- // Carriage return + clear line + reprint marker.
447
- result += `\r${ESC}[2K ${GRAY}┃ code: ${lang}, ${lineCount} line${lineCount === 1 ? "" : "s"}${R}\n`;
512
+ const lineCount = countLines(buffered);
513
+ // Emit the marker on its own line with leading and trailing newlines.
514
+ // The outer indenter will prepend " " to each line break.
515
+ result += `\n${GRAY}┃ code: ${lang}, ${lineCount} line${lineCount === 1 ? "" : "s"}${R}`;
448
516
  i = closeIdx + 3;
449
- // Skip optional newline after closing fence
517
+ // Skip a single newline immediately after the close fence to avoid
518
+ // doubling blank lines.
450
519
  if (buf[i] === "\n")
451
520
  i++;
521
+ // Add a trailing newline so the next text starts on a fresh line.
522
+ result += "\n";
452
523
  mode = "text";
453
524
  lang = "";
454
525
  buffered = "";
@@ -456,12 +527,12 @@ function makeCodeFenceCollapser() {
456
527
  return result;
457
528
  },
458
529
  flush() {
459
- const tail = flushPending();
530
+ const tail = pending;
531
+ pending = "";
460
532
  if (mode === "fence") {
461
- // Stream ended mid-fence — close it with an approximate count
462
- const lineCount = lines(buffered.replace(/\n+$/, ""));
533
+ const lineCount = countLines(buffered);
463
534
  mode = "text";
464
- return tail + `\r${ESC}[2K ${GRAY}┃ code: ${lang}, ${lineCount}+ lines${R}\n`;
535
+ return tail + `\n${GRAY}┃ code: ${lang}, ${lineCount}+ lines${R}\n`;
465
536
  }
466
537
  return tail;
467
538
  },
@@ -535,8 +606,10 @@ async function streamPrompt(opts) {
535
606
  // code blocks appear as "[code: lang]" placeholders instead of
536
607
  // dumping raw source.
537
608
  const piece = collapseCodeFences(text);
609
+ // Apply lightweight markdown styling (headers, bold, inline code)
610
+ const styled = applyInlineMarkdown(piece);
538
611
  // Print with leading-newline indenting (so each new line gets the 3-space prefix)
539
- const indented = piece.replace(/\n/g, `\n `);
612
+ const indented = styled.replace(/\n/g, `\n `);
540
613
  out(indented);
541
614
  fullText += text;
542
615
  continue;
@@ -679,6 +752,22 @@ function clearMenu(rows) {
679
752
  }
680
753
  // ─── Main TUI loop ────────────────────────────────────────────────────────────
681
754
  async function runTUI(opts) {
755
+ // Force UTF-8 output on Windows so emoji and box-drawing chars render
756
+ // correctly. Without this, console code page 437/850 corrupts multi-byte
757
+ // sequences into "??" or mojibake.
758
+ if (process.platform === "win32") {
759
+ try {
760
+ // Set output encoding for stdout/stderr
761
+ process.stdout.setEncoding?.("utf-8");
762
+ process.stderr.setEncoding?.("utf-8");
763
+ // Switch the console to UTF-8 (code page 65001)
764
+ const { execSync } = require("child_process");
765
+ execSync("chcp 65001", { stdio: "ignore" });
766
+ }
767
+ catch {
768
+ // chcp not available — that's fine, we tried
769
+ }
770
+ }
682
771
  let { model, provider } = opts;
683
772
  const { port, token, worktree } = opts;
684
773
  let sessionId = opts.sessionId || null;
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/tui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bonecode",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "private": false,
5
5
  "description": "BoneCode — a production-grade AI coding agent with BoneScript-generated backend and pgvector RAG",
6
6
  "keywords": [
@@ -0,0 +1,278 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Unit tests for TUI rendering helpers.
4
+ *
5
+ * Exercises:
6
+ * - makeCodeFenceCollapser handles single-chunk and split-chunk fences,
7
+ * unclosed fences, and produces the expected "┃ code: lang, N lines" marker.
8
+ * - applyInlineMarkdown converts headers, bold, bullets correctly.
9
+ *
10
+ * These functions are not exported from tui.js (they're internal helpers)
11
+ * so we extract them by re-evaluating the source. This is brittle but works
12
+ * as a regression check.
13
+ */
14
+
15
+ "use strict";
16
+ const fs = require("fs");
17
+ const path = require("path");
18
+
19
+ const G = "\x1b[32m"; const R = "\x1b[31m"; const N = "\x1b[0m";
20
+ const C = "\x1b[36m"; const B = "\x1b[1m"; const D = "\x1b[2m";
21
+
22
+ let passed = 0;
23
+ let failed = 0;
24
+ const failures = [];
25
+
26
+ function ok(name, info = "") {
27
+ passed++;
28
+ console.log(` ${G}✓${N} ${name}${info ? ` ${D}${info}${N}` : ""}`);
29
+ }
30
+ function fail(name, msg) {
31
+ failed++;
32
+ failures.push(`${name}: ${msg}`);
33
+ console.log(` ${R}✗${N} ${name} ${R}${msg}${N}`);
34
+ }
35
+ function header(s) { console.log(`\n${C}${B}${s}${N}`); }
36
+
37
+ // Strip ANSI for easier matching
38
+ function stripAnsi(s) {
39
+ return s.replace(/\x1b\[[0-9;]*m/g, "");
40
+ }
41
+
42
+ // Extract the helper functions from the compiled tui.js source.
43
+ // We can't `require` tui.js because it auto-runs runTUI side-effects.
44
+ // Instead we compile a small probe that re-implements the same logic.
45
+ const tuiSrc = fs.readFileSync(path.join(__dirname, "..", "src", "tui.ts"), "utf-8");
46
+
47
+ // Pull out makeCodeFenceCollapser and applyInlineMarkdown source
48
+ function extractFunc(src, name) {
49
+ const start = src.indexOf(`function ${name}(`);
50
+ if (start === -1) return null;
51
+ // Find matching closing brace
52
+ let depth = 0;
53
+ let i = src.indexOf("{", start);
54
+ for (; i < src.length; i++) {
55
+ if (src[i] === "{") depth++;
56
+ else if (src[i] === "}") {
57
+ depth--;
58
+ if (depth === 0) return src.slice(start, i + 1);
59
+ }
60
+ }
61
+ return null;
62
+ }
63
+
64
+ const collapseSrc = extractFunc(tuiSrc, "makeCodeFenceCollapser");
65
+ const markdownSrc = extractFunc(tuiSrc, "applyInlineMarkdown");
66
+
67
+ if (!collapseSrc || !markdownSrc) {
68
+ console.error("Could not extract helper functions from tui.ts");
69
+ process.exit(1);
70
+ }
71
+
72
+ // Evaluate them in a sandbox with the ANSI constants they reference.
73
+ // Strip TypeScript annotations so plain Node can run the source.
74
+ function stripTs(s) {
75
+ return s
76
+ .replace(/:\s*"text"\s*\|\s*"fence"/g, "")
77
+ .replace(/:\s*string/g, "")
78
+ .replace(/:\s*number/g, "")
79
+ .replace(/:\s*boolean/g, "")
80
+ .replace(/:\s*RegExpMatchArray\s*\|\s*null/g, "")
81
+ .replace(/\bas\s+\w+/g, "");
82
+ }
83
+
84
+ const sandboxSrc = `
85
+ const ESC = "\\x1b";
86
+ const R = ESC + "[0m";
87
+ const BOLD = ESC + "[1m";
88
+ const GRAY = ESC + "[90m";
89
+ const CYAN = ESC + "[96m";
90
+ const WHITE = ESC + "[97m";
91
+ ${stripTs(collapseSrc)}
92
+ ${stripTs(markdownSrc)}
93
+ return { makeCodeFenceCollapser, applyInlineMarkdown };
94
+ `;
95
+
96
+ let helpers;
97
+ try {
98
+ helpers = new Function(sandboxSrc)();
99
+ } catch (e) {
100
+ console.error("Failed to evaluate helpers:", e.message);
101
+ process.exit(1);
102
+ }
103
+
104
+ const { makeCodeFenceCollapser, applyInlineMarkdown } = helpers;
105
+
106
+ // ─── Tests ───────────────────────────────────────────────────────────────────
107
+
108
+ header("[1] applyInlineMarkdown");
109
+
110
+ (() => {
111
+ const r = stripAnsi(applyInlineMarkdown("## Section title"));
112
+ if (r === "Section title") ok("h2 header strips ##");
113
+ else fail("h2 header", `got "${r}"`);
114
+ })();
115
+
116
+ (() => {
117
+ const r = stripAnsi(applyInlineMarkdown("### Subsection"));
118
+ if (r === "Subsection") ok("h3 header strips ###");
119
+ else fail("h3 header", `got "${r}"`);
120
+ })();
121
+
122
+ (() => {
123
+ const r = stripAnsi(applyInlineMarkdown("This is **bold** text"));
124
+ if (r === "This is bold text") ok("bold ** is removed");
125
+ else fail("bold", `got "${r}"`);
126
+ })();
127
+
128
+ (() => {
129
+ const r = stripAnsi(applyInlineMarkdown("- first\n- second"));
130
+ if (r === "• first\n• second") ok("bullets become •");
131
+ else fail("bullets", `got "${r}"`);
132
+ })();
133
+
134
+ (() => {
135
+ const r = stripAnsi(applyInlineMarkdown("1. First step\n2. Second step"));
136
+ if (r === "1. First step\n2. Second step") ok("numbered list preserved");
137
+ else fail("numbered list", `got "${r}"`);
138
+ })();
139
+
140
+ (() => {
141
+ const r = stripAnsi(applyInlineMarkdown("Use the `tool` command"));
142
+ if (r === "Use the tool command") ok("inline code is unwrapped");
143
+ else fail("inline code", `got "${r}"`);
144
+ })();
145
+
146
+ header("[2] makeCodeFenceCollapser — single chunk");
147
+
148
+ (() => {
149
+ const c = makeCodeFenceCollapser();
150
+ const r1 = stripAnsi(c.feed("Here is some code:\n```python\ndef foo():\n return 42\n```\nDone"));
151
+ const r2 = stripAnsi(c.flush());
152
+ const r = r1 + r2;
153
+ if (/┃ code: python, 2 lines/.test(r) && /Done/.test(r)) {
154
+ ok("python fence with 2 lines", r.replace(/\n/g, "\\n").slice(0, 80));
155
+ } else {
156
+ fail("python fence", `got "${r.replace(/\n/g, "\\n")}"`);
157
+ }
158
+ })();
159
+
160
+ (() => {
161
+ const c = makeCodeFenceCollapser();
162
+ const r1 = stripAnsi(c.feed("```ts\nconst x = 1\n```"));
163
+ const r2 = stripAnsi(c.flush());
164
+ const r = r1 + r2;
165
+ if (/┃ code: ts, 1 line/.test(r)) ok("ts fence single line");
166
+ else fail("ts fence", `got "${r}"`);
167
+ })();
168
+
169
+ (() => {
170
+ const c = makeCodeFenceCollapser();
171
+ // Fence with no language
172
+ const r1 = stripAnsi(c.feed("```\nhello\nworld\n```"));
173
+ const r2 = stripAnsi(c.flush());
174
+ const r = r1 + r2;
175
+ if (/┃ code: code, 2 lines/.test(r)) ok("fence without lang defaults to 'code'");
176
+ else fail("no-lang fence", `got "${r}"`);
177
+ })();
178
+
179
+ header("[3] makeCodeFenceCollapser — split across chunks");
180
+
181
+ (() => {
182
+ const c = makeCodeFenceCollapser();
183
+ const out1 = stripAnsi(c.feed("Some intro\n```py"));
184
+ const out2 = stripAnsi(c.feed("thon\nprint('hi')\n"));
185
+ const out3 = stripAnsi(c.feed("```\nDone"));
186
+ const out4 = stripAnsi(c.flush());
187
+ const combined = out1 + out2 + out3 + out4;
188
+ if (/Some intro/.test(combined) && /┃ code: python, 1 line/.test(combined) && /Done/.test(combined)) {
189
+ ok("fence split across 3 chunks");
190
+ } else {
191
+ fail("split fence", `got "${combined.replace(/\n/g, "\\n")}"`);
192
+ }
193
+ })();
194
+
195
+ (() => {
196
+ const c = makeCodeFenceCollapser();
197
+ // Backticks split exactly between chunks
198
+ const out1 = stripAnsi(c.feed("text``"));
199
+ const out2 = stripAnsi(c.feed("`js\nx\n```"));
200
+ const combined = out1 + out2;
201
+ if (/┃ code: js, 1 line/.test(combined) && /^text/.test(combined)) {
202
+ ok("backticks split between chunks");
203
+ } else {
204
+ fail("split backticks", `got "${combined.replace(/\n/g, "\\n")}"`);
205
+ }
206
+ })();
207
+
208
+ header("[4] makeCodeFenceCollapser — unclosed fence");
209
+
210
+ (() => {
211
+ const c = makeCodeFenceCollapser();
212
+ const out1 = stripAnsi(c.feed("```python\nprint('a')\nprint('b')\n"));
213
+ const out2 = stripAnsi(c.flush());
214
+ const combined = out1 + out2;
215
+ if (/┃ code: python, 2\+ lines/.test(combined)) {
216
+ ok("unclosed fence on flush shows '+lines'");
217
+ } else {
218
+ fail("unclosed fence", `got "${combined.replace(/\n/g, "\\n")}"`);
219
+ }
220
+ })();
221
+
222
+ header("[5] makeCodeFenceCollapser — text only (no fence)");
223
+
224
+ (() => {
225
+ const c = makeCodeFenceCollapser();
226
+ const out = stripAnsi(c.feed("Just regular text with no fences."));
227
+ // The collapser holds the last 2 chars in `pending` for partial-fence detection,
228
+ // so the visible part is the input minus the last 2 chars.
229
+ if (out === "Just regular text with no fences." || out === "Just regular text with no fences") {
230
+ ok("plain text passes through");
231
+ } else if (out.startsWith("Just regular text")) {
232
+ ok("plain text passes through (with safe-buffer trailing)", `holds last ${"Just regular text with no fences.".length - out.length} chars`);
233
+ } else {
234
+ fail("plain text", `got "${out}"`);
235
+ }
236
+ })();
237
+
238
+ (() => {
239
+ const c = makeCodeFenceCollapser();
240
+ // Simulate the exact problematic input from the user's report:
241
+ // a markdown header, prose, then a fence.
242
+ const out1 = stripAnsi(c.feed("## Section\n\nThis is the intro.\n\n"));
243
+ const out2 = stripAnsi(c.feed("```python\nprint('hi')\n```\n\n"));
244
+ const out3 = stripAnsi(c.feed("### Next section\n"));
245
+ const out4 = stripAnsi(c.flush());
246
+ const combined = out1 + out2 + out3 + out4;
247
+
248
+ // The header text and prose should be intact and have a newline before the marker
249
+ const hasHeader = /## Section/.test(combined);
250
+ const hasIntro = /This is the intro/.test(combined);
251
+ const hasMarker = /┃ code: python, 1 line/.test(combined);
252
+ const hasNextSection = /### Next section/.test(combined);
253
+ const noRunOn = !/intro\.┃/.test(combined) && !/line###/.test(combined);
254
+
255
+ if (hasHeader && hasIntro && hasMarker && hasNextSection && noRunOn) {
256
+ ok("markdown + fence + markdown renders with proper spacing");
257
+ } else {
258
+ const issues = [];
259
+ if (!hasHeader) issues.push("no header");
260
+ if (!hasIntro) issues.push("no intro");
261
+ if (!hasMarker) issues.push("no marker");
262
+ if (!hasNextSection) issues.push("no next section");
263
+ if (!noRunOn) issues.push("text runs on");
264
+ fail("markdown spacing", issues.join(", ") + ` — got "${combined.replace(/\n/g, "\\n")}"`);
265
+ }
266
+ })();
267
+
268
+ // ─── Done ────────────────────────────────────────────────────────────────────
269
+
270
+ console.log();
271
+ if (failed === 0) {
272
+ console.log(`${G}${B}✓ All ${passed} tests passed${N}`);
273
+ process.exit(0);
274
+ } else {
275
+ console.log(`${R}${B}✗ ${failed} failed, ${passed} passed${N}`);
276
+ for (const f of failures) console.log(` ${R}- ${f}${N}`);
277
+ process.exit(1);
278
+ }
package/src/tui.ts CHANGED
@@ -393,19 +393,78 @@ interface ToolTrack {
393
393
  * "text" — pass deltas through verbatim (with partial-fence detection)
394
394
  * "fence" — buffer everything; emit marker on close fence
395
395
  */
396
+ /**
397
+ * Apply lightweight inline markdown styling to a streamed chunk.
398
+ *
399
+ * - `# `, `## `, `### ` at line-start become bold colored headers
400
+ * - `**text**` becomes bold
401
+ * - `` `code` `` becomes inverted gray
402
+ * - `- ` and `* ` at line-start become a bullet
403
+ *
404
+ * Operates per-line on the chunk. Cross-chunk markdown (a `**` opening in one
405
+ * delta and closing in another) is not handled — we just leave those raw.
406
+ * That's acceptable because it's rare and the model's output is still readable.
407
+ */
408
+ function applyInlineMarkdown(text: string): string {
409
+ if (!text) return text;
410
+ // Split on newlines so we can match line-anchored patterns (headers, bullets)
411
+ const lines = text.split("\n");
412
+ const styled = lines.map((line) => {
413
+ // Headers
414
+ let m = line.match(/^(#{1,6})\s+(.*)$/);
415
+ if (m) {
416
+ const level = m[1].length;
417
+ const content = m[2];
418
+ if (level === 1) return `${CYAN}${BOLD}${content}${R}`;
419
+ if (level === 2) return `${CYAN}${BOLD}${content}${R}`;
420
+ if (level === 3) return `${WHITE}${BOLD}${content}${R}`;
421
+ return `${WHITE}${content}${R}`;
422
+ }
423
+ // Bullets at line start
424
+ m = line.match(/^(\s*)[-*]\s+(.*)$/);
425
+ if (m) {
426
+ line = `${m[1]}${GRAY}•${R} ${m[2]}`;
427
+ }
428
+ // Numbered lists
429
+ m = line.match(/^(\s*)(\d+\.)\s+(.*)$/);
430
+ if (m) {
431
+ line = `${m[1]}${GRAY}${m[2]}${R} ${m[3]}`;
432
+ }
433
+ // Bold (**text**)
434
+ line = line.replace(/\*\*([^*]+)\*\*/g, `${BOLD}$1${R}`);
435
+ // Inline code (`code`)
436
+ line = line.replace(/`([^`]+)`/g, `${GRAY}$1${R}`);
437
+ return line;
438
+ });
439
+ return styled.join("\n");
440
+ }
441
+
442
+ /**
443
+ * Stateful code-fence collapser.
444
+ *
445
+ * Replaces ```lang ... ``` blocks with a one-line marker
446
+ * " ┃ code: lang, N lines" so streaming code blocks don't flood the TUI.
447
+ *
448
+ * State:
449
+ * "text" — pass through verbatim (with partial-fence buffering)
450
+ * "fence" — silently buffer body; emit final marker on close
451
+ *
452
+ * Newline handling:
453
+ * We strip up to one trailing newline before the opening fence and one
454
+ * leading newline after the closing fence so the marker sits on its own
455
+ * line without doubling blank lines around it.
456
+ */
396
457
  function makeCodeFenceCollapser() {
397
458
  let mode: "text" | "fence" = "text";
398
459
  let lang = "";
399
- let buffered = ""; // bytes accumulated inside a fence
400
- let pending = ""; // partial-fence buffer (when we see backticks but don't know yet)
401
-
402
- const lines = (s: string) => s.split("\n").length;
460
+ let buffered = "";
461
+ let pending = "";
403
462
 
404
- function flushPending(): string {
405
- const out = pending;
406
- pending = "";
407
- return out;
408
- }
463
+ const countLines = (s: string) => {
464
+ if (!s) return 0;
465
+ const trimmed = s.replace(/^\n+/, "").replace(/\n+$/, "");
466
+ return trimmed ? trimmed.split("\n").length : 0;
467
+ };
409
468
 
410
469
  return {
411
470
  feed(chunk: string): string {
@@ -416,23 +475,26 @@ function makeCodeFenceCollapser() {
416
475
 
417
476
  while (i < buf.length) {
418
477
  if (mode === "text") {
419
- // Look for ``` to enter fence mode
420
478
  const fenceIdx = buf.indexOf("```", i);
421
479
  if (fenceIdx === -1) {
422
- // No fence in remaining text emit it all, but hold the last 2 chars
423
- // in case they're part of an upcoming fence.
480
+ // No fence in remaining text. Hold last 2 chars in case they're
481
+ // the start of an upcoming fence.
424
482
  const safeEnd = Math.max(i, buf.length - 2);
425
483
  result += buf.slice(i, safeEnd);
426
484
  pending = buf.slice(safeEnd);
427
485
  i = buf.length;
428
486
  break;
429
487
  }
430
- // Emit text up to the fence
431
- result += buf.slice(i, fenceIdx);
432
- // Read the language (everything until newline)
488
+ // Emit text up to the fence, but trim a single trailing newline so
489
+ // the marker sits on its own line without extra blank space.
490
+ let preFence = buf.slice(i, fenceIdx);
491
+ if (preFence.endsWith("\n")) preFence = preFence.slice(0, -1);
492
+ result += preFence;
493
+
494
+ // Read the language declaration (everything up to the next newline).
433
495
  const nlIdx = buf.indexOf("\n", fenceIdx + 3);
434
496
  if (nlIdx === -1) {
435
- // Don't have the full opening line yet — buffer
497
+ // Opening line not complete yet — buffer for next feed.
436
498
  pending = buf.slice(fenceIdx);
437
499
  i = buf.length;
438
500
  break;
@@ -441,31 +503,36 @@ function makeCodeFenceCollapser() {
441
503
  i = nlIdx + 1;
442
504
  mode = "fence";
443
505
  buffered = "";
444
- // Print a leading marker (will be amended when we close)
445
- result += `${GRAY}┃ code: ${lang}…${R}`;
506
+ // Don't emit anything yet — the final marker is written when we
507
+ // see the closing fence so we have the line count.
446
508
  continue;
447
509
  }
448
510
 
449
511
  // mode === "fence" — look for closing ```
450
512
  const closeIdx = buf.indexOf("```", i);
451
513
  if (closeIdx === -1) {
514
+ // No close fence yet — buffer the body.
452
515
  buffered += buf.slice(i);
453
- // Hold last 2 chars in case they're part of an upcoming close fence
516
+ // Hold last 2 chars in case they're part of an upcoming close fence.
454
517
  const safeEnd = Math.max(i, buf.length - 2);
455
518
  buffered = buffered.slice(0, buffered.length - (buf.length - safeEnd));
456
519
  pending = buf.slice(safeEnd);
457
520
  i = buf.length;
458
521
  break;
459
522
  }
460
- // Closing fence found
523
+
524
+ // Closing fence found.
461
525
  buffered += buf.slice(i, closeIdx);
462
- const lineCount = lines(buffered.replace(/\n+$/, ""));
463
- // Replace the placeholder we already wrote with the final marker.
464
- // Carriage return + clear line + reprint marker.
465
- result += `\r${ESC}[2K ${GRAY}┃ code: ${lang}, ${lineCount} line${lineCount === 1 ? "" : "s"}${R}\n`;
526
+ const lineCount = countLines(buffered);
527
+ // Emit the marker on its own line with leading and trailing newlines.
528
+ // The outer indenter will prepend " " to each line break.
529
+ result += `\n${GRAY}┃ code: ${lang}, ${lineCount} line${lineCount === 1 ? "" : "s"}${R}`;
466
530
  i = closeIdx + 3;
467
- // Skip optional newline after closing fence
531
+ // Skip a single newline immediately after the close fence to avoid
532
+ // doubling blank lines.
468
533
  if (buf[i] === "\n") i++;
534
+ // Add a trailing newline so the next text starts on a fresh line.
535
+ result += "\n";
469
536
  mode = "text";
470
537
  lang = "";
471
538
  buffered = "";
@@ -474,12 +541,12 @@ function makeCodeFenceCollapser() {
474
541
  return result;
475
542
  },
476
543
  flush(): string {
477
- const tail = flushPending();
544
+ const tail = pending;
545
+ pending = "";
478
546
  if (mode === "fence") {
479
- // Stream ended mid-fence — close it with an approximate count
480
- const lineCount = lines(buffered.replace(/\n+$/, ""));
547
+ const lineCount = countLines(buffered);
481
548
  mode = "text";
482
- return tail + `\r${ESC}[2K ${GRAY}┃ code: ${lang}, ${lineCount}+ lines${R}\n`;
549
+ return tail + `\n${GRAY}┃ code: ${lang}, ${lineCount}+ lines${R}\n`;
483
550
  }
484
551
  return tail;
485
552
  },
@@ -563,8 +630,10 @@ async function streamPrompt(opts: {
563
630
  // code blocks appear as "[code: lang]" placeholders instead of
564
631
  // dumping raw source.
565
632
  const piece = collapseCodeFences(text);
633
+ // Apply lightweight markdown styling (headers, bold, inline code)
634
+ const styled = applyInlineMarkdown(piece);
566
635
  // Print with leading-newline indenting (so each new line gets the 3-space prefix)
567
- const indented = piece.replace(/\n/g, `\n `);
636
+ const indented = styled.replace(/\n/g, `\n `);
568
637
  out(indented);
569
638
  fullText += text;
570
639
  continue;
@@ -727,6 +796,22 @@ export async function runTUI(opts: {
727
796
  port: number; token: string; model: string;
728
797
  provider: string; worktree: string; sessionId?: string;
729
798
  }): Promise<void> {
799
+ // Force UTF-8 output on Windows so emoji and box-drawing chars render
800
+ // correctly. Without this, console code page 437/850 corrupts multi-byte
801
+ // sequences into "??" or mojibake.
802
+ if (process.platform === "win32") {
803
+ try {
804
+ // Set output encoding for stdout/stderr
805
+ (process.stdout as any).setEncoding?.("utf-8");
806
+ (process.stderr as any).setEncoding?.("utf-8");
807
+ // Switch the console to UTF-8 (code page 65001)
808
+ const { execSync } = require("child_process");
809
+ execSync("chcp 65001", { stdio: "ignore" });
810
+ } catch {
811
+ // chcp not available — that's fine, we tried
812
+ }
813
+ }
814
+
730
815
  let { model, provider } = opts;
731
816
  const { port, token, worktree } = opts;
732
817
  let sessionId = opts.sessionId || null;