CHANNEL_PROMPT tells the model: "separate short thoughts with a blank line — each block is delivered as its own bubble." But send_to_contact makes exactly one send_text/send_imessage call per reply, and there's no block-splitting logic anywhere in the send path — the whole reply arrives as a single message.
Practical effect: models that follow the instruction literally compose multi-block replies for bubbles that never materialize, producing noticeably longer messages than intended (observed in live traffic across two sibling bridges).
Suggested fix is to make the prompt match delivery — e.g. "The whole reply is delivered as a single message — blank lines do not split it. Prefer one short paragraph."
Happy to PR the one-line change if useful.
CHANNEL_PROMPTtells the model: "separate short thoughts with a blank line — each block is delivered as its own bubble." Butsend_to_contactmakes exactly onesend_text/send_imessagecall per reply, and there's no block-splitting logic anywhere in the send path — the whole reply arrives as a single message.Practical effect: models that follow the instruction literally compose multi-block replies for bubbles that never materialize, producing noticeably longer messages than intended (observed in live traffic across two sibling bridges).
Suggested fix is to make the prompt match delivery — e.g. "The whole reply is delivered as a single message — blank lines do not split it. Prefer one short paragraph."
Happy to PR the one-line change if useful.