





















@@ -216,6 +216,21 @@ async function runAuthorizedSmsCommand(body: string, cfg: ReturnType<typeof make
216216return await getReplyFromConfig(makeAuthorizedSmsCommandMessage(body), {}, cfg);
217217}
218218219+function firstMockCallArg(
220+mock: { mock: { calls: unknown[][] } },
221+label: string,
222+): Record<string, unknown> {
223+const call = mock.mock.calls[0];
224+if (!call) {
225+throw new Error(`expected ${label} call params`);
226+}
227+const arg = call[0];
228+if (!arg || typeof arg !== "object") {
229+throw new Error(`expected ${label} first argument`);
230+}
231+return arg as Record<string, unknown>;
232+}
233+219234async function expectNextRunUsesTargetSession(
220235params: {
221236cfg: ReturnType<typeof makeCfg>;
@@ -233,12 +248,7 @@ async function expectNextRunUsesTargetSession(
233248);
234249235250expect(params.runEmbeddedPiAgentMock).toHaveBeenCalledOnce();
236-const runParams = params.runEmbeddedPiAgentMock.mock.calls.at(0)?.[0] as
237-| Record<string, unknown>
238-| undefined;
239-if (!runParams) {
240-throw new Error("expected embedded PI agent call params");
241-}
251+const runParams = firstMockCallArg(params.runEmbeddedPiAgentMock, "embedded PI agent");
242252for (const [key, value] of Object.entries(expected)) {
243253expect(runParams[key]).toEqual(value);
244254}
@@ -473,7 +483,7 @@ describe("trigger handling", () => {
473483expect(text, testCase.label).not.toMatch(/Thinking level set/i);
474484expect(runEmbeddedPiAgentMock, testCase.label).toHaveBeenCalledOnce();
475485if (testCase.assertPrompt) {
476-const prompt = runEmbeddedPiAgentMock.mock.calls.at(0)?.[0]?.prompt ?? "";
486+const prompt = firstMockCallArg(runEmbeddedPiAgentMock, "embedded PI agent").prompt ?? "";
477487expect(prompt).toContain("Give me the status");
478488expect(prompt).not.toContain("/thinking high");
479489expect(prompt).not.toContain("/think high");
@@ -515,7 +525,7 @@ describe("trigger handling", () => {
515525testCase.setup(cfg);
516526await getReplyFromConfig(BASE_MESSAGE, { isHeartbeat: true }, cfg);
517527518-const call = runEmbeddedPiAgentMock.mock.calls.at(0)?.[0];
528+const call = firstMockCallArg(runEmbeddedPiAgentMock, "embedded PI agent");
519529expect(call?.provider).toBe(testCase.expected.provider);
520530expect(call?.model).toBe(testCase.expected.model);
521531}
@@ -573,9 +583,9 @@ describe("trigger handling", () => {
573583const text = maybeReplyText(res);
574584expect(text?.startsWith("⚙️ Compacted")).toBe(true);
575585expect(getCompactEmbeddedPiSessionMock()).toHaveBeenCalledOnce();
576-expect(getCompactEmbeddedPiSessionMock().mock.calls.at(0)?.[0]?.sessionFile).toContain(
577-join("agents", "worker1", "sessions"),
578-);
586+expect(
587+firstMockCallArg(getCompactEmbeddedPiSessionMock(), "embedded PI compaction").sessionFile,
588+).toContain(join("agents", "worker1", "sessions"));
579589});
580590});
581591此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。