5ccaeb3b96
The DingTalk binding can point at the quick-answer agent, which publishes the whole answer as one answer run plus tool_call/tool_result steps. The narration boundary was rejected for that shape (start=0), so the text-only heuristic ran and dropped the answer lead-in together with its image. - answer_observation: a single answer run means there is no narration to cut. - outboundtext: rewrite LaTeX formulas into plain Unicode text, because DingTalk cards render no math typesetting (r = sqrt(X^2 + Y^2) -> r = √(X² + Y²)). - dingtalk handler: normalize formulas on both the partial and final card paths.