diff --git a/packages/ai/src/methods/chrome-adapter.test.ts b/packages/ai/src/methods/chrome-adapter.test.ts index fbe7ec1a5c5..adb9ae47d87 100644 --- a/packages/ai/src/methods/chrome-adapter.test.ts +++ b/packages/ai/src/methods/chrome-adapter.test.ts @@ -109,6 +109,14 @@ describe('ChromeAdapter', () => { }); }); describe('isAvailable', () => { + it('returns false if mode is undefined', async () => { + const adapter = new ChromeAdapter(); + expect( + await adapter.isAvailable({ + contents: [] + }) + ).to.be.false; + }); it('returns false if mode is only cloud', async () => { const adapter = new ChromeAdapter(undefined, 'only_in_cloud'); expect( @@ -239,7 +247,10 @@ describe('ChromeAdapter', () => { const createStub = stub(languageModelProvider, 'create').returns( downloadPromise ); - const adapter = new ChromeAdapter(languageModelProvider); + const adapter = new ChromeAdapter( + languageModelProvider, + 'prefer_on_device' + ); await adapter.isAvailable({ contents: [{ role: 'user', parts: [{ text: 'hi' }] }] }); @@ -260,7 +271,10 @@ describe('ChromeAdapter', () => { const createStub = stub(languageModelProvider, 'create').returns( downloadPromise ); - const adapter = new ChromeAdapter(languageModelProvider); + const adapter = new ChromeAdapter( + languageModelProvider, + 'prefer_on_device' + ); await adapter.isAvailable({ contents: [{ role: 'user', parts: [{ text: 'hi' }] }] }); diff --git a/packages/ai/src/methods/chrome-adapter.ts b/packages/ai/src/methods/chrome-adapter.ts index d6de108668d..b61ad9b5f09 100644 --- a/packages/ai/src/methods/chrome-adapter.ts +++ b/packages/ai/src/methods/chrome-adapter.ts @@ -68,6 +68,12 @@ export class ChromeAdapter { * separation of concerns.

*/ async isAvailable(request: GenerateContentRequest): Promise { + if (!this.mode) { + logger.debug( + `On-device inference unavailable because mode is undefined.` + ); + return false; + } if (this.mode === 'only_in_cloud') { logger.debug( `On-device inference unavailable because mode is "only_in_cloud".`