@credal/actions 0.2.209 → 0.2.211
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 +23 -3
- package/dist/actions/autogen/types.d.ts +20 -5
- package/dist/actions/autogen/types.js +18 -1
- package/dist/actions/groups.js +1 -4
- package/dist/actions/providers/credal/callCopilot.d.ts +3 -0
- package/dist/actions/providers/credal/callCopilot.js +36 -0
- 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/salesforce/getSalesforceRecordsByQuery.js +6 -4
- package/dist/actions/providers/slack/archiveChannel.js +2 -9
- 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/dist/actions/providers/slack/sendMessage.js +62 -23
- package/package.json +1 -1
- package/dist/actions/providers/github/fetchFile.d.ts +0 -3
- package/dist/actions/providers/github/fetchFile.js +0 -131
- package/dist/actions/providers/github/getContents.d.ts +0 -3
- package/dist/actions/providers/github/getContents.js +0 -41
|
@@ -694,7 +694,7 @@ export const slackCreateChannelDefinition = {
|
|
|
694
694
|
};
|
|
695
695
|
export const slackSendMessageDefinition = {
|
|
696
696
|
displayName: "Send a message",
|
|
697
|
-
description: "Sends a message to a Slack channel",
|
|
697
|
+
description: "Sends a message to a Slack channel, optionally as a reply in a thread",
|
|
698
698
|
scopes: ["chat:write"],
|
|
699
699
|
tags: [],
|
|
700
700
|
parameters: {
|
|
@@ -718,6 +718,14 @@ export const slackSendMessageDefinition = {
|
|
|
718
718
|
type: "boolean",
|
|
719
719
|
description: "Whether to enable unfurling of links in the message (defaults to true)",
|
|
720
720
|
},
|
|
721
|
+
threadTs: {
|
|
722
|
+
type: "string",
|
|
723
|
+
description: "The timestamp (ts) of a parent message to reply to in a thread. Obtain this from the `timestamp` field returned by a previous sendMessage call, or from the trailing path segment of a Slack message permalink (e.g. `p1234567890123456` → `1234567890.123456`).",
|
|
724
|
+
},
|
|
725
|
+
replyBroadcast: {
|
|
726
|
+
type: "boolean",
|
|
727
|
+
description: "When replying in a thread (threadTs provided), also post the reply to the channel. Defaults to false.",
|
|
728
|
+
},
|
|
721
729
|
},
|
|
722
730
|
},
|
|
723
731
|
output: {
|
|
@@ -732,9 +740,21 @@ export const slackSendMessageDefinition = {
|
|
|
732
740
|
type: "string",
|
|
733
741
|
description: "The error that occurred if the message was not sent successfully",
|
|
734
742
|
},
|
|
735
|
-
|
|
743
|
+
channelId: {
|
|
736
744
|
type: "string",
|
|
737
|
-
description: "The ID of the message
|
|
745
|
+
description: "The ID of the channel the message was sent to",
|
|
746
|
+
},
|
|
747
|
+
timestamp: {
|
|
748
|
+
type: "string",
|
|
749
|
+
description: "The Slack timestamp (ts) of the sent message. Use this as `threadTs` on a subsequent sendMessage call to reply in a thread.",
|
|
750
|
+
},
|
|
751
|
+
threadTs: {
|
|
752
|
+
type: "string",
|
|
753
|
+
description: "The timestamp of the parent message, if this message was sent as a threaded reply",
|
|
754
|
+
},
|
|
755
|
+
permalink: {
|
|
756
|
+
type: "string",
|
|
757
|
+
description: "The permalink URL to the sent message",
|
|
738
758
|
},
|
|
739
759
|
},
|
|
740
760
|
},
|
|
@@ -970,30 +970,45 @@ export declare const slackSendMessageParamsSchema: z.ZodObject<{
|
|
|
970
970
|
channelName: z.ZodOptional<z.ZodString>;
|
|
971
971
|
message: z.ZodString;
|
|
972
972
|
unfurlLinks: z.ZodOptional<z.ZodBoolean>;
|
|
973
|
+
threadTs: z.ZodOptional<z.ZodString>;
|
|
974
|
+
replyBroadcast: z.ZodOptional<z.ZodBoolean>;
|
|
973
975
|
}, "strip", z.ZodTypeAny, {
|
|
974
976
|
message: string;
|
|
975
977
|
channelId?: string | undefined;
|
|
976
978
|
channelName?: string | undefined;
|
|
977
979
|
unfurlLinks?: boolean | undefined;
|
|
980
|
+
threadTs?: string | undefined;
|
|
981
|
+
replyBroadcast?: boolean | undefined;
|
|
978
982
|
}, {
|
|
979
983
|
message: string;
|
|
980
984
|
channelId?: string | undefined;
|
|
981
985
|
channelName?: string | undefined;
|
|
982
986
|
unfurlLinks?: boolean | undefined;
|
|
987
|
+
threadTs?: string | undefined;
|
|
988
|
+
replyBroadcast?: boolean | undefined;
|
|
983
989
|
}>;
|
|
984
990
|
export type slackSendMessageParamsType = z.infer<typeof slackSendMessageParamsSchema>;
|
|
985
991
|
export declare const slackSendMessageOutputSchema: z.ZodObject<{
|
|
986
992
|
success: z.ZodBoolean;
|
|
987
993
|
error: z.ZodOptional<z.ZodString>;
|
|
988
|
-
|
|
994
|
+
channelId: z.ZodOptional<z.ZodString>;
|
|
995
|
+
timestamp: z.ZodOptional<z.ZodString>;
|
|
996
|
+
threadTs: z.ZodOptional<z.ZodString>;
|
|
997
|
+
permalink: z.ZodOptional<z.ZodString>;
|
|
989
998
|
}, "strip", z.ZodTypeAny, {
|
|
990
999
|
success: boolean;
|
|
991
1000
|
error?: string | undefined;
|
|
992
|
-
|
|
1001
|
+
channelId?: string | undefined;
|
|
1002
|
+
timestamp?: string | undefined;
|
|
1003
|
+
permalink?: string | undefined;
|
|
1004
|
+
threadTs?: string | undefined;
|
|
993
1005
|
}, {
|
|
994
1006
|
success: boolean;
|
|
995
1007
|
error?: string | undefined;
|
|
996
|
-
|
|
1008
|
+
channelId?: string | undefined;
|
|
1009
|
+
timestamp?: string | undefined;
|
|
1010
|
+
permalink?: string | undefined;
|
|
1011
|
+
threadTs?: string | undefined;
|
|
997
1012
|
}>;
|
|
998
1013
|
export type slackSendMessageOutputType = z.infer<typeof slackSendMessageOutputSchema>;
|
|
999
1014
|
export type slackSendMessageFunction = ActionFunction<slackSendMessageParamsType, AuthParamsType, slackSendMessageOutputType>;
|
|
@@ -7102,13 +7117,13 @@ export declare const googlemailReplyToGmailOutputSchema: z.ZodObject<{
|
|
|
7102
7117
|
}, "strip", z.ZodTypeAny, {
|
|
7103
7118
|
success: boolean;
|
|
7104
7119
|
error?: string | undefined;
|
|
7105
|
-
messageId?: string | undefined;
|
|
7106
7120
|
threadId?: string | undefined;
|
|
7121
|
+
messageId?: string | undefined;
|
|
7107
7122
|
}, {
|
|
7108
7123
|
success: boolean;
|
|
7109
7124
|
error?: string | undefined;
|
|
7110
|
-
messageId?: string | undefined;
|
|
7111
7125
|
threadId?: string | undefined;
|
|
7126
|
+
messageId?: string | undefined;
|
|
7112
7127
|
}>;
|
|
7113
7128
|
export type googlemailReplyToGmailOutputType = z.infer<typeof googlemailReplyToGmailOutputSchema>;
|
|
7114
7129
|
export type googlemailReplyToGmailFunction = ActionFunction<googlemailReplyToGmailParamsType, AuthParamsType, googlemailReplyToGmailOutputType>;
|
|
@@ -405,11 +405,28 @@ export const slackSendMessageParamsSchema = z.object({
|
|
|
405
405
|
.boolean()
|
|
406
406
|
.describe("Whether to enable unfurling of links in the message (defaults to true)")
|
|
407
407
|
.optional(),
|
|
408
|
+
threadTs: z
|
|
409
|
+
.string()
|
|
410
|
+
.describe("The timestamp (ts) of a parent message to reply to in a thread. Obtain this from the `timestamp` field returned by a previous sendMessage call, or from the trailing path segment of a Slack message permalink (e.g. `p1234567890123456` → `1234567890.123456`).")
|
|
411
|
+
.optional(),
|
|
412
|
+
replyBroadcast: z
|
|
413
|
+
.boolean()
|
|
414
|
+
.describe("When replying in a thread (threadTs provided), also post the reply to the channel. Defaults to false.")
|
|
415
|
+
.optional(),
|
|
408
416
|
});
|
|
409
417
|
export const slackSendMessageOutputSchema = z.object({
|
|
410
418
|
success: z.boolean().describe("Whether the message was sent successfully"),
|
|
411
419
|
error: z.string().describe("The error that occurred if the message was not sent successfully").optional(),
|
|
412
|
-
|
|
420
|
+
channelId: z.string().describe("The ID of the channel the message was sent to").optional(),
|
|
421
|
+
timestamp: z
|
|
422
|
+
.string()
|
|
423
|
+
.describe("The Slack timestamp (ts) of the sent message. Use this as `threadTs` on a subsequent sendMessage call to reply in a thread.")
|
|
424
|
+
.optional(),
|
|
425
|
+
threadTs: z
|
|
426
|
+
.string()
|
|
427
|
+
.describe("The timestamp of the parent message, if this message was sent as a threaded reply")
|
|
428
|
+
.optional(),
|
|
429
|
+
permalink: z.string().describe("The permalink URL to the sent message").optional(),
|
|
413
430
|
});
|
|
414
431
|
export const slackGetChannelMessagesParamsSchema = z.object({
|
|
415
432
|
channelId: z
|
package/dist/actions/groups.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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,
|
|
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
2
|
export const ACTION_GROUPS = {
|
|
3
3
|
GENERIC: {
|
|
4
4
|
description: "Generic utility actions",
|
|
@@ -47,7 +47,6 @@ export const ACTION_GROUPS = {
|
|
|
47
47
|
googleOauthUpdatePresentationDefinition,
|
|
48
48
|
googleOauthSearchDriveByKeywordsDefinition,
|
|
49
49
|
googleOauthSearchDriveByQueryDefinition,
|
|
50
|
-
googleOauthSearchDriveByQueryAndGetFileContentDefinition,
|
|
51
50
|
googleOauthGetDriveFileContentByIdDefinition,
|
|
52
51
|
],
|
|
53
52
|
},
|
|
@@ -199,8 +198,6 @@ export const ACTION_GROUPS = {
|
|
|
199
198
|
githubCreateBranchDefinition,
|
|
200
199
|
githubCreatePullRequestDefinition,
|
|
201
200
|
githubListPullRequestsDefinition,
|
|
202
|
-
githubGetFileContentDefinition,
|
|
203
|
-
githubListDirectoryDefinition,
|
|
204
201
|
],
|
|
205
202
|
},
|
|
206
203
|
ASHBY: {
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -12,11 +12,13 @@ const getSalesforceRecordsByQuery = async ({ params, authParams, }) => {
|
|
|
12
12
|
const containsAggregateFunction = aggregateFunction.some(func => query.toUpperCase().includes(func));
|
|
13
13
|
let finalQuery = query;
|
|
14
14
|
if (!containsAggregateFunction) {
|
|
15
|
-
// Strip out existing LIMIT clause if it
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
// Strip out existing LIMIT clause only if it's at the end of the query
|
|
16
|
+
// (so we don't remove LIMITs inside subqueries). Allow an optional trailing
|
|
17
|
+
// OFFSET clause and trailing whitespace/semicolons.
|
|
18
|
+
const trailingLimitRegex = /\bLIMIT\s+(\d+)(\s+OFFSET\s+\d+)?\s*;?\s*$/i;
|
|
19
|
+
const existingLimitMatch = query.match(trailingLimitRegex);
|
|
18
20
|
const queryLimit = existingLimitMatch ? parseInt(existingLimitMatch[1], 10) : null;
|
|
19
|
-
const queryWithoutLimit = query.replace(
|
|
21
|
+
const queryWithoutLimit = query.replace(trailingLimitRegex, "").trim();
|
|
20
22
|
// Recompute final limit
|
|
21
23
|
const finalLimit = Math.min(limit ?? queryLimit ?? MAX_RECORDS_LIMIT, MAX_RECORDS_LIMIT);
|
|
22
24
|
// Add limit back to final query
|
|
@@ -9,21 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { WebClient } from "@slack/web-api";
|
|
11
11
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
12
|
-
import { getSlackChannels } from "./helpers.js";
|
|
13
12
|
const archiveChannel = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
|
|
14
13
|
if (!authParams.authToken) {
|
|
15
14
|
throw new Error(MISSING_AUTH_TOKEN);
|
|
16
15
|
}
|
|
17
16
|
try {
|
|
18
17
|
const client = new WebClient(authParams.authToken);
|
|
19
|
-
const {
|
|
20
|
-
const
|
|
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 });
|
|
18
|
+
const { channelId } = params;
|
|
19
|
+
const result = yield client.conversations.archive({ channel: channelId });
|
|
27
20
|
if (!result.ok) {
|
|
28
21
|
return {
|
|
29
22
|
success: false,
|
|
@@ -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;
|
|
@@ -6,7 +6,7 @@ const sendMessage = async ({ params, authParams, }) => {
|
|
|
6
6
|
if (!authParams.authToken) {
|
|
7
7
|
throw new Error(MISSING_AUTH_TOKEN);
|
|
8
8
|
}
|
|
9
|
-
const { channelId: inputChannelId, channelName, message, unfurlLinks } = params;
|
|
9
|
+
const { channelId: inputChannelId, channelName, message, unfurlLinks, threadTs, replyBroadcast } = params;
|
|
10
10
|
if (!inputChannelId && !channelName) {
|
|
11
11
|
throw Error("Either channelId or channelName must be provided");
|
|
12
12
|
}
|
|
@@ -19,35 +19,74 @@ const sendMessage = async ({ params, authParams, }) => {
|
|
|
19
19
|
if (!channelId) {
|
|
20
20
|
throw Error(`Channel with name ${channelName} not found`);
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
const baseArgs = {
|
|
23
|
+
channel: channelId,
|
|
24
|
+
text: message,
|
|
25
|
+
unfurl_links: unfurlLinks,
|
|
26
|
+
};
|
|
27
|
+
const messageBlocks = [
|
|
28
|
+
{
|
|
29
|
+
type: "section",
|
|
30
|
+
text: {
|
|
31
|
+
type: "mrkdwn",
|
|
32
|
+
text: message,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
const postAsBlocks = () => client.chat.postMessage(threadTs
|
|
37
|
+
? replyBroadcast
|
|
38
|
+
? {
|
|
39
|
+
...baseArgs,
|
|
40
|
+
thread_ts: threadTs,
|
|
41
|
+
reply_broadcast: true,
|
|
42
|
+
blocks: messageBlocks,
|
|
43
|
+
}
|
|
44
|
+
: {
|
|
45
|
+
...baseArgs,
|
|
46
|
+
thread_ts: threadTs,
|
|
47
|
+
blocks: messageBlocks,
|
|
48
|
+
}
|
|
49
|
+
: {
|
|
50
|
+
...baseArgs,
|
|
51
|
+
blocks: messageBlocks,
|
|
37
52
|
});
|
|
53
|
+
const postAsPlainText = () => client.chat.postMessage(threadTs
|
|
54
|
+
? replyBroadcast
|
|
55
|
+
? { ...baseArgs, thread_ts: threadTs, reply_broadcast: true }
|
|
56
|
+
: { ...baseArgs, thread_ts: threadTs }
|
|
57
|
+
: baseArgs);
|
|
58
|
+
const buildSuccess = async (result) => {
|
|
59
|
+
const ts = result.ts;
|
|
60
|
+
const resolvedChannelId = result.channel ?? channelId;
|
|
61
|
+
let permalink;
|
|
62
|
+
if (ts) {
|
|
63
|
+
try {
|
|
64
|
+
const permalinkResult = await client.chat.getPermalink({
|
|
65
|
+
channel: resolvedChannelId,
|
|
66
|
+
message_ts: ts,
|
|
67
|
+
});
|
|
68
|
+
permalink = permalinkResult.permalink;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Permalink fetch failed, but the message was sent successfully
|
|
72
|
+
}
|
|
73
|
+
}
|
|
38
74
|
return slackSendMessageOutputSchema.parse({
|
|
39
75
|
success: true,
|
|
76
|
+
channelId: resolvedChannelId,
|
|
77
|
+
timestamp: ts,
|
|
78
|
+
threadTs: threadTs,
|
|
79
|
+
permalink,
|
|
40
80
|
});
|
|
81
|
+
};
|
|
82
|
+
try {
|
|
83
|
+
const result = await postAsBlocks();
|
|
84
|
+
return await buildSuccess(result);
|
|
41
85
|
}
|
|
42
86
|
catch {
|
|
43
|
-
// On any error, retry once with plain text only (no blocks)
|
|
44
87
|
try {
|
|
45
|
-
await
|
|
46
|
-
|
|
47
|
-
text: message,
|
|
48
|
-
unfurl_links: unfurlLinks,
|
|
49
|
-
});
|
|
50
|
-
return slackSendMessageOutputSchema.parse({ success: true });
|
|
88
|
+
const result = await postAsPlainText();
|
|
89
|
+
return await buildSuccess(result);
|
|
51
90
|
}
|
|
52
91
|
catch (retryError) {
|
|
53
92
|
return slackSendMessageOutputSchema.parse({
|
package/package.json
CHANGED
|
@@ -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,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;
|