Fix config queue overrides for Matrix (#84104) · openclaw/openclaw@f07c874
clawsweeper
·
2026-05-19
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -12,6 +12,7 @@ Docs: https://docs.openclaw.ai
|
12 | 12 | |
13 | 13 | - Control UI: treat terminal session status as authoritative over stale active-run flags so completed terminal runs stop showing abort/live UI. (#84057) |
14 | 14 | - CLI: preserve embedded equals signs in inline root option values instead of truncating after the second separator. (#83995) Thanks @ThiagoCAltoe. |
| 15 | +- Matrix/config: accept `messages.queue.byChannel.matrix` queue overrides and keep queue provider schema/type keys aligned for Matrix, Google Chat, and Mattermost. Thanks @bdjben. |
15 | 16 | - Providers/Ollama: default unknown-capabilities models to tool-capable so discovered native Ollama models can use tools when `/api/show` omits capabilities. (#84055) Thanks @dutifulbob. |
16 | 17 | - Installer/Windows: launch `install.ps1` onboarding as an attached child process so fresh native Windows installs do not freeze visibly at `Starting setup...` or corrupt the wizard's terminal rendering. |
17 | 18 | - Memory/search: close local embedding providers when active-memory searches time out so pending local model loads and embedding contexts are aborted and released. (#83858) Thanks @brokemac79. |
|
| Original file line number | Diff line number | Diff line change |
|---|
|
1 | | -82d56352536e75291ec81540bd4d93e22aeae282e2ef864aa0f231b6deb11bba config-baseline.json |
2 | | -5d6aa4d0789482b1bdb6681d19fe193a8696ca25c20cbb9e07edb6d1b23ad8f2 config-baseline.core.json |
| 1 | +9e7c2b40f4ee8eaeda4bfce4ba9b403345aff83a0768a09de575e41303af5212 config-baseline.json |
| 2 | +40abd62ca070a191d196fc822b90ba9b29438bbce80c62ed23eb91e6078d0855 config-baseline.core.json |
3 | 3 | e068db276fdff1727939d4f3a8001376e550c444bdff3e3443ab26812e2f8c5d config-baseline.channel.json |
4 | 4 | a87fc4c9bc6499c5fb9d9343b8c1c4f0c3381a6afbdb0a676dc8ba9e03ff5755 config-baseline.plugin.json |
| Original file line number | Diff line number | Diff line change |
|---|
@@ -171,6 +171,65 @@ describe("config schema regressions", () => {
|
171 | 171 | |
172 | 172 | expect(res.ok).toBe(true); |
173 | 173 | }); |
| 174 | + |
| 175 | +it("accepts Matrix queue byChannel overrides", () => { |
| 176 | +const res = validateConfigObject({ |
| 177 | +messages: { |
| 178 | +queue: { |
| 179 | +byChannel: { |
| 180 | +matrix: "steer", |
| 181 | +}, |
| 182 | +}, |
| 183 | +}, |
| 184 | +}); |
| 185 | + |
| 186 | +expect(res.ok).toBe(true); |
| 187 | +}); |
| 188 | + |
| 189 | +it("accepts Matrix interrupt queue byChannel overrides", () => { |
| 190 | +const res = validateConfigObject({ |
| 191 | +messages: { |
| 192 | +queue: { |
| 193 | +byChannel: { |
| 194 | +matrix: "interrupt", |
| 195 | +}, |
| 196 | +}, |
| 197 | +}, |
| 198 | +}); |
| 199 | + |
| 200 | +expect(res.ok).toBe(true); |
| 201 | +}); |
| 202 | + |
| 203 | +it("keeps queue byChannel schema and config type providers aligned", () => { |
| 204 | +const res = validateConfigObject({ |
| 205 | +messages: { |
| 206 | +queue: { |
| 207 | +byChannel: { |
| 208 | +googlechat: "followup", |
| 209 | +mattermost: "collect", |
| 210 | +matrix: "steer", |
| 211 | +}, |
| 212 | +}, |
| 213 | +}, |
| 214 | +}); |
| 215 | + |
| 216 | +expect(res.ok).toBe(true); |
| 217 | +}); |
| 218 | + |
| 219 | +it("rejects unknown queue byChannel providers", () => { |
| 220 | +const res = validateConfigObject({ |
| 221 | +messages: { |
| 222 | +queue: { |
| 223 | +byChannel: { |
| 224 | +unknown: "steer", |
| 225 | +}, |
| 226 | +}, |
| 227 | +}, |
| 228 | +}); |
| 229 | + |
| 230 | +expect(res.ok).toBe(false); |
| 231 | +}); |
| 232 | + |
174 | 233 | it("accepts string values for agents defaults model inputs", () => { |
175 | 234 | const res = validateConfigObject({ |
176 | 235 | agents: { |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -701,6 +701,13 @@ describe("config schema", () => {
|
701 | 701 | expect(schema?.properties).toBeUndefined(); |
702 | 702 | }); |
703 | 703 | |
| 704 | +it("lists Matrix in messages.queue.byChannel schema lookup", () => { |
| 705 | +const lookup = lookupConfigSchema(baseSchema, "messages.queue.byChannel"); |
| 706 | +expect(lookup?.path).toBe("messages.queue.byChannel"); |
| 707 | +expect(lookup?.children.map((child) => child.key)).toEqual(expect.arrayContaining(["matrix"])); |
| 708 | +expect(lookup?.schema).toMatchObject({ additionalProperties: false }); |
| 709 | +}); |
| 710 | + |
704 | 711 | it("includes reload metadata when a resolver is provided", () => { |
705 | 712 | const lookup = lookupConfigSchema(baseSchema, "gateway", (path) => { |
706 | 713 | if (path === "gateway.channelHealthCheckMinutes") { |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -8,8 +8,10 @@ export type QueueModeByProvider = {
|
8 | 8 | irc?: QueueMode; |
9 | 9 | googlechat?: QueueMode; |
10 | 10 | slack?: QueueMode; |
| 11 | +mattermost?: QueueMode; |
11 | 12 | signal?: QueueMode; |
12 | 13 | imessage?: QueueMode; |
13 | 14 | msteams?: QueueMode; |
14 | 15 | webchat?: QueueMode; |
| 16 | +matrix?: QueueMode; |
15 | 17 | }; |
| Original file line number | Diff line number | Diff line change |
|---|
@@ -837,12 +837,14 @@ const QueueModeBySurfaceSchema = z
|
837 | 837 | telegram: QueueModeSchema.optional(), |
838 | 838 | discord: QueueModeSchema.optional(), |
839 | 839 | irc: QueueModeSchema.optional(), |
| 840 | +googlechat: QueueModeSchema.optional(), |
840 | 841 | slack: QueueModeSchema.optional(), |
841 | 842 | mattermost: QueueModeSchema.optional(), |
842 | 843 | signal: QueueModeSchema.optional(), |
843 | 844 | imessage: QueueModeSchema.optional(), |
844 | 845 | msteams: QueueModeSchema.optional(), |
845 | 846 | webchat: QueueModeSchema.optional(), |
| 847 | +matrix: QueueModeSchema.optional(), |
846 | 848 | }) |
847 | 849 | .strict() |
848 | 850 | .optional(); |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。