def draw()

in ui.py [0:0]


    def draw(self, context):
        layout = self.layout
        props = context.scene.meshgen_props

        backend = Backend.instance()
        if not backend.is_valid():
            setup_box = layout.box()
            setup_box.label(text="Finish setup in preferences.", icon="INFO")

            preferences_row = layout.row()
            preferences_row.scale_y = 1.2
            preferences_row.operator(
                "preferences.addon_show", text="Open Preferences", icon="SETTINGS"
            ).module = __package__

            return

        # User
        user_box = layout.box()
        user_box.label(text="You", icon="USER")

        if props.state == "READY":
            user_box.prop(props, "prompt", text="")
        else:
            user_box.label(text=props.prompt)

        action_row = user_box.row(align=True)
        action_row.scale_y = 1.2
        main_button_col = action_row.column(align=True)
        if props.state == "READY":
            main_button_col.operator("meshgen.chat", text="Submit", icon="PLAY")
        elif props.state == "LOADING" or props.state == "RUNNING":
            main_button_col.operator("meshgen.cancel_chat", text="Cancel", icon="X")
        log_button_col = action_row.column(align=True)
        log_button_col.operator("meshgen.open_log", text="", icon="TEXT")

        # Agent
        if not props.history:
            return

        layout.separator()
        agent_box = layout.box()
        agent_box.label(text="Agent", icon="LIGHT")

        for event in props.history:
            event_box = agent_box.box()
            event_box.label(text=EVENT_LABELS[event.type], icon=EVENT_ICONS[event.type])
            if event.content:
                event_box.label(text=event.content)