@langchain/community
Version:
Third-party integrations for LangChain.js
67 lines (66 loc) • 2.87 kB
JavaScript
require("../../_virtual/_rolldown/runtime.cjs");
let _langchain_core_tools = require("@langchain/core/tools");
let _langchain_core_utils_env = require("@langchain/core/utils/env");
let googleapis = require("googleapis");
//#region src/tools/google_calendar/base.ts
var GoogleCalendarBase = class extends _langchain_core_tools.Tool {
name = "Google Calendar";
description = "A tool to lookup Google Calendar events and create events in Google Calendar";
calendarId;
llm;
params;
calendar;
constructor({ credentials, scopes, model } = {
credentials: {
clientEmail: (0, _langchain_core_utils_env.getEnvironmentVariable)("GOOGLE_CALENDAR_CLIENT_EMAIL"),
privateKey: (0, _langchain_core_utils_env.getEnvironmentVariable)("GOOGLE_CALENDAR_PRIVATE_KEY"),
keyfile: (0, _langchain_core_utils_env.getEnvironmentVariable)("GOOGLE_CALENDAR_KEYFILE"),
subject: (0, _langchain_core_utils_env.getEnvironmentVariable)("GOOGLE_CALENDAR_SUBJECT"),
calendarId: (0, _langchain_core_utils_env.getEnvironmentVariable)("GOOGLE_CALENDAR_CALENDAR_ID") || "primary"
},
scopes: ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.events"]
}) {
super(...arguments);
if (!model) throw new Error("Missing llm instance to interact with Google Calendar");
if (!credentials) throw new Error("Missing credentials to authenticate to Google Calendar");
if (!credentials.accessToken) {
if (!credentials.clientEmail) throw new Error("Missing GOOGLE_CALENDAR_CLIENT_EMAIL to interact with Google Calendar");
if (!credentials.privateKey && !credentials.keyfile) throw new Error("Missing GOOGLE_CALENDAR_PRIVATE_KEY or GOOGLE_CALENDAR_KEYFILE or accessToken to interact with Google Calendar");
}
if (!credentials.calendarId) throw new Error("Missing GOOGLE_CALENDAR_CALENDAR_ID to interact with Google Calendar");
this.params = {
credentials,
scopes
};
this.calendarId = credentials.calendarId;
this.llm = model;
}
getModel() {
return this.llm;
}
async getCalendarClient() {
const { credentials, scopes } = this.params;
if (credentials?.accessToken) {
const auth = new googleapis.google.auth.OAuth2();
const accessToken = typeof credentials.accessToken === "function" ? await credentials.accessToken() : credentials.accessToken;
auth.setCredentials({ access_token: accessToken });
return googleapis.google.calendar({
version: "v3",
auth
});
}
if (this.calendar) return this.calendar;
const auth = new googleapis.google.auth.JWT(credentials?.clientEmail, credentials?.keyfile, credentials?.privateKey, scopes, credentials?.subject);
this.calendar = googleapis.google.calendar({
version: "v3",
auth
});
return this.calendar;
}
async _call(input) {
return input;
}
};
//#endregion
exports.GoogleCalendarBase = GoogleCalendarBase;
//# sourceMappingURL=base.cjs.map