test: clear acp prompt prefix broad matchers

This commit is contained in:
Peter Steinberger
2026-05-10 17:17:46 +01:00
parent 4c3eb03288
commit 46d9041646

View File

@@ -24,6 +24,15 @@ describe("acp prompt cwd prefix", () => {
return {};
});
function chatSendPayload(requestSpy: { mock: { calls: unknown[][] } }, index = 0) {
const call = requestSpy.mock.calls[index];
expect(call?.[0]).toBe("chat.send");
expect(call?.[2]).toEqual({ timeoutMs: null });
expect(typeof call?.[1]).toBe("object");
expect(call?.[1]).not.toBeNull();
return call?.[1] as Record<string, unknown>;
}
async function runPromptAndCaptureRequest(
options: {
cwd?: string;
@@ -78,79 +87,44 @@ describe("acp prompt cwd prefix", () => {
it("redacts home directory in prompt prefix", async () => {
const requestSpy = await runPromptWithCwd(path.join(os.homedir(), "openclaw-test"));
expect(requestSpy).toHaveBeenCalledWith(
"chat.send",
expect.objectContaining({
message: expect.stringMatching(/\[Working directory: ~[\\/]openclaw-test\]/),
}),
{ timeoutMs: null },
);
const payload = chatSendPayload(requestSpy);
expect(typeof payload.message).toBe("string");
expect(payload.message).toMatch(/\[Working directory: ~[\\/]openclaw-test\]/);
});
it("keeps backslash separators when cwd uses them", async () => {
const requestSpy = await runPromptWithCwd(`${os.homedir()}\\openclaw-test`);
expect(requestSpy).toHaveBeenCalledWith(
"chat.send",
expect.objectContaining({
message: expect.stringContaining("[Working directory: ~\\openclaw-test]"),
}),
{ timeoutMs: null },
);
const payload = chatSendPayload(requestSpy);
expect(payload.message).toContain("[Working directory: ~\\openclaw-test]");
});
it("injects system provenance metadata when enabled", async () => {
const requestSpy = await runPromptAndCaptureRequest({ provenanceMode: "meta" });
expect(requestSpy).toHaveBeenCalledWith(
"chat.send",
expect.objectContaining({
systemInputProvenance: {
kind: "external_user",
originSessionId: TEST_SESSION_ID,
sourceChannel: "acp",
sourceTool: "openclaw_acp",
},
systemProvenanceReceipt: undefined,
}),
{ timeoutMs: null },
);
const payload = chatSendPayload(requestSpy);
expect(payload.systemInputProvenance).toEqual({
kind: "external_user",
originSessionId: TEST_SESSION_ID,
sourceChannel: "acp",
sourceTool: "openclaw_acp",
});
expect(payload.systemProvenanceReceipt).toBeUndefined();
});
it("injects a system provenance receipt when requested", async () => {
const requestSpy = await runPromptAndCaptureRequest({ provenanceMode: "meta+receipt" });
expect(requestSpy).toHaveBeenCalledWith(
"chat.send",
expect.objectContaining({
systemInputProvenance: {
kind: "external_user",
originSessionId: TEST_SESSION_ID,
sourceChannel: "acp",
sourceTool: "openclaw_acp",
},
systemProvenanceReceipt: expect.stringContaining("[Source Receipt]"),
}),
{ timeoutMs: null },
);
expect(requestSpy).toHaveBeenCalledWith(
"chat.send",
expect.objectContaining({
systemProvenanceReceipt: expect.stringContaining("bridge=openclaw-acp"),
}),
{ timeoutMs: null },
);
expect(requestSpy).toHaveBeenCalledWith(
"chat.send",
expect.objectContaining({
systemProvenanceReceipt: expect.stringContaining(`originSessionId=${TEST_SESSION_ID}`),
}),
{ timeoutMs: null },
);
expect(requestSpy).toHaveBeenCalledWith(
"chat.send",
expect.objectContaining({
systemProvenanceReceipt: expect.stringContaining(`targetSession=${TEST_SESSION_KEY}`),
}),
{ timeoutMs: null },
);
const payload = chatSendPayload(requestSpy);
expect(payload.systemInputProvenance).toEqual({
kind: "external_user",
originSessionId: TEST_SESSION_ID,
sourceChannel: "acp",
sourceTool: "openclaw_acp",
});
expect(typeof payload.systemProvenanceReceipt).toBe("string");
const receipt = payload.systemProvenanceReceipt as string;
expect(receipt).toContain("[Source Receipt]");
expect(receipt).toContain("bridge=openclaw-acp");
expect(receipt).toContain(`originSessionId=${TEST_SESSION_ID}`);
expect(receipt).toContain(`targetSession=${TEST_SESSION_KEY}`);
});
it("retries without provenance when the gateway rejects admin-only provenance fields", async () => {
@@ -180,28 +154,17 @@ describe("acp prompt cwd prefix", () => {
await expect(agent.prompt(TEST_PROMPT)).rejects.toThrow("stop-after-send");
expect(requestSpy).toHaveBeenCalledTimes(2);
expect(requestSpy).toHaveBeenNthCalledWith(
1,
"chat.send",
expect.objectContaining({
systemInputProvenance: {
kind: "external_user",
originSessionId: TEST_SESSION_ID,
sourceChannel: "acp",
sourceTool: "openclaw_acp",
},
systemProvenanceReceipt: expect.stringContaining("[Source Receipt]"),
}),
{ timeoutMs: null },
);
expect(requestSpy).toHaveBeenNthCalledWith(
2,
"chat.send",
expect.not.objectContaining({
systemInputProvenance: expect.anything(),
systemProvenanceReceipt: expect.anything(),
}),
{ timeoutMs: null },
);
const firstPayload = chatSendPayload(requestSpy, 0);
expect(firstPayload.systemInputProvenance).toEqual({
kind: "external_user",
originSessionId: TEST_SESSION_ID,
sourceChannel: "acp",
sourceTool: "openclaw_acp",
});
expect(firstPayload.systemProvenanceReceipt).toContain("[Source Receipt]");
const retryPayload = chatSendPayload(requestSpy, 1);
expect(retryPayload.systemInputProvenance).toBeUndefined();
expect(retryPayload.systemProvenanceReceipt).toBeUndefined();
});
});