fmp-ai-tools
Version:
AI tools for FMP Node API - compatible with Vercel AI SDK, Langchain, OpenAI, and more
1 lines • 43.9 kB
Source Map (JSON)
{"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":";;;;;AAUO,SAAS,iBAAsC,MAAA,EAA6B;AACjF,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,WAAA,EAAa,SAAQ,GAAI,MAAA;AAEpD,EAAA,MAAM,aAAkC,EAAC;AACzC,EAAA,MAAM,WAAqB,EAAC;AAG5B,EAAA,IAAI,WAAA,YAAuB,EAAE,SAAA,EAAW;AACtC,IAAA,MAAM,QAAQ,WAAA,CAAY,KAAA;AAC1B,IAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,MAAM,CAAA,KAAM;AAC/C,MAAA,IAAI,UAAA,GAAa,IAAA;AACjB,MAAA,IAAI,YAAA,GAA0B,MAAA;AAC9B,MAAA,IAAI,gBAAA,GAAmB,EAAA;AAGvB,MAAA,IAAI,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,IAAY,iBAAiB,MAAA,EAAQ;AACnE,QAAA,MAAM,OAAQ,MAAA,CAAe,WAAA;AAC7B,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,gBAAA,GAAmB,IAAA;AAAA;AACrB;AAIF,MAAA,IAAI,MAAA,YAAkB,EAAE,WAAA,EAAa;AACnC,QAAA,UAAA,GAAa,KAAA;AACb,QAAA,YAAA,GAAe,OAAO,MAAA,EAAO;AAE7B,QAAA,IAAI,CAAC,gBAAA,IAAoB,YAAA,CAAa,WAAA,EAAa;AACjD,UAAA,gBAAA,GAAmB,YAAA,CAAa,WAAA;AAAA;AAClC;AAIF,MAAA,IAAI,MAAA,YAAkB,EAAE,UAAA,EAAY;AAClC,QAAA,UAAA,GAAa,KAAA;AACb,QAAA,YAAA,GAAe,OAAO,aAAA,EAAc;AAEpC,QAAA,IAAI,CAAC,gBAAA,IAAoB,YAAA,CAAa,WAAA,EAAa;AACjD,UAAA,gBAAA,GAAmB,YAAA,CAAa,WAAA;AAAA;AAClC;AAIF,MAAA,IAAI,YAAA,YAAwB,EAAE,SAAA,EAAW;AACvC,QAAA,UAAA,CAAW,GAAG,CAAA,GAAI;AAAA,UAChB,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa,gBAAA,IAAoB,CAAA,EAAG,GAAG,CAAA,UAAA;AAAA,SACzC;AAAA,OACF,MAAA,IAAW,YAAA,YAAwB,CAAA,CAAE,OAAA,EAAS;AAC5C,QAAA,UAAA,CAAW,GAAG,CAAA,GAAI;AAAA,UAChB,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,aAAa,IAAA,CAAK,MAAA;AAAA,UACxB,WAAA,EAAa,gBAAA,IAAoB,CAAA,EAAG,GAAG,CAAA,UAAA;AAAA,SACzC;AAAA,OACF,MAAA,IAAW,YAAA,YAAwB,CAAA,CAAE,SAAA,EAAW;AAC9C,QAAA,UAAA,CAAW,GAAG,CAAA,GAAI;AAAA,UAChB,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa,gBAAA,IAAoB,CAAA,EAAG,GAAG,CAAA,UAAA;AAAA,SACzC;AAAA,OACF,MAAA,IAAW,YAAA,YAAwB,CAAA,CAAE,UAAA,EAAY;AAC/C,QAAA,UAAA,CAAW,GAAG,CAAA,GAAI;AAAA,UAChB,IAAA,EAAM,SAAA;AAAA,UACN,WAAA,EAAa,gBAAA,IAAoB,CAAA,EAAG,GAAG,CAAA,UAAA;AAAA,SACzC;AAAA,OACF,MAAA,IAAW,YAAA,YAAwB,CAAA,CAAE,QAAA,EAAU;AAC7C,QAAA,UAAA,CAAW,GAAG,CAAA,GAAI;AAAA,UAChB,IAAA,EAAM,OAAA;AAAA,UACN,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA;AAAA,UACxB,WAAA,EAAa,gBAAA,IAAoB,CAAA,EAAG,GAAG,CAAA,UAAA;AAAA,SACzC;AAAA,OACF,MAAO;AAEL,QAAA,UAAA,CAAW,GAAG,CAAA,GAAI;AAAA,UAChB,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa,gBAAA,IAAoB,CAAA,EAAG,GAAG,CAAA,UAAA;AAAA,SACzC;AAAA;AAGF,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,QAAA,CAAS,KAAK,GAAG,CAAA;AAAA;AACnB,KACD,CAAA;AAAA;AAGH,EAAA,OAAO,IAAA,CAAK;AAAA,IACV,IAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA,EAAY;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,UAAA;AAAA,MACA,QAAA;AAAA,MACA,oBAAA,EAAsB;AAAA,KACxB;AAAA,IACA,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EAAS,OAAO,KAAA,KAAmB;AACjC,MAAA,IAAI;AACF,QAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,KAAA,CAAM,KAAK,CAAA;AAC9C,QAAA,OAAO,MAAM,QAAQ,cAAc,CAAA;AAAA,eAC5B,KAAA,EAAO;AACd,QAAA,IAAI,KAAA,YAAiB,EAAE,QAAA,EAAU;AAC/B,UAAA,OAAO,CAAA,eAAA,EAAkB,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA;AAEtE,QAAA,OAAO,CAAA,gBAAA,EAAmB,IAAI,CAAA,EAAA,EAAK,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA;AAC3F;AACF,GACM,CAAA;AACV;AC3FO,SAAS,YAAA,GAAe;AAC7B,EAAA,OAAO,IAAI,GAAA,EAAI;AACjB;;;ACvBO,IAAM,oBAAoB,gBAAA,CAAiB;AAAA,EAChD,IAAA,EAAM,mBAAA;AAAA,EACN,WAAA,EAAa,uCAAA;AAAA,EACb,WAAA,EAAaA,EAAE,MAAA,CAAO;AAAA,IACpB,MAAA,EAAQA,EACL,MAAA,EAAO,CACP,IAAI,CAAA,EAAG,0BAA0B,CAAA,CACjC,QAAA,CAAS,4CAA4C;AAAA,GACzD,CAAA;AAAA,EACD,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,cAAA,GAAiB,MAAM,GAAA,CAAI,OAAA,CAAQ,kBAAkB,MAAM,CAAA;AACjE,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEtD,CAAC;ACbD,IAAM,mBAAA,GAAsBA,EAAE,MAAA,CAAO;AAAA,EACnC,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EACjF,IAAIA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C;AAC/E,CAAC,CAAA;AAEM,IAAM,sBAAsB,gBAAA,CAAiB;AAAA,EAClD,IAAA,EAAM,qBAAA;AAAA,EACN,WAAA,EAAa,0EAAA;AAAA,EACb,WAAA,EAAa,mBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,IAAG,KAAM;AAC/B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,gBAAA,GAAmB,MAAM,GAAA,CAAI,QAAA,CAAS,oBAAoB,EAAE,IAAA,EAAM,IAAI,CAAA;AAC5E,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAExD,CAAC;AAEM,IAAM,sBAAsB,gBAAA,CAAiB;AAAA,EAClD,IAAA,EAAM,qBAAA;AAAA,EACN,WAAA,EAAa,kFAAA;AAAA,EACb,WAAA,EAAa,mBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,IAAG,KAAM;AAC/B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,gBAAA,GAAmB,MAAM,GAAA,CAAI,QAAA,CAAS,qBAAqB,EAAE,IAAA,EAAM,IAAI,CAAA;AAC7E,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAExD,CAAC;ACzBD,IAAM,wBAAA,GAA2BA,EAAE,MAAA,CAAO;AAAA,EACxC,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EACjF,IAAIA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C;AAC/E,CAAC,CAAA;AAGD,IAAM,sBAAA,GAAyB;AAAA,EAC7B,KAAA;AAAA,EACA,SAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,eAAA;AAAA,EACA,gCAAA;AAAA,EACA,gDAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kCAAA;AAAA,EACA,kDAAA;AAAA,EACA,wDAAA;AAAA,EACA,gCAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,6BAAA,GAAgCA,EAAE,MAAA,CAAO;AAAA,EAC7C,MAAMA,CAAAA,CAAE,IAAA,CAAK,sBAAsB,CAAA,CAAE,SAAS,oCAAoC,CAAA;AAAA,EAClF,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C,CAAA;AAAA,EACjF,IAAIA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C;AAC/E,CAAC,CAAA;AAEM,IAAM,mBAAmB,gBAAA,CAAiB;AAAA,EAC/C,IAAA,EAAM,kBAAA;AAAA,EACN,WAAA,EAAa,uDAAA;AAAA,EACb,WAAA,EAAa,wBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,IAAG,KAAM;AAC/B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,aAAA,GAAgB,MAAM,GAAA,CAAI,QAAA,CAAS,iBAAiB,EAAE,IAAA,EAAM,IAAI,CAAA;AACtE,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,aAAA,CAAc,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAErD,CAAC;AAEM,IAAM,wBAAwB,gBAAA,CAAiB;AAAA,EACpD,IAAA,EAAM,uBAAA;AAAA,EACN,WAAA,EAAa,sEAAA;AAAA,EACb,WAAA,EAAa,6BAAA;AAAA,EACb,SAAS,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,IAAG,KAAM;AACrC,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,kBAAA,GAAqB,MAAM,GAAA,CAAI,QAAA,CAAS,sBAAsB,EAAE,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,CAAA;AACtF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,kBAAA,CAAmB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE1D,CAAC;AC1DD,IAAM,sBAAA,GAAyBA,EAAE,MAAA,CAAO;AAAA,EACtC,MAAA,EAAQA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,EAAG,wBAAwB,CAAA,CAAE,QAAA,CAAS,kCAAkC,CAAA;AAAA,EAC/F,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mDAAmD;AAC1F,CAAC,CAAA;AAGD,IAAM,qBAAA,GAAwBA,EAAE,MAAA,CAAO;AAAA,EACrC,MAAA,EAAQA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,EAAG,wBAAwB,CAAA,CAAE,QAAA,CAAS,kCAAkC;AACjG,CAAC,CAAA;AAEM,IAAM,iBAAiB,gBAAA,CAAiB;AAAA,EAC7C,IAAA,EAAM,gBAAA;AAAA,EACN,WAAA,EACE,6FAAA;AAAA,EACF,WAAA,EAAa,sBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,MAAK,KAAM;AACnC,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,MAAA,GAAc,EAAE,MAAA,EAAO;AAC7B,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAA,CAAO,IAAA,GAAO,IAAA;AAAA;AAGhB,IAAA,MAAM,WAAA,GAAc,MAAM,GAAA,CAAI,GAAA,CAAI,YAAY,MAAM,CAAA;AACpD,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,WAAA,CAAY,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEnD,CAAC;AAEM,IAAM,gBAAgB,gBAAA,CAAiB;AAAA,EAC5C,IAAA,EAAM,eAAA;AAAA,EACN,WAAA,EAAa,oFAAA;AAAA,EACb,WAAA,EAAa,qBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,UAAA,GAAa,MAAM,GAAA,CAAI,GAAA,CAAI,WAAW,MAAM,CAAA;AAClD,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAElD,CAAC;ACpCD,IAAM,6BAAA,GAAgCA,EAAE,MAAA,CAAO;AAAA,EAC7C,MAAA,EAAQA,EACL,MAAA,EAAO,CACP,IAAI,CAAA,EAAG,0BAA0B,CAAA,CACjC,QAAA,CAAS,4CAA4C,CAAA;AAAA,EACxD,MAAA,EAAQA,CAAAA,CACL,IAAA,CAAK,CAAC,QAAA,EAAU,SAAS,CAAC,CAAA,CAC1B,OAAA,CAAQ,QAAQ,CAAA,CAChB,QAAA,CAAS,qCAAqC;AACnD,CAAC,CAAA;AAEM,IAAM,kBAAkB,gBAAA,CAAiB;AAAA,EAC9C,IAAA,EAAM,iBAAA;AAAA,EACN,WAAA,EAAa,yEAAA;AAAA,EACb,WAAA,EAAa,6BAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,QAAO,KAAM;AACrC,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,YAAA,GAAe,MAAM,GAAA,CAAI,SAAA,CAAU,gBAAgB,EAAE,MAAA,EAAQ,QAAQ,CAAA;AAC3E,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,YAAA,CAAa,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEpD,CAAC;AAEM,IAAM,qBAAqB,gBAAA,CAAiB;AAAA,EACjD,IAAA,EAAM,oBAAA;AAAA,EACN,WAAA,EAAa,0EAAA;AAAA,EACb,WAAA,EAAa,6BAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,QAAO,KAAM;AACrC,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,eAAA,GAAkB,MAAM,GAAA,CAAI,SAAA,CAAU,mBAAmB,EAAE,MAAA,EAAQ,QAAQ,CAAA;AACjF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,eAAA,CAAgB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEvD,CAAC;AAEM,IAAM,uBAAuB,gBAAA,CAAiB;AAAA,EACnD,IAAA,EAAM,sBAAA;AAAA,EACN,WAAA,EACE,8FAAA;AAAA,EACF,WAAA,EAAa,6BAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,QAAO,KAAM;AACrC,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,iBAAA,GAAoB,MAAM,GAAA,CAAI,SAAA,CAAU,qBAAqB,EAAE,MAAA,EAAQ,QAAQ,CAAA;AACrF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,iBAAA,CAAkB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEzD,CAAC;AAEM,IAAM,qBAAqB,gBAAA,CAAiB;AAAA,EACjD,IAAA,EAAM,oBAAA;AAAA,EACN,WAAA,EACE,+FAAA;AAAA,EACF,WAAA,EAAa,6BAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,QAAO,KAAM;AACrC,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,eAAA,GAAkB,MAAM,GAAA,CAAI,SAAA,CAAU,mBAAmB,EAAE,MAAA,EAAQ,QAAQ,CAAA;AACjF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,eAAA,CAAgB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEvD,CAAC;ACvDD,IAAM,yBAAA,GAA4BA,EAAE,MAAA,CAAO;AAAA,EACzC,MAAA,EAAQA,EACL,MAAA,EAAO,CACP,IAAI,CAAA,EAAG,0BAA0B,CAAA,CACjC,QAAA,CAAS,wCAAwC,CAAA;AAAA,EACpD,IAAA,EAAMA,CAAAA,CACH,MAAA,EAAO,CACP,GAAA,EAAI,CACJ,GAAA,CAAI,CAAC,CAAA,CACL,OAAA,CAAQ,CAAC,CAAA,CACT,SAAS,sDAAsD;AACpE,CAAC,CAAA;AAEM,IAAM,oBAAoB,gBAAA,CAAiB;AAAA,EAChD,IAAA,EAAM,mBAAA;AAAA,EACN,WAAA,EACE,wGAAA;AAAA,EACF,WAAA,EAAa,yBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,MAAK,KAAM;AACnC,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,iBAAiB,MAAM,GAAA,CAAI,OAAA,CAAQ,wBAAA,CAAyB,QAAQ,IAAI,CAAA;AAC9E,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEtD,CAAC;ACvBD,IAAM,+BAAA,GAAkCA,EAAE,MAAA,CAAO;AAAA,EAC/C,MAAA,EAAQA,EACL,MAAA,EAAO,CACP,IAAI,CAAA,EAAG,0BAA0B,CAAA,CACjC,QAAA,CAAS,wCAAwC;AACtD,CAAC,CAAA;AAEM,IAAM,0BAA0B,gBAAA,CAAiB;AAAA,EACtD,IAAA,EAAM,yBAAA;AAAA,EACN,WAAA,EACE,gHAAA;AAAA,EACF,WAAA,EAAa,+BAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,uBAAuB,MAAM,GAAA,CAAI,cAAc,uBAAA,CAAwB,EAAE,QAAQ,CAAA;AAGvF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,oBAAA,CAAqB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE5D,CAAC;ACnBD,IAAM,gBAAA,GAAmBA,CAAAA,CAAE,MAAA,CAAO,EAAE,CAAA;AAE7B,IAAM,uBAAuB,gBAAA,CAAiB;AAAA,EACnD,IAAA,EAAM,sBAAA;AAAA,EACN,WAAA,EAAa,yEAAA;AAAA,EACb,WAAA,EAAa,gBAAA;AAAA,EACb,SAAS,YAAY;AACnB,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,iBAAA,GAAoB,MAAM,GAAA,CAAI,MAAA,CAAO,oBAAA,EAAqB;AAChE,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,iBAAA,CAAkB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEzD,CAAC;AAEM,IAAM,uBAAuB,gBAAA,CAAiB;AAAA,EACnD,IAAA,EAAM,sBAAA;AAAA,EACN,WAAA,EAAa,iFAAA;AAAA,EACb,WAAA,EAAa,gBAAA;AAAA,EACb,SAAS,YAAY;AACnB,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,iBAAA,GAAoB,MAAM,GAAA,CAAI,MAAA,CAAO,oBAAA,EAAqB;AAChE,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,iBAAA,CAAkB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEzD,CAAC;AAEM,IAAM,aAAa,gBAAA,CAAiB;AAAA,EACzC,IAAA,EAAM,YAAA;AAAA,EACN,WAAA,EAAa,sEAAA;AAAA,EACb,WAAA,EAAa,gBAAA;AAAA,EACb,SAAS,YAAY;AACnB,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,OAAA,GAAU,MAAM,GAAA,CAAI,MAAA,CAAO,UAAA,EAAW;AAC5C,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE/C,CAAC;AAEM,IAAM,YAAY,gBAAA,CAAiB;AAAA,EACxC,IAAA,EAAM,WAAA;AAAA,EACN,WAAA,EAAa,sEAAA;AAAA,EACb,WAAA,EAAa,gBAAA;AAAA,EACb,SAAS,YAAY;AACnB,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAA,CAAO,SAAA,EAAU;AAC1C,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE9C,CAAC;AAEM,IAAM,gBAAgB,gBAAA,CAAiB;AAAA,EAC5C,IAAA,EAAM,eAAA;AAAA,EACN,WAAA,EAAa,uEAAA;AAAA,EACb,WAAA,EAAa,gBAAA;AAAA,EACb,SAAS,YAAY;AACnB,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,UAAA,GAAa,MAAM,GAAA,CAAI,MAAA,CAAO,aAAA,EAAc;AAClD,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAElD,CAAC;ACvDD,IAAM,qBAAA,GAAwBA,EAAE,MAAA,CAAO;AAAA,EACrC,MAAA,EAAQA,EACL,MAAA,EAAO,CACP,IAAI,CAAA,EAAG,0BAA0B,CAAA,CACjC,QAAA,CAAS,sDAAsD;AACpE,CAAC,CAAA;AAEM,IAAM,gBAAgB,gBAAA,CAAiB;AAAA,EAC5C,IAAA,EAAM,eAAA;AAAA,EACN,WAAA,EACE,sFAAA;AAAA,EACF,WAAA,EAAa,qBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,UAAA,GAAa,MAAM,GAAA,CAAI,KAAA,CAAM,SAAS,MAAM,CAAA;AAClD,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAElD,CAAC;ACjBD,IAAM,iBAAA,GAAoBA,EAAE,MAAA,CAAO;AAAA,EACjC,MAAA,EAAQA,EACL,MAAA,EAAO,CACP,IAAI,CAAA,EAAG,0BAA0B,CAAA,CACjC,QAAA,CAAS,wCAAwC;AACtD,CAAC,CAAA;AAGD,IAAM,eAAA,GAAkBA,EAAE,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAA,EAAG,kBAAkB,CAAA,CAAE,QAAA,CAAS,2CAA2C;AAClG,CAAC,CAAA;AAGD,IAAM,kBAAA,GAAqBA,EAAE,MAAA,CAAO;AAAA,EAClC,IAAA,EAAMA,CAAAA,CACH,MAAA,EAAO,CACP,GAAA,EAAI,CACJ,GAAA,CAAI,CAAC,CAAA,CACL,OAAA,CAAQ,CAAC,CAAA,CACT,SAAS,sDAAsD;AACpE,CAAC,CAAA;AAEM,IAAM,mBAAmB,gBAAA,CAAiB;AAAA,EAC/C,IAAA,EAAM,kBAAA;AAAA,EACN,WAAA,EAAa,kFAAA;AAAA,EACb,WAAA,EAAa,iBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,gBAAgB,MAAM,GAAA,CAAI,YAAY,gBAAA,CAAiB,EAAE,QAAQ,CAAA;AACvE,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,aAAA,CAAc,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAErD,CAAC;AAEM,IAAM,kBAAkB,gBAAA,CAAiB;AAAA,EAC9C,IAAA,EAAM,iBAAA;AAAA,EACN,WAAA,EACE,wFAAA;AAAA,EACF,WAAA,EAAa,iBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,eAAe,MAAM,GAAA,CAAI,YAAY,eAAA,CAAgB,EAAE,QAAQ,CAAA;AACrE,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,YAAA,CAAa,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEpD,CAAC;AAEM,IAAM,yBAAyB,gBAAA,CAAiB;AAAA,EACrD,IAAA,EAAM,wBAAA;AAAA,EACN,WAAA,EACE,uFAAA;AAAA,EACF,WAAA,EAAa,eAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,IAAA,EAAK,KAAM;AAC3B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,sBAAsB,MAAM,GAAA,CAAI,YAAY,sBAAA,CAAuB,EAAE,MAAM,CAAA;AACjF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,mBAAA,CAAoB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE3D,CAAC;AAEM,IAAM,wBAAwB,gBAAA,CAAiB;AAAA,EACpD,IAAA,EAAM,uBAAA;AAAA,EACN,WAAA,EACE,6FAAA;AAAA,EACF,WAAA,EAAa,eAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,IAAA,EAAK,KAAM;AAC3B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,qBAAqB,MAAM,GAAA,CAAI,YAAY,qBAAA,CAAsB,EAAE,MAAM,CAAA;AAC/E,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,kBAAA,CAAmB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE1D,CAAC;AAEM,IAAM,0BAA0B,gBAAA,CAAiB;AAAA,EACtD,IAAA,EAAM,yBAAA;AAAA,EACN,WAAA,EACE,6FAAA;AAAA,EACF,WAAA,EAAa,kBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,IAAA,EAAK,KAAM;AAC3B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,uBAAuB,MAAM,GAAA,CAAI,YAAY,uBAAA,CAAwB,EAAE,MAAM,CAAA;AACnF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,oBAAA,CAAqB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE5D,CAAC;AAEM,IAAM,yBAAyB,gBAAA,CAAiB;AAAA,EACrD,IAAA,EAAM,wBAAA;AAAA,EACN,WAAA,EACE,2FAAA;AAAA,EACF,WAAA,EAAa,kBAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,IAAA,EAAK,KAAM;AAC3B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,sBAAsB,MAAM,GAAA,CAAI,YAAY,sBAAA,CAAuB,EAAE,MAAM,CAAA;AACjF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,mBAAA,CAAoB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE3D,CAAC;AC3FD,IAAMC,kBAAAA,GAAoBD,EAAE,MAAA,CAAO;AAAA,EACjC,MAAA,EAAQA,EACL,MAAA,EAAO,CACP,IAAI,CAAA,EAAG,0BAA0B,CAAA,CACjC,QAAA,CAAS,4CAA4C;AAC1D,CAAC,CAAA;AAEM,IAAM,eAAe,gBAAA,CAAiB;AAAA,EAC3C,IAAA,EAAM,cAAA;AAAA,EACN,WAAA,EAAa,sEAAA;AAAA,EACb,WAAA,EAAaC,kBAAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,SAAA,GAAY,MAAM,GAAA,CAAI,KAAA,CAAM,aAAa,MAAM,CAAA;AACrD,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,SAAA,CAAU,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEjD,CAAC;AAEM,IAAM,iBAAiB,gBAAA,CAAiB;AAAA,EAC7C,IAAA,EAAM,gBAAA;AAAA,EACN,WAAA,EAAa,kFAAA;AAAA,EACb,WAAA,EAAaA,kBAAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,WAAA,GAAc,MAAM,GAAA,CAAI,KAAA,CAAM,eAAe,MAAM,CAAA;AACzD,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,WAAA,CAAY,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEnD,CAAC;AAEM,IAAM,qBAAqB,gBAAA,CAAiB;AAAA,EACjD,IAAA,EAAM,oBAAA;AAAA,EACN,WAAA,EAAa,6EAAA;AAAA,EACb,WAAA,EAAaA,kBAAAA;AAAA,EACb,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,MAAM,MAAM,YAAA,EAAa;AACzB,IAAA,MAAM,eAAA,GAAkB,MAAM,GAAA,CAAI,KAAA,CAAM,mBAAmB,MAAM,CAAA;AACjE,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,eAAA,CAAgB,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAEvD,CAAC;;;ACqBM,IAAM,YAAA,GAAe,CAAC,iBAAiB;AACvC,IAAM,aAAA,GAAgB,CAAC,mBAAA,EAAqB,mBAAmB;AAC/D,IAAM,aAAA,GAAgB,CAAC,gBAAA,EAAkB,qBAAqB;AAC9D,IAAM,QAAA,GAAW,CAAC,cAAA,EAAgB,aAAa;AAC/C,IAAM,cAAA,GAAiB;AAAA,EAC5B,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF;AACO,IAAM,YAAA,GAAe,CAAC,iBAAiB;AACvC,IAAM,kBAAA,GAAqB,CAAC,uBAAuB;AACnD,IAAM,WAAA,GAAc;AAAA,EACzB,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF;AACO,IAAM,UAAA,GAAa,CAAC,aAAa;AACjC,IAAM,gBAAA,GAAmB;AAAA,EAC9B,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACF;AACO,IAAM,UAAA,GAAa,CAAC,YAAA,EAAc,cAAA,EAAgB,kBAAkB;AAGpE,IAAM,QAAA,GAAmB;AAAA,EAC9B,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,uBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA,sBAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF","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"]}