wolfpack-mcp 1.0.72 → 1.0.73

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 CHANGED
@@ -100,7 +100,7 @@ const ListWorkItemsSchema = z.object({
100
100
  approved: z.coerce
101
101
  .string()
102
102
  .optional()
103
- .describe('Filter by approval: "true" for approved items, "false" for not-yet-approved. Backlog items must be approved before agents may pull them.'),
103
+ .describe('Filter by approval: "true" for approved items, "false" for not-yet-approved. Unassigned backlog items must be approved before agents may pull them; items assigned to you can be pulled regardless.'),
104
104
  limit: z.number().optional().describe('Maximum number of items to return'),
105
105
  offset: z.number().optional().describe('Number of items to skip'),
106
106
  });
@@ -811,7 +811,8 @@ class WolfpackMCPServer {
811
811
  approved: {
812
812
  type: 'string',
813
813
  description: 'Filter by approval: "true" for approved items, "false" for not-yet-approved. ' +
814
- 'Backlog ("pending") items must be approved by a human before agents may pull them.',
814
+ 'Unassigned backlog ("pending") items must be approved by a human before agents may ' +
815
+ 'pull them; items assigned to you can be pulled regardless.',
815
816
  },
816
817
  limit: { type: 'number', description: 'Maximum number of items to return' },
817
818
  offset: { type: 'number', description: 'Number of items to skip' },
@@ -965,8 +966,9 @@ class WolfpackMCPServer {
965
966
  description: 'Pull a specific work item from the backlog to the board. ' +
966
967
  'REQUIRED: Use this when starting work on a "pending" (backlog) item. ' +
967
968
  'This claims the item (assigns to you) and sets status to "new". ' +
968
- 'APPROVAL: Agents can only pull backlog items a human has approved (approved=true on the item) — ' +
969
- 'unapproved items must stay in the backlog until a human approves them. ' +
969
+ 'APPROVAL: Agents can only pull unassigned backlog items after a human has approved them ' +
970
+ '(approved=true on the item). Assignment overrides approval always pull and work items ' +
971
+ 'assigned to you, approved or not. ' +
970
972
  'After pulling, move to "doing" to indicate active work, then "review" when done. ' +
971
973
  'If no assignee is specified, assigns to the API key owner. ' +
972
974
  'In personal projects, items are always assigned to the owner.',
@@ -30,8 +30,9 @@ const STATUS_REMINDERS = {
30
30
  export function getWorkItemReminders(status, description, approved) {
31
31
  const reminders = [];
32
32
  if (status === 'pending' && approved === false) {
33
- // Overrides the generic pending reminder: pulling would be refused anyway
34
- reminders.push('REMINDER: This backlog item has NOT been approved. Agents may not pull it ' +
33
+ // Overrides the generic pending reminder: approval only gates unassigned items
34
+ reminders.push('REMINDER: This backlog item has NOT been approved. If it is assigned to you, that assignment ' +
35
+ 'overrides approval — pull it with pull_work_item and start work. If it is not assigned to you, ' +
35
36
  'leave it in the backlog until a human approves it.');
36
37
  }
37
38
  else {
@@ -35,10 +35,10 @@ describe('getWorkItemReminders', () => {
35
35
  expect.stringContaining('pull_work_item'),
36
36
  ]);
37
37
  });
38
- it('warns agents off unapproved pending items instead of telling them to pull', () => {
39
- expect(getWorkItemReminders('pending', PLAN, false)).toEqual([
40
- expect.stringContaining('NOT been approved'),
41
- ]);
38
+ it('explains the assignment override on unapproved pending items', () => {
39
+ const reminders = getWorkItemReminders('pending', PLAN, false);
40
+ expect(reminders).toEqual([expect.stringContaining('NOT been approved')]);
41
+ expect(reminders[0]).toContain('assignment overrides approval');
42
42
  });
43
43
  it('tells agents to move new items to doing', () => {
44
44
  expect(getWorkItemReminders('new', PLAN)).toEqual([
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.72",
3
+ "version": "1.0.73",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",