Commit Graph

3430 Commits

Author SHA1 Message Date
Peter Steinberger 6f024293e0 fix: surface reply media failures
Co-authored-by: Jerry-Xin <jerryxin0@gmail.com>
2026-05-17 10:39:28 +01:00
Peter Steinberger 69d588cf2a fix(openai): remove GPT reply brevity cap 2026-05-17 09:29:11 +01:00
Bob 80d03a1e5b fix: classify provider conversation state errors (#82616)
Classify provider conversation-state rejections and return a clear message-channel error instead of auto-resetting or falling back to a generic runner failure.

Local validation:
- pnpm docs:list
- pnpm build
- pnpm check
- node scripts/run-vitest.mjs src/auto-reply/reply/provider-request-error-classifier.test.ts src/auto-reply/reply/agent-runner-execution.test.ts src/auto-reply/reply/dispatch-from-config.test.ts
- node scripts/run-vitest.mjs run --config test/vitest/vitest.e2e.config.ts src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.ts

Co-authored-by: dutifulbob <261991368+dutifulbob@users.noreply.github.com>
2026-05-17 16:22:09 +08:00
Josh Avant 9a063e38d1 Fix TTS supplement delivery across live previews (#82935)
* fix: avoid duplicated tts supplement replies

* chore: add changelog for tts supplement fix
2026-05-17 01:15:12 -05:00
Agustin Rivera 9b96f81327 fix(skills): honor tool policy for inline dispatch (#78525)
* fix(skills): honor tool policy for inline dispatch

* fix(skills): cover inline dispatch policy gaps

* fix(skills): align inline dispatch policy

* fix(skills): add inline dispatch policy changelog
2026-05-16 22:09:53 -07:00
hcl f2d8f38315 fix(followup): route CLI runtime drains through CLI runner (#82847) (#82857)
* fix(followup): route CLI runtime drains through CLI runner

* fix(followup): route queued CLI runtimes

---------

Co-authored-by: hclsys <hclsys@openclaw.ai>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-17 06:07:08 +01:00
Gio Della-Libera bd51d8f2dd Deduplicate preview-streamed final replies (#82625)
Track the latest partial-preview reply text during reply-agent runs and suppress matching final text-only payloads so Telegram partial streaming does not resend already-previewed blocks when block streaming is disabled.

Keep the dedupe exact-match based to avoid dropping unrelated short finals, preserve errors, and keep unsent media while stripping duplicate caption text.
2026-05-16 21:24:34 -07:00
Josh Avant 39a9a3478f Fix heartbeat runner failure copy (#82848)
* fix: scope heartbeat runner failures

* chore: add heartbeat failure changelog
2026-05-16 22:23:22 -05:00
Vincent Koc 5911b5bf2d fix(qa-lab): stabilize mock qa-channel regressions 2026-05-17 08:50:31 +08:00
Josh Avant ad450a7dfb Fix Windows image model event loop stalls (#82799)
* fix media image model event loop stalls

* changelog for image event loop fix

* fix async auth test mock
2026-05-16 19:49:11 -05:00
JARVIS-Glasses 2c4287b6df fix(telegram): honor catch-all mentions for captionless media 2026-05-17 01:13:24 +01:00
Josh Avant 99a269f8b4 fix(agents): mark interrupted sessions before restart (#82772)
* fix(agents): mark interrupted sessions before restart

* docs: add restart recovery changelog

* fix(agents): satisfy restart recovery type checks
2026-05-16 18:11:35 -05:00
Peter Steinberger 0190f4ae1e fix: finish inbound event rebase (#82606) 2026-05-17 00:10:29 +01:00
Peter Steinberger 07f05e972e refactor: move inbound event classification into core 2026-05-17 00:10:29 +01:00
Peter Steinberger 6e2e63a983 fix: suppress equivalent OpenAI Codex fallback notices 2026-05-16 23:41:48 +01:00
Peter Steinberger c1c67306fd fix(openai): restore Codex xhigh thinking metadata (#82761) 2026-05-16 23:25:21 +01:00
Peter Steinberger fd8afc1dce refactor: unify async media generation
Summary:
- Refactor image/music/video generation onto the shared async media-generation scheduler and task lifecycle.
- Make session-backed image generation async with status, duplicate guarding, active-task prompt context, and message-tool completion delivery.
- Update docs/changelog and add /tasks coverage for image-generation task visibility.

Verification:
- Codex review: no accepted/actionable findings.
- pnpm test src/auto-reply/reply/commands-tasks.test.ts src/agents/tools/image-generate-tool.test.ts src/agents/tools/image-generate-background.test.ts src/agents/image-generation-task-status.test.ts -- --reporter=dot
- Previous focused media suite: 12 files / 169 tests passed.
- Crabbox aws check:changed run run_fbd1b62c7472 passed.
- Crabbox aws live openclaw infer run run_c17929e0e224 passed with OpenAI gpt-image-2.
- GitHub CI for rebased head 74d1cda6a6 completed with no non-success code gates.
2026-05-16 22:50:06 +01:00
Peter Steinberger 4b0f16d496 fix(agents): announce auto model fallback transitions (#82676)
* fix(agents): announce model fallback transitions

* docs(agents): explain model fallback notices

# Conflicts:
#	docs/concepts/model-failover.md

* fix(agents): use five minute fallback probe cadence

* fix(agents): keep fallback notices out of ACP transcripts
2026-05-16 21:56:31 +01:00
Peter Steinberger 6d844c5900 fix(webchat): trust ACP TTS media tails (#82701) (thanks @leno23) 2026-05-16 21:18:13 +01:00
wuyangfan 35e1c7ac41 fix(webchat): keep trustedLocalMedia internal to reply payloads
Restore Omit on public plugin-sdk ReplyPayload; set trustedLocalMedia via
runtime assertion in speech-core and explicitly on dispatch TTS-only finals.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-16 21:18:13 +01:00
wuyangfan eec18fccb4 fix(webchat): forward trustedLocalMedia on accumulated block TTS tail
Avoid per-block final-mode synthesis (duplicate with dispatch tail). Mark
TTS output as trusted local media and pass the flag through the TTS-only
final payload WebChat consumes after block streaming.

Fixes #82628

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-16 21:18:13 +01:00
Peter Steinberger c8782d18eb fix(agents): probe primary after auto fallback pin (#82707) 2026-05-16 20:03:09 +01:00
Peter Steinberger 575936473d fix(auto-reply): log suppressed message-tool-only finals (#82609)
* fix(auto-reply): fallback group finals when message tool is missed

* fix(auto-reply): log suppressed message-tool finals

* docs(auto-reply): clarify message-tool finals stay private

# Conflicts:
#	CHANGELOG.md

* docs(auto-reply): fix group visible reply examples
2026-05-16 16:30:07 +01:00
Kagura ffdc7aa7a6 fix(slack): route DM thread replies to main session instead of thread-scoped session (#82418)
* fix(slack): route DM thread replies to main session instead of thread-scoped session

DM thread replies (user replies inside a thread under a bot message in a
DM) were routed to a thread-specific session key instead of the user's
main DM session.  This caused the agent to never receive the inbound on
the expected session, making the bot appear unresponsive.

The root cause was in prepare-routing.ts: canonicalThreadId for
isDirectMessage was set to threadTs when isThreadReply was true, creating
a session key like agent:main:slack:direct:u3🧵<ts>.  DM threads
are a UI affordance — not a session boundary — so all DM messages should
route to the main DM session regardless of thread_ts.

Also adds a diagnostic logVerbose warning when assistant_app_thread
message_changed events fail sender resolution (Case 2 of #82390),
which was previously completely silent.

Fixes #82390

* chore(slack): polish DM thread routing PR

* test(slack): update DM thread routing contract

* test(slack): flatten non-main DM thread expectations

* fix(slack): preserve bound DM thread routes

* test(slack): align DM thread session fixtures

* fix(slack): keep flattened DM thread metadata scoped

* fix(slack): preserve DM thread delivery routes

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-16 16:24:36 +01:00
Gio Della-Libera 0eca3a92e3 fix(auto-reply): preserve session model display for heartbeat usage (#82267)
* Preserve session model display for heartbeat usage
* Refresh checks after proof update
* chore: refresh CI after main repairs
2026-05-16 08:09:49 -07:00
Gio Della-Libera f7b1148bed Strip inbound metadata from replayed user turns (#82614) 2026-05-16 07:45:56 -07:00
Peter Steinberger 9dedc4d95c fix: honor Codex auth order for OpenAI PI (#82605)
* fix: honor Codex auth order for OpenAI PI

* docs: add PR reference for OpenAI PI auth fix
2026-05-16 15:26:27 +01:00
Gio Della-Libera caf8fa2ebf Revert "Fix bundled channel dist-runtime setup roots" (#82612)
This reverts commit 1bd10cfee6.

Co-authored-by: Gio Della-Libera <giodl@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 07:07:39 -07:00
njuboy11 6a65ea8c3a fix: preserve post-compaction session token freshness (#82578)
Fixes #82576.

Keeps post-compaction token totals fresh across stale usage updates and adds regression coverage for the repeated auto-compaction loop. Also includes maintainer fixups needed to keep the touched CI lanes green: guarded GitHub Copilot device-flow fetches, dead-session metadata recreation, and current cron stale-data expectations.

Co-authored-by: njuboy11 <njuboy11@users.noreply.github.com>
2026-05-16 14:47:57 +01:00
Gio Della-Libera 1bd10cfee6 Fix bundled channel dist-runtime setup roots
* Fix bundled channel dist-runtime setup roots

Resolve bundled channel generated entries from dist-runtime before falling back to source paths, and select the dist-runtime plugin root as the boundary root for packaged setup modules. This keeps the fs-safe module open boundary check intact while preventing packaged bundled setup entries from being checked against the source extensions root.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Repair session store validation test fixtures

Update current-main tests that wrote persisted session entries without valid session IDs after session store loading started filtering invalid entries. Keep the fixture-only repair separate from the bundled channel loader fix.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Repair pairing and cron validation fixtures

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 06:05:34 -07:00
Frank Yang e6d04550ca fix(gateway): route WebChat images through imageModel
Route WebChat image attachments through the configured imageModel when the active session model cannot accept images, while keeping one-turn image auth and fallback state ephemeral.

Thanks @frankekn.
2026-05-16 20:12:02 +08:00
Vincent Koc 192caba631 fix(export): report malformed transcript rows (#82553) 2026-05-16 20:03:28 +08:00
Vincent Koc 7e4929e004 fix(sessions): validate replayed transcript rows 2026-05-16 18:29:30 +08:00
Peter Steinberger 6171b4254d fix(model-picker): show effective runtime choices 2026-05-16 10:34:49 +01:00
Josh Avant 23f73b3ecf Fix session reset files and ACPX orphan reaping (#82459)
* fix gateway reset transcript rotation

* fix acpx orphan adapter reaping

* add changelog for pr 82459

* fix ci session metadata normalization

* preserve canonical session ids in store reads

* fix session metadata id normalization
2026-05-16 02:43:30 -05:00
Gio Della-Libera dccf5f6842 fix(gateway): fire session:patch hooks for model changes (#82257)
* Fire session patch hooks for model changes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* chore: refresh CI after main repairs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-15 22:44:01 -07:00
Gio Della-Libera 8c9ec0724e fix(agents): honor disabled reasoning in thinking policy (#81454)
* fix(agents): honor disabled reasoning in thinking policy

* test: refresh thinking policy CI fixtures

* test: align thinking policy CI guardrails

---------

Co-authored-by: Gio Della-Libera <giodl@microsoft.com>
2026-05-15 22:33:43 -07:00
Josh Avant 1dac68c0bb fix fallback provenance across reloads (#82363) 2026-05-15 19:12:34 -05:00
Peter Steinberger 8d3b5c2d19 fix(auto-reply): abort active text stop runs 2026-05-16 01:00:52 +01:00
Peter Steinberger a87fcefe31 fix: repair release validation type and lint gates 2026-05-15 22:06:12 +01:00
Peter Steinberger 903e246e87 fix: satisfy room-event strict smoke types 2026-05-15 21:47:46 +01:00
Peter Steinberger 2e5a86adfe fix: finish room event gating 2026-05-15 21:47:46 +01:00
Peter Steinberger b9ffc0eda9 fix: cancel queued room event followups 2026-05-15 21:47:46 +01:00
Peter Steinberger 4b11d65ada fix: keep telegram room events fully quiet 2026-05-15 21:47:46 +01:00
Peter Steinberger 8c8241140e fix: keep room events quiet without breaking delivery fallback 2026-05-15 21:47:46 +01:00
Peter Steinberger ba8b4377f7 fix: keep explicit quiet replies suppressed 2026-05-15 21:47:46 +01:00
Peter Steinberger d4b98f0dc9 fix: gate ambient room event turns 2026-05-15 21:47:46 +01:00
Ayaan Zaidi 61f3a4d71d fix(telegram): keep room events quiet 2026-05-15 21:47:46 +01:00
Ayaan Zaidi 7ed4ad8d17 fix(reply): clarify room event turn context 2026-05-15 21:47:46 +01:00
Ayaan Zaidi 6f7897d8ad fix(channels): isolate inbound turn kind type 2026-05-15 21:47:46 +01:00