diff --git a/src/puter-js/src/modules/ai/ai.test.js b/src/puter-js/src/modules/ai/ai.test.js index e62cdc67f..97aae6f35 100644 --- a/src/puter-js/src/modules/ai/ai.test.js +++ b/src/puter-js/src/modules/ai/ai.test.js @@ -607,6 +607,11 @@ describe('ai.txt2img driver payloads', () => { expect(img.src).toBe('data:image/png;base64,QUJD'); expect(img.toString()).toBe('data:image/png;base64,QUJD'); }); + + it('txt2img rejects without a prompt', async () => { + await expect(ai.txt2img({})).rejects.toMatchObject({ code: 'prompt_required' }); + expect(FakeXHR.requests).toHaveLength(0); + }); }); describe('ai.txt2vid driver payloads', () => { diff --git a/src/puter-js/src/modules/ai/image.js b/src/puter-js/src/modules/ai/image.js index 4f0bc6081..3463c7437 100644 --- a/src/puter-js/src/modules/ai/image.js +++ b/src/puter-js/src/modules/ai/image.js @@ -58,6 +58,10 @@ export async function txt2img (promptOrOptions, optionsOrTestMode) { options = promptOrOptions; } + if ( ! options.prompt ) { + throw ({ message: 'Prompt parameter is required', code: 'prompt_required' }); + } + const driverHint = typeof options.driver === 'string' ? options.driver : undefined; const imageService = driverHint || 'ai-image';