agsamantha/node_modules/@langchain/community/dist/tools/gmail/base.cjs
2024-10-02 15:15:21 -05:00

72 lines
2.9 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GmailBaseTool = void 0;
const googleapis_1 = require("googleapis");
const zod_1 = require("zod");
const tools_1 = require("@langchain/core/tools");
const env_1 = require("@langchain/core/utils/env");
class GmailBaseTool extends tools_1.StructuredTool {
constructor(fields) {
super(...arguments);
Object.defineProperty(this, "CredentialsSchema", {
enumerable: true,
configurable: true,
writable: true,
value: zod_1.z
.object({
clientEmail: zod_1.z
.string()
.min(1)
.default((0, env_1.getEnvironmentVariable)("GMAIL_CLIENT_EMAIL") ?? ""),
privateKey: zod_1.z
.string()
.default((0, env_1.getEnvironmentVariable)("GMAIL_PRIVATE_KEY") ?? ""),
keyfile: zod_1.z
.string()
.default((0, env_1.getEnvironmentVariable)("GMAIL_KEYFILE") ?? ""),
subject: zod_1.z
.string()
.default((0, env_1.getEnvironmentVariable)("GMAIL_SUBJECT") ?? ""),
})
.refine((credentials) => credentials.privateKey !== "" || credentials.keyfile !== "", {
message: "Missing GMAIL_PRIVATE_KEY or GMAIL_KEYFILE to interact with Gmail",
})
});
Object.defineProperty(this, "GmailBaseToolParamsSchema", {
enumerable: true,
configurable: true,
writable: true,
value: zod_1.z
.object({
credentials: this.CredentialsSchema.default({}),
scopes: zod_1.z.array(zod_1.z.string()).default(["https://mail.google.com/"]),
})
.default({})
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: "Gmail"
});
Object.defineProperty(this, "description", {
enumerable: true,
configurable: true,
writable: true,
value: "A tool to send and view emails through Gmail"
});
Object.defineProperty(this, "gmail", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
const { credentials, scopes } = this.GmailBaseToolParamsSchema.parse(fields);
this.gmail = this.getGmail(scopes, credentials.clientEmail, credentials.privateKey, credentials.keyfile, credentials.subject);
}
getGmail(scopes, email, key, keyfile, subject) {
const auth = new googleapis_1.google.auth.JWT(email, keyfile, key, scopes, subject);
return googleapis_1.google.gmail({ version: "v1", auth });
}
}
exports.GmailBaseTool = GmailBaseTool;