diff --git a/apps/rowboat/app/lib/project_templates.ts b/apps/rowboat/app/lib/project_templates.ts index 62a89810..d35aa31d 100644 --- a/apps/rowboat/app/lib/project_templates.ts +++ b/apps/rowboat/app/lib/project_templates.ts @@ -3,13 +3,15 @@ import { z } from 'zod'; // Provide a minimal default template to satisfy legacy code paths that // still reference `templates.default`. Real templates are DB-backed. +const includeGeminiImageTool = !!process.env.GOOGLE_API_KEY; + const defaultTemplate: z.infer = { name: 'Blank Template', description: 'A blank canvas to build your assistant.', startAgent: "", agents: [], prompts: [], - tools: [ + tools: includeGeminiImageTool ? [ { name: "Generate Image", description: "Generate an image using Google Gemini given a text prompt. Returns base64-encoded image data and any text parts.", @@ -24,7 +26,7 @@ const defaultTemplate: z.infer = { additionalProperties: true, }, }, - ], + ] : [], pipelines: [], }; diff --git a/apps/rowboat/src/application/use-cases/projects/create-project.use-case.ts b/apps/rowboat/src/application/use-cases/projects/create-project.use-case.ts index 097fdbba..d5433cb7 100644 --- a/apps/rowboat/src/application/use-cases/projects/create-project.use-case.ts +++ b/apps/rowboat/src/application/use-cases/projects/create-project.use-case.ts @@ -95,9 +95,10 @@ export class CreateProjectUseCase implements ICreateProjectUseCase { } } - // Ensure the Gemini Image tool is always available by default + // Conditionally include Gemini Image tool by default if GOOGLE_API_KEY is present + const hasGoogleKey = !!process.env.GOOGLE_API_KEY; const hasImageTool = (workflow.tools || []).some(t => t.isGeminiImage || t.name === 'Generate Image'); - if (!hasImageTool) { + if (hasGoogleKey && !hasImageTool) { const imageTool = { name: 'Generate Image', description: 'Generate an image using Google Gemini given a text prompt. Returns base64-encoded image data and any text parts.',