# Conflicts: # src/dailyai/queue_aggregators.py # src/dailyai/queue_frame.py # src/dailyai/services/base_transport_service.py # src/dailyai/services/daily_transport_service.py # src/examples/foundational/06-listen-and-respond.py # src/examples/foundational/07-interruptible.py
77 lines
1.2 KiB
Python
77 lines
1.2 KiB
Python
from enum import Enum
|
|
from dataclasses import dataclass
|
|
from typing import Any
|
|
|
|
|
|
class QueueFrame:
|
|
pass
|
|
|
|
|
|
class ControlQueueFrame(QueueFrame):
|
|
pass
|
|
|
|
|
|
class StartStreamQueueFrame(ControlQueueFrame):
|
|
pass
|
|
|
|
|
|
class EndStreamQueueFrame(ControlQueueFrame):
|
|
pass
|
|
|
|
|
|
class LLMResponseEndQueueFrame(QueueFrame):
|
|
pass
|
|
|
|
|
|
@dataclass()
|
|
class ChatMessageQueueFrame(QueueFrame):
|
|
message: str
|
|
|
|
|
|
@dataclass()
|
|
class LLMFunctionCallFrame(QueueFrame):
|
|
function_name: str
|
|
arguments: str
|
|
|
|
|
|
@dataclass()
|
|
class AudioQueueFrame(QueueFrame):
|
|
data: bytes
|
|
|
|
|
|
@dataclass()
|
|
class ImageQueueFrame(QueueFrame):
|
|
url: str | None
|
|
image: bytes
|
|
|
|
|
|
@dataclass()
|
|
class SpriteQueueFrame(QueueFrame):
|
|
images: list[bytes]
|
|
|
|
|
|
@dataclass()
|
|
class TextQueueFrame(QueueFrame):
|
|
text: str
|
|
|
|
|
|
@dataclass()
|
|
class TranscriptionQueueFrame(TextQueueFrame):
|
|
participantId: str
|
|
timestamp: str
|
|
|
|
|
|
@dataclass()
|
|
class LLMMessagesQueueFrame(QueueFrame):
|
|
messages: list[dict[str, str]] # TODO: define this more concretely!
|
|
|
|
|
|
class AppMessageQueueFrame(QueueFrame):
|
|
message: Any
|
|
participantId: str
|
|
|
|
class UserStartedSpeakingFrame(QueueFrame):
|
|
pass
|
|
|
|
class UserStoppedSpeakingFrame(QueueFrame):
|
|
pass |