@credal/actions 0.2.196 → 0.2.197

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 (71) hide show
  1. package/dist/actions/autogen/templates.js +6 -6
  2. package/dist/actions/groups.d.ts +6 -0
  3. package/dist/actions/groups.js +248 -0
  4. package/dist/actions/providers/ashby/addCandidateToProject.d.ts +3 -0
  5. package/dist/actions/providers/ashby/addCandidateToProject.js +31 -0
  6. package/dist/actions/providers/ashby/createCandidate.d.ts +3 -0
  7. package/dist/actions/providers/ashby/createCandidate.js +38 -0
  8. package/dist/actions/providers/ashby/createNote.d.ts +3 -0
  9. package/dist/actions/providers/ashby/createNote.js +31 -0
  10. package/dist/actions/providers/ashby/getCandidateInfo.d.ts +3 -0
  11. package/dist/actions/providers/ashby/getCandidateInfo.js +33 -0
  12. package/dist/actions/providers/ashby/listCandidateNotes.d.ts +3 -0
  13. package/dist/actions/providers/ashby/listCandidateNotes.js +33 -0
  14. package/dist/actions/providers/ashby/listCandidates.d.ts +3 -0
  15. package/dist/actions/providers/ashby/listCandidates.js +30 -0
  16. package/dist/actions/providers/ashby/searchCandidates.d.ts +3 -0
  17. package/dist/actions/providers/ashby/searchCandidates.js +34 -0
  18. package/dist/actions/providers/ashby/updateCandidate.d.ts +3 -0
  19. package/dist/actions/providers/ashby/updateCandidate.js +56 -0
  20. package/dist/actions/providers/credal/callCopilot.d.ts +3 -0
  21. package/dist/actions/providers/credal/callCopilot.js +36 -0
  22. package/dist/actions/providers/gong/getGongTranscripts.d.ts +3 -0
  23. package/dist/actions/providers/gong/getGongTranscripts.js +315 -0
  24. package/dist/actions/providers/jamf/getJamfComputerInventory.d.ts +3 -0
  25. package/dist/actions/providers/jamf/getJamfComputerInventory.js +37 -0
  26. package/dist/actions/providers/jamf/getJamfFileVaultRecoveryKey.d.ts +3 -0
  27. package/dist/actions/providers/jamf/getJamfFileVaultRecoveryKey.js +39 -0
  28. package/dist/actions/providers/jamf/getJamfUserComputerId.d.ts +3 -0
  29. package/dist/actions/providers/jamf/getJamfUserComputerId.js +45 -0
  30. package/dist/actions/providers/jamf/lockJamfComputerById.d.ts +3 -0
  31. package/dist/actions/providers/jamf/lockJamfComputerById.js +39 -0
  32. package/dist/actions/providers/kandji/getFVRecoveryKeyForDevice.d.ts +3 -0
  33. package/dist/actions/providers/kandji/getFVRecoveryKeyForDevice.js +85 -0
  34. package/dist/actions/providers/math/index.d.ts +1 -0
  35. package/dist/actions/providers/math/index.js +37 -0
  36. package/dist/actions/providers/okta/addUserToGroup.d.ts +3 -0
  37. package/dist/actions/providers/okta/addUserToGroup.js +56 -0
  38. package/dist/actions/providers/okta/getOktaGroup.d.ts +3 -0
  39. package/dist/actions/providers/okta/getOktaGroup.js +73 -0
  40. package/dist/actions/providers/okta/getOktaUser.d.ts +3 -0
  41. package/dist/actions/providers/okta/getOktaUser.js +40 -0
  42. package/dist/actions/providers/okta/listMFA.d.ts +3 -0
  43. package/dist/actions/providers/okta/listMFA.js +52 -0
  44. package/dist/actions/providers/okta/listOktaGroupMembers.d.ts +3 -0
  45. package/dist/actions/providers/okta/listOktaGroupMembers.js +99 -0
  46. package/dist/actions/providers/okta/listOktaGroups.d.ts +3 -0
  47. package/dist/actions/providers/okta/listOktaGroups.js +92 -0
  48. package/dist/actions/providers/okta/listOktaUserGroups.d.ts +3 -0
  49. package/dist/actions/providers/okta/listOktaUserGroups.js +83 -0
  50. package/dist/actions/providers/okta/listOktaUsers.d.ts +3 -0
  51. package/dist/actions/providers/okta/listOktaUsers.js +100 -0
  52. package/dist/actions/providers/okta/removeUserFromGroup.d.ts +3 -0
  53. package/dist/actions/providers/okta/removeUserFromGroup.js +56 -0
  54. package/dist/actions/providers/okta/resetMFA.d.ts +3 -0
  55. package/dist/actions/providers/okta/resetMFA.js +62 -0
  56. package/dist/actions/providers/okta/resetPassword.d.ts +3 -0
  57. package/dist/actions/providers/okta/resetPassword.js +57 -0
  58. package/dist/actions/providers/okta/triggerOktaWorkflow.d.ts +3 -0
  59. package/dist/actions/providers/okta/triggerOktaWorkflow.js +44 -0
  60. package/dist/actions/providers/salesforce/fetchSalesforceSchema.d.ts +3 -0
  61. package/dist/actions/providers/salesforce/fetchSalesforceSchema.js +40 -0
  62. package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.d.ts +3 -0
  63. package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.js +43 -0
  64. package/dist/actions/providers/slack/archiveChannel.d.ts +3 -0
  65. package/dist/actions/providers/slack/archiveChannel.js +35 -0
  66. package/dist/actions/providers/slack/index.d.ts +1 -0
  67. package/dist/actions/providers/slack/index.js +37 -0
  68. package/dist/actions/providers/slack/listConversations.d.ts +3 -0
  69. package/dist/actions/providers/slack/listConversations.js +41 -0
  70. package/dist/actions/providers/slackUser/searchSlackRTS.js +21 -5
  71. package/package.json +1 -1
@@ -0,0 +1,56 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { AxiosError } from "axios";
11
+ import { axiosClient } from "../../util/axiosClient.js";
12
+ const removeUserFromGroup = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authParams, params, }) {
13
+ var _b, _c;
14
+ const { authToken, baseUrl } = authParams;
15
+ if (!authToken || !baseUrl) {
16
+ return {
17
+ success: false,
18
+ error: "Missing Okta OAuth token (authToken) or base URL (baseUrl) in authParams.",
19
+ };
20
+ }
21
+ try {
22
+ const requestConfig = {
23
+ headers: {
24
+ Authorization: `Bearer ${authToken}`,
25
+ Accept: "application/json",
26
+ "Content-Type": "application/json",
27
+ },
28
+ };
29
+ const endpointUrl = new URL(`/api/v1/groups/${params.groupId}/users/${params.userId}`, baseUrl).toString();
30
+ const response = yield axiosClient.delete(endpointUrl, requestConfig);
31
+ if (response.status === 204) {
32
+ return { success: true };
33
+ }
34
+ else {
35
+ const errorDetail = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.errorSummary) || ((_c = response.data) === null || _c === void 0 ? void 0 : _c.message) || `Okta API responded with status ${response.status}`;
36
+ return { success: false, error: `Failed to remove user from group: ${errorDetail}` };
37
+ }
38
+ }
39
+ catch (error) {
40
+ console.error("Error removing user from group:", error);
41
+ let errorMessage = "Unknown error while removing user from group";
42
+ if (error instanceof AxiosError && error.response) {
43
+ const oktaError = error.response.data;
44
+ errorMessage =
45
+ (oktaError === null || oktaError === void 0 ? void 0 : oktaError.errorSummary) || (oktaError === null || oktaError === void 0 ? void 0 : oktaError.message) || `Okta API request failed with status ${error.response.status}`;
46
+ }
47
+ else if (error instanceof Error) {
48
+ errorMessage = error.message;
49
+ }
50
+ return {
51
+ success: false,
52
+ error: errorMessage,
53
+ };
54
+ }
55
+ });
56
+ export default removeUserFromGroup;
@@ -0,0 +1,3 @@
1
+ import type { oktaResetMFAFunction } from "../../autogen/types.js";
2
+ declare const resetMFA: oktaResetMFAFunction;
3
+ export default resetMFA;
@@ -0,0 +1,62 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { AxiosError } from "axios";
11
+ import { axiosClient } from "../../util/axiosClient.js";
12
+ const resetMFA = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authParams, params, }) {
13
+ var _b, _c;
14
+ const { authToken, baseUrl } = authParams;
15
+ if (!authToken || !baseUrl) {
16
+ return {
17
+ success: false,
18
+ error: "Missing Okta OAuth token (authToken) or base URL (baseUrl) in authParams.",
19
+ };
20
+ }
21
+ try {
22
+ let endpointUrl;
23
+ let method;
24
+ if (params.factorId) {
25
+ endpointUrl = new URL(`/api/v1/users/${params.userId}/factors/${params.factorId}`, baseUrl).toString();
26
+ method = "DELETE";
27
+ }
28
+ else {
29
+ endpointUrl = new URL(`/api/v1/users/${params.userId}/lifecycle/reset_factors`, baseUrl).toString();
30
+ method = "POST";
31
+ }
32
+ const requestConfig = {
33
+ headers: {
34
+ Authorization: `Bearer ${authToken}`,
35
+ Accept: "application/json",
36
+ "Content-Type": "application/json",
37
+ },
38
+ };
39
+ const response = yield axiosClient.request(Object.assign({ url: endpointUrl, method, data: method === "POST" ? {} : undefined }, requestConfig));
40
+ if (response.status === 200 || (method === "DELETE" && response.status === 204)) {
41
+ return { success: true };
42
+ }
43
+ else {
44
+ const errorDetail = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.errorSummary) || ((_c = response.data) === null || _c === void 0 ? void 0 : _c.message) || `Okta API responded with status ${response.status}`;
45
+ return { success: false, error: `Failed to reset MFA factor(s): ${errorDetail}` };
46
+ }
47
+ }
48
+ catch (error) {
49
+ console.error("Error resetting MFA:", error);
50
+ let errorMessage = "Unknown error while resetting MFA";
51
+ if (error instanceof AxiosError && error.response) {
52
+ const oktaError = error.response.data;
53
+ errorMessage =
54
+ (oktaError === null || oktaError === void 0 ? void 0 : oktaError.errorSummary) || (oktaError === null || oktaError === void 0 ? void 0 : oktaError.message) || `Okta API request failed with status ${error.response.status}`;
55
+ }
56
+ else if (error instanceof Error) {
57
+ errorMessage = error.message;
58
+ }
59
+ return { success: false, error: errorMessage };
60
+ }
61
+ });
62
+ export default resetMFA;
@@ -0,0 +1,3 @@
1
+ import type { oktaResetPasswordFunction } from "../../autogen/types.js";
2
+ declare const resetPassword: oktaResetPasswordFunction;
3
+ export default resetPassword;
@@ -0,0 +1,57 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { AxiosError } from "axios";
11
+ import { axiosClient } from "../../util/axiosClient.js";
12
+ const resetPassword = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authParams, params, }) {
13
+ var _b, _c;
14
+ const { authToken, baseUrl } = authParams;
15
+ if (!authToken || !baseUrl) {
16
+ return {
17
+ success: false,
18
+ error: "Missing Okta OAuth token (authToken) or base URL (baseUrl) in authParams.",
19
+ };
20
+ }
21
+ try {
22
+ const endpointUrl = new URL(`/api/v1/users/${params.userId}/lifecycle/reset_password`, baseUrl);
23
+ endpointUrl.searchParams.append("sendEmail", params.sendEmail.toString());
24
+ if (params.revokeSessions !== undefined) {
25
+ endpointUrl.searchParams.append("revokeSessions", params.revokeSessions.toString());
26
+ }
27
+ const requestConfig = {
28
+ headers: {
29
+ Authorization: `Bearer ${authToken}`,
30
+ Accept: "application/json",
31
+ "Content-Type": "application/json",
32
+ },
33
+ };
34
+ const response = yield axiosClient.post(endpointUrl.toString(), {}, requestConfig);
35
+ if (response.status === 200) {
36
+ return { success: true, resetPasswordUrl: response.data.resetPasswordUrl };
37
+ }
38
+ else {
39
+ const errorDetail = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.errorSummary) || ((_c = response.data) === null || _c === void 0 ? void 0 : _c.message) || `Okta API responded with status ${response.status}`;
40
+ return { success: false, error: `Failed to reset password: ${errorDetail}` };
41
+ }
42
+ }
43
+ catch (error) {
44
+ console.error("Error resetting password:", error);
45
+ let errorMessage = "Unknown error while resetting password";
46
+ if (error instanceof AxiosError && error.response) {
47
+ const oktaError = error.response.data;
48
+ errorMessage =
49
+ (oktaError === null || oktaError === void 0 ? void 0 : oktaError.errorSummary) || (oktaError === null || oktaError === void 0 ? void 0 : oktaError.message) || `Okta API request failed with status ${error.response.status}`;
50
+ }
51
+ else if (error instanceof Error) {
52
+ errorMessage = error.message;
53
+ }
54
+ return { success: false, error: errorMessage };
55
+ }
56
+ });
57
+ export default resetPassword;
@@ -0,0 +1,3 @@
1
+ import type { oktaTriggerOktaWorkflowFunction } from "../../autogen/types.js";
2
+ declare const triggerOktaWorkflow: oktaTriggerOktaWorkflowFunction;
3
+ export default triggerOktaWorkflow;
@@ -0,0 +1,44 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { ApiError, axiosClient } from "../../util/axiosClient.js";
11
+ const triggerOktaWorkflow = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authParams, params, }) {
12
+ var _b, _c;
13
+ const { authToken, subdomain } = authParams;
14
+ const { workflowId, workflowParameters } = params;
15
+ if (!authToken || !subdomain) {
16
+ return { success: false, error: "Missing authToken or subdomain in authParams." };
17
+ }
18
+ try {
19
+ const requestConfig = {
20
+ headers: Object.assign({ Accept: "application/json", "Content-Type": "application/json" }, (authToken && { Authorization: `Bearer ${authToken}` })),
21
+ };
22
+ const workflowUrl = `https://${subdomain}.workflows.okta.com/api/flo/${workflowId}/invoke`;
23
+ const response = yield axiosClient.post(workflowUrl, workflowParameters !== null && workflowParameters !== void 0 ? workflowParameters : {}, requestConfig);
24
+ if (response.status >= 200 && response.status < 300) {
25
+ return { success: true, output: response.data };
26
+ }
27
+ else {
28
+ const errorDetail = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.errorSummary) || ((_c = response.data) === null || _c === void 0 ? void 0 : _c.message) || `Workflow responded with status ${response.status}`;
29
+ return { success: false, error: `Workflow trigger failed: ${errorDetail}` };
30
+ }
31
+ }
32
+ catch (error) {
33
+ let errorMessage = "Unknown error while triggering workflow";
34
+ if (error instanceof ApiError && error.data) {
35
+ const workflowError = error.data.error;
36
+ errorMessage = workflowError + ` Status: ${error.status}`;
37
+ }
38
+ else if (error instanceof Error) {
39
+ errorMessage = error.message;
40
+ }
41
+ return { success: false, error: errorMessage };
42
+ }
43
+ });
44
+ export default triggerOktaWorkflow;
@@ -0,0 +1,3 @@
1
+ import type { salesforceFetchSalesforceSchemaByObjectFunction } from "../../autogen/types.js";
2
+ declare const fetchSalesforceSchemaByObject: salesforceFetchSalesforceSchemaByObjectFunction;
3
+ export default fetchSalesforceSchemaByObject;
@@ -0,0 +1,40 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { axiosClient } from "../../util/axiosClient.js";
11
+ const fetchSalesforceSchemaByObject = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
12
+ const { authToken, baseUrl } = authParams;
13
+ const { objectType } = params;
14
+ if (!authToken || !baseUrl) {
15
+ return {
16
+ success: false,
17
+ error: "authToken and baseUrl are required for Salesforce API",
18
+ };
19
+ }
20
+ const url = `${baseUrl}/services/data/v56.0/sobjects/${objectType}/describe/`;
21
+ try {
22
+ const response = yield axiosClient.get(url, {
23
+ headers: {
24
+ Authorization: `Bearer ${authToken}`,
25
+ },
26
+ });
27
+ return {
28
+ success: true,
29
+ schema: response.data.fields,
30
+ };
31
+ }
32
+ catch (error) {
33
+ console.error("Error retrieving Salesforce schema:", error);
34
+ return {
35
+ success: false,
36
+ error: error instanceof Error ? error.message : "An unknown error occurred",
37
+ };
38
+ }
39
+ });
40
+ export default fetchSalesforceSchemaByObject;
@@ -0,0 +1,3 @@
1
+ import { salesforceGetSalesforceRecordsByQueryFunction } from "../../autogen/types";
2
+ declare const getSalesforceRecordByQuery: salesforceGetSalesforceRecordsByQueryFunction;
3
+ export default getSalesforceRecordByQuery;
@@ -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
+ 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;
@@ -0,0 +1,3 @@
1
+ import type { slackArchiveChannelFunction } from "../../autogen/types.js";
2
+ declare const archiveChannel: slackArchiveChannelFunction;
3
+ export default archiveChannel;
@@ -0,0 +1,35 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { WebClient } from "@slack/web-api";
11
+ import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
12
+ const archiveChannel = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
13
+ if (!authParams.authToken) {
14
+ throw new Error(MISSING_AUTH_TOKEN);
15
+ }
16
+ try {
17
+ const client = new WebClient(authParams.authToken);
18
+ const { channelId } = params;
19
+ const result = yield client.conversations.archive({ channel: channelId });
20
+ if (!result.ok) {
21
+ return {
22
+ success: false,
23
+ error: result.error || "Unknown error archiving channel",
24
+ };
25
+ }
26
+ return { success: true };
27
+ }
28
+ catch (error) {
29
+ return {
30
+ success: false,
31
+ error: error instanceof Error ? error.message : "Unknown error archiving channel",
32
+ };
33
+ }
34
+ });
35
+ export default archiveChannel;
@@ -0,0 +1 @@
1
+ export * as listConversations from "./listConversations";
@@ -0,0 +1,37 @@
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"));
@@ -0,0 +1,3 @@
1
+ import type { slackListConversationsFunction } from "../../autogen/types";
2
+ declare const slackListConversations: slackListConversationsFunction;
3
+ export default slackListConversations;
@@ -0,0 +1,41 @@
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;
@@ -37,6 +37,16 @@ function appendToQuery(query, suffix) {
37
37
  return q;
38
38
  return `${q} ${s}`;
39
39
  }
40
+ function normalizeUnixSecondsInput(value) {
41
+ if (!value)
42
+ return undefined;
43
+ if (!Number.isNaN(Number(value)))
44
+ return value;
45
+ const date = new Date(value);
46
+ if (isNaN(date.getTime()))
47
+ return undefined;
48
+ return String(Math.floor(date.getTime() / 1000));
49
+ }
40
50
  /* ===================== MAIN EXPORT ===================== */
41
51
  const searchSlackRTS = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
42
52
  var _b, _c;
@@ -72,7 +82,11 @@ const searchSlackRTS = (_a) => __awaiter(void 0, [_a], void 0, function* ({ para
72
82
  query: finalQuery,
73
83
  };
74
84
  // Add optional parameters if provided
75
- if (channelTypes && channelTypes.length > 0) {
85
+ if (!channelTypes || channelTypes.length === 0) {
86
+ // Default is only public channels, which is unhelpful bc many people want to search private channels
87
+ requestParams.channel_types = ["public_channel", "private_channel", "im"];
88
+ }
89
+ else {
76
90
  requestParams.channel_types = channelTypes;
77
91
  }
78
92
  if (contentTypes && contentTypes.length > 0) {
@@ -87,11 +101,13 @@ const searchSlackRTS = (_a) => __awaiter(void 0, [_a], void 0, function* ({ para
87
101
  if (includeContextMessages !== undefined) {
88
102
  requestParams.include_context_messages = includeContextMessages;
89
103
  }
90
- if (before) {
91
- requestParams.before = before;
104
+ const normalizedBefore = normalizeUnixSecondsInput(before);
105
+ if (normalizedBefore) {
106
+ requestParams.before = normalizedBefore;
92
107
  }
93
- if (after) {
94
- requestParams.after = after;
108
+ const normalizedAfter = normalizeUnixSecondsInput(after);
109
+ if (normalizedAfter) {
110
+ requestParams.after = normalizedAfter;
95
111
  }
96
112
  try {
97
113
  // Call the assistant.search.context API
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@credal/actions",
3
- "version": "0.2.196",
3
+ "version": "0.2.197",
4
4
  "type": "module",
5
5
  "description": "AI Actions by Credal AI",
6
6
  "sideEffects": false,