import { z } from "zod";
import { Google } from "@sierai/stargate-auth";
import { StargateTool } from "@sierai/stargate-toolmaker";
import { logger } from "@sierai/stargate-logger";

const listEvents = new StargateTool({
  name: "list_google_calendar_events",
  description:
    "This tool will list the upcoming events from the user's Google Calendar.",
  schema: z.object({
    noOp: z.string().optional().describe("No-op parameter."),
  }),
  runner: async (_, config, oauthProvider: InstanceType<typeof Google>) => {
    try {
      logger.info({
        message: "Auth check wrapper: Authed",
        provider: oauthProvider.isAuthed,
      });
      return await oauthProvider.listEvents();
    } catch (err) {
      return "Error fetching events: " + err;
    }
  },
});

export default listEvents;
