Refactor Gmail Agent (#5439)

This commit is contained in:
Timothy Carambat
2026-04-14 14:46:54 -07:00
committed by GitHub
parent f17337fb97
commit 5aae72a5e5
7 changed files with 155 additions and 68 deletions

View File

@@ -51,8 +51,7 @@ const SystemSettings = {
"disabled_filesystem_skills",
"disabled_create_files_skills",
"disabled_gmail_skills",
"gmail_deployment_id",
"gmail_api_key",
"gmail_agent_config",
"disabled_outlook_skills",
"outlook_agent_config",
"imported_agent_skills",
@@ -75,8 +74,7 @@ const SystemSettings = {
"disabled_filesystem_skills",
"disabled_create_files_skills",
"disabled_gmail_skills",
"gmail_deployment_id",
"gmail_api_key",
"gmail_agent_config",
"disabled_outlook_skills",
"outlook_agent_config",
"agent_sql_connections",
@@ -208,21 +206,33 @@ const SystemSettings = {
return JSON.stringify([]);
}
},
gmail_deployment_id: (update) => {
gmail_agent_config: async (update) => {
const GmailBridge = require("../utils/agents/aibitat/plugins/gmail/lib");
try {
if (!update || typeof update !== "string") return null;
return String(update).trim();
if (!update) return JSON.stringify({});
const newConfig =
typeof update === "string" ? safeJsonParse(update, {}) : update;
const existingConfig = safeJsonParse(
(await SystemSettings.get({ label: "gmail_agent_config" }))?.value,
{}
);
const mergedConfig = { ...existingConfig };
mergeStringField(mergedConfig, newConfig, "deploymentId");
mergeStringField(
mergedConfig,
newConfig,
"apiKey",
(v) => !v.match(/^\*+$/)
);
return JSON.stringify(mergedConfig);
} catch (e) {
console.error(`Could not validate gmail agent config:`, e.message);
return JSON.stringify({});
} finally {
const GmailBridge = require("../utils/agents/aibitat/plugins/gmail/lib");
GmailBridge.reset();
}
},
gmail_api_key: (update) => {
try {
if (!update || typeof update !== "string") return null;
return String(update).trim();
} finally {
const GmailBridge = require("../utils/agents/aibitat/plugins/gmail/lib");
GmailBridge.reset();
}
},
@@ -531,6 +541,8 @@ const SystemSettings = {
}
}
if (validatedValue === undefined) continue;
updatePromises.push(
prisma.system_settings.upsert({
where: { label: key },