mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 15:38:25 +00:00
fix: guard resolveUserPath against undefined input (#10176)
* fix: guard resolveUserPath against undefined input When subagent spawner omits workspaceDir, resolveUserPath receives undefined and crashes on .trim(). Add a falsy guard that falls back to process.cwd(), matching the behavior callers already expect. Closes #10089 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: harden runner workspace fallback (#10176) (thanks @Yida-Dev) * fix: harden workspace fallback scoping (#10176) (thanks @Yida-Dev) * refactor: centralize workspace fallback classification and redaction (#10176) (thanks @Yida-Dev) * test: remove explicit any from utils mock (#10176) (thanks @Yida-Dev) * security: reject malformed agent session keys for workspace resolution (#10176) (thanks @Yida-Dev) --------- Co-authored-by: Yida-Dev <reyifeijun@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Gustavo Madeira Santana <gumadeiras@gmail.com>
This commit is contained in:
25
src/routing/session-key.test.ts
Normal file
25
src/routing/session-key.test.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { classifySessionKeyShape } from "./session-key.js";
|
||||
|
||||
describe("classifySessionKeyShape", () => {
|
||||
it("classifies empty keys as missing", () => {
|
||||
expect(classifySessionKeyShape(undefined)).toBe("missing");
|
||||
expect(classifySessionKeyShape(" ")).toBe("missing");
|
||||
});
|
||||
|
||||
it("classifies valid agent keys", () => {
|
||||
expect(classifySessionKeyShape("agent:main:main")).toBe("agent");
|
||||
expect(classifySessionKeyShape("agent:research:subagent:worker")).toBe("agent");
|
||||
});
|
||||
|
||||
it("classifies malformed agent keys", () => {
|
||||
expect(classifySessionKeyShape("agent::broken")).toBe("malformed_agent");
|
||||
expect(classifySessionKeyShape("agent:main")).toBe("malformed_agent");
|
||||
});
|
||||
|
||||
it("treats non-agent legacy or alias keys as non-malformed", () => {
|
||||
expect(classifySessionKeyShape("main")).toBe("legacy_or_alias");
|
||||
expect(classifySessionKeyShape("custom-main")).toBe("legacy_or_alias");
|
||||
expect(classifySessionKeyShape("subagent:worker")).toBe("legacy_or_alias");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user