@langchain/community
Version:
Third-party integrations for LangChain.js
1 lines • 5.11 kB
Source Map (JSON)
{"version":3,"file":"base.cjs","names":["Tool","google"],"sources":["../../../src/tools/google_calendar/base.ts"],"sourcesContent":["import { google, calendar_v3 } from \"googleapis\";\nimport { Tool } from \"@langchain/core/tools\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\n\nexport interface GoogleCalendarAgentParams {\n credentials?: {\n clientEmail?: string;\n privateKey?: string;\n keyfile?: string;\n subject?: string;\n accessToken?: string | (() => Promise<string>);\n calendarId?: string;\n };\n scopes?: string[];\n model?: BaseLanguageModel;\n}\n\nexport class GoogleCalendarBase extends Tool {\n name = \"Google Calendar\";\n\n description =\n \"A tool to lookup Google Calendar events and create events in Google Calendar\";\n\n protected calendarId: string;\n\n protected llm: BaseLanguageModel;\n\n protected params: GoogleCalendarAgentParams;\n\n protected calendar?: calendar_v3.Calendar;\n\n constructor(\n { credentials, scopes, model }: GoogleCalendarAgentParams = {\n credentials: {\n clientEmail: getEnvironmentVariable(\"GOOGLE_CALENDAR_CLIENT_EMAIL\"),\n privateKey: getEnvironmentVariable(\"GOOGLE_CALENDAR_PRIVATE_KEY\"),\n keyfile: getEnvironmentVariable(\"GOOGLE_CALENDAR_KEYFILE\"),\n subject: getEnvironmentVariable(\"GOOGLE_CALENDAR_SUBJECT\"),\n calendarId:\n getEnvironmentVariable(\"GOOGLE_CALENDAR_CALENDAR_ID\") || \"primary\",\n },\n scopes: [\n \"https://www.googleapis.com/auth/calendar\",\n \"https://www.googleapis.com/auth/calendar.events\",\n ],\n }\n ) {\n super(...arguments);\n\n if (!model) {\n throw new Error(\"Missing llm instance to interact with Google Calendar\");\n }\n\n if (!credentials) {\n throw new Error(\"Missing credentials to authenticate to Google Calendar\");\n }\n\n if (!credentials.accessToken) {\n if (!credentials.clientEmail) {\n throw new Error(\n \"Missing GOOGLE_CALENDAR_CLIENT_EMAIL to interact with Google Calendar\"\n );\n }\n\n if (!credentials.privateKey && !credentials.keyfile) {\n throw new Error(\n \"Missing GOOGLE_CALENDAR_PRIVATE_KEY or GOOGLE_CALENDAR_KEYFILE or accessToken to interact with Google Calendar\"\n );\n }\n }\n\n if (!credentials.calendarId) {\n throw new Error(\n \"Missing GOOGLE_CALENDAR_CALENDAR_ID to interact with Google Calendar\"\n );\n }\n\n this.params = { credentials, scopes };\n this.calendarId = credentials.calendarId;\n this.llm = model;\n }\n\n getModel() {\n return this.llm;\n }\n\n async getCalendarClient() {\n const { credentials, scopes } = this.params;\n\n if (credentials?.accessToken) {\n // always return a new instance so that we don't end up using expired access tokens\n const auth = new google.auth.OAuth2();\n const accessToken =\n typeof credentials.accessToken === \"function\"\n ? await credentials.accessToken()\n : credentials.accessToken;\n\n auth.setCredentials({\n // get fresh access token if a function is provided\n access_token: accessToken,\n });\n return google.calendar({ version: \"v3\", auth });\n }\n\n // when not using access token its ok to use singleton instance\n if (this.calendar) {\n return this.calendar;\n }\n\n const auth = new google.auth.JWT(\n credentials?.clientEmail,\n credentials?.keyfile,\n credentials?.privateKey,\n scopes,\n credentials?.subject\n );\n\n this.calendar = google.calendar({ version: \"v3\", auth });\n return this.calendar;\n }\n\n async _call(input: string) {\n return input;\n }\n}\n"],"mappings":";;;;;AAkBA,IAAa,qBAAb,cAAwCA,sBAAAA,KAAK;CAC3C,OAAO;CAEP,cACE;CAEF;CAEA;CAEA;CAEA;CAEA,YACE,EAAE,aAAa,QAAQ,UAAqC;EAC1D,aAAa;GACX,cAAA,GAAA,0BAAA,wBAAoC,+BAA+B;GACnE,aAAA,GAAA,0BAAA,wBAAmC,8BAA8B;GACjE,UAAA,GAAA,0BAAA,wBAAgC,0BAA0B;GAC1D,UAAA,GAAA,0BAAA,wBAAgC,0BAA0B;GAC1D,aAAA,GAAA,0BAAA,wBACyB,8BAA8B,IAAI;GAC5D;EACD,QAAQ,CACN,4CACA,kDACD;EACF,EACD;AACA,QAAM,GAAG,UAAU;AAEnB,MAAI,CAAC,MACH,OAAM,IAAI,MAAM,wDAAwD;AAG1E,MAAI,CAAC,YACH,OAAM,IAAI,MAAM,yDAAyD;AAG3E,MAAI,CAAC,YAAY,aAAa;AAC5B,OAAI,CAAC,YAAY,YACf,OAAM,IAAI,MACR,wEACD;AAGH,OAAI,CAAC,YAAY,cAAc,CAAC,YAAY,QAC1C,OAAM,IAAI,MACR,iHACD;;AAIL,MAAI,CAAC,YAAY,WACf,OAAM,IAAI,MACR,uEACD;AAGH,OAAK,SAAS;GAAE;GAAa;GAAQ;AACrC,OAAK,aAAa,YAAY;AAC9B,OAAK,MAAM;;CAGb,WAAW;AACT,SAAO,KAAK;;CAGd,MAAM,oBAAoB;EACxB,MAAM,EAAE,aAAa,WAAW,KAAK;AAErC,MAAI,aAAa,aAAa;GAE5B,MAAM,OAAO,IAAIC,WAAAA,OAAO,KAAK,QAAQ;GACrC,MAAM,cACJ,OAAO,YAAY,gBAAgB,aAC/B,MAAM,YAAY,aAAa,GAC/B,YAAY;AAElB,QAAK,eAAe,EAElB,cAAc,aACf,CAAC;AACF,UAAOA,WAAAA,OAAO,SAAS;IAAE,SAAS;IAAM;IAAM,CAAC;;AAIjD,MAAI,KAAK,SACP,QAAO,KAAK;EAGd,MAAM,OAAO,IAAIA,WAAAA,OAAO,KAAK,IAC3B,aAAa,aACb,aAAa,SACb,aAAa,YACb,QACA,aAAa,QACd;AAED,OAAK,WAAWA,WAAAA,OAAO,SAAS;GAAE,SAAS;GAAM;GAAM,CAAC;AACxD,SAAO,KAAK;;CAGd,MAAM,MAAM,OAAe;AACzB,SAAO"}