def modal()

in operators.py [0:0]


    def modal(self, context, event):
        props = context.scene.meshgen_props

        if props.state == "CANCELED" or event.type == "ESC":
            self._stop_event.set()
            self.add_event("CANCELED", STATUS_CANCELED, "Canceled")
            return self.finish(context)

        if event.type == "TIMER" and props.state == "RUNNING":
            try:
                while True:
                    message_type, content = self._output_queue.get_nowait()
                    if message_type == "STEP":
                        thought, full_output = content
                        self.pop_event()
                        self.add_event("STEP", thought, full_output)
                        self.add_event("THINKING", None, "Thinking...")
                        self.redraw(context)
                    elif message_type == "STEP_ERROR":
                        self.pop_event()
                        self.add_event("ERROR", content, f"Error: {content}")
                        self.add_event("THINKING", None, "Thinking...")
                        self.redraw(context)
                    elif message_type == "ERROR":
                        error_msg, full_error = content
                        self.pop_event()
                        self.add_event("ERROR", error_msg, full_error)
                        return self.finish(context)
                    elif message_type == "FINAL_ANSWER":
                        self.pop_event()
                        self.add_event("SUCCESS", content, f"Final Answer: {content}")
                        return self.finish(context)
                    elif message_type == "CANCELED":
                        self.pop_event()
                        self.add_event("CANCELED", STATUS_CANCELED, STATUS_CANCELED)
                        return self.finish(context)
                    elif message_type == "DONE":
                        self.pop_event()
                        self.add_event("ERROR", STATUS_DONE, STATUS_DONE)
                        return self.finish(context)
            except queue.Empty:
                pass

            ToolManager.instance().process_tasks(context)

        return {"PASS_THROUGH"}