@credal/actions 0.2.197 → 0.2.199
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/actionMapper.js +8 -1
- package/dist/actions/autogen/templates.d.ts +1 -0
- package/dist/actions/autogen/templates.js +79 -18
- package/dist/actions/autogen/types.d.ts +39 -0
- package/dist/actions/autogen/types.js +43 -8
- package/dist/actions/groups.js +4 -1
- package/dist/actions/invoke.js +11 -22
- package/dist/actions/parse.js +231 -244
- package/dist/actions/providers/asana/commentAsanaTask.js +8 -15
- package/dist/actions/providers/asana/createAsanaTask.js +20 -21
- package/dist/actions/providers/asana/getTasksDetails.js +18 -34
- package/dist/actions/providers/asana/listAsanaTasksByProject.js +62 -79
- package/dist/actions/providers/asana/searchAsanaTasks.js +6 -16
- package/dist/actions/providers/asana/updateAsanaTask.js +16 -15
- package/dist/actions/providers/asana/utils.js +47 -64
- package/dist/actions/providers/bing/getTopNSearchResultUrls.js +4 -14
- package/dist/actions/providers/confluence/fetchPageContent.js +5 -15
- package/dist/actions/providers/confluence/overwritePage.js +5 -14
- package/dist/actions/providers/finnhub/getBasicFinancials.js +7 -19
- package/dist/actions/providers/finnhub/symbolLookup.js +3 -12
- package/dist/actions/providers/firecrawl/deepResearch.js +11 -21
- package/dist/actions/providers/firecrawl/getTopNSearchResultUrls.js +8 -21
- package/dist/actions/providers/firecrawl/scrapeTweetDataWithNitter.js +4 -13
- package/dist/actions/providers/firecrawl/scrapeUrl.js +16 -21
- package/dist/actions/providers/firecrawl/searchAndScrape.js +6 -17
- package/dist/actions/providers/generic/fillTemplate.js +2 -11
- package/dist/actions/providers/github/createBranch.js +9 -18
- package/dist/actions/providers/github/createOrUpdateFile.js +6 -15
- package/dist/actions/providers/github/createPullRequest.js +5 -14
- package/dist/actions/providers/github/fetchFile.d.ts +3 -0
- package/dist/actions/providers/github/fetchFile.js +131 -0
- package/dist/actions/providers/github/getBranch.js +4 -13
- package/dist/actions/providers/github/getContents.d.ts +3 -0
- package/dist/actions/providers/github/getContents.js +41 -0
- package/dist/actions/providers/github/getFileContent.js +6 -16
- package/dist/actions/providers/github/getPullRequestDetails.js +39 -18
- package/dist/actions/providers/github/listCommits.js +17 -15
- package/dist/actions/providers/github/listDirectory.js +13 -25
- package/dist/actions/providers/github/listPullRequests.js +4 -13
- package/dist/actions/providers/github/searchOrganization.js +29 -49
- package/dist/actions/providers/github/utils.js +5 -16
- package/dist/actions/providers/gitlab/getFileContent.js +13 -24
- package/dist/actions/providers/gitlab/getMergeRequest.js +18 -30
- package/dist/actions/providers/gitlab/listDirectory.js +15 -27
- package/dist/actions/providers/gitlab/searchGroup.js +45 -52
- package/dist/actions/providers/gitlab/utils.js +19 -32
- package/dist/actions/providers/google-oauth/addGroupMember.js +3 -12
- package/dist/actions/providers/google-oauth/addTextToTopOfDoc.js +3 -12
- package/dist/actions/providers/google-oauth/appendRowsToSpreadsheet.js +4 -13
- package/dist/actions/providers/google-oauth/createNewGoogleDoc.js +7 -17
- package/dist/actions/providers/google-oauth/createPresentation.js +7 -13
- package/dist/actions/providers/google-oauth/createSpreadsheet.js +7 -13
- package/dist/actions/providers/google-oauth/deleteCalendarEvent.js +3 -12
- package/dist/actions/providers/google-oauth/deleteGroupMember.js +3 -12
- package/dist/actions/providers/google-oauth/deleteRowFromSpreadsheet.js +3 -12
- package/dist/actions/providers/google-oauth/editAGoogleCalendarEvent.js +4 -14
- package/dist/actions/providers/google-oauth/getDriveFileContentById.js +23 -33
- package/dist/actions/providers/google-oauth/getGroup.js +3 -12
- package/dist/actions/providers/google-oauth/getPresentation.js +23 -37
- package/dist/actions/providers/google-oauth/hasGroupMember.js +3 -12
- package/dist/actions/providers/google-oauth/listCalendarEvents.js +27 -21
- package/dist/actions/providers/google-oauth/listCalendars.js +4 -14
- package/dist/actions/providers/google-oauth/listGroupMembers.js +4 -13
- package/dist/actions/providers/google-oauth/listGroups.js +4 -14
- package/dist/actions/providers/google-oauth/queryGoogleBigQuery.js +10 -21
- package/dist/actions/providers/google-oauth/scheduleCalendarMeeting.js +11 -14
- package/dist/actions/providers/google-oauth/searchDriveByKeywords.js +3 -12
- package/dist/actions/providers/google-oauth/searchDriveByKeywordsAndGetFileContent.js +12 -23
- package/dist/actions/providers/google-oauth/searchDriveByQuery.js +30 -42
- package/dist/actions/providers/google-oauth/searchDriveByQueryAndGetFileContent.js +9 -20
- package/dist/actions/providers/google-oauth/updateCalendarEvent.js +3 -12
- package/dist/actions/providers/google-oauth/updateDoc.js +3 -12
- package/dist/actions/providers/google-oauth/updatePresentation.js +3 -12
- package/dist/actions/providers/google-oauth/updateRowsInSpreadsheet.js +4 -13
- package/dist/actions/providers/google-oauth/updateSpreadsheet.js +3 -12
- package/dist/actions/providers/google-oauth/utils/decodeMessage.js +7 -8
- package/dist/actions/providers/googleSearch/customSearch.js +18 -36
- package/dist/actions/providers/googlemail/listGmailThreads.js +7 -16
- package/dist/actions/providers/googlemail/replyToGmail.d.ts +3 -0
- package/dist/actions/providers/googlemail/replyToGmail.js +89 -0
- package/dist/actions/providers/googlemail/searchGmailMessages.js +10 -20
- package/dist/actions/providers/googlemail/sendGmail.js +7 -17
- package/dist/actions/providers/googlemaps/nearbysearchRestaurants.js +13 -25
- package/dist/actions/providers/googlemaps/validateAddress.js +3 -12
- package/dist/actions/providers/hubspot/getCompanies.js +4 -14
- package/dist/actions/providers/hubspot/getCompanyDetails.js +3 -12
- package/dist/actions/providers/hubspot/getContactDetails.js +3 -12
- package/dist/actions/providers/hubspot/getContacts.js +4 -14
- package/dist/actions/providers/hubspot/getDealDetails.js +3 -12
- package/dist/actions/providers/hubspot/getDeals.js +3 -12
- package/dist/actions/providers/hubspot/getTicketDetails.js +3 -12
- package/dist/actions/providers/hubspot/getTickets.js +3 -12
- package/dist/actions/providers/jira/assignJiraTicket.js +4 -13
- package/dist/actions/providers/jira/commentJiraTicket.js +3 -12
- package/dist/actions/providers/jira/createJiraTicket.js +22 -18
- package/dist/actions/providers/jira/createServiceDeskRequest.js +3 -12
- package/dist/actions/providers/jira/getJiraDCIssuesByQuery.js +5 -14
- package/dist/actions/providers/jira/getJiraIssuesByQuery.js +19 -29
- package/dist/actions/providers/jira/getJiraTicketDetails.js +3 -12
- package/dist/actions/providers/jira/getJiraTicketHistory.js +3 -12
- package/dist/actions/providers/jira/moveJiraTicketToProject.js +11 -21
- package/dist/actions/providers/jira/publicCommentOnServiceDeskRequest.js +3 -12
- package/dist/actions/providers/jira/updateJiraTicketDetails.js +15 -15
- package/dist/actions/providers/jira/updateJiraTicketStatus.js +4 -13
- package/dist/actions/providers/jira/utils.js +104 -126
- package/dist/actions/providers/linear/getIssueDetails.js +10 -20
- package/dist/actions/providers/linear/getIssues.js +11 -21
- package/dist/actions/providers/linear/getProjectDetails.js +10 -20
- package/dist/actions/providers/linear/getProjects.js +6 -16
- package/dist/actions/providers/linear/getTeamDetails.js +7 -17
- package/dist/actions/providers/linear/getTeams.js +5 -15
- package/dist/actions/providers/looker/enableUserByEmail.js +5 -14
- package/dist/actions/providers/math/add.js +2 -11
- package/dist/actions/providers/microsoft/createDocument.js +4 -13
- package/dist/actions/providers/microsoft/getDocument.js +4 -13
- package/dist/actions/providers/microsoft/messageTeamsChannel.js +4 -13
- package/dist/actions/providers/microsoft/messageTeamsChat.js +4 -13
- package/dist/actions/providers/microsoft/updateDocument.js +4 -13
- package/dist/actions/providers/microsoft/updateSpreadsheet.js +4 -13
- package/dist/actions/providers/microsoft/utils.js +9 -20
- package/dist/actions/providers/mongodb/insertMongoDoc.js +5 -14
- package/dist/actions/providers/notion/searchByTitle.js +3 -12
- package/dist/actions/providers/nws/getForecastForLocation.js +4 -13
- package/dist/actions/providers/oktaOrg/getOktaUserByName.js +3 -12
- package/dist/actions/providers/openstreetmap/getLatitudeLongitudeFromLocation.js +3 -12
- package/dist/actions/providers/perplexity/perplexityDeepResearch.js +11 -21
- package/dist/actions/providers/resend/sendEmail.js +3 -12
- package/dist/actions/providers/resend/sendEmailHtml.js +3 -12
- package/dist/actions/providers/salesforce/createCase.js +10 -13
- package/dist/actions/providers/salesforce/createRecord.js +3 -12
- package/dist/actions/providers/salesforce/executeReport.js +3 -12
- package/dist/actions/providers/salesforce/generateSalesReport.js +3 -12
- package/dist/actions/providers/salesforce/getRecord.js +3 -12
- package/dist/actions/providers/salesforce/getReportMetadata.js +11 -21
- package/dist/actions/providers/salesforce/getSalesforceRecordsByQuery.js +7 -17
- package/dist/actions/providers/salesforce/listReports.js +3 -12
- package/dist/actions/providers/salesforce/searchAllSalesforceRecords.js +3 -12
- package/dist/actions/providers/salesforce/searchSalesforceRecords.js +3 -12
- package/dist/actions/providers/salesforce/updateRecord.js +3 -12
- package/dist/actions/providers/slack/archiveChannel.js +9 -2
- package/dist/actions/providers/slack/createChannel.js +7 -17
- package/dist/actions/providers/slack/getChannelMembers.js +8 -18
- package/dist/actions/providers/slack/getChannelMessages.js +8 -18
- package/dist/actions/providers/slack/helpers.js +16 -47
- package/dist/actions/providers/slack/messageTransformers.js +10 -13
- package/dist/actions/providers/slack/sendDmFromBot.js +9 -19
- package/dist/actions/providers/slack/sendMessage.js +7 -17
- package/dist/actions/providers/slackUser/searchSlack.js +179 -212
- package/dist/actions/providers/slackUser/searchSlackRTS.js +20 -33
- package/dist/actions/providers/slackUser/utils.js +1 -1
- package/dist/actions/providers/snowflake/auth/getSnowflakeConnection.js +23 -34
- package/dist/actions/providers/snowflake/getRowByFieldValue.js +4 -13
- package/dist/actions/providers/snowflake/runSnowflakeQuery.js +9 -19
- package/dist/actions/providers/zendesk/addCommentToTicket.js +5 -14
- package/dist/actions/providers/zendesk/assignTicket.js +3 -12
- package/dist/actions/providers/zendesk/createZendeskTicket.js +3 -12
- package/dist/actions/providers/zendesk/getTicketDetails.js +3 -12
- package/dist/actions/providers/zendesk/listTickets.js +3 -12
- package/dist/actions/providers/zendesk/searchZendeskByQuery.js +3 -12
- package/dist/actions/providers/zendesk/updateTicketStatus.js +3 -12
- package/dist/actions/util/axiosClient.js +5 -5
- package/dist/app.js +14 -25
- package/dist/utils/google.js +122 -143
- package/dist/utils/pdf.js +10 -21
- package/package.json +10 -9
- package/dist/actions/providers/credal/callCopilot.d.ts +0 -3
- package/dist/actions/providers/credal/callCopilot.js +0 -36
- package/dist/actions/providers/math/index.d.ts +0 -1
- package/dist/actions/providers/math/index.js +0 -37
- package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.d.ts +0 -3
- package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.js +0 -43
- package/dist/actions/providers/slack/index.d.ts +0 -1
- package/dist/actions/providers/slack/index.js +0 -37
- package/dist/actions/providers/slack/listConversations.d.ts +0 -3
- package/dist/actions/providers/slack/listConversations.js +0 -41
|
@@ -1,29 +1,20 @@
|
|
|
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
1
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
11
2
|
import { getOctokit } from "./utils.js";
|
|
12
3
|
/**
|
|
13
4
|
* Get a branch in a GitHub repository
|
|
14
5
|
* https://docs.github.com/en/rest/branches/branches?apiVersion=2022-11-28#get-a-branch
|
|
15
6
|
*/
|
|
16
|
-
const getBranch =
|
|
7
|
+
const getBranch = async ({ params, authParams, }) => {
|
|
17
8
|
if (!authParams.authToken) {
|
|
18
9
|
return {
|
|
19
10
|
success: false,
|
|
20
11
|
error: MISSING_AUTH_TOKEN,
|
|
21
12
|
};
|
|
22
13
|
}
|
|
23
|
-
const octokit =
|
|
14
|
+
const octokit = await getOctokit(authParams.authToken);
|
|
24
15
|
const { repositoryOwner, repositoryName, branchName } = params;
|
|
25
16
|
try {
|
|
26
|
-
const response =
|
|
17
|
+
const response = await octokit.rest.repos.getBranch({
|
|
27
18
|
owner: repositoryOwner,
|
|
28
19
|
repo: repositoryName,
|
|
29
20
|
branch: branchName,
|
|
@@ -63,5 +54,5 @@ const getBranch = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, a
|
|
|
63
54
|
error: `Failed to get branch: ${error instanceof Error ? error.message : String(error)}`,
|
|
64
55
|
};
|
|
65
56
|
}
|
|
66
|
-
}
|
|
57
|
+
};
|
|
67
58
|
export default getBranch;
|
|
@@ -0,0 +1,41 @@
|
|
|
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,28 +1,18 @@
|
|
|
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
1
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
11
2
|
import { getOctokit } from "./utils.js";
|
|
12
3
|
/**
|
|
13
4
|
* Get file content
|
|
14
5
|
*/
|
|
15
|
-
const getFileContent =
|
|
16
|
-
var _b, _c;
|
|
6
|
+
const getFileContent = async ({ params, authParams, }) => {
|
|
17
7
|
if (!authParams.authToken) {
|
|
18
8
|
return {
|
|
19
9
|
success: false,
|
|
20
10
|
error: MISSING_AUTH_TOKEN,
|
|
21
11
|
};
|
|
22
12
|
}
|
|
23
|
-
const octokit =
|
|
13
|
+
const octokit = await getOctokit(authParams.authToken);
|
|
24
14
|
const { organization, repository, path } = params;
|
|
25
|
-
const contentResponse =
|
|
15
|
+
const contentResponse = await octokit.rest.repos.getContent({
|
|
26
16
|
owner: organization,
|
|
27
17
|
repo: repository,
|
|
28
18
|
path,
|
|
@@ -51,15 +41,15 @@ const getFileContent = (_a) => __awaiter(void 0, [_a], void 0, function* ({ para
|
|
|
51
41
|
results: [
|
|
52
42
|
{
|
|
53
43
|
name: data.name,
|
|
54
|
-
url:
|
|
44
|
+
url: data.html_url ?? data.url,
|
|
55
45
|
contents: {
|
|
56
46
|
content,
|
|
57
47
|
size: data.size,
|
|
58
48
|
name: data.name,
|
|
59
|
-
htmlUrl:
|
|
49
|
+
htmlUrl: data.html_url ?? data.url,
|
|
60
50
|
},
|
|
61
51
|
},
|
|
62
52
|
],
|
|
63
53
|
};
|
|
64
|
-
}
|
|
54
|
+
};
|
|
65
55
|
export default getFileContent;
|
|
@@ -1,17 +1,7 @@
|
|
|
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
1
|
import axios from "axios";
|
|
11
2
|
import { githubGetPullRequestDetailsOutputSchema, } from "../../autogen/types.js";
|
|
12
3
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
13
|
-
const getPullRequestDetails =
|
|
14
|
-
var _b, _c, _d;
|
|
4
|
+
const getPullRequestDetails = async ({ params, authParams, }) => {
|
|
15
5
|
const { authToken } = authParams;
|
|
16
6
|
if (!authToken) {
|
|
17
7
|
throw new Error(MISSING_AUTH_TOKEN);
|
|
@@ -19,7 +9,7 @@ const getPullRequestDetails = (_a) => __awaiter(void 0, [_a], void 0, function*
|
|
|
19
9
|
const { repositoryOwner, repositoryName, pullRequestNumber } = params;
|
|
20
10
|
try {
|
|
21
11
|
const url = `https://api.github.com/repos/${repositoryOwner}/${repositoryName}/pulls/${pullRequestNumber}`;
|
|
22
|
-
const response =
|
|
12
|
+
const response = await axios.get(url, {
|
|
23
13
|
headers: {
|
|
24
14
|
Authorization: `Bearer ${authToken}`,
|
|
25
15
|
Accept: "application/vnd.github+json",
|
|
@@ -28,20 +18,51 @@ const getPullRequestDetails = (_a) => __awaiter(void 0, [_a], void 0, function*
|
|
|
28
18
|
});
|
|
29
19
|
const pr = response.data;
|
|
30
20
|
// Transform only the field names that differ between GitHub API and our schema
|
|
31
|
-
const transformedPR =
|
|
21
|
+
const transformedPR = {
|
|
22
|
+
...pr,
|
|
23
|
+
description: pr.body,
|
|
24
|
+
state: pr.state === "closed" && pr.merged_at ? "merged" : pr.state,
|
|
25
|
+
htmlUrl: pr.html_url,
|
|
26
|
+
createdAt: pr.created_at,
|
|
27
|
+
updatedAt: pr.updated_at,
|
|
28
|
+
closedAt: pr.closed_at,
|
|
29
|
+
mergedAt: pr.merged_at,
|
|
30
|
+
author: pr.user,
|
|
31
|
+
assignees: pr.assignees || [],
|
|
32
|
+
reviewers: pr.requested_reviewers || [],
|
|
33
|
+
labels: pr.labels?.map(label => ({
|
|
34
|
+
...label,
|
|
35
|
+
description: label.description || null,
|
|
36
|
+
})) || [],
|
|
37
|
+
head: {
|
|
38
|
+
...pr.head,
|
|
39
|
+
repo: pr.head.repo
|
|
32
40
|
? {
|
|
33
41
|
name: pr.head.repo.name,
|
|
34
42
|
fullName: pr.head.repo.full_name,
|
|
35
43
|
owner: pr.head.repo.owner,
|
|
36
44
|
}
|
|
37
|
-
: null
|
|
45
|
+
: null,
|
|
46
|
+
},
|
|
47
|
+
base: {
|
|
48
|
+
...pr.base,
|
|
49
|
+
repo: pr.base.repo
|
|
38
50
|
? {
|
|
39
51
|
name: pr.base.repo.name,
|
|
40
52
|
fullName: pr.base.repo.full_name,
|
|
41
53
|
owner: pr.base.repo.owner,
|
|
42
54
|
}
|
|
43
|
-
: null
|
|
44
|
-
|
|
55
|
+
: null,
|
|
56
|
+
},
|
|
57
|
+
mergeableState: pr.mergeable_state,
|
|
58
|
+
changedFiles: pr.changed_files,
|
|
59
|
+
milestone: pr.milestone
|
|
60
|
+
? {
|
|
61
|
+
...pr.milestone,
|
|
62
|
+
dueOn: pr.milestone.due_on,
|
|
63
|
+
}
|
|
64
|
+
: null,
|
|
65
|
+
};
|
|
45
66
|
return githubGetPullRequestDetailsOutputSchema.parse({
|
|
46
67
|
success: true,
|
|
47
68
|
pullRequest: transformedPR,
|
|
@@ -50,12 +71,12 @@ const getPullRequestDetails = (_a) => __awaiter(void 0, [_a], void 0, function*
|
|
|
50
71
|
catch (error) {
|
|
51
72
|
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
52
73
|
const responseError = error && typeof error === "object" && "response" in error
|
|
53
|
-
?
|
|
74
|
+
? error.response?.data?.message
|
|
54
75
|
: undefined;
|
|
55
76
|
return githubGetPullRequestDetailsOutputSchema.parse({
|
|
56
77
|
success: false,
|
|
57
78
|
error: responseError || errorMessage || "Failed to get pull request details",
|
|
58
79
|
});
|
|
59
80
|
}
|
|
60
|
-
}
|
|
81
|
+
};
|
|
61
82
|
export default getPullRequestDetails;
|
|
@@ -1,17 +1,7 @@
|
|
|
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
1
|
import axios from "axios";
|
|
11
2
|
import { githubListCommitsOutputSchema, } from "../../autogen/types.js";
|
|
12
3
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
13
|
-
const listCommits =
|
|
14
|
-
var _b, _c;
|
|
4
|
+
const listCommits = async ({ params, authParams, }) => {
|
|
15
5
|
const { authToken } = authParams;
|
|
16
6
|
if (!authToken) {
|
|
17
7
|
throw new Error(MISSING_AUTH_TOKEN);
|
|
@@ -35,7 +25,7 @@ const listCommits = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
|
35
25
|
if (author) {
|
|
36
26
|
requestParams.author = author;
|
|
37
27
|
}
|
|
38
|
-
const response =
|
|
28
|
+
const response = await axios.get(url, {
|
|
39
29
|
headers: {
|
|
40
30
|
Authorization: `Bearer ${authToken}`,
|
|
41
31
|
Accept: "application/vnd.github+json",
|
|
@@ -45,7 +35,19 @@ const listCommits = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
|
45
35
|
});
|
|
46
36
|
const commits = response.data;
|
|
47
37
|
// Transform only the field names that differ between GitHub API and our schema
|
|
48
|
-
const transformedCommits = commits.map(commit => (
|
|
38
|
+
const transformedCommits = commits.map(commit => ({
|
|
39
|
+
...commit,
|
|
40
|
+
htmlUrl: commit.html_url,
|
|
41
|
+
commit: {
|
|
42
|
+
...commit.commit,
|
|
43
|
+
commentCount: commit.commit.comment_count || 0,
|
|
44
|
+
},
|
|
45
|
+
author: commit.author,
|
|
46
|
+
parents: commit.parents.map(parent => ({
|
|
47
|
+
...parent,
|
|
48
|
+
htmlUrl: parent.html_url,
|
|
49
|
+
})),
|
|
50
|
+
}));
|
|
49
51
|
// Check if there are more pages by looking at the Link header
|
|
50
52
|
const linkHeader = response.headers.link;
|
|
51
53
|
const hasMore = linkHeader ? linkHeader.includes('rel="next"') : false;
|
|
@@ -59,7 +61,7 @@ const listCommits = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
|
59
61
|
catch (error) {
|
|
60
62
|
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
61
63
|
const responseError = error && typeof error === "object" && "response" in error
|
|
62
|
-
?
|
|
64
|
+
? error.response?.data?.message
|
|
63
65
|
: undefined;
|
|
64
66
|
return githubListCommitsOutputSchema.parse({
|
|
65
67
|
success: false,
|
|
@@ -69,5 +71,5 @@ const listCommits = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
|
69
71
|
hasMore: false,
|
|
70
72
|
});
|
|
71
73
|
}
|
|
72
|
-
}
|
|
74
|
+
};
|
|
73
75
|
export default listCommits;
|
|
@@ -1,27 +1,18 @@
|
|
|
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
1
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
11
2
|
import { getOctokit } from "./utils.js";
|
|
12
3
|
/**
|
|
13
4
|
* List directory contents
|
|
14
5
|
*/
|
|
15
|
-
const listDirectory =
|
|
6
|
+
const listDirectory = async ({ params, authParams, }) => {
|
|
16
7
|
if (!authParams.authToken) {
|
|
17
8
|
return {
|
|
18
9
|
success: false,
|
|
19
10
|
error: MISSING_AUTH_TOKEN,
|
|
20
11
|
};
|
|
21
12
|
}
|
|
22
|
-
const octokit =
|
|
13
|
+
const octokit = await getOctokit(authParams.authToken);
|
|
23
14
|
const { organization, repository, path } = params;
|
|
24
|
-
const contentResponse =
|
|
15
|
+
const contentResponse = await octokit.rest.repos.getContent({
|
|
25
16
|
owner: organization,
|
|
26
17
|
repo: repository,
|
|
27
18
|
path,
|
|
@@ -38,18 +29,15 @@ const listDirectory = (_a) => __awaiter(void 0, [_a], void 0, function* ({ param
|
|
|
38
29
|
}
|
|
39
30
|
return {
|
|
40
31
|
success: true,
|
|
41
|
-
results: data.map(item => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
}),
|
|
32
|
+
results: data.map(item => ({
|
|
33
|
+
name: item.name,
|
|
34
|
+
url: item.html_url ?? item.url,
|
|
35
|
+
contents: {
|
|
36
|
+
path: item.path,
|
|
37
|
+
type: item.type,
|
|
38
|
+
size: item.size,
|
|
39
|
+
},
|
|
40
|
+
})),
|
|
53
41
|
};
|
|
54
|
-
}
|
|
42
|
+
};
|
|
55
43
|
export default listDirectory;
|
|
@@ -1,16 +1,7 @@
|
|
|
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
1
|
import axios from "axios";
|
|
11
2
|
import { githubListPullRequestsOutputSchema, } from "../../autogen/types.js";
|
|
12
3
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
13
|
-
const listPullRequests =
|
|
4
|
+
const listPullRequests = async ({ params, authParams, }) => {
|
|
14
5
|
const { authToken } = authParams;
|
|
15
6
|
if (!authToken) {
|
|
16
7
|
return githubListPullRequestsOutputSchema.parse({
|
|
@@ -25,14 +16,14 @@ const listPullRequests = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pa
|
|
|
25
16
|
let page = 1;
|
|
26
17
|
const perPage = 100;
|
|
27
18
|
while (true) {
|
|
28
|
-
const response =
|
|
19
|
+
const response = await axios.get(url, {
|
|
29
20
|
headers: {
|
|
30
21
|
Authorization: `Bearer ${authToken}`,
|
|
31
22
|
Accept: "application/vnd.github+json",
|
|
32
23
|
"X-GitHub-Api-Version": "2022-11-28",
|
|
33
24
|
},
|
|
34
25
|
params: {
|
|
35
|
-
state: state
|
|
26
|
+
state: state ?? "all",
|
|
36
27
|
sort: "created",
|
|
37
28
|
direction: "desc",
|
|
38
29
|
per_page: perPage,
|
|
@@ -75,5 +66,5 @@ const listPullRequests = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pa
|
|
|
75
66
|
error: error instanceof Error ? error.message : "An unknown error occurred",
|
|
76
67
|
});
|
|
77
68
|
}
|
|
78
|
-
}
|
|
69
|
+
};
|
|
79
70
|
export default listPullRequests;
|
|
@@ -1,12 +1,3 @@
|
|
|
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
1
|
import { githubSearchOrganizationOutputSchema, } from "../../autogen/types.js";
|
|
11
2
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
12
3
|
import { getOctokit } from "./utils.js";
|
|
@@ -18,17 +9,17 @@ const MAX_ISSUES_OR_PRS = 10;
|
|
|
18
9
|
const MAX_FILES_PER_PR = 5;
|
|
19
10
|
const MAX_PATCH_LINES = 20;
|
|
20
11
|
const MAX_FRAGMENT_LINES = 20;
|
|
21
|
-
const searchOrganization =
|
|
12
|
+
const searchOrganization = async ({ params, authParams, }) => {
|
|
22
13
|
if (!authParams.authToken) {
|
|
23
14
|
return githubSearchOrganizationOutputSchema.parse({
|
|
24
15
|
success: false,
|
|
25
16
|
error: MISSING_AUTH_TOKEN,
|
|
26
17
|
});
|
|
27
18
|
}
|
|
28
|
-
const octokit =
|
|
19
|
+
const octokit = await getOctokit(authParams.authToken);
|
|
29
20
|
const { organization, query, repository } = params;
|
|
30
21
|
const searchScope = repository ? `repo:${organization}/${repository}` : `org:${organization}`;
|
|
31
|
-
const [codeResultsResponse, commitResults, issueResults] =
|
|
22
|
+
const [codeResultsResponse, commitResults, issueResults] = await Promise.all([
|
|
32
23
|
octokit.rest.search.code({
|
|
33
24
|
q: `${query} in:file,path ${searchScope}`,
|
|
34
25
|
text_match: true,
|
|
@@ -54,31 +45,27 @@ const searchOrganization = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
54
45
|
url: item.html_url,
|
|
55
46
|
score: item.score,
|
|
56
47
|
textMatches: item.text_matches
|
|
57
|
-
? item.text_matches.map(match => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
matches: (_d = match.matches) !== null && _d !== void 0 ? _d : [],
|
|
64
|
-
});
|
|
65
|
-
})
|
|
48
|
+
? item.text_matches.map(match => ({
|
|
49
|
+
object_url: match.object_url ?? undefined,
|
|
50
|
+
object_type: match.object_type ?? undefined,
|
|
51
|
+
fragment: match.fragment?.split("\n").slice(0, MAX_FRAGMENT_LINES).join("\n"),
|
|
52
|
+
matches: match.matches ?? [],
|
|
53
|
+
}))
|
|
66
54
|
: [],
|
|
67
55
|
}));
|
|
68
|
-
const commitDetailsWithErrors =
|
|
56
|
+
const commitDetailsWithErrors = await Promise.all(commitResults.data.items.slice(0, MAX_COMMITS).map(async (item) => {
|
|
69
57
|
// Get the repo details from the commit search result
|
|
70
58
|
const { owner, name } = item.repository;
|
|
71
59
|
try {
|
|
72
|
-
return
|
|
60
|
+
return await octokit.rest.repos.getCommit({ owner: owner.login, repo: name, ref: item.sha });
|
|
73
61
|
}
|
|
74
62
|
catch (error) {
|
|
75
63
|
console.error(`Error fetching commit ${item.sha} in ${owner.login}/${name}:`, error);
|
|
76
64
|
return null;
|
|
77
65
|
}
|
|
78
|
-
}))
|
|
66
|
+
}));
|
|
79
67
|
const commitDetails = commitDetailsWithErrors.filter(c => c !== null);
|
|
80
68
|
const enrichedCommits = commitResults.data.items.slice(0, MAX_COMMITS).map(item => {
|
|
81
|
-
var _a, _b;
|
|
82
69
|
const full = commitDetails.find(c => c.data.sha === item.sha);
|
|
83
70
|
return {
|
|
84
71
|
sha: item.sha,
|
|
@@ -88,46 +75,39 @@ const searchOrganization = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
88
75
|
author: item.commit.author,
|
|
89
76
|
},
|
|
90
77
|
score: item.score,
|
|
91
|
-
author:
|
|
92
|
-
files:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
status: f.status,
|
|
97
|
-
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"),
|
|
98
|
-
});
|
|
78
|
+
author: item.author ?? undefined,
|
|
79
|
+
files: full?.data.files?.slice(0, MAX_FILES_PER_COMMIT).map(f => ({
|
|
80
|
+
filename: f.filename,
|
|
81
|
+
status: f.status,
|
|
82
|
+
patch: f.patch?.split("\n")?.slice(0, MAX_PATCH_LINES)?.join("\n"),
|
|
99
83
|
})) || [],
|
|
100
84
|
};
|
|
101
85
|
});
|
|
102
86
|
const prItems = issueResults.data.items.filter(item => item.pull_request).slice(0, MAX_ISSUES_OR_PRS);
|
|
103
87
|
const prNumbers = prItems.map(item => item.number);
|
|
104
|
-
const prFiles =
|
|
88
|
+
const prFiles = await Promise.all(prItems.map(async (item) => {
|
|
105
89
|
// Each item has a 'repository_url' like: "https://api.github.com/repos/ORG/REPO"
|
|
106
90
|
const repoUrlParts = item.repository_url.split("/");
|
|
107
|
-
const repo = repository
|
|
91
|
+
const repo = repository ?? repoUrlParts[repoUrlParts.length - 1];
|
|
108
92
|
try {
|
|
109
|
-
return
|
|
93
|
+
return await octokit.rest.pulls.listFiles({ owner: organization, repo: repo, pull_number: item.number });
|
|
110
94
|
}
|
|
111
95
|
catch (error) {
|
|
112
96
|
console.error(`Error fetching PR files for PR ${item.number} in ${organization}/${repo}:`, error);
|
|
113
97
|
return { data: [] };
|
|
114
98
|
}
|
|
115
|
-
}))
|
|
99
|
+
}));
|
|
116
100
|
const issuesAndPRs = issueResults.data.items
|
|
117
101
|
.slice(0, MAX_ISSUES_OR_PRS)
|
|
118
102
|
.map(item => {
|
|
119
|
-
var _a, _b, _c, _d;
|
|
120
103
|
const isPR = !!item.pull_request;
|
|
121
104
|
const prIndex = prNumbers.indexOf(item.number);
|
|
122
105
|
const files = isPR && prIndex !== -1
|
|
123
|
-
? prFiles[prIndex].data.slice(0, MAX_FILES_PER_PR).map(f => {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
patch: (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
|
|
129
|
-
});
|
|
130
|
-
})
|
|
106
|
+
? prFiles[prIndex].data.slice(0, MAX_FILES_PER_PR).map(f => ({
|
|
107
|
+
filename: f.filename,
|
|
108
|
+
status: f.status,
|
|
109
|
+
patch: f.patch?.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
|
|
110
|
+
}))
|
|
131
111
|
: undefined;
|
|
132
112
|
return {
|
|
133
113
|
number: item.number,
|
|
@@ -137,8 +117,8 @@ const searchOrganization = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
137
117
|
isPullRequest: isPR,
|
|
138
118
|
body: item.body,
|
|
139
119
|
user: {
|
|
140
|
-
email:
|
|
141
|
-
name:
|
|
120
|
+
email: item.user?.email ?? undefined,
|
|
121
|
+
name: item.user?.name ?? undefined,
|
|
142
122
|
},
|
|
143
123
|
score: item.score,
|
|
144
124
|
files,
|
|
@@ -167,5 +147,5 @@ const searchOrganization = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
167
147
|
})),
|
|
168
148
|
],
|
|
169
149
|
};
|
|
170
|
-
}
|
|
150
|
+
};
|
|
171
151
|
export default searchOrganization;
|
|
@@ -1,17 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
export function getOctokit(authToken) {
|
|
11
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
12
|
-
const { Octokit } = yield import("@octokit/core");
|
|
13
|
-
const { restEndpointMethods } = yield import("@octokit/plugin-rest-endpoint-methods");
|
|
14
|
-
const MyOctokit = Octokit.plugin(restEndpointMethods);
|
|
15
|
-
return new MyOctokit({ auth: authToken });
|
|
16
|
-
});
|
|
1
|
+
export async function getOctokit(authToken) {
|
|
2
|
+
const { Octokit } = await import("@octokit/core");
|
|
3
|
+
const { restEndpointMethods } = await import("@octokit/plugin-rest-endpoint-methods");
|
|
4
|
+
const MyOctokit = Octokit.plugin(restEndpointMethods);
|
|
5
|
+
return new MyOctokit({ auth: authToken });
|
|
17
6
|
}
|
|
@@ -1,33 +1,22 @@
|
|
|
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
1
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
11
2
|
import { getProjectPath } from "./utils.js";
|
|
12
3
|
const GITLAB_API_URL = "https://gitlab.com";
|
|
13
|
-
function gitlabFetch(endpoint, authToken) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
if (!res.ok)
|
|
21
|
-
throw new Error(`GitLab API error: ${res.status} ${res.statusText}`);
|
|
22
|
-
return res.json();
|
|
4
|
+
async function gitlabFetch(endpoint, authToken) {
|
|
5
|
+
const res = await fetch(endpoint, {
|
|
6
|
+
headers: {
|
|
7
|
+
Authorization: `Bearer ${authToken}`,
|
|
8
|
+
},
|
|
23
9
|
});
|
|
10
|
+
if (!res.ok)
|
|
11
|
+
throw new Error(`GitLab API error: ${res.status} ${res.statusText}`);
|
|
12
|
+
return res.json();
|
|
24
13
|
}
|
|
25
14
|
/**
|
|
26
15
|
* Get file content from GitLab by project_id
|
|
27
16
|
*/
|
|
28
|
-
const getFileContent =
|
|
17
|
+
const getFileContent = async ({ params, authParams, }) => {
|
|
29
18
|
const { authToken, baseUrl } = authParams;
|
|
30
|
-
const gitlabBaseUrl = baseUrl
|
|
19
|
+
const gitlabBaseUrl = baseUrl ?? GITLAB_API_URL;
|
|
31
20
|
if (!authToken) {
|
|
32
21
|
return {
|
|
33
22
|
success: false,
|
|
@@ -38,14 +27,14 @@ const getFileContent = (_a) => __awaiter(void 0, [_a], void 0, function* ({ para
|
|
|
38
27
|
// The file path must be URL-encoded per GitLab API docs
|
|
39
28
|
const filePath = encodeURIComponent(path);
|
|
40
29
|
const fetchUrl = `${gitlabBaseUrl}/api/v4/projects/${project_id}/repository/files/${filePath}?ref=${encodeURIComponent(ref)}`;
|
|
41
|
-
const data =
|
|
30
|
+
const data = await gitlabFetch(fetchUrl, authToken);
|
|
42
31
|
if (data.encoding !== "base64" || typeof data.content !== "string") {
|
|
43
32
|
return { success: false, error: `Unexpected response: ${JSON.stringify(data)}` };
|
|
44
33
|
}
|
|
45
34
|
const content = Buffer.from(data.content, "base64").toString("utf-8");
|
|
46
35
|
// Get the project path to construct the correct web URL
|
|
47
36
|
const url = data.web_url ||
|
|
48
|
-
`${gitlabBaseUrl}/${
|
|
37
|
+
`${gitlabBaseUrl}/${await getProjectPath(project_id, authToken, `${gitlabBaseUrl}/api/v4`)}/-/blob/${ref}/${path}`;
|
|
49
38
|
return {
|
|
50
39
|
success: true,
|
|
51
40
|
results: [
|
|
@@ -61,5 +50,5 @@ const getFileContent = (_a) => __awaiter(void 0, [_a], void 0, function* ({ para
|
|
|
61
50
|
},
|
|
62
51
|
],
|
|
63
52
|
};
|
|
64
|
-
}
|
|
53
|
+
};
|
|
65
54
|
export default getFileContent;
|