@activepieces/piece-slack 0.7.13 → 0.7.15

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/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@activepieces/piece-slack",
3
- "version": "0.7.13",
3
+ "version": "0.7.15",
4
4
  "dependencies": {
5
5
  "@anthropic-ai/sdk": "0.33.1",
6
6
  "@sinclair/typebox": "0.34.11",
7
7
  "@slack/web-api": "7.0.4",
8
- "axios": "1.7.8",
8
+ "axios": "1.8.2",
9
9
  "axios-retry": "4.4.1",
10
10
  "deepmerge-ts": "7.1.0",
11
11
  "mime-types": "2.1.35",
@@ -15,9 +15,9 @@
15
15
  "semver": "7.6.0",
16
16
  "slackify-markdown": "4.4.0",
17
17
  "zod": "3.23.8",
18
- "@activepieces/pieces-common": "0.4.1",
19
- "@activepieces/pieces-framework": "0.7.44",
20
- "@activepieces/shared": "0.10.151",
18
+ "@activepieces/pieces-common": "0.4.3",
19
+ "@activepieces/pieces-framework": "0.7.45",
20
+ "@activepieces/shared": "0.10.156",
21
21
  "tslib": "1.14.1"
22
22
  },
23
23
  "overrides": {
package/src/index.js CHANGED
@@ -27,6 +27,9 @@ const find_user_by_handle_1 = require("./lib/actions/find-user-by-handle");
27
27
  const set_user_status_1 = require("./lib/actions/set-user-status");
28
28
  const new_mention_1 = require("./lib/triggers/new-mention");
29
29
  const markdown_to_slack_format_1 = require("./lib/actions/markdown-to-slack-format");
30
+ const new_command_1 = require("./lib/triggers/new-command");
31
+ const get_file_1 = require("./lib/actions/get-file");
32
+ const retrieve_thread_messages_1 = require("./lib/actions/retrieve-thread-messages");
30
33
  exports.slackAuth = pieces_framework_1.PieceAuth.OAuth2({
31
34
  description: '',
32
35
  authUrl: 'https://slack.com/oauth/v2/authorize?user_scope=search:read,users.profile:write,reactions:read',
@@ -109,6 +112,7 @@ exports.slack = (0, pieces_framework_1.createPiece)({
109
112
  request_action_direct_message_1.requestActionDirectMessageAction,
110
113
  request_action_message_1.requestActionMessageAction,
111
114
  upload_file_1.uploadFile,
115
+ get_file_1.getFileAction,
112
116
  search_messages_1.searchMessages,
113
117
  find_user_by_email_1.findUserByEmailAction,
114
118
  find_user_by_handle_1.findUserByHandleAction,
@@ -118,6 +122,7 @@ exports.slack = (0, pieces_framework_1.createPiece)({
118
122
  get_channel_history_1.getChannelHistory,
119
123
  set_user_status_1.setUserStatusAction,
120
124
  markdown_to_slack_format_1.markdownToSlackFormat,
125
+ retrieve_thread_messages_1.retrieveThreadMessages,
121
126
  (0, pieces_common_1.createCustomApiCallAction)({
122
127
  baseUrl: () => {
123
128
  return 'https://slack.com/api';
@@ -146,6 +151,6 @@ exports.slack = (0, pieces_framework_1.createPiece)({
146
151
  },
147
152
  }),
148
153
  ],
149
- triggers: [new_message_1.newMessage, new_mention_1.newMention, new_reaction_added_1.newReactionAdded, new_channel_1.channelCreated],
154
+ triggers: [new_message_1.newMessage, new_mention_1.newMention, new_reaction_added_1.newReactionAdded, new_channel_1.channelCreated, new_command_1.newCommand],
150
155
  });
151
156
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/slack/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/slack/src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const getFileAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props>, {
2
+ fileId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ }>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFileAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const index_1 = require("../../index");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
8
+ const web_api_1 = require("@slack/web-api");
9
+ exports.getFileAction = (0, pieces_framework_1.createAction)({
10
+ auth: index_1.slackAuth,
11
+ name: 'get-file',
12
+ displayName: 'Get File',
13
+ description: 'Return information about a given file ID.',
14
+ props: {
15
+ fileId: pieces_framework_1.Property.ShortText({
16
+ displayName: 'File ID',
17
+ required: true,
18
+ description: 'You can pass the file ID from the New Message Trigger payload.',
19
+ }),
20
+ },
21
+ run(context) {
22
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
23
+ var _a, _b;
24
+ const client = new web_api_1.WebClient(context.auth.access_token);
25
+ const fileData = yield client.files.info({ file: context.propsValue.fileId });
26
+ const fileDownloadUrl = (_a = fileData.file) === null || _a === void 0 ? void 0 : _a.url_private_download;
27
+ if (!fileDownloadUrl) {
28
+ throw new Error('Unable to find the download URL.');
29
+ }
30
+ const response = yield pieces_common_1.httpClient.sendRequest({
31
+ method: pieces_common_1.HttpMethod.GET,
32
+ url: fileDownloadUrl,
33
+ authentication: {
34
+ type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
35
+ token: context.auth.access_token,
36
+ },
37
+ responseType: 'arraybuffer',
38
+ });
39
+ return Object.assign(Object.assign({}, fileData.file), { data: yield context.files.write({
40
+ fileName: ((_b = fileData.file) === null || _b === void 0 ? void 0 : _b.name) || `file`,
41
+ data: Buffer.from(response.body),
42
+ }) });
43
+ });
44
+ },
45
+ });
46
+ //# sourceMappingURL=get-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-file.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/slack/src/lib/actions/get-file.ts"],"names":[],"mappings":";;;;AAAA,uCAAwC;AACxC,+DAAyF;AACzF,qEAAwE;AACxE,4CAA2C;AAE9B,QAAA,aAAa,GAAG,IAAA,+BAAY,EAAC;IACzC,IAAI,EAAE,iBAAS;IACf,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,UAAU;IACvB,WAAW,EAAE,2CAA2C;IACxD,KAAK,EAAE;QACN,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,gEAAgE;SAC7E,CAAC;KACF;IACK,GAAG,CAAC,OAAO;;;YAChB,MAAM,MAAM,GAAG,IAAI,mBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAE9E,MAAM,eAAe,GAAG,MAAA,QAAQ,CAAC,IAAI,0CAAE,oBAAoB,CAAC;YAE5D,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC7C,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,GAAG,EAAE,eAAe;gBACpB,cAAc,EAAE;oBACf,IAAI,EAAE,kCAAkB,CAAC,YAAY;oBACrC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY;iBAChC;gBACD,YAAY,EAAE,aAAa;aAC3B,CAAC,CAAC;YAEH,uCACI,QAAQ,CAAC,IAAI,KAChB,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC/B,QAAQ,EAAE,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,IAAI,KAAI,MAAM;oBACvC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;iBAChC,CAAC,IACD;QACH,CAAC;KAAA;CACD,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const retrieveThreadMessages: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props>, {
2
+ channel: import("@activepieces/pieces-framework").DropdownProperty<string, true>;
3
+ threadTs: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
+ }>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retrieveThreadMessages = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const __1 = require("../..");
7
+ const web_api_1 = require("@slack/web-api");
8
+ const props_1 = require("../common/props");
9
+ const utils_1 = require("../common/utils");
10
+ exports.retrieveThreadMessages = (0, pieces_framework_1.createAction)({
11
+ name: 'retrieveThreadMessages',
12
+ displayName: 'Retrieve Thread Messages',
13
+ description: 'Retrieves thread messages by channel and thread timestamp.',
14
+ auth: __1.slackAuth,
15
+ props: {
16
+ channel: (0, props_1.slackChannel)(true),
17
+ threadTs: pieces_framework_1.Property.ShortText({
18
+ displayName: 'Thread ts',
19
+ description: 'Provide the ts (timestamp) value of the **parent** message to retrieve replies of this message. Do not use the ts value of the reply itself; use its parent instead. For example `1710304378.475129`.Alternatively, you can easily obtain the message link by clicking on the three dots next to the parent message and selecting the `Copy link` option.',
20
+ required: true,
21
+ }),
22
+ },
23
+ run(_a) {
24
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, propsValue }) {
25
+ const client = new web_api_1.WebClient(auth.access_token);
26
+ const messageTimestamp = (0, utils_1.processMessageTimestamp)(propsValue.threadTs);
27
+ if (!messageTimestamp) {
28
+ throw new Error('Invalid Timestamp Value.');
29
+ }
30
+ return yield client.conversations.replies({
31
+ channel: propsValue.channel,
32
+ ts: messageTimestamp,
33
+ });
34
+ });
35
+ },
36
+ });
37
+ //# sourceMappingURL=retrieve-thread-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieve-thread-messages.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/slack/src/lib/actions/retrieve-thread-messages.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,6BAAkC;AAClC,4CAA2C;AAC3C,2CAA+C;AAC/C,2CAA0D;AAE7C,QAAA,sBAAsB,GAAG,IAAA,+BAAY,EAAC;IACjD,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,0BAA0B;IACvC,WAAW,EAAE,4DAA4D;IACzE,IAAI,EAAE,aAAS;IACf,KAAK,EAAE;QACL,OAAO,EAAE,IAAA,oBAAY,EAAC,IAAI,CAAC;QAC3B,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,WAAW;YACxB,WAAW,EACT,2VAA2V;YAC7V,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG;qEAAC,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5B,MAAM,MAAM,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,MAAM,gBAAgB,GAAG,IAAA,+BAAuB,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YACL,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;gBACxC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,EAAE,EAAE,gBAAgB;aACrB,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { TriggerStrategy } from '@activepieces/pieces-framework';
2
+ export declare const newCommand: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props>, {
3
+ info: import("dist/packages/pieces/community/framework/src/lib/property/input/markdown-property").MarkDownProperty;
4
+ user: import("@activepieces/pieces-framework").DropdownProperty<string, false> | import("@activepieces/pieces-framework").DropdownProperty<string, true>;
5
+ commands: import("@activepieces/pieces-framework").ArrayProperty<true>;
6
+ channels: import("@activepieces/pieces-framework").MultiSelectDropdownProperty<string, false>;
7
+ ignoreBots: import("@activepieces/pieces-framework").CheckboxProperty<true>;
8
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props>, {
9
+ info: import("dist/packages/pieces/community/framework/src/lib/property/input/markdown-property").MarkDownProperty;
10
+ user: import("@activepieces/pieces-framework").DropdownProperty<string, false> | import("@activepieces/pieces-framework").DropdownProperty<string, true>;
11
+ commands: import("@activepieces/pieces-framework").ArrayProperty<true>;
12
+ channels: import("@activepieces/pieces-framework").MultiSelectDropdownProperty<string, false>;
13
+ ignoreBots: import("@activepieces/pieces-framework").CheckboxProperty<true>;
14
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props>, {
15
+ info: import("dist/packages/pieces/community/framework/src/lib/property/input/markdown-property").MarkDownProperty;
16
+ user: import("@activepieces/pieces-framework").DropdownProperty<string, false> | import("@activepieces/pieces-framework").DropdownProperty<string, true>;
17
+ commands: import("@activepieces/pieces-framework").ArrayProperty<true>;
18
+ channels: import("@activepieces/pieces-framework").MultiSelectDropdownProperty<string, false>;
19
+ ignoreBots: import("@activepieces/pieces-framework").CheckboxProperty<true>;
20
+ }>;
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.newCommand = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const props_1 = require("../common/props");
7
+ const __1 = require("../../");
8
+ const web_api_1 = require("@slack/web-api");
9
+ const shared_1 = require("@activepieces/shared");
10
+ const utils_1 = require("../common/utils");
11
+ const sampleData = {
12
+ client_msg_id: '2767cf34-0651-44e0-b9c8-1b167ce9b7a9',
13
+ type: 'message',
14
+ text: '<@U07BN652T52> help argument1 argument2',
15
+ user: 'U037UG6FKPU',
16
+ ts: '1678231735.586539',
17
+ blocks: [
18
+ {
19
+ type: 'rich_text',
20
+ block_id: 'jCFSh',
21
+ elements: [
22
+ {
23
+ type: 'rich_text_section',
24
+ elements: [
25
+ {
26
+ type: 'user',
27
+ user_id: 'U07BN652T52',
28
+ },
29
+ {
30
+ type: 'text',
31
+ text: ' help argument1 argument2',
32
+ },
33
+ ],
34
+ },
35
+ ],
36
+ },
37
+ ],
38
+ team: 'T037MS4FGDC',
39
+ channel: 'C037RTX2ZDM',
40
+ event_ts: '1678231735.586539',
41
+ channel_type: 'channel',
42
+ parsed_command: {
43
+ command: 'help',
44
+ args: ['argument1', 'argument2'],
45
+ },
46
+ };
47
+ exports.newCommand = (0, pieces_framework_1.createTrigger)({
48
+ auth: __1.slackAuth,
49
+ name: 'new_command',
50
+ displayName: 'New Command',
51
+ description: 'Triggers when a specific command is sent to the bot (e.g., @bot command arg1 arg2)',
52
+ props: {
53
+ info: props_1.multiSelectChannelInfo,
54
+ user: props_1.userId,
55
+ commands: pieces_framework_1.Property.Array({
56
+ displayName: 'Commands',
57
+ description: 'List of valid commands that the bot should respond to (e.g., help, ocr, remind)',
58
+ required: true,
59
+ defaultValue: ['help'],
60
+ }),
61
+ channels: pieces_framework_1.Property.MultiSelectDropdown({
62
+ displayName: 'Channels',
63
+ description: 'If no channel is selected, the flow will be triggered for commands in all channels',
64
+ required: false,
65
+ refreshers: [],
66
+ options(_a) {
67
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth }) {
68
+ if (!auth) {
69
+ return {
70
+ disabled: true,
71
+ placeholder: 'connect slack account',
72
+ options: [],
73
+ };
74
+ }
75
+ const authentication = auth;
76
+ const accessToken = authentication['access_token'];
77
+ const channels = yield (0, props_1.getChannels)(accessToken);
78
+ return {
79
+ disabled: false,
80
+ placeholder: 'Select channel',
81
+ options: channels,
82
+ };
83
+ });
84
+ },
85
+ }),
86
+ ignoreBots: pieces_framework_1.Property.Checkbox({
87
+ displayName: 'Ignore Bot Messages ?',
88
+ required: true,
89
+ defaultValue: true,
90
+ }),
91
+ },
92
+ type: pieces_framework_1.TriggerStrategy.APP_WEBHOOK,
93
+ sampleData: sampleData,
94
+ onEnable: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
95
+ var _a;
96
+ // Older OAuth2 has team_id, newer has team.id
97
+ const teamId = (_a = context.auth.data['team_id']) !== null && _a !== void 0 ? _a : context.auth.data['team']['id'];
98
+ context.app.createListeners({
99
+ events: ['message'],
100
+ identifierValue: teamId,
101
+ });
102
+ }),
103
+ onDisable: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
104
+ // Ignored
105
+ }),
106
+ test: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
107
+ const channels = context.propsValue.channels;
108
+ const commands = context.propsValue.commands;
109
+ const user = context.propsValue.user;
110
+ if (!channels || (Array.isArray(channels) && channels.length === 0)) {
111
+ return [
112
+ Object.assign(Object.assign({}, sampleData), { parsed_command: {
113
+ command: commands.length > 0 ? commands[0] : 'help',
114
+ args: ['argument1', 'argument2'],
115
+ } }),
116
+ ];
117
+ }
118
+ const client = new web_api_1.WebClient(context.auth.access_token);
119
+ const response = yield client.conversations.history({
120
+ channel: channels[0],
121
+ limit: 100,
122
+ });
123
+ if (!response.messages) {
124
+ return [];
125
+ }
126
+ // Filter and process messages with bot mention + command
127
+ const processedMessages = response.messages
128
+ .filter((message) => !(0, shared_1.isNil)(message.ts))
129
+ .filter((message) => {
130
+ // Ignore bot messages if configured to do so
131
+ if (context.propsValue.ignoreBots && message.bot_id) {
132
+ return false;
133
+ }
134
+ // Look for mentions of the bot user
135
+ return message.text && message.text.includes(`<@${user}>`);
136
+ })
137
+ .map((message) => {
138
+ // Parse the command
139
+ const parsedCommand = parseCommand(message.text || '', user, commands);
140
+ // Only include messages with valid commands
141
+ if (parsedCommand && commands.includes(parsedCommand.command)) {
142
+ return Object.assign(Object.assign({}, message), { channel: channels[0], event_ts: '1678231735.586539', channel_type: 'channel', parsed_command: parsedCommand });
143
+ }
144
+ return null;
145
+ })
146
+ .filter((message) => message !== null)
147
+ .sort((a, b) => parseFloat(b.ts) - parseFloat(a.ts));
148
+ return (0, utils_1.getFirstFiveOrAll)(processedMessages);
149
+ }),
150
+ run: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
151
+ var _a, _b;
152
+ const payloadBody = context.payload.body;
153
+ const channels = (_a = context.propsValue.channels) !== null && _a !== void 0 ? _a : [];
154
+ const commands = (_b = context.propsValue.commands) !== null && _b !== void 0 ? _b : [];
155
+ const user = context.propsValue.user;
156
+ // Check if we should process this channel
157
+ if (!(channels.length === 0 || channels.includes(payloadBody.event.channel))) {
158
+ return [];
159
+ }
160
+ // Check for bot messages if configured to ignore them
161
+ if (context.propsValue.ignoreBots && payloadBody.event.bot_id) {
162
+ return [];
163
+ }
164
+ // Check for mention and parse command
165
+ if (user && payloadBody.event.text) {
166
+ const parsedCommand = parseCommand(payloadBody.event.text, user, commands);
167
+ if (parsedCommand && commands.includes(parsedCommand.command)) {
168
+ // Return event with parsed command
169
+ return [
170
+ Object.assign(Object.assign({}, payloadBody.event), { parsed_command: parsedCommand }),
171
+ ];
172
+ }
173
+ }
174
+ return [];
175
+ }),
176
+ });
177
+ /**
178
+ * Parse a message text to extract command and arguments
179
+ */
180
+ function parseCommand(text, botUserId, validCommands) {
181
+ if (!botUserId) {
182
+ return null;
183
+ }
184
+ // Check if the message mentions the bot
185
+ const mentionRegex = new RegExp(`<@${botUserId}>\\s+(.+)`, 's');
186
+ const mentionMatch = text.match(mentionRegex);
187
+ if (!mentionMatch) {
188
+ return null;
189
+ }
190
+ // Extract the text after the mention
191
+ const commandText = mentionMatch[1].trim();
192
+ // Split into command and arguments (first word is command, rest are args)
193
+ const parts = commandText.split(/\s+/);
194
+ const command = parts[0].toLowerCase();
195
+ const args = parts.slice(1);
196
+ // Check if it's a valid command
197
+ if (!validCommands.includes(command)) {
198
+ return null;
199
+ }
200
+ return {
201
+ command,
202
+ args,
203
+ };
204
+ }
205
+ //# sourceMappingURL=new-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-command.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/slack/src/lib/triggers/new-command.ts"],"names":[],"mappings":"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"}