wolfpack-mcp 1.0.46 → 1.0.47

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/client.js CHANGED
@@ -555,6 +555,19 @@ export class WolfpackClient {
555
555
  async unmuteSubscription(documentType, documentId) {
556
556
  return this.api.post(`/subscriptions/${documentType}/${documentId}/unmute`, {});
557
557
  }
558
+ // Discussion methods
559
+ async getDiscussions(documentType, documentId) {
560
+ return this.api.get(`/discussions/${documentType}/${documentId}`);
561
+ }
562
+ async getDiscussionByComment(commentId) {
563
+ return this.api.get(`/discussions/by-comment/${commentId}`);
564
+ }
565
+ async addDiscussionComment(discussionId, content, parentCommentId) {
566
+ return this.api.post(`/discussions/${discussionId}/comments`, {
567
+ content,
568
+ parentCommentId,
569
+ });
570
+ }
558
571
  close() {
559
572
  // No cleanup needed for API client
560
573
  }
package/dist/index.js CHANGED
@@ -525,6 +525,24 @@ const UUID_FIELDS_TO_STRIP = new Set([
525
525
  'teamId', // Internal team UUID - noise for agents
526
526
  'workItemId', // Cross-reference UUID on Issues - noise
527
527
  ]);
528
+ // Discussion schemas
529
+ const GetDiscussionsSchema = z.object({
530
+ document_type: z.string().describe('Document type (e.g. "wiki", "work_item", "issue")'),
531
+ document_id: z.string().describe('The ID of the document'),
532
+ });
533
+ const GetDiscussionByCommentSchema = z.object({
534
+ comment_id: z
535
+ .string()
536
+ .describe('The ID of a discussion comment (e.g. from a notification sourceDocumentId)'),
537
+ });
538
+ const AddDiscussionCommentSchema = z.object({
539
+ discussion_id: z.string().describe('The ID of the discussion to comment on'),
540
+ content: z.string().describe('Comment content (supports markdown and @mentions)'),
541
+ parent_comment_id: z
542
+ .string()
543
+ .optional()
544
+ .describe('Parent comment ID for threaded replies (omit for top-level)'),
545
+ });
528
546
  // Fields containing user-defined data that should never be recursively processed.
529
547
  const PASSTHROUGH_FIELDS = new Set(['formDefinition', 'formValues']);
530
548
  // Strip UUID v4 fields from response objects so agents use refId/slug instead.
@@ -1734,6 +1752,65 @@ class WolfpackMCPServer {
1734
1752
  required: ['document_type', 'document_id'],
1735
1753
  },
1736
1754
  },
1755
+ // Discussion tools
1756
+ {
1757
+ name: 'get_discussions',
1758
+ description: 'Get all discussion threads on a document (wiki page, work item, issue, etc.). ' +
1759
+ 'Returns discussions with their full comment threads including replies.',
1760
+ inputSchema: {
1761
+ type: 'object',
1762
+ properties: {
1763
+ document_type: {
1764
+ type: 'string',
1765
+ description: 'Document type (e.g. "wiki", "work_item", "issue")',
1766
+ },
1767
+ document_id: {
1768
+ type: 'string',
1769
+ description: 'The ID of the document',
1770
+ },
1771
+ },
1772
+ required: ['document_type', 'document_id'],
1773
+ },
1774
+ },
1775
+ {
1776
+ name: 'get_discussion_by_comment',
1777
+ description: 'Find the full discussion thread containing a specific comment. ' +
1778
+ 'Use this when you have a comment ID from a notification (sourceDocumentType: "discussion_comment") ' +
1779
+ 'and need to see the full discussion context.',
1780
+ inputSchema: {
1781
+ type: 'object',
1782
+ properties: {
1783
+ comment_id: {
1784
+ type: 'string',
1785
+ description: 'The comment ID (e.g. from a notification sourceDocumentId)',
1786
+ },
1787
+ },
1788
+ required: ['comment_id'],
1789
+ },
1790
+ },
1791
+ {
1792
+ name: 'create_discussion_comment',
1793
+ description: 'Add a comment to a discussion thread. Supports threaded replies via parent_comment_id. ' +
1794
+ 'Use this to respond to wiki page discussions, work item discussions, or any document discussion.',
1795
+ inputSchema: {
1796
+ type: 'object',
1797
+ properties: {
1798
+ discussion_id: {
1799
+ type: 'string',
1800
+ description: 'The ID of the discussion to comment on',
1801
+ },
1802
+ content: {
1803
+ type: 'string',
1804
+ description: 'Comment content (supports markdown and @mentions)',
1805
+ },
1806
+ parent_comment_id: {
1807
+ type: 'string',
1808
+ description: 'Parent comment ID for threaded replies (omit for top-level)',
1809
+ },
1810
+ },
1811
+ required: ['discussion_id', 'content'],
1812
+ },
1813
+ },
1737
1814
  ],
1738
1815
  }));
1739
1816
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
@@ -2435,11 +2512,12 @@ class WolfpackMCPServer {
2435
2512
  limit: parsed.limit,
2436
2513
  offset: parsed.offset,
2437
2514
  });
2515
+ // Don't strip UUIDs — agents need notification IDs to mark as read/delete
2438
2516
  return {
2439
2517
  content: [
2440
2518
  {
2441
2519
  type: 'text',
2442
- text: JSON.stringify(stripUuids(result), null, 2),
2520
+ text: JSON.stringify(result, null, 2),
2443
2521
  },
2444
2522
  ],
2445
2523
  };
@@ -2471,11 +2549,12 @@ class WolfpackMCPServer {
2471
2549
  documentType: parsed.document_type,
2472
2550
  isActive: parsed.is_active,
2473
2551
  });
2552
+ // Don't strip UUIDs — agents need subscription IDs
2474
2553
  return {
2475
2554
  content: [
2476
2555
  {
2477
2556
  type: 'text',
2478
- text: JSON.stringify(stripUuids(result), null, 2),
2557
+ text: JSON.stringify(result, null, 2),
2479
2558
  },
2480
2559
  ],
2481
2560
  };
@@ -2493,12 +2572,7 @@ class WolfpackMCPServer {
2493
2572
  cooldownMinutes: parsed.cooldown_minutes,
2494
2573
  });
2495
2574
  return {
2496
- content: [
2497
- {
2498
- type: 'text',
2499
- text: JSON.stringify(stripUuids(result), null, 2),
2500
- },
2501
- ],
2575
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
2502
2576
  };
2503
2577
  }
2504
2578
  case 'unsubscribe': {
@@ -2512,24 +2586,36 @@ class WolfpackMCPServer {
2512
2586
  const parsed = MuteSubscriptionSchema.parse(args);
2513
2587
  const result = await this.client.muteSubscription(parsed.document_type, parsed.document_id, parsed.duration);
2514
2588
  return {
2515
- content: [
2516
- {
2517
- type: 'text',
2518
- text: JSON.stringify(stripUuids(result), null, 2),
2519
- },
2520
- ],
2589
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
2521
2590
  };
2522
2591
  }
2523
2592
  case 'unmute_subscription': {
2524
2593
  const parsed = UnmuteSubscriptionSchema.parse(args);
2525
2594
  const result = await this.client.unmuteSubscription(parsed.document_type, parsed.document_id);
2526
2595
  return {
2527
- content: [
2528
- {
2529
- type: 'text',
2530
- text: JSON.stringify(stripUuids(result), null, 2),
2531
- },
2532
- ],
2596
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
2597
+ };
2598
+ }
2599
+ // Discussion handlers
2600
+ case 'get_discussions': {
2601
+ const parsed = GetDiscussionsSchema.parse(args);
2602
+ const result = await this.client.getDiscussions(parsed.document_type, parsed.document_id);
2603
+ return {
2604
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
2605
+ };
2606
+ }
2607
+ case 'get_discussion_by_comment': {
2608
+ const parsed = GetDiscussionByCommentSchema.parse(args);
2609
+ const result = await this.client.getDiscussionByComment(parsed.comment_id);
2610
+ return {
2611
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
2612
+ };
2613
+ }
2614
+ case 'create_discussion_comment': {
2615
+ const parsed = AddDiscussionCommentSchema.parse(args);
2616
+ const result = await this.client.addDiscussionComment(parsed.discussion_id, parsed.content, parsed.parent_comment_id);
2617
+ return {
2618
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
2533
2619
  };
2534
2620
  }
2535
2621
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.46",
3
+ "version": "1.0.47",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",