Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Commit ·
477a013
1
Parent(s): e296da8
Sync main.py: markdown stream buffer, shimmer timing fixes
Browse files- agent/main.py +5 -17
agent/main.py
CHANGED
|
@@ -212,35 +212,23 @@ class _ThinkingShimmer:
|
|
| 212 |
|
| 213 |
|
| 214 |
class _StreamBuffer:
|
| 215 |
-
"""
|
| 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 |
-
"""
|
| 234 |
if self._buffer.strip():
|
| 235 |
-
|
| 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()
|