wolfpack-mcp 1.0.39 → 1.0.41

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
@@ -164,11 +164,9 @@ export class WolfpackClient {
164
164
  throw error;
165
165
  }
166
166
  }
167
- async updateWorkProgress(workItemId, description) {
167
+ async updateWorkProgress(workItemId, description, teamSlug) {
168
168
  try {
169
- return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/progress`), {
170
- description,
171
- });
169
+ return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/progress`, teamSlug), { description });
172
170
  }
173
171
  catch (error) {
174
172
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
@@ -177,11 +175,9 @@ export class WolfpackClient {
177
175
  throw error;
178
176
  }
179
177
  }
180
- async updateWorkItemStatus(workItemId, status) {
178
+ async updateWorkItemStatus(workItemId, status, teamSlug) {
181
179
  try {
182
- return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/status`), {
183
- status,
184
- });
180
+ return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/status`, teamSlug), { status });
185
181
  }
186
182
  catch (error) {
187
183
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
@@ -190,9 +186,9 @@ export class WolfpackClient {
190
186
  throw error;
191
187
  }
192
188
  }
193
- async updateWorkItemAssignee(workItemId, data) {
189
+ async updateWorkItemAssignee(workItemId, data, teamSlug) {
194
190
  try {
195
- return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/assignee`), data);
191
+ return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/assignee`, teamSlug), data);
196
192
  }
197
193
  catch (error) {
198
194
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
@@ -201,11 +197,9 @@ export class WolfpackClient {
201
197
  throw error;
202
198
  }
203
199
  }
204
- async updateWorkItemTitle(workItemId, title) {
200
+ async updateWorkItemTitle(workItemId, title, teamSlug) {
205
201
  try {
206
- return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/title`), {
207
- title,
208
- });
202
+ return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/title`, teamSlug), { title });
209
203
  }
210
204
  catch (error) {
211
205
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
@@ -214,9 +208,9 @@ export class WolfpackClient {
214
208
  throw error;
215
209
  }
216
210
  }
217
- async updateWorkItemInitiative(workItemId, radarItemId) {
211
+ async updateWorkItemInitiative(workItemId, radarItemId, teamSlug) {
218
212
  try {
219
- return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/initiative`), { radarItemId });
213
+ return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/initiative`, teamSlug), { radarItemId });
220
214
  }
221
215
  catch (error) {
222
216
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
@@ -225,9 +219,9 @@ export class WolfpackClient {
225
219
  throw error;
226
220
  }
227
221
  }
228
- async pullWorkItem(workItemId, data) {
222
+ async pullWorkItem(workItemId, data, teamSlug) {
229
223
  try {
230
- return await this.api.post(this.withTeamSlug(`/work-items/${workItemId}/pull`), data || {});
224
+ return await this.api.post(this.withTeamSlug(`/work-items/${workItemId}/pull`, teamSlug), data || {});
231
225
  }
232
226
  catch (error) {
233
227
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
@@ -236,11 +230,9 @@ export class WolfpackClient {
236
230
  throw error;
237
231
  }
238
232
  }
239
- async submitWorkItemForm(workItemId, formValues) {
233
+ async submitWorkItemForm(workItemId, formValues, teamSlug) {
240
234
  try {
241
- return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/form`), {
242
- formValues,
243
- });
235
+ return await this.api.put(this.withTeamSlug(`/work-items/${workItemId}/form`, teamSlug), { formValues });
244
236
  }
245
237
  catch (error) {
246
238
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
@@ -360,8 +352,8 @@ export class WolfpackClient {
360
352
  const { teamSlug, ...rest } = data;
361
353
  return this.api.post('/issues', { ...rest, teamSlug });
362
354
  }
363
- async updateIssue(issueId, data) {
364
- return this.api.patch(this.withTeamSlug(`/issues/${issueId}`), data);
355
+ async updateIssue(issueId, data, teamSlug) {
356
+ return this.api.patch(this.withTeamSlug(`/issues/${issueId}`, teamSlug), data);
365
357
  }
366
358
  // Wiki Page methods
367
359
  async listWikiPages(options) {
@@ -409,8 +401,8 @@ export class WolfpackClient {
409
401
  const { teamSlug, ...rest } = data;
410
402
  return this.api.post('/wiki-pages', { ...rest, teamSlug });
411
403
  }
412
- async updateWikiPage(pageId, data) {
413
- return this.api.patch(this.withTeamSlug(`/wiki-pages/${pageId}`), data);
404
+ async updateWikiPage(pageId, data, teamSlug) {
405
+ return this.api.patch(this.withTeamSlug(`/wiki-pages/${pageId}`, teamSlug), data);
414
406
  }
415
407
  // Journal Entry methods
416
408
  async listJournalEntries(options) {
@@ -458,21 +450,21 @@ export class WolfpackClient {
458
450
  const { teamSlug, ...rest } = data;
459
451
  return this.api.post('/journal-entries', { ...rest, teamSlug });
460
452
  }
461
- async updateJournalEntry(entryId, data) {
462
- return this.api.patch(this.withTeamSlug(`/journal-entries/${entryId}`), data);
453
+ async updateJournalEntry(entryId, data, teamSlug) {
454
+ return this.api.patch(this.withTeamSlug(`/journal-entries/${entryId}`, teamSlug), data);
463
455
  }
464
456
  // Comment methods
465
- async listWorkItemComments(workItemId) {
466
- return this.api.get(this.withTeamSlug(`/work-items/${workItemId}/comments`));
457
+ async listWorkItemComments(workItemId, teamSlug) {
458
+ return this.api.get(this.withTeamSlug(`/work-items/${workItemId}/comments`, teamSlug));
467
459
  }
468
- async listIssueComments(issueId) {
469
- return this.api.get(this.withTeamSlug(`/issues/${issueId}/comments`));
460
+ async listIssueComments(issueId, teamSlug) {
461
+ return this.api.get(this.withTeamSlug(`/issues/${issueId}/comments`, teamSlug));
470
462
  }
471
- async createWorkItemComment(workItemId, data) {
472
- return this.api.post(this.withTeamSlug(`/work-items/${workItemId}/comments`), data);
463
+ async createWorkItemComment(workItemId, data, teamSlug) {
464
+ return this.api.post(this.withTeamSlug(`/work-items/${workItemId}/comments`, teamSlug), data);
473
465
  }
474
- async createIssueComment(issueId, data) {
475
- return this.api.post(this.withTeamSlug(`/issues/${issueId}/comments`), data);
466
+ async createIssueComment(issueId, data, teamSlug) {
467
+ return this.api.post(this.withTeamSlug(`/issues/${issueId}/comments`, teamSlug), data);
476
468
  }
477
469
  /**
478
470
  * Upload an image and get back a URL that can be used in markdown content.
package/dist/index.js CHANGED
@@ -96,6 +96,10 @@ const GetWorkItemSchema = z.object({
96
96
  const UpdateWorkProgressSchema = z.object({
97
97
  work_item_id: z.string().describe('The ID of the work item'),
98
98
  description: z.string().describe('Updated description/notes for the work item'),
99
+ project_slug: z
100
+ .string()
101
+ .optional()
102
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
99
103
  });
100
104
  const VALID_STATUSES = [
101
105
  'pending',
@@ -111,6 +115,10 @@ const VALID_STATUSES = [
111
115
  const UpdateWorkItemStatusSchema = z.object({
112
116
  work_item_id: z.string().describe('The ID of the work item'),
113
117
  status: z.enum(VALID_STATUSES).describe('New status'),
118
+ project_slug: z
119
+ .string()
120
+ .optional()
121
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
114
122
  });
115
123
  const UpdateWorkItemAssigneeSchema = z.object({
116
124
  work_item_id: z.string().describe('The ID of the work item'),
@@ -118,10 +126,18 @@ const UpdateWorkItemAssigneeSchema = z.object({
118
126
  .string()
119
127
  .nullable()
120
128
  .describe('User ID to assign as leading user, or null to unassign'),
129
+ project_slug: z
130
+ .string()
131
+ .optional()
132
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
121
133
  });
122
134
  const UpdateWorkItemTitleSchema = z.object({
123
135
  work_item_id: z.string().describe('The ID of the work item'),
124
136
  title: z.string().describe('New title for the work item'),
137
+ project_slug: z
138
+ .string()
139
+ .optional()
140
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
125
141
  });
126
142
  const UpdateWorkItemInitiativeSchema = z.object({
127
143
  work_item_id: z.string().describe('The ID of the work item'),
@@ -129,6 +145,10 @@ const UpdateWorkItemInitiativeSchema = z.object({
129
145
  .string()
130
146
  .nullable()
131
147
  .describe('Radar/initiative item ID to link to, or null to unlink'),
148
+ project_slug: z
149
+ .string()
150
+ .optional()
151
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
132
152
  });
133
153
  const PullWorkItemSchema = z.object({
134
154
  work_item_id: z.string().describe('The ID of the work item to pull from backlog'),
@@ -136,10 +156,18 @@ const PullWorkItemSchema = z.object({
136
156
  .string()
137
157
  .optional()
138
158
  .describe('User ID to assign as leading user (defaults to API key owner)'),
159
+ project_slug: z
160
+ .string()
161
+ .optional()
162
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
139
163
  });
140
164
  const SubmitWorkItemFormSchema = z.object({
141
165
  work_item_id: z.string().describe('The ID of the work item'),
142
166
  form_values: z.record(z.any()).describe('Key-value pairs matching formDefinition field names'),
167
+ project_slug: z
168
+ .string()
169
+ .optional()
170
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
143
171
  });
144
172
  // Radar Item (Initiative/Roadmap) schemas
145
173
  const ListRadarItemsSchema = z.object({
@@ -245,6 +273,10 @@ const UpdateIssueSchema = z.object({
245
273
  severity: z.enum(['low', 'medium', 'high', 'critical']).optional().describe('Updated severity'),
246
274
  assigned_to_id: z.string().optional().describe('Updated assignee'),
247
275
  closing_note: z.string().optional().describe('Closing note (when closing the issue)'),
276
+ project_slug: z
277
+ .string()
278
+ .optional()
279
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
248
280
  });
249
281
  // Wiki Page schemas
250
282
  const ListWikiPagesSchema = z.object({
@@ -284,6 +316,10 @@ const UpdateWikiPageSchema = z.object({
284
316
  page_id: z.string().describe('The page slug'),
285
317
  title: z.string().optional().describe('Updated title'),
286
318
  content: z.string().optional().describe('Updated content (markdown)'),
319
+ project_slug: z
320
+ .string()
321
+ .optional()
322
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
287
323
  });
288
324
  // Journal Entry schemas
289
325
  const ListJournalEntriesSchema = z.object({
@@ -316,21 +352,41 @@ const UpdateJournalEntrySchema = z.object({
316
352
  entry_id: z.string().describe('The entry refId (number)'),
317
353
  title: z.string().optional().describe('Updated title'),
318
354
  content: z.string().optional().describe('Updated content (markdown)'),
355
+ project_slug: z
356
+ .string()
357
+ .optional()
358
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
319
359
  });
320
360
  // Comment schemas
321
361
  const ListWorkItemCommentsSchema = z.object({
322
362
  work_item_id: z.string().describe('The work item refId (number)'),
363
+ project_slug: z
364
+ .string()
365
+ .optional()
366
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
323
367
  });
324
368
  const ListIssueCommentsSchema = z.object({
325
369
  issue_id: z.string().describe('The issue refId (number)'),
370
+ project_slug: z
371
+ .string()
372
+ .optional()
373
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
326
374
  });
327
375
  const CreateWorkItemCommentSchema = z.object({
328
376
  work_item_id: z.string().describe('The work item refId (number)'),
329
377
  content: z.string().describe('Comment content (markdown)'),
378
+ project_slug: z
379
+ .string()
380
+ .optional()
381
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
330
382
  });
331
383
  const CreateIssueCommentSchema = z.object({
332
384
  issue_id: z.string().describe('The issue refId (number)'),
333
385
  content: z.string().describe('Comment content (markdown)'),
386
+ project_slug: z
387
+ .string()
388
+ .optional()
389
+ .describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
334
390
  });
335
391
  // Image upload schema
336
392
  const UploadImageSchema = z.object({
@@ -547,6 +603,10 @@ class WolfpackMCPServer {
547
603
  type: 'string',
548
604
  description: 'Updated description/notes for the work item',
549
605
  },
606
+ project_slug: {
607
+ type: 'string',
608
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
609
+ },
550
610
  },
551
611
  required: ['work_item_id', 'description'],
552
612
  },
@@ -584,6 +644,10 @@ class WolfpackMCPServer {
584
644
  ],
585
645
  description: 'New status: "pending" (backlog), "new" (to do), "doing" (in progress), "review" (work done), "ready" (awaiting deployment), "blocked", "completed" (deployed), "closed", "archived"',
586
646
  },
647
+ project_slug: {
648
+ type: 'string',
649
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
650
+ },
587
651
  },
588
652
  required: ['work_item_id', 'status'],
589
653
  },
@@ -604,6 +668,10 @@ class WolfpackMCPServer {
604
668
  type: ['string', 'null'],
605
669
  description: 'User ID to assign as leading user, or null to unassign',
606
670
  },
671
+ project_slug: {
672
+ type: 'string',
673
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
674
+ },
607
675
  },
608
676
  required: ['work_item_id', 'leading_user_id'],
609
677
  },
@@ -623,6 +691,10 @@ class WolfpackMCPServer {
623
691
  type: 'string',
624
692
  description: 'New title for the work item',
625
693
  },
694
+ project_slug: {
695
+ type: 'string',
696
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
697
+ },
626
698
  },
627
699
  required: ['work_item_id', 'title'],
628
700
  },
@@ -642,6 +714,10 @@ class WolfpackMCPServer {
642
714
  type: ['string', 'null'],
643
715
  description: 'Radar/initiative item ID to link to, or null to unlink',
644
716
  },
717
+ project_slug: {
718
+ type: 'string',
719
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
720
+ },
645
721
  },
646
722
  required: ['work_item_id', 'radar_item_id'],
647
723
  },
@@ -665,6 +741,10 @@ class WolfpackMCPServer {
665
741
  type: 'string',
666
742
  description: 'User ID to assign as leading user (optional, defaults to API key owner)',
667
743
  },
744
+ project_slug: {
745
+ type: 'string',
746
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
747
+ },
668
748
  },
669
749
  required: ['work_item_id'],
670
750
  },
@@ -685,6 +765,10 @@ class WolfpackMCPServer {
685
765
  type: 'object',
686
766
  description: 'Key-value pairs matching formDefinition field names',
687
767
  },
768
+ project_slug: {
769
+ type: 'string',
770
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
771
+ },
688
772
  },
689
773
  required: ['work_item_id', 'form_values'],
690
774
  },
@@ -930,6 +1014,10 @@ class WolfpackMCPServer {
930
1014
  type: 'string',
931
1015
  description: 'Closing note (when closing the issue)',
932
1016
  },
1017
+ project_slug: {
1018
+ type: 'string',
1019
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
1020
+ },
933
1021
  },
934
1022
  required: ['issue_id'],
935
1023
  },
@@ -1014,6 +1102,10 @@ class WolfpackMCPServer {
1014
1102
  type: 'string',
1015
1103
  description: 'Updated content (markdown)',
1016
1104
  },
1105
+ project_slug: {
1106
+ type: 'string',
1107
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
1108
+ },
1017
1109
  },
1018
1110
  required: ['page_id'],
1019
1111
  },
@@ -1095,6 +1187,10 @@ class WolfpackMCPServer {
1095
1187
  type: 'string',
1096
1188
  description: 'Updated content (markdown)',
1097
1189
  },
1190
+ project_slug: {
1191
+ type: 'string',
1192
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
1193
+ },
1098
1194
  },
1099
1195
  required: ['entry_id'],
1100
1196
  },
@@ -1108,6 +1204,10 @@ class WolfpackMCPServer {
1108
1204
  type: 'object',
1109
1205
  properties: {
1110
1206
  work_item_id: { type: 'string', description: 'The work item refId (number)' },
1207
+ project_slug: {
1208
+ type: 'string',
1209
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
1210
+ },
1111
1211
  },
1112
1212
  required: ['work_item_id'],
1113
1213
  },
@@ -1120,6 +1220,10 @@ class WolfpackMCPServer {
1120
1220
  type: 'object',
1121
1221
  properties: {
1122
1222
  issue_id: { type: 'string', description: 'The issue refId (number)' },
1223
+ project_slug: {
1224
+ type: 'string',
1225
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
1226
+ },
1123
1227
  },
1124
1228
  required: ['issue_id'],
1125
1229
  },
@@ -1141,6 +1245,10 @@ class WolfpackMCPServer {
1141
1245
  type: 'string',
1142
1246
  description: 'Comment content (markdown)',
1143
1247
  },
1248
+ project_slug: {
1249
+ type: 'string',
1250
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
1251
+ },
1144
1252
  },
1145
1253
  required: ['work_item_id', 'content'],
1146
1254
  },
@@ -1157,6 +1265,10 @@ class WolfpackMCPServer {
1157
1265
  type: 'string',
1158
1266
  description: 'Comment content (markdown)',
1159
1267
  },
1268
+ project_slug: {
1269
+ type: 'string',
1270
+ description: 'Project slug (required for multi-project users, use list_projects to get slugs)',
1271
+ },
1160
1272
  },
1161
1273
  required: ['issue_id', 'content'],
1162
1274
  },
@@ -1322,7 +1434,8 @@ class WolfpackMCPServer {
1322
1434
  }
1323
1435
  case 'update_work_progress': {
1324
1436
  const parsed = UpdateWorkProgressSchema.parse(args);
1325
- const workItem = await this.client.updateWorkProgress(parsed.work_item_id, parsed.description);
1437
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1438
+ const workItem = await this.client.updateWorkProgress(parsed.work_item_id, parsed.description, teamSlug);
1326
1439
  if (workItem) {
1327
1440
  return {
1328
1441
  content: [
@@ -1339,7 +1452,8 @@ class WolfpackMCPServer {
1339
1452
  }
1340
1453
  case 'update_work_item_status': {
1341
1454
  const parsed = UpdateWorkItemStatusSchema.parse(args);
1342
- const workItem = await this.client.updateWorkItemStatus(parsed.work_item_id, parsed.status);
1455
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1456
+ const workItem = await this.client.updateWorkItemStatus(parsed.work_item_id, parsed.status, teamSlug);
1343
1457
  if (workItem) {
1344
1458
  return {
1345
1459
  content: [
@@ -1356,9 +1470,10 @@ class WolfpackMCPServer {
1356
1470
  }
1357
1471
  case 'update_work_item_assignee': {
1358
1472
  const parsed = UpdateWorkItemAssigneeSchema.parse(args);
1473
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1359
1474
  const workItem = await this.client.updateWorkItemAssignee(parsed.work_item_id, {
1360
1475
  leadingUserId: parsed.leading_user_id,
1361
- });
1476
+ }, teamSlug);
1362
1477
  if (workItem) {
1363
1478
  const assigneeText = parsed.leading_user_id
1364
1479
  ? `assigned to ${parsed.leading_user_id}`
@@ -1378,7 +1493,8 @@ class WolfpackMCPServer {
1378
1493
  }
1379
1494
  case 'update_work_item_title': {
1380
1495
  const parsed = UpdateWorkItemTitleSchema.parse(args);
1381
- const workItem = await this.client.updateWorkItemTitle(parsed.work_item_id, parsed.title);
1496
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1497
+ const workItem = await this.client.updateWorkItemTitle(parsed.work_item_id, parsed.title, teamSlug);
1382
1498
  if (workItem) {
1383
1499
  return {
1384
1500
  content: [
@@ -1395,7 +1511,8 @@ class WolfpackMCPServer {
1395
1511
  }
1396
1512
  case 'update_work_item_initiative': {
1397
1513
  const parsed = UpdateWorkItemInitiativeSchema.parse(args);
1398
- const workItem = await this.client.updateWorkItemInitiative(parsed.work_item_id, parsed.radar_item_id);
1514
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1515
+ const workItem = await this.client.updateWorkItemInitiative(parsed.work_item_id, parsed.radar_item_id, teamSlug);
1399
1516
  if (workItem) {
1400
1517
  const initiativeText = parsed.radar_item_id
1401
1518
  ? `linked to initiative ${parsed.radar_item_id}`
@@ -1415,9 +1532,10 @@ class WolfpackMCPServer {
1415
1532
  }
1416
1533
  case 'pull_work_item': {
1417
1534
  const parsed = PullWorkItemSchema.parse(args);
1535
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1418
1536
  const workItem = await this.client.pullWorkItem(parsed.work_item_id, {
1419
1537
  leadingUserId: parsed.leading_user_id,
1420
- });
1538
+ }, teamSlug);
1421
1539
  if (workItem) {
1422
1540
  return {
1423
1541
  content: [
@@ -1434,7 +1552,8 @@ class WolfpackMCPServer {
1434
1552
  }
1435
1553
  case 'submit_work_item_form': {
1436
1554
  const parsed = SubmitWorkItemFormSchema.parse(args);
1437
- const workItem = await this.client.submitWorkItemForm(parsed.work_item_id, parsed.form_values);
1555
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1556
+ const workItem = await this.client.submitWorkItemForm(parsed.work_item_id, parsed.form_values, teamSlug);
1438
1557
  if (workItem) {
1439
1558
  return {
1440
1559
  content: [
@@ -1566,6 +1685,7 @@ class WolfpackMCPServer {
1566
1685
  }
1567
1686
  case 'update_issue': {
1568
1687
  const parsed = UpdateIssueSchema.parse(args);
1688
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1569
1689
  const issue = await this.client.updateIssue(parsed.issue_id, {
1570
1690
  title: parsed.title,
1571
1691
  description: parsed.description,
@@ -1573,7 +1693,7 @@ class WolfpackMCPServer {
1573
1693
  severity: parsed.severity,
1574
1694
  assignedToId: parsed.assigned_to_id,
1575
1695
  closingNote: parsed.closing_note,
1576
- });
1696
+ }, teamSlug);
1577
1697
  return {
1578
1698
  content: [
1579
1699
  {
@@ -1633,10 +1753,11 @@ class WolfpackMCPServer {
1633
1753
  }
1634
1754
  case 'update_wiki_page': {
1635
1755
  const parsed = UpdateWikiPageSchema.parse(args);
1756
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1636
1757
  const page = await this.client.updateWikiPage(parsed.page_id, {
1637
1758
  title: parsed.title,
1638
1759
  content: parsed.content,
1639
- });
1760
+ }, teamSlug);
1640
1761
  return {
1641
1762
  content: [
1642
1763
  {
@@ -1695,10 +1816,11 @@ class WolfpackMCPServer {
1695
1816
  }
1696
1817
  case 'update_journal_entry': {
1697
1818
  const parsed = UpdateJournalEntrySchema.parse(args);
1819
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1698
1820
  const entry = await this.client.updateJournalEntry(parsed.entry_id, {
1699
1821
  title: parsed.title,
1700
1822
  content: parsed.content,
1701
- });
1823
+ }, teamSlug);
1702
1824
  return {
1703
1825
  content: [
1704
1826
  {
@@ -1711,23 +1833,26 @@ class WolfpackMCPServer {
1711
1833
  // Comment handlers
1712
1834
  case 'list_work_item_comments': {
1713
1835
  const parsed = ListWorkItemCommentsSchema.parse(args);
1714
- const comments = await this.client.listWorkItemComments(parsed.work_item_id);
1836
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1837
+ const comments = await this.client.listWorkItemComments(parsed.work_item_id, teamSlug);
1715
1838
  return {
1716
1839
  content: [{ type: 'text', text: JSON.stringify(stripUuids(comments), null, 2) }],
1717
1840
  };
1718
1841
  }
1719
1842
  case 'list_issue_comments': {
1720
1843
  const parsed = ListIssueCommentsSchema.parse(args);
1721
- const comments = await this.client.listIssueComments(parsed.issue_id);
1844
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1845
+ const comments = await this.client.listIssueComments(parsed.issue_id, teamSlug);
1722
1846
  return {
1723
1847
  content: [{ type: 'text', text: JSON.stringify(stripUuids(comments), null, 2) }],
1724
1848
  };
1725
1849
  }
1726
1850
  case 'create_work_item_comment': {
1727
1851
  const parsed = CreateWorkItemCommentSchema.parse(args);
1852
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1728
1853
  const comment = await this.client.createWorkItemComment(parsed.work_item_id, {
1729
1854
  content: parsed.content,
1730
- });
1855
+ }, teamSlug);
1731
1856
  return {
1732
1857
  content: [
1733
1858
  {
@@ -1739,9 +1864,10 @@ class WolfpackMCPServer {
1739
1864
  }
1740
1865
  case 'create_issue_comment': {
1741
1866
  const parsed = CreateIssueCommentSchema.parse(args);
1867
+ const teamSlug = parsed.project_slug || this.client.getProjectSlug() || undefined;
1742
1868
  const comment = await this.client.createIssueComment(parsed.issue_id, {
1743
1869
  content: parsed.content,
1744
- });
1870
+ }, teamSlug);
1745
1871
  return {
1746
1872
  content: [
1747
1873
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.39",
3
+ "version": "1.0.41",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",