diff --git a/backend/src/agent.py b/backend/src/agent.py index def1a87..d7ad926 100644 --- a/backend/src/agent.py +++ b/backend/src/agent.py @@ -31,7 +31,7 @@ class Agent: agent_class = type(self) self.config = {field.name: data.get(field.name, field.default) for field in getattr(agent_class, 'schema_fields', [])} - def _set_basic_info(self, id, name, user_id=None): + def _set_basic_info(self, id, name, user_id): self.id = id self.name = name self.user_id = user_id diff --git a/backend/src/app.py b/backend/src/app.py index d56b433..5a4920f 100644 --- a/backend/src/app.py +++ b/backend/src/app.py @@ -53,7 +53,12 @@ class App(ChatMixin): """Emit an event to all listeners.""" for listener in self.event_listeners: try: - listener(name, data) + result = listener(name, data) + + # Kinda inspired by stream + if asyncio.iscoroutinefunction(listener): + asyncio.create_task(result) + except Exception as e: print(f"Error in event listener: {name}, {data}") @@ -232,7 +237,7 @@ class App(ChatMixin): raise Exception(f"invalid agent kind: {agent.kind}") control = agent_class(self, agent.data) - control._set_basic_info(agent_id, agent.name) + control._set_basic_info(agent_id, agent.name, agent.user_id) return control async def get_agent_config_fields(self, agent_id): diff --git a/backend/src/app_mixins/chat.py b/backend/src/app_mixins/chat.py index 89a5006..003818a 100644 --- a/backend/src/app_mixins/chat.py +++ b/backend/src/app_mixins/chat.py @@ -170,7 +170,6 @@ class ChatMixin: def chunk_fn (chunk): message.content = content.content + "..." - notify_users() async def end_fn (): message.content = content.content if db.is_instance(message): diff --git a/backend/src/server.py b/backend/src/server.py index 85d1e12..c41e27a 100644 --- a/backend/src/server.py +++ b/backend/src/server.py @@ -141,7 +141,7 @@ async def start_server(app): # Listen for events and broadcast them async def on_event(name, data): - await send({"action": event, "name": name, "data": data}) + await send({"action": "event", "name": name, "data": data}) app.on_event(on_event) while True: