mirror of
https://github.com/farcasclaudiu/openclaw.git
synced 2026-06-28 21:01:43 +03:00
perf(test): slim raw-body directive integration
This commit is contained in:
@@ -114,7 +114,7 @@ describe("RawBody directive parsing", () => {
|
|||||||
vi.clearAllMocks();
|
vi.clearAllMocks();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("handles directives, history, and non-default agent session files", async () => {
|
it("handles directives and history in the prompt", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
agentMocks.runEmbeddedPiAgent.mockResolvedValue({
|
agentMocks.runEmbeddedPiAgent.mockResolvedValue({
|
||||||
payloads: [{ text: "ok" }],
|
payloads: [{ text: "ok" }],
|
||||||
@@ -164,67 +164,6 @@ describe("RawBody directive parsing", () => {
|
|||||||
expect(prompt).toContain('"body": "hello"');
|
expect(prompt).toContain('"body": "hello"');
|
||||||
expect(prompt).toContain("status please");
|
expect(prompt).toContain("status please");
|
||||||
expect(prompt).not.toContain("/think:high");
|
expect(prompt).not.toContain("/think:high");
|
||||||
const agentId = "worker1";
|
|
||||||
const sessionId = "sess-worker-1";
|
|
||||||
const sessionKey = `agent:${agentId}:telegram:12345`;
|
|
||||||
const sessionsDir = path.join(home, ".openclaw", "agents", agentId, "sessions");
|
|
||||||
const sessionFile = path.join(sessionsDir, `${sessionId}.jsonl`);
|
|
||||||
const storePath = path.join(sessionsDir, "sessions.json");
|
|
||||||
await fs.mkdir(sessionsDir, { recursive: true });
|
|
||||||
await fs.writeFile(sessionFile, "", "utf-8");
|
|
||||||
await fs.writeFile(
|
|
||||||
storePath,
|
|
||||||
JSON.stringify(
|
|
||||||
{
|
|
||||||
[sessionKey]: {
|
|
||||||
sessionId,
|
|
||||||
sessionFile,
|
|
||||||
updatedAt: Date.now(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
null,
|
|
||||||
2,
|
|
||||||
),
|
|
||||||
"utf-8",
|
|
||||||
);
|
|
||||||
|
|
||||||
agentMocks.runEmbeddedPiAgent.mockReset();
|
|
||||||
agentMocks.runEmbeddedPiAgent.mockResolvedValue({
|
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 1,
|
|
||||||
agentMeta: { sessionId, provider: "anthropic", model: "claude-opus-4-5" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const resWorker = await getReplyFromConfig(
|
|
||||||
{
|
|
||||||
Body: "hello",
|
|
||||||
From: "telegram:12345",
|
|
||||||
To: "telegram:12345",
|
|
||||||
SessionKey: sessionKey,
|
|
||||||
Provider: "telegram",
|
|
||||||
Surface: "telegram",
|
|
||||||
CommandAuthorized: true,
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
{
|
|
||||||
agents: {
|
|
||||||
defaults: {
|
|
||||||
model: "anthropic/claude-opus-4-5",
|
|
||||||
workspace: path.join(home, "openclaw"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
const textWorker = Array.isArray(resWorker) ? resWorker[0]?.text : resWorker?.text;
|
|
||||||
expect(textWorker).toBe("ok");
|
|
||||||
expect(agentMocks.runEmbeddedPiAgent).toHaveBeenCalledOnce();
|
|
||||||
expect(
|
|
||||||
(agentMocks.runEmbeddedPiAgent.mock.calls[0]?.[0] as { sessionFile?: string } | undefined)
|
|
||||||
?.sessionFile,
|
|
||||||
).toBe(sessionFile);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -195,6 +195,47 @@ describe("initSessionState RawBody", () => {
|
|||||||
|
|
||||||
expect(result.triggerBodyNormalized).toBe("/status");
|
expect(result.triggerBodyNormalized).toBe("/status");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses the default per-agent sessions store when config store is unset", async () => {
|
||||||
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-session-store-default-"));
|
||||||
|
const stateDir = path.join(root, ".openclaw");
|
||||||
|
const agentId = "worker1";
|
||||||
|
const sessionKey = `agent:${agentId}:telegram:12345`;
|
||||||
|
const sessionId = "sess-worker-1";
|
||||||
|
const sessionFile = path.join(stateDir, "agents", agentId, "sessions", `${sessionId}.jsonl`);
|
||||||
|
const storePath = path.join(stateDir, "agents", agentId, "sessions", "sessions.json");
|
||||||
|
|
||||||
|
vi.stubEnv("OPENCLAW_STATE_DIR", stateDir);
|
||||||
|
try {
|
||||||
|
await fs.mkdir(path.dirname(storePath), { recursive: true });
|
||||||
|
await saveSessionStore(storePath, {
|
||||||
|
[sessionKey]: {
|
||||||
|
sessionId,
|
||||||
|
sessionFile,
|
||||||
|
updatedAt: Date.now(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const cfg = {} as OpenClawConfig;
|
||||||
|
const result = await initSessionState({
|
||||||
|
ctx: {
|
||||||
|
Body: "hello",
|
||||||
|
ChatType: "direct",
|
||||||
|
Provider: "telegram",
|
||||||
|
Surface: "telegram",
|
||||||
|
SessionKey: sessionKey,
|
||||||
|
},
|
||||||
|
cfg,
|
||||||
|
commandAuthorized: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.sessionEntry.sessionId).toBe(sessionId);
|
||||||
|
expect(result.sessionEntry.sessionFile).toBe(sessionFile);
|
||||||
|
expect(result.storePath).toBe(storePath);
|
||||||
|
} finally {
|
||||||
|
vi.unstubAllEnvs();
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("initSessionState reset policy", () => {
|
describe("initSessionState reset policy", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user