| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { ToolSet } from 'ai'
- import { IS_PLATFORM } from 'common'
- import { filterToolsByOptInLevel } from '../tool-filter'
- import { getFallbackTools } from './fallback-tools'
- import { getIncidentTools } from './incident-tools'
- import { getMcpTools } from './mcp-tools'
- import { getSchemaTools } from './schema-tools'
- import { getStudioTools } from './studio-tools'
- import { AiOptInLevel } from '@/hooks/misc/useOrgOptedIntoAi'
- export const getTools = async ({
- projectRef,
- connectionString,
- authorization,
- aiOptInLevel,
- accessToken,
- baseUrl,
- }: {
- projectRef: string
- connectionString: string
- authorization?: string
- aiOptInLevel: AiOptInLevel
- accessToken?: string
- baseUrl?: string
- }) => {
- // Always include studio tools
- let tools: ToolSet = getStudioTools({ projectRef, connectionString, authorization, aiOptInLevel })
- // If self-hosted, only add fallback tools
- if (!IS_PLATFORM) {
- tools = {
- ...tools,
- ...getFallbackTools({
- projectRef,
- connectionString,
- authorization,
- includeSchemaMetadata: aiOptInLevel !== 'disabled',
- }),
- }
- } else if (accessToken) {
- // If platform, fetch MCP and other platform specific tools
- const mcpTools = await getMcpTools({
- accessToken,
- projectRef,
- aiOptInLevel,
- })
- tools = {
- ...tools,
- ...mcpTools,
- ...getSchemaTools({
- projectRef,
- connectionString,
- authorization,
- }),
- ...(baseUrl ? getIncidentTools({ baseUrl }) : {}),
- }
- }
- // Filter all tools based on the (potentially modified) AI opt-in level
- const filteredTools: ToolSet = filterToolsByOptInLevel(tools, aiOptInLevel)
- return filteredTools
- }
|