UNPKG

@langchain/community

Version:
1 lines • 3.67 kB
{"version":3,"file":"run-view-events.cjs","names":["z","query: string","runManager?: CallbackManagerForToolRun","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 }: // eslint-disable-next-line @typescript-eslint/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,SAAE,OAAO;CAC3B,UAAUA,SAAE,QAAQ;CACpB,UAAUA,SAAE,QAAQ;CACpB,eAAeA,SAAE,QAAQ;CACzB,aAAaA,SAAE,QAAQ;CACvB,cAAcA,SAAE,QAAQ,CAAC,UAAU;AACpC,EAAC;AAQF,MAAM,gBAAgB,OACpBC,OACA,EAAE,OAAO,UAAU,YAAgC,EACnDC,eACG;CACH,MAAM,SAAS,IAAIC,wCAAe;EAChC,UAAUC;EACV,gBAAgB;GAAC;GAAQ;GAAS;GAAc;EAAU;CAC3D;AAED,KAAI,CAAC,OAAO,qBACV,OAAM,IAAI,MAAM;CAGlB,MAAM,kBAAkB,OAAO,KAAK,MAAM,qBAAqB,YAAY,CAAC;CAE5E,MAAM,wBAAO,IAAI,QAAO,aAAa;CACrC,MAAM,aAAaC,+DAA0B;CAC7C,MAAM,2BAAU,IAAI,QAAO,eAAe,SAAS,EAAE,SAAS,OAAQ,EAAC;CAEvE,MAAM,SAAS,MAAM,gBAAgB,OACnC;EACE;EACA;EACA;EACA;CACD,GACD,YAAY,UAAU,CACvB;AAED,KAAI;EACF,MAAM,WAAW,MAAM,SAAS,OAAO,KAAK;GAC1C;GACA,GAAG;EACJ,EAAC;EAEF,MAAM,eACJ,SAAS,QAAQ,SAAS,KAAK,QAC3B,SAAS,KAAK,MAAM,IAClB,CAAC,EACC,QACA,SACA,aACA,OACA,KAEC,MAAM;GACP;GACA;GACA;GACA;GACA;EACD,GACF,GACD,CAAE;AAER,SAAO,CAAC,uBAAuB,EAAE,MAAM,KAAK,EAAE,KAAK,UACjD,cACA,MACA,EACD,EAAE;CACJ,SAAQ,OAAO;AACd,SAAO,CAAC,mBAAmB,EAAE,OAAO;CACrC;AACF"}