@credal/actions 0.2.207 → 0.2.208

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.
@@ -10873,6 +10873,10 @@ export const salesforceExecuteReportDefinition = {
10873
10873
  type: "boolean",
10874
10874
  description: "Whether to include detailed report metadata in the response",
10875
10875
  },
10876
+ includeSummary: {
10877
+ type: "boolean",
10878
+ description: "Whether to include summary/aggregate data (totals, counts, etc.)",
10879
+ },
10876
10880
  },
10877
10881
  },
10878
10882
  output: {
@@ -10883,6 +10887,11 @@ export const salesforceExecuteReportDefinition = {
10883
10887
  type: "boolean",
10884
10888
  description: "Whether the report was successfully executed",
10885
10889
  },
10890
+ summary: {
10891
+ type: "object",
10892
+ description: "Summary/aggregate data from the report (totals, counts, averages, etc.)",
10893
+ additionalProperties: true,
10894
+ },
10886
10895
  reportData: {
10887
10896
  type: "object",
10888
10897
  description: "The report data returned by Salesforce, including factMap with aggregates and row-level details",
@@ -7685,25 +7685,31 @@ export type salesforceListReportsFunction = ActionFunction<salesforceListReports
7685
7685
  export declare const salesforceExecuteReportParamsSchema: z.ZodObject<{
7686
7686
  reportId: z.ZodString;
7687
7687
  includeDetails: z.ZodOptional<z.ZodBoolean>;
7688
+ includeSummary: z.ZodOptional<z.ZodBoolean>;
7688
7689
  }, "strip", z.ZodTypeAny, {
7689
7690
  reportId: string;
7690
7691
  includeDetails?: boolean | undefined;
7692
+ includeSummary?: boolean | undefined;
7691
7693
  }, {
7692
7694
  reportId: string;
7693
7695
  includeDetails?: boolean | undefined;
7696
+ includeSummary?: boolean | undefined;
7694
7697
  }>;
7695
7698
  export type salesforceExecuteReportParamsType = z.infer<typeof salesforceExecuteReportParamsSchema>;
7696
7699
  export declare const salesforceExecuteReportOutputSchema: z.ZodObject<{
7697
7700
  success: z.ZodBoolean;
7701
+ summary: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodAny, z.objectOutputType<{}, z.ZodAny, "strip">, z.objectInputType<{}, z.ZodAny, "strip">>>;
7698
7702
  reportData: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodAny, z.objectOutputType<{}, z.ZodAny, "strip">, z.objectInputType<{}, z.ZodAny, "strip">>>;
7699
7703
  error: z.ZodOptional<z.ZodString>;
7700
7704
  }, "strip", z.ZodTypeAny, {
7701
7705
  success: boolean;
7702
7706
  error?: string | undefined;
7707
+ summary?: z.objectOutputType<{}, z.ZodAny, "strip"> | undefined;
7703
7708
  reportData?: z.objectOutputType<{}, z.ZodAny, "strip"> | undefined;
7704
7709
  }, {
7705
7710
  success: boolean;
7706
7711
  error?: string | undefined;
7712
+ summary?: z.objectInputType<{}, z.ZodAny, "strip"> | undefined;
7707
7713
  reportData?: z.objectInputType<{}, z.ZodAny, "strip"> | undefined;
7708
7714
  }>;
7709
7715
  export type salesforceExecuteReportOutputType = z.infer<typeof salesforceExecuteReportOutputSchema>;
@@ -3996,9 +3996,15 @@ export const salesforceListReportsOutputSchema = z.object({
3996
3996
  export const salesforceExecuteReportParamsSchema = z.object({
3997
3997
  reportId: z.string().describe("Id for the report to execute"),
3998
3998
  includeDetails: z.boolean().describe("Whether to include detailed report metadata in the response").optional(),
3999
+ includeSummary: z.boolean().describe("Whether to include summary/aggregate data (totals, counts, etc.)").optional(),
3999
4000
  });
4000
4001
  export const salesforceExecuteReportOutputSchema = z.object({
4001
4002
  success: z.boolean().describe("Whether the report was successfully executed"),
4003
+ summary: z
4004
+ .object({})
4005
+ .catchall(z.any())
4006
+ .describe("Summary/aggregate data from the report (totals, counts, averages, etc.)")
4007
+ .optional(),
4002
4008
  reportData: z
4003
4009
  .object({})
4004
4010
  .catchall(z.any())
@@ -47,7 +47,7 @@ const searchRepository = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pa
47
47
  name: item.name,
48
48
  path: item.path,
49
49
  sha: item.sha.slice(0, 7),
50
- url: item.html_url,
50
+ url: item.url,
51
51
  score: item.score,
52
52
  textMatches: item.text_matches
53
53
  ? item.text_matches.map(match => {
@@ -68,7 +68,7 @@ const searchRepository = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pa
68
68
  const full = commitDetails.find(c => c.data.sha === item.sha);
69
69
  return {
70
70
  sha: item.sha,
71
- url: item.html_url,
71
+ url: item.url,
72
72
  commit: {
73
73
  message: item.commit.message,
74
74
  author: item.commit.author,
@@ -76,11 +76,11 @@ const searchRepository = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pa
76
76
  score: item.score,
77
77
  author: (_a = item.author) !== null && _a !== void 0 ? _a : undefined,
78
78
  files: ((_b = full === null || full === void 0 ? void 0 : full.data.files) === null || _b === void 0 ? void 0 : _b.slice(0, MAX_FILES_PER_COMMIT).map(f => {
79
- var _a, _b, _c;
79
+ var _a;
80
80
  return ({
81
81
  filename: f.filename,
82
82
  status: f.status,
83
- patch: (_c = (_b = (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n")) === null || _b === void 0 ? void 0 : _b.slice(0, MAX_PATCH_LINES)) === null || _c === void 0 ? void 0 : _c.join("\n"),
83
+ patch: (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
84
84
  });
85
85
  })) || [],
86
86
  };
@@ -104,18 +104,18 @@ const searchRepository = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pa
104
104
  const prIndex = prNumbers.indexOf(item.number);
105
105
  const files = isPR && prIndex !== -1
106
106
  ? prFiles[prIndex].data.slice(0, MAX_FILES_PER_PR).map(f => {
107
- var _a, _b, _c;
107
+ var _a;
108
108
  return ({
109
109
  filename: f.filename,
110
110
  status: f.status,
111
- patch: (_c = (_b = (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n")) === null || _b === void 0 ? void 0 : _b.slice(0, MAX_PATCH_LINES)) === null || _c === void 0 ? void 0 : _c.join("\n"),
111
+ patch: (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
112
112
  });
113
113
  })
114
114
  : undefined;
115
115
  return {
116
116
  number: item.number,
117
117
  title: item.title,
118
- url: item.html_url,
118
+ html_url: item.html_url,
119
119
  state: item.state,
120
120
  isPullRequest: isPR,
121
121
  body: item.body,
@@ -0,0 +1,3 @@
1
+ import type { jiraUpdateServiceDeskRequestFunction } from "../../autogen/types.js";
2
+ declare const updateServiceDeskRequest: jiraUpdateServiceDeskRequestFunction;
3
+ export default updateServiceDeskRequest;
@@ -0,0 +1,72 @@
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 updateServiceDeskRequest = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
12
+ const { issueId, requestTypeId, summary, description, priority, customFields } = params;
13
+ const { authToken, cloudId, baseUrl } = authParams;
14
+ if (!cloudId || !authToken) {
15
+ throw new Error("Valid Cloud ID and auth token are required to update service desk request");
16
+ }
17
+ // Use the regular Jira API for updating service desk requests as they are still Jira issues
18
+ const apiUrl = `https://api.atlassian.com/ex/jira/${cloudId}/rest/api/3/issue/${issueId}`;
19
+ const formattedDescription = description
20
+ ? {
21
+ type: "doc",
22
+ version: 1,
23
+ content: [
24
+ {
25
+ type: "paragraph",
26
+ content: [
27
+ {
28
+ type: "text",
29
+ text: description,
30
+ },
31
+ ],
32
+ },
33
+ ],
34
+ }
35
+ : undefined;
36
+ const payload = {
37
+ fields: Object.assign(Object.assign(Object.assign(Object.assign({}, (summary && { summary })), (formattedDescription && { description: formattedDescription })), (priority && { priority: { name: priority } })), (customFields && Object.assign({}, customFields))),
38
+ };
39
+ try {
40
+ yield axiosClient.put(apiUrl, payload, {
41
+ headers: {
42
+ Authorization: `Bearer ${authToken}`,
43
+ Accept: "application/json",
44
+ "Content-Type": "application/json",
45
+ },
46
+ });
47
+ // Get the updated issue details to return current status and web link
48
+ const getResponse = yield axiosClient.get(apiUrl, {
49
+ headers: {
50
+ Authorization: `Bearer ${authToken}`,
51
+ Accept: "application/json",
52
+ },
53
+ });
54
+ const issueKey = getResponse.data.key;
55
+ const currentStatus = getResponse.data.fields.status.name;
56
+ const webLink = `${baseUrl}/browse/${issueKey}`;
57
+ return {
58
+ success: true,
59
+ issueKey,
60
+ webLink,
61
+ currentStatus,
62
+ };
63
+ }
64
+ catch (error) {
65
+ console.error("Error updating service desk request:", error);
66
+ return {
67
+ success: false,
68
+ error: error instanceof Error ? error.message : "Unknown error",
69
+ };
70
+ }
71
+ });
72
+ export default updateServiceDeskRequest;
@@ -0,0 +1,3 @@
1
+ import type { microsoftSendOutlookEmailFunction } from "../../autogen/types.js";
2
+ declare const sendEmail: microsoftSendOutlookEmailFunction;
3
+ export default sendEmail;
@@ -0,0 +1,48 @@
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 { getGraphClient } from "./utils.js";
11
+ const sendEmail = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
12
+ const { toRecipients, subject, body, ccRecipients, bccRecipients } = params;
13
+ let client = undefined;
14
+ try {
15
+ client = yield getGraphClient(authParams);
16
+ }
17
+ catch (error) {
18
+ return {
19
+ success: false,
20
+ error: "Error while authorizing: " + (error instanceof Error ? error.message : "Unknown error"),
21
+ };
22
+ }
23
+ try {
24
+ const message = {
25
+ message: Object.assign(Object.assign({ subject, body: {
26
+ contentType: "HTML",
27
+ content: body,
28
+ }, toRecipients: toRecipients.map(email => ({ emailAddress: { address: email } })) }, (ccRecipients && ccRecipients.length > 0
29
+ ? { ccRecipients: ccRecipients.map(email => ({ emailAddress: { address: email } })) }
30
+ : {})), (bccRecipients && bccRecipients.length > 0
31
+ ? { bccRecipients: bccRecipients.map(email => ({ emailAddress: { address: email } })) }
32
+ : {})),
33
+ saveToSentItems: true,
34
+ };
35
+ yield client.api("/me/sendMail").post(message);
36
+ return {
37
+ success: true,
38
+ };
39
+ }
40
+ catch (error) {
41
+ console.error(error);
42
+ return {
43
+ success: false,
44
+ error: "Error sending email: " + (error instanceof Error ? error.message : "Unknown error"),
45
+ };
46
+ }
47
+ });
48
+ export default sendEmail;
@@ -1,15 +1,36 @@
1
1
  import { ApiError, axiosClient } from "../../util/axiosClient.js";
2
2
  const executeReport = async ({ params, authParams, }) => {
3
3
  const { authToken, baseUrl } = authParams;
4
- const { reportId, includeDetails } = params;
4
+ const { reportId, includeDetails, includeSummary } = params;
5
5
  if (!authToken || !baseUrl) {
6
6
  return { success: false, error: "authToken and baseUrl are required for Salesforce API" };
7
7
  }
8
8
  const url = `${baseUrl}/services/data/v65.0/analytics/reports/${reportId}${includeDetails ? "?includeDetails=true" : ""}`;
9
9
  try {
10
10
  const response = await axiosClient.get(url, { headers: { Authorization: `Bearer ${authToken}` } });
11
+ let summary;
12
+ if (includeSummary && response.data) {
13
+ summary = {
14
+ aggregates: response.data.factMap?.aggregates || response.data.factMap?.["T!T"]?.aggregates,
15
+ groupingsDown: response.data.groupingsDown?.groupings?.map((g) => ({
16
+ label: g.label,
17
+ value: g.value,
18
+ aggregates: g.aggregates,
19
+ })),
20
+ groupingsAcross: response.data.groupingsAcross?.groupings?.map((g) => ({
21
+ label: g.label,
22
+ value: g.value,
23
+ aggregates: g.aggregates,
24
+ })),
25
+ reportMetadata: {
26
+ name: response.data.reportMetadata?.name,
27
+ reportType: response.data.reportMetadata?.reportType?.type,
28
+ },
29
+ };
30
+ }
11
31
  return {
12
32
  success: true,
33
+ summary,
13
34
  reportData: includeDetails ? response.data : undefined,
14
35
  };
15
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@credal/actions",
3
- "version": "0.2.207",
3
+ "version": "0.2.208",
4
4
  "type": "module",
5
5
  "description": "AI Actions by Credal AI",
6
6
  "sideEffects": false,
@@ -1,6 +0,0 @@
1
- import type { ActionTemplate } from "./parse.js";
2
- export type ActionGroups = Record<string, {
3
- description: string;
4
- actions: ActionTemplate[];
5
- }>;
6
- export declare const ACTION_GROUPS: ActionGroups;
@@ -1,251 +0,0 @@
1
- import { genericFillTemplateDefinition, confluenceOverwritePageDefinition, googlemapsValidateAddressDefinition, mathAddDefinition, mongoInsertMongoDocDefinition, slackSendMessageDefinition, slackGetChannelMessagesDefinition, slackCreateChannelDefinition, slackArchiveChannelDefinition, snowflakeGetRowByFieldValueDefinition, zendeskCreateZendeskTicketDefinition, zendeskListZendeskTicketsDefinition, zendeskGetTicketDetailsDefinition, zendeskUpdateTicketStatusDefinition, zendeskAddCommentToTicketDefinition, zendeskAssignTicketDefinition, openstreetmapGetLatitudeLongitudeFromLocationDefinition, nwsGetForecastForLocationDefinition, jiraAssignJiraTicketDefinition, jiraCommentJiraTicketDefinition, jiraCreateJiraTicketDefinition, jiraGetJiraTicketDetailsDefinition, jiraGetJiraTicketHistoryDefinition, jiraUpdateJiraTicketDetailsDefinition, jiraUpdateJiraTicketStatusDefinition, jiraGetServiceDesksDefinition, jiraCreateServiceDeskRequestDefinition, googlemapsNearbysearchRestaurantsDefinition, firecrawlScrapeUrlDefinition, resendSendEmailDefinition, linkedinCreateShareLinkedinPostUrlDefinition, googleOauthCreateNewGoogleDocDefinition, xCreateShareXPostUrlDefinition, firecrawlScrapeTweetDataWithNitterDefinition, finnhubSymbolLookupDefinition, finnhubGetBasicFinancialsDefinition, confluenceFetchPageContentDefinition, snowflakeRunSnowflakeQueryDefinition, lookerEnableUserByEmailDefinition, googleOauthUpdateDocDefinition, googleOauthScheduleCalendarMeetingDefinition, googleOauthListCalendarsDefinition, googleOauthListCalendarEventsDefinition, googleOauthUpdateCalendarEventDefinition, googleOauthDeleteCalendarEventDefinition, googleOauthCreateSpreadsheetDefinition, googleOauthUpdateSpreadsheetDefinition, googleOauthCreatePresentationDefinition, googleOauthUpdatePresentationDefinition, googleOauthSearchDriveByKeywordsDefinition, googlemailSearchGmailMessagesDefinition, googlemailListGmailThreadsDefinition, googleOauthListGroupsDefinition, googleOauthGetGroupDefinition, googleOauthListGroupMembersDefinition, googleOauthHasGroupMemberDefinition, googleOauthAddGroupMemberDefinition, googleOauthDeleteGroupMemberDefinition, salesforceUpdateRecordDefinition, salesforceCreateCaseDefinition, salesforceGenerateSalesReportDefinition, salesforceGetRecordDefinition, salesforceGetSalesforceRecordsByQueryDefinition, microsoftMessageTeamsChatDefinition, microsoftMessageTeamsChannelDefinition, asanaCommentTaskDefinition, asanaCreateTaskDefinition, asanaUpdateTaskDefinition, asanaSearchTasksDefinition, githubCreateOrUpdateFileDefinition, githubCreateBranchDefinition, githubCreatePullRequestDefinition, microsoftUpdateSpreadsheetDefinition, microsoftUpdateDocumentDefinition, microsoftCreateDocumentDefinition, microsoftGetDocumentDefinition, salesforceFetchSalesforceSchemaByObjectDefinition, firecrawlDeepResearchDefinition, jiraGetJiraIssuesByQueryDefinition, githubListPullRequestsDefinition, salesforceCreateRecordDefinition, ashbyCreateNoteDefinition, ashbyGetCandidateInfoDefinition, ashbyListCandidatesDefinition, ashbyListCandidateNotesDefinition, ashbySearchCandidatesDefinition, ashbyCreateCandidateDefinition, ashbyUpdateCandidateDefinition, ashbyAddCandidateToProjectDefinition, bingGetTopNSearchResultUrlsDefinition, gongGetGongTranscriptsDefinition, kandjiGetFVRecoveryKeyForDeviceDefinition, asanaListAsanaTasksByProjectDefinition, notionSearchByTitleDefinition, asanaGetTasksDetailsDefinition, jamfGetJamfComputerInventoryDefinition, jamfGetJamfFileVaultRecoveryKeyDefinition, oktaListOktaUsersDefinition, oktaGetOktaUserDefinition, oktaListOktaUserGroupsDefinition, oktaListOktaGroupsDefinition, oktaGetOktaGroupDefinition, oktaListOktaGroupMembersDefinition, oktaRemoveUserFromGroupDefinition, oktaAddUserToGroupDefinition, oktaResetPasswordDefinition, oktaResetMFADefinition, oktaListMFADefinition, jamfGetJamfUserComputerIdDefinition, jamfLockJamfComputerByIdDefinition, oktaTriggerOktaWorkflowDefinition, jiraOrgAssignJiraTicketDefinition, jiraOrgCreateJiraTicketDefinition, jiraOrgCommentJiraTicketDefinition, jiraOrgGetJiraTicketDetailsDefinition, jiraOrgGetJiraTicketHistoryDefinition, jiraOrgUpdateJiraTicketDetailsDefinition, jiraOrgUpdateJiraTicketStatusDefinition, jiraOrgGetJiraIssuesByQueryDefinition, googleOauthGetDriveFileContentByIdDefinition, googleOauthSearchDriveByQueryDefinition, googleOauthSearchDriveByQueryAndGetFileContentDefinition, githubGetFileContentDefinition, githubListDirectoryDefinition, } from "./autogen/templates.js";
2
- export const ACTION_GROUPS = {
3
- GENERIC: {
4
- description: "Generic utility actions",
5
- actions: [genericFillTemplateDefinition],
6
- },
7
- ASANA: {
8
- description: "Actions for interacting with Asana",
9
- actions: [
10
- asanaCommentTaskDefinition,
11
- asanaCreateTaskDefinition,
12
- asanaUpdateTaskDefinition,
13
- asanaSearchTasksDefinition,
14
- asanaListAsanaTasksByProjectDefinition,
15
- asanaGetTasksDetailsDefinition,
16
- ],
17
- },
18
- SLACK_LIST_CONVERSATIONS: {
19
- description: "Actions for interacting with Slack",
20
- actions: [
21
- slackSendMessageDefinition,
22
- slackGetChannelMessagesDefinition,
23
- slackCreateChannelDefinition,
24
- slackArchiveChannelDefinition,
25
- ],
26
- },
27
- CONFLUENCE: {
28
- description: "Action for interacting with Confluence",
29
- actions: [confluenceOverwritePageDefinition, confluenceFetchPageContentDefinition],
30
- },
31
- MATH_ADD: {
32
- description: "Action for adding two numbers",
33
- actions: [mathAddDefinition],
34
- },
35
- GOOGLE_MAPS: {
36
- description: "Action for interacting with Google Maps",
37
- actions: [googlemapsValidateAddressDefinition, googlemapsNearbysearchRestaurantsDefinition],
38
- },
39
- GOOGLE_DRIVE: {
40
- description: "Action for interacting with Google Drive",
41
- actions: [
42
- googleOauthCreateNewGoogleDocDefinition,
43
- googleOauthUpdateDocDefinition,
44
- googleOauthCreateSpreadsheetDefinition,
45
- googleOauthUpdateSpreadsheetDefinition,
46
- googleOauthCreatePresentationDefinition,
47
- googleOauthUpdatePresentationDefinition,
48
- googleOauthSearchDriveByKeywordsDefinition,
49
- googleOauthSearchDriveByQueryDefinition,
50
- googleOauthSearchDriveByQueryAndGetFileContentDefinition,
51
- googleOauthGetDriveFileContentByIdDefinition,
52
- ],
53
- },
54
- GOOGLE_CALENDAR: {
55
- description: "Actions for interacting with Google Calendar",
56
- actions: [
57
- googleOauthScheduleCalendarMeetingDefinition,
58
- googleOauthListCalendarsDefinition,
59
- googleOauthListCalendarEventsDefinition,
60
- googleOauthUpdateCalendarEventDefinition,
61
- googleOauthDeleteCalendarEventDefinition,
62
- ],
63
- },
64
- GMAIL: {
65
- description: "Actions for interacting with Gmail",
66
- actions: [googlemailSearchGmailMessagesDefinition, googlemailListGmailThreadsDefinition],
67
- },
68
- LINKEDIN_SHARE_POST: {
69
- description: "Action for creating a share post url on linkedin",
70
- actions: [linkedinCreateShareLinkedinPostUrlDefinition],
71
- },
72
- ZENDESK_ACTIONS: {
73
- description: "Actions for interacting with Zendesk",
74
- actions: [
75
- zendeskCreateZendeskTicketDefinition,
76
- zendeskListZendeskTicketsDefinition,
77
- zendeskGetTicketDetailsDefinition,
78
- zendeskUpdateTicketStatusDefinition,
79
- zendeskAddCommentToTicketDefinition,
80
- zendeskAssignTicketDefinition,
81
- ],
82
- },
83
- BING_SEARCH: {
84
- description: "Action for searching Bing",
85
- actions: [bingGetTopNSearchResultUrlsDefinition],
86
- },
87
- MONGO_INSERT_DOC: {
88
- description: "Action for inserting a document into a MongoDB collection",
89
- actions: [mongoInsertMongoDocDefinition],
90
- },
91
- SNOWFLAKE_ACTIONS: {
92
- description: "Action for getting content from a Snowflake table",
93
- actions: [snowflakeGetRowByFieldValueDefinition, snowflakeRunSnowflakeQueryDefinition],
94
- },
95
- JIRA_ACTIONS: {
96
- description: "Action for interacting with Jira tickets",
97
- actions: [
98
- jiraAssignJiraTicketDefinition,
99
- jiraCreateJiraTicketDefinition,
100
- jiraCommentJiraTicketDefinition,
101
- jiraGetJiraTicketDetailsDefinition,
102
- jiraGetJiraTicketHistoryDefinition,
103
- jiraUpdateJiraTicketDetailsDefinition,
104
- jiraUpdateJiraTicketStatusDefinition,
105
- jiraGetJiraIssuesByQueryDefinition,
106
- jiraGetServiceDesksDefinition,
107
- jiraCreateServiceDeskRequestDefinition,
108
- ],
109
- },
110
- JIRA_ORG_ACTIONS: {
111
- description: "Action for interacting with Jira tickets",
112
- actions: [
113
- jiraOrgAssignJiraTicketDefinition,
114
- jiraOrgCreateJiraTicketDefinition,
115
- jiraOrgCommentJiraTicketDefinition,
116
- jiraOrgGetJiraTicketDetailsDefinition,
117
- jiraOrgGetJiraTicketHistoryDefinition,
118
- jiraOrgUpdateJiraTicketDetailsDefinition,
119
- jiraOrgUpdateJiraTicketStatusDefinition,
120
- jiraOrgGetJiraIssuesByQueryDefinition,
121
- ],
122
- },
123
- OPENSTREETMAP_GET_LATITUDE_LONGITUDE_FROM_LOCATION: {
124
- description: "Action for getting the latitude and longitude of a location",
125
- actions: [openstreetmapGetLatitudeLongitudeFromLocationDefinition],
126
- },
127
- NWS_GET_FORECAST_FOR_LOCATION: {
128
- description: "Action for getting the weather forecast for a location",
129
- actions: [nwsGetForecastForLocationDefinition],
130
- },
131
- FIRECRAWL: {
132
- description: "Actions for interacting with Firecrawl",
133
- actions: [
134
- firecrawlScrapeUrlDefinition,
135
- firecrawlScrapeTweetDataWithNitterDefinition,
136
- firecrawlDeepResearchDefinition,
137
- ],
138
- },
139
- RESEND: {
140
- description: "Action for sending an email",
141
- actions: [resendSendEmailDefinition],
142
- },
143
- X: {
144
- description: "Actions for interacting with X(formerly twitter)",
145
- actions: [xCreateShareXPostUrlDefinition],
146
- },
147
- GONG: {
148
- description: "Actions for interacting with Gong",
149
- actions: [gongGetGongTranscriptsDefinition],
150
- },
151
- FINNHUB: {
152
- description: "Action for interacting with Finnhub for stock market data",
153
- actions: [finnhubSymbolLookupDefinition, finnhubGetBasicFinancialsDefinition],
154
- },
155
- JAMF: {
156
- description: "Actions for interacting with Jamf",
157
- actions: [
158
- jamfGetJamfComputerInventoryDefinition,
159
- jamfGetJamfFileVaultRecoveryKeyDefinition,
160
- jamfGetJamfUserComputerIdDefinition,
161
- jamfLockJamfComputerByIdDefinition,
162
- ],
163
- },
164
- LOOKER: {
165
- description: "Actions for interacting with Looker",
166
- actions: [lookerEnableUserByEmailDefinition],
167
- },
168
- SALESFORCE: {
169
- description: "Actions for interacting with Salesforce",
170
- actions: [
171
- salesforceUpdateRecordDefinition,
172
- salesforceCreateRecordDefinition,
173
- salesforceCreateCaseDefinition,
174
- salesforceGenerateSalesReportDefinition,
175
- salesforceGetRecordDefinition,
176
- salesforceGetSalesforceRecordsByQueryDefinition,
177
- salesforceFetchSalesforceSchemaByObjectDefinition,
178
- ],
179
- },
180
- MICROSOFT: {
181
- description: "Actions for interacting with Microsoft 365",
182
- actions: [
183
- microsoftMessageTeamsChatDefinition,
184
- microsoftMessageTeamsChannelDefinition,
185
- microsoftUpdateSpreadsheetDefinition,
186
- microsoftUpdateDocumentDefinition,
187
- microsoftCreateDocumentDefinition,
188
- microsoftGetDocumentDefinition,
189
- ],
190
- },
191
- KANDJI: {
192
- description: "Actions for interacting with Kandji",
193
- actions: [kandjiGetFVRecoveryKeyForDeviceDefinition],
194
- },
195
- GITHUB: {
196
- description: "Actions for interacting with GitHub",
197
- actions: [
198
- githubCreateOrUpdateFileDefinition,
199
- githubCreateBranchDefinition,
200
- githubCreatePullRequestDefinition,
201
- githubListPullRequestsDefinition,
202
- githubGetFileContentDefinition,
203
- githubListDirectoryDefinition,
204
- ],
205
- },
206
- ASHBY: {
207
- description: "Actions for interacting with Ashby",
208
- actions: [
209
- ashbyCreateNoteDefinition,
210
- ashbyGetCandidateInfoDefinition,
211
- ashbyListCandidatesDefinition,
212
- ashbyListCandidateNotesDefinition,
213
- ashbySearchCandidatesDefinition,
214
- ashbyCreateCandidateDefinition,
215
- ashbyUpdateCandidateDefinition,
216
- ashbyAddCandidateToProjectDefinition,
217
- ],
218
- },
219
- NOTION: {
220
- description: "Actions for interacting with Notion",
221
- actions: [notionSearchByTitleDefinition],
222
- },
223
- GOOGLE_GROUPS: {
224
- description: "Google Workspace Groups management actions",
225
- actions: [
226
- googleOauthListGroupsDefinition,
227
- googleOauthGetGroupDefinition,
228
- googleOauthListGroupMembersDefinition,
229
- googleOauthHasGroupMemberDefinition,
230
- googleOauthAddGroupMemberDefinition,
231
- googleOauthDeleteGroupMemberDefinition,
232
- ],
233
- },
234
- OKTA: {
235
- description: "Actions for interacting with Okta",
236
- actions: [
237
- oktaListOktaUsersDefinition,
238
- oktaGetOktaUserDefinition,
239
- oktaListOktaUserGroupsDefinition,
240
- oktaListOktaGroupsDefinition,
241
- oktaGetOktaGroupDefinition,
242
- oktaListOktaGroupMembersDefinition,
243
- oktaRemoveUserFromGroupDefinition,
244
- oktaAddUserToGroupDefinition,
245
- oktaResetPasswordDefinition,
246
- oktaResetMFADefinition,
247
- oktaListMFADefinition,
248
- oktaTriggerOktaWorkflowDefinition,
249
- ],
250
- },
251
- };
@@ -1,3 +0,0 @@
1
- import type { githubSearchRepositoryFunction } from "../../autogen/types.js";
2
- declare const searchRepository: githubSearchRepositoryFunction;
3
- export default searchRepository;
@@ -1,131 +0,0 @@
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 { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
11
- // Limits on the number of results to return
12
- const MAX_CODE_RESULTS = 15;
13
- const MAX_COMMITS = 10;
14
- const MAX_FILES_PER_COMMIT = 5;
15
- const MAX_ISSUES_OR_PRS = 10;
16
- const MAX_FILES_PER_PR = 5;
17
- const MAX_PATCH_LINES = 20;
18
- const MAX_FRAGMENT_LINES = 20;
19
- const searchRepository = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
20
- const { Octokit } = yield import("octokit");
21
- if (!authParams.authToken) {
22
- throw new Error(MISSING_AUTH_TOKEN);
23
- }
24
- const octokit = new Octokit({ auth: authParams.authToken });
25
- const { organization, repository, query } = params;
26
- // Search CODE with text match metadata
27
- const codeResultsResponse = yield octokit.rest.search.code({
28
- q: `${query} in:file,path repo:${organization}/${repository}`,
29
- text_match: true,
30
- headers: {
31
- accept: "application/vnd.github.v3.text-match+json",
32
- },
33
- });
34
- const codeResults = codeResultsResponse.data.items.slice(0, MAX_CODE_RESULTS).map(item => ({
35
- name: item.name,
36
- path: item.path,
37
- sha: item.sha,
38
- url: item.url,
39
- repository: {
40
- full_name: item.repository.full_name,
41
- html_url: item.repository.html_url,
42
- },
43
- score: item.score,
44
- textMatches: item.text_matches
45
- ? item.text_matches.map(match => {
46
- var _a, _b, _c, _d;
47
- return ({
48
- object_url: (_a = match.object_url) !== null && _a !== void 0 ? _a : undefined,
49
- object_type: (_b = match.object_type) !== null && _b !== void 0 ? _b : undefined,
50
- fragment: (_c = match.fragment) === null || _c === void 0 ? void 0 : _c.split("\n").slice(0, MAX_FRAGMENT_LINES).join("\n"),
51
- matches: (_d = match.matches) !== null && _d !== void 0 ? _d : [],
52
- });
53
- })
54
- : [],
55
- }));
56
- // Search COMMITS
57
- const commitResults = yield octokit.rest.search.commits({
58
- q: `${query} repo:${organization}/${repository}`,
59
- headers: {
60
- accept: "application/vnd.github.cloak-preview+json",
61
- },
62
- });
63
- const commitSHAs = commitResults.data.items.slice(0, MAX_COMMITS).map(item => item.sha);
64
- const commitDetails = yield Promise.all(commitSHAs.map(sha => octokit.rest.repos.getCommit({ owner: organization, repo: repository, ref: sha })));
65
- const enrichedCommits = commitResults.data.items.slice(0, MAX_COMMITS).map(item => {
66
- var _a, _b;
67
- const full = commitDetails.find(c => c.data.sha === item.sha);
68
- return {
69
- sha: item.sha,
70
- url: item.url,
71
- commit: {
72
- message: item.commit.message,
73
- author: item.commit.author,
74
- },
75
- score: item.score,
76
- author: (_a = item.author) !== null && _a !== void 0 ? _a : undefined,
77
- files: ((_b = full === null || full === void 0 ? void 0 : full.data.files) === null || _b === void 0 ? void 0 : _b.slice(0, MAX_FILES_PER_COMMIT).map(f => {
78
- var _a;
79
- return ({
80
- filename: f.filename,
81
- status: f.status,
82
- patch: (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
83
- });
84
- })) || [],
85
- };
86
- });
87
- // Search ISSUES & PRs
88
- const issueResults = yield octokit.rest.search.issuesAndPullRequests({
89
- q: `${query} repo:${organization}/${repository}`,
90
- });
91
- const prItems = issueResults.data.items.filter(item => item.pull_request).slice(0, MAX_ISSUES_OR_PRS);
92
- const prNumbers = prItems.map(item => item.number);
93
- const prFiles = yield Promise.all(prNumbers.map(number => octokit.rest.pulls.listFiles({ owner: organization, repo: repository, pull_number: number })));
94
- const issuesAndPRs = issueResults.data.items
95
- .slice(0, MAX_ISSUES_OR_PRS)
96
- .map(item => {
97
- var _a, _b, _c, _d;
98
- const isPR = !!item.pull_request;
99
- const prIndex = prNumbers.indexOf(item.number);
100
- const files = isPR && prIndex !== -1
101
- ? prFiles[prIndex].data.slice(0, MAX_FILES_PER_PR).map(f => {
102
- var _a;
103
- return ({
104
- filename: f.filename,
105
- status: f.status,
106
- patch: (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
107
- });
108
- })
109
- : undefined;
110
- return {
111
- number: item.number,
112
- title: item.title,
113
- html_url: item.html_url,
114
- state: item.state,
115
- isPullRequest: isPR,
116
- body: item.body,
117
- user: {
118
- email: (_b = (_a = item.user) === null || _a === void 0 ? void 0 : _a.email) !== null && _b !== void 0 ? _b : undefined,
119
- name: (_d = (_c = item.user) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : undefined,
120
- },
121
- score: item.score,
122
- files,
123
- };
124
- });
125
- return {
126
- code: codeResults,
127
- commits: enrichedCommits,
128
- issuesAndPullRequests: issuesAndPRs,
129
- };
130
- });
131
- export default searchRepository;
@@ -1,3 +0,0 @@
1
- import type { githubSearchRepositoryFunction } from "../../autogen/types.js";
2
- declare const searchRepository: githubSearchRepositoryFunction;
3
- export default searchRepository;
@@ -1,41 +0,0 @@
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 { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
11
- // Limits on the number of results to return
12
- const MAX_CODE_RESULTS = 15;
13
- const MAX_COMMITS = 10;
14
- const MAX_FILES_PER_COMMIT = 5;
15
- const MAX_ISSUES_OR_PRS = 10;
16
- const MAX_FILES_PER_PR = 5;
17
- const MAX_PATCH_LINES = 20;
18
- const MAX_FRAGMENT_LINES = 20;
19
- const searchRepository = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
20
- const { Octokit } = yield import("octokit");
21
- if (!authParams.authToken) {
22
- throw new Error(MISSING_AUTH_TOKEN);
23
- }
24
- const octokit = new Octokit({ auth: authParams.authToken });
25
- const { organization, repository, query } = params;
26
- // Search CODE with text match metadata
27
- const codeResultsResponse = yield octokit.rest.search.code({
28
- q: `${query} in:file,path repo:${organization}/${repository}`,
29
- text_match: true,
30
- headers: {
31
- accept: "application/vnd.github.v3.text-match+json",
32
- },
33
- });
34
- const commitResults = yield octokit.rest.repos.getCommit({ owner: organization, repo: repository, ref: sha });
35
- return {
36
- code: codeResults,
37
- commits: enrichedCommits,
38
- issuesAndPullRequests: issuesAndPRs,
39
- };
40
- });
41
- export default searchRepository;
@@ -1,3 +0,0 @@
1
- import type { slackArchiveChannelFunction } from "../../autogen/types.js";
2
- declare const archiveChannel: slackArchiveChannelFunction;
3
- export default archiveChannel;
@@ -1,42 +0,0 @@
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
- import { getSlackChannels } from "./helpers.js";
13
- const archiveChannel = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
14
- if (!authParams.authToken) {
15
- throw new Error(MISSING_AUTH_TOKEN);
16
- }
17
- try {
18
- const client = new WebClient(authParams.authToken);
19
- const { channelName } = params;
20
- const allChannels = yield getSlackChannels(client);
21
- const channel = allChannels.find(channel => channel.name == channelName);
22
- if (!channel || !channel.id) {
23
- throw Error(`Channel with name ${channelName} not found`);
24
- }
25
- yield client.conversations.join({ channel: channel.id });
26
- const result = yield client.conversations.archive({ channel: channel.id });
27
- if (!result.ok) {
28
- return {
29
- success: false,
30
- error: result.error || "Unknown error archiving channel",
31
- };
32
- }
33
- return { success: true };
34
- }
35
- catch (error) {
36
- return {
37
- success: false,
38
- error: error instanceof Error ? error.message : "Unknown error archiving channel",
39
- };
40
- }
41
- });
42
- export default archiveChannel;