@credal/actions 0.2.222 → 0.2.224

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 (41) hide show
  1. package/dist/actions/actionMapper.js +66 -1
  2. package/dist/actions/autogen/templates.d.ts +9 -0
  3. package/dist/actions/autogen/templates.js +920 -0
  4. package/dist/actions/autogen/types.d.ts +893 -1
  5. package/dist/actions/autogen/types.js +353 -0
  6. package/dist/actions/groups.js +3 -31
  7. package/dist/actions/providers/microsoft/getSharepointItem.d.ts +3 -0
  8. package/dist/actions/providers/microsoft/getSharepointItem.js +61 -0
  9. package/dist/actions/providers/microsoft/listSharepointFolder.d.ts +3 -0
  10. package/dist/actions/providers/microsoft/listSharepointFolder.js +92 -0
  11. package/dist/actions/providers/microsoft/readSharepointContent.d.ts +3 -0
  12. package/dist/actions/providers/microsoft/readSharepointContent.js +157 -0
  13. package/dist/actions/providers/microsoft/searchSharepoint.d.ts +3 -0
  14. package/dist/actions/providers/microsoft/searchSharepoint.js +147 -0
  15. package/dist/actions/providers/microsoft/sharepointUtils.d.ts +56 -0
  16. package/dist/actions/providers/microsoft/sharepointUtils.js +153 -0
  17. package/dist/actions/providers/microsoft/utils.d.ts +1 -0
  18. package/dist/actions/providers/microsoft/utils.js +1 -0
  19. package/dist/actions/providers/servicenow/getChangeRequests.d.ts +3 -0
  20. package/dist/actions/providers/servicenow/getChangeRequests.js +56 -0
  21. package/dist/actions/providers/servicenow/getIncidents.d.ts +3 -0
  22. package/dist/actions/providers/servicenow/getIncidents.js +58 -0
  23. package/dist/actions/providers/servicenow/getRecordsByQuery.d.ts +3 -0
  24. package/dist/actions/providers/servicenow/getRecordsByQuery.js +42 -0
  25. package/dist/actions/providers/servicenow/getSCTasks.d.ts +3 -0
  26. package/dist/actions/providers/servicenow/getSCTasks.js +53 -0
  27. package/dist/actions/providers/servicenow/getVIPTickets.d.ts +3 -0
  28. package/dist/actions/providers/servicenow/getVIPTickets.js +61 -0
  29. package/dist/actions/providers/servicenow/utils/tableQuery.d.ts +22 -0
  30. package/dist/actions/providers/servicenow/utils/tableQuery.js +62 -0
  31. package/package.json +1 -1
  32. package/dist/actions/providers/credal/callCopilot.d.ts +0 -3
  33. package/dist/actions/providers/credal/callCopilot.js +0 -36
  34. package/dist/actions/providers/math/index.d.ts +0 -1
  35. package/dist/actions/providers/math/index.js +0 -37
  36. package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.d.ts +0 -3
  37. package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.js +0 -43
  38. package/dist/actions/providers/slack/index.d.ts +0 -1
  39. package/dist/actions/providers/slack/index.js +0 -37
  40. package/dist/actions/providers/slack/listConversations.d.ts +0 -3
  41. package/dist/actions/providers/slack/listConversations.js +0 -41
@@ -0,0 +1,42 @@
1
+ import { ApiError, axiosClient } from "../../util/axiosClient.js";
2
+ const DEFAULT_LIMIT = 25;
3
+ const MAX_LIMIT = 10000;
4
+ const getRecordsByQuery = async ({ params, authParams, }) => {
5
+ const { authToken, baseUrl } = authParams;
6
+ const { tableName, query, fields, limit = DEFAULT_LIMIT, offset = 0, includeDisplayValues = false } = params;
7
+ if (!authToken || !baseUrl) {
8
+ return { success: false, error: "authToken and baseUrl are required for the ServiceNow API" };
9
+ }
10
+ const cappedLimit = Math.min(limit, MAX_LIMIT);
11
+ const queryParams = new URLSearchParams();
12
+ queryParams.append("sysparm_limit", cappedLimit.toString());
13
+ queryParams.append("sysparm_offset", offset.toString());
14
+ // "all" nests each field as {value, display_value}; "false" keeps fields as plain scalars
15
+ queryParams.append("sysparm_display_value", includeDisplayValues ? "all" : "false");
16
+ queryParams.append("sysparm_exclude_reference_link", "true");
17
+ if (query) {
18
+ queryParams.append("sysparm_query", query);
19
+ }
20
+ if (fields && fields.length > 0) {
21
+ queryParams.append("sysparm_fields", fields.join(","));
22
+ }
23
+ const url = `${baseUrl.replace(/\/+$/, "")}/api/now/table/${encodeURIComponent(tableName)}?${queryParams.toString()}`;
24
+ try {
25
+ const response = await axiosClient.get(url, {
26
+ headers: {
27
+ Accept: "application/json",
28
+ Authorization: `Bearer ${authToken}`,
29
+ },
30
+ });
31
+ const result = response.data.result;
32
+ return { success: true, records: Array.isArray(result) ? result : [] };
33
+ }
34
+ catch (error) {
35
+ console.error("Error querying ServiceNow records:", error);
36
+ return {
37
+ success: false,
38
+ error: error instanceof ApiError ? error.message : "An unknown error occurred",
39
+ };
40
+ }
41
+ };
42
+ export default getRecordsByQuery;
@@ -0,0 +1,3 @@
1
+ import type { servicenowGetSCTasksFunction } from "../../autogen/types.js";
2
+ declare const getSCTasks: servicenowGetSCTasksFunction;
3
+ export default getSCTasks;
@@ -0,0 +1,53 @@
1
+ import { computeTimeToClosureMinutes, extractAdditionalFields, queryServiceNowTable } from "./utils/tableQuery.js";
2
+ const SC_TASK_FIELDS = [
3
+ "number",
4
+ "request_item",
5
+ "short_description",
6
+ "description",
7
+ "state",
8
+ "priority",
9
+ "assigned_to",
10
+ "assignment_group",
11
+ "opened_at",
12
+ "sys_updated_on",
13
+ "closed_at",
14
+ "work_notes",
15
+ "comments",
16
+ ];
17
+ const getSCTasks = async ({ params, authParams, }) => {
18
+ const { query, additionalFields, limit, offset } = params;
19
+ const result = await queryServiceNowTable({
20
+ authParams,
21
+ tableName: "sc_task",
22
+ fields: SC_TASK_FIELDS,
23
+ filter: query,
24
+ additionalFields,
25
+ limit,
26
+ offset,
27
+ });
28
+ if ("error" in result) {
29
+ return { success: false, error: result.error };
30
+ }
31
+ return {
32
+ success: true,
33
+ records: result.records.map(record => ({
34
+ number: record.number,
35
+ // request_item's display value is the parent Requested Item's number (e.g. RITM0010023)
36
+ ritmNumber: record.request_item,
37
+ assignee: record.assigned_to,
38
+ assignmentGroup: record.assignment_group,
39
+ shortDescription: record.short_description,
40
+ description: record.description,
41
+ state: record.state,
42
+ priority: record.priority,
43
+ openedAt: record.opened_at,
44
+ updatedAt: record.sys_updated_on,
45
+ closedAt: record.closed_at,
46
+ workNotes: record.work_notes,
47
+ comments: record.comments,
48
+ timeToClosureMinutes: computeTimeToClosureMinutes(record.opened_at, record.closed_at),
49
+ extraFields: extractAdditionalFields(record, additionalFields),
50
+ })),
51
+ };
52
+ };
53
+ export default getSCTasks;
@@ -0,0 +1,3 @@
1
+ import type { servicenowGetVIPTicketsFunction } from "../../autogen/types.js";
2
+ declare const getVIPTickets: servicenowGetVIPTicketsFunction;
3
+ export default getVIPTickets;
@@ -0,0 +1,61 @@
1
+ import { computeTimeToClosureMinutes, extractAdditionalFields, queryServiceNowTable, } from "./utils/tableQuery.js";
2
+ const SHARED_FIELDS = [
3
+ "number",
4
+ "assigned_to",
5
+ "assignment_group",
6
+ "short_description",
7
+ "description",
8
+ "state",
9
+ "opened_at",
10
+ "sys_updated_on",
11
+ "closed_at",
12
+ "work_notes",
13
+ "comments",
14
+ ];
15
+ // vip is a standard (non-custom) boolean field on sys_user used to flag VIP users.
16
+ const INCIDENT_VIP_FIELDS = [...SHARED_FIELDS, "caller_id"];
17
+ const INCIDENT_VIP_BASE_FILTER = "caller_id.vip=true";
18
+ const SC_TASK_VIP_FIELDS = [...SHARED_FIELDS, "request_item", "request_item.requested_for"];
19
+ const SC_TASK_VIP_BASE_FILTER = "request_item.requested_for.vip=true";
20
+ function mapRecord(record, ticketType, additionalFields) {
21
+ return {
22
+ ticketType,
23
+ number: record.number,
24
+ ritmNumber: ticketType === "sc_task" ? record.request_item : undefined,
25
+ vipUser: ticketType === "incident" ? record.caller_id : record["request_item.requested_for"],
26
+ assignee: record.assigned_to,
27
+ assignmentGroup: record.assignment_group,
28
+ shortDescription: record.short_description,
29
+ description: record.description,
30
+ state: record.state,
31
+ openedAt: record.opened_at,
32
+ updatedAt: record.sys_updated_on,
33
+ closedAt: record.closed_at,
34
+ workNotes: record.work_notes,
35
+ comments: record.comments,
36
+ timeToClosureMinutes: computeTimeToClosureMinutes(record.opened_at, record.closed_at),
37
+ extraFields: extractAdditionalFields(record, additionalFields),
38
+ };
39
+ }
40
+ const getVIPTickets = async ({ params, authParams, }) => {
41
+ const { ticketType, query, additionalFields, limit, offset } = params;
42
+ const isIncident = ticketType === "incident";
43
+ const result = await queryServiceNowTable({
44
+ authParams,
45
+ tableName: isIncident ? "incident" : "sc_task",
46
+ fields: isIncident ? INCIDENT_VIP_FIELDS : SC_TASK_VIP_FIELDS,
47
+ baseFilter: isIncident ? INCIDENT_VIP_BASE_FILTER : SC_TASK_VIP_BASE_FILTER,
48
+ filter: query,
49
+ additionalFields,
50
+ limit,
51
+ offset,
52
+ });
53
+ if ("error" in result) {
54
+ return { success: false, error: result.error };
55
+ }
56
+ return {
57
+ success: true,
58
+ records: result.records.map(record => mapRecord(record, ticketType, additionalFields)),
59
+ };
60
+ };
61
+ export default getVIPTickets;
@@ -0,0 +1,22 @@
1
+ import type { AuthParamsType } from "../../../autogen/types.js";
2
+ export declare const DEFAULT_LIMIT = 25;
3
+ export declare const MAX_LIMIT = 10000;
4
+ export type ServiceNowRecord = Record<string, string>;
5
+ export interface QueryServiceNowTableArgs {
6
+ authParams: AuthParamsType;
7
+ tableName: string;
8
+ fields: string[];
9
+ filter?: string;
10
+ baseFilter?: string;
11
+ additionalFields?: string[];
12
+ limit?: number;
13
+ offset?: number;
14
+ }
15
+ export type QueryServiceNowTableResult = {
16
+ records: ServiceNowRecord[];
17
+ } | {
18
+ error: string;
19
+ };
20
+ export declare function queryServiceNowTable({ authParams, tableName, fields, filter, baseFilter, additionalFields, limit, offset, }: QueryServiceNowTableArgs): Promise<QueryServiceNowTableResult>;
21
+ export declare function computeTimeToClosureMinutes(openedAt?: string, closedAt?: string): number | undefined;
22
+ export declare function extractAdditionalFields(record: ServiceNowRecord, additionalFields?: string[]): Record<string, string> | undefined;
@@ -0,0 +1,62 @@
1
+ import { ApiError, axiosClient } from "../../../util/axiosClient.js";
2
+ export const DEFAULT_LIMIT = 25;
3
+ export const MAX_LIMIT = 10000;
4
+ // Uses sysparm_display_value=true so choice fields (e.g. state, priority) and reference fields
5
+ // (e.g. assigned_to, request_item) come back as plain human-readable strings rather than nested
6
+ // {value, display_value} objects.
7
+ export async function queryServiceNowTable({ authParams, tableName, fields, filter, baseFilter, additionalFields, limit = DEFAULT_LIMIT, offset = 0, }) {
8
+ const { authToken, baseUrl } = authParams;
9
+ if (!authToken || !baseUrl) {
10
+ return { error: "authToken and baseUrl are required for the ServiceNow API" };
11
+ }
12
+ const cappedLimit = Math.min(limit, MAX_LIMIT);
13
+ const allFields = additionalFields && additionalFields.length > 0 ? [...fields, ...additionalFields] : fields;
14
+ const combinedFilter = [baseFilter, filter].filter(part => !!part).join("^");
15
+ const queryParams = new URLSearchParams();
16
+ queryParams.append("sysparm_limit", cappedLimit.toString());
17
+ queryParams.append("sysparm_offset", offset.toString());
18
+ queryParams.append("sysparm_display_value", "true");
19
+ queryParams.append("sysparm_exclude_reference_link", "true");
20
+ queryParams.append("sysparm_fields", allFields.join(","));
21
+ if (combinedFilter) {
22
+ queryParams.append("sysparm_query", combinedFilter);
23
+ }
24
+ const url = `${baseUrl.replace(/\/+$/, "")}/api/now/table/${encodeURIComponent(tableName)}?${queryParams.toString()}`;
25
+ try {
26
+ const response = await axiosClient.get(url, {
27
+ headers: {
28
+ Accept: "application/json",
29
+ Authorization: `Bearer ${authToken}`,
30
+ },
31
+ });
32
+ const result = response.data.result;
33
+ return { records: Array.isArray(result) ? result : [] };
34
+ }
35
+ catch (error) {
36
+ console.error(`Error querying ServiceNow table ${tableName}:`, error);
37
+ return { error: error instanceof ApiError ? error.message : "An unknown error occurred" };
38
+ }
39
+ }
40
+ export function computeTimeToClosureMinutes(openedAt, closedAt) {
41
+ if (!openedAt || !closedAt) {
42
+ return undefined;
43
+ }
44
+ const openedMs = new Date(openedAt).getTime();
45
+ const closedMs = new Date(closedAt).getTime();
46
+ if (Number.isNaN(openedMs) || Number.isNaN(closedMs) || closedMs < openedMs) {
47
+ return undefined;
48
+ }
49
+ return Math.round((closedMs - openedMs) / 60000);
50
+ }
51
+ export function extractAdditionalFields(record, additionalFields) {
52
+ if (!additionalFields || additionalFields.length === 0) {
53
+ return undefined;
54
+ }
55
+ const extra = {};
56
+ for (const field of additionalFields) {
57
+ if (record[field] !== undefined) {
58
+ extra[field] = record[field];
59
+ }
60
+ }
61
+ return extra;
62
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@credal/actions",
3
- "version": "0.2.222",
3
+ "version": "0.2.224",
4
4
  "type": "module",
5
5
  "description": "AI Actions by Credal AI",
6
6
  "sideEffects": false,
@@ -1,3 +0,0 @@
1
- import type { credalCallCopilotFunction } from "../../autogen/types";
2
- declare const callCopilot: credalCallCopilotFunction;
3
- export default callCopilot;
@@ -1,36 +0,0 @@
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 sdk_1 = require("@credal/sdk");
13
- const callCopilot = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
14
- var _b;
15
- const requestBody = {
16
- agentId: params.agentId,
17
- query: params.query,
18
- userEmail: params.userEmail,
19
- };
20
- const baseUrl = (_b = authParams.baseUrl) !== null && _b !== void 0 ? _b : "https://app.credal.ai/api";
21
- const client = new sdk_1.CredalClient({ environment: baseUrl, apiKey: authParams.apiKey });
22
- const response = yield client.copilots.sendMessage({
23
- agentId: requestBody.agentId,
24
- message: requestBody.query,
25
- userEmail: requestBody.userEmail,
26
- });
27
- return {
28
- response: response.sendChatResult.type === "ai_response_result"
29
- ? response.sendChatResult.response.message
30
- : "Error getting response",
31
- referencedSources: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.referencedSources : [],
32
- sourcesInDataContext: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.sourcesInDataContext : [],
33
- webSearchResults: response.sendChatResult.type === "ai_response_result" ? response.sendChatResult.webSearchResults : [],
34
- };
35
- });
36
- exports.default = callCopilot;
@@ -1 +0,0 @@
1
- export * as add from "./add";
@@ -1,37 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.add = void 0;
37
- exports.add = __importStar(require("./add"));
@@ -1,3 +0,0 @@
1
- import { salesforceGetSalesforceRecordsByQueryFunction } from "../../autogen/types";
2
- declare const getSalesforceRecordByQuery: salesforceGetSalesforceRecordsByQueryFunction;
3
- export default getSalesforceRecordByQuery;
@@ -1,43 +0,0 @@
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 getSalesforceRecordByQuery = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
14
- const { authToken, baseUrl } = authParams;
15
- const { query, limit } = params;
16
- if (!authToken || !baseUrl) {
17
- return {
18
- success: false,
19
- error: "authToken and baseUrl are required for Salesforce API",
20
- };
21
- }
22
- // The API limits the maximum number of records returned to 2000, the limit lets the user set a smaller custom limit
23
- const url = `${baseUrl}/services/data/v56.0/query/?q=${encodeURIComponent(query + " LIMIT " + (limit != undefined && limit <= 2000 ? limit : 2000))}`;
24
- try {
25
- const response = yield axiosClient_1.axiosClient.get(url, {
26
- headers: {
27
- Authorization: `Bearer ${authToken}`,
28
- },
29
- });
30
- return {
31
- success: true,
32
- records: response.data,
33
- };
34
- }
35
- catch (error) {
36
- console.error("Error retrieving Salesforce record:", error);
37
- return {
38
- success: false,
39
- error: error instanceof Error ? error.message : "An unknown error occurred",
40
- };
41
- }
42
- });
43
- exports.default = getSalesforceRecordByQuery;
@@ -1 +0,0 @@
1
- export * as listConversations from "./listConversations";
@@ -1,37 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.listConversations = void 0;
37
- exports.listConversations = __importStar(require("./listConversations"));
@@ -1,3 +0,0 @@
1
- import type { slackListConversationsFunction } from "../../autogen/types";
2
- declare const slackListConversations: slackListConversationsFunction;
3
- export default slackListConversations;
@@ -1,41 +0,0 @@
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 helpers_1 = require("./helpers");
14
- const slackListConversations = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authParams, }) {
15
- const client = new web_api_1.WebClient(authParams.authToken);
16
- try {
17
- const allChannels = yield (0, helpers_1.getSlackChannels)(client);
18
- const filteredChannels = [];
19
- for (const channel of allChannels) {
20
- if (channel.name && channel.topic && channel.topic.value && channel.purpose && channel.purpose.value) {
21
- const purpose = channel.purpose.value;
22
- const topic = channel.topic.value;
23
- const name = channel.name;
24
- filteredChannels.push(Object.assign(Object.assign({}, channel), { purpose, topic, name }));
25
- }
26
- }
27
- return {
28
- channels: filteredChannels,
29
- };
30
- }
31
- catch (error) {
32
- if (error instanceof Error) {
33
- // Enhance error with more context
34
- throw new Error(`Failed to list Slack conversations: ${error.message}`);
35
- }
36
- else {
37
- throw error;
38
- }
39
- }
40
- });
41
- exports.default = slackListConversations;