open-swe/agent
Johannes du Plessis 8c944381b7
feat: restore forced tool call to prevent premature run stops (#1622)
Restore the ensure_no_empty_msg middleware and the always-call-a-tool system-prompt instruction that #1535 removed. When the model emits a message with no tool call (and hasn't already messaged the user or confirmed completion), the middleware re-injects a no_op / confirming_completion tool call so the run continues instead of ending mid-task.

Shipping to test whether it fixes runs that stop halfway through.

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-06-26 14:39:46 -07:00
..
dashboard refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00
integrations feat: repo-scoped dynamic sandbox snapshots (#1595) 2026-06-23 12:24:11 -07:00
middleware feat: restore forced tool call to prevent premature run stops (#1622) 2026-06-26 14:39:46 -07:00
skills feat: outcomes dataset + bootstrap/continual split via skills (#1365) 2026-06-01 13:25:12 -07:00
tools refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00
utils refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00
webhooks refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00
analyzer.py feat: route graphs to separate LangSmith tracing projects (#1508) 2026-06-11 17:57:16 -07:00
chat.py feat: chat with your PR on the review page (#1534) 2026-06-15 17:17:30 -07:00
completion.py refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00
dispatch.py refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00
encryption.py feat: support TOKEN_ENCRYPTION_KEY rotation via MultiFernet [closes AB-2323] (#1275) 2026-05-08 14:29:23 -07:00
prompt.py feat: restore forced tool call to prevent premature run stops (#1622) 2026-06-26 14:39:46 -07:00
reconcile.py refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00
review_style_collector.py feat: PR review page (#1495) 2026-06-11 16:11:10 -07:00
review_style_guidance.py feat: tune reviewer for precision — web/wiki tools + recalibrated prompt (#1312) 2026-05-20 18:35:00 +00:00
reviewer.py feat: add PR trace resolution (#1612) 2026-06-25 14:11:21 -07:00
reviewer_diff.py fix: reviewer reviews full diff; fix review UI scroll + dark-mode composer (#1575) 2026-06-18 19:24:52 -07:00
reviewer_eval_store.py feat: Run reviewer eval in a GitHub Action; dashboard becomes read-only (#1556) 2026-06-16 19:38:36 -07:00
reviewer_findings.py fix: Reviews tab — anchored finding card, paginated list, file tree truncation (#1507) 2026-06-11 17:52:20 -07:00
reviewer_groups.py fix: Simplify review explanation: full-width, plain prose, no diff links (#1547) 2026-06-16 15:32:24 -07:00
reviewer_publish.py feat: surface sub-threshold findings in review summary with web app link (#1571) 2026-06-18 11:15:42 -07:00
reviewer_reconcile.py feat: let reviewer set comment titles (#1356) 2026-05-28 16:04:38 -07:00
reviewer_trace_context.py feat: add PR trace resolution (#1612) 2026-06-25 14:11:21 -07:00
scheduler.py refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00
server.py feat: restore forced tool call to prevent premature run stops (#1622) 2026-06-26 14:39:46 -07:00
webapp.py refactor: durable interrupt dispatch + completion webhook (#1621) 2026-06-26 13:48:38 -07:00