@credal/actions 0.1.6 → 0.1.9

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.
@@ -17,6 +17,9 @@ const createZendeskTicket_1 = __importDefault(require("./providers/zendesk/creat
17
17
  const createJiraTicket_1 = __importDefault(require("./providers/jira/createJiraTicket"));
18
18
  const getLatitudeLongitudeFromLocation_1 = __importDefault(require("./providers/openstreetmap/getLatitudeLongitudeFromLocation"));
19
19
  const getForecastForLocation_1 = __importDefault(require("./providers/nws/getForecastForLocation"));
20
+ const nearbysearch_1 = __importDefault(require("./providers/googlemaps/nearbysearch"));
21
+ const scrapeUrl_1 = __importDefault(require("./providers/firecrawl/scrapeUrl"));
22
+ const sendEmail_1 = __importDefault(require("./providers/resend/sendEmail"));
20
23
  exports.ActionMapper = {
21
24
  math: {
22
25
  add: {
@@ -50,6 +53,11 @@ exports.ActionMapper = {
50
53
  paramsSchema: types_1.googlemapsValidateAddressParamsSchema,
51
54
  outputSchema: types_1.googlemapsValidateAddressOutputSchema,
52
55
  },
56
+ nearbysearch: {
57
+ fn: nearbysearch_1.default,
58
+ paramsSchema: types_1.googlemapsNearbysearchParamsSchema,
59
+ outputSchema: types_1.googlemapsNearbysearchOutputSchema,
60
+ },
53
61
  },
54
62
  credal: {
55
63
  callCopilot: {
@@ -100,4 +108,18 @@ exports.ActionMapper = {
100
108
  outputSchema: types_1.nwsGetForecastForLocationOutputSchema,
101
109
  },
102
110
  },
111
+ firecrawl: {
112
+ scrapeUrl: {
113
+ fn: scrapeUrl_1.default,
114
+ paramsSchema: types_1.firecrawlScrapeUrlParamsSchema,
115
+ outputSchema: types_1.firecrawlScrapeUrlOutputSchema,
116
+ },
117
+ },
118
+ resend: {
119
+ sendEmail: {
120
+ fn: sendEmail_1.default,
121
+ paramsSchema: types_1.resendSendEmailParamsSchema,
122
+ outputSchema: types_1.resendSendEmailOutputSchema,
123
+ },
124
+ },
103
125
  };
@@ -0,0 +1,5 @@
1
+ import { ActionTemplate } from "@/actions/parse";
2
+ export declare const slackSendMessageDefinition: ActionTemplate;
3
+ export declare const slackListConversationsDefinition: ActionTemplate;
4
+ export declare const mathAddDefinition: ActionTemplate;
5
+ export declare const confluenceUpdatePageDefinition: ActionTemplate;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.confluenceUpdatePageDefinition = exports.mathAddDefinition = exports.slackListConversationsDefinition = exports.slackSendMessageDefinition = void 0;
4
+ exports.slackSendMessageDefinition = {
5
+ provider: "slack",
6
+ name: "send_message",
7
+ description: "Sends a message to a Slack channel",
8
+ scopes: ["chat:write"],
9
+ parameters: {
10
+ channel: {
11
+ type: "string",
12
+ description: "The Slack channel to send the message to (e.g., \\#general, \\#alerts)",
13
+ required: true,
14
+ },
15
+ message: {
16
+ type: "string",
17
+ description: "The message content to send to Slack. Can include markdown formatting.",
18
+ required: true,
19
+ },
20
+ },
21
+ output: {},
22
+ };
23
+ exports.slackListConversationsDefinition = {
24
+ provider: "slack",
25
+ name: "list_conversations",
26
+ description: "Lists all conversations in a Slack workspace",
27
+ scopes: ["channels:read", "groups:read", "im:read", "mpim:read"],
28
+ authToken: {
29
+ type: "string",
30
+ description: "The Slack access token to use",
31
+ required: true,
32
+ },
33
+ parameters: {},
34
+ output: {
35
+ channels: {
36
+ type: "array",
37
+ description: "A list of channels in Slack",
38
+ required: true,
39
+ items: {
40
+ type: "object",
41
+ description: "A channel in Slack",
42
+ required: true,
43
+ properties: {
44
+ id: {
45
+ type: "string",
46
+ description: "The ID of the channel",
47
+ required: true,
48
+ },
49
+ name: {
50
+ type: "string",
51
+ description: "The name of the channel",
52
+ required: true,
53
+ },
54
+ topic: {
55
+ type: "string",
56
+ description: "The topic of the channel",
57
+ required: true,
58
+ },
59
+ purpose: {
60
+ type: "string",
61
+ description: "The purpose of the channel",
62
+ required: true,
63
+ },
64
+ },
65
+ },
66
+ },
67
+ },
68
+ };
69
+ exports.mathAddDefinition = {
70
+ provider: "math",
71
+ name: "add",
72
+ description: "Adds two numbers together",
73
+ scopes: [],
74
+ parameters: {
75
+ a: {
76
+ type: "number",
77
+ description: "The first number to add",
78
+ required: true,
79
+ },
80
+ b: {
81
+ type: "number",
82
+ description: "The second number to add",
83
+ required: true,
84
+ },
85
+ },
86
+ output: {
87
+ result: {
88
+ type: "number",
89
+ description: "The sum of the two numbers",
90
+ required: true,
91
+ },
92
+ },
93
+ };
94
+ exports.confluenceUpdatePageDefinition = {
95
+ provider: "confluence",
96
+ name: "updatePage",
97
+ description: "Updates a confluence page with the new content specified",
98
+ scopes: [],
99
+ authToken: {
100
+ type: "string",
101
+ description: "The access token to use for confluence",
102
+ required: true,
103
+ },
104
+ baseUrl: {
105
+ type: "string",
106
+ description: "The base url required to access the confluence instance",
107
+ required: true,
108
+ },
109
+ parameters: {
110
+ pageId: {
111
+ type: "string",
112
+ description: "The page id that should be updated",
113
+ required: true,
114
+ },
115
+ title: {
116
+ type: "string",
117
+ description: "The title of the page that should be updated",
118
+ required: true,
119
+ },
120
+ username: {
121
+ type: "string",
122
+ description: "The username of the person updating the page",
123
+ required: true,
124
+ },
125
+ content: {
126
+ type: "string",
127
+ description: "The new content for the page",
128
+ required: true,
129
+ },
130
+ },
131
+ output: {},
132
+ };
@@ -5,9 +5,12 @@ export declare const mathAddDefinition: ActionTemplate;
5
5
  export declare const confluenceUpdatePageDefinition: ActionTemplate;
6
6
  export declare const jiraCreateJiraTicketDefinition: ActionTemplate;
7
7
  export declare const googlemapsValidateAddressDefinition: ActionTemplate;
8
+ export declare const googlemapsNearbysearchDefinition: ActionTemplate;
8
9
  export declare const credalCallCopilotDefinition: ActionTemplate;
9
10
  export declare const zendeskCreateZendeskTicketDefinition: ActionTemplate;
10
11
  export declare const mongoInsertMongoDocDefinition: ActionTemplate;
11
12
  export declare const snowflakeGetRowByFieldValueDefinition: ActionTemplate;
12
13
  export declare const openstreetmapGetLatitudeLongitudeFromLocationDefinition: ActionTemplate;
13
14
  export declare const nwsGetForecastForLocationDefinition: ActionTemplate;
15
+ export declare const firecrawlScrapeUrlDefinition: ActionTemplate;
16
+ export declare const resendSendEmailDefinition: ActionTemplate;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nwsGetForecastForLocationDefinition = exports.openstreetmapGetLatitudeLongitudeFromLocationDefinition = exports.snowflakeGetRowByFieldValueDefinition = exports.mongoInsertMongoDocDefinition = exports.zendeskCreateZendeskTicketDefinition = exports.credalCallCopilotDefinition = exports.googlemapsValidateAddressDefinition = exports.jiraCreateJiraTicketDefinition = exports.confluenceUpdatePageDefinition = exports.mathAddDefinition = exports.slackListConversationsDefinition = exports.slackSendMessageDefinition = void 0;
3
+ exports.resendSendEmailDefinition = exports.firecrawlScrapeUrlDefinition = exports.nwsGetForecastForLocationDefinition = exports.openstreetmapGetLatitudeLongitudeFromLocationDefinition = exports.snowflakeGetRowByFieldValueDefinition = exports.mongoInsertMongoDocDefinition = exports.zendeskCreateZendeskTicketDefinition = exports.credalCallCopilotDefinition = exports.googlemapsNearbysearchDefinition = exports.googlemapsValidateAddressDefinition = exports.jiraCreateJiraTicketDefinition = exports.confluenceUpdatePageDefinition = exports.mathAddDefinition = exports.slackListConversationsDefinition = exports.slackSendMessageDefinition = void 0;
4
4
  exports.slackSendMessageDefinition = {
5
5
  description: "Sends a message to a Slack channel",
6
6
  scopes: ["chat:write"],
@@ -335,6 +335,69 @@ exports.googlemapsValidateAddressDefinition = {
335
335
  name: "validateAddress",
336
336
  provider: "googlemaps",
337
337
  };
338
+ exports.googlemapsNearbysearchDefinition = {
339
+ description: "Search for nearby places using Google Maps",
340
+ scopes: [],
341
+ parameters: {
342
+ type: "object",
343
+ required: ["latitude", "longitude"],
344
+ properties: {
345
+ latitude: {
346
+ type: "number",
347
+ description: "The latitude of the location to search nearby",
348
+ },
349
+ longitude: {
350
+ type: "number",
351
+ description: "The longitude of the location to search nearby",
352
+ },
353
+ },
354
+ },
355
+ output: {
356
+ type: "object",
357
+ required: ["results"],
358
+ properties: {
359
+ results: {
360
+ type: "array",
361
+ description: "The results of the nearby search",
362
+ items: {
363
+ type: "object",
364
+ properties: {
365
+ name: {
366
+ type: "string",
367
+ description: "The name of the place",
368
+ },
369
+ address: {
370
+ type: "string",
371
+ description: "The address of the place",
372
+ },
373
+ rating: {
374
+ type: "number",
375
+ description: "The rating of the place",
376
+ },
377
+ priceLevel: {
378
+ type: "string",
379
+ description: "The price level of the place",
380
+ },
381
+ openingHours: {
382
+ type: "string",
383
+ description: "The opening hours of the place",
384
+ },
385
+ primaryType: {
386
+ type: "string",
387
+ description: "The primary type of the place",
388
+ },
389
+ editorialSummary: {
390
+ type: "string",
391
+ description: "The editorial summary of the place",
392
+ },
393
+ },
394
+ },
395
+ },
396
+ },
397
+ },
398
+ name: "nearbysearch",
399
+ provider: "googlemaps",
400
+ };
338
401
  exports.credalCallCopilotDefinition = {
339
402
  description: "Call Credal Copilot for response on a given query",
340
403
  scopes: [],
@@ -597,3 +660,67 @@ exports.nwsGetForecastForLocationDefinition = {
597
660
  name: "getForecastForLocation",
598
661
  provider: "nws",
599
662
  };
663
+ exports.firecrawlScrapeUrlDefinition = {
664
+ description: "Scrape a URL and get website content using Firecrawl",
665
+ scopes: [],
666
+ parameters: {
667
+ type: "object",
668
+ required: ["url"],
669
+ properties: {
670
+ url: {
671
+ type: "string",
672
+ description: "The URL to scrape",
673
+ },
674
+ },
675
+ },
676
+ output: {
677
+ type: "object",
678
+ required: ["content"],
679
+ properties: {
680
+ content: {
681
+ type: "string",
682
+ description: "The content of the URL",
683
+ },
684
+ },
685
+ },
686
+ name: "scrapeUrl",
687
+ provider: "firecrawl",
688
+ };
689
+ exports.resendSendEmailDefinition = {
690
+ description: "Send an email using Resend",
691
+ scopes: [],
692
+ parameters: {
693
+ type: "object",
694
+ required: ["to", "subject", "content"],
695
+ properties: {
696
+ to: {
697
+ type: "string",
698
+ description: "The email address to send the email to",
699
+ },
700
+ subject: {
701
+ type: "string",
702
+ description: "The subject of the email",
703
+ },
704
+ content: {
705
+ type: "string",
706
+ description: "The content of the email",
707
+ },
708
+ },
709
+ },
710
+ output: {
711
+ type: "object",
712
+ required: ["success"],
713
+ properties: {
714
+ success: {
715
+ type: "boolean",
716
+ description: "Whether the email was sent successfully",
717
+ },
718
+ error: {
719
+ type: "string",
720
+ description: "The error that occurred if the email was not sent successfully",
721
+ },
722
+ },
723
+ },
724
+ name: "sendEmail",
725
+ provider: "resend",
726
+ };
@@ -8,16 +8,22 @@ export declare const AuthParamsSchema: z.ZodObject<{
8
8
  baseUrl: z.ZodOptional<z.ZodString>;
9
9
  apiKey: z.ZodOptional<z.ZodString>;
10
10
  userAgent: z.ZodOptional<z.ZodString>;
11
+ emailFrom: z.ZodOptional<z.ZodString>;
12
+ emailReplyTo: z.ZodOptional<z.ZodString>;
11
13
  }, "strip", z.ZodTypeAny, {
12
14
  authToken?: string | undefined;
13
15
  baseUrl?: string | undefined;
14
16
  apiKey?: string | undefined;
15
17
  userAgent?: string | undefined;
18
+ emailFrom?: string | undefined;
19
+ emailReplyTo?: string | undefined;
16
20
  }, {
17
21
  authToken?: string | undefined;
18
22
  baseUrl?: string | undefined;
19
23
  apiKey?: string | undefined;
20
24
  userAgent?: string | undefined;
25
+ emailFrom?: string | undefined;
26
+ emailReplyTo?: string | undefined;
21
27
  }>;
22
28
  export type AuthParamsType = z.infer<typeof AuthParamsSchema>;
23
29
  export declare const slackSendMessageParamsSchema: z.ZodObject<{
@@ -367,6 +373,66 @@ export declare const googlemapsValidateAddressOutputSchema: z.ZodObject<{
367
373
  }>;
368
374
  export type googlemapsValidateAddressOutputType = z.infer<typeof googlemapsValidateAddressOutputSchema>;
369
375
  export type googlemapsValidateAddressFunction = ActionFunction<googlemapsValidateAddressParamsType, AuthParamsType, googlemapsValidateAddressOutputType>;
376
+ export declare const googlemapsNearbysearchParamsSchema: z.ZodObject<{
377
+ latitude: z.ZodNumber;
378
+ longitude: z.ZodNumber;
379
+ }, "strip", z.ZodTypeAny, {
380
+ latitude: number;
381
+ longitude: number;
382
+ }, {
383
+ latitude: number;
384
+ longitude: number;
385
+ }>;
386
+ export type googlemapsNearbysearchParamsType = z.infer<typeof googlemapsNearbysearchParamsSchema>;
387
+ export declare const googlemapsNearbysearchOutputSchema: z.ZodObject<{
388
+ results: z.ZodArray<z.ZodObject<{
389
+ name: z.ZodOptional<z.ZodString>;
390
+ address: z.ZodOptional<z.ZodString>;
391
+ rating: z.ZodOptional<z.ZodNumber>;
392
+ priceLevel: z.ZodOptional<z.ZodString>;
393
+ openingHours: z.ZodOptional<z.ZodString>;
394
+ primaryType: z.ZodOptional<z.ZodString>;
395
+ editorialSummary: z.ZodOptional<z.ZodString>;
396
+ }, "strip", z.ZodTypeAny, {
397
+ name?: string | undefined;
398
+ address?: string | undefined;
399
+ rating?: number | undefined;
400
+ priceLevel?: string | undefined;
401
+ openingHours?: string | undefined;
402
+ primaryType?: string | undefined;
403
+ editorialSummary?: string | undefined;
404
+ }, {
405
+ name?: string | undefined;
406
+ address?: string | undefined;
407
+ rating?: number | undefined;
408
+ priceLevel?: string | undefined;
409
+ openingHours?: string | undefined;
410
+ primaryType?: string | undefined;
411
+ editorialSummary?: string | undefined;
412
+ }>, "many">;
413
+ }, "strip", z.ZodTypeAny, {
414
+ results: {
415
+ name?: string | undefined;
416
+ address?: string | undefined;
417
+ rating?: number | undefined;
418
+ priceLevel?: string | undefined;
419
+ openingHours?: string | undefined;
420
+ primaryType?: string | undefined;
421
+ editorialSummary?: string | undefined;
422
+ }[];
423
+ }, {
424
+ results: {
425
+ name?: string | undefined;
426
+ address?: string | undefined;
427
+ rating?: number | undefined;
428
+ priceLevel?: string | undefined;
429
+ openingHours?: string | undefined;
430
+ primaryType?: string | undefined;
431
+ editorialSummary?: string | undefined;
432
+ }[];
433
+ }>;
434
+ export type googlemapsNearbysearchOutputType = z.infer<typeof googlemapsNearbysearchOutputSchema>;
435
+ export type googlemapsNearbysearchFunction = ActionFunction<googlemapsNearbysearchParamsType, AuthParamsType, googlemapsNearbysearchOutputType>;
370
436
  export declare const credalCallCopilotParamsSchema: z.ZodObject<{
371
437
  agentId: z.ZodString;
372
438
  query: z.ZodString;
@@ -576,3 +642,46 @@ export declare const nwsGetForecastForLocationOutputSchema: z.ZodObject<{
576
642
  }>;
577
643
  export type nwsGetForecastForLocationOutputType = z.infer<typeof nwsGetForecastForLocationOutputSchema>;
578
644
  export type nwsGetForecastForLocationFunction = ActionFunction<nwsGetForecastForLocationParamsType, AuthParamsType, nwsGetForecastForLocationOutputType>;
645
+ export declare const firecrawlScrapeUrlParamsSchema: z.ZodObject<{
646
+ url: z.ZodString;
647
+ }, "strip", z.ZodTypeAny, {
648
+ url: string;
649
+ }, {
650
+ url: string;
651
+ }>;
652
+ export type firecrawlScrapeUrlParamsType = z.infer<typeof firecrawlScrapeUrlParamsSchema>;
653
+ export declare const firecrawlScrapeUrlOutputSchema: z.ZodObject<{
654
+ content: z.ZodString;
655
+ }, "strip", z.ZodTypeAny, {
656
+ content: string;
657
+ }, {
658
+ content: string;
659
+ }>;
660
+ export type firecrawlScrapeUrlOutputType = z.infer<typeof firecrawlScrapeUrlOutputSchema>;
661
+ export type firecrawlScrapeUrlFunction = ActionFunction<firecrawlScrapeUrlParamsType, AuthParamsType, firecrawlScrapeUrlOutputType>;
662
+ export declare const resendSendEmailParamsSchema: z.ZodObject<{
663
+ to: z.ZodString;
664
+ subject: z.ZodString;
665
+ content: z.ZodString;
666
+ }, "strip", z.ZodTypeAny, {
667
+ content: string;
668
+ subject: string;
669
+ to: string;
670
+ }, {
671
+ content: string;
672
+ subject: string;
673
+ to: string;
674
+ }>;
675
+ export type resendSendEmailParamsType = z.infer<typeof resendSendEmailParamsSchema>;
676
+ export declare const resendSendEmailOutputSchema: z.ZodObject<{
677
+ success: z.ZodBoolean;
678
+ error: z.ZodOptional<z.ZodString>;
679
+ }, "strip", z.ZodTypeAny, {
680
+ success: boolean;
681
+ error?: string | undefined;
682
+ }, {
683
+ success: boolean;
684
+ error?: string | undefined;
685
+ }>;
686
+ export type resendSendEmailOutputType = z.infer<typeof resendSendEmailOutputSchema>;
687
+ export type resendSendEmailFunction = ActionFunction<resendSendEmailParamsType, AuthParamsType, resendSendEmailOutputType>;
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nwsGetForecastForLocationOutputSchema = exports.nwsGetForecastForLocationParamsSchema = exports.openstreetmapGetLatitudeLongitudeFromLocationOutputSchema = exports.openstreetmapGetLatitudeLongitudeFromLocationParamsSchema = exports.snowflakeGetRowByFieldValueOutputSchema = exports.snowflakeGetRowByFieldValueParamsSchema = exports.mongoInsertMongoDocOutputSchema = exports.mongoInsertMongoDocParamsSchema = exports.zendeskCreateZendeskTicketOutputSchema = exports.zendeskCreateZendeskTicketParamsSchema = exports.credalCallCopilotOutputSchema = exports.credalCallCopilotParamsSchema = exports.googlemapsValidateAddressOutputSchema = exports.googlemapsValidateAddressParamsSchema = exports.jiraCreateJiraTicketOutputSchema = exports.jiraCreateJiraTicketParamsSchema = exports.confluenceUpdatePageOutputSchema = exports.confluenceUpdatePageParamsSchema = exports.mathAddOutputSchema = exports.mathAddParamsSchema = exports.slackListConversationsOutputSchema = exports.slackListConversationsParamsSchema = exports.slackSendMessageOutputSchema = exports.slackSendMessageParamsSchema = exports.AuthParamsSchema = void 0;
3
+ exports.resendSendEmailOutputSchema = exports.resendSendEmailParamsSchema = exports.firecrawlScrapeUrlOutputSchema = exports.firecrawlScrapeUrlParamsSchema = exports.nwsGetForecastForLocationOutputSchema = exports.nwsGetForecastForLocationParamsSchema = exports.openstreetmapGetLatitudeLongitudeFromLocationOutputSchema = exports.openstreetmapGetLatitudeLongitudeFromLocationParamsSchema = exports.snowflakeGetRowByFieldValueOutputSchema = exports.snowflakeGetRowByFieldValueParamsSchema = exports.mongoInsertMongoDocOutputSchema = exports.mongoInsertMongoDocParamsSchema = exports.zendeskCreateZendeskTicketOutputSchema = exports.zendeskCreateZendeskTicketParamsSchema = exports.credalCallCopilotOutputSchema = exports.credalCallCopilotParamsSchema = exports.googlemapsNearbysearchOutputSchema = exports.googlemapsNearbysearchParamsSchema = exports.googlemapsValidateAddressOutputSchema = exports.googlemapsValidateAddressParamsSchema = exports.jiraCreateJiraTicketOutputSchema = exports.jiraCreateJiraTicketParamsSchema = exports.confluenceUpdatePageOutputSchema = exports.confluenceUpdatePageParamsSchema = exports.mathAddOutputSchema = exports.mathAddParamsSchema = exports.slackListConversationsOutputSchema = exports.slackListConversationsParamsSchema = exports.slackSendMessageOutputSchema = exports.slackSendMessageParamsSchema = exports.AuthParamsSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  exports.AuthParamsSchema = zod_1.z.object({
6
6
  authToken: zod_1.z.string().optional(),
7
7
  baseUrl: zod_1.z.string().optional(),
8
8
  apiKey: zod_1.z.string().optional(),
9
9
  userAgent: zod_1.z.string().optional(),
10
+ emailFrom: zod_1.z.string().optional(),
11
+ emailReplyTo: zod_1.z.string().optional(),
10
12
  });
11
13
  exports.slackSendMessageParamsSchema = zod_1.z.object({
12
14
  channelName: zod_1.z.string().describe("The name of the Slack channel to send the message to (e.g. general, alerts)"),
@@ -112,6 +114,23 @@ exports.googlemapsValidateAddressOutputSchema = zod_1.z.object({
112
114
  .describe("USPS-specific validation details.")
113
115
  .optional(),
114
116
  });
117
+ exports.googlemapsNearbysearchParamsSchema = zod_1.z.object({
118
+ latitude: zod_1.z.number().describe("The latitude of the location to search nearby"),
119
+ longitude: zod_1.z.number().describe("The longitude of the location to search nearby"),
120
+ });
121
+ exports.googlemapsNearbysearchOutputSchema = zod_1.z.object({
122
+ results: zod_1.z
123
+ .array(zod_1.z.object({
124
+ name: zod_1.z.string().describe("The name of the place").optional(),
125
+ address: zod_1.z.string().describe("The address of the place").optional(),
126
+ rating: zod_1.z.number().describe("The rating of the place").optional(),
127
+ priceLevel: zod_1.z.string().describe("The price level of the place").optional(),
128
+ openingHours: zod_1.z.string().describe("The opening hours of the place").optional(),
129
+ primaryType: zod_1.z.string().describe("The primary type of the place").optional(),
130
+ editorialSummary: zod_1.z.string().describe("The editorial summary of the place").optional(),
131
+ }))
132
+ .describe("The results of the nearby search"),
133
+ });
115
134
  exports.credalCallCopilotParamsSchema = zod_1.z.object({
116
135
  agentId: zod_1.z.string().describe("The ID of the copilot to call"),
117
136
  query: zod_1.z.string().describe("The query to ask Credal Copilot"),
@@ -182,3 +201,14 @@ exports.nwsGetForecastForLocationOutputSchema = zod_1.z.object({
182
201
  })
183
202
  .optional(),
184
203
  });
204
+ exports.firecrawlScrapeUrlParamsSchema = zod_1.z.object({ url: zod_1.z.string().describe("The URL to scrape") });
205
+ exports.firecrawlScrapeUrlOutputSchema = zod_1.z.object({ content: zod_1.z.string().describe("The content of the URL") });
206
+ exports.resendSendEmailParamsSchema = zod_1.z.object({
207
+ to: zod_1.z.string().describe("The email address to send the email to"),
208
+ subject: zod_1.z.string().describe("The subject of the email"),
209
+ content: zod_1.z.string().describe("The content of the email"),
210
+ });
211
+ exports.resendSendEmailOutputSchema = zod_1.z.object({
212
+ success: zod_1.z.boolean().describe("Whether the email was sent successfully"),
213
+ error: zod_1.z.string().describe("The error that occurred if the email was not sent successfully").optional(),
214
+ });
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mathAddDefinition = exports.slackSendMessageDefinition = void 0;
4
+ exports.slackSendMessageDefinition = {
5
+ name: "send_message",
6
+ description: "Sends a message to a Slack channel",
7
+ parameters: {
8
+ "channel": {
9
+ "type": "string",
10
+ "description": "The Slack channel to send the message to (e.g., \\#general, \\#alerts)",
11
+ "required": true
12
+ },
13
+ "message": {
14
+ "type": "string",
15
+ "description": "The message content to send to Slack. Can include markdown formatting.",
16
+ "required": true
17
+ }
18
+ }
19
+ };
20
+ exports.mathAddDefinition = {
21
+ name: "add",
22
+ description: "Adds two numbers together",
23
+ parameters: {
24
+ "a": {
25
+ "type": "number",
26
+ "description": "The first number to add",
27
+ "required": true
28
+ },
29
+ "b": {
30
+ "type": "number",
31
+ "description": "The second number to add",
32
+ "required": true
33
+ }
34
+ }
35
+ };
@@ -15,9 +15,9 @@ exports.ACTION_GROUPS = {
15
15
  description: "Action for adding two numbers",
16
16
  actions: [templates_1.mathAddDefinition],
17
17
  },
18
- MAPS_VALIDATE: {
19
- description: "Action for validating a Google maps address",
20
- actions: [templates_1.googlemapsValidateAddressDefinition],
18
+ GOOGLE_MAPS: {
19
+ description: "Action for interacting with Google Maps",
20
+ actions: [templates_1.googlemapsValidateAddressDefinition, templates_1.googlemapsNearbysearchDefinition],
21
21
  },
22
22
  CREDAL_CALL_COPILOT: {
23
23
  description: "Action for calling a Credal Copilot",
@@ -47,4 +47,12 @@ exports.ACTION_GROUPS = {
47
47
  description: "Action for getting the weather forecast for a location",
48
48
  actions: [templates_1.nwsGetForecastForLocationDefinition],
49
49
  },
50
+ FIRECRAWL: {
51
+ description: "Actions for interacting with Firecrawl",
52
+ actions: [templates_1.firecrawlScrapeUrlDefinition],
53
+ },
54
+ RESEND: {
55
+ description: "Action for sending an email",
56
+ actions: [templates_1.resendSendEmailDefinition],
57
+ },
50
58
  };
@@ -0,0 +1,9 @@
1
+ import { type ActionFunction } from "./autogen/types";
2
+ import { z } from "zod";
3
+ interface ActionFunctionComponents {
4
+ fn: ActionFunction<any, any, any>;
5
+ paramsSchema: z.ZodSchema;
6
+ outputSchema: z.ZodSchema;
7
+ }
8
+ export declare const FunctionMapper: Record<string, Record<string, ActionFunctionComponents>>;
9
+ export {};
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FunctionMapper = void 0;
7
+ const add_1 = __importDefault(require("./providers/math/add"));
8
+ const list_conversations_1 = __importDefault(require("./providers/slack/list_conversations"));
9
+ const updatePage_1 = __importDefault(require("./providers/confluence/updatePage"));
10
+ const types_1 = require("./autogen/types");
11
+ exports.FunctionMapper = {
12
+ math: {
13
+ add: {
14
+ fn: add_1.default,
15
+ paramsSchema: types_1.mathAddParamsSchema,
16
+ outputSchema: types_1.mathAddOutputSchema,
17
+ },
18
+ },
19
+ slack: {
20
+ listConversations: {
21
+ fn: list_conversations_1.default,
22
+ paramsSchema: types_1.slackListConversationsParamsSchema,
23
+ outputSchema: types_1.slackListConversationsOutputSchema,
24
+ },
25
+ },
26
+ confluence: {
27
+ updatePage: {
28
+ fn: updatePage_1.default,
29
+ paramsSchema: types_1.confluenceUpdatePageParamsSchema,
30
+ outputSchema: types_1.confluenceUpdatePageOutputSchema,
31
+ },
32
+ },
33
+ };
@@ -44,6 +44,8 @@ z.object({
44
44
  baseUrl: z.string().optional(),
45
45
  apiKey: z.string().optional(),
46
46
  userAgent: z.string().optional(),
47
+ emailFrom: z.string().optional(),
48
+ emailReplyTo: z.string().optional(),
47
49
  })
48
50
  `;
49
51
  function validateObject(object) {
@@ -0,0 +1,3 @@
1
+ import { firecrawlScrapeUrlFunction } from "../../autogen/types";
2
+ declare const scrapeUrl: firecrawlScrapeUrlFunction;
3
+ export default scrapeUrl;
@@ -0,0 +1,26 @@
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 firecrawl_js_1 = __importDefault(require("@mendable/firecrawl-js"));
16
+ const types_1 = require("../../autogen/types");
17
+ const scrapeUrl = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
18
+ const firecrawl = new firecrawl_js_1.default({
19
+ apiKey: authParams.apiKey,
20
+ });
21
+ const result = yield firecrawl.scrapeUrl(params.url);
22
+ return types_1.firecrawlScrapeUrlOutputSchema.parse({
23
+ content: result.success ? result.markdown : "",
24
+ });
25
+ });
26
+ exports.default = scrapeUrl;
@@ -0,0 +1,3 @@
1
+ import { googlemapsNearbysearchFunction } from "../../autogen/types";
2
+ declare const nearbysearch: googlemapsNearbysearchFunction;
3
+ export default nearbysearch;
@@ -0,0 +1,96 @@
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 types_1 = require("../../autogen/types");
17
+ const INCLUDED_TYPES = [
18
+ "monument",
19
+ "museum",
20
+ "art_gallery",
21
+ "sculpture",
22
+ "cultural_landmark",
23
+ "historical_place",
24
+ "performing_arts_theater",
25
+ "university",
26
+ "aquarium",
27
+ "botanical_garden",
28
+ "comedy_club",
29
+ "park",
30
+ "movie_theater",
31
+ "national_park",
32
+ "garden",
33
+ "night_club",
34
+ "tourist_attraction",
35
+ "water_park",
36
+ "zoo",
37
+ "bar",
38
+ "restaurant",
39
+ "food_court",
40
+ "bakery",
41
+ "cafe",
42
+ "coffee_shop",
43
+ "pub",
44
+ "wine_bar",
45
+ "spa",
46
+ "beach",
47
+ "market",
48
+ "shopping_mall",
49
+ "stadium",
50
+ ];
51
+ const nearbysearch = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
52
+ const url = `https://places.googleapis.com/v1/places:searchNearby`;
53
+ const fieldMask = [
54
+ "places.displayName",
55
+ "places.formattedAddress",
56
+ "places.priceLevel",
57
+ "places.rating",
58
+ "places.primaryTypeDisplayName",
59
+ "places.editorialSummary",
60
+ "places.regularOpeningHours",
61
+ ].join(",");
62
+ const response = yield axios_1.default.post(url, {
63
+ maxResultCount: 20,
64
+ includedTypes: INCLUDED_TYPES,
65
+ locationRestriction: {
66
+ circle: {
67
+ center: {
68
+ latitude: params.latitude,
69
+ longitude: params.longitude,
70
+ },
71
+ radius: 10000,
72
+ },
73
+ },
74
+ }, {
75
+ headers: {
76
+ "X-Goog-Api-Key": authParams.apiKey,
77
+ "X-Goog-FieldMask": fieldMask,
78
+ "Content-Type": "application/json",
79
+ },
80
+ });
81
+ return types_1.googlemapsNearbysearchOutputSchema.parse({
82
+ results: response.data.places.map((place) => {
83
+ var _a, _b;
84
+ return ({
85
+ name: place.displayName.text,
86
+ address: place.formattedAddress,
87
+ priceLevel: place.priceLevel,
88
+ rating: place.rating,
89
+ primaryType: place.primaryTypeDisplayName.text,
90
+ editorialSummary: ((_a = place.editorialSummary) === null || _a === void 0 ? void 0 : _a.text) || "",
91
+ openingHours: ((_b = place.regularOpeningHours) === null || _b === void 0 ? void 0 : _b.weekdayDescriptions.join("\n")) || "",
92
+ });
93
+ }),
94
+ });
95
+ });
96
+ exports.default = nearbysearch;
@@ -0,0 +1,3 @@
1
+ import { jiraCreateTicketFunction } from "../../autogen/types";
2
+ declare const createTicket: jiraCreateTicketFunction;
3
+ export default createTicket;
@@ -0,0 +1,34 @@
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 createTicket = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
17
+ const { authToken, baseUrl } = authParams;
18
+ const url = `${baseUrl}/rest/api/3/issue`;
19
+ const payload = {
20
+ fields: Object.assign({ project: {
21
+ key: params.projectKey,
22
+ }, summary: params.summary, description: params.description, issuetype: {
23
+ name: params.issueType,
24
+ } }, (params.reporter ? { reporter: { id: params.reporter } } : {})),
25
+ };
26
+ const response = yield axios_1.default.post(url, payload, {
27
+ headers: {
28
+ Authorization: `Basic ${Buffer.from(`${params.username}:${authToken}`).toString("base64")}`,
29
+ "Content-Type": "application/json",
30
+ },
31
+ });
32
+ return response.data;
33
+ });
34
+ exports.default = createTicket;
@@ -0,0 +1,3 @@
1
+ import { resendSendEmailFunction } from "../../autogen/types";
2
+ declare const sendEmail: resendSendEmailFunction;
3
+ export default sendEmail;
@@ -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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const resend_1 = require("resend");
13
+ const types_1 = require("../../autogen/types");
14
+ const sendEmail = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
15
+ try {
16
+ const resend = new resend_1.Resend(authParams.apiKey);
17
+ const result = yield resend.emails.send({
18
+ from: authParams.emailFrom,
19
+ replyTo: authParams.emailReplyTo,
20
+ to: params.to,
21
+ subject: params.subject,
22
+ text: params.content,
23
+ });
24
+ if (result.error) {
25
+ throw new Error(result.error.message);
26
+ }
27
+ return types_1.resendSendEmailOutputSchema.parse({
28
+ success: true,
29
+ });
30
+ }
31
+ catch (error) {
32
+ return types_1.resendSendEmailOutputSchema.parse({
33
+ success: false,
34
+ error: error instanceof Error ? error.message : "Unknown error",
35
+ });
36
+ }
37
+ });
38
+ exports.default = sendEmail;
@@ -0,0 +1,3 @@
1
+ import { slackListConversationsFunction } from "../../../actions/autogen/types";
2
+ declare const slackListConversations: slackListConversationsFunction;
3
+ export default slackListConversations;
@@ -0,0 +1,60 @@
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 web_api_1 = require("@slack/web-api");
13
+ const slackListConversations = (_a) => __awaiter(void 0, [_a], void 0, function* ({ authParams, }) {
14
+ var _b;
15
+ const client = new web_api_1.WebClient(authParams.authToken);
16
+ const allChannels = [];
17
+ let cursor;
18
+ const limit = 100;
19
+ try {
20
+ do {
21
+ const response = yield client.conversations.list({
22
+ exclude_archived: true,
23
+ limit: limit,
24
+ cursor: cursor,
25
+ });
26
+ if (!response.ok) {
27
+ throw new Error(`Slack API error: ${response.error}`);
28
+ }
29
+ // Add channels from this page to our results
30
+ if (response.channels && Array.isArray(response.channels)) {
31
+ allChannels.push(...response.channels);
32
+ }
33
+ // Get cursor for next page
34
+ cursor = (_b = response.response_metadata) === null || _b === void 0 ? void 0 : _b.next_cursor;
35
+ // If user specified a limit and we've hit it, stop paginating
36
+ if (limit && allChannels.length >= limit) {
37
+ allChannels.splice(limit); // Trim to exact limit
38
+ break;
39
+ }
40
+ } while (cursor && cursor.length > 0);
41
+ return {
42
+ channels: allChannels.map(channel => ({
43
+ id: channel.id,
44
+ name: channel.name,
45
+ topic: channel.topic.value,
46
+ purpose: channel.purpose.value,
47
+ })),
48
+ };
49
+ }
50
+ catch (error) {
51
+ if (error instanceof Error) {
52
+ // Enhance error with more context
53
+ throw new Error(`Failed to list Slack conversations: ${error.message}`);
54
+ }
55
+ else {
56
+ throw error;
57
+ }
58
+ }
59
+ });
60
+ exports.default = slackListConversations;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createParametersObject = createParametersObject;
4
+ function createParametersObject(parameters) {
5
+ return Object.fromEntries(Object.entries(parameters).map(([key, param]) => [key, param.type]));
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/dist/main.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const list_conversations_1 = __importDefault(require("./actions/providers/slack/list_conversations"));
7
+ const result = (0, list_conversations_1.default)({
8
+ accessToken: "xoxp-4172665288294-8092684180551-8154529379075-89f1f70cc06e5648e8f912ba96f56626"
9
+ }).then((result) => {
10
+ console.log(result);
11
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@credal/actions",
3
- "version": "0.1.6",
3
+ "version": "0.1.9",
4
4
  "description": "AI Actions by Credal AI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -39,12 +39,14 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@credal/sdk": "^0.0.21",
42
+ "@mendable/firecrawl-js": "^1.19.0",
42
43
  "@slack/web-api": "^7.8.0",
43
44
  "@types/snowflake-sdk": "^1.6.24",
44
45
  "ajv": "^8.17.1",
45
46
  "date-fns": "^4.1.0",
46
47
  "json-schema-to-zod": "^2.5.0",
47
48
  "mongodb": "^6.13.1",
49
+ "resend": "^4.1.2",
48
50
  "snowflake-sdk": "^2.0.2",
49
51
  "ts-node": "^10.9.2",
50
52
  "zod": "^3.24.1"