mcp-task-server 3.2.2 → 3.4.0
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/README.md +70 -7
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +123 -1
- package/dist/index.js.map +1 -1
- package/dist/slack.d.ts +147 -0
- package/dist/slack.d.ts.map +1 -0
- package/dist/slack.js +421 -0
- package/dist/slack.js.map +1 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +91 -0
- package/dist/templates.js.map +1 -1
- package/dist/tools.d.ts +3 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +16 -2
- package/dist/tools.js.map +1 -1
- package/package.json +2 -1
package/dist/slack.js
ADDED
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import { WebClient } from "@slack/web-api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { SLACK_BOT_TOKEN, SLACK_CHANNEL_ID } from "./config.js";
|
|
4
|
+
import { result, error } from "./tools.js";
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Slack Client
|
|
7
|
+
// ============================================================================
|
|
8
|
+
let slackClient = null;
|
|
9
|
+
/**
|
|
10
|
+
* Get the Slack client instance (lazy initialization)
|
|
11
|
+
*/
|
|
12
|
+
function getSlackClient() {
|
|
13
|
+
if (!slackClient) {
|
|
14
|
+
if (!SLACK_BOT_TOKEN) {
|
|
15
|
+
throw new Error("SLACK_BOT_TOKEN environment variable not set");
|
|
16
|
+
}
|
|
17
|
+
slackClient = new WebClient(SLACK_BOT_TOKEN);
|
|
18
|
+
}
|
|
19
|
+
return slackClient;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if Slack is configured
|
|
23
|
+
*/
|
|
24
|
+
export function isSlackConfigured() {
|
|
25
|
+
return !!(SLACK_BOT_TOKEN && SLACK_CHANNEL_ID);
|
|
26
|
+
}
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// Schemas
|
|
29
|
+
// ============================================================================
|
|
30
|
+
export const SlackNotifySchema = z.object({
|
|
31
|
+
message: z.string().describe("Message to post"),
|
|
32
|
+
channel_id: z.string().optional().describe("Channel ID (uses default if not provided)"),
|
|
33
|
+
thread_ts: z.string().optional().describe("Thread timestamp to reply to"),
|
|
34
|
+
});
|
|
35
|
+
export const SlackCheckRepliesSchema = z.object({
|
|
36
|
+
channel_id: z.string().describe("Channel ID containing the thread"),
|
|
37
|
+
thread_ts: z.string().describe("Parent message timestamp"),
|
|
38
|
+
since_ts: z.string().optional().describe("Only get replies after this timestamp"),
|
|
39
|
+
});
|
|
40
|
+
export const SlackListChannelsSchema = z.object({
|
|
41
|
+
types: z.string().optional().describe("Channel types: public_channel, private_channel (comma-separated)"),
|
|
42
|
+
limit: z.number().optional().describe("Max channels to return (default 100)"),
|
|
43
|
+
});
|
|
44
|
+
export const SlackAddReactionSchema = z.object({
|
|
45
|
+
channel_id: z.string().describe("Channel containing the message"),
|
|
46
|
+
timestamp: z.string().describe("Message timestamp to react to"),
|
|
47
|
+
emoji: z.string().describe("Emoji name without colons (e.g., 'thumbsup')"),
|
|
48
|
+
});
|
|
49
|
+
export const SlackGetUserSchema = z.object({
|
|
50
|
+
user_id: z.string().describe("User ID to look up"),
|
|
51
|
+
});
|
|
52
|
+
export const SlackChannelHistorySchema = z.object({
|
|
53
|
+
channel_id: z.string().optional().describe("Channel ID (uses default if not provided)"),
|
|
54
|
+
limit: z.number().optional().describe("Number of messages to fetch (default 10)"),
|
|
55
|
+
oldest: z.string().optional().describe("Only messages after this timestamp"),
|
|
56
|
+
latest: z.string().optional().describe("Only messages before this timestamp"),
|
|
57
|
+
});
|
|
58
|
+
export const SlackWaitReplySchema = z.object({
|
|
59
|
+
channel_id: z.string().optional().describe("Channel ID (uses default if not provided)"),
|
|
60
|
+
thread_ts: z.string().describe("Thread timestamp to wait for replies on"),
|
|
61
|
+
timeout: z.number().default(1800).describe("Max seconds to wait (default 1800 = 30 min)"),
|
|
62
|
+
poll_interval: z.number().default(30).describe("Seconds between checks (default 30)"),
|
|
63
|
+
});
|
|
64
|
+
export const SlackAskSchema = z.object({
|
|
65
|
+
message: z.string().describe("Question or message to post"),
|
|
66
|
+
channel_id: z.string().optional().describe("Channel ID (uses default if not provided)"),
|
|
67
|
+
thread_ts: z.string().optional().describe("Thread to continue (starts new thread if not provided)"),
|
|
68
|
+
timeout: z.number().default(1800).describe("Max seconds to wait for reply (default 1800 = 30 min)"),
|
|
69
|
+
poll_interval: z.number().default(15).describe("Seconds between checks (default 15 for conversation)"),
|
|
70
|
+
});
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// Tool Implementations
|
|
73
|
+
// ============================================================================
|
|
74
|
+
/**
|
|
75
|
+
* Post a message to Slack
|
|
76
|
+
*/
|
|
77
|
+
export async function slackNotify(params) {
|
|
78
|
+
try {
|
|
79
|
+
const client = getSlackClient();
|
|
80
|
+
const channelId = params.channel_id || SLACK_CHANNEL_ID;
|
|
81
|
+
if (!channelId) {
|
|
82
|
+
return error("No channel_id provided and SLACK_CHANNEL_ID not configured");
|
|
83
|
+
}
|
|
84
|
+
const response = await client.chat.postMessage({
|
|
85
|
+
channel: channelId,
|
|
86
|
+
text: params.message,
|
|
87
|
+
thread_ts: params.thread_ts,
|
|
88
|
+
});
|
|
89
|
+
return result({
|
|
90
|
+
ok: response.ok,
|
|
91
|
+
channel: response.channel,
|
|
92
|
+
ts: response.ts,
|
|
93
|
+
thread_ts: params.thread_ts || response.ts,
|
|
94
|
+
message: `Message posted to ${channelId}`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
99
|
+
return error(`Failed to post message: ${errorMessage}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check for replies to a thread
|
|
104
|
+
*/
|
|
105
|
+
export async function slackCheckReplies(params) {
|
|
106
|
+
try {
|
|
107
|
+
const client = getSlackClient();
|
|
108
|
+
const response = await client.conversations.replies({
|
|
109
|
+
channel: params.channel_id,
|
|
110
|
+
ts: params.thread_ts,
|
|
111
|
+
oldest: params.since_ts,
|
|
112
|
+
});
|
|
113
|
+
if (!response.messages || response.messages.length === 0) {
|
|
114
|
+
return result({
|
|
115
|
+
thread_ts: params.thread_ts,
|
|
116
|
+
reply_count: 0,
|
|
117
|
+
replies: [],
|
|
118
|
+
message: "No replies found",
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// Filter out the parent message, keep only replies
|
|
122
|
+
const replies = response.messages
|
|
123
|
+
.filter((m) => m.ts !== params.thread_ts)
|
|
124
|
+
.map((m) => ({
|
|
125
|
+
ts: m.ts,
|
|
126
|
+
user: m.user,
|
|
127
|
+
text: m.text,
|
|
128
|
+
time: m.ts ? new Date(parseFloat(m.ts) * 1000).toISOString() : undefined,
|
|
129
|
+
}));
|
|
130
|
+
return result({
|
|
131
|
+
thread_ts: params.thread_ts,
|
|
132
|
+
reply_count: replies.length,
|
|
133
|
+
replies,
|
|
134
|
+
has_more: response.has_more,
|
|
135
|
+
message: replies.length > 0
|
|
136
|
+
? `Found ${replies.length} replies`
|
|
137
|
+
: "No new replies",
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
142
|
+
return error(`Failed to check replies: ${errorMessage}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* List available channels
|
|
147
|
+
*/
|
|
148
|
+
export async function slackListChannels(params) {
|
|
149
|
+
try {
|
|
150
|
+
const client = getSlackClient();
|
|
151
|
+
const response = await client.conversations.list({
|
|
152
|
+
types: params.types || "public_channel,private_channel",
|
|
153
|
+
limit: params.limit || 100,
|
|
154
|
+
exclude_archived: true,
|
|
155
|
+
});
|
|
156
|
+
const channels = response.channels?.map((c) => ({
|
|
157
|
+
id: c.id,
|
|
158
|
+
name: c.name,
|
|
159
|
+
is_private: c.is_private,
|
|
160
|
+
is_member: c.is_member,
|
|
161
|
+
num_members: c.num_members,
|
|
162
|
+
})) || [];
|
|
163
|
+
return result({
|
|
164
|
+
channel_count: channels.length,
|
|
165
|
+
channels,
|
|
166
|
+
default_channel: SLACK_CHANNEL_ID,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
171
|
+
return error(`Failed to list channels: ${errorMessage}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Add an emoji reaction to a message
|
|
176
|
+
*/
|
|
177
|
+
export async function slackAddReaction(params) {
|
|
178
|
+
try {
|
|
179
|
+
const client = getSlackClient();
|
|
180
|
+
await client.reactions.add({
|
|
181
|
+
channel: params.channel_id,
|
|
182
|
+
timestamp: params.timestamp,
|
|
183
|
+
name: params.emoji,
|
|
184
|
+
});
|
|
185
|
+
return result({
|
|
186
|
+
ok: true,
|
|
187
|
+
emoji: params.emoji,
|
|
188
|
+
message: `Added :${params.emoji}: reaction`,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch (e) {
|
|
192
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
193
|
+
// Handle "already_reacted" gracefully
|
|
194
|
+
if (errorMessage.includes("already_reacted")) {
|
|
195
|
+
return result({
|
|
196
|
+
ok: true,
|
|
197
|
+
emoji: params.emoji,
|
|
198
|
+
message: `Already reacted with :${params.emoji}:`,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
return error(`Failed to add reaction: ${errorMessage}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get user profile information
|
|
206
|
+
*/
|
|
207
|
+
export async function slackGetUser(params) {
|
|
208
|
+
try {
|
|
209
|
+
const client = getSlackClient();
|
|
210
|
+
const response = await client.users.info({
|
|
211
|
+
user: params.user_id,
|
|
212
|
+
});
|
|
213
|
+
const user = response.user;
|
|
214
|
+
if (!user) {
|
|
215
|
+
return error("User not found");
|
|
216
|
+
}
|
|
217
|
+
return result({
|
|
218
|
+
id: user.id,
|
|
219
|
+
name: user.name,
|
|
220
|
+
real_name: user.real_name,
|
|
221
|
+
display_name: user.profile?.display_name,
|
|
222
|
+
email: user.profile?.email,
|
|
223
|
+
title: user.profile?.title,
|
|
224
|
+
is_bot: user.is_bot,
|
|
225
|
+
is_admin: user.is_admin,
|
|
226
|
+
tz: user.tz,
|
|
227
|
+
status: {
|
|
228
|
+
text: user.profile?.status_text,
|
|
229
|
+
emoji: user.profile?.status_emoji,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
catch (e) {
|
|
234
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
235
|
+
return error(`Failed to get user: ${errorMessage}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get recent channel message history
|
|
240
|
+
*/
|
|
241
|
+
export async function slackChannelHistory(params) {
|
|
242
|
+
try {
|
|
243
|
+
const client = getSlackClient();
|
|
244
|
+
const channelId = params.channel_id || SLACK_CHANNEL_ID;
|
|
245
|
+
if (!channelId) {
|
|
246
|
+
return error("No channel_id provided and SLACK_CHANNEL_ID not configured");
|
|
247
|
+
}
|
|
248
|
+
const response = await client.conversations.history({
|
|
249
|
+
channel: channelId,
|
|
250
|
+
limit: params.limit || 10,
|
|
251
|
+
oldest: params.oldest,
|
|
252
|
+
latest: params.latest,
|
|
253
|
+
});
|
|
254
|
+
const messages = response.messages?.map((m) => ({
|
|
255
|
+
ts: m.ts,
|
|
256
|
+
user: m.user,
|
|
257
|
+
text: m.text,
|
|
258
|
+
thread_ts: m.thread_ts,
|
|
259
|
+
reply_count: m.reply_count,
|
|
260
|
+
time: m.ts ? new Date(parseFloat(m.ts) * 1000).toISOString() : undefined,
|
|
261
|
+
})) || [];
|
|
262
|
+
return result({
|
|
263
|
+
channel: channelId,
|
|
264
|
+
message_count: messages.length,
|
|
265
|
+
messages,
|
|
266
|
+
has_more: response.has_more,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
catch (e) {
|
|
270
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
271
|
+
return error(`Failed to get channel history: ${errorMessage}`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Wait for a reply to a thread, polling until reply received or timeout
|
|
276
|
+
*/
|
|
277
|
+
export async function slackWaitReply(params) {
|
|
278
|
+
const channelId = params.channel_id || SLACK_CHANNEL_ID;
|
|
279
|
+
if (!channelId) {
|
|
280
|
+
return error("No channel_id provided and SLACK_CHANNEL_ID not configured");
|
|
281
|
+
}
|
|
282
|
+
const startTime = Date.now();
|
|
283
|
+
const timeoutMs = params.timeout * 1000;
|
|
284
|
+
const pollIntervalMs = params.poll_interval * 1000;
|
|
285
|
+
let pollCount = 0;
|
|
286
|
+
try {
|
|
287
|
+
const client = getSlackClient();
|
|
288
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
289
|
+
pollCount++;
|
|
290
|
+
const response = await client.conversations.replies({
|
|
291
|
+
channel: channelId,
|
|
292
|
+
ts: params.thread_ts,
|
|
293
|
+
});
|
|
294
|
+
// Filter out the parent message, keep only replies
|
|
295
|
+
const replies = (response.messages || [])
|
|
296
|
+
.filter((m) => m.ts !== params.thread_ts)
|
|
297
|
+
.map((m) => ({
|
|
298
|
+
ts: m.ts,
|
|
299
|
+
user: m.user,
|
|
300
|
+
text: m.text,
|
|
301
|
+
time: m.ts ? new Date(parseFloat(m.ts) * 1000).toISOString() : undefined,
|
|
302
|
+
}));
|
|
303
|
+
if (replies.length > 0) {
|
|
304
|
+
const elapsedSec = Math.round((Date.now() - startTime) / 1000);
|
|
305
|
+
return result({
|
|
306
|
+
status: "reply_received",
|
|
307
|
+
thread_ts: params.thread_ts,
|
|
308
|
+
channel_id: channelId,
|
|
309
|
+
reply_count: replies.length,
|
|
310
|
+
replies,
|
|
311
|
+
waited_seconds: elapsedSec,
|
|
312
|
+
poll_count: pollCount,
|
|
313
|
+
message: `Received ${replies.length} reply(s) after ${elapsedSec}s`,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
// Wait before next poll
|
|
317
|
+
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
318
|
+
}
|
|
319
|
+
// Timeout reached
|
|
320
|
+
return result({
|
|
321
|
+
status: "timeout",
|
|
322
|
+
thread_ts: params.thread_ts,
|
|
323
|
+
channel_id: channelId,
|
|
324
|
+
reply_count: 0,
|
|
325
|
+
replies: [],
|
|
326
|
+
waited_seconds: params.timeout,
|
|
327
|
+
poll_count: pollCount,
|
|
328
|
+
message: `No reply received after ${params.timeout}s`,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
catch (e) {
|
|
332
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
333
|
+
return error(`Failed while waiting for reply: ${errorMessage}`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Post a message and wait for a reply in one call - for conversational use.
|
|
338
|
+
* If thread_ts is provided, continues that thread. Otherwise starts a new thread.
|
|
339
|
+
*/
|
|
340
|
+
export async function slackAsk(params) {
|
|
341
|
+
const channelId = params.channel_id || SLACK_CHANNEL_ID;
|
|
342
|
+
if (!channelId) {
|
|
343
|
+
return error("No channel_id provided and SLACK_CHANNEL_ID not configured");
|
|
344
|
+
}
|
|
345
|
+
try {
|
|
346
|
+
const client = getSlackClient();
|
|
347
|
+
// Post the message
|
|
348
|
+
const postResponse = await client.chat.postMessage({
|
|
349
|
+
channel: channelId,
|
|
350
|
+
text: params.message,
|
|
351
|
+
thread_ts: params.thread_ts,
|
|
352
|
+
});
|
|
353
|
+
if (!postResponse.ok || !postResponse.ts) {
|
|
354
|
+
return error("Failed to post message to Slack");
|
|
355
|
+
}
|
|
356
|
+
// The thread_ts to watch - either the existing thread or the new message
|
|
357
|
+
const threadTs = params.thread_ts || postResponse.ts;
|
|
358
|
+
// Track the timestamp of our message so we can filter it out
|
|
359
|
+
const ourMessageTs = postResponse.ts;
|
|
360
|
+
const startTime = Date.now();
|
|
361
|
+
const timeoutMs = params.timeout * 1000;
|
|
362
|
+
const pollIntervalMs = params.poll_interval * 1000;
|
|
363
|
+
let pollCount = 0;
|
|
364
|
+
// Wait for a reply
|
|
365
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
366
|
+
pollCount++;
|
|
367
|
+
const response = await client.conversations.replies({
|
|
368
|
+
channel: channelId,
|
|
369
|
+
ts: threadTs,
|
|
370
|
+
});
|
|
371
|
+
// Filter out the parent message AND our own message, keep only new replies
|
|
372
|
+
const replies = (response.messages || [])
|
|
373
|
+
.filter((m) => m.ts !== threadTs && m.ts !== ourMessageTs)
|
|
374
|
+
.filter((m) => {
|
|
375
|
+
// Only include messages newer than ours
|
|
376
|
+
return m.ts && parseFloat(m.ts) > parseFloat(ourMessageTs);
|
|
377
|
+
})
|
|
378
|
+
.map((m) => ({
|
|
379
|
+
ts: m.ts,
|
|
380
|
+
user: m.user,
|
|
381
|
+
text: m.text,
|
|
382
|
+
time: m.ts ? new Date(parseFloat(m.ts) * 1000).toISOString() : undefined,
|
|
383
|
+
}));
|
|
384
|
+
if (replies.length > 0) {
|
|
385
|
+
const elapsedSec = Math.round((Date.now() - startTime) / 1000);
|
|
386
|
+
// Get the latest reply text for convenience
|
|
387
|
+
const latestReply = replies[replies.length - 1];
|
|
388
|
+
return result({
|
|
389
|
+
status: "reply_received",
|
|
390
|
+
thread_ts: threadTs,
|
|
391
|
+
channel_id: channelId,
|
|
392
|
+
our_message_ts: ourMessageTs,
|
|
393
|
+
reply: latestReply.text,
|
|
394
|
+
reply_user: latestReply.user,
|
|
395
|
+
all_replies: replies,
|
|
396
|
+
waited_seconds: elapsedSec,
|
|
397
|
+
poll_count: pollCount,
|
|
398
|
+
message: `Reply received after ${elapsedSec}s: "${latestReply.text}"`,
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
// Wait before next poll
|
|
402
|
+
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
403
|
+
}
|
|
404
|
+
// Timeout reached
|
|
405
|
+
return result({
|
|
406
|
+
status: "timeout",
|
|
407
|
+
thread_ts: threadTs,
|
|
408
|
+
channel_id: channelId,
|
|
409
|
+
our_message_ts: ourMessageTs,
|
|
410
|
+
reply: null,
|
|
411
|
+
waited_seconds: params.timeout,
|
|
412
|
+
poll_count: pollCount,
|
|
413
|
+
message: `No reply received after ${params.timeout}s`,
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
catch (e) {
|
|
417
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
418
|
+
return error(`Failed in Slack conversation: ${errorMessage}`);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
//# sourceMappingURL=slack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CA8HpE;AAuiCD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAW5C"}
|
package/dist/templates.js
CHANGED
|
@@ -122,6 +122,10 @@ export function getTemplateFiles(projectName) {
|
|
|
122
122
|
path: ".cursor/rules/shared-context-sync.mdc",
|
|
123
123
|
content: SHARED_CONTEXT_SYNC_TEMPLATE,
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
path: ".cursor/rules/slack-comms.mdc",
|
|
127
|
+
content: SLACK_COMMS_TEMPLATE,
|
|
128
|
+
},
|
|
125
129
|
];
|
|
126
130
|
}
|
|
127
131
|
// =============================================================================
|
|
@@ -966,6 +970,93 @@ The MCP task server looks for these memory titles:
|
|
|
966
970
|
- "Workflow" or "memory bank" - task management preferences
|
|
967
971
|
- "Wellness preferences" - break reminder settings
|
|
968
972
|
`;
|
|
973
|
+
const SLACK_COMMS_TEMPLATE = `---
|
|
974
|
+
description: Protocol for agent-user communication via Slack
|
|
975
|
+
globs: ["**/*"]
|
|
976
|
+
alwaysApply: false
|
|
977
|
+
---
|
|
978
|
+
|
|
979
|
+
# Slack Communication Protocol
|
|
980
|
+
|
|
981
|
+
Use Slack tools when you need user input and they may be away from Cursor.
|
|
982
|
+
|
|
983
|
+
## When to Use Slack
|
|
984
|
+
|
|
985
|
+
- Blocked on a decision that requires user input
|
|
986
|
+
- Task handoff that needs acknowledgment
|
|
987
|
+
- Completion notification for long-running tasks
|
|
988
|
+
- Questions about requirements or approach
|
|
989
|
+
|
|
990
|
+
## Posting Messages
|
|
991
|
+
|
|
992
|
+
\`\`\`bash
|
|
993
|
+
# Post to default channel
|
|
994
|
+
call slack_notify({ message: "[WAITING] Need clarification on auth approach for task-123" })
|
|
995
|
+
|
|
996
|
+
# Reply to existing thread
|
|
997
|
+
call slack_notify({ message: "Update: completed first phase", thread_ts: "1234567890.123456" })
|
|
998
|
+
\`\`\`
|
|
999
|
+
|
|
1000
|
+
Save the returned \`thread_ts\` for follow-up checks.
|
|
1001
|
+
|
|
1002
|
+
## Checking for Replies
|
|
1003
|
+
|
|
1004
|
+
\`\`\`bash
|
|
1005
|
+
call slack_check_replies({ channel_id: "C...", thread_ts: "1234567890.123456" })
|
|
1006
|
+
\`\`\`
|
|
1007
|
+
|
|
1008
|
+
## Message Format Guidelines
|
|
1009
|
+
|
|
1010
|
+
1. **Start with status tag**: [WAITING], [QUESTION], [BLOCKED], [COMPLETE]
|
|
1011
|
+
2. **Include context**: Task ID, project name, what you've tried
|
|
1012
|
+
3. **Be specific**: List options if asking for a choice
|
|
1013
|
+
4. **Keep it concise**: Users may be on mobile
|
|
1014
|
+
|
|
1015
|
+
## Example Flow
|
|
1016
|
+
|
|
1017
|
+
\`\`\`bash
|
|
1018
|
+
# 1. Post question
|
|
1019
|
+
call slack_notify({ message: "[QUESTION] Task-42: Should I use REST or GraphQL for the API?" })
|
|
1020
|
+
# Returns: { ts: "1234567890.123456", thread_ts: "1234567890.123456" }
|
|
1021
|
+
|
|
1022
|
+
# 2. Later, check for reply
|
|
1023
|
+
call slack_check_replies({ channel_id: "C...", thread_ts: "1234567890.123456" })
|
|
1024
|
+
# Returns: { replies: [{ user: "U...", text: "Use GraphQL" }] }
|
|
1025
|
+
|
|
1026
|
+
# 3. Acknowledge and continue
|
|
1027
|
+
call slack_add_reaction({ channel_id: "C...", timestamp: "1234567890.123457", emoji: "thumbsup" })
|
|
1028
|
+
\`\`\`
|
|
1029
|
+
|
|
1030
|
+
## Conversation Mode
|
|
1031
|
+
|
|
1032
|
+
Use \`slack_ask\` for back-and-forth conversations when user is away:
|
|
1033
|
+
|
|
1034
|
+
\`\`\`bash
|
|
1035
|
+
# Start a conversation (user tells you: "I'm going mobile, use Slack")
|
|
1036
|
+
call slack_ask({ message: "[PLAN] I see 3 approaches for auth. Want me to explain them?" })
|
|
1037
|
+
# Returns: { reply: "Yes please", thread_ts: "..." }
|
|
1038
|
+
|
|
1039
|
+
# Continue in same thread
|
|
1040
|
+
call slack_ask({ message: "Option 1: OAuth...", thread_ts: "..." })
|
|
1041
|
+
# Returns: { reply: "What about option 2?" }
|
|
1042
|
+
|
|
1043
|
+
# Keep going until done
|
|
1044
|
+
call slack_ask({ message: "Option 2: JWT...", thread_ts: "..." })
|
|
1045
|
+
\`\`\`
|
|
1046
|
+
|
|
1047
|
+
## Single Question/Wait
|
|
1048
|
+
|
|
1049
|
+
Use \`slack_wait_reply\` when you just need one answer:
|
|
1050
|
+
|
|
1051
|
+
\`\`\`bash
|
|
1052
|
+
call slack_notify({ message: "[QUESTION] Should I proceed with approach A or B?" })
|
|
1053
|
+
call slack_wait_reply({ thread_ts: "1234567890.123456", timeout: 1800 })
|
|
1054
|
+
\`\`\`
|
|
1055
|
+
|
|
1056
|
+
## Auto-Notifications
|
|
1057
|
+
|
|
1058
|
+
The \`handoff_task\` tool automatically notifies Slack when configured, so manual notification isn't needed for handoffs.
|
|
1059
|
+
`;
|
|
969
1060
|
const CURSOR_RULES_TEMPLATE = `---
|
|
970
1061
|
description: Multi-agent workflow rules for task management
|
|
971
1062
|
globs: ["**/*"]
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -430,12 +430,14 @@ export declare const ShowWorkStatsSchema: z.ZodObject<{
|
|
|
430
430
|
detailed?: boolean | undefined;
|
|
431
431
|
}>;
|
|
432
432
|
export declare const UsageSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
433
|
-
type ToolResult = {
|
|
433
|
+
export type ToolResult = {
|
|
434
434
|
content: Array<{
|
|
435
435
|
type: "text";
|
|
436
436
|
text: string;
|
|
437
437
|
}>;
|
|
438
438
|
};
|
|
439
|
+
export declare function result(data: unknown): ToolResult;
|
|
440
|
+
export declare function error(message: string): ToolResult;
|
|
439
441
|
export declare function listTasks(config: Config, params: z.infer<typeof ListTasksSchema>): Promise<ToolResult>;
|
|
440
442
|
export declare function getTask(config: Config, params: z.infer<typeof GetTaskSchema>): Promise<ToolResult>;
|
|
441
443
|
export declare function addTask(config: Config, params: z.infer<typeof AddTaskSchema>): Promise<ToolResult>;
|
|
@@ -496,5 +498,4 @@ export declare function showWorkStats(config: Config, params: z.infer<typeof Sho
|
|
|
496
498
|
* Fetch Cursor AI billing information including spend limit and usage.
|
|
497
499
|
*/
|
|
498
500
|
export declare function usage(config: Config, params: z.infer<typeof UsageSchema>): Promise<ToolResult>;
|
|
499
|
-
export {};
|
|
500
501
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EAAE,MAAM,EAAkD,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|