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

* forgot files

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

80 lines
2.7 KiB
JavaScript

const googleCalendarLib = require("../lib.js");
module.exports.GCalGetCalendar = {
name: "gcal-get-calendar",
plugin: function () {
return {
name: "gcal-get-calendar",
setup(aibitat) {
aibitat.function({
super: aibitat,
name: this.name,
description:
"Get detailed information about a specific Google Calendar by its ID. " +
"Returns calendar name, description, time zone, and settings.",
examples: [
{
prompt: "Get details for my work calendar",
call: JSON.stringify({
calendarId: "work@group.calendar.google.com",
}),
},
],
parameters: {
$schema: "http://json-schema.org/draft-07/schema#",
type: "object",
properties: {
calendarId: {
type: "string",
description:
"The calendar ID. If omitted, returns the primary calendar.",
},
},
additionalProperties: false,
},
handler: async function ({ calendarId }) {
try {
this.super.handlerProps.log(`Using the gcal-get-calendar tool.`);
this.super.introspect(
`${this.caller}: Fetching calendar details${calendarId ? ` for ${calendarId}` : " for primary calendar"}...`
);
const result = await googleCalendarLib.getCalendar(calendarId);
if (!result.success) {
this.super.introspect(
`${this.caller}: Failed to get calendar - ${result.error}`
);
return `Error getting calendar: ${result.error}`;
}
const cal = result.data;
this.super.introspect(
`${this.caller}: Retrieved calendar "${cal.name}"`
);
return (
`Calendar Details:\n` +
`Name: ${cal.name}\n` +
`ID: ${cal.calendarId}\n` +
`Description: ${cal.description || "(none)"}\n` +
`Time Zone: ${cal.timeZone}\n` +
`Primary: ${cal.isPrimary ? "Yes" : "No"}\n` +
`Owned by me: ${cal.isOwnedByMe ? "Yes" : "No"}\n` +
`Hidden: ${cal.isHidden ? "Yes" : "No"}\n` +
`Selected: ${cal.isSelected ? "Yes" : "No"}`
);
} catch (e) {
this.super.handlerProps.log(
`gcal-get-calendar error: ${e.message}`
);
this.super.introspect(`Error: ${e.message}`);
return `Error getting calendar: ${e.message}`;
}
},
});
},
};
},
};