|
12 | 12 | QEasingCurve
|
13 | 13 | from PySide6.QtGui import QPixmap, QIcon, QTextCursor, QTextOption, Qt, QDesktopServices
|
14 | 14 |
|
| 15 | +from src.members.user import User |
15 | 16 | # from interpreter import interpreter
|
16 | 17 | from src.plugins.openinterpreter.src import interpreter
|
17 | 18 |
|
@@ -229,14 +230,24 @@ def send_message(
|
229 | 230 | self,
|
230 | 231 | message: str,
|
231 | 232 | role: str = 'user',
|
232 |
| - as_member_id: str = '1', |
| 233 | + as_member_id: str = None, # '1', |
| 234 | + feed_back=False, |
233 | 235 | clear_input=False,
|
234 | 236 | run_workflow=True
|
235 | 237 | ): # todo default as_mem_id
|
236 | 238 | # check if threadpool is active
|
237 | 239 | if self.main.threadpool.activeThreadCount() > 0:
|
238 | 240 | return
|
239 | 241 |
|
| 242 | + if as_member_id is None: # todo |
| 243 | + members = self.workflow.members |
| 244 | + workflow_first_member = next(iter(sorted(members.values(), key=lambda x: x['loc_x'])), None) |
| 245 | + |
| 246 | + if workflow_first_member: |
| 247 | + first_member_is_user = isinstance(workflow_first_member, User) |
| 248 | + if first_member_is_user: # todo de-dupe |
| 249 | + as_member_id = workflow_first_member.member_id |
| 250 | + |
240 | 251 | last_msg = self.workflow.message_history.messages[-1] if self.workflow.message_history.messages else None
|
241 | 252 | new_msg = self.workflow.save_message(role, message, member_id=as_member_id)
|
242 | 253 | if not new_msg:
|
@@ -267,34 +278,35 @@ def send_message(
|
267 | 278 | self.parent.workflow_settings.refresh_member_highlights()
|
268 | 279 |
|
269 | 280 | if run_workflow:
|
270 |
| - self.run_workflow(as_member_id) |
| 281 | + self.run_workflow(from_member_id=as_member_id, feed_back=feed_back) # as_member_id) |
271 | 282 |
|
272 | 283 | # def after_send_message(self, as_member_id: str):
|
273 | 284 | # self.run_workflow(as_member_id)
|
274 | 285 | #
|
275 | 286 |
|
276 |
| - def run_workflow(self, from_member_id=None): |
| 287 | + def run_workflow(self, from_member_id=None, feed_back=False): |
277 | 288 | self.main.send_button.update_icon(is_generating=True)
|
278 | 289 |
|
279 | 290 | # self.refresh_waiting_bar(set_visibility=False)
|
280 | 291 | # self.parent.workflow_settings.refresh_member_highlights()
|
281 | 292 |
|
282 |
| - runnable = self.RespondingRunnable(self, from_member_id) |
| 293 | + runnable = self.RespondingRunnable(self, from_member_id, feed_back) |
283 | 294 | self.main.threadpool.start(runnable)
|
284 | 295 |
|
285 | 296 | if self.parent.__class__.__name__ == 'Page_Chat':
|
286 | 297 | self.parent.try_generate_title()
|
287 | 298 |
|
288 | 299 | class RespondingRunnable(QRunnable):
|
289 |
| - def __init__(self, parent, from_member_id=None): |
| 300 | + def __init__(self, parent, from_member_id=None, feed_back=False): |
290 | 301 | super().__init__()
|
291 | 302 | self.parent = parent
|
292 | 303 | self.main = parent.main
|
293 | 304 | self.from_member_id = from_member_id
|
| 305 | + self.feed_back = feed_back # todo clean |
294 | 306 |
|
295 | 307 | def run(self):
|
296 | 308 | try:
|
297 |
| - asyncio.run(self.parent.workflow.behaviour.start(self.from_member_id)) |
| 309 | + asyncio.run(self.parent.workflow.behaviour.start(self.from_member_id, feed_back=self.feed_back)) |
298 | 310 | self.main.finished_signal.emit()
|
299 | 311 | except Exception as e:
|
300 | 312 | if os.environ.get('AP_DEV_MODE', False):
|
@@ -671,7 +683,7 @@ def rerun_msg(self):
|
671 | 683 |
|
672 | 684 | oi_res = interpreter.computer.run(lang, code)
|
673 | 685 | output = next(r for r in oi_res if r['format'] == 'output').get('content', '')
|
674 |
| - self.msg_container.parent.send_message(output, role='output', as_member_id=member_id, clear_input=False) |
| 686 | + self.msg_container.parent.send_message(output, role='output', as_member_id=member_id, feed_back=True, clear_input=False) |
675 | 687 | elif bubble.role == 'tool':
|
676 | 688 | from src.system.base import manager
|
677 | 689 | parsed, tool_dict = try_parse_json(bubble.text)
|
|
0 commit comments