Add Live Ozan Radio — DeepSeek DJ, Lyria 3, and player chat.

Personal AI station that generates tracks from taste seeds or Spotify; safe to share — secrets and cache are gitignored.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-07 14:15:42 +01:00
commit 4924db5617
19 changed files with 1551 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
from __future__ import annotations
from dataclasses import dataclass, field
from time import time
@dataclass
class ChatTurn:
role: str
content: str
ts: float = field(default_factory=time)
class ChatStore:
"""In-memory chat history for the DJ panel."""
def __init__(self, max_turns: int = 40) -> None:
self._turns: list[ChatTurn] = []
self._max = max_turns
self.pending_vibe: str = ""
def add(self, role: str, content: str) -> None:
self._turns.append(ChatTurn(role=role, content=content))
if len(self._turns) > self._max:
self._turns = self._turns[-self._max :]
def history(self) -> list[dict]:
return [{"role": t.role, "content": t.content} for t in self._turns]
def public_log(self) -> list[dict]:
return [
{"role": t.role, "content": t.content, "ts": t.ts}
for t in self._turns
if t.role in ("user", "dj")
]
def take_vibe_hint(self) -> str:
hint = self.pending_vibe.strip()
self.pending_vibe = ""
return hint