fix: restore and simplify events
This commit is contained in:
1 parent
77addb889d
commit
d7e92f38f3
4 files changed
+9
-5
No files matched your search
@@ -31,7 +31,7 @@ class Agent:
|
|||||||
agent_class = type(self)
|
agent_class = type(self)
|
||||||
self.config = {field.name: data.get(field.name, field.default) for field in getattr(agent_class, 'schema_fields', [])}
|
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.id = id
|
||||||
self.name = name
|
self.name = name
|
||||||
self.user_id = user_id
|
self.user_id = user_id
|
||||||
|
|||||||
+7
-2
@@ -53,7 +53,12 @@ class App(ChatMixin):
|
|||||||
"""Emit an event to all listeners."""
|
"""Emit an event to all listeners."""
|
||||||
for listener in self.event_listeners:
|
for listener in self.event_listeners:
|
||||||
try:
|
try:
|
||||||
listener(name, data)
|
result = listener(name, data)
|
||||||
|
|
||||||
|
# Kinda inspired by stream
|
||||||
|
if asyncio.iscoroutinefunction(listener):
|
||||||
|
asyncio.create_task(result)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error in event listener: {name}, {data}")
|
print(f"Error in event listener: {name}, {data}")
|
||||||
|
|
||||||
@@ -232,7 +237,7 @@ class App(ChatMixin):
|
|||||||
raise Exception(f"invalid agent kind: {agent.kind}")
|
raise Exception(f"invalid agent kind: {agent.kind}")
|
||||||
|
|
||||||
control = agent_class(self, agent.data)
|
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
|
return control
|
||||||
|
|
||||||
async def get_agent_config_fields(self, agent_id):
|
async def get_agent_config_fields(self, agent_id):
|
||||||
|
|||||||
@@ -170,7 +170,6 @@ class ChatMixin:
|
|||||||
|
|
||||||
def chunk_fn (chunk):
|
def chunk_fn (chunk):
|
||||||
message.content = content.content + "..."
|
message.content = content.content + "..."
|
||||||
notify_users()
|
|
||||||
async def end_fn ():
|
async def end_fn ():
|
||||||
message.content = content.content
|
message.content = content.content
|
||||||
if db.is_instance(message):
|
if db.is_instance(message):
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ async def start_server(app):
|
|||||||
|
|
||||||
# Listen for events and broadcast them
|
# Listen for events and broadcast them
|
||||||
async def on_event(name, data):
|
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)
|
app.on_event(on_event)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|||||||
Reference in new issue
Block a user