@credal/actions 0.2.191 → 0.2.193
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.
- package/dist/actions/autogen/templates.js +8 -8
- package/dist/actions/autogen/types.js +7 -7
- package/dist/actions/groups.d.ts +6 -0
- package/dist/actions/groups.js +248 -0
- package/dist/actions/providers/credal/callCopilot.d.ts +3 -0
- package/dist/actions/providers/credal/callCopilot.js +36 -0
- package/dist/actions/providers/github/searchRepository.js +7 -7
- package/dist/actions/providers/jira/utils.js +14 -15
- package/dist/actions/providers/math/index.d.ts +1 -0
- package/dist/actions/providers/math/index.js +37 -0
- package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.d.ts +3 -0
- package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.js +43 -0
- package/dist/actions/providers/slack/archiveChannel.d.ts +3 -0
- package/dist/actions/providers/slack/archiveChannel.js +35 -0
- package/dist/actions/providers/slack/index.d.ts +1 -0
- package/dist/actions/providers/slack/index.js +37 -0
- package/dist/actions/providers/slack/listConversations.d.ts +3 -0
- package/dist/actions/providers/slack/listConversations.js +41 -0
- package/package.json +5 -1
- package/dist/actions/providers/jira/updateServiceDeskRequest.d.ts +0 -3
- package/dist/actions/providers/jira/updateServiceDeskRequest.js +0 -72
- package/dist/actions/providers/microsoft/sendOutlookEmail.d.ts +0 -3
- package/dist/actions/providers/microsoft/sendOutlookEmail.js +0 -48
|
@@ -1060,7 +1060,7 @@ export const slackUserSearchSlackDefinition = {
|
|
|
1060
1060
|
};
|
|
1061
1061
|
export const slackUserSearchSlackRTSDefinition = {
|
|
1062
1062
|
displayName: "Search Slack with Real-Time Search",
|
|
1063
|
-
description: "Search Slack messages across your organization using Slack's Real-Time Search API
|
|
1063
|
+
description: "Search Slack messages across your organization using Slack's Real-Time Search API. Searches all conversations within the scope of permissions granted and returns relevant messages with content, author info, and permalinks.",
|
|
1064
1064
|
scopes: [
|
|
1065
1065
|
"search:read.public",
|
|
1066
1066
|
"search:read.private",
|
|
@@ -1075,25 +1075,25 @@ export const slackUserSearchSlackRTSDefinition = {
|
|
|
1075
1075
|
properties: {
|
|
1076
1076
|
query: {
|
|
1077
1077
|
type: "string",
|
|
1078
|
-
description: 'The search query string (e.g., "What is project gizmo?", "mobile UX revamp").
|
|
1078
|
+
description: 'The search query string (e.g., "What is project gizmo?", "mobile UX revamp"). If you want to filter by user or channel, leave this field empty and use the userEmails and channelIds fields.',
|
|
1079
1079
|
},
|
|
1080
1080
|
userEmails: {
|
|
1081
1081
|
type: "array",
|
|
1082
|
-
description: 'Optional. Users to
|
|
1082
|
+
description: 'Optional. Users that you want to see messages from. Each value should be a plain-text email (e.g. "user@company.com"). Will be resolved to a Slack user ID and formatted into the query as from:<@U...>.',
|
|
1083
1083
|
items: {
|
|
1084
1084
|
type: "string",
|
|
1085
1085
|
},
|
|
1086
1086
|
},
|
|
1087
1087
|
channelIds: {
|
|
1088
1088
|
type: "array",
|
|
1089
|
-
description: 'Optional. Channels to
|
|
1089
|
+
description: 'Optional. Channels that you want to see messages from. Each value can be a Slack channel ID like "C12345678" (or "<#C123...>") OR a channel name like "general" / "#general". Values are formatted into the query as in:<#C...> (ID) or in:#channel-name (name).',
|
|
1090
1090
|
items: {
|
|
1091
1091
|
type: "string",
|
|
1092
1092
|
},
|
|
1093
1093
|
},
|
|
1094
1094
|
channelTypes: {
|
|
1095
1095
|
type: "array",
|
|
1096
|
-
description: "Filter by channel types to search. If not specified, searches all channel types the user has access to.",
|
|
1096
|
+
description: "Filter by channel types to search (e.g., public_channel, private_channel, mpim, im). If not specified, searches all channel types the user has access to.",
|
|
1097
1097
|
items: {
|
|
1098
1098
|
type: "string",
|
|
1099
1099
|
enum: ["public_channel", "private_channel", "mpim", "im"],
|
|
@@ -1101,7 +1101,7 @@ export const slackUserSearchSlackRTSDefinition = {
|
|
|
1101
1101
|
},
|
|
1102
1102
|
contentTypes: {
|
|
1103
1103
|
type: "array",
|
|
1104
|
-
description: "Filter by content types to include in search results.",
|
|
1104
|
+
description: "Filter by content types to include in search results (e.g., messages, files, channels). If not specified, searches all content types the user has access to.",
|
|
1105
1105
|
items: {
|
|
1106
1106
|
type: "string",
|
|
1107
1107
|
enum: ["messages", "files", "channels"],
|
|
@@ -1127,11 +1127,11 @@ export const slackUserSearchSlackRTSDefinition = {
|
|
|
1127
1127
|
},
|
|
1128
1128
|
before: {
|
|
1129
1129
|
type: "string",
|
|
1130
|
-
description: "Optional UNIX timestamp filter. If present, filters for results before this date.",
|
|
1130
|
+
description: "Optional UNIX timestamp filter. If present, filters for results before this date. Use this field when you want to find messages in a specific date/time range.",
|
|
1131
1131
|
},
|
|
1132
1132
|
after: {
|
|
1133
1133
|
type: "string",
|
|
1134
|
-
description: "Optional UNIX timestamp filter. If present, filters for results after this date.",
|
|
1134
|
+
description: "Optional UNIX timestamp filter. If present, filters for results after this date. Use this field when you want to find messages in a specific date/time range.",
|
|
1135
1135
|
},
|
|
1136
1136
|
},
|
|
1137
1137
|
},
|
|
@@ -529,23 +529,23 @@ export const slackUserSearchSlackOutputSchema = z.object({
|
|
|
529
529
|
export const slackUserSearchSlackRTSParamsSchema = z.object({
|
|
530
530
|
query: z
|
|
531
531
|
.string()
|
|
532
|
-
.describe('The search query string (e.g., "What is project gizmo?", "mobile UX revamp").
|
|
532
|
+
.describe('The search query string (e.g., "What is project gizmo?", "mobile UX revamp"). If you want to filter by user or channel, leave this field empty and use the userEmails and channelIds fields.')
|
|
533
533
|
.optional(),
|
|
534
534
|
userEmails: z
|
|
535
535
|
.array(z.string())
|
|
536
|
-
.describe('Optional. Users to
|
|
536
|
+
.describe('Optional. Users that you want to see messages from. Each value should be a plain-text email (e.g. "user@company.com"). Will be resolved to a Slack user ID and formatted into the query as from:<@U...>.')
|
|
537
537
|
.optional(),
|
|
538
538
|
channelIds: z
|
|
539
539
|
.array(z.string())
|
|
540
|
-
.describe('Optional. Channels to
|
|
540
|
+
.describe('Optional. Channels that you want to see messages from. Each value can be a Slack channel ID like "C12345678" (or "<#C123...>") OR a channel name like "general" / "#general". Values are formatted into the query as in:<#C...> (ID) or in:#channel-name (name).')
|
|
541
541
|
.optional(),
|
|
542
542
|
channelTypes: z
|
|
543
543
|
.array(z.enum(["public_channel", "private_channel", "mpim", "im"]))
|
|
544
|
-
.describe("Filter by channel types to search. If not specified, searches all channel types the user has access to.")
|
|
544
|
+
.describe("Filter by channel types to search (e.g., public_channel, private_channel, mpim, im). If not specified, searches all channel types the user has access to.")
|
|
545
545
|
.optional(),
|
|
546
546
|
contentTypes: z
|
|
547
547
|
.array(z.enum(["messages", "files", "channels"]))
|
|
548
|
-
.describe("Filter by content types to include in search results.")
|
|
548
|
+
.describe("Filter by content types to include in search results (e.g., messages, files, channels). If not specified, searches all content types the user has access to.")
|
|
549
549
|
.default(["messages", "files", "channels"]),
|
|
550
550
|
includeBots: z.boolean().describe("Whether to include bot messages in search results.").default(false),
|
|
551
551
|
includeContextMessages: z
|
|
@@ -555,11 +555,11 @@ export const slackUserSearchSlackRTSParamsSchema = z.object({
|
|
|
555
555
|
limit: z.number().gte(1).lte(20).describe("Maximum number of results per page (max 20).").default(20),
|
|
556
556
|
before: z
|
|
557
557
|
.string()
|
|
558
|
-
.describe("Optional UNIX timestamp filter. If present, filters for results before this date.")
|
|
558
|
+
.describe("Optional UNIX timestamp filter. If present, filters for results before this date. Use this field when you want to find messages in a specific date/time range.")
|
|
559
559
|
.optional(),
|
|
560
560
|
after: z
|
|
561
561
|
.string()
|
|
562
|
-
.describe("Optional UNIX timestamp filter. If present, filters for results after this date.")
|
|
562
|
+
.describe("Optional UNIX timestamp filter. If present, filters for results after this date. Use this field when you want to find messages in a specific date/time range.")
|
|
563
563
|
.optional(),
|
|
564
564
|
});
|
|
565
565
|
export const slackUserSearchSlackRTSOutputSchema = z.object({
|
|
@@ -0,0 +1,248 @@
|
|
|
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, } 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
|
+
googleOauthGetDriveFileContentByIdDefinition,
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
GOOGLE_CALENDAR: {
|
|
54
|
+
description: "Actions for interacting with Google Calendar",
|
|
55
|
+
actions: [
|
|
56
|
+
googleOauthScheduleCalendarMeetingDefinition,
|
|
57
|
+
googleOauthListCalendarsDefinition,
|
|
58
|
+
googleOauthListCalendarEventsDefinition,
|
|
59
|
+
googleOauthUpdateCalendarEventDefinition,
|
|
60
|
+
googleOauthDeleteCalendarEventDefinition,
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
GMAIL: {
|
|
64
|
+
description: "Actions for interacting with Gmail",
|
|
65
|
+
actions: [googlemailSearchGmailMessagesDefinition, googlemailListGmailThreadsDefinition],
|
|
66
|
+
},
|
|
67
|
+
LINKEDIN_SHARE_POST: {
|
|
68
|
+
description: "Action for creating a share post url on linkedin",
|
|
69
|
+
actions: [linkedinCreateShareLinkedinPostUrlDefinition],
|
|
70
|
+
},
|
|
71
|
+
ZENDESK_ACTIONS: {
|
|
72
|
+
description: "Actions for interacting with Zendesk",
|
|
73
|
+
actions: [
|
|
74
|
+
zendeskCreateZendeskTicketDefinition,
|
|
75
|
+
zendeskListZendeskTicketsDefinition,
|
|
76
|
+
zendeskGetTicketDetailsDefinition,
|
|
77
|
+
zendeskUpdateTicketStatusDefinition,
|
|
78
|
+
zendeskAddCommentToTicketDefinition,
|
|
79
|
+
zendeskAssignTicketDefinition,
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
BING_SEARCH: {
|
|
83
|
+
description: "Action for searching Bing",
|
|
84
|
+
actions: [bingGetTopNSearchResultUrlsDefinition],
|
|
85
|
+
},
|
|
86
|
+
MONGO_INSERT_DOC: {
|
|
87
|
+
description: "Action for inserting a document into a MongoDB collection",
|
|
88
|
+
actions: [mongoInsertMongoDocDefinition],
|
|
89
|
+
},
|
|
90
|
+
SNOWFLAKE_ACTIONS: {
|
|
91
|
+
description: "Action for getting content from a Snowflake table",
|
|
92
|
+
actions: [snowflakeGetRowByFieldValueDefinition, snowflakeRunSnowflakeQueryDefinition],
|
|
93
|
+
},
|
|
94
|
+
JIRA_ACTIONS: {
|
|
95
|
+
description: "Action for interacting with Jira tickets",
|
|
96
|
+
actions: [
|
|
97
|
+
jiraAssignJiraTicketDefinition,
|
|
98
|
+
jiraCreateJiraTicketDefinition,
|
|
99
|
+
jiraCommentJiraTicketDefinition,
|
|
100
|
+
jiraGetJiraTicketDetailsDefinition,
|
|
101
|
+
jiraGetJiraTicketHistoryDefinition,
|
|
102
|
+
jiraUpdateJiraTicketDetailsDefinition,
|
|
103
|
+
jiraUpdateJiraTicketStatusDefinition,
|
|
104
|
+
jiraGetJiraIssuesByQueryDefinition,
|
|
105
|
+
jiraGetServiceDesksDefinition,
|
|
106
|
+
jiraCreateServiceDeskRequestDefinition,
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
JIRA_ORG_ACTIONS: {
|
|
110
|
+
description: "Action for interacting with Jira tickets",
|
|
111
|
+
actions: [
|
|
112
|
+
jiraOrgAssignJiraTicketDefinition,
|
|
113
|
+
jiraOrgCreateJiraTicketDefinition,
|
|
114
|
+
jiraOrgCommentJiraTicketDefinition,
|
|
115
|
+
jiraOrgGetJiraTicketDetailsDefinition,
|
|
116
|
+
jiraOrgGetJiraTicketHistoryDefinition,
|
|
117
|
+
jiraOrgUpdateJiraTicketDetailsDefinition,
|
|
118
|
+
jiraOrgUpdateJiraTicketStatusDefinition,
|
|
119
|
+
jiraOrgGetJiraIssuesByQueryDefinition,
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
OPENSTREETMAP_GET_LATITUDE_LONGITUDE_FROM_LOCATION: {
|
|
123
|
+
description: "Action for getting the latitude and longitude of a location",
|
|
124
|
+
actions: [openstreetmapGetLatitudeLongitudeFromLocationDefinition],
|
|
125
|
+
},
|
|
126
|
+
NWS_GET_FORECAST_FOR_LOCATION: {
|
|
127
|
+
description: "Action for getting the weather forecast for a location",
|
|
128
|
+
actions: [nwsGetForecastForLocationDefinition],
|
|
129
|
+
},
|
|
130
|
+
FIRECRAWL: {
|
|
131
|
+
description: "Actions for interacting with Firecrawl",
|
|
132
|
+
actions: [
|
|
133
|
+
firecrawlScrapeUrlDefinition,
|
|
134
|
+
firecrawlScrapeTweetDataWithNitterDefinition,
|
|
135
|
+
firecrawlDeepResearchDefinition,
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
RESEND: {
|
|
139
|
+
description: "Action for sending an email",
|
|
140
|
+
actions: [resendSendEmailDefinition],
|
|
141
|
+
},
|
|
142
|
+
X: {
|
|
143
|
+
description: "Actions for interacting with X(formerly twitter)",
|
|
144
|
+
actions: [xCreateShareXPostUrlDefinition],
|
|
145
|
+
},
|
|
146
|
+
GONG: {
|
|
147
|
+
description: "Actions for interacting with Gong",
|
|
148
|
+
actions: [gongGetGongTranscriptsDefinition],
|
|
149
|
+
},
|
|
150
|
+
FINNHUB: {
|
|
151
|
+
description: "Action for interacting with Finnhub for stock market data",
|
|
152
|
+
actions: [finnhubSymbolLookupDefinition, finnhubGetBasicFinancialsDefinition],
|
|
153
|
+
},
|
|
154
|
+
JAMF: {
|
|
155
|
+
description: "Actions for interacting with Jamf",
|
|
156
|
+
actions: [
|
|
157
|
+
jamfGetJamfComputerInventoryDefinition,
|
|
158
|
+
jamfGetJamfFileVaultRecoveryKeyDefinition,
|
|
159
|
+
jamfGetJamfUserComputerIdDefinition,
|
|
160
|
+
jamfLockJamfComputerByIdDefinition,
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
LOOKER: {
|
|
164
|
+
description: "Actions for interacting with Looker",
|
|
165
|
+
actions: [lookerEnableUserByEmailDefinition],
|
|
166
|
+
},
|
|
167
|
+
SALESFORCE: {
|
|
168
|
+
description: "Actions for interacting with Salesforce",
|
|
169
|
+
actions: [
|
|
170
|
+
salesforceUpdateRecordDefinition,
|
|
171
|
+
salesforceCreateRecordDefinition,
|
|
172
|
+
salesforceCreateCaseDefinition,
|
|
173
|
+
salesforceGenerateSalesReportDefinition,
|
|
174
|
+
salesforceGetRecordDefinition,
|
|
175
|
+
salesforceGetSalesforceRecordsByQueryDefinition,
|
|
176
|
+
salesforceFetchSalesforceSchemaByObjectDefinition,
|
|
177
|
+
],
|
|
178
|
+
},
|
|
179
|
+
MICROSOFT: {
|
|
180
|
+
description: "Actions for interacting with Microsoft 365",
|
|
181
|
+
actions: [
|
|
182
|
+
microsoftMessageTeamsChatDefinition,
|
|
183
|
+
microsoftMessageTeamsChannelDefinition,
|
|
184
|
+
microsoftUpdateSpreadsheetDefinition,
|
|
185
|
+
microsoftUpdateDocumentDefinition,
|
|
186
|
+
microsoftCreateDocumentDefinition,
|
|
187
|
+
microsoftGetDocumentDefinition,
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
KANDJI: {
|
|
191
|
+
description: "Actions for interacting with Kandji",
|
|
192
|
+
actions: [kandjiGetFVRecoveryKeyForDeviceDefinition],
|
|
193
|
+
},
|
|
194
|
+
GITHUB: {
|
|
195
|
+
description: "Actions for interacting with GitHub",
|
|
196
|
+
actions: [
|
|
197
|
+
githubCreateOrUpdateFileDefinition,
|
|
198
|
+
githubCreateBranchDefinition,
|
|
199
|
+
githubCreatePullRequestDefinition,
|
|
200
|
+
githubListPullRequestsDefinition,
|
|
201
|
+
],
|
|
202
|
+
},
|
|
203
|
+
ASHBY: {
|
|
204
|
+
description: "Actions for interacting with Ashby",
|
|
205
|
+
actions: [
|
|
206
|
+
ashbyCreateNoteDefinition,
|
|
207
|
+
ashbyGetCandidateInfoDefinition,
|
|
208
|
+
ashbyListCandidatesDefinition,
|
|
209
|
+
ashbyListCandidateNotesDefinition,
|
|
210
|
+
ashbySearchCandidatesDefinition,
|
|
211
|
+
ashbyCreateCandidateDefinition,
|
|
212
|
+
ashbyUpdateCandidateDefinition,
|
|
213
|
+
ashbyAddCandidateToProjectDefinition,
|
|
214
|
+
],
|
|
215
|
+
},
|
|
216
|
+
NOTION: {
|
|
217
|
+
description: "Actions for interacting with Notion",
|
|
218
|
+
actions: [notionSearchByTitleDefinition],
|
|
219
|
+
},
|
|
220
|
+
GOOGLE_GROUPS: {
|
|
221
|
+
description: "Google Workspace Groups management actions",
|
|
222
|
+
actions: [
|
|
223
|
+
googleOauthListGroupsDefinition,
|
|
224
|
+
googleOauthGetGroupDefinition,
|
|
225
|
+
googleOauthListGroupMembersDefinition,
|
|
226
|
+
googleOauthHasGroupMemberDefinition,
|
|
227
|
+
googleOauthAddGroupMemberDefinition,
|
|
228
|
+
googleOauthDeleteGroupMemberDefinition,
|
|
229
|
+
],
|
|
230
|
+
},
|
|
231
|
+
OKTA: {
|
|
232
|
+
description: "Actions for interacting with Okta",
|
|
233
|
+
actions: [
|
|
234
|
+
oktaListOktaUsersDefinition,
|
|
235
|
+
oktaGetOktaUserDefinition,
|
|
236
|
+
oktaListOktaUserGroupsDefinition,
|
|
237
|
+
oktaListOktaGroupsDefinition,
|
|
238
|
+
oktaGetOktaGroupDefinition,
|
|
239
|
+
oktaListOktaGroupMembersDefinition,
|
|
240
|
+
oktaRemoveUserFromGroupDefinition,
|
|
241
|
+
oktaAddUserToGroupDefinition,
|
|
242
|
+
oktaResetPasswordDefinition,
|
|
243
|
+
oktaResetMFADefinition,
|
|
244
|
+
oktaListMFADefinition,
|
|
245
|
+
oktaTriggerOktaWorkflowDefinition,
|
|
246
|
+
],
|
|
247
|
+
},
|
|
248
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
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;
|
|
@@ -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.
|
|
50
|
+
url: item.html_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.
|
|
71
|
+
url: item.html_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;
|
|
79
|
+
var _a, _b, _c;
|
|
80
80
|
return ({
|
|
81
81
|
filename: f.filename,
|
|
82
82
|
status: f.status,
|
|
83
|
-
patch: (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
|
|
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"),
|
|
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;
|
|
107
|
+
var _a, _b, _c;
|
|
108
108
|
return ({
|
|
109
109
|
filename: f.filename,
|
|
110
110
|
status: f.status,
|
|
111
|
-
patch: (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
|
|
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"),
|
|
112
112
|
});
|
|
113
113
|
})
|
|
114
114
|
: undefined;
|
|
115
115
|
return {
|
|
116
116
|
number: item.number,
|
|
117
117
|
title: item.title,
|
|
118
|
-
|
|
118
|
+
url: item.html_url,
|
|
119
119
|
state: item.state,
|
|
120
120
|
isPullRequest: isPR,
|
|
121
121
|
body: item.body,
|
|
@@ -8,22 +8,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { axiosClient } from "../../util/axiosClient.js";
|
|
11
|
+
import { markdownToAdf } from "marklassian";
|
|
11
12
|
const cloudStrategy = {
|
|
12
|
-
formatText: (text) =>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
],
|
|
26
|
-
}),
|
|
13
|
+
formatText: (text) => {
|
|
14
|
+
try {
|
|
15
|
+
return markdownToAdf(text);
|
|
16
|
+
}
|
|
17
|
+
catch (_a) {
|
|
18
|
+
// Fallback to plain text ADF if markdown parsing fails
|
|
19
|
+
return {
|
|
20
|
+
type: "doc",
|
|
21
|
+
version: 1,
|
|
22
|
+
content: [{ type: "paragraph", content: [{ type: "text", text }] }],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
},
|
|
27
26
|
formatUser: (userId) => {
|
|
28
27
|
if (!userId)
|
|
29
28
|
return null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as add from "./add";
|
|
@@ -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.add = void 0;
|
|
37
|
+
exports.add = __importStar(require("./add"));
|
|
@@ -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,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,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;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@credal/actions",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.193",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI Actions by Credal AI",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"jsonwebtoken": "^9.0.2",
|
|
71
71
|
"limiter": "^3.0.0",
|
|
72
72
|
"mammoth": "^1.11.00",
|
|
73
|
+
"marklassian": "^1.1.0",
|
|
73
74
|
"mongodb": "^6.13.1",
|
|
74
75
|
"node-forge": "^1.3.3",
|
|
75
76
|
"officeparser": "^5.2.2",
|
|
@@ -82,5 +83,8 @@
|
|
|
82
83
|
"uuid": "^11.1.0",
|
|
83
84
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
|
|
84
85
|
"zod": "^3.25.0"
|
|
86
|
+
},
|
|
87
|
+
"overrides": {
|
|
88
|
+
"fast-xml-parser": "^5.3.3"
|
|
85
89
|
}
|
|
86
90
|
}
|
|
@@ -1,72 +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 { 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;
|
|
@@ -1,48 +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 { 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;
|