
























@@ -346,6 +346,40 @@ describe("createOpenClawCodingTools", () => {
346346expectListIncludes(options.pluginToolAllowlist, ["memory_search", "memory_get"]);
347347});
348348349+it("preserves runtime-allowed message through restrictive profiles", () => {
350+const tools = createOpenClawCodingTools({
351+config: { tools: { profile: "minimal" } },
352+runtimeToolAllowlist: ["message"],
353+toolConstructionPlan: {
354+includeBaseCodingTools: false,
355+includeShellTools: false,
356+includeChannelTools: false,
357+includeOpenClawTools: true,
358+includePluginTools: false,
359+},
360+});
361+362+expect(toolNameList(tools)).toContain("message");
363+});
364+365+it("preserves runtime allowlist groups containing message through restrictive profiles", () => {
366+for (const runtimeToolAllowlist of [["group:messaging"], ["group:openclaw"], ["*"]]) {
367+const tools = createOpenClawCodingTools({
368+config: { tools: { profile: "minimal" } },
369+ runtimeToolAllowlist,
370+toolConstructionPlan: {
371+includeBaseCodingTools: false,
372+includeShellTools: false,
373+includeChannelTools: false,
374+includeOpenClawTools: true,
375+includePluginTools: false,
376+},
377+});
378+379+expect(toolNameList(tools)).toContain("message");
380+}
381+});
382+349383it("passes source reply delivery mode to OpenClaw tool construction", () => {
350384const createOpenClawToolsMock = vi.mocked(createOpenClawTools);
351385createOpenClawToolsMock.mockClear();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。