@botuyo/mcp 0.3.22 → 0.4.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/dist/__tests__/format.spec.d.ts +1 -0
- package/dist/__tests__/format.spec.js +29 -0
- package/dist/__tests__/format.spec.js.map +1 -0
- package/dist/commands/__tests__/credentials.spec.js +48 -2
- package/dist/commands/__tests__/credentials.spec.js.map +1 -1
- package/dist/commands/credentials.d.ts +9 -3
- package/dist/commands/credentials.js +33 -13
- package/dist/commands/credentials.js.map +1 -1
- package/dist/commands/login.js +7 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/switch_tenant.js +7 -2
- package/dist/commands/switch_tenant.js.map +1 -1
- package/dist/commands/tenants.js +5 -3
- package/dist/commands/tenants.js.map +1 -1
- package/dist/format.d.ts +15 -0
- package/dist/format.js +25 -0
- package/dist/format.js.map +1 -0
- 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 +22 -3
- 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/import_agent_json.js +2 -1
- package/dist/tools/import_agent_json.js.map +1 -1
- package/dist/tools/index.js +23 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list_agents.d.ts +6 -1
- package/dist/tools/list_agents.js +11 -3
- package/dist/tools/list_agents.js.map +1 -1
- package/dist/tools/switch_tenant.js +2 -1
- package/dist/tools/switch_tenant.js.map +1 -1
- package/dist/tools/update_agent.js +2 -1
- package/dist/tools/update_agent.js.map +1 -1
- package/package.json +2 -1
|
@@ -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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"}
|
|
@@ -3,14 +3,33 @@ import { listAgentsHandler } from '../list_agents.js';
|
|
|
3
3
|
class MockClient {
|
|
4
4
|
async get(path) {
|
|
5
5
|
expect(path).toBe('/api/v1/mcp/agents');
|
|
6
|
-
return {
|
|
6
|
+
return {
|
|
7
|
+
success: true,
|
|
8
|
+
data: [
|
|
9
|
+
{ id: '6988e1877a3c2a943468b9e2', name: 'Nivelador', status: 'published', enabledToolsCount: 3 }
|
|
10
|
+
]
|
|
11
|
+
};
|
|
7
12
|
}
|
|
8
13
|
}
|
|
9
14
|
describe('listAgentsHandler', () => {
|
|
10
|
-
it('should call GET /api/v1/mcp/agents', async () => {
|
|
15
|
+
it('should call GET /api/v1/mcp/agents and keep a data array', async () => {
|
|
11
16
|
const client = new MockClient();
|
|
12
|
-
const res = await listAgentsHandler(client, {});
|
|
17
|
+
const res = (await listAgentsHandler(client, {}));
|
|
13
18
|
expect(Array.isArray(res.data)).toBe(true);
|
|
19
|
+
expect(res.count).toBe(1);
|
|
20
|
+
});
|
|
21
|
+
it('adds a shortId to each agent without losing the full id', async () => {
|
|
22
|
+
const client = new MockClient();
|
|
23
|
+
const res = (await listAgentsHandler(client, {}));
|
|
24
|
+
expect(res.data[0].id).toBe('6988e1877a3c2a943468b9e2');
|
|
25
|
+
expect(res.data[0].shortId).toBe('6988e187…b9e2');
|
|
26
|
+
});
|
|
27
|
+
it('returns a name-first text summary', async () => {
|
|
28
|
+
const client = new MockClient();
|
|
29
|
+
const res = (await listAgentsHandler(client, {}));
|
|
30
|
+
expect(res.text).toContain('Nivelador');
|
|
31
|
+
expect(res.text).toContain('6988e187…b9e2');
|
|
32
|
+
expect(res.text).toContain('published');
|
|
14
33
|
});
|
|
15
34
|
});
|
|
16
35
|
//# 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,
|
|
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"}
|
|
@@ -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
|
+
}>;
|