erosolar-cli 1.7.412 → 1.7.413

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.
@@ -8,10 +8,13 @@ export declare class StreamingResponseFormatter {
8
8
  private readonly indentPrefix;
9
9
  private lineOpen;
10
10
  private startNewEvent;
11
- private lastCharWasNewline;
11
+ private inCodeBlock;
12
+ private backtickStreak;
12
13
  constructor(columns?: number);
13
14
  header(): string;
14
15
  formatChunk(chunk: string): string;
15
16
  finish(note?: string): string;
17
+ private shouldUseBulletPrefix;
18
+ private updateCodeFenceState;
16
19
  }
17
20
  //# sourceMappingURL=streamingFormatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streamingFormatter.d.ts","sourceRoot":"","sources":["../../src/ui/streamingFormatter.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,kBAAkB,CAAQ;gBAEtB,OAAO,CAAC,EAAE,MAAM;IAQ5B,MAAM,IAAI,MAAM;IAQhB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA+BlC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;CAiB9B"}
1
+ {"version":3,"file":"streamingFormatter.d.ts","sourceRoot":"","sources":["../../src/ui/streamingFormatter.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAK;gBAEf,OAAO,CAAC,EAAE,MAAM;IAQ5B,MAAM,IAAI,MAAM;IAShB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA6BlC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAyB7B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,oBAAoB;CAY7B"}
@@ -9,7 +9,8 @@ export class StreamingResponseFormatter {
9
9
  indentPrefix;
10
10
  lineOpen = false;
11
11
  startNewEvent = true;
12
- lastCharWasNewline = true;
12
+ inCodeBlock = false;
13
+ backtickStreak = 0;
13
14
  constructor(columns) {
14
15
  // Columns are kept for compatibility with previous versions; currently unused
15
16
  clamp(columns ?? 80, 48, 110);
@@ -20,7 +21,8 @@ export class StreamingResponseFormatter {
20
21
  header() {
21
22
  this.lineOpen = false;
22
23
  this.startNewEvent = true;
23
- this.lastCharWasNewline = true;
24
+ this.inCodeBlock = false;
25
+ this.backtickStreak = 0;
24
26
  // Add a single blank line before the streaming content for spacing
25
27
  return '\n';
26
28
  }
@@ -32,20 +34,17 @@ export class StreamingResponseFormatter {
32
34
  let result = '';
33
35
  for (const char of normalized) {
34
36
  if (!this.lineOpen) {
35
- const prefix = this.startNewEvent ? this.bulletPrefix : this.indentPrefix;
37
+ const prefix = this.shouldUseBulletPrefix() ? this.bulletPrefix : this.indentPrefix;
36
38
  result += prefix;
37
39
  this.lineOpen = true;
38
40
  this.startNewEvent = false;
39
41
  }
40
42
  result += char;
43
+ this.updateCodeFenceState(char);
41
44
  if (char === '\n') {
42
- // If we see consecutive newlines, treat the next line as a new event
43
- this.startNewEvent = this.lastCharWasNewline;
45
+ // Treat every new line as a new event so each thought gets its own bullet
46
+ this.startNewEvent = true;
44
47
  this.lineOpen = false;
45
- this.lastCharWasNewline = true;
46
- }
47
- else {
48
- this.lastCharWasNewline = false;
49
48
  }
50
49
  }
51
50
  return result;
@@ -62,8 +61,30 @@ export class StreamingResponseFormatter {
62
61
  }
63
62
  // Always end with a trailing newline for consistent spacing
64
63
  lines.push('');
64
+ // Reset state so the next streamed block starts cleanly
65
+ this.lineOpen = false;
66
+ this.startNewEvent = true;
67
+ this.inCodeBlock = false;
68
+ this.backtickStreak = 0;
65
69
  return `${lines.join('\n')}\n`;
66
70
  }
71
+ shouldUseBulletPrefix() {
72
+ if (this.inCodeBlock) {
73
+ return false;
74
+ }
75
+ return this.startNewEvent;
76
+ }
77
+ updateCodeFenceState(char) {
78
+ if (char === '`') {
79
+ this.backtickStreak += 1;
80
+ if (this.backtickStreak === 3) {
81
+ this.inCodeBlock = !this.inCodeBlock;
82
+ this.backtickStreak = 0;
83
+ }
84
+ return;
85
+ }
86
+ this.backtickStreak = 0;
87
+ }
67
88
  }
68
89
  function clamp(value, min, max) {
69
90
  return Math.max(min, Math.min(max, value));
@@ -1 +1 @@
1
- {"version":3,"file":"streamingFormatter.js","sourceRoot":"","sources":["../../src/ui/streamingFormatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streamingFormatter.js","sourceRoot":"","sources":["../../src/ui/streamingFormatter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "erosolar-cli",
3
- "version": "1.7.412",
3
+ "version": "1.7.413",
4
4
  "description": "Unified AI agent framework for the command line - Multi-provider support with schema-driven tools, code intelligence, and transparent reasoning",
5
5
  "main": "dist/bin/erosolar.js",
6
6
  "type": "module",