@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.
Files changed (175) hide show
  1. package/dist/actions/actionMapper.js +8 -1
  2. package/dist/actions/autogen/templates.d.ts +1 -0
  3. package/dist/actions/autogen/templates.js +79 -18
  4. package/dist/actions/autogen/types.d.ts +39 -0
  5. package/dist/actions/autogen/types.js +43 -8
  6. package/dist/actions/groups.js +4 -1
  7. package/dist/actions/invoke.js +11 -22
  8. package/dist/actions/parse.js +231 -244
  9. package/dist/actions/providers/asana/commentAsanaTask.js +8 -15
  10. package/dist/actions/providers/asana/createAsanaTask.js +20 -21
  11. package/dist/actions/providers/asana/getTasksDetails.js +18 -34
  12. package/dist/actions/providers/asana/listAsanaTasksByProject.js +62 -79
  13. package/dist/actions/providers/asana/searchAsanaTasks.js +6 -16
  14. package/dist/actions/providers/asana/updateAsanaTask.js +16 -15
  15. package/dist/actions/providers/asana/utils.js +47 -64
  16. package/dist/actions/providers/bing/getTopNSearchResultUrls.js +4 -14
  17. package/dist/actions/providers/confluence/fetchPageContent.js +5 -15
  18. package/dist/actions/providers/confluence/overwritePage.js +5 -14
  19. package/dist/actions/providers/finnhub/getBasicFinancials.js +7 -19
  20. package/dist/actions/providers/finnhub/symbolLookup.js +3 -12
  21. package/dist/actions/providers/firecrawl/deepResearch.js +11 -21
  22. package/dist/actions/providers/firecrawl/getTopNSearchResultUrls.js +8 -21
  23. package/dist/actions/providers/firecrawl/scrapeTweetDataWithNitter.js +4 -13
  24. package/dist/actions/providers/firecrawl/scrapeUrl.js +16 -21
  25. package/dist/actions/providers/firecrawl/searchAndScrape.js +6 -17
  26. package/dist/actions/providers/generic/fillTemplate.js +2 -11
  27. package/dist/actions/providers/github/createBranch.js +9 -18
  28. package/dist/actions/providers/github/createOrUpdateFile.js +6 -15
  29. package/dist/actions/providers/github/createPullRequest.js +5 -14
  30. package/dist/actions/providers/github/fetchFile.d.ts +3 -0
  31. package/dist/actions/providers/github/fetchFile.js +131 -0
  32. package/dist/actions/providers/github/getBranch.js +4 -13
  33. package/dist/actions/providers/github/getContents.d.ts +3 -0
  34. package/dist/actions/providers/github/getContents.js +41 -0
  35. package/dist/actions/providers/github/getFileContent.js +6 -16
  36. package/dist/actions/providers/github/getPullRequestDetails.js +39 -18
  37. package/dist/actions/providers/github/listCommits.js +17 -15
  38. package/dist/actions/providers/github/listDirectory.js +13 -25
  39. package/dist/actions/providers/github/listPullRequests.js +4 -13
  40. package/dist/actions/providers/github/searchOrganization.js +29 -49
  41. package/dist/actions/providers/github/utils.js +5 -16
  42. package/dist/actions/providers/gitlab/getFileContent.js +13 -24
  43. package/dist/actions/providers/gitlab/getMergeRequest.js +18 -30
  44. package/dist/actions/providers/gitlab/listDirectory.js +15 -27
  45. package/dist/actions/providers/gitlab/searchGroup.js +45 -52
  46. package/dist/actions/providers/gitlab/utils.js +19 -32
  47. package/dist/actions/providers/google-oauth/addGroupMember.js +3 -12
  48. package/dist/actions/providers/google-oauth/addTextToTopOfDoc.js +3 -12
  49. package/dist/actions/providers/google-oauth/appendRowsToSpreadsheet.js +4 -13
  50. package/dist/actions/providers/google-oauth/createNewGoogleDoc.js +7 -17
  51. package/dist/actions/providers/google-oauth/createPresentation.js +7 -13
  52. package/dist/actions/providers/google-oauth/createSpreadsheet.js +7 -13
  53. package/dist/actions/providers/google-oauth/deleteCalendarEvent.js +3 -12
  54. package/dist/actions/providers/google-oauth/deleteGroupMember.js +3 -12
  55. package/dist/actions/providers/google-oauth/deleteRowFromSpreadsheet.js +3 -12
  56. package/dist/actions/providers/google-oauth/editAGoogleCalendarEvent.js +4 -14
  57. package/dist/actions/providers/google-oauth/getDriveFileContentById.js +23 -33
  58. package/dist/actions/providers/google-oauth/getGroup.js +3 -12
  59. package/dist/actions/providers/google-oauth/getPresentation.js +23 -37
  60. package/dist/actions/providers/google-oauth/hasGroupMember.js +3 -12
  61. package/dist/actions/providers/google-oauth/listCalendarEvents.js +27 -21
  62. package/dist/actions/providers/google-oauth/listCalendars.js +4 -14
  63. package/dist/actions/providers/google-oauth/listGroupMembers.js +4 -13
  64. package/dist/actions/providers/google-oauth/listGroups.js +4 -14
  65. package/dist/actions/providers/google-oauth/queryGoogleBigQuery.js +10 -21
  66. package/dist/actions/providers/google-oauth/scheduleCalendarMeeting.js +11 -14
  67. package/dist/actions/providers/google-oauth/searchDriveByKeywords.js +3 -12
  68. package/dist/actions/providers/google-oauth/searchDriveByKeywordsAndGetFileContent.js +12 -23
  69. package/dist/actions/providers/google-oauth/searchDriveByQuery.js +30 -42
  70. package/dist/actions/providers/google-oauth/searchDriveByQueryAndGetFileContent.js +9 -20
  71. package/dist/actions/providers/google-oauth/updateCalendarEvent.js +3 -12
  72. package/dist/actions/providers/google-oauth/updateDoc.js +3 -12
  73. package/dist/actions/providers/google-oauth/updatePresentation.js +3 -12
  74. package/dist/actions/providers/google-oauth/updateRowsInSpreadsheet.js +4 -13
  75. package/dist/actions/providers/google-oauth/updateSpreadsheet.js +3 -12
  76. package/dist/actions/providers/google-oauth/utils/decodeMessage.js +7 -8
  77. package/dist/actions/providers/googleSearch/customSearch.js +18 -36
  78. package/dist/actions/providers/googlemail/listGmailThreads.js +7 -16
  79. package/dist/actions/providers/googlemail/replyToGmail.d.ts +3 -0
  80. package/dist/actions/providers/googlemail/replyToGmail.js +89 -0
  81. package/dist/actions/providers/googlemail/searchGmailMessages.js +10 -20
  82. package/dist/actions/providers/googlemail/sendGmail.js +7 -17
  83. package/dist/actions/providers/googlemaps/nearbysearchRestaurants.js +13 -25
  84. package/dist/actions/providers/googlemaps/validateAddress.js +3 -12
  85. package/dist/actions/providers/hubspot/getCompanies.js +4 -14
  86. package/dist/actions/providers/hubspot/getCompanyDetails.js +3 -12
  87. package/dist/actions/providers/hubspot/getContactDetails.js +3 -12
  88. package/dist/actions/providers/hubspot/getContacts.js +4 -14
  89. package/dist/actions/providers/hubspot/getDealDetails.js +3 -12
  90. package/dist/actions/providers/hubspot/getDeals.js +3 -12
  91. package/dist/actions/providers/hubspot/getTicketDetails.js +3 -12
  92. package/dist/actions/providers/hubspot/getTickets.js +3 -12
  93. package/dist/actions/providers/jira/assignJiraTicket.js +4 -13
  94. package/dist/actions/providers/jira/commentJiraTicket.js +3 -12
  95. package/dist/actions/providers/jira/createJiraTicket.js +22 -18
  96. package/dist/actions/providers/jira/createServiceDeskRequest.js +3 -12
  97. package/dist/actions/providers/jira/getJiraDCIssuesByQuery.js +5 -14
  98. package/dist/actions/providers/jira/getJiraIssuesByQuery.js +19 -29
  99. package/dist/actions/providers/jira/getJiraTicketDetails.js +3 -12
  100. package/dist/actions/providers/jira/getJiraTicketHistory.js +3 -12
  101. package/dist/actions/providers/jira/moveJiraTicketToProject.js +11 -21
  102. package/dist/actions/providers/jira/publicCommentOnServiceDeskRequest.js +3 -12
  103. package/dist/actions/providers/jira/updateJiraTicketDetails.js +15 -15
  104. package/dist/actions/providers/jira/updateJiraTicketStatus.js +4 -13
  105. package/dist/actions/providers/jira/utils.js +104 -126
  106. package/dist/actions/providers/linear/getIssueDetails.js +10 -20
  107. package/dist/actions/providers/linear/getIssues.js +11 -21
  108. package/dist/actions/providers/linear/getProjectDetails.js +10 -20
  109. package/dist/actions/providers/linear/getProjects.js +6 -16
  110. package/dist/actions/providers/linear/getTeamDetails.js +7 -17
  111. package/dist/actions/providers/linear/getTeams.js +5 -15
  112. package/dist/actions/providers/looker/enableUserByEmail.js +5 -14
  113. package/dist/actions/providers/math/add.js +2 -11
  114. package/dist/actions/providers/microsoft/createDocument.js +4 -13
  115. package/dist/actions/providers/microsoft/getDocument.js +4 -13
  116. package/dist/actions/providers/microsoft/messageTeamsChannel.js +4 -13
  117. package/dist/actions/providers/microsoft/messageTeamsChat.js +4 -13
  118. package/dist/actions/providers/microsoft/updateDocument.js +4 -13
  119. package/dist/actions/providers/microsoft/updateSpreadsheet.js +4 -13
  120. package/dist/actions/providers/microsoft/utils.js +9 -20
  121. package/dist/actions/providers/mongodb/insertMongoDoc.js +5 -14
  122. package/dist/actions/providers/notion/searchByTitle.js +3 -12
  123. package/dist/actions/providers/nws/getForecastForLocation.js +4 -13
  124. package/dist/actions/providers/oktaOrg/getOktaUserByName.js +3 -12
  125. package/dist/actions/providers/openstreetmap/getLatitudeLongitudeFromLocation.js +3 -12
  126. package/dist/actions/providers/perplexity/perplexityDeepResearch.js +11 -21
  127. package/dist/actions/providers/resend/sendEmail.js +3 -12
  128. package/dist/actions/providers/resend/sendEmailHtml.js +3 -12
  129. package/dist/actions/providers/salesforce/createCase.js +10 -13
  130. package/dist/actions/providers/salesforce/createRecord.js +3 -12
  131. package/dist/actions/providers/salesforce/executeReport.js +3 -12
  132. package/dist/actions/providers/salesforce/generateSalesReport.js +3 -12
  133. package/dist/actions/providers/salesforce/getRecord.js +3 -12
  134. package/dist/actions/providers/salesforce/getReportMetadata.js +11 -21
  135. package/dist/actions/providers/salesforce/getSalesforceRecordsByQuery.js +7 -17
  136. package/dist/actions/providers/salesforce/listReports.js +3 -12
  137. package/dist/actions/providers/salesforce/searchAllSalesforceRecords.js +3 -12
  138. package/dist/actions/providers/salesforce/searchSalesforceRecords.js +3 -12
  139. package/dist/actions/providers/salesforce/updateRecord.js +3 -12
  140. package/dist/actions/providers/slack/archiveChannel.js +9 -2
  141. package/dist/actions/providers/slack/createChannel.js +7 -17
  142. package/dist/actions/providers/slack/getChannelMembers.js +8 -18
  143. package/dist/actions/providers/slack/getChannelMessages.js +8 -18
  144. package/dist/actions/providers/slack/helpers.js +16 -47
  145. package/dist/actions/providers/slack/messageTransformers.js +10 -13
  146. package/dist/actions/providers/slack/sendDmFromBot.js +9 -19
  147. package/dist/actions/providers/slack/sendMessage.js +7 -17
  148. package/dist/actions/providers/slackUser/searchSlack.js +179 -212
  149. package/dist/actions/providers/slackUser/searchSlackRTS.js +20 -33
  150. package/dist/actions/providers/slackUser/utils.js +1 -1
  151. package/dist/actions/providers/snowflake/auth/getSnowflakeConnection.js +23 -34
  152. package/dist/actions/providers/snowflake/getRowByFieldValue.js +4 -13
  153. package/dist/actions/providers/snowflake/runSnowflakeQuery.js +9 -19
  154. package/dist/actions/providers/zendesk/addCommentToTicket.js +5 -14
  155. package/dist/actions/providers/zendesk/assignTicket.js +3 -12
  156. package/dist/actions/providers/zendesk/createZendeskTicket.js +3 -12
  157. package/dist/actions/providers/zendesk/getTicketDetails.js +3 -12
  158. package/dist/actions/providers/zendesk/listTickets.js +3 -12
  159. package/dist/actions/providers/zendesk/searchZendeskByQuery.js +3 -12
  160. package/dist/actions/providers/zendesk/updateTicketStatus.js +3 -12
  161. package/dist/actions/util/axiosClient.js +5 -5
  162. package/dist/app.js +14 -25
  163. package/dist/utils/google.js +122 -143
  164. package/dist/utils/pdf.js +10 -21
  165. package/package.json +10 -9
  166. package/dist/actions/providers/credal/callCopilot.d.ts +0 -3
  167. package/dist/actions/providers/credal/callCopilot.js +0 -36
  168. package/dist/actions/providers/math/index.d.ts +0 -1
  169. package/dist/actions/providers/math/index.js +0 -37
  170. package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.d.ts +0 -3
  171. package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.js +0 -43
  172. package/dist/actions/providers/slack/index.d.ts +0 -1
  173. package/dist/actions/providers/slack/index.js +0 -37
  174. package/dist/actions/providers/slack/listConversations.d.ts +0 -3
  175. package/dist/actions/providers/slack/listConversations.js +0 -41
@@ -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 (!((_a = snapshotRawContent.body) === null || _a === void 0 ? void 0 : _a.content))
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 ((_b = paragraph.paragraphStyle) === null || _b === void 0 ? void 0 : _b.headingId) {
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 === null || paragraph === void 0 ? void 0 : paragraph.elements) {
29
+ if (paragraph?.elements) {
40
30
  const combinedTextRuns = paragraph.elements
41
- .map(element => { var _a; return (_a = element.textRun) === null || _a === void 0 ? void 0 : _a.content; })
31
+ .map(element => element.textRun?.content)
42
32
  .filter((content) => Boolean(content))
43
33
  .join("");
44
- const bulletNestingLevel = paragraph.bullet === undefined ? undefined : ((_d = (_c = paragraph.bullet) === null || _c === void 0 ? void 0 : _c.nestingLevel) !== null && _d !== void 0 ? _d : 0);
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 ((_e = cellContent.paragraph) === null || _e === void 0 ? void 0 : _e.elements) {
55
+ if (cellContent.paragraph?.elements) {
66
56
  const cellParagraphText = cellContent.paragraph.elements
67
- .map(element => { var _a; return (_a = element.textRun) === null || _a === void 0 ? void 0 : _a.content; })
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 ((_f = tocContent.paragraph) === null || _f === void 0 ? void 0 : _f.elements) {
88
+ if (tocContent.paragraph?.elements) {
99
89
  const tocParagraphText = tocContent.paragraph.elements
100
- .map(element => { var _a; return (_a = element.textRun) === null || _a === void 0 ? void 0 : _a.content; })
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 || !((_a = sheet.properties) === null || _a === void 0 ? void 0 : _a.title))
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 ((_a = cell.userEnteredValue) === null || _a === void 0 ? void 0 : _a.stringValue)
155
+ if (cell.userEnteredValue?.stringValue)
168
156
  return cell.userEnteredValue.stringValue;
169
- if (((_b = cell.userEnteredValue) === null || _b === void 0 ? void 0 : _b.numberValue) !== undefined)
157
+ if (cell.userEnteredValue?.numberValue !== undefined)
170
158
  return cell.userEnteredValue.numberValue.toString();
171
- if (((_c = cell.userEnteredValue) === null || _c === void 0 ? void 0 : _c.boolValue) !== undefined)
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 => { var _a, _b; return (_b = (_a = el.textRun) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.trim(); }).filter((content) => Boolean(content));
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 ((_b = (_a = pageElement.shape) === null || _a === void 0 ? void 0 : _a.text) === null || _b === void 0 ? void 0 : _b.textElements) {
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 ((_c = pageElement.table) === null || _c === void 0 ? void 0 : _c.tableRows) {
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 ((_d = cell.text) === null || _d === void 0 ? void 0 : _d.textElements) {
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 ((_f = (_e = pageElement.line) === null || _e === void 0 ? void 0 : _e.text) === null || _f === void 0 ? void 0 : _f.textElements) {
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 ((_h = (_g = pageElement.wordArt) === null || _g === void 0 ? void 0 : _g.text) === null || _h === void 0 ? void 0 : _h.textElements) {
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 ((_j = snapshotRawContent.notesMaster) === null || _j === void 0 ? void 0 : _j.pageElements) {
240
+ if (snapshotRawContent.notesMaster?.pageElements) {
254
241
  const notesTexts = [];
255
242
  for (const pageElement of snapshotRawContent.notesMaster.pageElements) {
256
- if ((_l = (_k = pageElement.shape) === null || _k === void 0 ? void 0 : _k.text) === null || _l === void 0 ? void 0 : _l.textElements) {
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
- return __awaiter(this, void 0, void 0, function* () {
280
- const docsUrl = `https://docs.googleapis.com/v1/documents/${fileId}?includeTabsContent=true`;
281
- const docsRes = yield axiosClient.get(docsUrl, {
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
- export function getGoogleDocContent(fileId, authToken, axiosClient, sharedDriveParams) {
301
- return __awaiter(this, void 0, void 0, function* () {
302
- try {
303
- return yield getGoogleDocContentNoExport(fileId, authToken, axiosClient);
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 getGoogleSheetContent(fileId, authToken, axiosClient, sharedDriveParams) {
337
- return __awaiter(this, void 0, void 0, function* () {
338
- // Use CSV export as primary method - it's much faster and more reliable for large sheets
339
- // The Sheets API with includeGridData can timeout on large spreadsheets
340
- try {
341
- const exportUrl = `${GDRIVE_BASE_URL}${encodeURIComponent(fileId)}/export?mimeType=text/csv${sharedDriveParams}`;
342
- const exportRes = yield axiosClient.get(exportUrl, {
343
- headers: { Authorization: `Bearer ${authToken}` },
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
- catch (exportError) {
355
- // Check if it's a 404 or permission error
356
- if (exportError && typeof exportError === "object" && "status" in exportError) {
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 = exportError.status;
299
+ const status = docsError.status;
359
300
  if (status === 404 || status === 403) {
360
- throw new Error(`Spreadsheet not accessible (${status}): ${fileId}`);
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
- const sheetsUrl = `https://sheets.googleapis.com/v4/spreadsheets/${fileId}?includeGridData=true`;
366
- const sheetsRes = yield axiosClient.get(sheetsUrl, {
367
- headers: {
368
- Authorization: `Bearer ${authToken}`,
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 parseGoogleSheetsFromRawContentToPlainText(sheetsRes.data);
311
+ return exportRes.data;
372
312
  }
373
- catch (sheetsError) {
374
- if (isAxiosTimeoutError(sheetsError)) {
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 getGoogleSlidesContent(fileId, authToken, axiosClient, sharedDriveParams) {
383
- return __awaiter(this, void 0, void 0, function* () {
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 slidesUrl = `https://slides.googleapis.com/v1/presentations/${fileId}`;
386
- const slidesRes = yield axiosClient.get(slidesUrl, {
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 parseGoogleSlidesFromRawContentToPlainText(slidesRes.data);
353
+ return parseGoogleSheetsFromRawContentToPlainText(sheetsRes.data);
392
354
  }
393
- catch (slidesError) {
394
- if (isAxiosTimeoutError(slidesError)) {
395
- console.log("Request timed out using Google Slides API - dont retry");
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
- return __awaiter(this, void 0, void 0, function* () {
13
- // Normalize input into Uint8Array
14
- const data = input instanceof Uint8Array && !(typeof Buffer !== "undefined" && Buffer.isBuffer(input))
15
- ? input
16
- : typeof Buffer !== "undefined" && Buffer.isBuffer(input)
17
- ? new Uint8Array(input)
18
- : new Uint8Array(input);
19
- // Extract text using unpdf
20
- const { text } = yield extractText(data);
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.197",
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": "^9.16.0",
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.18.0",
41
- "@typescript-eslint/parser": "^8.18.0",
42
- "eslint": "^9.16.0",
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": "^24.0.0",
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.18.0"
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.17.1",
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,3 +0,0 @@
1
- import type { credalCallCopilotFunction } from "../../autogen/types";
2
- declare const callCopilot: credalCallCopilotFunction;
3
- export default callCopilot;
@@ -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,3 +0,0 @@
1
- import { salesforceGetSalesforceRecordsByQueryFunction } from "../../autogen/types";
2
- declare const getSalesforceRecordByQuery: salesforceGetSalesforceRecordsByQueryFunction;
3
- export default getSalesforceRecordByQuery;
@@ -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";