merlyn/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-event.js
Timothy Carambat 1cea4df8e6
Google calendar skill (#5442)
* Google Calendar Agent

* forgot files

* Translations (#5443)
2026-04-14 16:39:36 -07:00

109 lines
3.9 KiB
JavaScript

const googleCalendarLib = require("../lib.js");
module.exports.GCalGetEvent = {
name: "gcal-get-event",
plugin: function () {
return {
name: "gcal-get-event",
setup(aibitat) {
aibitat.function({
super: aibitat,
name: this.name,
description:
"Get detailed information about a specific calendar event by its ID. " +
"Returns event title, time, location, description, guests, and RSVP status.",
examples: [
{
prompt: "Get details for event abc123",
call: JSON.stringify({ eventId: "abc123" }),
},
{
prompt: "Show me the meeting details for event xyz789",
call: JSON.stringify({ eventId: "xyz789" }),
},
],
parameters: {
$schema: "http://json-schema.org/draft-07/schema#",
type: "object",
properties: {
eventId: {
type: "string",
description: "The event ID to retrieve.",
},
calendarId: {
type: "string",
description:
"Optional calendar ID. If omitted, uses the primary calendar.",
},
},
required: ["eventId"],
additionalProperties: false,
},
handler: async function ({ eventId, calendarId }) {
try {
this.super.handlerProps.log(`Using the gcal-get-event tool.`);
this.super.introspect(
`${this.caller}: Fetching event ${eventId}...`
);
const result = await googleCalendarLib.getEvent(
eventId,
calendarId
);
if (!result.success) {
this.super.introspect(
`${this.caller}: Failed to get event - ${result.error}`
);
return `Error getting event: ${result.error}`;
}
const event = result.data;
this.super.introspect(
`${this.caller}: Retrieved event "${event.title}"`
);
let timeInfo;
if (event.isAllDayEvent) {
timeInfo = `All-day event: ${new Date(event.startDate).toLocaleDateString()}`;
if (event.endDate) {
timeInfo += ` to ${new Date(event.endDate).toLocaleDateString()}`;
}
} else {
timeInfo = `Time: ${new Date(event.startTime).toLocaleString()} - ${new Date(event.endTime).toLocaleString()}`;
}
const guestList =
event.guests?.length > 0
? event.guests
.map((g) => ` - ${g.name || g.email} (${g.status})`)
.join("\n")
: " (none)";
return (
`Event Details:\n` +
`Title: ${event.title}\n` +
`Event ID: ${event.eventId}\n` +
`Calendar ID: ${event.calendarId}\n` +
`${timeInfo}\n` +
`Location: ${event.location || "(none)"}\n` +
`Description: ${event.description || "(none)"}\n` +
`Recurring: ${event.isRecurringEvent ? "Yes" : "No"}\n` +
`My Status: ${event.myStatus}\n` +
`Owned by me: ${event.isOwnedByMe ? "Yes" : "No"}\n` +
`Guests:\n${guestList}\n` +
`Created: ${new Date(event.dateCreated).toLocaleString()}\n` +
`Last Updated: ${new Date(event.lastUpdated).toLocaleString()}`
);
} catch (e) {
this.super.handlerProps.log(`gcal-get-event error: ${e.message}`);
this.super.introspect(`Error: ${e.message}`);
return `Error getting event: ${e.message}`;
}
},
});
},
};
},
};