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.
- package/dist/agentBuilderTools.js +55 -0
- package/dist/client.js +6 -0
- package/package.json +1 -1
|
@@ -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
|
}
|