Files
Alfred/tests/server/mocks/ai.ts

37 lines
1.2 KiB
TypeScript

import { mock } from "bun:test";
void mock.module("ai", () => ({
createAgentUIStreamResponse: (opts: {
agent: unknown;
messages: unknown[];
onFinish:
| ((event: { finishReason?: string; responseMessage: { parts?: Array<{ text: string; type: string }> } }) => void)
| undefined;
}) => {
if (opts.onFinish) {
opts.onFinish({
responseMessage: {
parts: [{ text: "test reply from AI", type: "text" }],
},
});
}
return Promise.resolve(
new Response(
'data: {"type":"start-step"}\n\ndata: {"type":"text-start","id":"txt-1"}\n\ndata: {"type":"text-delta","id":"txt-1","delta":"test reply from AI"}\n\ndata: {"type":"text-end","id":"txt-1"}\n\ndata: {"type":"finish-step"}\n\ndata: {"type":"finish"}\n\n',
{
headers: { "Content-Type": "text/event-stream" },
},
),
);
},
createProviderRegistry: () => ({
languageModel: () => ({}),
}),
generateText: () => Promise.resolve({ text: "AI\u603B\u7ED3\u6807\u9898", usage: {} }),
stepCountIs: () => () => true,
tool: () => ({ execute: async () => await Promise.resolve({}) }),
ToolLoopAgent: function M() {
// no-op: createAgentUIStreamResponse handles streaming
},
}));