@credal/actions 0.1.96 → 0.1.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/actions/actionMapper.js +12 -0
  2. package/dist/actions/autogen/definitions.d.ts +5 -0
  3. package/dist/actions/autogen/definitions.js +132 -0
  4. package/dist/actions/autogen/templates.d.ts +2 -0
  5. package/dist/actions/autogen/templates.js +157 -1
  6. package/dist/actions/autogen/types.d.ts +159 -0
  7. package/dist/actions/autogen/types.js +45 -2
  8. package/dist/actions/definitions.js +35 -0
  9. package/dist/actions/groups.js +4 -0
  10. package/dist/actions/invokeMapper.d.ts +9 -0
  11. package/dist/actions/invokeMapper.js +33 -0
  12. package/dist/actions/providers/confluence/updatePage.d.ts +3 -0
  13. package/dist/actions/providers/confluence/updatePage.js +43 -0
  14. package/dist/actions/providers/gong/getGongTranscripts.js +37 -13
  15. package/dist/actions/providers/google-oauth/listGmailThreads.d.ts +3 -0
  16. package/dist/actions/providers/google-oauth/listGmailThreads.js +98 -0
  17. package/dist/actions/providers/google-oauth/searchGmailMessages.d.ts +3 -0
  18. package/dist/actions/providers/google-oauth/searchGmailMessages.js +91 -0
  19. package/dist/actions/providers/google-oauth/utils/decodeMessage.d.ts +27 -0
  20. package/dist/actions/providers/google-oauth/utils/decodeMessage.js +41 -0
  21. package/dist/actions/providers/googlemaps/nearbysearch.d.ts +3 -0
  22. package/dist/actions/providers/googlemaps/nearbysearch.js +96 -0
  23. package/dist/actions/providers/jira/createTicket.d.ts +3 -0
  24. package/dist/actions/providers/jira/createTicket.js +34 -0
  25. package/dist/actions/providers/slack/listConversations.d.ts +1 -1
  26. package/dist/actions/providers/slack/list_conversations.d.ts +3 -0
  27. package/dist/actions/providers/slack/list_conversations.js +60 -0
  28. package/dist/actions/providers/slack/summarizeChannel.d.ts +3 -0
  29. package/dist/actions/providers/slack/summarizeChannel.js +51 -0
  30. package/dist/actions/schema.js +6 -0
  31. package/dist/actions/types.js +2 -0
  32. package/dist/main.js +11 -0
  33. package/package.json +1 -1
@@ -0,0 +1,9 @@
1
+ import { type ActionFunction } from "./autogen/types";
2
+ import { z } from "zod";
3
+ interface ActionFunctionComponents {
4
+ fn: ActionFunction<any, any, any>;
5
+ paramsSchema: z.ZodSchema;
6
+ outputSchema: z.ZodSchema;
7
+ }
8
+ export declare const FunctionMapper: Record<string, Record<string, ActionFunctionComponents>>;
9
+ export {};
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FunctionMapper = void 0;
7
+ const add_1 = __importDefault(require("./providers/math/add"));
8
+ const list_conversations_1 = __importDefault(require("./providers/slack/list_conversations"));
9
+ const updatePage_1 = __importDefault(require("./providers/confluence/updatePage"));
10
+ const types_1 = require("./autogen/types");
11
+ exports.FunctionMapper = {
12
+ math: {
13
+ add: {
14
+ fn: add_1.default,
15
+ paramsSchema: types_1.mathAddParamsSchema,
16
+ outputSchema: types_1.mathAddOutputSchema,
17
+ },
18
+ },
19
+ slack: {
20
+ listConversations: {
21
+ fn: list_conversations_1.default,
22
+ paramsSchema: types_1.slackListConversationsParamsSchema,
23
+ outputSchema: types_1.slackListConversationsOutputSchema,
24
+ },
25
+ },
26
+ confluence: {
27
+ updatePage: {
28
+ fn: updatePage_1.default,
29
+ paramsSchema: types_1.confluenceUpdatePageParamsSchema,
30
+ outputSchema: types_1.confluenceUpdatePageOutputSchema,
31
+ },
32
+ },
33
+ };
@@ -0,0 +1,3 @@
1
+ import { confluenceUpdatePageFunction } from "../../../actions/autogen/types";
2
+ declare const confluenceUpdatePage: confluenceUpdatePageFunction;
3
+ export default confluenceUpdatePage;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const axiosClient_1 = require("../../util/axiosClient");
13
+ function getConfluenceRequestConfig(baseUrl, username, apiToken) {
14
+ return {
15
+ baseURL: baseUrl,
16
+ headers: {
17
+ Accept: "application/json",
18
+ Authorization: `Basic ${Buffer.from(`${username}:${apiToken}`).toString("base64")}`,
19
+ },
20
+ };
21
+ }
22
+ const confluenceUpdatePage = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
23
+ const { pageId, username, content, title } = params;
24
+ const { baseUrl, authToken } = authParams;
25
+ const config = getConfluenceRequestConfig(baseUrl, username, authToken);
26
+ // Get current version number
27
+ const response = yield axiosClient_1.axiosClient.get(`/api/v2/pages/${pageId}`, config);
28
+ const currVersion = response.data.version.number;
29
+ const payload = {
30
+ id: pageId,
31
+ status: "current",
32
+ title,
33
+ body: {
34
+ representation: "storage",
35
+ value: content,
36
+ },
37
+ version: {
38
+ number: currVersion + 1,
39
+ },
40
+ };
41
+ yield axiosClient_1.axiosClient.put(`/api/v2/pages/${pageId}`, payload, config);
42
+ });
43
+ exports.default = confluenceUpdatePage;
@@ -284,32 +284,56 @@ const getGongTranscripts = (_a) => __awaiter(void 0, [_a], void 0, function* ({
284
284
  // Map speaker IDs to names in the transcripts
285
285
  const userIdToNameMap = {};
286
286
  const userIdToEmailMap = {};
287
+ const callIdToEmails = {};
287
288
  publicCalls.forEach(call => {
289
+ var _a;
288
290
  // Check if call has parties array
289
291
  if (call.parties && Array.isArray(call.parties)) {
290
292
  // Iterate through each party in the call
291
- call.parties.forEach(party => {
292
- // Add the mapping of speakerId to name
293
- if (party.speakerId) {
294
- if (party.name) {
295
- userIdToNameMap[party.speakerId] = party.name;
293
+ if ((_a = call.metaData) === null || _a === void 0 ? void 0 : _a.id) {
294
+ callIdToEmails[call.metaData.id] = [];
295
+ call.parties.forEach(party => {
296
+ var _a;
297
+ // Add the mapping of speakerId to name
298
+ if (party.speakerId) {
299
+ if (party.name) {
300
+ userIdToNameMap[party.speakerId] = party.name;
301
+ }
302
+ if (party.emailAddress) {
303
+ userIdToEmailMap[party.speakerId] = party.emailAddress;
304
+ if ((_a = call.metaData) === null || _a === void 0 ? void 0 : _a.id) {
305
+ callIdToEmails[call.metaData.id].push(party.emailAddress);
306
+ }
307
+ }
296
308
  }
297
- if (party.emailAddress) {
298
- userIdToEmailMap[party.speakerId] = party.emailAddress;
299
- }
300
- }
301
- });
309
+ });
310
+ }
302
311
  }
303
312
  });
304
- const callTranscriptsWithNames = callTranscripts.map(callTranscript => {
305
- var _a, _b, _c, _d, _e, _f, _g;
313
+ const callTranscriptsWithNames = callTranscripts
314
+ .map(callTranscript => {
315
+ var _a, _b, _c, _d, _e, _f, _g, _h;
306
316
  const currTranscript = Object.assign({}, callTranscript);
317
+ const callId = callTranscript.callId;
307
318
  currTranscript.transcript = (_a = callTranscript.transcript) === null || _a === void 0 ? void 0 : _a.map(transcript => {
308
319
  var _a, _b;
309
320
  const { speakerId } = transcript, rest = __rest(transcript, ["speakerId"]);
310
321
  return Object.assign(Object.assign({}, rest), { speakerName: (_a = userIdToNameMap[speakerId !== null && speakerId !== void 0 ? speakerId : ""]) !== null && _a !== void 0 ? _a : "Unknown", speakerEmail: (_b = userIdToEmailMap[speakerId !== null && speakerId !== void 0 ? speakerId : ""]) !== null && _b !== void 0 ? _b : "Unknown" });
311
322
  });
312
- return Object.assign({ callName: (_d = (_c = (_b = publicCalls.find(call => { var _a; return ((_a = call.metaData) === null || _a === void 0 ? void 0 : _a.id) === callTranscript.callId; })) === null || _b === void 0 ? void 0 : _b.metaData) === null || _c === void 0 ? void 0 : _c.title) !== null && _d !== void 0 ? _d : "", startTime: (_g = (_f = (_e = publicCalls.find(call => { var _a; return ((_a = call.metaData) === null || _a === void 0 ? void 0 : _a.id) === callTranscript.callId; })) === null || _e === void 0 ? void 0 : _e.metaData) === null || _f === void 0 ? void 0 : _f.started) !== null && _g !== void 0 ? _g : "" }, currTranscript);
323
+ return Object.assign({ callName: (_d = (_c = (_b = publicCalls.find(call => { var _a; return ((_a = call.metaData) === null || _a === void 0 ? void 0 : _a.id) === callTranscript.callId; })) === null || _b === void 0 ? void 0 : _b.metaData) === null || _c === void 0 ? void 0 : _c.title) !== null && _d !== void 0 ? _d : "", userEmails: (_e = callIdToEmails[callId]) !== null && _e !== void 0 ? _e : [], startTime: (_h = (_g = (_f = publicCalls.find(call => { var _a; return ((_a = call.metaData) === null || _a === void 0 ? void 0 : _a.id) === callTranscript.callId; })) === null || _f === void 0 ? void 0 : _f.metaData) === null || _g === void 0 ? void 0 : _g.started) !== null && _h !== void 0 ? _h : "" }, currTranscript);
324
+ })
325
+ .filter(callTranscript => {
326
+ var _a;
327
+ if (!params.company || params.company === "") {
328
+ return true; // If no company filter is provided, include all transcripts
329
+ }
330
+ for (const email of callIdToEmails[callTranscript.callId]) {
331
+ const companyName = (_a = params.company) === null || _a === void 0 ? void 0 : _a.toLowerCase().replace(/ /g, "");
332
+ if (email.includes(companyName)) {
333
+ return true;
334
+ }
335
+ }
336
+ return false;
313
337
  });
314
338
  return {
315
339
  success: true,
@@ -0,0 +1,3 @@
1
+ import type { googleOauthListGmailThreadsFunction } from "../../autogen/types";
2
+ declare const listGmailThreads: googleOauthListGmailThreadsFunction;
3
+ export default listGmailThreads;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const axiosClient_1 = require("../../util/axiosClient");
13
+ const missingAuthConstants_1 = require("../../util/missingAuthConstants");
14
+ const decodeMessage_1 = require("./utils/decodeMessage");
15
+ const listGmailThreads = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
16
+ if (!authParams.authToken) {
17
+ return { success: false, error: missingAuthConstants_1.MISSING_AUTH_TOKEN, threads: [] };
18
+ }
19
+ const { query, maxResults } = params;
20
+ const allThreads = [];
21
+ const errorMessages = [];
22
+ const max = maxResults !== null && maxResults !== void 0 ? maxResults : 100;
23
+ let fetched = 0;
24
+ let pageToken = undefined;
25
+ try {
26
+ while (fetched < max) {
27
+ const url = `https://gmail.googleapis.com/gmail/v1/users/me/threads?q=${encodeURIComponent(query)}` +
28
+ (pageToken ? `&pageToken=${encodeURIComponent(pageToken)}` : "") +
29
+ `&maxResults=${Math.min(100, max - fetched)}`;
30
+ const listRes = yield axiosClient_1.axiosClient.get(url, {
31
+ headers: {
32
+ Authorization: `Bearer ${authParams.authToken}`,
33
+ },
34
+ });
35
+ const { threads: threadList = [], nextPageToken } = listRes.data;
36
+ if (!Array.isArray(threadList) || threadList.length === 0)
37
+ break;
38
+ const remaining = max - allThreads.length;
39
+ const batch = threadList.slice(0, remaining);
40
+ const results = yield Promise.all(batch.map((thread) => __awaiter(void 0, void 0, void 0, function* () {
41
+ try {
42
+ const threadRes = yield axiosClient_1.axiosClient.get(`https://gmail.googleapis.com/gmail/v1/users/me/threads/${thread.id}?format=full`, {
43
+ headers: {
44
+ Authorization: `Bearer ${authParams.authToken}`,
45
+ },
46
+ });
47
+ const { id, historyId, messages } = threadRes.data;
48
+ return {
49
+ id,
50
+ historyId,
51
+ messages: Array.isArray(messages)
52
+ ? messages.map(msg => {
53
+ const { id, threadId, snippet, labelIds, internalDate } = msg;
54
+ const emailBody = (0, decodeMessage_1.getEmailContent)(msg) || "";
55
+ return {
56
+ id,
57
+ threadId,
58
+ snippet,
59
+ labelIds,
60
+ internalDate,
61
+ emailBody,
62
+ };
63
+ })
64
+ : [],
65
+ };
66
+ }
67
+ catch (err) {
68
+ errorMessages.push(err instanceof Error ? err.message : "Failed to fetch thread details");
69
+ return {
70
+ id: thread.id,
71
+ snippet: "",
72
+ historyId: "",
73
+ messages: [],
74
+ error: err instanceof Error ? err.message : "Failed to fetch thread details",
75
+ };
76
+ }
77
+ })));
78
+ allThreads.push(...results);
79
+ fetched = allThreads.length;
80
+ if (!nextPageToken || allThreads.length >= max)
81
+ break;
82
+ pageToken = nextPageToken;
83
+ }
84
+ return {
85
+ success: errorMessages.length === 0,
86
+ threads: allThreads,
87
+ error: errorMessages.join("; "),
88
+ };
89
+ }
90
+ catch (error) {
91
+ return {
92
+ success: false,
93
+ error: error instanceof Error ? error.message : "Unknown error listing Gmail threads",
94
+ threads: [],
95
+ };
96
+ }
97
+ });
98
+ exports.default = listGmailThreads;
@@ -0,0 +1,3 @@
1
+ import type { googleOauthSearchGmailMessagesFunction } from "../../autogen/types";
2
+ declare const searchGmailMessages: googleOauthSearchGmailMessagesFunction;
3
+ export default searchGmailMessages;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const axiosClient_1 = require("../../util/axiosClient");
13
+ const missingAuthConstants_1 = require("../../util/missingAuthConstants");
14
+ const decodeMessage_1 = require("./utils/decodeMessage");
15
+ const searchGmailMessages = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
16
+ if (!authParams.authToken) {
17
+ return { success: false, error: missingAuthConstants_1.MISSING_AUTH_TOKEN, messages: [] };
18
+ }
19
+ const { query, maxResults } = params;
20
+ const allMessages = [];
21
+ const max = maxResults !== null && maxResults !== void 0 ? maxResults : 100;
22
+ const errorMessages = [];
23
+ let pageToken = undefined;
24
+ let fetched = 0;
25
+ try {
26
+ while (fetched < max) {
27
+ const url = `https://gmail.googleapis.com/gmail/v1/users/me/messages?q=${encodeURIComponent(query)}` +
28
+ (pageToken ? `&pageToken=${encodeURIComponent(pageToken)}` : "") +
29
+ `&maxResults=${Math.min(100, max - fetched)}`;
30
+ const listRes = yield axiosClient_1.axiosClient.get(url, {
31
+ headers: {
32
+ Authorization: `Bearer ${authParams.authToken}`,
33
+ },
34
+ });
35
+ const { messages: messageList = [], nextPageToken } = listRes.data;
36
+ if (!Array.isArray(messageList) || messageList.length === 0)
37
+ break;
38
+ const remaining = max - allMessages.length;
39
+ const batch = messageList.slice(0, remaining);
40
+ const results = yield Promise.all(batch.map((msg) => __awaiter(void 0, void 0, void 0, function* () {
41
+ try {
42
+ const msgRes = yield axiosClient_1.axiosClient.get(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${msg.id}?format=full`, {
43
+ headers: {
44
+ Authorization: `Bearer ${authParams.authToken}`,
45
+ },
46
+ });
47
+ const { id, threadId, snippet, labelIds, internalDate } = msgRes.data;
48
+ const emailBody = (0, decodeMessage_1.getEmailContent)(msgRes.data) || "";
49
+ return {
50
+ id,
51
+ threadId,
52
+ snippet,
53
+ labelIds,
54
+ internalDate,
55
+ emailBody,
56
+ };
57
+ }
58
+ catch (err) {
59
+ errorMessages.push(err instanceof Error ? err.message : "Failed to fetch message details");
60
+ return {
61
+ id: msg.id,
62
+ threadId: "",
63
+ snippet: "",
64
+ labelIds: [],
65
+ internalDate: "",
66
+ payload: {},
67
+ error: err instanceof Error ? err.message : "Failed to fetch message details",
68
+ };
69
+ }
70
+ })));
71
+ allMessages.push(...results);
72
+ fetched = allMessages.length;
73
+ if (!nextPageToken || allMessages.length >= max)
74
+ break;
75
+ pageToken = nextPageToken;
76
+ }
77
+ return {
78
+ success: errorMessages.length === 0,
79
+ messages: allMessages,
80
+ error: errorMessages.join("; "),
81
+ };
82
+ }
83
+ catch (error) {
84
+ return {
85
+ success: false,
86
+ error: error instanceof Error ? error.message : "Unknown error searching Gmail",
87
+ messages: [],
88
+ };
89
+ }
90
+ });
91
+ exports.default = searchGmailMessages;
@@ -0,0 +1,27 @@
1
+ export interface GmailMessage {
2
+ payload: {
3
+ mimeType: string;
4
+ body?: {
5
+ data?: string;
6
+ size: number;
7
+ };
8
+ parts?: Array<{
9
+ partId: string;
10
+ mimeType: string;
11
+ body: {
12
+ data?: string;
13
+ size: number;
14
+ };
15
+ parts?: Array<{
16
+ partId: string;
17
+ mimeType: string;
18
+ body: {
19
+ data?: string;
20
+ size: number;
21
+ };
22
+ }>;
23
+ }>;
24
+ };
25
+ }
26
+ export declare function decodeGmailBase64(base64String: string): string;
27
+ export declare function getEmailContent(message: GmailMessage): string | null;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeGmailBase64 = decodeGmailBase64;
4
+ exports.getEmailContent = getEmailContent;
5
+ function decodeGmailBase64(base64String) {
6
+ // Gmail API uses URL-safe base64 encoding
7
+ const standardBase64 = base64String.replace(/-/g, "+").replace(/_/g, "/");
8
+ // Add padding if needed
9
+ const padded = standardBase64.padEnd(standardBase64.length + ((4 - (standardBase64.length % 4)) % 4), "=");
10
+ // Only works for Node.js environment
11
+ return Buffer.from(padded, "base64").toString("utf-8");
12
+ }
13
+ function getEmailContent(message) {
14
+ var _a;
15
+ let textContent = null;
16
+ // Function to recursively search for plain text content in parts
17
+ function searchParts(parts) {
18
+ var _a;
19
+ if (!parts)
20
+ return;
21
+ for (const part of parts) {
22
+ if (part.mimeType === "text/plain" && ((_a = part.body) === null || _a === void 0 ? void 0 : _a.data) && !textContent) {
23
+ textContent = decodeGmailBase64(part.body.data);
24
+ }
25
+ else if (part.parts) {
26
+ // Recursively search nested parts
27
+ searchParts(part.parts);
28
+ }
29
+ }
30
+ }
31
+ // 1. Check if content is directly in the payload body (simple emails)
32
+ if (((_a = message.payload.body) === null || _a === void 0 ? void 0 : _a.data) && message.payload.mimeType === "text/plain") {
33
+ return decodeGmailBase64(message.payload.body.data);
34
+ }
35
+ // 2. Search through parts for plain text content
36
+ if (message.payload.parts) {
37
+ searchParts(message.payload.parts);
38
+ }
39
+ // 3. Return plain text content or null
40
+ return textContent;
41
+ }
@@ -0,0 +1,3 @@
1
+ import { googlemapsNearbysearchFunction } from "../../autogen/types";
2
+ declare const nearbysearch: googlemapsNearbysearchFunction;
3
+ export default nearbysearch;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const axios_1 = __importDefault(require("axios"));
16
+ const types_1 = require("../../autogen/types");
17
+ const INCLUDED_TYPES = [
18
+ // "monument",
19
+ // "museum",
20
+ // "art_gallery",
21
+ // "sculpture",
22
+ // "cultural_landmark",
23
+ // "historical_place",
24
+ // "performing_arts_theater",
25
+ // "university",
26
+ // "aquarium",
27
+ // "botanical_garden",
28
+ // "comedy_club",
29
+ // "park",
30
+ // "movie_theater",
31
+ // "national_park",
32
+ // "garden",
33
+ // "night_club",
34
+ // "tourist_attraction",
35
+ // "water_park",
36
+ // "zoo",
37
+ // "bar",
38
+ "restaurant",
39
+ // "food_court",
40
+ // "bakery",
41
+ // "cafe",
42
+ // "coffee_shop",
43
+ // "pub",
44
+ // "wine_bar",
45
+ // "spa",
46
+ // "beach",
47
+ // "market",
48
+ // "shopping_mall",
49
+ // "stadium",
50
+ ];
51
+ const nearbysearch = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
52
+ const url = `https://places.googleapis.com/v1/places:searchNearby`;
53
+ const fieldMask = [
54
+ "places.displayName",
55
+ "places.formattedAddress",
56
+ "places.priceLevel",
57
+ "places.rating",
58
+ "places.primaryTypeDisplayName",
59
+ "places.editorialSummary",
60
+ "places.regularOpeningHours",
61
+ ].join(",");
62
+ const response = yield axios_1.default.post(url, {
63
+ maxResultCount: 20,
64
+ includedTypes: INCLUDED_TYPES,
65
+ locationRestriction: {
66
+ circle: {
67
+ center: {
68
+ latitude: params.latitude,
69
+ longitude: params.longitude,
70
+ },
71
+ radius: 10000,
72
+ },
73
+ },
74
+ }, {
75
+ headers: {
76
+ "X-Goog-Api-Key": authParams.apiKey,
77
+ "X-Goog-FieldMask": fieldMask,
78
+ "Content-Type": "application/json",
79
+ },
80
+ });
81
+ return types_1.googlemapsNearbysearchOutputSchema.parse({
82
+ results: response.data.places.map((place) => {
83
+ var _a, _b;
84
+ return ({
85
+ name: place.displayName.text,
86
+ address: place.formattedAddress,
87
+ priceLevel: place.priceLevel,
88
+ rating: place.rating,
89
+ primaryType: place.primaryTypeDisplayName.text,
90
+ editorialSummary: ((_a = place.editorialSummary) === null || _a === void 0 ? void 0 : _a.text) || "",
91
+ openingHours: ((_b = place.regularOpeningHours) === null || _b === void 0 ? void 0 : _b.weekdayDescriptions.join("\n")) || "",
92
+ });
93
+ }),
94
+ });
95
+ });
96
+ exports.default = nearbysearch;
@@ -0,0 +1,3 @@
1
+ import { jiraCreateTicketFunction } from "../../autogen/types";
2
+ declare const createTicket: jiraCreateTicketFunction;
3
+ export default createTicket;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const axios_1 = __importDefault(require("axios"));
16
+ const createTicket = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
17
+ const { authToken, baseUrl } = authParams;
18
+ const url = `${baseUrl}/rest/api/3/issue`;
19
+ const payload = {
20
+ fields: Object.assign({ project: {
21
+ key: params.projectKey,
22
+ }, summary: params.summary, description: params.description, issuetype: {
23
+ name: params.issueType,
24
+ } }, (params.reporter ? { reporter: { id: params.reporter } } : {})),
25
+ };
26
+ const response = yield axios_1.default.post(url, payload, {
27
+ headers: {
28
+ Authorization: `Basic ${Buffer.from(`${params.username}:${authToken}`).toString("base64")}`,
29
+ "Content-Type": "application/json",
30
+ },
31
+ });
32
+ return response.data;
33
+ });
34
+ exports.default = createTicket;
@@ -1,3 +1,3 @@
1
- import type { slackListConversationsFunction } from "../../autogen/types";
1
+ import { slackListConversationsFunction } from "../../autogen/types";
2
2
  declare const slackListConversations: slackListConversationsFunction;
3
3
  export default slackListConversations;
@@ -0,0 +1,3 @@
1
+ import { slackListConversationsFunction } from "../../../actions/autogen/types";
2
+ declare const slackListConversations: slackListConversationsFunction;
3
+ export default slackListConversations;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const web_api_1 = require("@slack/web-api");
13
+ const slackListConversations = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authParams, }) {
14
+ var _b;
15
+ const client = new web_api_1.WebClient(authParams.authToken);
16
+ const allChannels = [];
17
+ let cursor;
18
+ const limit = 100;
19
+ try {
20
+ do {
21
+ const response = yield client.conversations.list({
22
+ exclude_archived: true,
23
+ limit: limit,
24
+ cursor: cursor,
25
+ });
26
+ if (!response.ok) {
27
+ throw new Error(`Slack API error: ${response.error}`);
28
+ }
29
+ // Add channels from this page to our results
30
+ if (response.channels && Array.isArray(response.channels)) {
31
+ allChannels.push(...response.channels);
32
+ }
33
+ // Get cursor for next page
34
+ cursor = (_b = response.response_metadata) === null || _b === void 0 ? void 0 : _b.next_cursor;
35
+ // If user specified a limit and we've hit it, stop paginating
36
+ if (limit && allChannels.length >= limit) {
37
+ allChannels.splice(limit); // Trim to exact limit
38
+ break;
39
+ }
40
+ } while (cursor && cursor.length > 0);
41
+ return {
42
+ channels: allChannels.map(channel => ({
43
+ id: channel.id,
44
+ name: channel.name,
45
+ topic: channel.topic.value,
46
+ purpose: channel.purpose.value,
47
+ })),
48
+ };
49
+ }
50
+ catch (error) {
51
+ if (error instanceof Error) {
52
+ // Enhance error with more context
53
+ throw new Error(`Failed to list Slack conversations: ${error.message}`);
54
+ }
55
+ else {
56
+ throw error;
57
+ }
58
+ }
59
+ });
60
+ exports.default = slackListConversations;
@@ -0,0 +1,3 @@
1
+ import { slackSummarizeChannelFunction } from "../../autogen/types";
2
+ declare const summarizeChannel: slackSummarizeChannelFunction;
3
+ export default summarizeChannel;