fix(reply): make external btw replies explicit

This commit is contained in:
Nimrod Gutman
2026-03-14 13:14:12 +02:00
parent e7500a0961
commit efd9e45cdc
4 changed files with 18 additions and 12 deletions

View File

@@ -15,10 +15,12 @@ export function formatBtwTextForExternalDelivery(payload: ReplyPayload): string
if (!text) {
return payload.text;
}
if (!payload.btw?.question?.trim()) {
const question = payload.btw?.question?.trim();
if (!question) {
return payload.text;
}
return text.startsWith("BTW:") ? text : `BTW: ${text}`;
const formatted = `BTW\nQuestion: ${question}\n\n${text}`;
return text === formatted || text.startsWith("BTW\nQuestion:") ? text : formatted;
}
function resolveReplyThreadingForPayload(params: {

View File

@@ -302,7 +302,7 @@ describe("routeReply", () => {
);
});
it("prefixes BTW replies on routed sends", async () => {
it("formats BTW replies prominently on routed sends", async () => {
mocks.sendMessageSlack.mockClear();
await routeReply({
payload: { text: "323", btw: { question: "what is 17 * 19?" } },
@@ -312,12 +312,12 @@ describe("routeReply", () => {
});
expect(mocks.sendMessageSlack).toHaveBeenCalledWith(
"channel:C123",
"BTW: 323",
"BTW\nQuestion: what is 17 * 19?\n\n323",
expect.any(Object),
);
});
it("prefixes BTW replies on routed discord sends", async () => {
it("formats BTW replies prominently on routed discord sends", async () => {
mocks.sendMessageDiscord.mockClear();
await routeReply({
payload: { text: "323", btw: { question: "what is 17 * 19?" } },
@@ -327,7 +327,7 @@ describe("routeReply", () => {
});
expect(mocks.sendMessageDiscord).toHaveBeenCalledWith(
"channel:123456",
"BTW: 323",
"BTW\nQuestion: what is 17 * 19?\n\n323",
expect.any(Object),
);
});

View File

@@ -288,7 +288,7 @@ describe("deliverOutboundPayloads", () => {
);
});
it("prefixes BTW replies for telegram delivery", async () => {
it("formats BTW replies prominently for telegram delivery", async () => {
const sendTelegram = vi.fn().mockResolvedValue({ messageId: "m1", chatId: "c1" });
await deliverTelegramPayload({
@@ -301,7 +301,7 @@ describe("deliverOutboundPayloads", () => {
expect(sendTelegram).toHaveBeenCalledWith(
"123",
"BTW: 323",
"BTW\nQuestion: what is 17 * 19?\n\n323",
expect.objectContaining({ verbose: false, textMode: "html" }),
);
});
@@ -743,7 +743,7 @@ describe("deliverOutboundPayloads", () => {
]);
});
it("prefixes BTW replies for whatsapp delivery", async () => {
it("formats BTW replies prominently for whatsapp delivery", async () => {
const sendWhatsApp = vi.fn().mockResolvedValue({ messageId: "w1", toJid: "jid" });
await deliverWhatsAppPayload({
@@ -751,7 +751,11 @@ describe("deliverOutboundPayloads", () => {
payload: { text: "323", btw: { question: "what is 17 * 19?" } },
});
expect(sendWhatsApp).toHaveBeenCalledWith("+1555", "BTW: 323", expect.any(Object));
expect(sendWhatsApp).toHaveBeenCalledWith(
"+1555",
"BTW\nQuestion: what is 17 * 19?\n\n323",
expect.any(Object),
);
});
it("continues on errors when bestEffort is enabled", async () => {

View File

@@ -1258,14 +1258,14 @@ describe("normalizeOutboundPayloads", () => {
expect(normalized).toEqual([{ text: "final answer", mediaUrls: [] }]);
});
it("prefixes BTW replies for external delivery", () => {
it("formats BTW replies prominently for external delivery", () => {
const normalized = normalizeOutboundPayloads([
{
text: "323",
btw: { question: "what is 17 * 19?" },
},
]);
expect(normalized).toEqual([{ text: "BTW: 323", mediaUrls: [] }]);
expect(normalized).toEqual([{ text: "BTW\nQuestion: what is 17 * 19?\n\n323", mediaUrls: [] }]);
});
});