Enhancement Suite: Anti-loop protection, Kokoro TTS integration, ComfyUI status monitoring, and auto-open image functionality
This commit is contained in:
40
build/lib/ollama_cli/ui/formatter.py
Normal file
40
build/lib/ollama_cli/ui/formatter.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from rich.console import Console
|
||||
from rich.markdown import Markdown
|
||||
from rich.panel import Panel
|
||||
from rich.live import Live
|
||||
from rich.text import Text
|
||||
from rich.syntax import Syntax
|
||||
from typing import Optional
|
||||
|
||||
console = Console()
|
||||
|
||||
def print_markdown(text: str):
|
||||
console.print(Markdown(text))
|
||||
|
||||
def print_panel(text: str, title: Optional[str] = None, style: str = "blue"):
|
||||
console.print(Panel(text, title=title, border_style=style))
|
||||
|
||||
def print_error(text: str):
|
||||
console.print(f"[bold red]Error:[/bold red] {text}")
|
||||
|
||||
def print_status(text: str):
|
||||
console.print(f"[bold blue]>>>[/bold blue] {text}")
|
||||
|
||||
class StreamingDisplay:
|
||||
def __init__(self, title: Optional[str] = None):
|
||||
self.text = ""
|
||||
self.live = Live(Text(self.text), refresh_per_second=10)
|
||||
self.title = title
|
||||
|
||||
def __enter__(self):
|
||||
self.live.start()
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
self.live.stop()
|
||||
|
||||
def update(self, chunk: str):
|
||||
self.text += chunk
|
||||
# Try to parse markdown if it looks complete-ish, otherwise just show text
|
||||
# For performance, we might just show raw text during streaming
|
||||
self.live.update(Markdown(self.text) if "```" in self.text else Text(self.text))
|
||||
Reference in New Issue
Block a user