The send_message tool sends Feishu markdown tables as plain text,
making pipe characters and dashes visible to the user. The Feishu
adapter's _build_outbound_payload already handles table→interactive
card conversion, but the _send_feishu standalone sender path was
bypassing it.
Fix: detect markdown tables in _send_feishu before calling
adapter.send(). When a table is present, build the Interactive Card
payload directly via _build_table_card_payload and send it through
the lark_oapi message.create API with msg_type='interactive'.
Adds _send_interactive_card() helper that sends the raw card JSON
via the adapter's API client and returns a SendResult.
Summary
Fixes send_message tool sending Feishu markdown tables as plain text
instead of native Interactive Card tables.
Root Cause
The _send_feishu standalone sender path creates a fresh FeishuAdapter
instance and calls adapter.send(). The table-to-Card conversion in
_build_outbound_payload was not triggered reliably through this path.
Fix
directly via lark_oapi message.create API with msg_type=interactive
pattern before calling adapter.send()
Screenshots
Before: (Drag your before screenshot here showing raw markdown table)

After: (Drag your after screenshot here showing proper Interactive Card)