58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import { vi } from "vitest";
|
|
import { runEmbeddedPiAgent } from "../agents/pi-embedded.js";
|
|
import type { CliDeps } from "../cli/deps.js";
|
|
import { runCronIsolatedAgentTurn } from "./isolated-agent.js";
|
|
import { makeCfg, makeJob } from "./isolated-agent.test-harness.js";
|
|
|
|
export function createCliDeps(overrides: Partial<CliDeps> = {}): CliDeps {
|
|
return {
|
|
sendMessageSlack: vi.fn(),
|
|
sendMessageWhatsApp: vi.fn(),
|
|
sendMessageTelegram: vi.fn(),
|
|
sendMessageDiscord: vi.fn(),
|
|
sendMessageSignal: vi.fn(),
|
|
sendMessageIMessage: vi.fn(),
|
|
...overrides,
|
|
};
|
|
}
|
|
|
|
export function mockAgentPayloads(
|
|
payloads: Array<Record<string, unknown>>,
|
|
extra: Partial<Awaited<ReturnType<typeof runEmbeddedPiAgent>>> = {},
|
|
): void {
|
|
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
payloads,
|
|
meta: {
|
|
durationMs: 5,
|
|
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
},
|
|
...extra,
|
|
});
|
|
}
|
|
|
|
export async function runTelegramAnnounceTurn(params: {
|
|
home: string;
|
|
storePath: string;
|
|
deps: CliDeps;
|
|
delivery: {
|
|
mode: "announce";
|
|
channel: string;
|
|
to?: string;
|
|
bestEffort?: boolean;
|
|
};
|
|
}): Promise<Awaited<ReturnType<typeof runCronIsolatedAgentTurn>>> {
|
|
return runCronIsolatedAgentTurn({
|
|
cfg: makeCfg(params.home, params.storePath, {
|
|
channels: { telegram: { botToken: "t-1" } },
|
|
}),
|
|
deps: params.deps,
|
|
job: {
|
|
...makeJob({ kind: "agentTurn", message: "do it" }),
|
|
delivery: params.delivery,
|
|
},
|
|
message: "do it",
|
|
sessionKey: "cron:job-1",
|
|
lane: "cron",
|
|
});
|
|
}
|