From 74f6b2572b76282a5ce422112064fd08968f9473 Mon Sep 17 00:00:00 2001 From: Berack96 Date: Thu, 23 Oct 2025 15:48:38 +0200 Subject: [PATCH] Copilot fixes + new intermediate_step --- src/app/agents/core.py | 13 +++++++++---- src/app/interface/telegram.py | 28 ++++++++++++++-------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/app/agents/core.py b/src/app/agents/core.py index e19f328..255fb28 100644 --- a/src/app/agents/core.py +++ b/src/app/agents/core.py @@ -160,14 +160,19 @@ class RunMessage: def update(self) -> 'RunMessage': text_curr, state_curr = self.steps_total[self.current] self.steps_total[self.current] = (text_curr, state_curr + 1) - self.current += 1 + self.current = min(self.current + 1, len(self.steps_total)) if self.current < len(self.steps_total): text_curr, state_curr = self.steps_total[self.current] self.steps_total[self.current] = (text_curr, state_curr + 1) return self - def get_latest(self, extra: str = "") -> str: + def update_step(self, text_extra: str = "") -> 'RunMessage': + text_curr, state_curr = self.steps_total[self.current] + if text_extra: + text_curr = f"{text_curr.replace('ā•š', 'ā• ')}\nā•šā• {text_extra}" + self.steps_total[self.current] = (text_curr, state_curr) + return self + + def get_latest(self) -> str: steps = [msg.replace(self.placeholder, self.emojis[state]) for msg, state in self.steps_total] - if extra: - steps[self.current] = f"{steps[self.current]}: {extra}" return self.base_message + "\n".join(steps) diff --git a/src/app/interface/telegram.py b/src/app/interface/telegram.py index 4cd51f0..b720c43 100644 --- a/src/app/interface/telegram.py +++ b/src/app/interface/telegram.py @@ -52,16 +52,14 @@ class ConfigsChat(Enum): return InlineKeyboardButton(display, callback_data=self.name) def change_value(self, inputs: PipelineInputs, new_value:int) -> None: - if self.name == self.MODEL_CHECK.name: - inputs.choose_query_checker(new_value) - elif self.name == self.MODEL_TEAM_LEADER.name: - inputs.choose_team_leader(new_value) - elif self.name == self.MODEL_TEAM.name: - inputs.choose_team(new_value) - elif self.name == self.MODEL_REPORT.name: - inputs.choose_report_generator(new_value) - elif self.name == self.STRATEGY.name: - inputs.choose_strategy(new_value) + functions_map = { + self.MODEL_CHECK.name: inputs.choose_query_checker, + self.MODEL_TEAM_LEADER.name: inputs.choose_team_leader, + self.MODEL_TEAM.name: inputs.choose_team, + self.MODEL_REPORT.name: inputs.choose_report_generator, + self.STRATEGY.name: inputs.choose_strategy, + } + functions_map[self.name](new_value) class TelegramApp: @@ -272,9 +270,11 @@ class TelegramApp: # Remove user query and bot message await bot.delete_message(chat_id=chat_id, message_id=update.message.id) - def update_user(update: bool = True, extra: str = "") -> None: - if update: run_message.update() - message = run_message.get_latest(extra) + def update_user(update_step: str = "") -> None: + if update_step: run_message.update_step(update_step) + else: run_message.update() + + message = run_message.get_latest() if msg.text != message: asyncio.create_task(msg.edit_text(message, parse_mode='MarkdownV2')) @@ -282,7 +282,7 @@ class TelegramApp: pipeline = Pipeline(inputs) report_content = await pipeline.interact_async(listeners=[ (PipelineEvent.QUERY_CHECK, lambda _: update_user()), - (PipelineEvent.TOOL_USED, lambda e: update_user(False, f"`{e.agent_name} {e.tool.tool_name}`")), + (PipelineEvent.TOOL_USED, lambda e: update_user(e.tool.tool_name.replace('get_', '').replace("_", "\\_"))), (PipelineEvent.INFO_RECOVERY, lambda _: update_user()), (PipelineEvent.REPORT_GENERATION, lambda _: update_user()), ])