akseljoonas HF Staff commited on
Commit
477a013
·
1 Parent(s): e296da8

Sync main.py: markdown stream buffer, shimmer timing fixes

Browse files
Files changed (1) hide show
  1. agent/main.py +5 -17
agent/main.py CHANGED
@@ -212,35 +212,23 @@ class _ThinkingShimmer:
212
 
213
 
214
  class _StreamBuffer:
215
- """Buffers streaming tokens, flushes complete lines. No flicker."""
216
 
217
  def __init__(self, console):
218
  self._console = console
219
  self._buffer = ""
220
- self._started = False
221
 
222
  def add_chunk(self, text: str):
223
  self._buffer += text
224
- # Flush every complete line
225
- while "\n" in self._buffer:
226
- line, self._buffer = self._buffer.split("\n", 1)
227
- if not self._started:
228
- self._console.print() # blank line before first output
229
- self._started = True
230
- self._console.print(line)
231
 
232
  def finish(self):
233
- """Print any remaining partial line, then reset."""
234
  if self._buffer.strip():
235
- if not self._started:
236
- self._console.print()
237
- self._console.print(self._buffer)
238
  self._buffer = ""
239
- self._started = False
240
 
241
  def discard(self):
242
  self._buffer = ""
243
- self._started = False
244
 
245
 
246
  async def event_listener(
@@ -271,11 +259,11 @@ async def event_listener(
271
  if content:
272
  print_markdown(content)
273
  elif event.event_type == "assistant_chunk":
274
- shimmer.stop()
275
  content = event.data.get("content", "") if event.data else ""
276
  if content:
277
  stream_buf.add_chunk(content)
278
  elif event.event_type == "assistant_stream_end":
 
279
  stream_buf.finish()
280
  elif event.event_type == "tool_call":
281
  shimmer.stop()
@@ -940,11 +928,11 @@ async def headless_main(prompt: str, model: str | None = None) -> None:
940
  event = await event_queue.get()
941
 
942
  if event.event_type == "assistant_chunk":
943
- shimmer.stop()
944
  content = event.data.get("content", "") if event.data else ""
945
  if content:
946
  stream_buf.add_chunk(content)
947
  elif event.event_type == "assistant_stream_end":
 
948
  stream_buf.finish()
949
  elif event.event_type == "assistant_message":
950
  shimmer.stop()
 
212
 
213
 
214
  class _StreamBuffer:
215
+ """Accumulates streamed tokens, renders full markdown on finish."""
216
 
217
  def __init__(self, console):
218
  self._console = console
219
  self._buffer = ""
 
220
 
221
  def add_chunk(self, text: str):
222
  self._buffer += text
 
 
 
 
 
 
 
223
 
224
  def finish(self):
225
+ """Render the accumulated text as markdown, then reset."""
226
  if self._buffer.strip():
227
+ print_markdown(self._buffer)
 
 
228
  self._buffer = ""
 
229
 
230
  def discard(self):
231
  self._buffer = ""
 
232
 
233
 
234
  async def event_listener(
 
259
  if content:
260
  print_markdown(content)
261
  elif event.event_type == "assistant_chunk":
 
262
  content = event.data.get("content", "") if event.data else ""
263
  if content:
264
  stream_buf.add_chunk(content)
265
  elif event.event_type == "assistant_stream_end":
266
+ shimmer.stop()
267
  stream_buf.finish()
268
  elif event.event_type == "tool_call":
269
  shimmer.stop()
 
928
  event = await event_queue.get()
929
 
930
  if event.event_type == "assistant_chunk":
 
931
  content = event.data.get("content", "") if event.data else ""
932
  if content:
933
  stream_buf.add_chunk(content)
934
  elif event.event_type == "assistant_stream_end":
935
+ shimmer.stop()
936
  stream_buf.finish()
937
  elif event.event_type == "assistant_message":
938
  shimmer.stop()