Files
anything-llm/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-update-draft.js
Timothy Carambat 4172751858 5427 translations (#5429)
* Outlook agent via Entra Application

* translations
2026-04-14 13:38:03 -07:00

133 lines
4.3 KiB
JavaScript

const outlookLib = require("../lib.js");
const { handleSkillError } = outlookLib;
module.exports.OutlookUpdateDraft = {
name: "outlook-update-draft",
plugin: function () {
return {
name: "outlook-update-draft",
setup(aibitat) {
aibitat.function({
super: aibitat,
name: this.name,
description:
"Update an existing draft email in Outlook. " +
"You can modify the recipients, subject, or body of the draft.",
examples: [
{
prompt: "Update the draft subject",
call: JSON.stringify({
draftId: "AAMkAGI2...",
subject: "Updated Meeting - Tomorrow at 3pm",
}),
},
{
prompt: "Change the draft body and add CC",
call: JSON.stringify({
draftId: "AAMkAGI2...",
body: "Updated content here.",
cc: "manager@example.com",
}),
},
],
parameters: {
$schema: "http://json-schema.org/draft-07/schema#",
type: "object",
properties: {
draftId: {
type: "string",
description: "The ID of the draft to update.",
},
to: {
type: "string",
description: "New recipient email address(es). Optional.",
},
subject: {
type: "string",
description: "New email subject. Optional.",
},
body: {
type: "string",
description: "New email body content. Optional.",
},
cc: {
type: "string",
description: "New CC recipient email address(es). Optional.",
},
isHtml: {
type: "boolean",
description:
"Whether the body is HTML content. Defaults to false.",
default: false,
},
},
required: ["draftId"],
additionalProperties: false,
},
handler: async function ({ draftId, to, subject, body, cc, isHtml }) {
try {
this.super.handlerProps.log(
`Using the outlook-update-draft tool.`
);
if (!draftId) {
return "Error: 'draftId' is required.";
}
if (!to && !subject && !body && !cc) {
return "Error: At least one field to update (to, subject, body, cc) is required.";
}
if (this.super.requestToolApproval) {
const approval = await this.super.requestToolApproval({
skillName: this.name,
payload: { draftId, hasChanges: { to, subject, body, cc } },
description: `Update draft ${draftId}`,
});
if (!approval.approved) {
this.super.introspect(
`${this.caller}: User rejected the ${this.name} request.`
);
return approval.message;
}
}
this.super.introspect(
`${this.caller}: Updating draft ${draftId}...`
);
const updates = { isHtml };
if (to) updates.to = to;
if (subject) updates.subject = subject;
if (body) updates.body = body;
if (cc) updates.cc = cc;
const result = await outlookLib.updateDraft(draftId, updates);
if (!result.success) {
this.super.introspect(
`${this.caller}: Failed to update draft - ${result.error}`
);
return `Error updating draft: ${result.error}`;
}
this.super.introspect(
`${this.caller}: Successfully updated draft`
);
return (
`Successfully updated draft:\n` +
`Draft ID: ${result.data.draftId}\n` +
`Subject: ${result.data.subject}\n` +
`\nThe draft has been updated.`
);
} catch (e) {
return handleSkillError(this, "outlook-update-draft", e);
}
},
});
},
};
},
};