80 lines
2.7 KiB
JavaScript
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}`;
|
|
}
|
|
},
|
|
});
|
|
},
|
|
};
|
|
},
|
|
};
|