@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.
- package/dist/actions/autogen/templates.js +29 -0
- package/dist/actions/autogen/types.d.ts +25 -4
- package/dist/actions/autogen/types.js +28 -0
- package/dist/actions/groups.js +14 -1
- package/dist/actions/providers/confluence/updatePage.d.ts +3 -0
- package/dist/actions/providers/confluence/updatePage.js +46 -0
- package/dist/actions/providers/generic/fillTemplateAction.d.ts +7 -0
- package/dist/actions/providers/generic/fillTemplateAction.js +18 -0
- package/dist/actions/providers/generic/genericApiCall.d.ts +3 -0
- package/dist/actions/providers/generic/genericApiCall.js +38 -0
- package/dist/actions/providers/google-oauth/getDriveContentById.d.ts +3 -0
- package/dist/actions/providers/google-oauth/getDriveContentById.js +161 -0
- package/dist/actions/providers/google-oauth/searchAndGetDriveContentByKeywords.d.ts +3 -0
- package/dist/actions/providers/google-oauth/searchAndGetDriveContentByKeywords.js +47 -0
- package/dist/actions/providers/google-oauth/searchDriveAndGetContentByKeywords.d.ts +3 -0
- package/dist/actions/providers/google-oauth/searchDriveAndGetContentByKeywords.js +110 -0
- package/dist/actions/providers/google-oauth/searchDriveAndGetContentByQuery.d.ts +3 -0
- package/dist/actions/providers/google-oauth/searchDriveAndGetContentByQuery.js +78 -0
- package/dist/actions/providers/google-oauth/utils/extractContentFromDriveFileId.d.ts +15 -0
- package/dist/actions/providers/google-oauth/utils/extractContentFromDriveFileId.js +129 -0
- package/dist/actions/providers/googlemaps/nearbysearch.d.ts +3 -0
- package/dist/actions/providers/googlemaps/nearbysearch.js +96 -0
- package/dist/actions/providers/slack/archiveChannel.js +9 -2
- package/dist/actions/providers/slack/getChannelMessages.js +98 -2
- package/dist/actions/providers/slack/messageTransformers.d.ts +53 -0
- package/dist/actions/providers/slack/messageTransformers.js +267 -0
- package/dist/actions/providers/slackUser/getSlackMessagesInTimeRange.d.ts +3 -0
- package/dist/actions/providers/slackUser/getSlackMessagesInTimeRange.js +81 -0
- package/dist/actions/providers/slackUser/searchSlack.d.ts +0 -15
- package/dist/actions/providers/slackUser/searchSlack.js +70 -193
- package/dist/actions/providers/snowflake/runSnowflakeQueryWriteResultsToS3.d.ts +3 -0
- package/dist/actions/providers/snowflake/runSnowflakeQueryWriteResultsToS3.js +154 -0
- package/dist/actions/providers/x/scrapeTweetDataWithNitter.d.ts +3 -0
- package/dist/actions/providers/x/scrapeTweetDataWithNitter.js +45 -0
- package/package.json +2 -2
- package/dist/actions/providers/salesforce/getSalesforceRecordByQuery.d.ts +0 -3
- 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
|
-
|
|
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."),
|
package/dist/actions/groups.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { genericFillTemplateDefinition, confluenceOverwritePageDefinition, googlemapsValidateAddressDefinition, mathAddDefinition, mongoInsertMongoDocDefinition, slackSendMessageDefinition, slackGetChannelMessagesDefinition, slackCreateChannelDefinition, slackArchiveChannelDefinition, snowflakeGetRowByFieldValueDefinition, zendeskCreateZendeskTicketDefinition, zendeskListZendeskTicketsDefinition, zendeskGetTicketDetailsDefinition, zendeskUpdateTicketStatusDefinition, zendeskAddCommentToTicketDefinition, zendeskAssignTicketDefinition, openstreetmapGetLatitudeLongitudeFromLocationDefinition, nwsGetForecastForLocationDefinition, jiraAssignJiraTicketDefinition, jiraCommentJiraTicketDefinition, jiraCreateJiraTicketDefinition, jiraGetJiraTicketDetailsDefinition, jiraGetJiraTicketHistoryDefinition, jiraUpdateJiraTicketDetailsDefinition, jiraUpdateJiraTicketStatusDefinition, jiraGetServiceDesksDefinition, jiraCreateServiceDeskRequestDefinition, googlemapsNearbysearchRestaurantsDefinition, firecrawlScrapeUrlDefinition, resendSendEmailDefinition, linkedinCreateShareLinkedinPostUrlDefinition, googleOauthCreateNewGoogleDocDefinition, xCreateShareXPostUrlDefinition, firecrawlScrapeTweetDataWithNitterDefinition, finnhubSymbolLookupDefinition, finnhubGetBasicFinancialsDefinition, confluenceFetchPageContentDefinition, snowflakeRunSnowflakeQueryDefinition, lookerEnableUserByEmailDefinition, googleOauthUpdateDocDefinition, googleOauthScheduleCalendarMeetingDefinition, googleOauthListCalendarsDefinition, googleOauthListCalendarEventsDefinition, googleOauthUpdateCalendarEventDefinition, googleOauthDeleteCalendarEventDefinition, googleOauthCreateSpreadsheetDefinition, googleOauthUpdateSpreadsheetDefinition, googleOauthCreatePresentationDefinition, googleOauthUpdatePresentationDefinition, googleOauthSearchDriveByKeywordsDefinition, googlemailSearchGmailMessagesDefinition, googlemailListGmailThreadsDefinition, googleOauthListGroupsDefinition, googleOauthGetGroupDefinition, googleOauthListGroupMembersDefinition, googleOauthHasGroupMemberDefinition, googleOauthAddGroupMemberDefinition, googleOauthDeleteGroupMemberDefinition, salesforceUpdateRecordDefinition, salesforceCreateCaseDefinition, salesforceGenerateSalesReportDefinition, salesforceGetRecordDefinition, salesforceGetSalesforceRecordsByQueryDefinition, microsoftMessageTeamsChatDefinition, microsoftMessageTeamsChannelDefinition, asanaCommentTaskDefinition, asanaCreateTaskDefinition, asanaUpdateTaskDefinition, asanaSearchTasksDefinition, githubCreateOrUpdateFileDefinition, githubCreateBranchDefinition, githubCreatePullRequestDefinition, microsoftUpdateSpreadsheetDefinition, microsoftUpdateDocumentDefinition, microsoftCreateDocumentDefinition, microsoftGetDocumentDefinition, salesforceFetchSalesforceSchemaByObjectDefinition, firecrawlDeepResearchDefinition, jiraGetJiraIssuesByQueryDefinition, githubListPullRequestsDefinition, salesforceCreateRecordDefinition, ashbyCreateNoteDefinition, ashbyGetCandidateInfoDefinition, ashbyListCandidatesDefinition, ashbyListCandidateNotesDefinition, ashbySearchCandidatesDefinition, ashbyCreateCandidateDefinition, ashbyUpdateCandidateDefinition, ashbyAddCandidateToProjectDefinition, bingGetTopNSearchResultUrlsDefinition, gongGetGongTranscriptsDefinition, kandjiGetFVRecoveryKeyForDeviceDefinition, asanaListAsanaTasksByProjectDefinition, notionSearchByTitleDefinition, asanaGetTasksDetailsDefinition, jamfGetJamfComputerInventoryDefinition, jamfGetJamfFileVaultRecoveryKeyDefinition, oktaListOktaUsersDefinition, oktaGetOktaUserDefinition, oktaListOktaUserGroupsDefinition, oktaListOktaGroupsDefinition, oktaGetOktaGroupDefinition, oktaListOktaGroupMembersDefinition, oktaRemoveUserFromGroupDefinition, oktaAddUserToGroupDefinition, oktaResetPasswordDefinition, oktaResetMFADefinition, oktaListMFADefinition, jamfGetJamfUserComputerIdDefinition, jamfLockJamfComputerByIdDefinition, oktaTriggerOktaWorkflowDefinition, jiraOrgAssignJiraTicketDefinition, jiraOrgCreateJiraTicketDefinition, jiraOrgCommentJiraTicketDefinition, jiraOrgGetJiraTicketDetailsDefinition, jiraOrgGetJiraTicketHistoryDefinition, jiraOrgUpdateJiraTicketDetailsDefinition, jiraOrgUpdateJiraTicketStatusDefinition, jiraOrgGetJiraIssuesByQueryDefinition, googleOauthGetDriveFileContentByIdDefinition, googleOauthSearchDriveByQueryDefinition, } 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,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,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,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,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,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;
|