@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
package/dist/utils/google.js
CHANGED
|
@@ -1,24 +1,14 @@
|
|
|
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 Papa from "papaparse";
|
|
11
2
|
import { isAxiosTimeoutError } from "../actions/util/axiosClient.js";
|
|
12
3
|
// Helper function to parse Google Docs content to plain text
|
|
13
4
|
export function parseGoogleDocFromRawContentToPlainText(snapshotRawContent) {
|
|
14
|
-
var _a, _b, _c, _d, _e, _f;
|
|
15
5
|
const docSections = [
|
|
16
6
|
{
|
|
17
7
|
heading: undefined,
|
|
18
8
|
paragraphs: [],
|
|
19
9
|
},
|
|
20
10
|
];
|
|
21
|
-
if (!
|
|
11
|
+
if (!snapshotRawContent.body?.content)
|
|
22
12
|
return "";
|
|
23
13
|
for (const content of snapshotRawContent.body.content) {
|
|
24
14
|
if (!content)
|
|
@@ -26,7 +16,7 @@ export function parseGoogleDocFromRawContentToPlainText(snapshotRawContent) {
|
|
|
26
16
|
// Handle paragraphs (existing logic)
|
|
27
17
|
if (content.paragraph) {
|
|
28
18
|
const paragraph = content.paragraph;
|
|
29
|
-
if (
|
|
19
|
+
if (paragraph.paragraphStyle?.headingId) {
|
|
30
20
|
// New heading
|
|
31
21
|
docSections.push({
|
|
32
22
|
heading: {
|
|
@@ -36,12 +26,12 @@ export function parseGoogleDocFromRawContentToPlainText(snapshotRawContent) {
|
|
|
36
26
|
paragraphs: [],
|
|
37
27
|
});
|
|
38
28
|
}
|
|
39
|
-
if (paragraph
|
|
29
|
+
if (paragraph?.elements) {
|
|
40
30
|
const combinedTextRuns = paragraph.elements
|
|
41
|
-
.map(element =>
|
|
31
|
+
.map(element => element.textRun?.content)
|
|
42
32
|
.filter((content) => Boolean(content))
|
|
43
33
|
.join("");
|
|
44
|
-
const bulletNestingLevel = paragraph.bullet === undefined ? undefined : (
|
|
34
|
+
const bulletNestingLevel = paragraph.bullet === undefined ? undefined : (paragraph.bullet?.nestingLevel ?? 0);
|
|
45
35
|
const paragraphContent = bulletNestingLevel === undefined
|
|
46
36
|
? combinedTextRuns
|
|
47
37
|
: "\t".repeat(bulletNestingLevel) + " • " + combinedTextRuns;
|
|
@@ -62,9 +52,9 @@ export function parseGoogleDocFromRawContentToPlainText(snapshotRawContent) {
|
|
|
62
52
|
continue;
|
|
63
53
|
const cellText = [];
|
|
64
54
|
for (const cellContent of cell.content) {
|
|
65
|
-
if (
|
|
55
|
+
if (cellContent.paragraph?.elements) {
|
|
66
56
|
const cellParagraphText = cellContent.paragraph.elements
|
|
67
|
-
.map(element =>
|
|
57
|
+
.map(element => element.textRun?.content)
|
|
68
58
|
.filter((content) => Boolean(content))
|
|
69
59
|
.join("");
|
|
70
60
|
if (cellParagraphText.trim()) {
|
|
@@ -95,9 +85,9 @@ export function parseGoogleDocFromRawContentToPlainText(snapshotRawContent) {
|
|
|
95
85
|
if (toc.content) {
|
|
96
86
|
const tocText = [];
|
|
97
87
|
for (const tocContent of toc.content) {
|
|
98
|
-
if (
|
|
88
|
+
if (tocContent.paragraph?.elements) {
|
|
99
89
|
const tocParagraphText = tocContent.paragraph.elements
|
|
100
|
-
.map(element =>
|
|
90
|
+
.map(element => element.textRun?.content)
|
|
101
91
|
.filter((content) => Boolean(content))
|
|
102
92
|
.join("");
|
|
103
93
|
if (tocParagraphText.trim()) {
|
|
@@ -149,26 +139,24 @@ function parseCSVToSheetJson(csvData, sheetName = "Sheet1") {
|
|
|
149
139
|
return JSON.stringify([{ sheetName, headers, rows }]);
|
|
150
140
|
}
|
|
151
141
|
export function parseGoogleSheetsFromRawContentToPlainText(snapshotRawContent) {
|
|
152
|
-
var _a;
|
|
153
142
|
if (!snapshotRawContent.sheets)
|
|
154
143
|
return "[]";
|
|
155
144
|
const sheetsData = [];
|
|
156
145
|
for (const sheet of snapshotRawContent.sheets) {
|
|
157
|
-
if (!sheet.data || !
|
|
146
|
+
if (!sheet.data || !sheet.properties?.title)
|
|
158
147
|
continue;
|
|
159
148
|
const sheetName = sheet.properties.title;
|
|
160
149
|
const headers = [];
|
|
161
150
|
const rows = [];
|
|
162
151
|
// Helper to extract cell value
|
|
163
152
|
const getCellValue = (cell) => {
|
|
164
|
-
var _a, _b, _c;
|
|
165
153
|
if (cell.formattedValue)
|
|
166
154
|
return cell.formattedValue;
|
|
167
|
-
if (
|
|
155
|
+
if (cell.userEnteredValue?.stringValue)
|
|
168
156
|
return cell.userEnteredValue.stringValue;
|
|
169
|
-
if (
|
|
157
|
+
if (cell.userEnteredValue?.numberValue !== undefined)
|
|
170
158
|
return cell.userEnteredValue.numberValue.toString();
|
|
171
|
-
if (
|
|
159
|
+
if (cell.userEnteredValue?.boolValue !== undefined)
|
|
172
160
|
return cell.userEnteredValue.boolValue.toString();
|
|
173
161
|
return "";
|
|
174
162
|
};
|
|
@@ -201,7 +189,6 @@ export function parseGoogleSheetsFromRawContentToPlainText(snapshotRawContent) {
|
|
|
201
189
|
return JSON.stringify(sheetsData);
|
|
202
190
|
}
|
|
203
191
|
export function parseGoogleSlidesFromRawContentToPlainText(snapshotRawContent) {
|
|
204
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
205
192
|
if (!snapshotRawContent.slides)
|
|
206
193
|
return "";
|
|
207
194
|
const slideContents = [];
|
|
@@ -209,7 +196,7 @@ export function parseGoogleSlidesFromRawContentToPlainText(snapshotRawContent) {
|
|
|
209
196
|
const extractTextFromElements = (textElements) => {
|
|
210
197
|
if (!textElements)
|
|
211
198
|
return [];
|
|
212
|
-
return textElements.map(el =>
|
|
199
|
+
return textElements.map(el => el.textRun?.content?.trim()).filter((content) => Boolean(content));
|
|
213
200
|
};
|
|
214
201
|
for (const slide of snapshotRawContent.slides) {
|
|
215
202
|
if (!slide.pageElements)
|
|
@@ -217,17 +204,17 @@ export function parseGoogleSlidesFromRawContentToPlainText(snapshotRawContent) {
|
|
|
217
204
|
const slideTexts = [];
|
|
218
205
|
for (const pageElement of slide.pageElements) {
|
|
219
206
|
// Extract text from shapes
|
|
220
|
-
if (
|
|
207
|
+
if (pageElement.shape?.text?.textElements) {
|
|
221
208
|
const shapeTexts = extractTextFromElements(pageElement.shape.text.textElements);
|
|
222
209
|
slideTexts.push(...shapeTexts);
|
|
223
210
|
}
|
|
224
211
|
// Extract text from tables
|
|
225
|
-
if (
|
|
212
|
+
if (pageElement.table?.tableRows) {
|
|
226
213
|
for (const row of pageElement.table.tableRows) {
|
|
227
214
|
if (!row.tableCells)
|
|
228
215
|
continue;
|
|
229
216
|
for (const cell of row.tableCells) {
|
|
230
|
-
if (
|
|
217
|
+
if (cell.text?.textElements) {
|
|
231
218
|
const cellTexts = extractTextFromElements(cell.text.textElements);
|
|
232
219
|
slideTexts.push(...cellTexts);
|
|
233
220
|
}
|
|
@@ -235,12 +222,12 @@ export function parseGoogleSlidesFromRawContentToPlainText(snapshotRawContent) {
|
|
|
235
222
|
}
|
|
236
223
|
}
|
|
237
224
|
// Extract text from lines
|
|
238
|
-
if (
|
|
225
|
+
if (pageElement.line?.text?.textElements) {
|
|
239
226
|
const lineTexts = extractTextFromElements(pageElement.line.text.textElements);
|
|
240
227
|
slideTexts.push(...lineTexts);
|
|
241
228
|
}
|
|
242
229
|
// Extract text from wordArt
|
|
243
|
-
if (
|
|
230
|
+
if (pageElement.wordArt?.text?.textElements) {
|
|
244
231
|
const wordArtTexts = extractTextFromElements(pageElement.wordArt.text.textElements);
|
|
245
232
|
slideTexts.push(...wordArtTexts);
|
|
246
233
|
}
|
|
@@ -250,10 +237,10 @@ export function parseGoogleSlidesFromRawContentToPlainText(snapshotRawContent) {
|
|
|
250
237
|
}
|
|
251
238
|
}
|
|
252
239
|
// Also extract text from notes master if available
|
|
253
|
-
if (
|
|
240
|
+
if (snapshotRawContent.notesMaster?.pageElements) {
|
|
254
241
|
const notesTexts = [];
|
|
255
242
|
for (const pageElement of snapshotRawContent.notesMaster.pageElements) {
|
|
256
|
-
if (
|
|
243
|
+
if (pageElement.shape?.text?.textElements) {
|
|
257
244
|
const shapeTexts = extractTextFromElements(pageElement.shape.text.textElements);
|
|
258
245
|
notesTexts.push(...shapeTexts);
|
|
259
246
|
}
|
|
@@ -275,135 +262,127 @@ const GDRIVE_BASE_URL = "https://www.googleapis.com/drive/v3/files/";
|
|
|
275
262
|
* @param {AxiosInstance} axiosClient - The axios client to use for making requests
|
|
276
263
|
* @returns {Promise<string>} A promise that resolves with the text content of the doc
|
|
277
264
|
*/
|
|
278
|
-
function getGoogleDocContentNoExport(fileId, authToken, axiosClient) {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
headers: { Authorization: `Bearer ${authToken}` },
|
|
283
|
-
});
|
|
284
|
-
const getAllTabs = (tabs) => {
|
|
285
|
-
const allTabs = [];
|
|
286
|
-
tabs.forEach((tab) => {
|
|
287
|
-
allTabs.push(tab);
|
|
288
|
-
if (tab.childTabs) {
|
|
289
|
-
allTabs.push(...getAllTabs(tab.childTabs));
|
|
290
|
-
}
|
|
291
|
-
});
|
|
292
|
-
return allTabs;
|
|
293
|
-
};
|
|
294
|
-
const tabs = docsRes.data.tabs || [];
|
|
295
|
-
const allTabs = getAllTabs(tabs);
|
|
296
|
-
const tabContents = allTabs.map((tab) => parseGoogleDocFromRawContentToPlainText(tab.documentTab));
|
|
297
|
-
return tabContents.join("\n\n");
|
|
265
|
+
async function getGoogleDocContentNoExport(fileId, authToken, axiosClient) {
|
|
266
|
+
const docsUrl = `https://docs.googleapis.com/v1/documents/${fileId}?includeTabsContent=true`;
|
|
267
|
+
const docsRes = await axiosClient.get(docsUrl, {
|
|
268
|
+
headers: { Authorization: `Bearer ${authToken}` },
|
|
298
269
|
});
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
catch (docsError) {
|
|
306
|
-
if (isAxiosTimeoutError(docsError)) {
|
|
307
|
-
console.log("Request timed out using Google Docs API - dont retry");
|
|
308
|
-
throw new Error("Request timed out using Google Docs API");
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
console.log("Error using Google Docs API", docsError);
|
|
312
|
-
// Check if it's a 404 or permission error - don't retry these
|
|
313
|
-
if (docsError && typeof docsError === "object" && "status" in docsError) {
|
|
314
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
315
|
-
const status = docsError.status;
|
|
316
|
-
if (status === 404 || status === 403) {
|
|
317
|
-
throw new Error(`File not accessible (${status}): ${fileId}`);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
try {
|
|
321
|
-
// Fallback to Drive API export if Docs API fails
|
|
322
|
-
const exportUrl = `${GDRIVE_BASE_URL}${encodeURIComponent(fileId)}/export?mimeType=text/plain${sharedDriveParams}`;
|
|
323
|
-
const exportRes = yield axiosClient.get(exportUrl, {
|
|
324
|
-
headers: { Authorization: `Bearer ${authToken}` },
|
|
325
|
-
responseType: "text",
|
|
326
|
-
});
|
|
327
|
-
return exportRes.data;
|
|
328
|
-
}
|
|
329
|
-
catch (_a) {
|
|
330
|
-
throw new Error(`Unable to access document content: ${fileId}`);
|
|
331
|
-
}
|
|
270
|
+
const getAllTabs = (tabs) => {
|
|
271
|
+
const allTabs = [];
|
|
272
|
+
tabs.forEach((tab) => {
|
|
273
|
+
allTabs.push(tab);
|
|
274
|
+
if (tab.childTabs) {
|
|
275
|
+
allTabs.push(...getAllTabs(tab.childTabs));
|
|
332
276
|
}
|
|
333
|
-
}
|
|
334
|
-
|
|
277
|
+
});
|
|
278
|
+
return allTabs;
|
|
279
|
+
};
|
|
280
|
+
const tabs = docsRes.data.tabs || [];
|
|
281
|
+
const allTabs = getAllTabs(tabs);
|
|
282
|
+
const tabContents = allTabs.map((tab) => parseGoogleDocFromRawContentToPlainText(tab.documentTab));
|
|
283
|
+
return tabContents.join("\n\n");
|
|
335
284
|
}
|
|
336
|
-
export function
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
responseType: "text",
|
|
345
|
-
});
|
|
346
|
-
// Clean up trailing commas and convert to JSON format
|
|
347
|
-
const cleanedCsv = exportRes.data
|
|
348
|
-
.split("\n")
|
|
349
|
-
.map((line) => line.replace(/,+$/, ""))
|
|
350
|
-
.map((line) => line.replace(/,{2,}/g, ","))
|
|
351
|
-
.join("\n");
|
|
352
|
-
return parseCSVToSheetJson(cleanedCsv);
|
|
285
|
+
export async function getGoogleDocContent(fileId, authToken, axiosClient, sharedDriveParams) {
|
|
286
|
+
try {
|
|
287
|
+
return await getGoogleDocContentNoExport(fileId, authToken, axiosClient);
|
|
288
|
+
}
|
|
289
|
+
catch (docsError) {
|
|
290
|
+
if (isAxiosTimeoutError(docsError)) {
|
|
291
|
+
console.log("Request timed out using Google Docs API - dont retry");
|
|
292
|
+
throw new Error("Request timed out using Google Docs API", { cause: docsError });
|
|
353
293
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
if
|
|
294
|
+
else {
|
|
295
|
+
console.log("Error using Google Docs API", docsError);
|
|
296
|
+
// Check if it's a 404 or permission error - don't retry these
|
|
297
|
+
if (docsError && typeof docsError === "object" && "status" in docsError) {
|
|
357
298
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
358
|
-
const status =
|
|
299
|
+
const status = docsError.status;
|
|
359
300
|
if (status === 404 || status === 403) {
|
|
360
|
-
throw new Error(`
|
|
301
|
+
throw new Error(`File not accessible (${status}): ${fileId}`, { cause: docsError });
|
|
361
302
|
}
|
|
362
303
|
}
|
|
363
|
-
// If CSV export fails, try the Sheets API as fallback (but this is slower)
|
|
364
304
|
try {
|
|
365
|
-
|
|
366
|
-
const
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
305
|
+
// Fallback to Drive API export if Docs API fails
|
|
306
|
+
const exportUrl = `${GDRIVE_BASE_URL}${encodeURIComponent(fileId)}/export?mimeType=text/plain${sharedDriveParams}`;
|
|
307
|
+
const exportRes = await axiosClient.get(exportUrl, {
|
|
308
|
+
headers: { Authorization: `Bearer ${authToken}` },
|
|
309
|
+
responseType: "text",
|
|
370
310
|
});
|
|
371
|
-
return
|
|
311
|
+
return exportRes.data;
|
|
372
312
|
}
|
|
373
|
-
catch
|
|
374
|
-
|
|
375
|
-
throw new Error("Request timed out using Google Sheets API");
|
|
376
|
-
}
|
|
377
|
-
throw new Error(`Unable to access spreadsheet content: ${fileId}`);
|
|
313
|
+
catch {
|
|
314
|
+
throw new Error(`Unable to access document content: ${fileId}`);
|
|
378
315
|
}
|
|
379
316
|
}
|
|
380
|
-
}
|
|
317
|
+
}
|
|
381
318
|
}
|
|
382
|
-
export function
|
|
383
|
-
|
|
319
|
+
export async function getGoogleSheetContent(fileId, authToken, axiosClient, sharedDriveParams) {
|
|
320
|
+
// Use CSV export as primary method - it's much faster and more reliable for large sheets
|
|
321
|
+
// The Sheets API with includeGridData can timeout on large spreadsheets
|
|
322
|
+
try {
|
|
323
|
+
const exportUrl = `${GDRIVE_BASE_URL}${encodeURIComponent(fileId)}/export?mimeType=text/csv${sharedDriveParams}`;
|
|
324
|
+
const exportRes = await axiosClient.get(exportUrl, {
|
|
325
|
+
headers: { Authorization: `Bearer ${authToken}` },
|
|
326
|
+
responseType: "text",
|
|
327
|
+
});
|
|
328
|
+
// Clean up trailing commas and convert to JSON format
|
|
329
|
+
const cleanedCsv = exportRes.data
|
|
330
|
+
.split("\n")
|
|
331
|
+
.map((line) => line.replace(/,+$/, ""))
|
|
332
|
+
.map((line) => line.replace(/,{2,}/g, ","))
|
|
333
|
+
.join("\n");
|
|
334
|
+
return parseCSVToSheetJson(cleanedCsv);
|
|
335
|
+
}
|
|
336
|
+
catch (exportError) {
|
|
337
|
+
// Check if it's a 404 or permission error
|
|
338
|
+
if (exportError && typeof exportError === "object" && "status" in exportError) {
|
|
339
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
340
|
+
const status = exportError.status;
|
|
341
|
+
if (status === 404 || status === 403) {
|
|
342
|
+
throw new Error(`Spreadsheet not accessible (${status}): ${fileId}`, { cause: exportError });
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// If CSV export fails, try the Sheets API as fallback (but this is slower)
|
|
384
346
|
try {
|
|
385
|
-
const
|
|
386
|
-
const
|
|
347
|
+
const sheetsUrl = `https://sheets.googleapis.com/v4/spreadsheets/${fileId}?includeGridData=true`;
|
|
348
|
+
const sheetsRes = await axiosClient.get(sheetsUrl, {
|
|
387
349
|
headers: {
|
|
388
350
|
Authorization: `Bearer ${authToken}`,
|
|
389
351
|
},
|
|
390
352
|
});
|
|
391
|
-
return
|
|
353
|
+
return parseGoogleSheetsFromRawContentToPlainText(sheetsRes.data);
|
|
392
354
|
}
|
|
393
|
-
catch (
|
|
394
|
-
if (isAxiosTimeoutError(
|
|
395
|
-
|
|
396
|
-
throw new Error("Request timed out using Google Slides API");
|
|
397
|
-
}
|
|
398
|
-
else {
|
|
399
|
-
console.log("Error using Google Slides API", slidesError);
|
|
400
|
-
const exportUrl = `${GDRIVE_BASE_URL}${encodeURIComponent(fileId)}/export?mimeType=text/plain${sharedDriveParams}`;
|
|
401
|
-
const exportRes = yield axiosClient.get(exportUrl, {
|
|
402
|
-
headers: { Authorization: `Bearer ${authToken}` },
|
|
403
|
-
responseType: "text",
|
|
404
|
-
});
|
|
405
|
-
return exportRes.data;
|
|
355
|
+
catch (sheetsError) {
|
|
356
|
+
if (isAxiosTimeoutError(sheetsError)) {
|
|
357
|
+
throw new Error("Request timed out using Google Sheets API", { cause: sheetsError });
|
|
406
358
|
}
|
|
359
|
+
throw new Error(`Unable to access spreadsheet content: ${fileId}`, { cause: sheetsError });
|
|
407
360
|
}
|
|
408
|
-
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
export async function getGoogleSlidesContent(fileId, authToken, axiosClient, sharedDriveParams) {
|
|
364
|
+
try {
|
|
365
|
+
const slidesUrl = `https://slides.googleapis.com/v1/presentations/${fileId}`;
|
|
366
|
+
const slidesRes = await axiosClient.get(slidesUrl, {
|
|
367
|
+
headers: {
|
|
368
|
+
Authorization: `Bearer ${authToken}`,
|
|
369
|
+
},
|
|
370
|
+
});
|
|
371
|
+
return parseGoogleSlidesFromRawContentToPlainText(slidesRes.data);
|
|
372
|
+
}
|
|
373
|
+
catch (slidesError) {
|
|
374
|
+
if (isAxiosTimeoutError(slidesError)) {
|
|
375
|
+
console.log("Request timed out using Google Slides API - dont retry");
|
|
376
|
+
throw new Error("Request timed out using Google Slides API", { cause: slidesError });
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
console.log("Error using Google Slides API", slidesError);
|
|
380
|
+
const exportUrl = `${GDRIVE_BASE_URL}${encodeURIComponent(fileId)}/export?mimeType=text/plain${sharedDriveParams}`;
|
|
381
|
+
const exportRes = await axiosClient.get(exportUrl, {
|
|
382
|
+
headers: { Authorization: `Bearer ${authToken}` },
|
|
383
|
+
responseType: "text",
|
|
384
|
+
});
|
|
385
|
+
return exportRes.data;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
409
388
|
}
|
package/dist/utils/pdf.js
CHANGED
|
@@ -1,23 +1,12 @@
|
|
|
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 { extractText } from "unpdf";
|
|
11
|
-
export function extractTextFromPdf(input) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return text.map(page => page.trim()).join("\n\n");
|
|
22
|
-
});
|
|
2
|
+
export async function extractTextFromPdf(input) {
|
|
3
|
+
// Normalize input into Uint8Array
|
|
4
|
+
const data = input instanceof Uint8Array && !(typeof Buffer !== "undefined" && Buffer.isBuffer(input))
|
|
5
|
+
? input
|
|
6
|
+
: typeof Buffer !== "undefined" && Buffer.isBuffer(input)
|
|
7
|
+
? new Uint8Array(input)
|
|
8
|
+
: new Uint8Array(input);
|
|
9
|
+
// Extract text using unpdf
|
|
10
|
+
const { text } = await extractText(data);
|
|
11
|
+
return text.map(page => page.trim()).join("\n\n");
|
|
23
12
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@credal/actions",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.199",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI Actions by Credal AI",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"author": "",
|
|
30
30
|
"license": "ISC",
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@eslint/js": "^
|
|
32
|
+
"@eslint/js": "^10.0.0",
|
|
33
33
|
"@jest/globals": "^29.7.0",
|
|
34
34
|
"@types/html-to-text": "^9.0.4",
|
|
35
35
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -37,18 +37,18 @@
|
|
|
37
37
|
"@types/node": "^24.0.0",
|
|
38
38
|
"@types/node-forge": "^1.3.11",
|
|
39
39
|
"@types/papaparse": "^5.5.2",
|
|
40
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
41
|
-
"@typescript-eslint/parser": "^8.
|
|
42
|
-
"eslint": "^
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^8.56.0",
|
|
41
|
+
"@typescript-eslint/parser": "^8.56.0",
|
|
42
|
+
"eslint": "^10.0.0",
|
|
43
43
|
"globals": "^15.13.0",
|
|
44
44
|
"js-yaml": "^4.1.0",
|
|
45
45
|
"prettier": "^3.4.2",
|
|
46
46
|
"ts-jest": "^29.3.2",
|
|
47
|
-
"ts-morph": "^
|
|
47
|
+
"ts-morph": "^27.0.0",
|
|
48
48
|
"ts-node-dev": "^2.0.0",
|
|
49
49
|
"tsconfig-paths": "^4.2.0",
|
|
50
50
|
"typescript": "^5.7.2",
|
|
51
|
-
"typescript-eslint": "^8.
|
|
51
|
+
"typescript-eslint": "^8.56.0"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@credal/sdk": "^0.1.14",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"@slack/web-api": "^7.8.0",
|
|
60
60
|
"@thednp/dommatrix": "^2.0.12",
|
|
61
61
|
"@types/snowflake-sdk": "^1.6.24",
|
|
62
|
-
"ajv": "^8.
|
|
62
|
+
"ajv": "^8.18.0",
|
|
63
63
|
"axios-retry": "^4.5.0",
|
|
64
64
|
"date-fns": "^4.1.0",
|
|
65
65
|
"docx": "^9.3.0",
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"zod": "^3.25.0"
|
|
86
86
|
},
|
|
87
87
|
"overrides": {
|
|
88
|
-
"fast-xml-parser": "^5.3.3"
|
|
88
|
+
"fast-xml-parser": "^5.3.3",
|
|
89
|
+
"minimatch": "^10.2.1"
|
|
89
90
|
}
|
|
90
91
|
}
|
|
@@ -1,36 +0,0 @@
|
|
|
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;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * as add from "./add";
|
|
@@ -1,37 +0,0 @@
|
|
|
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"));
|
|
@@ -1,43 +0,0 @@
|
|
|
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;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * as listConversations from "./listConversations";
|