{"version":3,"sources":["../../../src/utils/openai-tool-wrapper.ts","../../../src/types.ts","../../../src/providers/openai/company.ts","../../../src/providers/openai/calendar.ts","../../../src/providers/openai/economic.ts","../../../src/providers/openai/etf.ts","../../../src/providers/openai/financial.ts","../../../src/providers/openai/insider.ts","../../../src/providers/openai/institutional.ts","../../../src/providers/openai/market.ts","../../../src/providers/openai/quote.ts","../../../src/providers/openai/senate-house.ts","../../../src/providers/openai/stock.ts","../../../src/providers/openai/index.ts"],"names":["z","symbolInputSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["import { z } from 'zod';\nimport { tool } from '@openai/agents';\n\nexport interface OpenAIToolConfig<T extends z.ZodType> {\n  name: string;\n  description: string;\n  inputSchema: T;\n  execute: (args: z.infer<T>) => Promise<string>;\n}\n\nexport function createOpenAITool<T extends z.ZodType>(config: OpenAIToolConfig<T>) {\n  const { name, description, inputSchema, execute } = config;\n\n  const properties: Record<string, any> = {};\n  const required: string[] = [];\n\n  // Extract properties from Zod schema using type guards\n  if (inputSchema instanceof z.ZodObject) {\n    const shape = inputSchema.shape;\n    Object.entries(shape).forEach(([key, schema]) => {\n      let isRequired = true;\n      let actualSchema: z.ZodType = schema as z.ZodType;\n      let fieldDescription = '';\n\n      // Extract description from the original schema\n      if (schema && typeof schema === 'object' && 'description' in schema) {\n        const desc = (schema as any).description;\n        if (typeof desc === 'string') {\n          fieldDescription = desc;\n        }\n      }\n\n      // Handle optional fields\n      if (schema instanceof z.ZodOptional) {\n        isRequired = false;\n        actualSchema = schema.unwrap();\n        // If no description was found on the optional wrapper, try the unwrapped schema\n        if (!fieldDescription && actualSchema.description) {\n          fieldDescription = actualSchema.description;\n        }\n      }\n\n      // Handle default values (they make fields optional)\n      if (schema instanceof z.ZodDefault) {\n        isRequired = false;\n        actualSchema = schema.removeDefault();\n        // If no description was found on the default wrapper, try the unwrapped schema\n        if (!fieldDescription && actualSchema.description) {\n          fieldDescription = actualSchema.description;\n        }\n      }\n\n      // Map Zod types to OpenAI parameter types\n      if (actualSchema instanceof z.ZodString) {\n        properties[key] = {\n          type: 'string',\n          description: fieldDescription || `${key} parameter`,\n        };\n      } else if (actualSchema instanceof z.ZodEnum) {\n        properties[key] = {\n          type: 'string',\n          enum: actualSchema._def.values,\n          description: fieldDescription || `${key} parameter`,\n        };\n      } else if (actualSchema instanceof z.ZodNumber) {\n        properties[key] = {\n          type: 'number',\n          description: fieldDescription || `${key} parameter`,\n        };\n      } else if (actualSchema instanceof z.ZodBoolean) {\n        properties[key] = {\n          type: 'boolean',\n          description: fieldDescription || `${key} parameter`,\n        };\n      } else if (actualSchema instanceof z.ZodArray) {\n        properties[key] = {\n          type: 'array',\n          items: { type: 'string' }, // Default to string array, can be enhanced\n          description: fieldDescription || `${key} parameter`,\n        };\n      } else {\n        // Fallback for unknown types\n        properties[key] = {\n          type: 'string',\n          description: fieldDescription || `${key} parameter`,\n        };\n      }\n\n      if (isRequired) {\n        required.push(key);\n      }\n    });\n  }\n\n  return tool({\n    name,\n    description,\n    parameters: {\n      type: 'object',\n      properties,\n      required,\n      additionalProperties: false,\n    },\n    strict: false,\n    execute: async (input: unknown) => {\n      try {\n        const validatedInput = inputSchema.parse(input);\n        return await execute(validatedInput);\n      } catch (error) {\n        if (error instanceof z.ZodError) {\n          return `Invalid input: ${error.errors.map(e => e.message).join(', ')}`;\n        }\n        return `Error executing ${name}: ${error instanceof Error ? error.message : String(error)}`;\n      }\n    },\n  } as any);\n}\n","/**\n * Tool interface that matches the ai library's expected format\n * This is what the ai library produces when using their tool() function\n */\nexport interface Tool {\n  type: 'function';\n  function: {\n    name: string;\n    description: string;\n    parameters: {\n      type: 'object';\n      properties: Record<string, any>;\n      required: string[];\n    };\n  };\n  execute: (args: any) => Promise<string>;\n}\n\n/**\n * Internal FMP API client instance\n * Used internally by the tools, not exported publicly\n */\nimport { FMP } from 'fmp-node-api';\n\n// Create a function to get the FMP client instance (internal use only)\nexport function getFMPClient() {\n  return new FMP();\n}\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\nexport const getCompanyProfile = createOpenAITool({\n  name: 'getCompanyProfile',\n  description: 'Get the company profile for a company',\n  inputSchema: z.object({\n    symbol: z\n      .string()\n      .min(1, 'Stock symbol is required')\n      .describe('The stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n  }),\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const companyProfile = await fmp.company.getCompanyProfile(symbol);\n    return JSON.stringify(companyProfile.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Common input schema for calendar date range\nconst calendarInputSchema = z.object({\n  from: z.string().optional().describe('Start date in YYYY-MM-DD format (optional)'),\n  to: z.string().optional().describe('End date in YYYY-MM-DD format (optional)'),\n});\n\nexport const getEarningsCalendar = createOpenAITool({\n  name: 'getEarningsCalendar',\n  description: 'Get earnings calendar showing upcoming and recent earnings announcements',\n  inputSchema: calendarInputSchema,\n  execute: async ({ from, to }) => {\n    const fmp = getFMPClient();\n    const earningsCalendar = await fmp.calendar.getEarningsCalendar({ from, to });\n    return JSON.stringify(earningsCalendar.data, null, 2);\n  },\n});\n\nexport const getEconomicCalendar = createOpenAITool({\n  name: 'getEconomicCalendar',\n  description: 'Get economic calendar showing upcoming and recent economic events and indicators',\n  inputSchema: calendarInputSchema,\n  execute: async ({ from, to }) => {\n    const fmp = getFMPClient();\n    const economicCalendar = await fmp.calendar.getEconomicsCalendar({ from, to });\n    return JSON.stringify(economicCalendar.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Input schema for treasury rates with date range\nconst treasuryRatesInputSchema = z.object({\n  from: z.string().optional().describe('Start date in YYYY-MM-DD format (optional)'),\n  to: z.string().optional().describe('End date in YYYY-MM-DD format (optional)'),\n});\n\n// Economic indicators enum and schema\nconst economicIndicatorNames = [\n  'GDP',\n  'realGDP',\n  'nominalPotentialGDP',\n  'realGDPPerCapita',\n  'federalFunds',\n  'CPI',\n  'inflationRate',\n  'inflation',\n  'retailSales',\n  'consumerSentiment',\n  'durableGoods',\n  'unemploymentRate',\n  'totalNonfarmPayroll',\n  'initialClaims',\n  'industrialProductionTotalIndex',\n  'newPrivatelyOwnedHousingUnitsStartedTotalUnits',\n  'totalVehicleSales',\n  'retailMoneyFunds',\n  'smoothedUSRecessionProbabilities',\n  '3MonthOr90DayRatesAndYieldsCertificatesOfDeposit',\n  'commercialBankInterestRateOnCreditCardPlansAllAccounts',\n  '30YearFixedRateMortgageAverage',\n  '15YearFixedRateMortgageAverage',\n] as const;\n\nconst economicIndicatorsInputSchema = z.object({\n  name: z.enum(economicIndicatorNames).describe('The name of the economic indicator'),\n  from: z.string().optional().describe('Start date in YYYY-MM-DD format (optional)'),\n  to: z.string().optional().describe('End date in YYYY-MM-DD format (optional)'),\n});\n\nexport const getTreasuryRates = createOpenAITool({\n  name: 'getTreasuryRates',\n  description: 'Get treasury rates for different maturities over time',\n  inputSchema: treasuryRatesInputSchema,\n  execute: async ({ from, to }) => {\n    const fmp = getFMPClient();\n    const treasuryRates = await fmp.economic.getTreasuryRates({ from, to });\n    return JSON.stringify(treasuryRates.data, null, 2);\n  },\n});\n\nexport const getEconomicIndicators = createOpenAITool({\n  name: 'getEconomicIndicators',\n  description: 'Get economic indicators like GDP, unemployment rate, inflation, etc.',\n  inputSchema: economicIndicatorsInputSchema,\n  execute: async ({ name, from, to }) => {\n    const fmp = getFMPClient();\n    const economicIndicators = await fmp.economic.getEconomicIndicators({ name, from, to });\n    return JSON.stringify(economicIndicators.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Input schema for ETF holdings with optional date\nconst etfHoldingsInputSchema = z.object({\n  symbol: z.string().min(1, 'ETF symbol is required').describe('ETF symbol (e.g., SPY, QQQ, VTI)'),\n  date: z.string().optional().describe('Date for holdings in YYYY-MM-DD format (optional)'),\n});\n\n// Input schema for ETF profile\nconst etfProfileInputSchema = z.object({\n  symbol: z.string().min(1, 'ETF symbol is required').describe('ETF symbol (e.g., SPY, QQQ, VTI)'),\n});\n\nexport const getETFHoldings = createOpenAITool({\n  name: 'getETFHoldings',\n  description:\n    'Get ETF holdings for a specific ETF symbol, showing the underlying assets and their weights',\n  inputSchema: etfHoldingsInputSchema,\n  execute: async ({ symbol, date }) => {\n    const fmp = getFMPClient();\n    const params: any = { symbol };\n    if (date) {\n      params.date = date;\n    }\n\n    const etfHoldings = await fmp.etf.getHoldings(params);\n    return JSON.stringify(etfHoldings.data, null, 2);\n  },\n});\n\nexport const getETFProfile = createOpenAITool({\n  name: 'getETFProfile',\n  description: 'Get ETF profile information including fund details, expense ratio, and key metrics',\n  inputSchema: etfProfileInputSchema,\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const etfProfile = await fmp.etf.getProfile(symbol);\n    return JSON.stringify(etfProfile.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Common input schema for financial statements with symbol and period\nconst financialStatementInputSchema = z.object({\n  symbol: z\n    .string()\n    .min(1, 'Stock symbol is required')\n    .describe('The stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n  period: z\n    .enum(['annual', 'quarter'])\n    .default('annual')\n    .describe('The period type (annual or quarter)'),\n});\n\nexport const getBalanceSheet = createOpenAITool({\n  name: 'getBalanceSheet',\n  description: 'Get balance sheet for a company showing assets, liabilities, and equity',\n  inputSchema: financialStatementInputSchema,\n  execute: async ({ symbol, period }) => {\n    const fmp = getFMPClient();\n    const balanceSheet = await fmp.financial.getBalanceSheet({ symbol, period });\n    return JSON.stringify(balanceSheet.data, null, 2);\n  },\n});\n\nexport const getIncomeStatement = createOpenAITool({\n  name: 'getIncomeStatement',\n  description: 'Get income statement for a company showing revenue, expenses, and profit',\n  inputSchema: financialStatementInputSchema,\n  execute: async ({ symbol, period }) => {\n    const fmp = getFMPClient();\n    const incomeStatement = await fmp.financial.getIncomeStatement({ symbol, period });\n    return JSON.stringify(incomeStatement.data, null, 2);\n  },\n});\n\nexport const getCashFlowStatement = createOpenAITool({\n  name: 'getCashFlowStatement',\n  description:\n    'Get cash flow statement for a company showing operating, investing, and financing cash flows',\n  inputSchema: financialStatementInputSchema,\n  execute: async ({ symbol, period }) => {\n    const fmp = getFMPClient();\n    const cashFlowStatement = await fmp.financial.getCashFlowStatement({ symbol, period });\n    return JSON.stringify(cashFlowStatement.data, null, 2);\n  },\n});\n\nexport const getFinancialRatios = createOpenAITool({\n  name: 'getFinancialRatios',\n  description:\n    'Get financial ratios for a company including profitability, liquidity, and efficiency metrics',\n  inputSchema: financialStatementInputSchema,\n  execute: async ({ symbol, period }) => {\n    const fmp = getFMPClient();\n    const financialRatios = await fmp.financial.getFinancialRatios({ symbol, period });\n    return JSON.stringify(financialRatios.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Input schema for insider trading with symbol and optional page\nconst insiderTradingInputSchema = z.object({\n  symbol: z\n    .string()\n    .min(1, 'Stock symbol is required')\n    .describe('Stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n  page: z\n    .number()\n    .int()\n    .min(0)\n    .default(0)\n    .describe('Page number for pagination (optional, defaults to 0)'),\n});\n\nexport const getInsiderTrading = createOpenAITool({\n  name: 'getInsiderTrading',\n  description:\n    'Get insider trading data for a specific stock symbol showing buy/sell transactions by company insiders',\n  inputSchema: insiderTradingInputSchema,\n  execute: async ({ symbol, page }) => {\n    const fmp = getFMPClient();\n    const insiderTrading = await fmp.insider.getInsiderTradesBySymbol(symbol, page);\n    return JSON.stringify(insiderTrading.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Input schema for institutional holders with symbol\nconst institutionalHoldersInputSchema = z.object({\n  symbol: z\n    .string()\n    .min(1, 'Stock symbol is required')\n    .describe('Stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n});\n\nexport const getInstitutionalHolders = createOpenAITool({\n  name: 'getInstitutionalHolders',\n  description:\n    'Get institutional holders for a specific stock symbol showing which institutions own shares and their holdings',\n  inputSchema: institutionalHoldersInputSchema,\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const institutionalHolders = await fmp.institutional.getInstitutionalHolders({ symbol });\n\n    // Return formatted JSON string\n    return JSON.stringify(institutionalHolders.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Empty schema for tools that don't require parameters\nconst emptyInputSchema = z.object({});\n\nexport const getMarketPerformance = createOpenAITool({\n  name: 'getMarketPerformance',\n  description: 'Get overall market performance data including major indices performance',\n  inputSchema: emptyInputSchema,\n  execute: async () => {\n    const fmp = getFMPClient();\n    const marketPerformance = await fmp.market.getMarketPerformance();\n    return JSON.stringify(marketPerformance.data, null, 2);\n  },\n});\n\nexport const getSectorPerformance = createOpenAITool({\n  name: 'getSectorPerformance',\n  description: 'Get sector performance data showing how different market sectors are performing',\n  inputSchema: emptyInputSchema,\n  execute: async () => {\n    const fmp = getFMPClient();\n    const sectorPerformance = await fmp.market.getSectorPerformance();\n    return JSON.stringify(sectorPerformance.data, null, 2);\n  },\n});\n\nexport const getGainers = createOpenAITool({\n  name: 'getGainers',\n  description: 'Get top gaining stocks showing the best performing stocks of the day',\n  inputSchema: emptyInputSchema,\n  execute: async () => {\n    const fmp = getFMPClient();\n    const gainers = await fmp.market.getGainers();\n    return JSON.stringify(gainers.data, null, 2);\n  },\n});\n\nexport const getLosers = createOpenAITool({\n  name: 'getLosers',\n  description: 'Get top losing stocks showing the worst performing stocks of the day',\n  inputSchema: emptyInputSchema,\n  execute: async () => {\n    const fmp = getFMPClient();\n    const losers = await fmp.market.getLosers();\n    return JSON.stringify(losers.data, null, 2);\n  },\n});\n\nexport const getMostActive = createOpenAITool({\n  name: 'getMostActive',\n  description: 'Get most active stocks showing stocks with the highest trading volume',\n  inputSchema: emptyInputSchema,\n  execute: async () => {\n    const fmp = getFMPClient();\n    const mostActive = await fmp.market.getMostActive();\n    return JSON.stringify(mostActive.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Input schema for stock quote with symbol\nconst stockQuoteInputSchema = z.object({\n  symbol: z\n    .string()\n    .min(1, 'Stock symbol is required')\n    .describe('The symbol of the company to get the stock quote for'),\n});\n\nexport const getStockQuote = createOpenAITool({\n  name: 'getStockQuote',\n  description:\n    'Get the real-time stock quote for a company including price, volume, and market data',\n  inputSchema: stockQuoteInputSchema,\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const stockQuote = await fmp.quote.getQuote(symbol);\n    return JSON.stringify(stockQuote.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Input schema for symbol-based trading data\nconst symbolInputSchema = z.object({\n  symbol: z\n    .string()\n    .min(1, 'Stock symbol is required')\n    .describe('Stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n});\n\n// Input schema for name-based trading data\nconst nameInputSchema = z.object({\n  name: z.string().min(1, 'Name is required').describe('The name of the senator or representative'),\n});\n\n// Input schema for RSS feed with pagination\nconst rssFeedInputSchema = z.object({\n  page: z\n    .number()\n    .int()\n    .min(0)\n    .default(0)\n    .describe('Page number for pagination (optional, defaults to 0)'),\n});\n\nexport const getSenateTrading = createOpenAITool({\n  name: 'getSenateTrading',\n  description: 'Get senate trading data for a specific stock symbol showing senator transactions',\n  inputSchema: symbolInputSchema,\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const senateTrading = await fmp.senateHouse.getSenateTrading({ symbol });\n    return JSON.stringify(senateTrading.data, null, 2);\n  },\n});\n\nexport const getHouseTrading = createOpenAITool({\n  name: 'getHouseTrading',\n  description:\n    'Get house trading data for a specific stock symbol showing representative transactions',\n  inputSchema: symbolInputSchema,\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const houseTrading = await fmp.senateHouse.getHouseTrading({ symbol });\n    return JSON.stringify(houseTrading.data, null, 2);\n  },\n});\n\nexport const getSenateTradingByName = createOpenAITool({\n  name: 'getSenateTradingByName',\n  description:\n    'Get senate trading data for a specific senator by name showing their trading activity',\n  inputSchema: nameInputSchema,\n  execute: async ({ name }) => {\n    const fmp = getFMPClient();\n    const senateTradingByName = await fmp.senateHouse.getSenateTradingByName({ name });\n    return JSON.stringify(senateTradingByName.data, null, 2);\n  },\n});\n\nexport const getHouseTradingByName = createOpenAITool({\n  name: 'getHouseTradingByName',\n  description:\n    'Get house trading data for a specific representative by name showing their trading activity',\n  inputSchema: nameInputSchema,\n  execute: async ({ name }) => {\n    const fmp = getFMPClient();\n    const houseTradingByName = await fmp.senateHouse.getHouseTradingByName({ name });\n    return JSON.stringify(houseTradingByName.data, null, 2);\n  },\n});\n\nexport const getSenateTradingRSSFeed = createOpenAITool({\n  name: 'getSenateTradingRSSFeed',\n  description:\n    'Get senate trading data through RSS feed with pagination showing recent senate transactions',\n  inputSchema: rssFeedInputSchema,\n  execute: async ({ page }) => {\n    const fmp = getFMPClient();\n    const senateTradingRSSFeed = await fmp.senateHouse.getSenateTradingRSSFeed({ page });\n    return JSON.stringify(senateTradingRSSFeed.data, null, 2);\n  },\n});\n\nexport const getHouseTradingRSSFeed = createOpenAITool({\n  name: 'getHouseTradingRSSFeed',\n  description:\n    'Get house trading data through RSS feed with pagination showing recent house transactions',\n  inputSchema: rssFeedInputSchema,\n  execute: async ({ page }) => {\n    const fmp = getFMPClient();\n    const houseTradingRSSFeed = await fmp.senateHouse.getHouseTradingRSSFeed({ page });\n    return JSON.stringify(houseTradingRSSFeed.data, null, 2);\n  },\n});\n","import { z } from 'zod';\nimport { createOpenAITool } from '@/utils/openai-tool-wrapper';\nimport { getFMPClient } from '@/types';\n\n// Input schema for symbol-based stock operations\nconst symbolInputSchema = z.object({\n  symbol: z\n    .string()\n    .min(1, 'Stock symbol is required')\n    .describe('The stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n});\n\nexport const getMarketCap = createOpenAITool({\n  name: 'getMarketCap',\n  description: 'Get market capitalization for a company showing current market value',\n  inputSchema: symbolInputSchema,\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const marketCap = await fmp.stock.getMarketCap(symbol);\n    return JSON.stringify(marketCap.data, null, 2);\n  },\n});\n\nexport const getStockSplits = createOpenAITool({\n  name: 'getStockSplits',\n  description: 'Get stock splits history for a company showing all historical stock split events',\n  inputSchema: symbolInputSchema,\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const stockSplits = await fmp.stock.getStockSplits(symbol);\n    return JSON.stringify(stockSplits.data, null, 2);\n  },\n});\n\nexport const getDividendHistory = createOpenAITool({\n  name: 'getDividendHistory',\n  description: 'Get dividend history for a company showing all historical dividend payments',\n  inputSchema: symbolInputSchema,\n  execute: async ({ symbol }) => {\n    const fmp = getFMPClient();\n    const dividendHistory = await fmp.stock.getDividendHistory(symbol);\n    return JSON.stringify(dividendHistory.data, null, 2);\n  },\n});\n\nexport const stockTools = [getMarketCap, getStockSplits, getDividendHistory];\n","import type { Tool } from '@openai/agents';\nimport { getCompanyProfile } from './company';\nimport { getEarningsCalendar, getEconomicCalendar } from './calendar';\nimport { getTreasuryRates, getEconomicIndicators } from './economic';\nimport { getETFHoldings, getETFProfile } from './etf';\nimport {\n  getBalanceSheet,\n  getIncomeStatement,\n  getCashFlowStatement,\n  getFinancialRatios,\n} from './financial';\nimport { getInsiderTrading } from './insider';\nimport { getInstitutionalHolders } from './institutional';\nimport {\n  getMarketPerformance,\n  getSectorPerformance,\n  getGainers,\n  getLosers,\n  getMostActive,\n} from './market';\nimport { getStockQuote } from './quote';\nimport {\n  getSenateTrading,\n  getHouseTrading,\n  getSenateTradingByName,\n  getHouseTradingByName,\n  getSenateTradingRSSFeed,\n  getHouseTradingRSSFeed,\n} from './senate-house';\nimport { getMarketCap, getStockSplits, getDividendHistory } from './stock';\n\n// Export individual tools for OpenAI agents\nexport {\n  getCompanyProfile,\n  getEarningsCalendar,\n  getEconomicCalendar,\n  getTreasuryRates,\n  getEconomicIndicators,\n  getETFHoldings,\n  getETFProfile,\n  getBalanceSheet,\n  getIncomeStatement,\n  getCashFlowStatement,\n  getFinancialRatios,\n  getInsiderTrading,\n  getInstitutionalHolders,\n  getMarketPerformance,\n  getSectorPerformance,\n  getGainers,\n  getLosers,\n  getMostActive,\n  getStockQuote,\n  getSenateTrading,\n  getHouseTrading,\n  getSenateTradingByName,\n  getHouseTradingByName,\n  getSenateTradingRSSFeed,\n  getHouseTradingRSSFeed,\n  getMarketCap,\n  getStockSplits,\n  getDividendHistory,\n};\n\n// Export tool groups as arrays for OpenAI Agents\nexport const companyTools = [getCompanyProfile] as Tool[];\nexport const calendarTools = [getEarningsCalendar, getEconomicCalendar] as Tool[];\nexport const economicTools = [getTreasuryRates, getEconomicIndicators] as Tool[];\nexport const etfTools = [getETFHoldings, getETFProfile] as Tool[];\nexport const financialTools = [\n  getBalanceSheet,\n  getIncomeStatement,\n  getCashFlowStatement,\n  getFinancialRatios,\n] as Tool[];\nexport const insiderTools = [getInsiderTrading] as Tool[];\nexport const institutionalTools = [getInstitutionalHolders] as Tool[];\nexport const marketTools = [\n  getMarketPerformance,\n  getSectorPerformance,\n  getGainers,\n  getLosers,\n  getMostActive,\n] as Tool[];\nexport const quoteTools = [getStockQuote] as Tool[];\nexport const senateHouseTools = [\n  getSenateTrading,\n  getHouseTrading,\n  getSenateTradingByName,\n  getHouseTradingByName,\n  getSenateTradingRSSFeed,\n  getHouseTradingRSSFeed,\n] as Tool[];\nexport const stockTools = [getMarketCap, getStockSplits, getDividendHistory] as Tool[];\n\n// Combine all tools into a single array for convenience\nexport const fmpTools: Tool[] = [\n  getCompanyProfile,\n  getEarningsCalendar,\n  getEconomicCalendar,\n  getTreasuryRates,\n  getEconomicIndicators,\n  getETFHoldings,\n  getETFProfile,\n  getBalanceSheet,\n  getIncomeStatement,\n  getCashFlowStatement,\n  getFinancialRatios,\n  getInsiderTrading,\n  getInstitutionalHolders,\n  getMarketPerformance,\n  getSectorPerformance,\n  getGainers,\n  getLosers,\n  getMostActive,\n  getStockQuote,\n  getSenateTrading,\n  getHouseTrading,\n  getSenateTradingByName,\n  getHouseTradingByName,\n  getSenateTradingRSSFeed,\n  getHouseTradingRSSFeed,\n  getMarketCap,\n  getStockSplits,\n  getDividendHistory,\n];\n"]}