wolfpack-mcp 1.0.12 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +38 -28
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ async function checkForUpdates() {
|
|
|
19
19
|
signal: AbortSignal.timeout(5000), // 5 second timeout
|
|
20
20
|
});
|
|
21
21
|
if (!response.ok)
|
|
22
|
-
return;
|
|
22
|
+
return null;
|
|
23
23
|
const data = (await response.json());
|
|
24
24
|
const latestVersion = data.version;
|
|
25
25
|
if (latestVersion && latestVersion !== CURRENT_VERSION) {
|
|
@@ -32,21 +32,14 @@ async function checkForUpdates() {
|
|
|
32
32
|
latestMinor === currentMinor &&
|
|
33
33
|
latestPatch > currentPatch);
|
|
34
34
|
if (isNewer) {
|
|
35
|
-
|
|
36
|
-
console.error('╔════════════════════════════════════════════════════════════╗');
|
|
37
|
-
console.error('║ UPDATE AVAILABLE ║');
|
|
38
|
-
console.error(`║ ${PACKAGE_NAME} ${CURRENT_VERSION} → ${latestVersion}`.padEnd(61) + '║');
|
|
39
|
-
console.error('║ ║');
|
|
40
|
-
console.error('║ Run: npm install -g wolfpack-mcp@latest ║');
|
|
41
|
-
console.error('║ Or update your package.json and run: npm install ║');
|
|
42
|
-
console.error('╚════════════════════════════════════════════════════════════╝');
|
|
43
|
-
console.error('');
|
|
35
|
+
return latestVersion;
|
|
44
36
|
}
|
|
45
37
|
}
|
|
46
38
|
}
|
|
47
39
|
catch {
|
|
48
40
|
// Silently ignore update check failures - don't block startup
|
|
49
41
|
}
|
|
42
|
+
return null;
|
|
50
43
|
}
|
|
51
44
|
// Work Item schemas
|
|
52
45
|
// Use z.coerce.string() to handle any type coercion issues from MCP args
|
|
@@ -55,7 +48,7 @@ const ListWorkItemsSchema = z.object({
|
|
|
55
48
|
status: z.coerce
|
|
56
49
|
.string()
|
|
57
50
|
.optional()
|
|
58
|
-
.describe('Filter by status. Board columns: "new", "doing", "review", "blocked", "completed". Use "pending" or "backlog" for backlog items. Use "all" to include completed/closed. Default excludes completed/closed.'),
|
|
51
|
+
.describe('Filter by status. Board columns: "new", "doing", "review", "ready", "blocked", "completed". Use "pending" or "backlog" for backlog items. Use "all" to include completed/closed. Default excludes completed/closed.'),
|
|
59
52
|
assigned_to_id: z.coerce
|
|
60
53
|
.string()
|
|
61
54
|
.optional()
|
|
@@ -150,7 +143,7 @@ const CreateWorkItemSchema = z.object({
|
|
|
150
143
|
status: z
|
|
151
144
|
.string()
|
|
152
145
|
.optional()
|
|
153
|
-
.describe('Initial status: "pending" (backlog), "new" (to do), "doing", "review", "blocked", "completed". Defaults to "new".'),
|
|
146
|
+
.describe('Initial status: "pending" (backlog), "new" (to do), "doing", "review", "ready", "blocked", "completed". Defaults to "new".'),
|
|
154
147
|
priority: z.number().optional().describe('Priority level (0-4, higher is more important)'),
|
|
155
148
|
leading_user_id: z.string().optional().describe('User ID to assign as leading user'),
|
|
156
149
|
category_id: z.string().optional().describe('Category ID to organize the work item'),
|
|
@@ -237,10 +230,11 @@ class WolfpackMCPServer {
|
|
|
237
230
|
this.client = new WolfpackClient();
|
|
238
231
|
this.server = new Server({
|
|
239
232
|
name: 'wolfpack',
|
|
240
|
-
version:
|
|
233
|
+
version: CURRENT_VERSION,
|
|
241
234
|
}, {
|
|
242
235
|
capabilities: {
|
|
243
236
|
tools: {},
|
|
237
|
+
logging: {},
|
|
244
238
|
},
|
|
245
239
|
});
|
|
246
240
|
this.setupHandlers();
|
|
@@ -262,7 +256,7 @@ class WolfpackMCPServer {
|
|
|
262
256
|
name: 'list_work_items',
|
|
263
257
|
description: 'List work items (tasks/tickets). By default lists ALL items in the team, sorted by most recently updated. ' +
|
|
264
258
|
'Use assigned_to_id="me" to filter to only your assigned items. ' +
|
|
265
|
-
'TERMINOLOGY: The board has columns: "new" (to do), "doing" (in progress), "review" (pending review), "blocked", "completed" (
|
|
259
|
+
'TERMINOLOGY: The board has columns: "new" (to do), "doing" (in progress), "review" (pending review), "ready" (code done, awaiting deployment), "blocked", "completed" (deployed). ' +
|
|
266
260
|
'The "backlog" or "pending" status represents items not yet on the board. ' +
|
|
267
261
|
'By default, completed/closed items are excluded - use status="all" to include them. ' +
|
|
268
262
|
'Use when user asks about "the board", "work items", "tasks", "my work" (with assigned_to_id="me"), or "backlog".',
|
|
@@ -275,7 +269,7 @@ class WolfpackMCPServer {
|
|
|
275
269
|
},
|
|
276
270
|
status: {
|
|
277
271
|
type: 'string',
|
|
278
|
-
description: 'Filter by status. Board columns: "new", "doing", "review", "blocked", "completed". ' +
|
|
272
|
+
description: 'Filter by status. Board columns: "new", "doing", "review", "ready", "blocked", "completed". ' +
|
|
279
273
|
'Use "pending" or "backlog" for backlog items not on board. ' +
|
|
280
274
|
'Use "all" to include completed/closed items. Default excludes completed/closed.',
|
|
281
275
|
},
|
|
@@ -314,7 +308,10 @@ class WolfpackMCPServer {
|
|
|
314
308
|
},
|
|
315
309
|
{
|
|
316
310
|
name: 'get_work_item',
|
|
317
|
-
description: 'Get a specific work item/task by ID or reference number. Returns full details including description (markdown notes).
|
|
311
|
+
description: 'Get a specific work item/task by ID or reference number. Returns full details including description (markdown notes). ' +
|
|
312
|
+
'Call this before updating to see current content. ' +
|
|
313
|
+
'WORKFLOW: When asked to work on an item, check its status and follow the required state transitions ' +
|
|
314
|
+
'(pending→pull first, new→doing, blocked/ready/completed/closed→new→doing, then review when done).',
|
|
318
315
|
inputSchema: {
|
|
319
316
|
type: 'object',
|
|
320
317
|
properties: {
|
|
@@ -348,9 +345,14 @@ class WolfpackMCPServer {
|
|
|
348
345
|
{
|
|
349
346
|
name: 'update_work_item_status',
|
|
350
347
|
description: 'Change work item status. ' +
|
|
351
|
-
'
|
|
352
|
-
'"
|
|
353
|
-
'
|
|
348
|
+
'REQUIRED WORKFLOW when working on items: ' +
|
|
349
|
+
'1) For "new" items: move to "doing" when starting work. ' +
|
|
350
|
+
'2) For "pending" (backlog) items: use pull_work_item first (claims and sets to "new"), then move to "doing". ' +
|
|
351
|
+
'3) For items in "blocked", "ready", "completed", or "closed": move to "new" first, then to "doing". ' +
|
|
352
|
+
'4) When work is complete: move to "review" (NOT "completed" - that is only for deployed work). ' +
|
|
353
|
+
'5) If work cannot be done: move to "blocked" and add a comment explaining why. ' +
|
|
354
|
+
'Statuses: "pending" (backlog), "new" (to do), "doing" (in progress), "review" (work done, pending review), ' +
|
|
355
|
+
'"ready" (reviewed, awaiting deployment), "blocked", "completed" (deployed).',
|
|
354
356
|
inputSchema: {
|
|
355
357
|
type: 'object',
|
|
356
358
|
properties: {
|
|
@@ -360,7 +362,7 @@ class WolfpackMCPServer {
|
|
|
360
362
|
},
|
|
361
363
|
status: {
|
|
362
364
|
type: 'string',
|
|
363
|
-
description: 'New status: "pending" (backlog), "new" (to do), "doing" (in progress), "review", "blocked", "completed" (
|
|
365
|
+
description: 'New status: "pending" (backlog), "new" (to do), "doing" (in progress), "review" (work done), "ready" (awaiting deployment), "blocked", "completed" (deployed)',
|
|
364
366
|
},
|
|
365
367
|
},
|
|
366
368
|
required: ['work_item_id', 'status'],
|
|
@@ -388,10 +390,9 @@ class WolfpackMCPServer {
|
|
|
388
390
|
{
|
|
389
391
|
name: 'pull_work_item',
|
|
390
392
|
description: 'Pull a specific work item from the backlog to the board. ' +
|
|
391
|
-
'
|
|
392
|
-
'
|
|
393
|
-
'
|
|
394
|
-
'This changes the status from "pending" to "new" and assigns the item. ' +
|
|
393
|
+
'REQUIRED: Use this when starting work on a "pending" (backlog) item. ' +
|
|
394
|
+
'This claims the item (assigns to you) and sets status to "new". ' +
|
|
395
|
+
'After pulling, move to "doing" to indicate active work, then "review" when done. ' +
|
|
395
396
|
'If no assignee is specified, assigns to the API key owner.',
|
|
396
397
|
inputSchema: {
|
|
397
398
|
type: 'object',
|
|
@@ -511,7 +512,7 @@ class WolfpackMCPServer {
|
|
|
511
512
|
},
|
|
512
513
|
status: {
|
|
513
514
|
type: 'string',
|
|
514
|
-
description: 'Initial status: "pending" (backlog), "new" (to do), "doing", "review", "blocked", "completed". Defaults to "new".',
|
|
515
|
+
description: 'Initial status: "pending" (backlog), "new" (to do), "doing", "review", "ready", "blocked", "completed". Defaults to "new".',
|
|
515
516
|
},
|
|
516
517
|
priority: {
|
|
517
518
|
type: 'number',
|
|
@@ -698,7 +699,8 @@ class WolfpackMCPServer {
|
|
|
698
699
|
// Comment tools
|
|
699
700
|
{
|
|
700
701
|
name: 'create_work_item_comment',
|
|
701
|
-
description: 'Add a comment to a work item. Requires mcp:comments:create permission.'
|
|
702
|
+
description: 'Add a comment to a work item. Requires mcp:comments:create permission. ' +
|
|
703
|
+
'REQUIRED: When moving an item to "blocked" status, add a comment explaining why the work cannot be done.',
|
|
702
704
|
inputSchema: {
|
|
703
705
|
type: 'object',
|
|
704
706
|
properties: {
|
|
@@ -1142,8 +1144,8 @@ class WolfpackMCPServer {
|
|
|
1142
1144
|
});
|
|
1143
1145
|
}
|
|
1144
1146
|
async start() {
|
|
1145
|
-
//
|
|
1146
|
-
checkForUpdates();
|
|
1147
|
+
// Start version check early (non-blocking)
|
|
1148
|
+
const updateCheckPromise = checkForUpdates();
|
|
1147
1149
|
// Resolve team on startup
|
|
1148
1150
|
if (config.teamSlug) {
|
|
1149
1151
|
// Explicit team slug configured - use it
|
|
@@ -1180,6 +1182,14 @@ class WolfpackMCPServer {
|
|
|
1180
1182
|
const transport = new StdioServerTransport();
|
|
1181
1183
|
await this.server.connect(transport);
|
|
1182
1184
|
console.error(`Wolfpack MCP Server v${CURRENT_VERSION} started`);
|
|
1185
|
+
// Send update notification via MCP logging after server is connected
|
|
1186
|
+
const latestVersion = await updateCheckPromise;
|
|
1187
|
+
if (latestVersion) {
|
|
1188
|
+
await this.server.sendLoggingMessage({
|
|
1189
|
+
level: 'warning',
|
|
1190
|
+
data: `Update available: ${PACKAGE_NAME} ${CURRENT_VERSION} → ${latestVersion}. Run: npm install -g wolfpack-mcp@latest`,
|
|
1191
|
+
});
|
|
1192
|
+
}
|
|
1183
1193
|
}
|
|
1184
1194
|
}
|
|
1185
1195
|
// Validate configuration before starting
|