wolfpack-mcp 1.0.69 → 1.0.71

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.
@@ -89,6 +89,39 @@ export const AGENT_BUILDER_TOOLS = [
89
89
  description: 'LLM model family (e.g. "sonnet"). Agent auto-upgrades to latest in family.',
90
90
  },
91
91
  scheduling_enabled: { type: 'boolean', description: 'Whether scheduled tasks are enabled' },
92
+ api_key_permissions: {
93
+ type: 'array',
94
+ items: { type: 'string' },
95
+ description: 'Replace the full set of MCP permissions granted to the agent\'s session API key (e.g. ["mcp:work_items:read", "mcp:comments:create"]). Grant only what the agent\'s tasks need. An empty array falls back to a read-only default.',
96
+ },
97
+ ...ORG_SLUG_PROP,
98
+ },
99
+ required: ['agent_id'],
100
+ },
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' },
92
125
  ...ORG_SLUG_PROP,
93
126
  },
94
127
  required: ['agent_id'],
@@ -781,6 +814,7 @@ export async function handleAgentBuilderTool(name, args, client) {
781
814
  llm_model: z.string().nullable().optional(),
782
815
  llm_family: z.string().nullable().optional(),
783
816
  scheduling_enabled: z.boolean().optional(),
817
+ api_key_permissions: z.array(z.string()).optional(),
784
818
  org_slug: orgSlugField,
785
819
  })
786
820
  .parse(args);
@@ -804,9 +838,30 @@ export async function handleAgentBuilderTool(name, args, client) {
804
838
  fields.llmFamily = rest.llm_family;
805
839
  if (rest.scheduling_enabled !== undefined)
806
840
  fields.schedulingEnabled = rest.scheduling_enabled;
841
+ if (rest.api_key_permissions !== undefined)
842
+ fields.apiKeyPermissions = rest.api_key_permissions;
807
843
  const agent = await client.updateAgent(agent_id, fields, resolveOrg(parsed));
808
844
  return { content: [{ type: 'text', text: `Updated agent\n\n${text(agent)}` }] };
809
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
+ }
810
865
  case 'get_agent_mcp_selections': {
811
866
  const parsed = AgentIdSchema.parse(args);
812
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.69",
3
+ "version": "1.0.71",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",