@botuyo/mcp 0.3.23 → 0.4.1
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/tools/__tests__/agent_families.spec.d.ts +1 -0
- package/dist/tools/__tests__/agent_families.spec.js +219 -0
- package/dist/tools/__tests__/agent_families.spec.js.map +1 -0
- package/dist/tools/__tests__/list_agents.spec.js +50 -0
- package/dist/tools/__tests__/list_agents.spec.js.map +1 -1
- package/dist/tools/agent_families.d.ts +75 -0
- package/dist/tools/agent_families.js +325 -0
- package/dist/tools/agent_families.js.map +1 -0
- package/dist/tools/index.js +23 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list_agents.js +5 -2
- package/dist/tools/list_agents.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { listAgentFamiliesHandler, getAgentFamilyHandler, createAgentFamilyHandler, updateFamilyBaseHandler, addFamilyVariantHandler, updateFamilyVariantHandler, removeFamilyVariantHandler, publishAgentFamilyHandler, deleteAgentFamilyHandler, exportAgentFamilyHandler, importAgentFamilyHandler } from '../agent_families.js';
|
|
6
|
+
class MockClient {
|
|
7
|
+
getResponses;
|
|
8
|
+
calls = [];
|
|
9
|
+
constructor(getResponses = {}) {
|
|
10
|
+
this.getResponses = getResponses;
|
|
11
|
+
}
|
|
12
|
+
async get(path) {
|
|
13
|
+
this.calls.push({ method: 'get', path });
|
|
14
|
+
return this.getResponses[path] ?? { success: true, data: {} };
|
|
15
|
+
}
|
|
16
|
+
async post(path, payload) {
|
|
17
|
+
this.calls.push({ method: 'post', path, payload });
|
|
18
|
+
return { success: true, data: payload };
|
|
19
|
+
}
|
|
20
|
+
async put(path, payload) {
|
|
21
|
+
this.calls.push({ method: 'put', path, payload });
|
|
22
|
+
return { success: true, data: payload };
|
|
23
|
+
}
|
|
24
|
+
async delete(path) {
|
|
25
|
+
this.calls.push({ method: 'delete', path });
|
|
26
|
+
return { success: true };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const BASE = '/api/v1/mcp/agent-families';
|
|
30
|
+
const tmpDirs = [];
|
|
31
|
+
function makeTmpDir() {
|
|
32
|
+
const d = mkdtempSync(join(tmpdir(), 'fam-'));
|
|
33
|
+
tmpDirs.push(d);
|
|
34
|
+
return d;
|
|
35
|
+
}
|
|
36
|
+
afterEach(() => {
|
|
37
|
+
while (tmpDirs.length)
|
|
38
|
+
rmSync(tmpDirs.pop(), { recursive: true, force: true });
|
|
39
|
+
});
|
|
40
|
+
describe('agent family tools — read', () => {
|
|
41
|
+
it('list calls GET /agent-families', async () => {
|
|
42
|
+
const client = new MockClient();
|
|
43
|
+
await listAgentFamiliesHandler(client, {});
|
|
44
|
+
expect(client.calls[0]).toEqual({ method: 'get', path: BASE });
|
|
45
|
+
});
|
|
46
|
+
it('get calls GET /agent-families/:id', async () => {
|
|
47
|
+
const client = new MockClient();
|
|
48
|
+
await getAgentFamilyHandler(client, { familyId: 'fam1' });
|
|
49
|
+
expect(client.calls[0]).toEqual({ method: 'get', path: `${BASE}/fam1` });
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('agent family tools — create / base', () => {
|
|
53
|
+
it('create posts the full family payload', async () => {
|
|
54
|
+
const client = new MockClient();
|
|
55
|
+
const args = {
|
|
56
|
+
name: 'Ms. Ellis',
|
|
57
|
+
slug: 'ms-ellis',
|
|
58
|
+
entryVariantKey: 'nivelador',
|
|
59
|
+
base: { identity: { tone: 'cálida' } },
|
|
60
|
+
variants: [{ key: 'nivelador', label: 'Nivelador', overrides: {} }]
|
|
61
|
+
};
|
|
62
|
+
await createAgentFamilyHandler(client, args);
|
|
63
|
+
expect(client.calls[0].method).toBe('post');
|
|
64
|
+
expect(client.calls[0].path).toBe(BASE);
|
|
65
|
+
expect(client.calls[0].payload).toMatchObject({
|
|
66
|
+
name: 'Ms. Ellis',
|
|
67
|
+
slug: 'ms-ellis',
|
|
68
|
+
entryVariantKey: 'nivelador',
|
|
69
|
+
base: { identity: { tone: 'cálida' } }
|
|
70
|
+
});
|
|
71
|
+
expect(client.calls[0].payload.variants).toHaveLength(1);
|
|
72
|
+
});
|
|
73
|
+
it('create defaults base/variants when omitted', async () => {
|
|
74
|
+
const client = new MockClient();
|
|
75
|
+
await createAgentFamilyHandler(client, { name: 'X', slug: 'x', entryVariantKey: 'k' });
|
|
76
|
+
expect(client.calls[0].payload.base).toEqual({});
|
|
77
|
+
expect(client.calls[0].payload.variants).toEqual([]);
|
|
78
|
+
});
|
|
79
|
+
it('update_family_base puts { base } to /base', async () => {
|
|
80
|
+
const client = new MockClient();
|
|
81
|
+
await updateFamilyBaseHandler(client, { familyId: 'fam1', base: { enabledTools: ['save_user_memory'] } });
|
|
82
|
+
expect(client.calls[0]).toEqual({
|
|
83
|
+
method: 'put',
|
|
84
|
+
path: `${BASE}/fam1/base`,
|
|
85
|
+
payload: { base: { enabledTools: ['save_user_memory'] } }
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
describe('agent family tools — variants', () => {
|
|
90
|
+
it('add_family_variant posts the variant to /variants', async () => {
|
|
91
|
+
const client = new MockClient();
|
|
92
|
+
await addFamilyVariantHandler(client, {
|
|
93
|
+
familyId: 'fam1',
|
|
94
|
+
key: 'a2',
|
|
95
|
+
label: 'A2',
|
|
96
|
+
overrides: { knowledgeDocumentIds: ['d'] },
|
|
97
|
+
handoffTargets: ['nivelador'],
|
|
98
|
+
order: 3
|
|
99
|
+
});
|
|
100
|
+
expect(client.calls[0].method).toBe('post');
|
|
101
|
+
expect(client.calls[0].path).toBe(`${BASE}/fam1/variants`);
|
|
102
|
+
expect(client.calls[0].payload).toMatchObject({
|
|
103
|
+
key: 'a2',
|
|
104
|
+
label: 'A2',
|
|
105
|
+
overrides: { knowledgeDocumentIds: ['d'] },
|
|
106
|
+
handoffTargets: ['nivelador'],
|
|
107
|
+
order: 3
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
it('update_family_variant puts only provided fields to /variants/:key', async () => {
|
|
111
|
+
const client = new MockClient();
|
|
112
|
+
await updateFamilyVariantHandler(client, { familyId: 'fam1', variantKey: 'a1', label: 'A1+' });
|
|
113
|
+
expect(client.calls[0].method).toBe('put');
|
|
114
|
+
expect(client.calls[0].path).toBe(`${BASE}/fam1/variants/a1`);
|
|
115
|
+
expect(client.calls[0].payload).toEqual({ label: 'A1+' });
|
|
116
|
+
});
|
|
117
|
+
it('remove_family_variant deletes /variants/:key', async () => {
|
|
118
|
+
const client = new MockClient();
|
|
119
|
+
await removeFamilyVariantHandler(client, { familyId: 'fam1', variantKey: 'a1' });
|
|
120
|
+
expect(client.calls[0]).toEqual({ method: 'delete', path: `${BASE}/fam1/variants/a1` });
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe('agent family tools — publish / delete', () => {
|
|
124
|
+
it('publish puts to /publish', async () => {
|
|
125
|
+
const client = new MockClient();
|
|
126
|
+
await publishAgentFamilyHandler(client, { familyId: 'fam1' });
|
|
127
|
+
expect(client.calls[0]).toEqual({ method: 'put', path: `${BASE}/fam1/publish`, payload: {} });
|
|
128
|
+
});
|
|
129
|
+
it('delete refuses without confirm', async () => {
|
|
130
|
+
const client = new MockClient();
|
|
131
|
+
const res = (await deleteAgentFamilyHandler(client, { familyId: 'fam1', confirmName: 'Ms. Ellis' }));
|
|
132
|
+
expect(res.error).toBeTruthy();
|
|
133
|
+
expect(client.calls.some((c) => c.method === 'delete')).toBe(false);
|
|
134
|
+
});
|
|
135
|
+
it('delete refuses on name mismatch', async () => {
|
|
136
|
+
const client = new MockClient({ [`${BASE}/fam1`]: { success: true, data: { name: 'Ms. Ellis' } } });
|
|
137
|
+
const res = (await deleteAgentFamilyHandler(client, { familyId: 'fam1', confirm: true, confirmName: 'Wrong' }));
|
|
138
|
+
expect(res.error).toMatch(/mismatch/i);
|
|
139
|
+
expect(client.calls.some((c) => c.method === 'delete')).toBe(false);
|
|
140
|
+
});
|
|
141
|
+
it('delete proceeds when confirmed + name matches', async () => {
|
|
142
|
+
const client = new MockClient({ [`${BASE}/fam1`]: { success: true, data: { name: 'Ms. Ellis' } } });
|
|
143
|
+
const res = (await deleteAgentFamilyHandler(client, {
|
|
144
|
+
familyId: 'fam1',
|
|
145
|
+
confirm: true,
|
|
146
|
+
confirmName: 'Ms. Ellis'
|
|
147
|
+
}));
|
|
148
|
+
expect(res.success).toBe(true);
|
|
149
|
+
expect(client.calls.some((c) => c.method === 'delete' && c.path === `${BASE}/fam1`)).toBe(true);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
describe('agent family tools — export / import', () => {
|
|
153
|
+
it('export GETs /export and saves a portable file', async () => {
|
|
154
|
+
const dir = makeTmpDir();
|
|
155
|
+
const client = new MockClient({
|
|
156
|
+
[`${BASE}/fam1/export`]: {
|
|
157
|
+
success: true,
|
|
158
|
+
data: {
|
|
159
|
+
familyId: 'fam1',
|
|
160
|
+
family: {
|
|
161
|
+
name: 'Ms. Ellis',
|
|
162
|
+
slug: 'ms-ellis',
|
|
163
|
+
entryVariantKey: 'nivelador',
|
|
164
|
+
base: {},
|
|
165
|
+
variants: [{ key: 'nivelador', label: 'Nivelador', overrides: {} }]
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
const res = (await exportAgentFamilyHandler(client, { familyId: 'fam1', savePath: dir }));
|
|
171
|
+
expect(client.calls[0]).toEqual({ method: 'get', path: `${BASE}/fam1/export` });
|
|
172
|
+
expect(res.savedTo).toBe(join(dir, 'ms-ellis.json'));
|
|
173
|
+
const saved = JSON.parse(readFileSync(res.savedTo, 'utf-8'));
|
|
174
|
+
expect(saved._familyId).toBe('fam1');
|
|
175
|
+
expect(saved.entryVariantKey).toBe('nivelador');
|
|
176
|
+
});
|
|
177
|
+
it('import (inline) PUTs the family to /import', async () => {
|
|
178
|
+
const client = new MockClient();
|
|
179
|
+
const family = {
|
|
180
|
+
entryVariantKey: 'nivelador',
|
|
181
|
+
base: {},
|
|
182
|
+
variants: [{ key: 'nivelador', label: 'N', overrides: {} }]
|
|
183
|
+
};
|
|
184
|
+
await importAgentFamilyHandler(client, { familyId: 'fam1', family });
|
|
185
|
+
expect(client.calls[0].method).toBe('put');
|
|
186
|
+
expect(client.calls[0].path).toBe(`${BASE}/fam1/import`);
|
|
187
|
+
expect(client.calls[0].payload).toEqual(family);
|
|
188
|
+
});
|
|
189
|
+
it('import (file) reads the file, strips metadata, and derives familyId from _familyId', async () => {
|
|
190
|
+
const dir = makeTmpDir();
|
|
191
|
+
const file = join(dir, 'ms-ellis.json');
|
|
192
|
+
writeFileSync(file, JSON.stringify({
|
|
193
|
+
_exportedAt: '2026-06-18T00:00:00.000Z',
|
|
194
|
+
_familyId: 'fam-from-file',
|
|
195
|
+
name: 'Ms. Ellis',
|
|
196
|
+
slug: 'ms-ellis',
|
|
197
|
+
entryVariantKey: 'nivelador',
|
|
198
|
+
base: {},
|
|
199
|
+
variants: [{ key: 'nivelador', label: 'N', overrides: {} }]
|
|
200
|
+
}), 'utf-8');
|
|
201
|
+
const client = new MockClient();
|
|
202
|
+
const res = (await importAgentFamilyHandler(client, { filePath: file }));
|
|
203
|
+
expect(client.calls[0].path).toBe(`${BASE}/fam-from-file/import`);
|
|
204
|
+
expect(client.calls[0].payload._exportedAt).toBeUndefined();
|
|
205
|
+
expect(client.calls[0].payload._familyId).toBeUndefined();
|
|
206
|
+
expect(client.calls[0].payload.entryVariantKey).toBe('nivelador');
|
|
207
|
+
expect(res.importedFrom).toBe(file);
|
|
208
|
+
});
|
|
209
|
+
it('import errors when neither familyId nor _familyId is available', async () => {
|
|
210
|
+
const client = new MockClient();
|
|
211
|
+
const res = (await importAgentFamilyHandler(client, {
|
|
212
|
+
family: { entryVariantKey: 'k', base: {}, variants: [] }
|
|
213
|
+
}));
|
|
214
|
+
expect(res.success).toBe(false);
|
|
215
|
+
expect(res.error).toMatch(/familyId is required/i);
|
|
216
|
+
expect(client.calls.some((c) => c.method === 'put')).toBe(false);
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
//# sourceMappingURL=agent_families.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent_families.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/agent_families.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,4 +32,54 @@ describe('listAgentsHandler', () => {
|
|
|
32
32
|
expect(res.text).toContain('published');
|
|
33
33
|
});
|
|
34
34
|
});
|
|
35
|
+
class MockClientFamily {
|
|
36
|
+
async get(path) {
|
|
37
|
+
expect(path).toBe('/api/v1/mcp/agents');
|
|
38
|
+
return {
|
|
39
|
+
success: true,
|
|
40
|
+
data: [
|
|
41
|
+
{
|
|
42
|
+
id: '6a31f42d0bff04d6abbd5d7f',
|
|
43
|
+
name: 'Ms. Ellis — A1 (Beginner)',
|
|
44
|
+
status: 'published',
|
|
45
|
+
enabledToolsCount: 5,
|
|
46
|
+
familyId: '6a344975524b9e2d93406f40',
|
|
47
|
+
variantKey: 'a1'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: '69f20e5d0000000000000000',
|
|
51
|
+
name: 'Hilton Concierge',
|
|
52
|
+
status: 'published',
|
|
53
|
+
enabledToolsCount: 2,
|
|
54
|
+
familyId: null,
|
|
55
|
+
variantKey: null
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
describe('listAgentsHandler — family membership', () => {
|
|
62
|
+
it('tags family members with their variantKey in the text summary', async () => {
|
|
63
|
+
const client = new MockClientFamily();
|
|
64
|
+
const res = (await listAgentsHandler(client, {}));
|
|
65
|
+
const lines = res.text.split('\n');
|
|
66
|
+
expect(lines[0]).toContain('Ms. Ellis — A1 (Beginner)');
|
|
67
|
+
expect(lines[0].toLowerCase()).toContain('family');
|
|
68
|
+
expect(lines[0]).toContain('a1');
|
|
69
|
+
});
|
|
70
|
+
it('does NOT add a family tag to standalone agents', async () => {
|
|
71
|
+
const client = new MockClientFamily();
|
|
72
|
+
const res = (await listAgentsHandler(client, {}));
|
|
73
|
+
const lines = res.text.split('\n');
|
|
74
|
+
expect(lines[1]).toContain('Hilton Concierge');
|
|
75
|
+
expect(lines[1].toLowerCase()).not.toContain('family');
|
|
76
|
+
});
|
|
77
|
+
it('keeps familyId/variantKey in the structured data', async () => {
|
|
78
|
+
const client = new MockClientFamily();
|
|
79
|
+
const res = (await listAgentsHandler(client, {}));
|
|
80
|
+
expect(res.data[0].familyId).toBe('6a344975524b9e2d93406f40');
|
|
81
|
+
expect(res.data[0].variantKey).toBe('a1');
|
|
82
|
+
expect(res.data[1].familyId).toBeNull();
|
|
83
|
+
});
|
|
84
|
+
});
|
|
35
85
|
//# sourceMappingURL=list_agents.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list_agents.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/list_agents.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,UAAU;IACd,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QACvC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE;gBACJ,EAAE,EAAE,EAAE,0BAA0B,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,EAAE;aACjG;SACF,CAAA;IACH,CAAC;CACF;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,MAAM,GAAG,IAAI,UAAU,EAAS,CAAA;QACtC,MAAM,GAAG,GAAG,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAQ,CAAA;QACxD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,MAAM,GAAG,IAAI,UAAU,EAAS,CAAA;QACtC,MAAM,GAAG,GAAG,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAQ,CAAA;QACxD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QACvD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAS,CAAA;QACtC,MAAM,GAAG,GAAG,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAQ,CAAA;QACxD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"list_agents.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/list_agents.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Family MCP tools — manage "one logical agent with many variants".
|
|
3
|
+
*
|
|
4
|
+
* A family holds a shared `base` agent config once; each `variant` stores only
|
|
5
|
+
* its `overrides` (deep-merged over the base when materialized into a real agent).
|
|
6
|
+
* All tools call the MCP namespace `/api/v1/mcp/agent-families`.
|
|
7
|
+
*
|
|
8
|
+
* Write tools (create/update/add/remove/publish/delete/import) require role:
|
|
9
|
+
* owner, admin, or developer (enforced server-side).
|
|
10
|
+
*/
|
|
11
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
12
|
+
import type { BotuyoApiClient } from '../client.js';
|
|
13
|
+
export declare const LIST_AGENT_FAMILIES_TOOL: Tool;
|
|
14
|
+
export declare function listAgentFamiliesHandler(client: BotuyoApiClient, _args: Record<string, unknown>): Promise<any>;
|
|
15
|
+
export declare const GET_AGENT_FAMILY_TOOL: Tool;
|
|
16
|
+
export declare function getAgentFamilyHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
|
|
17
|
+
export declare const CREATE_AGENT_FAMILY_TOOL: Tool;
|
|
18
|
+
export declare function createAgentFamilyHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
|
|
19
|
+
export declare const UPDATE_FAMILY_BASE_TOOL: Tool;
|
|
20
|
+
export declare function updateFamilyBaseHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
|
|
21
|
+
export declare const ADD_FAMILY_VARIANT_TOOL: Tool;
|
|
22
|
+
export declare function addFamilyVariantHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
|
|
23
|
+
export declare const UPDATE_FAMILY_VARIANT_TOOL: Tool;
|
|
24
|
+
export declare function updateFamilyVariantHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
|
|
25
|
+
export declare const REMOVE_FAMILY_VARIANT_TOOL: Tool;
|
|
26
|
+
export declare function removeFamilyVariantHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
|
|
27
|
+
export declare const PUBLISH_AGENT_FAMILY_TOOL: Tool;
|
|
28
|
+
export declare function publishAgentFamilyHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
|
|
29
|
+
export declare const DELETE_AGENT_FAMILY_TOOL: Tool;
|
|
30
|
+
export declare function deleteAgentFamilyHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<{
|
|
31
|
+
error: string;
|
|
32
|
+
} | {
|
|
33
|
+
success: boolean;
|
|
34
|
+
message: string;
|
|
35
|
+
error?: undefined;
|
|
36
|
+
}>;
|
|
37
|
+
export declare const EXPORT_AGENT_FAMILY_TOOL: Tool;
|
|
38
|
+
export declare function exportAgentFamilyHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<{
|
|
39
|
+
success?: boolean;
|
|
40
|
+
data?: {
|
|
41
|
+
familyId?: string;
|
|
42
|
+
family?: {
|
|
43
|
+
slug?: string;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
message?: string;
|
|
47
|
+
savedTo?: string;
|
|
48
|
+
fileSaveError?: string;
|
|
49
|
+
}>;
|
|
50
|
+
export declare const IMPORT_AGENT_FAMILY_TOOL: Tool;
|
|
51
|
+
export declare function importAgentFamilyHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<{
|
|
52
|
+
success: boolean;
|
|
53
|
+
error: string;
|
|
54
|
+
hint: string;
|
|
55
|
+
path?: undefined;
|
|
56
|
+
importedFrom?: undefined;
|
|
57
|
+
} | {
|
|
58
|
+
success: boolean;
|
|
59
|
+
error: string;
|
|
60
|
+
path: string;
|
|
61
|
+
hint?: undefined;
|
|
62
|
+
importedFrom?: undefined;
|
|
63
|
+
} | {
|
|
64
|
+
success: boolean;
|
|
65
|
+
error: string;
|
|
66
|
+
hint?: undefined;
|
|
67
|
+
path?: undefined;
|
|
68
|
+
importedFrom?: undefined;
|
|
69
|
+
} | {
|
|
70
|
+
importedFrom: string;
|
|
71
|
+
success?: undefined;
|
|
72
|
+
error?: undefined;
|
|
73
|
+
hint?: undefined;
|
|
74
|
+
path?: undefined;
|
|
75
|
+
}>;
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Family MCP tools — manage "one logical agent with many variants".
|
|
3
|
+
*
|
|
4
|
+
* A family holds a shared `base` agent config once; each `variant` stores only
|
|
5
|
+
* its `overrides` (deep-merged over the base when materialized into a real agent).
|
|
6
|
+
* All tools call the MCP namespace `/api/v1/mcp/agent-families`.
|
|
7
|
+
*
|
|
8
|
+
* Write tools (create/update/add/remove/publish/delete/import) require role:
|
|
9
|
+
* owner, admin, or developer (enforced server-side).
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
12
|
+
import { join, resolve } from 'path';
|
|
13
|
+
const BASE = '/api/v1/mcp/agent-families';
|
|
14
|
+
const PARTIAL_CONFIG_DESC = 'Partial agent config (only the fields that diverge). Same shape as agentConfig: ' +
|
|
15
|
+
'identity {tone,language,objective,customInstructions}, stages, connections, enabledTools, ' +
|
|
16
|
+
'toolConfigs, channels, widgetConfig, voice {profile,widgetCallEnabled}, channelPrompts, ' +
|
|
17
|
+
'knowledgeDocumentIds, memoryNamespace, etc.';
|
|
18
|
+
const variantProps = {
|
|
19
|
+
key: { type: 'string', description: 'Stable logical id of the variant (immutable handoff target, e.g. "a1").' },
|
|
20
|
+
label: { type: 'string', description: 'Human label shown in the UI (e.g. "A1 (Beginner)").' },
|
|
21
|
+
overrides: { type: 'object', description: PARTIAL_CONFIG_DESC },
|
|
22
|
+
handoffTargets: {
|
|
23
|
+
type: 'array',
|
|
24
|
+
items: { type: 'string' },
|
|
25
|
+
description: 'Sibling variant keys this variant may switch_variant to.'
|
|
26
|
+
},
|
|
27
|
+
order: { type: 'number', description: 'Display/ordering hint.' }
|
|
28
|
+
};
|
|
29
|
+
// ── 1. list_agent_families ────────────────────────────────────────────────────
|
|
30
|
+
export const LIST_AGENT_FAMILIES_TOOL = {
|
|
31
|
+
name: 'list_agent_families',
|
|
32
|
+
description: 'List all agent families (one logical agent = shared base config + variants) for the current tenant.',
|
|
33
|
+
inputSchema: { type: 'object', properties: {} }
|
|
34
|
+
};
|
|
35
|
+
export async function listAgentFamiliesHandler(client, _args) {
|
|
36
|
+
return client.get(BASE);
|
|
37
|
+
}
|
|
38
|
+
// ── 2. get_agent_family ─────────────────────────────────────────────────────
|
|
39
|
+
export const GET_AGENT_FAMILY_TOOL = {
|
|
40
|
+
name: 'get_agent_family',
|
|
41
|
+
description: 'Get a single agent family (shared base + all variants) by id.',
|
|
42
|
+
inputSchema: {
|
|
43
|
+
type: 'object',
|
|
44
|
+
properties: { familyId: { type: 'string', description: 'The agent family id.' } },
|
|
45
|
+
required: ['familyId']
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export async function getAgentFamilyHandler(client, args) {
|
|
49
|
+
return client.get(`${BASE}/${args.familyId}`);
|
|
50
|
+
}
|
|
51
|
+
// ── 3. create_agent_family ──────────────────────────────────────────────────
|
|
52
|
+
export const CREATE_AGENT_FAMILY_TOOL = {
|
|
53
|
+
name: 'create_agent_family',
|
|
54
|
+
description: 'Create a new agent family with a shared base config and an initial set of variants. ' +
|
|
55
|
+
'Each variant is materialized into a real (draft) agent. Subject to the per-plan ' +
|
|
56
|
+
'maxVariantsPerFamily limit. Requires role: owner, admin, or developer.',
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: 'object',
|
|
59
|
+
properties: {
|
|
60
|
+
name: { type: 'string', description: 'Display name of the logical agent (e.g. "Ms. Ellis").' },
|
|
61
|
+
slug: { type: 'string', description: 'URL/identifier slug (e.g. "ms-ellis"); default shared memoryNamespace.' },
|
|
62
|
+
entryVariantKey: { type: 'string', description: 'Which variant owns the public entry. Must match a variant key.' },
|
|
63
|
+
base: { type: 'object', description: `Shared base config inherited by every variant. ${PARTIAL_CONFIG_DESC}` },
|
|
64
|
+
variants: {
|
|
65
|
+
type: 'array',
|
|
66
|
+
description: 'Ordered list of variants. At least one; must include entryVariantKey.',
|
|
67
|
+
items: { type: 'object', properties: variantProps, required: ['key', 'label'] }
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
required: ['name', 'slug', 'entryVariantKey', 'variants']
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
export async function createAgentFamilyHandler(client, args) {
|
|
74
|
+
return client.post(BASE, {
|
|
75
|
+
name: args.name,
|
|
76
|
+
slug: args.slug,
|
|
77
|
+
entryVariantKey: args.entryVariantKey,
|
|
78
|
+
base: args.base ?? {},
|
|
79
|
+
variants: args.variants ?? []
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
// ── 4. update_family_base ───────────────────────────────────────────────────
|
|
83
|
+
export const UPDATE_FAMILY_BASE_TOOL = {
|
|
84
|
+
name: 'update_family_base',
|
|
85
|
+
description: 'Replace the shared base config of a family. Re-materializes EVERY variant (the base is ' +
|
|
86
|
+
'deep-merged under each variant\'s overrides). Requires role: owner, admin, or developer.',
|
|
87
|
+
inputSchema: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {
|
|
90
|
+
familyId: { type: 'string', description: 'The agent family id.' },
|
|
91
|
+
base: { type: 'object', description: `New shared base config. ${PARTIAL_CONFIG_DESC}` }
|
|
92
|
+
},
|
|
93
|
+
required: ['familyId', 'base']
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
export async function updateFamilyBaseHandler(client, args) {
|
|
97
|
+
return client.put(`${BASE}/${args.familyId}/base`, { base: args.base ?? {} });
|
|
98
|
+
}
|
|
99
|
+
// ── 5. add_family_variant ───────────────────────────────────────────────────
|
|
100
|
+
export const ADD_FAMILY_VARIANT_TOOL = {
|
|
101
|
+
name: 'add_family_variant',
|
|
102
|
+
description: 'Add a new variant to a family (materialized into a real draft agent). Subject to the per-plan ' +
|
|
103
|
+
'maxVariantsPerFamily limit. Requires role: owner, admin, or developer.',
|
|
104
|
+
inputSchema: {
|
|
105
|
+
type: 'object',
|
|
106
|
+
properties: { familyId: { type: 'string', description: 'The agent family id.' }, ...variantProps },
|
|
107
|
+
required: ['familyId', 'key', 'label']
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
export async function addFamilyVariantHandler(client, args) {
|
|
111
|
+
return client.post(`${BASE}/${args.familyId}/variants`, {
|
|
112
|
+
key: args.key,
|
|
113
|
+
label: args.label,
|
|
114
|
+
overrides: args.overrides ?? {},
|
|
115
|
+
handoffTargets: args.handoffTargets,
|
|
116
|
+
order: args.order
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
// ── 6. update_family_variant ────────────────────────────────────────────────
|
|
120
|
+
export const UPDATE_FAMILY_VARIANT_TOOL = {
|
|
121
|
+
name: 'update_family_variant',
|
|
122
|
+
description: 'Update a single variant (label/overrides/handoffTargets/order) by its key. The variant key itself ' +
|
|
123
|
+
'is immutable. Re-materializes the variant. Requires role: owner, admin, or developer.',
|
|
124
|
+
inputSchema: {
|
|
125
|
+
type: 'object',
|
|
126
|
+
properties: {
|
|
127
|
+
familyId: { type: 'string', description: 'The agent family id.' },
|
|
128
|
+
variantKey: { type: 'string', description: 'The key of the variant to update.' },
|
|
129
|
+
label: variantProps.label,
|
|
130
|
+
overrides: variantProps.overrides,
|
|
131
|
+
handoffTargets: variantProps.handoffTargets,
|
|
132
|
+
order: variantProps.order
|
|
133
|
+
},
|
|
134
|
+
required: ['familyId', 'variantKey']
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
export async function updateFamilyVariantHandler(client, args) {
|
|
138
|
+
const patch = {};
|
|
139
|
+
if (args.label !== undefined)
|
|
140
|
+
patch.label = args.label;
|
|
141
|
+
if (args.overrides !== undefined)
|
|
142
|
+
patch.overrides = args.overrides;
|
|
143
|
+
if (args.handoffTargets !== undefined)
|
|
144
|
+
patch.handoffTargets = args.handoffTargets;
|
|
145
|
+
if (args.order !== undefined)
|
|
146
|
+
patch.order = args.order;
|
|
147
|
+
return client.put(`${BASE}/${args.familyId}/variants/${args.variantKey}`, patch);
|
|
148
|
+
}
|
|
149
|
+
// ── 7. remove_family_variant ────────────────────────────────────────────────
|
|
150
|
+
export const REMOVE_FAMILY_VARIANT_TOOL = {
|
|
151
|
+
name: 'remove_family_variant',
|
|
152
|
+
description: 'Remove a variant from a family (soft-deletes its materialized agent). Cannot remove the entry ' +
|
|
153
|
+
'variant — change entryVariantKey first. Requires role: owner, admin, or developer.',
|
|
154
|
+
inputSchema: {
|
|
155
|
+
type: 'object',
|
|
156
|
+
properties: {
|
|
157
|
+
familyId: { type: 'string', description: 'The agent family id.' },
|
|
158
|
+
variantKey: { type: 'string', description: 'The key of the variant to remove.' }
|
|
159
|
+
},
|
|
160
|
+
required: ['familyId', 'variantKey']
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
export async function removeFamilyVariantHandler(client, args) {
|
|
164
|
+
return client.delete(`${BASE}/${args.familyId}/variants/${args.variantKey}`);
|
|
165
|
+
}
|
|
166
|
+
// ── 8. publish_agent_family ─────────────────────────────────────────────────
|
|
167
|
+
export const PUBLISH_AGENT_FAMILY_TOOL = {
|
|
168
|
+
name: 'publish_agent_family',
|
|
169
|
+
description: 'Publish a family: marks the family and ALL of its member agents as published/active. ' +
|
|
170
|
+
'Requires role: owner, admin, or developer.',
|
|
171
|
+
inputSchema: {
|
|
172
|
+
type: 'object',
|
|
173
|
+
properties: { familyId: { type: 'string', description: 'The agent family id.' } },
|
|
174
|
+
required: ['familyId']
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
export async function publishAgentFamilyHandler(client, args) {
|
|
178
|
+
return client.put(`${BASE}/${args.familyId}/publish`, {});
|
|
179
|
+
}
|
|
180
|
+
// ── 9. delete_agent_family ──────────────────────────────────────────────────
|
|
181
|
+
export const DELETE_AGENT_FAMILY_TOOL = {
|
|
182
|
+
name: 'delete_agent_family',
|
|
183
|
+
description: 'Delete a family and soft-delete ALL of its member agents. This action is IRREVERSIBLE.\n\n' +
|
|
184
|
+
'⚠️ Requires explicit confirmation: set `confirm` to true AND provide the exact family name in ' +
|
|
185
|
+
'`confirmName`. Requires role: owner, admin, or developer.',
|
|
186
|
+
inputSchema: {
|
|
187
|
+
type: 'object',
|
|
188
|
+
properties: {
|
|
189
|
+
familyId: { type: 'string', description: 'The agent family id.' },
|
|
190
|
+
confirm: { type: 'boolean', description: 'Must be true to confirm deletion.' },
|
|
191
|
+
confirmName: { type: 'string', description: 'The exact family name (safety confirmation).' }
|
|
192
|
+
},
|
|
193
|
+
required: ['familyId', 'confirm', 'confirmName']
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
export async function deleteAgentFamilyHandler(client, args) {
|
|
197
|
+
const { familyId, confirm, confirmName } = args;
|
|
198
|
+
if (!confirm) {
|
|
199
|
+
return { error: 'Deletion not confirmed. Set confirm=true and provide the family name in confirmName to proceed.' };
|
|
200
|
+
}
|
|
201
|
+
if (!confirmName || typeof confirmName !== 'string' || confirmName.trim().length === 0) {
|
|
202
|
+
return { error: 'Safety check failed: provide the exact family name in confirmName to confirm deletion.' };
|
|
203
|
+
}
|
|
204
|
+
const family = (await client.get(`${BASE}/${familyId}`));
|
|
205
|
+
const actualName = family?.data?.name;
|
|
206
|
+
if (!actualName)
|
|
207
|
+
return { error: `Agent family ${familyId} not found.` };
|
|
208
|
+
if (actualName.trim() !== confirmName.trim()) {
|
|
209
|
+
return {
|
|
210
|
+
error: `Name mismatch: you provided "${confirmName}" but the family is named "${actualName}". Provide the exact name to confirm.`
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
const result = await client.delete(`${BASE}/${familyId}`);
|
|
214
|
+
return { success: true, message: `Agent family "${actualName}" (${familyId}) has been deleted.`, ...result };
|
|
215
|
+
}
|
|
216
|
+
// ── 10. export_agent_family ─────────────────────────────────────────────────
|
|
217
|
+
export const EXPORT_AGENT_FAMILY_TOOL = {
|
|
218
|
+
name: 'export_agent_family',
|
|
219
|
+
description: 'Export a portable family JSON (name, slug, entryVariantKey, base, variants — internal fields stripped), ' +
|
|
220
|
+
'ready to edit and re-import. Auto-saves to ./agent-families/{slug}.json (override with savePath). ' +
|
|
221
|
+
'Use import_agent_family to apply edits (full replace).',
|
|
222
|
+
inputSchema: {
|
|
223
|
+
type: 'object',
|
|
224
|
+
properties: {
|
|
225
|
+
familyId: { type: 'string', description: 'The agent family id.' },
|
|
226
|
+
savePath: { type: 'string', description: 'Optional directory for the saved JSON. Default: ./agent-families/' }
|
|
227
|
+
},
|
|
228
|
+
required: ['familyId']
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
export async function exportAgentFamilyHandler(client, args) {
|
|
232
|
+
const familyId = args.familyId;
|
|
233
|
+
const savePath = args.savePath || './agent-families';
|
|
234
|
+
const result = (await client.get(`${BASE}/${familyId}/export`));
|
|
235
|
+
if (result?.success && result?.data?.family) {
|
|
236
|
+
try {
|
|
237
|
+
const family = result.data.family;
|
|
238
|
+
const sanitized = (family.slug || familyId)
|
|
239
|
+
.replace(/[^\w\s-]/g, '')
|
|
240
|
+
.replace(/\s+/g, '_')
|
|
241
|
+
.toLowerCase()
|
|
242
|
+
.substring(0, 50);
|
|
243
|
+
const dir = resolve(savePath);
|
|
244
|
+
mkdirSync(dir, { recursive: true });
|
|
245
|
+
const filePath = join(dir, `${sanitized}.json`);
|
|
246
|
+
const payload = { _exportedAt: new Date().toISOString(), _familyId: result.data.familyId, ...family };
|
|
247
|
+
writeFileSync(filePath, JSON.stringify(payload, null, 2), 'utf-8');
|
|
248
|
+
result.savedTo = filePath;
|
|
249
|
+
result.message = `${result.message || ''} File saved to: ${filePath}`;
|
|
250
|
+
}
|
|
251
|
+
catch (err) {
|
|
252
|
+
result.fileSaveError = `Could not save file: ${err instanceof Error ? err.message : String(err)}`;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return result;
|
|
256
|
+
}
|
|
257
|
+
// ── 11. import_agent_family ─────────────────────────────────────────────────
|
|
258
|
+
export const IMPORT_AGENT_FAMILY_TOOL = {
|
|
259
|
+
name: 'import_agent_family',
|
|
260
|
+
description: 'Import/replace a family\'s base + variant set from a local JSON file or an inline object (FULL REPLACE).\n\n' +
|
|
261
|
+
'Reconciles members: surviving variant keys keep their materialized agent, new keys are created, ' +
|
|
262
|
+
'dropped keys are soft-deleted. Subject to the per-plan maxVariantsPerFamily limit.\n\n' +
|
|
263
|
+
'Provide the family via `filePath` (preferred — a file from export_agent_family) or inline `family`. ' +
|
|
264
|
+
'If both are given, filePath wins. Requires role: owner, admin, or developer.',
|
|
265
|
+
inputSchema: {
|
|
266
|
+
type: 'object',
|
|
267
|
+
properties: {
|
|
268
|
+
familyId: {
|
|
269
|
+
type: 'string',
|
|
270
|
+
description: 'The family id to overwrite. If omitted and the file contains _familyId, that is used.'
|
|
271
|
+
},
|
|
272
|
+
filePath: { type: 'string', description: 'Path to a local family JSON file (e.g. ./agent-families/ms-ellis.json).' },
|
|
273
|
+
family: {
|
|
274
|
+
type: 'object',
|
|
275
|
+
description: 'Inline family payload (fallback if filePath is omitted).',
|
|
276
|
+
properties: {
|
|
277
|
+
name: { type: 'string' },
|
|
278
|
+
slug: { type: 'string' },
|
|
279
|
+
entryVariantKey: { type: 'string', description: 'Must match one of the variant keys.' },
|
|
280
|
+
base: { type: 'object', description: PARTIAL_CONFIG_DESC },
|
|
281
|
+
variants: { type: 'array', items: { type: 'object', properties: variantProps, required: ['key', 'label'] } }
|
|
282
|
+
},
|
|
283
|
+
required: ['entryVariantKey', 'variants']
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
export async function importAgentFamilyHandler(client, args) {
|
|
289
|
+
let familyId = args.familyId;
|
|
290
|
+
let family = args.family;
|
|
291
|
+
const filePath = args.filePath;
|
|
292
|
+
if (filePath) {
|
|
293
|
+
const resolvedPath = resolve(filePath);
|
|
294
|
+
if (!existsSync(resolvedPath)) {
|
|
295
|
+
return {
|
|
296
|
+
success: false,
|
|
297
|
+
error: `File not found: ${resolvedPath}`,
|
|
298
|
+
hint: 'Use export_agent_family first to create a local file, or check the path.'
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
try {
|
|
302
|
+
const parsed = JSON.parse(readFileSync(resolvedPath, 'utf-8'));
|
|
303
|
+
const { _exportedAt, _familyId, ...content } = parsed;
|
|
304
|
+
void _exportedAt;
|
|
305
|
+
if (!familyId && _familyId)
|
|
306
|
+
familyId = _familyId;
|
|
307
|
+
family = content;
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
return { success: false, error: `Failed to read/parse file: ${err instanceof Error ? err.message : String(err)}`, path: resolvedPath };
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (!familyId) {
|
|
314
|
+
return {
|
|
315
|
+
success: false,
|
|
316
|
+
error: 'familyId is required. Provide it explicitly or use a file exported with export_agent_family (contains _familyId).'
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
if (!family) {
|
|
320
|
+
return { success: false, error: 'No family payload. Use filePath to point to a local JSON file, or provide family inline.' };
|
|
321
|
+
}
|
|
322
|
+
const result = await client.put(`${BASE}/${familyId}/import`, family);
|
|
323
|
+
return { ...result, importedFrom: filePath ? resolve(filePath) : 'inline' };
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=agent_families.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent_families.js","sourceRoot":"","sources":["../../src/tools/agent_families.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -31,6 +31,7 @@ import { LIST_AVATARS_TOOL, listAvatarsHandler, SELECT_AVATAR_TOOL, selectAvatar
|
|
|
31
31
|
import { UPLOAD_AGENT_MEDIA_TOOL, uploadAgentMediaHandler } from './upload_agent_media.js';
|
|
32
32
|
import { LIST_AGENT_VERSIONS_TOOL, listAgentVersionsHandler } from './list_agent_versions.js';
|
|
33
33
|
import { RESTORE_AGENT_VERSION_TOOL, restoreAgentVersionHandler } from './restore_agent_version.js';
|
|
34
|
+
import { LIST_AGENT_FAMILIES_TOOL, listAgentFamiliesHandler, GET_AGENT_FAMILY_TOOL, getAgentFamilyHandler, CREATE_AGENT_FAMILY_TOOL, createAgentFamilyHandler, UPDATE_FAMILY_BASE_TOOL, updateFamilyBaseHandler, ADD_FAMILY_VARIANT_TOOL, addFamilyVariantHandler, UPDATE_FAMILY_VARIANT_TOOL, updateFamilyVariantHandler, REMOVE_FAMILY_VARIANT_TOOL, removeFamilyVariantHandler, PUBLISH_AGENT_FAMILY_TOOL, publishAgentFamilyHandler, DELETE_AGENT_FAMILY_TOOL, deleteAgentFamilyHandler, EXPORT_AGENT_FAMILY_TOOL, exportAgentFamilyHandler, IMPORT_AGENT_FAMILY_TOOL, importAgentFamilyHandler } from './agent_families.js';
|
|
34
35
|
export const ALL_TOOLS = [
|
|
35
36
|
LIST_AGENTS_TOOL,
|
|
36
37
|
GET_AGENT_TOOL,
|
|
@@ -62,6 +63,17 @@ export const ALL_TOOLS = [
|
|
|
62
63
|
UPLOAD_AGENT_MEDIA_TOOL,
|
|
63
64
|
LIST_AGENT_VERSIONS_TOOL,
|
|
64
65
|
RESTORE_AGENT_VERSION_TOOL,
|
|
66
|
+
LIST_AGENT_FAMILIES_TOOL,
|
|
67
|
+
GET_AGENT_FAMILY_TOOL,
|
|
68
|
+
CREATE_AGENT_FAMILY_TOOL,
|
|
69
|
+
UPDATE_FAMILY_BASE_TOOL,
|
|
70
|
+
ADD_FAMILY_VARIANT_TOOL,
|
|
71
|
+
UPDATE_FAMILY_VARIANT_TOOL,
|
|
72
|
+
REMOVE_FAMILY_VARIANT_TOOL,
|
|
73
|
+
PUBLISH_AGENT_FAMILY_TOOL,
|
|
74
|
+
DELETE_AGENT_FAMILY_TOOL,
|
|
75
|
+
EXPORT_AGENT_FAMILY_TOOL,
|
|
76
|
+
IMPORT_AGENT_FAMILY_TOOL,
|
|
65
77
|
];
|
|
66
78
|
export const TOOL_HANDLERS = {
|
|
67
79
|
list_agents: listAgentsHandler,
|
|
@@ -94,5 +106,16 @@ export const TOOL_HANDLERS = {
|
|
|
94
106
|
upload_agent_media: uploadAgentMediaHandler,
|
|
95
107
|
list_agent_versions: listAgentVersionsHandler,
|
|
96
108
|
restore_agent_version: restoreAgentVersionHandler,
|
|
109
|
+
list_agent_families: listAgentFamiliesHandler,
|
|
110
|
+
get_agent_family: getAgentFamilyHandler,
|
|
111
|
+
create_agent_family: createAgentFamilyHandler,
|
|
112
|
+
update_family_base: updateFamilyBaseHandler,
|
|
113
|
+
add_family_variant: addFamilyVariantHandler,
|
|
114
|
+
update_family_variant: updateFamilyVariantHandler,
|
|
115
|
+
remove_family_variant: removeFamilyVariantHandler,
|
|
116
|
+
publish_agent_family: publishAgentFamilyHandler,
|
|
117
|
+
delete_agent_family: deleteAgentFamilyHandler,
|
|
118
|
+
export_agent_family: exportAgentFamilyHandler,
|
|
119
|
+
import_agent_family: importAgentFamilyHandler,
|
|
97
120
|
};
|
|
98
121
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { shortId } from '../format.js';
|
|
2
2
|
export const LIST_AGENTS_TOOL = {
|
|
3
3
|
name: 'list_agents',
|
|
4
|
-
description: 'Lists all agents for the authenticated tenant. Returns a name-first text summary plus structured data (full id, shortId, name, description, status, enabled tools count).',
|
|
4
|
+
description: 'Lists all agents for the authenticated tenant. Returns a name-first text summary (AgentFamily variants are tagged with their variantKey) plus structured data (full id, shortId, name, description, status, enabled tools count, familyId, variantKey).',
|
|
5
5
|
inputSchema: { type: 'object', properties: {}, required: [] }
|
|
6
6
|
};
|
|
7
7
|
export async function listAgentsHandler(client, _args) {
|
|
@@ -10,7 +10,10 @@ export async function listAgentsHandler(client, _args) {
|
|
|
10
10
|
const data = agents.map((a) => ({ ...a, shortId: shortId(a.id) }));
|
|
11
11
|
const text = data.length
|
|
12
12
|
? data
|
|
13
|
-
.map((a, i) =>
|
|
13
|
+
.map((a, i) => {
|
|
14
|
+
const family = a.familyId ? ` · family:${a.variantKey ?? shortId(a.familyId)}` : '';
|
|
15
|
+
return `${i + 1}. ${a.name} (${a.shortId}) [${a.status}]${family} · ${a.enabledToolsCount ?? 0} tools`;
|
|
16
|
+
})
|
|
14
17
|
.join('\n')
|
|
15
18
|
: 'No agents found.';
|
|
16
19
|
return { success: res?.success ?? true, count: data.length, data, text };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list_agents.js","sourceRoot":"","sources":["../../src/tools/list_agents.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"list_agents.js","sourceRoot":"","sources":["../../src/tools/list_agents.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,yPAAyP;IACtQ,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;CAC9D,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAuB,EAAE,KAA8B;IAC7F,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAQ,CAAA;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;QACtB,CAAC,CAAC,IAAI;aACD,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACpF,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,IAAI,MAAM,OAAO,CAAC,CAAC,iBAAiB,IAAI,CAAC,QAAQ,CAAA;QAC3G,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,kBAAkB,CAAA;IACtB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAC1E,CAAC"}
|