@botuyo/mcp 0.4.1 → 0.6.0
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/README.md +19 -1
- package/dist/tools/__tests__/agent_families.spec.js +84 -8
- package/dist/tools/__tests__/agent_families.spec.js.map +1 -1
- package/dist/tools/__tests__/audit_agent_family.spec.d.ts +1 -0
- package/dist/tools/__tests__/audit_agent_family.spec.js +109 -0
- package/dist/tools/__tests__/audit_agent_family.spec.js.map +1 -0
- package/dist/tools/__tests__/export_agent_json.spec.js +66 -22
- package/dist/tools/__tests__/export_agent_json.spec.js.map +1 -1
- package/dist/tools/__tests__/import_agent_json.spec.js +28 -2
- package/dist/tools/__tests__/import_agent_json.spec.js.map +1 -1
- package/dist/tools/__tests__/update_agent.spec.js +6 -0
- package/dist/tools/__tests__/update_agent.spec.js.map +1 -1
- package/dist/tools/agent_families.d.ts +2 -1
- package/dist/tools/agent_families.js +88 -30
- package/dist/tools/agent_families.js.map +1 -1
- package/dist/tools/audit_agent_family.d.ts +18 -0
- package/dist/tools/audit_agent_family.js +136 -0
- package/dist/tools/audit_agent_family.js.map +1 -0
- package/dist/tools/example_agent.d.ts +2 -0
- package/dist/tools/example_agent.js +4 -0
- package/dist/tools/example_agent.js.map +1 -1
- package/dist/tools/export_agent_json.js +17 -1
- package/dist/tools/export_agent_json.js.map +1 -1
- package/dist/tools/import_agent_json.js +40 -4
- package/dist/tools/import_agent_json.js.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/update_agent.js +4 -0
- package/dist/tools/update_agent.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ The server resolves your JWT from `BOTUYO_TOKEN`, falling back to `~/.botuyo/cre
|
|
|
74
74
|
|
|
75
75
|
## Available tools
|
|
76
76
|
|
|
77
|
-
The server exposes **
|
|
77
|
+
The server exposes **41 tools**. Read tools (`list_*`, `get_*`, `export_*`) need `viewer+`; write/publish tools need `developer+` (see [Roles](#roles)).
|
|
78
78
|
|
|
79
79
|
### Agents
|
|
80
80
|
|
|
@@ -89,6 +89,24 @@ The server exposes **30 tools**. Read tools (`list_*`, `get_*`, `export_*`) need
|
|
|
89
89
|
| `publish_agent` | Publish or unpublish an agent (live vs draft) |
|
|
90
90
|
| `example_agent` | Return a fully documented example agent config (read-only reference) |
|
|
91
91
|
|
|
92
|
+
### Agent families
|
|
93
|
+
|
|
94
|
+
A **family** is one logical agent with a shared `base` config plus multiple `variants` (each variant stores only its overrides and is materialized into a real agent) — ideal for a single assistant offered in several levels or flavors.
|
|
95
|
+
|
|
96
|
+
| Tool | Description |
|
|
97
|
+
|---|---|
|
|
98
|
+
| `list_agent_families` | List agent families in the tenant |
|
|
99
|
+
| `get_agent_family` | Get a family's shared base + all its variants |
|
|
100
|
+
| `create_agent_family` | Create a family with a shared base and an initial set of variants |
|
|
101
|
+
| `update_family_base` | Replace the shared base (re-materializes every variant) |
|
|
102
|
+
| `add_family_variant` | Add a new variant (materialized into a draft agent) |
|
|
103
|
+
| `update_family_variant` | Update a variant's label / overrides / handoff targets / order |
|
|
104
|
+
| `remove_family_variant` | Remove a variant (cannot remove the entry variant) |
|
|
105
|
+
| `publish_agent_family` | Publish the family and all its member agents |
|
|
106
|
+
| `delete_agent_family` | Delete a family and all its agents (irreversible; requires confirmation) |
|
|
107
|
+
| `export_agent_family` | Export a portable family JSON (base + variants) to a local file |
|
|
108
|
+
| `import_agent_family` | Replace a family's base + variants from JSON (full replace) |
|
|
109
|
+
|
|
92
110
|
### Conversation flow
|
|
93
111
|
|
|
94
112
|
| Tool | Description |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
-
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs';
|
|
2
|
+
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs';
|
|
3
3
|
import { tmpdir } from 'os';
|
|
4
4
|
import { join } from 'path';
|
|
5
5
|
import { listAgentFamiliesHandler, getAgentFamilyHandler, createAgentFamilyHandler, updateFamilyBaseHandler, addFamilyVariantHandler, updateFamilyVariantHandler, removeFamilyVariantHandler, publishAgentFamilyHandler, deleteAgentFamilyHandler, exportAgentFamilyHandler, importAgentFamilyHandler } from '../agent_families.js';
|
|
@@ -150,7 +150,7 @@ describe('agent family tools — publish / delete', () => {
|
|
|
150
150
|
});
|
|
151
151
|
});
|
|
152
152
|
describe('agent family tools — export / import', () => {
|
|
153
|
-
it('export GETs /export and saves a
|
|
153
|
+
it('export GETs /export and saves a folder (family.json + variants/*.json)', async () => {
|
|
154
154
|
const dir = makeTmpDir();
|
|
155
155
|
const client = new MockClient({
|
|
156
156
|
[`${BASE}/fam1/export`]: {
|
|
@@ -161,18 +161,69 @@ describe('agent family tools — export / import', () => {
|
|
|
161
161
|
name: 'Ms. Ellis',
|
|
162
162
|
slug: 'ms-ellis',
|
|
163
163
|
entryVariantKey: 'nivelador',
|
|
164
|
-
base: {},
|
|
165
|
-
variants: [
|
|
164
|
+
base: { identity: { language: 'es' } },
|
|
165
|
+
variants: [
|
|
166
|
+
{ key: 'nivelador', label: 'Nivelador', overrides: {} },
|
|
167
|
+
{ key: 'a1', label: 'A1', overrides: { identity: { tone: 'x' } } }
|
|
168
|
+
]
|
|
166
169
|
}
|
|
167
170
|
}
|
|
168
171
|
}
|
|
169
172
|
});
|
|
170
173
|
const res = (await exportAgentFamilyHandler(client, { familyId: 'fam1', savePath: dir }));
|
|
171
174
|
expect(client.calls[0]).toEqual({ method: 'get', path: `${BASE}/fam1/export` });
|
|
172
|
-
|
|
173
|
-
const
|
|
174
|
-
expect(
|
|
175
|
-
|
|
175
|
+
// saves a per-family FOLDER (named after the slug), not a single giant file
|
|
176
|
+
const famDir = join(dir, 'ms-ellis');
|
|
177
|
+
expect(res.savedTo).toBe(famDir);
|
|
178
|
+
// family.json holds metadata + base, but NOT the variants array
|
|
179
|
+
const familyJson = JSON.parse(readFileSync(join(famDir, 'family.json'), 'utf-8'));
|
|
180
|
+
// versioned _meta envelope (replaces the flat _exportedAt/_familyId fields)
|
|
181
|
+
expect(familyJson._meta).toMatchObject({ schema: 'botuyo.agent/v1', familyId: 'fam1', slug: 'ms-ellis' });
|
|
182
|
+
expect(typeof familyJson._meta.exportedAt).toBe('string');
|
|
183
|
+
expect(familyJson._familyId).toBeUndefined();
|
|
184
|
+
expect(familyJson._exportedAt).toBeUndefined();
|
|
185
|
+
expect(familyJson.entryVariantKey).toBe('nivelador');
|
|
186
|
+
expect(familyJson.base).toEqual({ identity: { language: 'es' } });
|
|
187
|
+
expect(familyJson.variants).toBeUndefined();
|
|
188
|
+
// one readable file per variant under variants/
|
|
189
|
+
const nivelador = JSON.parse(readFileSync(join(famDir, 'variants', 'nivelador.json'), 'utf-8'));
|
|
190
|
+
expect(nivelador).toEqual({ key: 'nivelador', label: 'Nivelador', overrides: {} });
|
|
191
|
+
const a1 = JSON.parse(readFileSync(join(famDir, 'variants', 'a1.json'), 'utf-8'));
|
|
192
|
+
expect(a1.overrides.identity.tone).toBe('x');
|
|
193
|
+
});
|
|
194
|
+
it('import (folder) reassembles variants ordered by `order`, not by filename', async () => {
|
|
195
|
+
const dir = makeTmpDir();
|
|
196
|
+
const famDir = join(dir, 'ordered');
|
|
197
|
+
mkdirSync(join(famDir, 'variants'), { recursive: true });
|
|
198
|
+
writeFileSync(join(famDir, 'family.json'), JSON.stringify({ _meta: { schema: 'botuyo.agent/v1', familyId: 'fam-ord', slug: 'ordered' }, entryVariantKey: 'first', base: {} }), 'utf-8');
|
|
199
|
+
// filenames sort to [entry, first, mid] but `order` is first(0) → mid(1) → entry(2)
|
|
200
|
+
writeFileSync(join(famDir, 'variants', 'entry.json'), JSON.stringify({ key: 'entry', label: 'E', overrides: {}, order: 2 }), 'utf-8');
|
|
201
|
+
writeFileSync(join(famDir, 'variants', 'first.json'), JSON.stringify({ key: 'first', label: 'F', overrides: {}, order: 0 }), 'utf-8');
|
|
202
|
+
writeFileSync(join(famDir, 'variants', 'mid.json'), JSON.stringify({ key: 'mid', label: 'M', overrides: {}, order: 1 }), 'utf-8');
|
|
203
|
+
const client = new MockClient();
|
|
204
|
+
await importAgentFamilyHandler(client, { filePath: famDir });
|
|
205
|
+
const payload = client.calls[0].payload;
|
|
206
|
+
expect(payload.variants.map((v) => v.key)).toEqual(['first', 'mid', 'entry']);
|
|
207
|
+
});
|
|
208
|
+
it('import (folder) derives familyId from the _meta envelope and strips _meta', async () => {
|
|
209
|
+
const dir = makeTmpDir();
|
|
210
|
+
const famDir = join(dir, 'meta-fam');
|
|
211
|
+
mkdirSync(join(famDir, 'variants'), { recursive: true });
|
|
212
|
+
writeFileSync(join(famDir, 'family.json'), JSON.stringify({
|
|
213
|
+
_meta: { schema: 'botuyo.agent/v1', familyId: 'fam-meta', slug: 'meta-fam', exportedAt: '2026-06-21T00:00:00.000Z' },
|
|
214
|
+
name: 'Meta',
|
|
215
|
+
slug: 'meta-fam',
|
|
216
|
+
entryVariantKey: 'k',
|
|
217
|
+
base: {}
|
|
218
|
+
}), 'utf-8');
|
|
219
|
+
writeFileSync(join(famDir, 'variants', 'k.json'), JSON.stringify({ key: 'k', label: 'K', overrides: {}, order: 0 }), 'utf-8');
|
|
220
|
+
const client = new MockClient();
|
|
221
|
+
await importAgentFamilyHandler(client, { filePath: famDir });
|
|
222
|
+
expect(client.calls[0].path).toBe(`${BASE}/fam-meta/import`);
|
|
223
|
+
const payload = client.calls[0].payload;
|
|
224
|
+
expect(payload._meta).toBeUndefined();
|
|
225
|
+
expect(payload.entryVariantKey).toBe('k');
|
|
226
|
+
expect(payload.variants).toHaveLength(1);
|
|
176
227
|
});
|
|
177
228
|
it('import (inline) PUTs the family to /import', async () => {
|
|
178
229
|
const client = new MockClient();
|
|
@@ -206,6 +257,31 @@ describe('agent family tools — export / import', () => {
|
|
|
206
257
|
expect(client.calls[0].payload.entryVariantKey).toBe('nivelador');
|
|
207
258
|
expect(res.importedFrom).toBe(file);
|
|
208
259
|
});
|
|
260
|
+
it('import (folder) reassembles family.json + variants/*.json into one payload', async () => {
|
|
261
|
+
const dir = makeTmpDir();
|
|
262
|
+
const famDir = join(dir, 'ms-ellis');
|
|
263
|
+
mkdirSync(join(famDir, 'variants'), { recursive: true });
|
|
264
|
+
writeFileSync(join(famDir, 'family.json'), JSON.stringify({
|
|
265
|
+
_exportedAt: '2026-06-20T00:00:00.000Z',
|
|
266
|
+
_familyId: 'fam-from-dir',
|
|
267
|
+
name: 'Ms. Ellis',
|
|
268
|
+
slug: 'ms-ellis',
|
|
269
|
+
entryVariantKey: 'nivelador',
|
|
270
|
+
base: {}
|
|
271
|
+
}), 'utf-8');
|
|
272
|
+
writeFileSync(join(famDir, 'variants', 'nivelador.json'), JSON.stringify({ key: 'nivelador', label: 'N', overrides: {} }), 'utf-8');
|
|
273
|
+
writeFileSync(join(famDir, 'variants', 'a1.json'), JSON.stringify({ key: 'a1', label: 'A1', overrides: {} }), 'utf-8');
|
|
274
|
+
const client = new MockClient();
|
|
275
|
+
const res = (await importAgentFamilyHandler(client, { filePath: famDir }));
|
|
276
|
+
expect(client.calls[0].path).toBe(`${BASE}/fam-from-dir/import`);
|
|
277
|
+
const payload = client.calls[0].payload;
|
|
278
|
+
expect(payload._familyId).toBeUndefined();
|
|
279
|
+
expect(payload._exportedAt).toBeUndefined();
|
|
280
|
+
expect(payload.entryVariantKey).toBe('nivelador');
|
|
281
|
+
expect(payload.variants).toHaveLength(2);
|
|
282
|
+
expect(payload.variants.map((v) => v.key).sort()).toEqual(['a1', 'nivelador']);
|
|
283
|
+
expect(res.importedFrom).toBe(famDir);
|
|
284
|
+
});
|
|
209
285
|
it('import errors when neither familyId nor _familyId is available', async () => {
|
|
210
286
|
const client = new MockClient();
|
|
211
287
|
const res = (await importAgentFamilyHandler(client, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_families.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/agent_families.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent_families.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/agent_families.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { auditAgentFamilyHandler } from '../audit_agent_family.js';
|
|
3
|
+
/** MockClient that returns a canned response per path and records the paths hit. */
|
|
4
|
+
class MockClient {
|
|
5
|
+
responses;
|
|
6
|
+
paths = [];
|
|
7
|
+
constructor(responses) {
|
|
8
|
+
this.responses = responses;
|
|
9
|
+
}
|
|
10
|
+
async get(path) {
|
|
11
|
+
this.paths.push(path);
|
|
12
|
+
return this.responses[path] ?? { success: true, data: null };
|
|
13
|
+
}
|
|
14
|
+
async post() {
|
|
15
|
+
return { success: true };
|
|
16
|
+
}
|
|
17
|
+
async put() {
|
|
18
|
+
return { success: true };
|
|
19
|
+
}
|
|
20
|
+
async delete() {
|
|
21
|
+
return { success: true };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const familyWithIssues = {
|
|
25
|
+
_id: 'fam1',
|
|
26
|
+
slug: 'demo',
|
|
27
|
+
name: 'Demo',
|
|
28
|
+
entryVariantKey: 'default',
|
|
29
|
+
base: {},
|
|
30
|
+
variants: [
|
|
31
|
+
{
|
|
32
|
+
key: 'default',
|
|
33
|
+
label: 'Default',
|
|
34
|
+
overrides: {
|
|
35
|
+
voice: { profile: 'Voz Inexistente' }, // invalid → error
|
|
36
|
+
identity: { customInstructions: 'x'.repeat(2500) }, // > 2000 → warning
|
|
37
|
+
model: 'gemini-2.0-flash', // deprecated → warning
|
|
38
|
+
widgetConfig: {
|
|
39
|
+
avatarUrl: 'https://cdn.example.com/a.png', // ok
|
|
40
|
+
avatar2dAnimations: { happy: 'agents/emotions/x.png' } // not a URL → warning
|
|
41
|
+
}
|
|
42
|
+
// no memoryNamespace + single variant → info
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
};
|
|
47
|
+
describe('audit_agent_family', () => {
|
|
48
|
+
it('flags invalid voice, prompt truncation, deprecated model, non-URL avatar, and memoryNamespace default', async () => {
|
|
49
|
+
const client = new MockClient({ '/api/v1/mcp/agent-families/fam1': { success: true, data: familyWithIssues } });
|
|
50
|
+
const res = (await auditAgentFamilyHandler(client, { familyId: 'fam1' }));
|
|
51
|
+
expect(client.paths).toContain('/api/v1/mcp/agent-families/fam1');
|
|
52
|
+
const codes = res.reports[0].issues.map((i) => i.code);
|
|
53
|
+
expect(codes).toContain('invalid_voice');
|
|
54
|
+
expect(codes).toContain('prompt_truncated');
|
|
55
|
+
expect(codes).toContain('deprecated_model');
|
|
56
|
+
expect(codes).toContain('non_url_avatar');
|
|
57
|
+
expect(codes).toContain('memory_default_slug');
|
|
58
|
+
expect(res.totals.errors).toBeGreaterThanOrEqual(1);
|
|
59
|
+
});
|
|
60
|
+
it('flags a valid-but-non-canonical voice (display name) as info, not error', async () => {
|
|
61
|
+
const fam = {
|
|
62
|
+
_id: 'f3',
|
|
63
|
+
slug: 'hilton',
|
|
64
|
+
name: 'Hilton',
|
|
65
|
+
entryVariantKey: 'default',
|
|
66
|
+
base: { memoryNamespace: 'hilton' },
|
|
67
|
+
variants: [{ key: 'default', label: 'D', overrides: { voice: { profile: 'Profesional Femenina' } } }]
|
|
68
|
+
};
|
|
69
|
+
const client = new MockClient({ '/api/v1/mcp/agent-families/f3': { success: true, data: fam } });
|
|
70
|
+
const res = (await auditAgentFamilyHandler(client, { familyId: 'f3' }));
|
|
71
|
+
const codes = res.reports[0].issues.map((i) => i.code);
|
|
72
|
+
expect(codes).toContain('noncanonical_voice');
|
|
73
|
+
expect(codes).not.toContain('invalid_voice');
|
|
74
|
+
});
|
|
75
|
+
it('reports zero issues for a clean family (canonical voice id, short prompt, URL avatar, memoryNamespace set)', async () => {
|
|
76
|
+
const clean = {
|
|
77
|
+
_id: 'f2',
|
|
78
|
+
slug: 'clean',
|
|
79
|
+
name: 'Clean',
|
|
80
|
+
entryVariantKey: 'default',
|
|
81
|
+
base: { memoryNamespace: 'clean' },
|
|
82
|
+
variants: [
|
|
83
|
+
{
|
|
84
|
+
key: 'default',
|
|
85
|
+
label: 'D',
|
|
86
|
+
overrides: {
|
|
87
|
+
voice: { profile: 'kore' },
|
|
88
|
+
identity: { customInstructions: 'short' },
|
|
89
|
+
widgetConfig: { avatarUrl: 'https://cdn.example.com/a.png' }
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
};
|
|
94
|
+
const client = new MockClient({ '/api/v1/mcp/agent-families/f2': { success: true, data: clean } });
|
|
95
|
+
const res = (await auditAgentFamilyHandler(client, { familyId: 'f2' }));
|
|
96
|
+
expect(res.reports[0].issues).toHaveLength(0);
|
|
97
|
+
});
|
|
98
|
+
it('audits every family in the tenant when familyId is omitted', async () => {
|
|
99
|
+
const client = new MockClient({
|
|
100
|
+
'/api/v1/mcp/agent-families': { success: true, data: [{ _id: 'fam1' }] },
|
|
101
|
+
'/api/v1/mcp/agent-families/fam1': { success: true, data: familyWithIssues }
|
|
102
|
+
});
|
|
103
|
+
const res = (await auditAgentFamilyHandler(client, {}));
|
|
104
|
+
expect(client.paths).toContain('/api/v1/mcp/agent-families');
|
|
105
|
+
expect(client.paths).toContain('/api/v1/mcp/agent-families/fam1');
|
|
106
|
+
expect(res.audited).toBe(1);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=audit_agent_family.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit_agent_family.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/audit_agent_family.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,74 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { existsSync, mkdtempSync, readFileSync, rmSync } from 'fs';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
2
5
|
import { exportAgentJsonHandler } from '../export_agent_json.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
class MockClient {
|
|
7
|
+
responses;
|
|
8
|
+
paths = [];
|
|
9
|
+
constructor(responses = {}) {
|
|
10
|
+
this.responses = responses;
|
|
11
|
+
}
|
|
9
12
|
async get(path) {
|
|
10
|
-
|
|
11
|
-
return {
|
|
12
|
-
success: true,
|
|
13
|
-
data: {
|
|
14
|
-
agentId: 'a1',
|
|
15
|
-
apiKey: 'key',
|
|
16
|
-
agentConfig: { name: 'Test Bot' }
|
|
17
|
-
}
|
|
18
|
-
};
|
|
13
|
+
this.paths.push(path);
|
|
14
|
+
return this.responses[path] ?? { success: true, data: {} };
|
|
19
15
|
}
|
|
20
16
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
const tmpDirs = [];
|
|
18
|
+
function makeTmpDir() {
|
|
19
|
+
const d = mkdtempSync(join(tmpdir(), 'exp-'));
|
|
20
|
+
tmpDirs.push(d);
|
|
21
|
+
return d;
|
|
22
|
+
}
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
while (tmpDirs.length)
|
|
25
|
+
rmSync(tmpDirs.pop(), { recursive: true, force: true });
|
|
26
|
+
});
|
|
27
|
+
describe('exportAgentJsonHandler — unified (everything is a family)', () => {
|
|
28
|
+
it('delegates to the family export (uniform folder) when the agent belongs to a family', async () => {
|
|
29
|
+
const dir = makeTmpDir();
|
|
30
|
+
const client = new MockClient({
|
|
31
|
+
'/api/v1/mcp/agents/a1': { success: true, data: { familyId: 'fam1' } },
|
|
32
|
+
'/api/v1/mcp/agent-families/fam1/export': {
|
|
33
|
+
success: true,
|
|
34
|
+
data: {
|
|
35
|
+
familyId: 'fam1',
|
|
36
|
+
family: {
|
|
37
|
+
name: 'Bot',
|
|
38
|
+
slug: 'bot',
|
|
39
|
+
entryVariantKey: 'default',
|
|
40
|
+
base: {},
|
|
41
|
+
variants: [{ key: 'default', label: 'Bot', overrides: {}, order: 0 }]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
const res = (await exportAgentJsonHandler(client, { agentId: 'a1', savePath: dir }));
|
|
47
|
+
// resolves agentId → familyId, then exports the whole logical agent as a folder
|
|
48
|
+
expect(client.paths).toContain('/api/v1/mcp/agents/a1');
|
|
49
|
+
expect(client.paths).toContain('/api/v1/mcp/agent-families/fam1/export');
|
|
50
|
+
const famDir = join(dir, 'bot');
|
|
51
|
+
expect(res.savedTo).toBe(famDir);
|
|
52
|
+
expect(existsSync(join(famDir, 'family.json'))).toBe(true);
|
|
53
|
+
// simple agent = exactly one variant file
|
|
54
|
+
expect(existsSync(join(famDir, 'variants', 'default.json'))).toBe(true);
|
|
55
|
+
});
|
|
56
|
+
it('falls back to the legacy single-file export for a standalone agent (no familyId)', async () => {
|
|
57
|
+
const dir = makeTmpDir();
|
|
58
|
+
const client = new MockClient({
|
|
59
|
+
'/api/v1/mcp/agents/a1': { success: true, data: { familyId: null } },
|
|
60
|
+
'/api/v1/mcp/agents/a1/export': {
|
|
61
|
+
success: true,
|
|
62
|
+
data: { agentId: 'a1', apiKey: 'key', agentConfig: { name: 'Test Bot' } }
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
const res = (await exportAgentJsonHandler(client, { agentId: 'a1', savePath: dir }));
|
|
25
66
|
expect(res.success).toBe(true);
|
|
26
|
-
|
|
27
|
-
expect(
|
|
67
|
+
const file = join(dir, 'test_bot.json');
|
|
68
|
+
expect(existsSync(file)).toBe(true);
|
|
69
|
+
const saved = JSON.parse(readFileSync(file, 'utf-8'));
|
|
70
|
+
expect(saved._agentId).toBe('a1');
|
|
71
|
+
expect(saved.name).toBe('Test Bot');
|
|
28
72
|
});
|
|
29
73
|
});
|
|
30
74
|
//# sourceMappingURL=export_agent_json.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export_agent_json.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/export_agent_json.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"export_agent_json.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/export_agent_json.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'fs';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
2
5
|
import { importAgentJsonHandler } from '../import_agent_json.js';
|
|
3
6
|
class MockPutClient {
|
|
4
7
|
methodCalls = [];
|
|
@@ -7,8 +10,18 @@ class MockPutClient {
|
|
|
7
10
|
return { success: true };
|
|
8
11
|
}
|
|
9
12
|
}
|
|
13
|
+
const tmpDirs = [];
|
|
14
|
+
function makeTmpDir() {
|
|
15
|
+
const d = mkdtempSync(join(tmpdir(), 'imp-'));
|
|
16
|
+
tmpDirs.push(d);
|
|
17
|
+
return d;
|
|
18
|
+
}
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
while (tmpDirs.length)
|
|
21
|
+
rmSync(tmpDirs.pop(), { recursive: true, force: true });
|
|
22
|
+
});
|
|
10
23
|
describe('importAgentJsonHandler', () => {
|
|
11
|
-
it('should process inline config successfully', async () => {
|
|
24
|
+
it('should process inline config successfully (legacy single-agent member import)', async () => {
|
|
12
25
|
const client = new MockPutClient();
|
|
13
26
|
const args = {
|
|
14
27
|
agentId: 'a1',
|
|
@@ -24,5 +37,18 @@ describe('importAgentJsonHandler', () => {
|
|
|
24
37
|
expect(res.success).toBe(false);
|
|
25
38
|
expect(res.error).toContain('agentId is required');
|
|
26
39
|
});
|
|
40
|
+
it('delegates to the family importer when filePath is a family folder', async () => {
|
|
41
|
+
const dir = makeTmpDir();
|
|
42
|
+
const famDir = join(dir, 'bot');
|
|
43
|
+
mkdirSync(join(famDir, 'variants'), { recursive: true });
|
|
44
|
+
writeFileSync(join(famDir, 'family.json'), JSON.stringify({ _meta: { schema: 'botuyo.agent/v1', familyId: 'fam1', slug: 'bot' }, entryVariantKey: 'default', base: {} }));
|
|
45
|
+
writeFileSync(join(famDir, 'variants', 'default.json'), JSON.stringify({ key: 'default', label: 'Bot', overrides: {}, order: 0 }));
|
|
46
|
+
const client = new MockPutClient();
|
|
47
|
+
await importAgentJsonHandler(client, { filePath: famDir });
|
|
48
|
+
// familyId comes from the _meta envelope → routed to the family importer (not the member import)
|
|
49
|
+
expect(client.methodCalls[0].path).toBe('/api/v1/mcp/agent-families/fam1/import');
|
|
50
|
+
expect(client.methodCalls[0].payload._meta).toBeUndefined();
|
|
51
|
+
expect(client.methodCalls[0].payload.variants).toHaveLength(1);
|
|
52
|
+
});
|
|
27
53
|
});
|
|
28
54
|
//# sourceMappingURL=import_agent_json.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import_agent_json.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/import_agent_json.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"import_agent_json.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/import_agent_json.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,5 +19,11 @@ describe('updateAgentHandler', () => {
|
|
|
19
19
|
it('should require agentId', async () => {
|
|
20
20
|
await expect(updateAgentHandler({}, {})).rejects.toThrow();
|
|
21
21
|
});
|
|
22
|
+
it('forwards requiresUserIdentity in the update payload', async () => {
|
|
23
|
+
const client = new MockClient();
|
|
24
|
+
await updateAgentHandler(client, { agentId: 'a1', requiresUserIdentity: true });
|
|
25
|
+
expect(client.methodCalls[0].path).toBe('/api/v1/mcp/agents/a1');
|
|
26
|
+
expect(client.methodCalls[0].payload.requiresUserIdentity).toBe(true);
|
|
27
|
+
});
|
|
22
28
|
});
|
|
23
29
|
//# sourceMappingURL=update_agent.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update_agent.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/update_agent.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,UAAU;IACP,WAAW,GAAU,EAAE,CAAA;IAC9B,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAY;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAS,CAAA;QACtC,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAA;QAEhF,MAAM,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEtC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"update_agent.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/update_agent.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,UAAU;IACP,WAAW,GAAU,EAAE,CAAA;IAC9B,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAY;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAS,CAAA;QACtC,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAA;QAEhF,MAAM,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEtC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,UAAU,EAAS,CAAA;QACtC,MAAM,kBAAkB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/E,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -39,8 +39,9 @@ export declare function exportAgentFamilyHandler(client: BotuyoApiClient, args:
|
|
|
39
39
|
success?: boolean;
|
|
40
40
|
data?: {
|
|
41
41
|
familyId?: string;
|
|
42
|
-
family?: {
|
|
42
|
+
family?: Record<string, unknown> & {
|
|
43
43
|
slug?: string;
|
|
44
|
+
variants?: Array<Record<string, unknown>>;
|
|
44
45
|
};
|
|
45
46
|
};
|
|
46
47
|
message?: string;
|