fix(agents): cover default workspace fallback (#59858) (thanks @joelnishanth)

This commit is contained in:
Nimrod Gutman 2026-04-03 23:56:37 +03:00
parent 94e170763e
commit 9b667fc534
2 changed files with 4 additions and 3 deletions

View File

@ -88,6 +88,7 @@ Docs: https://docs.openclaw.ai
- Matrix/Telegram exec approvals: recover stored same-channel account bindings even when session reply state drifted to another channel, so foreign-channel approvals route to the bound account instead of fanning out or being rejected as ambiguous. (#60417) thanks @gumadeiras.
- Slack/app manifest: set `bot_user.always_online` to `true` in the onboarding and example Slack app manifest so the Slack app appears ready to respond.
- Gateway/websocket auth: refresh auth on new websocket connects after secrets reload so rotated gateway tokens take effect immediately without requiring a restart. (#60323) Thanks @mappel-nv.
- Agents/workspace: respect `agents.defaults.workspace` for non-default agents by resolving them under the configured base path instead of falling back to `workspace-<id>`. (#59858) Thanks @joelnishanth.
## 2026.4.2

View File

@ -444,15 +444,15 @@ describe("resolveAgentConfig", () => {
expect(workspace).toBe(path.resolve("/shared-ws/main"));
});
it("default agent uses agents.defaults.workspace directly", () => {
it("default agent without per-agent workspace uses agents.defaults.workspace directly", () => {
const cfg: OpenClawConfig = {
agents: {
defaults: { workspace: "/shared-ws" },
list: [{ id: "main" }, { id: "work", default: true, workspace: "/work-ws" }],
list: [{ id: "main" }, { id: "work", default: true }],
},
};
const workspace = resolveAgentWorkspaceDir(cfg, "work");
expect(workspace).toBe(path.resolve("/work-ws"));
expect(workspace).toBe(path.resolve("/shared-ws"));
});
it("non-default agent without defaults.workspace falls back to stateDir", () => {