Wire mic through Whisper-compatible transcriptions on LLM_BASE_URL. Photos upload to MinIO and reach the vision model as base64 image_url parts.
29 lines
820 B
TypeScript
29 lines
820 B
TypeScript
import assert from "node:assert/strict";
|
|
import { describe, it } from "node:test";
|
|
import { clientChatInputSchema } from "../../src/modules/agent/messages";
|
|
|
|
describe("clientChatInputSchema", () => {
|
|
it("accepts messages with image attachments", () => {
|
|
const parsed = clientChatInputSchema.safeParse({
|
|
stream: true,
|
|
messages: [
|
|
{
|
|
role: "user",
|
|
content: "Add this appointment to the calendar",
|
|
attachments: [{ type: "image", url: "/api/uploads/assistant/house-1/photo.jpg" }],
|
|
},
|
|
],
|
|
});
|
|
|
|
assert.equal(parsed.success, true);
|
|
});
|
|
|
|
it("rejects empty message content", () => {
|
|
const parsed = clientChatInputSchema.safeParse({
|
|
messages: [{ role: "user", content: " " }],
|
|
});
|
|
|
|
assert.equal(parsed.success, false);
|
|
});
|
|
});
|