66 lines
2.5 KiB
TypeScript
66 lines
2.5 KiB
TypeScript
import { beforeEach, describe, expect, it } from "vitest";
|
|
import "./test-helpers/fast-core-tools.js";
|
|
import {
|
|
getCallGatewayMock,
|
|
getSessionsSpawnTool,
|
|
resetSessionsSpawnConfigOverride,
|
|
setupSessionsSpawnGatewayMock,
|
|
} from "./openclaw-tools.subagents.sessions-spawn.test-harness.js";
|
|
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
|
import { SUBAGENT_SPAWN_ACCEPTED_NOTE } from "./subagent-spawn.js";
|
|
|
|
const callGatewayMock = getCallGatewayMock();
|
|
|
|
type SpawnResult = { status?: string; note?: string };
|
|
|
|
describe("sessions_spawn: cron isolated session note suppression", () => {
|
|
beforeEach(() => {
|
|
callGatewayMock.mockReset();
|
|
resetSubagentRegistryForTests();
|
|
resetSessionsSpawnConfigOverride();
|
|
});
|
|
|
|
it("suppresses ACCEPTED_NOTE for cron isolated sessions (mode=run)", async () => {
|
|
setupSessionsSpawnGatewayMock({});
|
|
const tool = await getSessionsSpawnTool({
|
|
agentSessionKey: "agent:main:cron:dd871818:run:cf959c9f",
|
|
});
|
|
const result = await tool.execute("call-cron-run", { task: "test task", mode: "run" });
|
|
const details = result.details as SpawnResult;
|
|
expect(details.note).toBeUndefined();
|
|
expect(details.status).toBe("accepted");
|
|
});
|
|
|
|
it("preserves ACCEPTED_NOTE for regular sessions (mode=run)", async () => {
|
|
setupSessionsSpawnGatewayMock({});
|
|
const tool = await getSessionsSpawnTool({
|
|
agentSessionKey: "agent:main:telegram:63448508",
|
|
});
|
|
const result = await tool.execute("call-regular-run", { task: "test task", mode: "run" });
|
|
const details = result.details as SpawnResult;
|
|
expect(details.note).toBe(SUBAGENT_SPAWN_ACCEPTED_NOTE);
|
|
expect(details.status).toBe("accepted");
|
|
});
|
|
|
|
it("does not suppress ACCEPTED_NOTE for non-canonical cron-like keys", async () => {
|
|
setupSessionsSpawnGatewayMock({});
|
|
const tool = await getSessionsSpawnTool({
|
|
agentSessionKey: "agent:main:slack:cron:job:run:uuid",
|
|
});
|
|
const result = await tool.execute("call-cron-like-noncanonical", {
|
|
task: "test task",
|
|
mode: "run",
|
|
});
|
|
expect((result.details as SpawnResult).note).toBe(SUBAGENT_SPAWN_ACCEPTED_NOTE);
|
|
});
|
|
|
|
it("does not suppress note when agentSessionKey is undefined", async () => {
|
|
setupSessionsSpawnGatewayMock({});
|
|
const tool = await getSessionsSpawnTool({
|
|
agentSessionKey: undefined,
|
|
});
|
|
const result = await tool.execute("call-no-key", { task: "test task", mode: "run" });
|
|
expect((result.details as SpawnResult).note).toBe(SUBAGENT_SPAWN_ACCEPTED_NOTE);
|
|
});
|
|
});
|