diff --git a/apps/studio/pages/api/ai/sql/generate-v3.ts b/apps/studio/pages/api/ai/sql/generate-v3.ts index 2ba087c8968..9c71c7a7b3e 100644 --- a/apps/studio/pages/api/ai/sql/generate-v3.ts +++ b/apps/studio/pages/api/ai/sql/generate-v3.ts @@ -1,18 +1,15 @@ import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock' import { fromNodeProviderChain } from '@aws-sdk/credential-providers' -import pgMeta from '@supabase/pg-meta' import crypto from 'crypto' import { NextApiRequest, NextApiResponse } from 'next' import { z } from 'zod' import { streamText, tool, type Tool } from 'ai' -import { executeSql } from 'data/sql/execute-sql-query' import { AiOptInLevel } from 'hooks/misc/useOrgOptedIntoAi' import apiWrapper from 'lib/api/apiWrapper' import { createSupabaseMCPClient } from './supabase-mcp' export const maxDuration = 30 -const pgMetaSchemasList = pgMeta.schemas.list() const credentialProvider = fromNodeProviderChain() @@ -62,10 +59,9 @@ const wrapper = (req: NextApiRequest, res: NextApiResponse) => export default wrapper async function handlePost(req: NextApiRequest, res: NextApiResponse) { - const { messages, projectRef, connectionString, aiOptInLevel, schema, table } = req.body as { + const { messages, projectRef, aiOptInLevel, schema, table } = req.body as { messages: any[] // Use stronger types if available projectRef: string - connectionString?: string aiOptInLevel: AiOptInLevel schema?: string table?: string @@ -77,7 +73,6 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) { }) } - const cookie = req.headers.cookie const authorization = req.headers.authorization const accessToken = authorization?.replace('Bearer ', '') @@ -87,7 +82,6 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) { let mcpTools: Record> = {} let wrappedExecuteSqlTool: Tool | undefined = undefined - let schemasResult: any[] = [] try { const privacyMessage = @@ -195,24 +189,6 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) { ) } - // Only fetch schemas if not disabled - if (aiOptInLevel !== 'disabled') { - const { result: fetchedSchemas } = await executeSql( - { - projectRef, - connectionString, - sql: pgMetaSchemasList.sql, - }, - undefined, - { - 'Content-Type': 'application/json', - ...(cookie && { cookie }), - ...(authorization && { Authorization: authorization }), - } - ) - schemasResult = fetchedSchemas - } - const display_query = tool({ description: 'Displays SQL query results (table or chart) or renders SQL for write/DDL operations. Use this for all query display needs. Optionally references a previous execute_sql call via manualToolCallId for displaying SELECT results.', @@ -412,7 +388,6 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) { # General Instructions: - **Understand Context**: Attempt to use \`list_tables\`, \`list_extensions\` first. If they are not available or return a privacy/permission error, state this and proceed with caution, relying on the user's description and general knowledge. - - **Available Schemas**: ${aiOptInLevel !== 'disabled' ? JSON.stringify(schemasResult) : "'Schema information is not available due to current AI opt-in level.'"} - **Current Focus**: ${schema !== undefined ? `User is looking at schema: ${schema}.` : ''} ${table !== undefined ? `User is looking at table: ${table}.` : ''} ` @@ -430,7 +405,3 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) { return res.status(500).json({ message: error.message }) } } - -function isObject(value: unknown): value is Record { - return typeof value === 'object' && value !== null -}