wolfpack-mcp 1.0.70 → 1.0.72

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.
@@ -99,6 +99,34 @@ export const AGENT_BUILDER_TOOLS = [
99
99
  required: ['agent_id'],
100
100
  },
101
101
  },
102
+ {
103
+ name: 'list_agent_aliases',
104
+ description: 'List the aliases of an agent. Aliases share the source agent definition but have their own identity and queue.',
105
+ inputSchema: {
106
+ type: 'object',
107
+ properties: {
108
+ agent_id: { type: 'string', description: 'Source agent profile ID' },
109
+ ...ORG_SLUG_PROP,
110
+ },
111
+ required: ['agent_id'],
112
+ },
113
+ },
114
+ {
115
+ name: 'create_agent_alias',
116
+ description: 'Create an alias of an agent, so the same definition can run work in parallel. ' +
117
+ 'An agent runs one session at a time, so N concurrent workers means N aliases. ' +
118
+ 'The alias live-tracks the source for container image, prompts, instructions, LLM, tools, skills and tasks — edit those once on the source. ' +
119
+ 'It does NOT inherit project assignment, API key permissions, secrets or schedules: set those on the alias afterwards, or it will start with a read-only key and no repository. ' +
120
+ 'Aliases are auto-named from the source (e.g. "Coder (2)"). You cannot alias an alias.',
121
+ inputSchema: {
122
+ type: 'object',
123
+ properties: {
124
+ agent_id: { type: 'string', description: 'Source agent profile ID to alias' },
125
+ ...ORG_SLUG_PROP,
126
+ },
127
+ required: ['agent_id'],
128
+ },
129
+ },
102
130
  {
103
131
  name: 'get_agent_mcp_selections',
104
132
  description: "List the template MCP servers this agent has opted out of. Returns { disabled: string[] } where each string is the MCP server key from the agent's template.",
@@ -815,6 +843,25 @@ export async function handleAgentBuilderTool(name, args, client) {
815
843
  const agent = await client.updateAgent(agent_id, fields, resolveOrg(parsed));
816
844
  return { content: [{ type: 'text', text: `Updated agent\n\n${text(agent)}` }] };
817
845
  }
846
+ case 'list_agent_aliases': {
847
+ const parsed = AgentIdSchema.parse(args);
848
+ const aliases = await client.listAgentAliases(parsed.agent_id, resolveOrg(parsed));
849
+ return { content: [{ type: 'text', text: text(aliases) }] };
850
+ }
851
+ case 'create_agent_alias': {
852
+ const parsed = AgentIdSchema.parse(args);
853
+ const alias = await client.createAgentAlias(parsed.agent_id, resolveOrg(parsed));
854
+ return {
855
+ content: [
856
+ {
857
+ type: 'text',
858
+ text: `Created alias\n\n${text(alias)}\n\n` +
859
+ 'Next: assign it to a project, set its api_key_permissions, add any secrets, ' +
860
+ 'and give it a schedule. None of those are inherited from the source.',
861
+ },
862
+ ],
863
+ };
864
+ }
818
865
  case 'get_agent_mcp_selections': {
819
866
  const parsed = AgentIdSchema.parse(args);
820
867
  const selections = await client.getAgentMcpSelections(parsed.agent_id, resolveOrg(parsed));
package/dist/client.js CHANGED
@@ -630,6 +630,12 @@ export class WolfpackClient {
630
630
  async createAgent(body, orgSlug) {
631
631
  return this.api.post(this.withOrgSlug('/agents', orgSlug), body);
632
632
  }
633
+ async listAgentAliases(agentId, orgSlug) {
634
+ return this.api.get(this.withOrgSlug(`/agents/${agentId}/aliases`, orgSlug));
635
+ }
636
+ async createAgentAlias(agentId, orgSlug) {
637
+ return this.api.post(this.withOrgSlug(`/agents/${agentId}/aliases`, orgSlug), {});
638
+ }
633
639
  async updateAgent(agentId, body, orgSlug) {
634
640
  return this.api.patch(this.withOrgSlug(`/agents/${agentId}`, orgSlug), body);
635
641
  }
package/dist/index.js CHANGED
@@ -184,7 +184,8 @@ const UpdateWorkItemSchema = z.object({
184
184
  .string()
185
185
  .nullable()
186
186
  .optional()
187
- .describe('Comment explaining closure/completion'),
187
+ .describe('ONLY when closing: comment explaining why the item is closed, provided together with status "closed". ' +
188
+ 'Not for progress or completion notes — use create_work_item_comment for those.'),
188
189
  project_slug: z
189
190
  .string()
190
191
  .optional()
@@ -872,7 +873,8 @@ class WolfpackMCPServer {
872
873
  'radar_item_id (initiative), category_id, priority (0-4), size (S/M/L), work_pool_id, tags, and closing_comment. ' +
873
874
  'STATUS WORKFLOW: "pending" (backlog) → "new" (to do) → "doing" (in progress) → "review" (work done) → "ready" (awaiting deployment) → "completed" (deployed). ' +
874
875
  'Use "blocked" when work cannot proceed. For "pending" items use pull_work_item first. ' +
875
- 'When moving to "review", add a completion comment. When moving to "blocked", add a comment explaining the blocker.',
876
+ 'When moving to "review", add a completion comment via create_work_item_comment. When moving to "blocked", add a comment explaining the blocker. ' +
877
+ 'closing_comment is only accepted together with status "closed" — never use it for progress or completion notes.',
876
878
  inputSchema: {
877
879
  type: 'object',
878
880
  properties: {
@@ -947,7 +949,8 @@ class WolfpackMCPServer {
947
949
  },
948
950
  closing_comment: {
949
951
  type: ['string', 'null'],
950
- description: 'Comment explaining closure/completion',
952
+ description: 'ONLY when closing: comment explaining why the item is closed, provided together with status "closed". ' +
953
+ 'Not for progress or completion notes — use create_work_item_comment for those.',
951
954
  },
952
955
  project_slug: {
953
956
  type: 'string',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.70",
3
+ "version": "1.0.72",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",