@credal/actions 0.2.153 → 0.2.155

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 (37) hide show
  1. package/dist/actions/autogen/templates.js +29 -0
  2. package/dist/actions/autogen/types.d.ts +25 -4
  3. package/dist/actions/autogen/types.js +28 -0
  4. package/dist/actions/groups.js +14 -1
  5. package/dist/actions/providers/confluence/updatePage.d.ts +3 -0
  6. package/dist/actions/providers/confluence/updatePage.js +46 -0
  7. package/dist/actions/providers/generic/fillTemplateAction.d.ts +7 -0
  8. package/dist/actions/providers/generic/fillTemplateAction.js +18 -0
  9. package/dist/actions/providers/generic/genericApiCall.d.ts +3 -0
  10. package/dist/actions/providers/generic/genericApiCall.js +38 -0
  11. package/dist/actions/providers/google-oauth/getDriveContentById.d.ts +3 -0
  12. package/dist/actions/providers/google-oauth/getDriveContentById.js +161 -0
  13. package/dist/actions/providers/google-oauth/searchAndGetDriveContentByKeywords.d.ts +3 -0
  14. package/dist/actions/providers/google-oauth/searchAndGetDriveContentByKeywords.js +47 -0
  15. package/dist/actions/providers/google-oauth/searchDriveAndGetContentByKeywords.d.ts +3 -0
  16. package/dist/actions/providers/google-oauth/searchDriveAndGetContentByKeywords.js +110 -0
  17. package/dist/actions/providers/google-oauth/searchDriveAndGetContentByQuery.d.ts +3 -0
  18. package/dist/actions/providers/google-oauth/searchDriveAndGetContentByQuery.js +78 -0
  19. package/dist/actions/providers/google-oauth/utils/extractContentFromDriveFileId.d.ts +15 -0
  20. package/dist/actions/providers/google-oauth/utils/extractContentFromDriveFileId.js +129 -0
  21. package/dist/actions/providers/googlemaps/nearbysearch.d.ts +3 -0
  22. package/dist/actions/providers/googlemaps/nearbysearch.js +96 -0
  23. package/dist/actions/providers/slack/archiveChannel.js +9 -2
  24. package/dist/actions/providers/slack/getChannelMessages.js +98 -2
  25. package/dist/actions/providers/slack/messageTransformers.d.ts +53 -0
  26. package/dist/actions/providers/slack/messageTransformers.js +267 -0
  27. package/dist/actions/providers/slackUser/getSlackMessagesInTimeRange.d.ts +3 -0
  28. package/dist/actions/providers/slackUser/getSlackMessagesInTimeRange.js +81 -0
  29. package/dist/actions/providers/slackUser/searchSlack.d.ts +0 -15
  30. package/dist/actions/providers/slackUser/searchSlack.js +70 -193
  31. package/dist/actions/providers/snowflake/runSnowflakeQueryWriteResultsToS3.d.ts +3 -0
  32. package/dist/actions/providers/snowflake/runSnowflakeQueryWriteResultsToS3.js +154 -0
  33. package/dist/actions/providers/x/scrapeTweetDataWithNitter.d.ts +3 -0
  34. package/dist/actions/providers/x/scrapeTweetDataWithNitter.js +45 -0
  35. package/package.json +2 -2
  36. package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.d.ts +0 -3
  37. package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.js +0 -43
@@ -686,6 +686,22 @@ export const slackGetChannelMessagesDefinition = {
686
686
  type: "string",
687
687
  description: "Only messages after this Unix timestamp will be included in results",
688
688
  },
689
+ latest: {
690
+ type: "string",
691
+ description: "Only messages before this Unix timestamp will be included. Default is the current time. Use with oldest to create a time range.",
692
+ },
693
+ limit: {
694
+ type: "number",
695
+ description: "Maximum number of messages to return (1-999). Default is 100. Slack recommends no more than 200 results at a time for performance.",
696
+ },
697
+ cursor: {
698
+ type: "string",
699
+ description: "Pagination cursor from a previous response's next_cursor value. Use to navigate through large result sets.",
700
+ },
701
+ includeThreadReplies: {
702
+ type: "boolean",
703
+ description: "If true, includes all replies for messages that are part of a thread. Default is false.",
704
+ },
689
705
  },
690
706
  },
691
707
  output: {
@@ -715,6 +731,14 @@ export const slackGetChannelMessagesDefinition = {
715
731
  },
716
732
  },
717
733
  },
734
+ hasMore: {
735
+ type: "boolean",
736
+ description: "Indicates if there are more messages available beyond the current result set",
737
+ },
738
+ nextCursor: {
739
+ type: "string",
740
+ description: "Cursor to use for fetching the next page of results. Only present when hasMore is true.",
741
+ },
718
742
  },
719
743
  },
720
744
  name: "getChannelMessages",
@@ -767,6 +791,11 @@ export const slackUserSearchSlackDefinition = {
767
791
  maximum: 100,
768
792
  default: 50,
769
793
  },
794
+ fetchAdjacentMessages: {
795
+ type: "boolean",
796
+ description: "Fetch surrounding messages for context. Threads always fetch all replies.",
797
+ default: true,
798
+ },
770
799
  },
771
800
  },
772
801
  output: {
@@ -825,14 +825,26 @@ export declare const slackGetChannelMessagesParamsSchema: z.ZodObject<{
825
825
  channelId: z.ZodOptional<z.ZodString>;
826
826
  channelName: z.ZodOptional<z.ZodString>;
827
827
  oldest: z.ZodString;
828
+ latest: z.ZodOptional<z.ZodString>;
829
+ limit: z.ZodOptional<z.ZodNumber>;
830
+ cursor: z.ZodOptional<z.ZodString>;
831
+ includeThreadReplies: z.ZodOptional<z.ZodBoolean>;
828
832
  }, "strip", z.ZodTypeAny, {
829
833
  oldest: string;
830
834
  channelName?: string | undefined;
831
835
  channelId?: string | undefined;
836
+ latest?: string | undefined;
837
+ limit?: number | undefined;
838
+ cursor?: string | undefined;
839
+ includeThreadReplies?: boolean | undefined;
832
840
  }, {
833
841
  oldest: string;
834
842
  channelName?: string | undefined;
835
843
  channelId?: string | undefined;
844
+ latest?: string | undefined;
845
+ limit?: number | undefined;
846
+ cursor?: string | undefined;
847
+ includeThreadReplies?: boolean | undefined;
836
848
  }>;
837
849
  export type slackGetChannelMessagesParamsType = z.infer<typeof slackGetChannelMessagesParamsSchema>;
838
850
  export declare const slackGetChannelMessagesOutputSchema: z.ZodObject<{
@@ -849,18 +861,24 @@ export declare const slackGetChannelMessagesOutputSchema: z.ZodObject<{
849
861
  user: string;
850
862
  ts: string;
851
863
  }>, "many">;
864
+ hasMore: z.ZodOptional<z.ZodBoolean>;
865
+ nextCursor: z.ZodOptional<z.ZodString>;
852
866
  }, "strip", z.ZodTypeAny, {
853
867
  messages: {
854
868
  text: string;
855
869
  user: string;
856
870
  ts: string;
857
871
  }[];
872
+ hasMore?: boolean | undefined;
873
+ nextCursor?: string | undefined;
858
874
  }, {
859
875
  messages: {
860
876
  text: string;
861
877
  user: string;
862
878
  ts: string;
863
879
  }[];
880
+ hasMore?: boolean | undefined;
881
+ nextCursor?: string | undefined;
864
882
  }>;
865
883
  export type slackGetChannelMessagesOutputType = z.infer<typeof slackGetChannelMessagesOutputSchema>;
866
884
  export type slackGetChannelMessagesFunction = ActionFunction<slackGetChannelMessagesParamsType, AuthParamsType, slackGetChannelMessagesOutputType>;
@@ -870,18 +888,21 @@ export declare const slackUserSearchSlackParamsSchema: z.ZodObject<{
870
888
  topic: z.ZodOptional<z.ZodString>;
871
889
  timeRange: z.ZodDefault<z.ZodEnum<["latest", "today", "yesterday", "last_7d", "last_30d", "all"]>>;
872
890
  limit: z.ZodDefault<z.ZodNumber>;
891
+ fetchAdjacentMessages: z.ZodDefault<z.ZodBoolean>;
873
892
  }, "strip", z.ZodTypeAny, {
874
- timeRange: "latest" | "today" | "yesterday" | "last_7d" | "last_30d" | "all";
875
893
  limit: number;
894
+ timeRange: "latest" | "today" | "yesterday" | "last_7d" | "last_30d" | "all";
895
+ fetchAdjacentMessages: boolean;
876
896
  emails?: string[] | undefined;
877
897
  channel?: string | undefined;
878
898
  topic?: string | undefined;
879
899
  }, {
900
+ limit?: number | undefined;
880
901
  emails?: string[] | undefined;
881
902
  channel?: string | undefined;
882
903
  topic?: string | undefined;
883
904
  timeRange?: "latest" | "today" | "yesterday" | "last_7d" | "last_30d" | "all" | undefined;
884
- limit?: number | undefined;
905
+ fetchAdjacentMessages?: boolean | undefined;
885
906
  }>;
886
907
  export type slackUserSearchSlackParamsType = z.infer<typeof slackUserSearchSlackParamsSchema>;
887
908
  export declare const slackUserSearchSlackOutputSchema: z.ZodObject<{
@@ -10345,6 +10366,7 @@ export declare const githubListCommitsOutputSchema: z.ZodObject<{
10345
10366
  }, "strip", z.ZodTypeAny, {
10346
10367
  success: boolean;
10347
10368
  error?: string | undefined;
10369
+ hasMore?: boolean | undefined;
10348
10370
  commits?: {
10349
10371
  url: string;
10350
10372
  sha: string;
@@ -10377,10 +10399,10 @@ export declare const githubListCommitsOutputSchema: z.ZodObject<{
10377
10399
  }[] | undefined;
10378
10400
  }[] | undefined;
10379
10401
  totalCount?: number | undefined;
10380
- hasMore?: boolean | undefined;
10381
10402
  }, {
10382
10403
  success: boolean;
10383
10404
  error?: string | undefined;
10405
+ hasMore?: boolean | undefined;
10384
10406
  commits?: {
10385
10407
  url: string;
10386
10408
  sha: string;
@@ -10413,7 +10435,6 @@ export declare const githubListCommitsOutputSchema: z.ZodObject<{
10413
10435
  }[] | undefined;
10414
10436
  }[] | undefined;
10415
10437
  totalCount?: number | undefined;
10416
- hasMore?: boolean | undefined;
10417
10438
  }>;
10418
10439
  export type githubListCommitsOutputType = z.infer<typeof githubListCommitsOutputSchema>;
10419
10440
  export type githubListCommitsFunction = ActionFunction<githubListCommitsParamsType, AuthParamsType, githubListCommitsOutputType>;
@@ -266,6 +266,22 @@ export const slackGetChannelMessagesParamsSchema = z.object({
266
266
  .describe("Name of the channel to summarize. Either the channelId or channelName must be provided.")
267
267
  .optional(),
268
268
  oldest: z.string().describe("Only messages after this Unix timestamp will be included in results"),
269
+ latest: z
270
+ .string()
271
+ .describe("Only messages before this Unix timestamp will be included. Default is the current time. Use with oldest to create a time range.")
272
+ .optional(),
273
+ limit: z
274
+ .number()
275
+ .describe("Maximum number of messages to return (1-999). Default is 100. Slack recommends no more than 200 results at a time for performance.")
276
+ .optional(),
277
+ cursor: z
278
+ .string()
279
+ .describe("Pagination cursor from a previous response's next_cursor value. Use to navigate through large result sets.")
280
+ .optional(),
281
+ includeThreadReplies: z
282
+ .boolean()
283
+ .describe("If true, includes all replies for messages that are part of a thread. Default is false.")
284
+ .optional(),
269
285
  });
270
286
  export const slackGetChannelMessagesOutputSchema = z.object({
271
287
  messages: z
@@ -277,6 +293,14 @@ export const slackGetChannelMessagesOutputSchema = z.object({
277
293
  })
278
294
  .describe("A message in the channel"))
279
295
  .describe("The messages in the channel"),
296
+ hasMore: z
297
+ .boolean()
298
+ .describe("Indicates if there are more messages available beyond the current result set")
299
+ .optional(),
300
+ nextCursor: z
301
+ .string()
302
+ .describe("Cursor to use for fetching the next page of results. Only present when hasMore is true.")
303
+ .optional(),
280
304
  });
281
305
  export const slackUserSearchSlackParamsSchema = z.object({
282
306
  emails: z
@@ -295,6 +319,10 @@ export const slackUserSearchSlackParamsSchema = z.object({
295
319
  .lte(100)
296
320
  .describe("Max matches to request (passed to Slack search; results are then hydrated and sorted newest-first).")
297
321
  .default(50),
322
+ fetchAdjacentMessages: z
323
+ .boolean()
324
+ .describe("Fetch surrounding messages for context. Threads always fetch all replies.")
325
+ .default(true),
298
326
  });
299
327
  export const slackUserSearchSlackOutputSchema = z.object({
300
328
  query: z.string().describe("The exact query string sent to Slack’s search API after resolving inputs."),
@@ -1,4 +1,4 @@
1
- import { genericFillTemplateDefinition, confluenceOverwritePageDefinition, googlemapsValidateAddressDefinition, mathAddDefinition, mongoInsertMongoDocDefinition, slackSendMessageDefinition, slackGetChannelMessagesDefinition, slackCreateChannelDefinition, slackArchiveChannelDefinition, snowflakeGetRowByFieldValueDefinition, zendeskCreateZendeskTicketDefinition, zendeskListZendeskTicketsDefinition, zendeskGetTicketDetailsDefinition, zendeskUpdateTicketStatusDefinition, zendeskAddCommentToTicketDefinition, zendeskAssignTicketDefinition, openstreetmapGetLatitudeLongitudeFromLocationDefinition, nwsGetForecastForLocationDefinition, jiraAssignJiraTicketDefinition, jiraCommentJiraTicketDefinition, jiraCreateJiraTicketDefinition, jiraGetJiraTicketDetailsDefinition, jiraGetJiraTicketHistoryDefinition, jiraUpdateJiraTicketDetailsDefinition, jiraUpdateJiraTicketStatusDefinition, jiraGetServiceDesksDefinition, jiraCreateServiceDeskRequestDefinition, googlemapsNearbysearchRestaurantsDefinition, firecrawlScrapeUrlDefinition, resendSendEmailDefinition, linkedinCreateShareLinkedinPostUrlDefinition, googleOauthCreateNewGoogleDocDefinition, xCreateShareXPostUrlDefinition, firecrawlScrapeTweetDataWithNitterDefinition, finnhubSymbolLookupDefinition, finnhubGetBasicFinancialsDefinition, confluenceFetchPageContentDefinition, snowflakeRunSnowflakeQueryDefinition, lookerEnableUserByEmailDefinition, googleOauthUpdateDocDefinition, googleOauthScheduleCalendarMeetingDefinition, googleOauthListCalendarsDefinition, googleOauthListCalendarEventsDefinition, googleOauthUpdateCalendarEventDefinition, googleOauthDeleteCalendarEventDefinition, googleOauthCreateSpreadsheetDefinition, googleOauthUpdateSpreadsheetDefinition, googleOauthCreatePresentationDefinition, googleOauthUpdatePresentationDefinition, googleOauthSearchDriveByKeywordsDefinition, googlemailSearchGmailMessagesDefinition, googlemailListGmailThreadsDefinition, googleOauthListGroupsDefinition, googleOauthGetGroupDefinition, googleOauthListGroupMembersDefinition, googleOauthHasGroupMemberDefinition, googleOauthAddGroupMemberDefinition, googleOauthDeleteGroupMemberDefinition, salesforceUpdateRecordDefinition, salesforceCreateCaseDefinition, salesforceGenerateSalesReportDefinition, salesforceGetRecordDefinition, salesforceGetSalesforceRecordsByQueryDefinition, microsoftMessageTeamsChatDefinition, microsoftMessageTeamsChannelDefinition, asanaCommentTaskDefinition, asanaCreateTaskDefinition, asanaUpdateTaskDefinition, asanaSearchTasksDefinition, githubCreateOrUpdateFileDefinition, githubCreateBranchDefinition, githubCreatePullRequestDefinition, microsoftUpdateSpreadsheetDefinition, microsoftUpdateDocumentDefinition, microsoftCreateDocumentDefinition, microsoftGetDocumentDefinition, salesforceFetchSalesforceSchemaByObjectDefinition, firecrawlDeepResearchDefinition, jiraGetJiraIssuesByQueryDefinition, githubListPullRequestsDefinition, salesforceCreateRecordDefinition, ashbyCreateNoteDefinition, ashbyGetCandidateInfoDefinition, ashbyListCandidatesDefinition, ashbyListCandidateNotesDefinition, ashbySearchCandidatesDefinition, ashbyCreateCandidateDefinition, ashbyUpdateCandidateDefinition, ashbyAddCandidateToProjectDefinition, bingGetTopNSearchResultUrlsDefinition, gongGetGongTranscriptsDefinition, kandjiGetFVRecoveryKeyForDeviceDefinition, asanaListAsanaTasksByProjectDefinition, notionSearchByTitleDefinition, asanaGetTasksDetailsDefinition, jamfGetJamfComputerInventoryDefinition, jamfGetJamfFileVaultRecoveryKeyDefinition, oktaListOktaUsersDefinition, oktaGetOktaUserDefinition, oktaListOktaUserGroupsDefinition, oktaListOktaGroupsDefinition, oktaGetOktaGroupDefinition, oktaListOktaGroupMembersDefinition, oktaRemoveUserFromGroupDefinition, oktaAddUserToGroupDefinition, oktaResetPasswordDefinition, oktaResetMFADefinition, oktaListMFADefinition, jamfGetJamfUserComputerIdDefinition, jamfLockJamfComputerByIdDefinition, oktaTriggerOktaWorkflowDefinition, jiraOrgAssignJiraTicketDefinition, jiraOrgCreateJiraTicketDefinition, jiraOrgCommentJiraTicketDefinition, jiraOrgGetJiraTicketDetailsDefinition, jiraOrgGetJiraTicketHistoryDefinition, jiraOrgUpdateJiraTicketDetailsDefinition, jiraOrgUpdateJiraTicketStatusDefinition, jiraOrgGetJiraIssuesByQueryDefinition, googleOauthGetDriveFileContentByIdDefinition, googleOauthSearchDriveByQueryDefinition, } from "./autogen/templates.js";
1
+ import { genericFillTemplateDefinition, confluenceOverwritePageDefinition, googlemapsValidateAddressDefinition, mathAddDefinition, mongoInsertMongoDocDefinition, slackSendMessageDefinition, slackGetChannelMessagesDefinition, slackCreateChannelDefinition, slackArchiveChannelDefinition, snowflakeGetRowByFieldValueDefinition, zendeskCreateZendeskTicketDefinition, zendeskListZendeskTicketsDefinition, zendeskGetTicketDetailsDefinition, zendeskUpdateTicketStatusDefinition, zendeskAddCommentToTicketDefinition, zendeskAssignTicketDefinition, openstreetmapGetLatitudeLongitudeFromLocationDefinition, nwsGetForecastForLocationDefinition, jiraAssignJiraTicketDefinition, jiraCommentJiraTicketDefinition, jiraCreateJiraTicketDefinition, jiraGetJiraTicketDetailsDefinition, jiraGetJiraTicketHistoryDefinition, jiraUpdateJiraTicketDetailsDefinition, jiraUpdateJiraTicketStatusDefinition, jiraGetServiceDesksDefinition, jiraCreateServiceDeskRequestDefinition, googlemapsNearbysearchRestaurantsDefinition, firecrawlScrapeUrlDefinition, resendSendEmailDefinition, linkedinCreateShareLinkedinPostUrlDefinition, googleOauthCreateNewGoogleDocDefinition, xCreateShareXPostUrlDefinition, firecrawlScrapeTweetDataWithNitterDefinition, finnhubSymbolLookupDefinition, finnhubGetBasicFinancialsDefinition, confluenceFetchPageContentDefinition, snowflakeRunSnowflakeQueryDefinition, lookerEnableUserByEmailDefinition, googleOauthUpdateDocDefinition, googleOauthScheduleCalendarMeetingDefinition, googleOauthListCalendarsDefinition, googleOauthListCalendarEventsDefinition, googleOauthUpdateCalendarEventDefinition, googleOauthDeleteCalendarEventDefinition, googleOauthCreateSpreadsheetDefinition, googleOauthUpdateSpreadsheetDefinition, googleOauthCreatePresentationDefinition, googleOauthUpdatePresentationDefinition, googleOauthSearchDriveByKeywordsDefinition, googlemailSearchGmailMessagesDefinition, googlemailListGmailThreadsDefinition, googleOauthListGroupsDefinition, googleOauthGetGroupDefinition, googleOauthListGroupMembersDefinition, googleOauthHasGroupMemberDefinition, googleOauthAddGroupMemberDefinition, googleOauthDeleteGroupMemberDefinition, salesforceUpdateRecordDefinition, salesforceCreateCaseDefinition, salesforceGenerateSalesReportDefinition, salesforceGetRecordDefinition, salesforceGetSalesforceRecordsByQueryDefinition, microsoftMessageTeamsChatDefinition, microsoftMessageTeamsChannelDefinition, asanaCommentTaskDefinition, asanaCreateTaskDefinition, asanaUpdateTaskDefinition, asanaSearchTasksDefinition, githubCreateOrUpdateFileDefinition, githubCreateBranchDefinition, githubCreatePullRequestDefinition, microsoftUpdateSpreadsheetDefinition, microsoftUpdateDocumentDefinition, microsoftCreateDocumentDefinition, microsoftGetDocumentDefinition, salesforceFetchSalesforceSchemaByObjectDefinition, firecrawlDeepResearchDefinition, jiraGetJiraIssuesByQueryDefinition, githubListPullRequestsDefinition, salesforceCreateRecordDefinition, ashbyCreateNoteDefinition, ashbyGetCandidateInfoDefinition, ashbyListCandidatesDefinition, ashbyListCandidateNotesDefinition, ashbySearchCandidatesDefinition, ashbyCreateCandidateDefinition, ashbyUpdateCandidateDefinition, ashbyAddCandidateToProjectDefinition, bingGetTopNSearchResultUrlsDefinition, gongGetGongTranscriptsDefinition, kandjiGetFVRecoveryKeyForDeviceDefinition, asanaListAsanaTasksByProjectDefinition, notionSearchByTitleDefinition, asanaGetTasksDetailsDefinition, linearGetIssueDetailsDefinition, linearGetProjectsDefinition, linearGetProjectDetailsDefinition, linearGetTeamDetailsDefinition, linearGetTeamsDefinition, jamfGetJamfComputerInventoryDefinition, jamfGetJamfFileVaultRecoveryKeyDefinition, oktaListOktaUsersDefinition, oktaGetOktaUserDefinition, oktaListOktaUserGroupsDefinition, oktaListOktaGroupsDefinition, oktaGetOktaGroupDefinition, oktaListOktaGroupMembersDefinition, oktaRemoveUserFromGroupDefinition, oktaAddUserToGroupDefinition, oktaResetPasswordDefinition, oktaResetMFADefinition, oktaListMFADefinition, jamfGetJamfUserComputerIdDefinition, jamfLockJamfComputerByIdDefinition, oktaTriggerOktaWorkflowDefinition, jiraOrgAssignJiraTicketDefinition, jiraOrgCreateJiraTicketDefinition, jiraOrgCommentJiraTicketDefinition, jiraOrgGetJiraTicketDetailsDefinition, jiraOrgGetJiraTicketHistoryDefinition, jiraOrgUpdateJiraTicketDetailsDefinition, jiraOrgUpdateJiraTicketStatusDefinition, jiraOrgGetJiraIssuesByQueryDefinition, googleOauthGetDriveFileContentByIdDefinition, googleOauthSearchDriveByQueryDefinition, googleOauthSearchDriveByQueryAndGetFileContentDefinition, githubGetFileContentDefinition, githubListDirectoryDefinition, } from "./autogen/templates.js";
2
2
  export const ACTION_GROUPS = {
3
3
  GENERIC: {
4
4
  description: "Generic utility actions",
@@ -47,6 +47,7 @@ export const ACTION_GROUPS = {
47
47
  googleOauthUpdatePresentationDefinition,
48
48
  googleOauthSearchDriveByKeywordsDefinition,
49
49
  googleOauthSearchDriveByQueryDefinition,
50
+ googleOauthSearchDriveByQueryAndGetFileContentDefinition,
50
51
  googleOauthGetDriveFileContentByIdDefinition,
51
52
  ],
52
53
  },
@@ -198,6 +199,8 @@ export const ACTION_GROUPS = {
198
199
  githubCreateBranchDefinition,
199
200
  githubCreatePullRequestDefinition,
200
201
  githubListPullRequestsDefinition,
202
+ githubGetFileContentDefinition,
203
+ githubListDirectoryDefinition,
201
204
  ],
202
205
  },
203
206
  ASHBY: {
@@ -245,4 +248,14 @@ export const ACTION_GROUPS = {
245
248
  oktaTriggerOktaWorkflowDefinition,
246
249
  ],
247
250
  },
251
+ LINEAR: {
252
+ description: "Actions for interacting with Linear",
253
+ actions: [
254
+ linearGetIssueDetailsDefinition,
255
+ linearGetProjectsDefinition,
256
+ linearGetProjectDetailsDefinition,
257
+ linearGetTeamDetailsDefinition,
258
+ linearGetTeamsDefinition,
259
+ ],
260
+ },
248
261
  };
@@ -0,0 +1,3 @@
1
+ import { confluenceUpdatePageFunction } from "../../../actions/autogen/types";
2
+ declare const confluenceUpdatePage: confluenceUpdatePageFunction;
3
+ export default confluenceUpdatePage;
@@ -0,0 +1,46 @@
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
+ function getConfluenceRequestConfig(baseUrl, username, apiToken) {
14
+ return {
15
+ baseURL: baseUrl,
16
+ headers: {
17
+ Accept: "application/json",
18
+ Authorization: `Basic ${Buffer.from(`${username}:${apiToken}`).toString("base64")}`,
19
+ },
20
+ };
21
+ }
22
+ const confluenceUpdatePage = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
23
+ const { pageId, content, title } = params;
24
+ const { baseUrl, authToken, username } = authParams;
25
+ if (!baseUrl || !authToken || !username) {
26
+ throw new Error("Missing required authentication information");
27
+ }
28
+ const config = getConfluenceRequestConfig(baseUrl, username, authToken);
29
+ // Get current version number
30
+ const response = yield axiosClient_1.axiosClient.get(`/api/v2/pages/${pageId}`, config);
31
+ const currVersion = response.data.version.number;
32
+ const payload = {
33
+ id: pageId,
34
+ status: "current",
35
+ title,
36
+ body: {
37
+ representation: "storage",
38
+ value: content,
39
+ },
40
+ version: {
41
+ number: currVersion + 1,
42
+ },
43
+ };
44
+ yield axiosClient_1.axiosClient.put(`/api/v2/pages/${pageId}`, payload, config);
45
+ });
46
+ exports.default = confluenceUpdatePage;
@@ -0,0 +1,7 @@
1
+ import type { ActionFunction } from "../../autogen/types";
2
+ declare const fillTemplateAction: ActionFunction<{
3
+ template: string;
4
+ }, {
5
+ result: string;
6
+ }, unknown>;
7
+ export default fillTemplateAction;
@@ -0,0 +1,18 @@
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 fillTemplateAction = (_a) => __awaiter(void 0, [_a], void 0, function* ({ template }) {
13
+ // Simply return the template without any modification
14
+ return {
15
+ result: template,
16
+ };
17
+ });
18
+ exports.default = fillTemplateAction;
@@ -0,0 +1,3 @@
1
+ import type { genericUniversalTestActionFunction } from "../../autogen/types";
2
+ declare const genericApiCall: genericUniversalTestActionFunction;
3
+ export default genericApiCall;
@@ -0,0 +1,38 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const axios_1 = __importDefault(require("axios"));
16
+ const genericApiCall = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, }) {
17
+ try {
18
+ const { endpoint, method, headers, body } = params;
19
+ const response = yield (0, axios_1.default)({
20
+ url: endpoint,
21
+ method,
22
+ headers,
23
+ data: method !== "GET" ? body : undefined,
24
+ });
25
+ return {
26
+ statusCode: response.status,
27
+ headers: response.headers,
28
+ data: response.data,
29
+ };
30
+ }
31
+ catch (error) {
32
+ if (axios_1.default.isAxiosError(error)) {
33
+ throw Error("Axios Error: " + (error.message || "Failed to make API call"));
34
+ }
35
+ throw Error("Error: " + (error || "Failed to make API call"));
36
+ }
37
+ });
38
+ exports.default = genericApiCall;
@@ -0,0 +1,3 @@
1
+ import type { googleOauthGetDriveFileContentByIDFunction } from "../../autogen/types.js";
2
+ declare const getDriveFileContentByID: googleOauthGetDriveFileContentByIDFunction;
3
+ export default getDriveFileContentByID;
@@ -0,0 +1,161 @@
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 pdf from "pdf-parse/lib/pdf-parse.js";
11
+ import { axiosClient } from "../../util/axiosClient.js";
12
+ import mammoth from "mammoth";
13
+ import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
14
+ const getDriveFileContentByID = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
15
+ if (!authParams.authToken) {
16
+ return { success: false, error: MISSING_AUTH_TOKEN };
17
+ }
18
+ const { fileId, limit } = params;
19
+ try {
20
+ // First, get file metadata to determine the file type
21
+ const metadataUrl = `https://www.googleapis.com/drive/v3/files/${encodeURIComponent(fileId)}?fields=name,mimeType,size`;
22
+ const metadataRes = yield axiosClient.get(metadataUrl, {
23
+ headers: {
24
+ Authorization: `Bearer ${authParams.authToken}`,
25
+ },
26
+ });
27
+ const { name: fileName, mimeType, size } = metadataRes.data;
28
+ // Check if file is too large (50MB limit for safety)
29
+ if (size && parseInt(size) > 50 * 1024 * 1024) {
30
+ return {
31
+ success: false,
32
+ error: "File too large (>50MB)",
33
+ };
34
+ }
35
+ let content = "";
36
+ // Handle different file types - read content directly
37
+ if (mimeType === "application/vnd.google-apps.document") {
38
+ // Google Docs - download as plain text
39
+ const downloadUrl = `https://www.googleapis.com/drive/v3/files/${encodeURIComponent(fileId)}?alt=media&format=txt`;
40
+ const downloadRes = yield axiosClient.get(downloadUrl, {
41
+ headers: {
42
+ Authorization: `Bearer ${authParams.authToken}`,
43
+ },
44
+ responseType: 'text',
45
+ });
46
+ content = downloadRes.data;
47
+ }
48
+ else if (mimeType === "application/vnd.google-apps.spreadsheet") {
49
+ // Google Sheets - download as CSV
50
+ const downloadUrl = `https://www.googleapis.com/drive/v3/files/${encodeURIComponent(fileId)}?alt=media&format=csv`;
51
+ const downloadRes = yield axiosClient.get(downloadUrl, {
52
+ headers: {
53
+ Authorization: `Bearer ${authParams.authToken}`,
54
+ },
55
+ responseType: 'text',
56
+ });
57
+ content = downloadRes.data;
58
+ }
59
+ else if (mimeType === "application/vnd.google-apps.presentation") {
60
+ // Google Slides - download as plain text
61
+ const downloadUrl = `https://www.googleapis.com/drive/v3/files/${encodeURIComponent(fileId)}?alt=media&format=txt`;
62
+ const downloadRes = yield axiosClient.get(downloadUrl, {
63
+ headers: {
64
+ Authorization: `Bearer ${authParams.authToken}`,
65
+ },
66
+ responseType: 'text',
67
+ });
68
+ content = downloadRes.data;
69
+ }
70
+ else if (mimeType === "application/pdf") {
71
+ // PDF files - use pdf-parse
72
+ const downloadUrl = `https://www.googleapis.com/drive/v3/files/${encodeURIComponent(fileId)}?alt=media`;
73
+ const downloadRes = yield axiosClient.get(downloadUrl, {
74
+ headers: {
75
+ Authorization: `Bearer ${authParams.authToken}`,
76
+ },
77
+ responseType: 'arraybuffer',
78
+ });
79
+ try {
80
+ const pdfData = yield pdf(downloadRes.data);
81
+ content = pdfData.text;
82
+ }
83
+ catch (pdfError) {
84
+ return {
85
+ success: false,
86
+ error: `Failed to parse PDF: ${pdfError instanceof Error ? pdfError.message : 'Unknown PDF error'}`,
87
+ };
88
+ }
89
+ }
90
+ else if (mimeType === "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ||
91
+ mimeType === "application/msword") {
92
+ // Word documents (.docx or .doc) - download and extract text using mammoth
93
+ const downloadUrl = `https://www.googleapis.com/drive/v3/files/${encodeURIComponent(fileId)}?alt=media`;
94
+ const downloadRes = yield axiosClient.get(downloadUrl, {
95
+ headers: {
96
+ Authorization: `Bearer ${authParams.authToken}`,
97
+ },
98
+ responseType: 'arraybuffer',
99
+ });
100
+ try {
101
+ // mammoth works with .docx files. It will ignore formatting and return raw text
102
+ const result = yield mammoth.extractRawText({ buffer: Buffer.from(downloadRes.data) });
103
+ content = result.value; // raw text
104
+ }
105
+ catch (wordError) {
106
+ return {
107
+ success: false,
108
+ error: `Failed to parse Word document: ${wordError instanceof Error ? wordError.message : 'Unknown Word error'}`,
109
+ };
110
+ }
111
+ }
112
+ else if (mimeType === "text/plain" ||
113
+ mimeType === "text/html" ||
114
+ mimeType === "application/rtf" ||
115
+ (mimeType === null || mimeType === void 0 ? void 0 : mimeType.startsWith("text/"))) {
116
+ // Text-based files
117
+ const downloadUrl = `https://www.googleapis.com/drive/v3/files/${encodeURIComponent(fileId)}?alt=media`;
118
+ const downloadRes = yield axiosClient.get(downloadUrl, {
119
+ headers: {
120
+ Authorization: `Bearer ${authParams.authToken}`,
121
+ },
122
+ responseType: 'text',
123
+ });
124
+ content = downloadRes.data;
125
+ }
126
+ else if (mimeType === null || mimeType === void 0 ? void 0 : mimeType.startsWith("image/")) {
127
+ // Skip images
128
+ return {
129
+ success: false,
130
+ error: "Image files are not supported for text extraction",
131
+ };
132
+ }
133
+ else {
134
+ // Unsupported file type
135
+ return {
136
+ success: false,
137
+ error: `Unsupported file type: ${mimeType}`,
138
+ };
139
+ }
140
+ content = content.trim();
141
+ const originalLength = content.length;
142
+ // Naive way to truncate content
143
+ if (limit && content.length > limit) {
144
+ content = content.substring(0, limit);
145
+ }
146
+ return {
147
+ success: true,
148
+ content,
149
+ fileName,
150
+ fileLength: originalLength,
151
+ };
152
+ }
153
+ catch (error) {
154
+ console.error("Error getting Google Drive file content", error);
155
+ return {
156
+ success: false,
157
+ error: error instanceof Error ? error.message : "Unknown error",
158
+ };
159
+ }
160
+ });
161
+ export default getDriveFileContentByID;
@@ -0,0 +1,3 @@
1
+ import type { googleOauthSearchDriveByKeywordsFunction } from "../../autogen/types.js";
2
+ declare const searchDriveByKeywords: googleOauthSearchDriveByKeywordsFunction;
3
+ export default searchDriveByKeywords;
@@ -0,0 +1,47 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { axiosClient } from "../../util/axiosClient.js";
11
+ import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
12
+ const searchDriveByKeywords = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
13
+ var _b;
14
+ if (!authParams.authToken) {
15
+ return { success: false, error: MISSING_AUTH_TOKEN, files: [] };
16
+ }
17
+ const { keywords, limit } = params;
18
+ // Build the query: fullText contains 'keyword1' or fullText contains 'keyword2' ...
19
+ const query = keywords.map(kw => `fullText contains '${kw.replace(/'/g, "\\'")}'`).join(" or ");
20
+ const url = `https://www.googleapis.com/drive/v3/files?q=${encodeURIComponent(query)}&fields=files(id,name,mimeType,webViewLink)&supportsAllDrives=true&includeItemsFromAllDrives=true`;
21
+ // 1. Get the file metadata from google drive search
22
+ let files = [];
23
+ try {
24
+ const res = yield axiosClient.get(url, {
25
+ headers: {
26
+ Authorization: `Bearer ${authParams.authToken}`,
27
+ },
28
+ });
29
+ files =
30
+ ((_b = res.data.files) === null || _b === void 0 ? void 0 : _b.map((file) => ({
31
+ id: file.id || "",
32
+ name: file.name || "",
33
+ mimeType: file.mimeType || "",
34
+ url: file.webViewLink || "",
35
+ }))) || [];
36
+ }
37
+ catch (error) {
38
+ console.error("Error searching Google Drive", error);
39
+ return {
40
+ success: false,
41
+ error: error instanceof Error ? error.message : "Unknown error",
42
+ files: [],
43
+ };
44
+ }
45
+ files = limit ? files.splice(0, limit) : files;
46
+ });
47
+ export default searchDriveByKeywords;
@@ -0,0 +1,3 @@
1
+ import type { googleOauthSearchDriveAndGetContentByKeywordsFunction } from "../../autogen/types.js";
2
+ declare const searchDriveAndGetContentByKeywords: googleOauthSearchDriveAndGetContentByKeywordsFunction;
3
+ export default searchDriveAndGetContentByKeywords;