fix(mattermost): keep message tool replies in threads#93424
Conversation
Adversarial self-reviewReviewed by reading the full changed files in context and tracing both the runner send path ( Verified understandingThree coupled changes:
Well-targeted fix, correct root cause, comments updated, backward-compat for non-opt-in transports still covered by the existing Findings1. [Medium] The shared 2. [Low-Medium] 3. [Low] Canonicalization bypasses the MM DM ( 4. [Nit] Redundant guard at 5. [Nit] 6. [Nit] PR body's Bottom lineCorrect root-cause fix with good Mattermost coverage. Main thing to address before merge is #1 — the core/shared edit changes Slack's threading; add a Slack assertion or document/verify that path. #2-#3 are edge-correctness follow-ups; #4-#6 are cleanup. |
548030e to
7366592
Compare
7366592 to
28725ab
Compare
c209f40 to
532dbba
Compare
532dbba to
e75e1e6
Compare
|
land-ready verification:
This lands the scoped message-tool threading fix. #45082 remains open because its wider proactive-message behavior is only partially addressed here. |
* fix(mattermost): keep message tool replies in threads * fix(outbound): preserve one-root reply threading * fix(outbound): preserve explicit reply target precedence * fix(mattermost): mirror inherited replies to root session * test(outbound): align reply transport contract * fix(mattermost): align mirrored thread root --------- Co-authored-by: Alex Knight <[email protected]> Co-authored-by: Vincent Koc <[email protected]>
* fix(mattermost): keep message tool replies in threads * fix(outbound): preserve one-root reply threading * fix(outbound): preserve explicit reply target precedence * fix(mattermost): mirror inherited replies to root session * test(outbound): align reply transport contract * fix(mattermost): align mirrored thread root --------- Co-authored-by: Alex Knight <[email protected]> Co-authored-by: Vincent Koc <[email protected]>
* fix(mattermost): keep message tool replies in threads * fix(outbound): preserve one-root reply threading * fix(outbound): preserve explicit reply target precedence * fix(mattermost): mirror inherited replies to root session * test(outbound): align reply transport contract * fix(mattermost): align mirrored thread root --------- Co-authored-by: Alex Knight <[email protected]> Co-authored-by: Vincent Koc <[email protected]>
Summary
replyTonames a child post andthreadIdcarries the root.replyToMode: "first"consumption.Verification
node scripts/run-vitest.mjs extensions/mattermost/src/channel.test.ts extensions/mattermost/src/session-route.test.tsnode scripts/run-vitest.mjs src/infra/outbound/message-action-runner.threading.test.tsgit diff --check -- extensions/mattermost/src/channel.ts extensions/mattermost/src/channel.test.ts extensions/mattermost/src/session-route.ts extensions/mattermost/src/session-route.test.ts src/infra/outbound/message-action-threading.ts src/infra/outbound/message-action-runner.threading.test.ts.agents/skills/autoreview/scripts/autoreview --mode localtbx_01kv6n3vr04nnkjc1rs255kdhj, Actions run https://github.com/openclaw/openclaw/actions/runs/27579510410, rannode scripts/run-vitest.mjs extensions/mattermost/src/channel.test.ts extensions/mattermost/src/session-route.test.ts src/infra/outbound/message-action-runner.threading.test.tswith 75 tests passing.