@credal/actions 0.1.29 → 0.1.31

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.
@@ -28,6 +28,7 @@ const getBasicFinancials_1 = __importDefault(require("./providers/finnhub/getBas
28
28
  const overwritePage_1 = __importDefault(require("./providers/confluence/overwritePage"));
29
29
  const fetchPageContent_1 = __importDefault(require("./providers/confluence/fetchPageContent"));
30
30
  const runSnowflakeQuery_1 = __importDefault(require("./providers/snowflake/runSnowflakeQuery"));
31
+ const enableUserByEmail_1 = __importDefault(require("./providers/looker/enableUserByEmail"));
31
32
  exports.ActionMapper = {
32
33
  math: {
33
34
  add: {
@@ -178,4 +179,11 @@ exports.ActionMapper = {
178
179
  outputSchema: types_1.finnhubGetBasicFinancialsOutputSchema,
179
180
  },
180
181
  },
182
+ looker: {
183
+ enableUserByEmail: {
184
+ fn: enableUserByEmail_1.default,
185
+ paramsSchema: types_1.lookerEnableUserByEmailParamsSchema,
186
+ outputSchema: types_1.lookerEnableUserByEmailOutputSchema,
187
+ },
188
+ },
181
189
  };
@@ -22,3 +22,4 @@ export declare const resendSendEmailDefinition: ActionTemplate;
22
22
  export declare const googleOauthCreateNewGoogleDocDefinition: ActionTemplate;
23
23
  export declare const finnhubSymbolLookupDefinition: ActionTemplate;
24
24
  export declare const finnhubGetBasicFinancialsDefinition: ActionTemplate;
25
+ export declare const lookerEnableUserByEmailDefinition: ActionTemplate;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.finnhubGetBasicFinancialsDefinition = exports.finnhubSymbolLookupDefinition = exports.googleOauthCreateNewGoogleDocDefinition = exports.resendSendEmailDefinition = exports.firecrawlScrapeTweetDataWithNitterDefinition = exports.firecrawlScrapeUrlDefinition = exports.nwsGetForecastForLocationDefinition = exports.openstreetmapGetLatitudeLongitudeFromLocationDefinition = exports.snowflakeRunSnowflakeQueryDefinition = exports.snowflakeGetRowByFieldValueDefinition = exports.mongoInsertMongoDocDefinition = exports.xCreateShareXPostUrlDefinition = exports.linkedinCreateShareLinkedinPostUrlDefinition = exports.zendeskCreateZendeskTicketDefinition = exports.credalCallCopilotDefinition = exports.googlemapsNearbysearchRestaurantsDefinition = exports.googlemapsValidateAddressDefinition = exports.jiraCreateJiraTicketDefinition = exports.confluenceFetchPageContentDefinition = exports.confluenceOverwritePageDefinition = exports.mathAddDefinition = exports.slackListConversationsDefinition = exports.slackSendMessageDefinition = void 0;
3
+ exports.lookerEnableUserByEmailDefinition = exports.finnhubGetBasicFinancialsDefinition = exports.finnhubSymbolLookupDefinition = exports.googleOauthCreateNewGoogleDocDefinition = exports.resendSendEmailDefinition = exports.firecrawlScrapeTweetDataWithNitterDefinition = exports.firecrawlScrapeUrlDefinition = exports.nwsGetForecastForLocationDefinition = exports.openstreetmapGetLatitudeLongitudeFromLocationDefinition = exports.snowflakeRunSnowflakeQueryDefinition = exports.snowflakeGetRowByFieldValueDefinition = exports.mongoInsertMongoDocDefinition = exports.xCreateShareXPostUrlDefinition = exports.linkedinCreateShareLinkedinPostUrlDefinition = exports.zendeskCreateZendeskTicketDefinition = exports.credalCallCopilotDefinition = exports.googlemapsNearbysearchRestaurantsDefinition = exports.googlemapsValidateAddressDefinition = exports.jiraCreateJiraTicketDefinition = exports.confluenceFetchPageContentDefinition = exports.confluenceOverwritePageDefinition = 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"],
@@ -809,8 +809,13 @@ exports.snowflakeRunSnowflakeQueryDefinition = {
809
809
  },
810
810
  output: {
811
811
  type: "object",
812
- required: ["content", "rowCount"],
812
+ required: ["format", "content", "rowCount"],
813
813
  properties: {
814
+ format: {
815
+ type: "string",
816
+ description: "The format of the output",
817
+ enum: ["json", "csv"],
818
+ },
814
819
  content: {
815
820
  type: "string",
816
821
  description: "The content of the query result (json)",
@@ -1172,3 +1177,64 @@ exports.finnhubGetBasicFinancialsDefinition = {
1172
1177
  name: "getBasicFinancials",
1173
1178
  provider: "finnhub",
1174
1179
  };
1180
+ exports.lookerEnableUserByEmailDefinition = {
1181
+ description: "Search for a Looker user by email and enable them if disabled",
1182
+ scopes: [],
1183
+ parameters: {
1184
+ type: "object",
1185
+ required: ["userEmail"],
1186
+ properties: {
1187
+ userEmail: {
1188
+ type: "string",
1189
+ description: "The email address of the user to search for",
1190
+ },
1191
+ },
1192
+ },
1193
+ output: {
1194
+ type: "object",
1195
+ required: ["success", "message"],
1196
+ properties: {
1197
+ success: {
1198
+ type: "boolean",
1199
+ description: "Whether the operation was successful",
1200
+ },
1201
+ message: {
1202
+ type: "string",
1203
+ description: "Status message about the operation",
1204
+ },
1205
+ userId: {
1206
+ type: "string",
1207
+ description: "The ID of the user that was found",
1208
+ },
1209
+ userDetails: {
1210
+ type: "object",
1211
+ required: ["id", "firstName", "lastName", "email", "isDisabled"],
1212
+ description: "Details about the user",
1213
+ properties: {
1214
+ id: {
1215
+ type: "string",
1216
+ description: "The ID of the user",
1217
+ },
1218
+ firstName: {
1219
+ type: "string",
1220
+ description: "The first name of the user",
1221
+ },
1222
+ lastName: {
1223
+ type: "string",
1224
+ description: "The last name of the user",
1225
+ },
1226
+ email: {
1227
+ type: "string",
1228
+ description: "The email of the user",
1229
+ },
1230
+ isDisabled: {
1231
+ type: "boolean",
1232
+ description: "Whether the user is disabled",
1233
+ },
1234
+ },
1235
+ },
1236
+ },
1237
+ },
1238
+ name: "enableUserByEmail",
1239
+ provider: "looker",
1240
+ };
@@ -805,13 +805,16 @@ export declare const snowflakeRunSnowflakeQueryParamsSchema: z.ZodObject<{
805
805
  }>;
806
806
  export type snowflakeRunSnowflakeQueryParamsType = z.infer<typeof snowflakeRunSnowflakeQueryParamsSchema>;
807
807
  export declare const snowflakeRunSnowflakeQueryOutputSchema: z.ZodObject<{
808
+ format: z.ZodEnum<["json", "csv"]>;
808
809
  content: z.ZodString;
809
810
  rowCount: z.ZodNumber;
810
811
  }, "strip", z.ZodTypeAny, {
811
812
  content: string;
813
+ format: "json" | "csv";
812
814
  rowCount: number;
813
815
  }, {
814
816
  content: string;
817
+ format: "json" | "csv";
815
818
  rowCount: number;
816
819
  }>;
817
820
  export type snowflakeRunSnowflakeQueryOutputType = z.infer<typeof snowflakeRunSnowflakeQueryOutputSchema>;
@@ -1139,3 +1142,59 @@ export declare const finnhubGetBasicFinancialsOutputSchema: z.ZodObject<{
1139
1142
  }>;
1140
1143
  export type finnhubGetBasicFinancialsOutputType = z.infer<typeof finnhubGetBasicFinancialsOutputSchema>;
1141
1144
  export type finnhubGetBasicFinancialsFunction = ActionFunction<finnhubGetBasicFinancialsParamsType, AuthParamsType, finnhubGetBasicFinancialsOutputType>;
1145
+ export declare const lookerEnableUserByEmailParamsSchema: z.ZodObject<{
1146
+ userEmail: z.ZodString;
1147
+ }, "strip", z.ZodTypeAny, {
1148
+ userEmail: string;
1149
+ }, {
1150
+ userEmail: string;
1151
+ }>;
1152
+ export type lookerEnableUserByEmailParamsType = z.infer<typeof lookerEnableUserByEmailParamsSchema>;
1153
+ export declare const lookerEnableUserByEmailOutputSchema: z.ZodObject<{
1154
+ success: z.ZodBoolean;
1155
+ message: z.ZodString;
1156
+ userId: z.ZodOptional<z.ZodString>;
1157
+ userDetails: z.ZodOptional<z.ZodObject<{
1158
+ id: z.ZodString;
1159
+ firstName: z.ZodString;
1160
+ lastName: z.ZodString;
1161
+ email: z.ZodString;
1162
+ isDisabled: z.ZodBoolean;
1163
+ }, "strip", z.ZodTypeAny, {
1164
+ id: string;
1165
+ firstName: string;
1166
+ lastName: string;
1167
+ email: string;
1168
+ isDisabled: boolean;
1169
+ }, {
1170
+ id: string;
1171
+ firstName: string;
1172
+ lastName: string;
1173
+ email: string;
1174
+ isDisabled: boolean;
1175
+ }>>;
1176
+ }, "strip", z.ZodTypeAny, {
1177
+ message: string;
1178
+ success: boolean;
1179
+ userId?: string | undefined;
1180
+ userDetails?: {
1181
+ id: string;
1182
+ firstName: string;
1183
+ lastName: string;
1184
+ email: string;
1185
+ isDisabled: boolean;
1186
+ } | undefined;
1187
+ }, {
1188
+ message: string;
1189
+ success: boolean;
1190
+ userId?: string | undefined;
1191
+ userDetails?: {
1192
+ id: string;
1193
+ firstName: string;
1194
+ lastName: string;
1195
+ email: string;
1196
+ isDisabled: boolean;
1197
+ } | undefined;
1198
+ }>;
1199
+ export type lookerEnableUserByEmailOutputType = z.infer<typeof lookerEnableUserByEmailOutputSchema>;
1200
+ export type lookerEnableUserByEmailFunction = ActionFunction<lookerEnableUserByEmailParamsType, AuthParamsType, lookerEnableUserByEmailOutputType>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.finnhubGetBasicFinancialsOutputSchema = exports.finnhubGetBasicFinancialsParamsSchema = exports.finnhubSymbolLookupOutputSchema = exports.finnhubSymbolLookupParamsSchema = exports.googleOauthCreateNewGoogleDocOutputSchema = exports.googleOauthCreateNewGoogleDocParamsSchema = exports.resendSendEmailOutputSchema = exports.resendSendEmailParamsSchema = exports.firecrawlScrapeTweetDataWithNitterOutputSchema = exports.firecrawlScrapeTweetDataWithNitterParamsSchema = exports.firecrawlScrapeUrlOutputSchema = exports.firecrawlScrapeUrlParamsSchema = exports.nwsGetForecastForLocationOutputSchema = exports.nwsGetForecastForLocationParamsSchema = exports.openstreetmapGetLatitudeLongitudeFromLocationOutputSchema = exports.openstreetmapGetLatitudeLongitudeFromLocationParamsSchema = exports.snowflakeRunSnowflakeQueryOutputSchema = exports.snowflakeRunSnowflakeQueryParamsSchema = exports.snowflakeGetRowByFieldValueOutputSchema = exports.snowflakeGetRowByFieldValueParamsSchema = exports.mongoInsertMongoDocOutputSchema = exports.mongoInsertMongoDocParamsSchema = exports.xCreateShareXPostUrlOutputSchema = exports.xCreateShareXPostUrlParamsSchema = exports.linkedinCreateShareLinkedinPostUrlOutputSchema = exports.linkedinCreateShareLinkedinPostUrlParamsSchema = exports.zendeskCreateZendeskTicketOutputSchema = exports.zendeskCreateZendeskTicketParamsSchema = exports.credalCallCopilotOutputSchema = exports.credalCallCopilotParamsSchema = exports.googlemapsNearbysearchRestaurantsOutputSchema = exports.googlemapsNearbysearchRestaurantsParamsSchema = exports.googlemapsValidateAddressOutputSchema = exports.googlemapsValidateAddressParamsSchema = exports.jiraCreateJiraTicketOutputSchema = exports.jiraCreateJiraTicketParamsSchema = exports.confluenceFetchPageContentOutputSchema = exports.confluenceFetchPageContentParamsSchema = exports.confluenceOverwritePageOutputSchema = exports.confluenceOverwritePageParamsSchema = exports.mathAddOutputSchema = exports.mathAddParamsSchema = exports.slackListConversationsOutputSchema = exports.slackListConversationsParamsSchema = exports.slackSendMessageOutputSchema = exports.slackSendMessageParamsSchema = exports.AuthParamsSchema = void 0;
3
+ exports.lookerEnableUserByEmailOutputSchema = exports.lookerEnableUserByEmailParamsSchema = exports.finnhubGetBasicFinancialsOutputSchema = exports.finnhubGetBasicFinancialsParamsSchema = exports.finnhubSymbolLookupOutputSchema = exports.finnhubSymbolLookupParamsSchema = exports.googleOauthCreateNewGoogleDocOutputSchema = exports.googleOauthCreateNewGoogleDocParamsSchema = exports.resendSendEmailOutputSchema = exports.resendSendEmailParamsSchema = exports.firecrawlScrapeTweetDataWithNitterOutputSchema = exports.firecrawlScrapeTweetDataWithNitterParamsSchema = exports.firecrawlScrapeUrlOutputSchema = exports.firecrawlScrapeUrlParamsSchema = exports.nwsGetForecastForLocationOutputSchema = exports.nwsGetForecastForLocationParamsSchema = exports.openstreetmapGetLatitudeLongitudeFromLocationOutputSchema = exports.openstreetmapGetLatitudeLongitudeFromLocationParamsSchema = exports.snowflakeRunSnowflakeQueryOutputSchema = exports.snowflakeRunSnowflakeQueryParamsSchema = exports.snowflakeGetRowByFieldValueOutputSchema = exports.snowflakeGetRowByFieldValueParamsSchema = exports.mongoInsertMongoDocOutputSchema = exports.mongoInsertMongoDocParamsSchema = exports.xCreateShareXPostUrlOutputSchema = exports.xCreateShareXPostUrlParamsSchema = exports.linkedinCreateShareLinkedinPostUrlOutputSchema = exports.linkedinCreateShareLinkedinPostUrlParamsSchema = exports.zendeskCreateZendeskTicketOutputSchema = exports.zendeskCreateZendeskTicketParamsSchema = exports.credalCallCopilotOutputSchema = exports.credalCallCopilotParamsSchema = exports.googlemapsNearbysearchRestaurantsOutputSchema = exports.googlemapsNearbysearchRestaurantsParamsSchema = exports.googlemapsValidateAddressOutputSchema = exports.googlemapsValidateAddressParamsSchema = exports.jiraCreateJiraTicketOutputSchema = exports.jiraCreateJiraTicketParamsSchema = exports.confluenceFetchPageContentOutputSchema = exports.confluenceFetchPageContentParamsSchema = exports.confluenceOverwritePageOutputSchema = exports.confluenceOverwritePageParamsSchema = 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(),
@@ -262,6 +262,7 @@ exports.snowflakeRunSnowflakeQueryParamsSchema = zod_1.z.object({
262
262
  outputFormat: zod_1.z.enum(["json", "csv"]).describe("The format of the output").optional(),
263
263
  });
264
264
  exports.snowflakeRunSnowflakeQueryOutputSchema = zod_1.z.object({
265
+ format: zod_1.z.enum(["json", "csv"]).describe("The format of the output"),
265
266
  content: zod_1.z.string().describe("The content of the query result (json)"),
266
267
  rowCount: zod_1.z.number().describe("The number of rows returned by the query"),
267
268
  });
@@ -373,3 +374,21 @@ exports.finnhubGetBasicFinancialsOutputSchema = zod_1.z.object({
373
374
  })
374
375
  .describe("The basic financials of the stock"),
375
376
  });
377
+ exports.lookerEnableUserByEmailParamsSchema = zod_1.z.object({
378
+ userEmail: zod_1.z.string().describe("The email address of the user to search for"),
379
+ });
380
+ exports.lookerEnableUserByEmailOutputSchema = zod_1.z.object({
381
+ success: zod_1.z.boolean().describe("Whether the operation was successful"),
382
+ message: zod_1.z.string().describe("Status message about the operation"),
383
+ userId: zod_1.z.string().describe("The ID of the user that was found").optional(),
384
+ userDetails: zod_1.z
385
+ .object({
386
+ id: zod_1.z.string().describe("The ID of the user"),
387
+ firstName: zod_1.z.string().describe("The first name of the user"),
388
+ lastName: zod_1.z.string().describe("The last name of the user"),
389
+ email: zod_1.z.string().describe("The email of the user"),
390
+ isDisabled: zod_1.z.boolean().describe("Whether the user is disabled"),
391
+ })
392
+ .describe("Details about the user")
393
+ .optional(),
394
+ });
@@ -71,4 +71,8 @@ exports.ACTION_GROUPS = {
71
71
  description: "Action for interacting with Finnhub for stock market data",
72
72
  actions: [templates_1.finnhubSymbolLookupDefinition, templates_1.finnhubGetBasicFinancialsDefinition],
73
73
  },
74
+ LOOKER: {
75
+ description: "Actions for interacting with Looker",
76
+ actions: [templates_1.lookerEnableUserByEmailDefinition],
77
+ },
74
78
  };
@@ -0,0 +1,3 @@
1
+ import { lookerEnableUserByEmailFunction } from "../../autogen/types";
2
+ declare const enableUserByEmail: lookerEnableUserByEmailFunction;
3
+ export default enableUserByEmail;
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const axiosClient_1 = require("../../util/axiosClient");
13
+ const enableUserByEmail = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params, authParams, }) {
14
+ const { userEmail } = params;
15
+ const { baseUrl, clientId, clientSecret, authToken } = authParams;
16
+ if (!baseUrl) {
17
+ throw new Error("Base URL is required for Looker API");
18
+ }
19
+ // Check for authentication params
20
+ let accessToken = authToken;
21
+ if (!accessToken && (!clientId || !clientSecret)) {
22
+ throw new Error("Either authToken or both clientId and clientSecret are required for Looker API");
23
+ }
24
+ // Step 1: If no auth token is provided, authenticate using client_id and client_secret
25
+ if (!accessToken && clientId && clientSecret) {
26
+ console.log("Authenticating with Looker API:", baseUrl);
27
+ try {
28
+ // Use client_id and client_secret as URL query parameters
29
+ const loginUrl = `${baseUrl}/api/4.0/login?client_id=${encodeURIComponent(clientId)}&client_secret=${encodeURIComponent(clientSecret)}`;
30
+ const loginResponse = yield axiosClient_1.axiosClient.post(loginUrl, {});
31
+ accessToken = loginResponse.data.access_token;
32
+ if (!accessToken) {
33
+ throw new Error("Failed to obtain authentication token from Looker API");
34
+ }
35
+ }
36
+ catch (error) {
37
+ console.error("Error authenticating with Looker:", error);
38
+ return {
39
+ success: false,
40
+ message: "Failed to authenticate with Looker API",
41
+ };
42
+ }
43
+ }
44
+ const headers = {
45
+ Authorization: `Bearer ${accessToken}`,
46
+ "Content-Type": "application/json",
47
+ };
48
+ try {
49
+ // Step 2: Search for the user by email
50
+ const searchUrl = `${baseUrl}/api/4.0/users/search?email=${encodeURIComponent(userEmail)}`;
51
+ console.log("Searching for user:", searchUrl);
52
+ const searchResponse = yield axiosClient_1.axiosClient.get(searchUrl, { headers });
53
+ console.log("Search response:", searchResponse.data);
54
+ const users = searchResponse.data;
55
+ if (!users || users.length === 0) {
56
+ return {
57
+ success: false,
58
+ message: `No user found with email: ${userEmail}`,
59
+ };
60
+ }
61
+ const user = users[0]; // Take the first matching user
62
+ // Step 3: Check if user is disabled
63
+ if (!user.is_disabled) {
64
+ return {
65
+ success: true,
66
+ message: `User ${userEmail} is already enabled`,
67
+ userId: user.id,
68
+ userDetails: {
69
+ id: user.id,
70
+ firstName: user.first_name,
71
+ lastName: user.last_name,
72
+ email: user.email,
73
+ isDisabled: user.is_disabled,
74
+ },
75
+ };
76
+ }
77
+ // Step 4: Enable the user (no confirmation check, automatically enable)
78
+ const updateUrl = `${baseUrl}/api/4.0/users/${user.id}`;
79
+ console.log("Enabling user:", updateUrl);
80
+ const updateResponse = yield axiosClient_1.axiosClient.patch(updateUrl, {
81
+ is_disabled: false,
82
+ }, { headers });
83
+ console.log("Update response:", updateResponse.data);
84
+ const updatedUser = updateResponse.data;
85
+ return {
86
+ success: true,
87
+ message: `Successfully enabled user ${userEmail}`,
88
+ userId: updatedUser.id,
89
+ userDetails: {
90
+ id: updatedUser.id,
91
+ firstName: updatedUser.first_name,
92
+ lastName: updatedUser.last_name,
93
+ email: updatedUser.email,
94
+ isDisabled: updatedUser.is_disabled,
95
+ },
96
+ };
97
+ }
98
+ catch (error) {
99
+ console.error("Error in Looker enableUserByEmail action:", error);
100
+ return {
101
+ success: false,
102
+ message: error instanceof Error ? error.message : "Unknown error occurred",
103
+ };
104
+ }
105
+ });
106
+ exports.default = enableUserByEmail;
@@ -87,6 +87,7 @@ const runSnowflakeQuery = (_a) => __awaiter(void 0, [_a], void 0, function* ({ p
87
87
  return {
88
88
  rowCount: resultsLength,
89
89
  content: formattedData,
90
+ format: outputFormat,
90
91
  };
91
92
  }
92
93
  catch (error) {
@@ -11,9 +11,16 @@ const createXSharePostUrl = ({ params, }) => {
11
11
  if (params.url) {
12
12
  queryParams.append("url", params.url);
13
13
  }
14
+ let hashtags = [];
15
+ if (typeof params.hashtag == "string") {
16
+ hashtags = [params.hashtag];
17
+ }
18
+ else if (Array.isArray(params.hashtag)) {
19
+ hashtags = params.hashtag;
20
+ }
14
21
  // Add hashtags parameter if it exists
15
- if (params.hashtag && params.hashtag.length > 0) {
16
- const cleanedHashtags = params.hashtag.map(tag => tag.replace(/^#+/, "").trim()).filter(tag => tag.length > 0);
22
+ if (hashtags.length > 0) {
23
+ const cleanedHashtags = hashtags.map(tag => tag.replace(/^#+/, "").trim()).filter(tag => tag.length > 0);
17
24
  if (cleanedHashtags.length > 0) {
18
25
  queryParams.append("hashtags", cleanedHashtags.join(","));
19
26
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@credal/actions",
3
- "version": "0.1.29",
3
+ "version": "0.1.31",
4
4
  "description": "AI Actions by Credal AI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",