| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { describe, expect, test } from "bun:test"
- import { Schema } from "effect"
- import { ContentPart, LLMEvent, LLMRequest, ModelID, ModelLimits, ModelRef, ProviderID } from "../src/schema"
- const model = new ModelRef({
- id: ModelID.make("fake-model"),
- provider: ProviderID.make("fake-provider"),
- route: "openai-chat",
- baseURL: "https://fake.local",
- limits: new ModelLimits({}),
- })
- describe("llm schema", () => {
- test("decodes a minimal request", () => {
- const input: unknown = {
- id: "req_1",
- model,
- system: [{ type: "text", text: "You are terse." }],
- messages: [{ role: "user", content: [{ type: "text", text: "hi" }] }],
- tools: [],
- generation: {},
- }
- const decoded = Schema.decodeUnknownSync(LLMRequest)(input)
- expect(decoded.id).toBe("req_1")
- expect(decoded.messages[0]?.content[0]?.type).toBe("text")
- })
- test("accepts custom route ids", () => {
- const decoded = Schema.decodeUnknownSync(LLMRequest)({
- model: { ...model, route: "custom-route" },
- system: [],
- messages: [],
- tools: [],
- generation: {},
- })
- expect(decoded.model.route).toBe("custom-route")
- })
- test("rejects invalid event type", () => {
- expect(() => Schema.decodeUnknownSync(LLMEvent)({ type: "bogus" })).toThrow()
- })
- test("content part tagged union exposes guards", () => {
- expect(ContentPart.guards.text({ type: "text", text: "hi" })).toBe(true)
- expect(ContentPart.guards.media({ type: "text", text: "hi" })).toBe(false)
- })
- })
|