{"version":3,"file":"run-view-events.cjs","names":["z","PromptTemplate","VIEW_EVENTS_PROMPT","getTimezoneOffsetInHours"],"sources":["../../../../src/tools/google_calendar/commands/run-view-events.ts"],"sourcesContent":["import { calendar_v3 } from \"googleapis\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport { CallbackManagerForToolRun } from \"@langchain/core/callbacks/manager\";\nimport { z } from \"zod/v3\";\n\nimport { VIEW_EVENTS_PROMPT } from \"../prompts/index.js\";\nimport { getTimezoneOffsetInHours } from \"../utils/get-timezone-offset-in-hours.js\";\n\nconst eventSchema = z.object({\n  time_min: z.string(),\n  time_max: z.string(),\n  user_timezone: z.string(),\n  max_results: z.number(),\n  search_query: z.string().optional(),\n});\n\ntype RunViewEventParams = {\n  calendarId: string;\n  calendar: calendar_v3.Calendar;\n  model: BaseLanguageModel;\n};\n\nconst runViewEvents = async (\n  query: string,\n  { model, calendar, calendarId }: RunViewEventParams,\n  runManager?: CallbackManagerForToolRun\n) => {\n  const prompt = new PromptTemplate({\n    template: VIEW_EVENTS_PROMPT,\n    inputVariables: [\"date\", \"query\", \"u_timezone\", \"dayName\"],\n  });\n\n  if (!model?.withStructuredOutput) {\n    throw new Error(\"Model does not support structured output\");\n  }\n\n  const viewEventsChain = prompt.pipe(model.withStructuredOutput(eventSchema));\n\n  const date = new Date().toISOString();\n  const u_timezone = getTimezoneOffsetInHours();\n  const dayName = new Date().toLocaleString(\"en-us\", { weekday: \"long\" });\n\n  const output = await viewEventsChain.invoke(\n    {\n      query,\n      date,\n      u_timezone,\n      dayName,\n    },\n    runManager?.getChild()\n  );\n\n  try {\n    const response = await calendar.events.list({\n      calendarId,\n      ...output,\n    });\n\n    const curatedItems =\n      response.data && response.data.items\n        ? response.data.items.map(\n            ({\n              status,\n              summary,\n              description,\n              start,\n              end,\n            }: // oxlint-disable-next-line typescript/no-explicit-any\n            any) => ({\n              status,\n              summary,\n              description,\n              start,\n              end,\n            })\n          )\n        : [];\n\n    return `Result for the prompt \"${query}\": \\n${JSON.stringify(\n      curatedItems,\n      null,\n      2\n    )}`;\n  } catch (error) {\n    return `An error occurred: ${error}`;\n  }\n};\n\nexport { runViewEvents };\n"],"mappings":";;;;;;AASA,MAAM,cAAcA,OAAAA,EAAE,OAAO;CAC3B,UAAUA,OAAAA,EAAE,QAAQ;CACpB,UAAUA,OAAAA,EAAE,QAAQ;CACpB,eAAeA,OAAAA,EAAE,QAAQ;CACzB,aAAaA,OAAAA,EAAE,QAAQ;CACvB,cAAcA,OAAAA,EAAE,QAAQ,CAAC,UAAU;CACpC,CAAC;AAQF,MAAM,gBAAgB,OACpB,OACA,EAAE,OAAO,UAAU,cACnB,eACG;CACH,MAAM,SAAS,IAAIC,wBAAAA,eAAe;EAChC,UAAUC,2BAAAA;EACV,gBAAgB;GAAC;GAAQ;GAAS;GAAc;GAAU;EAC3D,CAAC;AAEF,KAAI,CAAC,OAAO,qBACV,OAAM,IAAI,MAAM,2CAA2C;CAG7D,MAAM,kBAAkB,OAAO,KAAK,MAAM,qBAAqB,YAAY,CAAC;CAE5E,MAAM,wBAAO,IAAI,MAAM,EAAC,aAAa;CACrC,MAAM,aAAaC,qCAAAA,0BAA0B;CAC7C,MAAM,2BAAU,IAAI,MAAM,EAAC,eAAe,SAAS,EAAE,SAAS,QAAQ,CAAC;CAEvE,MAAM,SAAS,MAAM,gBAAgB,OACnC;EACE;EACA;EACA;EACA;EACD,EACD,YAAY,UAAU,CACvB;AAED,KAAI;EACF,MAAM,WAAW,MAAM,SAAS,OAAO,KAAK;GAC1C;GACA,GAAG;GACJ,CAAC;EAEF,MAAM,eACJ,SAAS,QAAQ,SAAS,KAAK,QAC3B,SAAS,KAAK,MAAM,KACjB,EACC,QACA,SACA,aACA,OACA,WAEO;GACP;GACA;GACA;GACA;GACA;GACD,EACF,GACD,EAAE;AAER,SAAO,0BAA0B,MAAM,OAAO,KAAK,UACjD,cACA,MACA,EACD;UACM,OAAO;AACd,SAAO,sBAAsB"}