@botuyo/mcp 0.3.3 → 0.3.5

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.
Files changed (96) hide show
  1. package/dist/tools/__tests__/associate_knowledge.spec.d.ts +1 -0
  2. package/dist/tools/__tests__/associate_knowledge.spec.js +23 -0
  3. package/dist/tools/__tests__/associate_knowledge.spec.js.map +1 -0
  4. package/dist/tools/__tests__/configure_agent_tool.spec.d.ts +1 -0
  5. package/dist/tools/__tests__/configure_agent_tool.spec.js +45 -0
  6. package/dist/tools/__tests__/configure_agent_tool.spec.js.map +1 -0
  7. package/dist/tools/__tests__/configure_avatar.spec.d.ts +1 -0
  8. package/dist/tools/__tests__/configure_avatar.spec.js +87 -0
  9. package/dist/tools/__tests__/configure_avatar.spec.js.map +1 -0
  10. package/dist/tools/__tests__/create_agent.spec.d.ts +1 -0
  11. package/dist/tools/__tests__/create_agent.spec.js +23 -0
  12. package/dist/tools/__tests__/create_agent.spec.js.map +1 -0
  13. package/dist/tools/__tests__/create_from_template.spec.d.ts +1 -0
  14. package/dist/tools/__tests__/create_from_template.spec.js +21 -0
  15. package/dist/tools/__tests__/create_from_template.spec.js.map +1 -0
  16. package/dist/tools/__tests__/delete_agent.spec.d.ts +1 -0
  17. package/dist/tools/__tests__/delete_agent.spec.js +31 -0
  18. package/dist/tools/__tests__/delete_agent.spec.js.map +1 -0
  19. package/dist/tools/__tests__/delete_knowledge_doc.spec.d.ts +1 -0
  20. package/dist/tools/__tests__/delete_knowledge_doc.spec.js +17 -0
  21. package/dist/tools/__tests__/delete_knowledge_doc.spec.js.map +1 -0
  22. package/dist/tools/__tests__/example_agent.spec.d.ts +1 -0
  23. package/dist/tools/__tests__/example_agent.spec.js +12 -0
  24. package/dist/tools/__tests__/example_agent.spec.js.map +1 -0
  25. package/dist/tools/__tests__/export_agent_json.spec.d.ts +1 -0
  26. package/dist/tools/__tests__/export_agent_json.spec.js +30 -0
  27. package/dist/tools/__tests__/export_agent_json.spec.js.map +1 -0
  28. package/dist/tools/__tests__/get_agent.spec.d.ts +1 -0
  29. package/dist/tools/__tests__/get_agent.spec.js +19 -0
  30. package/dist/tools/__tests__/get_agent.spec.js.map +1 -0
  31. package/dist/tools/__tests__/get_agent_status.spec.d.ts +1 -0
  32. package/dist/tools/__tests__/get_agent_status.spec.js +16 -0
  33. package/dist/tools/__tests__/get_agent_status.spec.js.map +1 -0
  34. package/dist/tools/__tests__/get_tool_config.spec.d.ts +1 -0
  35. package/dist/tools/__tests__/get_tool_config.spec.js +35 -0
  36. package/dist/tools/__tests__/get_tool_config.spec.js.map +1 -0
  37. package/dist/tools/__tests__/import_agent_json.spec.d.ts +1 -0
  38. package/dist/tools/__tests__/import_agent_json.spec.js +28 -0
  39. package/dist/tools/__tests__/import_agent_json.spec.js.map +1 -0
  40. package/dist/tools/__tests__/list_agents.spec.d.ts +1 -0
  41. package/dist/tools/__tests__/list_agents.spec.js +16 -0
  42. package/dist/tools/__tests__/list_agents.spec.js.map +1 -0
  43. package/dist/tools/__tests__/list_available_tools.spec.d.ts +1 -0
  44. package/dist/tools/__tests__/list_available_tools.spec.js +16 -0
  45. package/dist/tools/__tests__/list_available_tools.spec.js.map +1 -0
  46. package/dist/tools/__tests__/list_base_tools.spec.d.ts +1 -0
  47. package/dist/tools/__tests__/list_base_tools.spec.js +74 -0
  48. package/dist/tools/__tests__/list_base_tools.spec.js.map +1 -0
  49. package/dist/tools/__tests__/list_knowledge_docs.spec.d.ts +1 -0
  50. package/dist/tools/__tests__/list_knowledge_docs.spec.js +22 -0
  51. package/dist/tools/__tests__/list_knowledge_docs.spec.js.map +1 -0
  52. package/dist/tools/__tests__/list_templates.spec.d.ts +1 -0
  53. package/dist/tools/__tests__/list_templates.spec.js +16 -0
  54. package/dist/tools/__tests__/list_templates.spec.js.map +1 -0
  55. package/dist/tools/__tests__/list_tool_configs.spec.d.ts +1 -0
  56. package/dist/tools/__tests__/list_tool_configs.spec.js +39 -0
  57. package/dist/tools/__tests__/list_tool_configs.spec.js.map +1 -0
  58. package/dist/tools/__tests__/publish_agent.spec.d.ts +1 -0
  59. package/dist/tools/__tests__/publish_agent.spec.js +18 -0
  60. package/dist/tools/__tests__/publish_agent.spec.js.map +1 -0
  61. package/dist/tools/__tests__/remove_tool_config.spec.d.ts +1 -0
  62. package/dist/tools/__tests__/remove_tool_config.spec.js +21 -0
  63. package/dist/tools/__tests__/remove_tool_config.spec.js.map +1 -0
  64. package/dist/tools/__tests__/switch_tenant.spec.d.ts +1 -0
  65. package/dist/tools/__tests__/switch_tenant.spec.js +32 -0
  66. package/dist/tools/__tests__/switch_tenant.spec.js.map +1 -0
  67. package/dist/tools/__tests__/update_agent.spec.d.ts +1 -0
  68. package/dist/tools/__tests__/update_agent.spec.js +23 -0
  69. package/dist/tools/__tests__/update_agent.spec.js.map +1 -0
  70. package/dist/tools/__tests__/update_enabled_tools.spec.d.ts +1 -0
  71. package/dist/tools/__tests__/update_enabled_tools.spec.js +18 -0
  72. package/dist/tools/__tests__/update_enabled_tools.spec.js.map +1 -0
  73. package/dist/tools/__tests__/upsert_stage.spec.d.ts +1 -0
  74. package/dist/tools/__tests__/upsert_stage.spec.js +27 -0
  75. package/dist/tools/__tests__/upsert_stage.spec.js.map +1 -0
  76. package/dist/tools/configure_agent_tool.d.ts +4 -0
  77. package/dist/tools/configure_agent_tool.js +42 -0
  78. package/dist/tools/configure_agent_tool.js.map +1 -0
  79. package/dist/tools/configure_avatar.d.ts +10 -0
  80. package/dist/tools/configure_avatar.js +78 -0
  81. package/dist/tools/configure_avatar.js.map +1 -0
  82. package/dist/tools/get_tool_config.d.ts +4 -0
  83. package/dist/tools/get_tool_config.js +28 -0
  84. package/dist/tools/get_tool_config.js.map +1 -0
  85. package/dist/tools/index.js +20 -0
  86. package/dist/tools/index.js.map +1 -1
  87. package/dist/tools/list_base_tools.d.ts +6 -0
  88. package/dist/tools/list_base_tools.js +48 -0
  89. package/dist/tools/list_base_tools.js.map +1 -0
  90. package/dist/tools/list_tool_configs.d.ts +6 -0
  91. package/dist/tools/list_tool_configs.js +61 -0
  92. package/dist/tools/list_tool_configs.js.map +1 -0
  93. package/dist/tools/remove_tool_config.d.ts +4 -0
  94. package/dist/tools/remove_tool_config.js +20 -0
  95. package/dist/tools/remove_tool_config.js.map +1 -0
  96. package/package.json +4 -2
@@ -0,0 +1,74 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { getToolsCatalogHandler } from '../list_base_tools.js';
3
+ class MockGetClient {
4
+ async get(path) {
5
+ expect(path).toBe('/api/v1/mcp/tools/catalog');
6
+ return {
7
+ success: true,
8
+ data: [
9
+ {
10
+ name: 'call_webhook',
11
+ description: 'Calls an external webhook URL',
12
+ configurable: true,
13
+ allowMultiInstance: true,
14
+ configSchema: [
15
+ { key: 'url', type: 'url', label: 'URL del webhook' },
16
+ { key: 'method', type: 'select', label: 'Método HTTP' }
17
+ ],
18
+ requiredIntegrations: null,
19
+ requiresAuth: false
20
+ },
21
+ {
22
+ name: 'google_search',
23
+ description: 'Searches Google',
24
+ configurable: false,
25
+ allowMultiInstance: false,
26
+ configSchema: [],
27
+ requiredIntegrations: null,
28
+ requiresAuth: false
29
+ },
30
+ {
31
+ name: 'send_email',
32
+ description: 'Sends email',
33
+ configurable: true,
34
+ allowMultiInstance: false,
35
+ configSchema: [
36
+ { key: 'fromEmail', type: 'email', label: 'Email remitente' }
37
+ ],
38
+ requiredIntegrations: { category: 'email', label: 'Email provider' },
39
+ requiresAuth: true
40
+ }
41
+ ]
42
+ };
43
+ }
44
+ }
45
+ describe('getToolsCatalogHandler', () => {
46
+ it('should render the full catalog with badges and config info', async () => {
47
+ const client = new MockGetClient();
48
+ const res = await getToolsCatalogHandler(client, {});
49
+ expect(res.text).toContain('Catálogo de tools (3)');
50
+ expect(res.text).toContain('call_webhook');
51
+ expect(res.text).toContain('⚙️ configurable');
52
+ expect(res.text).toContain('🔁 multi-instance');
53
+ expect(res.text).toContain('url(url)');
54
+ expect(res.text).toContain('google_search');
55
+ expect(res.text).toContain('send_email');
56
+ expect(res.text).toContain('Requiere: Email provider');
57
+ });
58
+ it('should filter by configurable when filter=configurable', async () => {
59
+ const client = new MockGetClient();
60
+ const res = await getToolsCatalogHandler(client, { filter: 'configurable' });
61
+ expect(res.text).toContain('Catálogo de tools (2)');
62
+ expect(res.text).toContain('call_webhook');
63
+ expect(res.text).toContain('send_email');
64
+ expect(res.text).not.toContain('google_search');
65
+ });
66
+ it('should filter by multi-instance when filter=multi', async () => {
67
+ const client = new MockGetClient();
68
+ const res = await getToolsCatalogHandler(client, { filter: 'multi' });
69
+ expect(res.text).toContain('Catálogo de tools (1)');
70
+ expect(res.text).toContain('call_webhook');
71
+ expect(res.text).not.toContain('send_email');
72
+ });
73
+ });
74
+ //# sourceMappingURL=list_base_tools.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_base_tools.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/list_base_tools.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { listKnowledgeDocsHandler } from '../list_knowledge_docs.js';
3
+ class MockGetClient {
4
+ path = null;
5
+ async get(path) {
6
+ this.path = path;
7
+ return { success: true, data: [] };
8
+ }
9
+ }
10
+ describe('listKnowledgeDocsHandler', () => {
11
+ it('should GET knowledge documents with pagination params', async () => {
12
+ const client = new MockGetClient();
13
+ await listKnowledgeDocsHandler(client, { limit: 10, offset: 5 });
14
+ expect(client.path).toBe('/api/knowledge/documents?limit=10&offset=5');
15
+ });
16
+ it('should GET without params if not provided', async () => {
17
+ const client = new MockGetClient();
18
+ await listKnowledgeDocsHandler(client, {});
19
+ expect(client.path).toBe('/api/knowledge/documents');
20
+ });
21
+ });
22
+ //# sourceMappingURL=list_knowledge_docs.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_knowledge_docs.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/list_knowledge_docs.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,MAAM,aAAa;IACV,IAAI,GAAkB,IAAI,CAAA;IACjC,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACpC,CAAC;CACF;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,MAAM,GAAG,IAAI,aAAa,EAAS,CAAA;QACzC,MAAM,wBAAwB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,GAAG,IAAI,aAAa,EAAS,CAAA;QACzC,MAAM,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { listTemplatesHandler } from '../list_templates.js';
3
+ class MockClient {
4
+ async get(path) {
5
+ expect(path).toBe('/api/v1/mcp/templates');
6
+ return { success: true, data: [{ id: 'beauty-salon' }] };
7
+ }
8
+ }
9
+ describe('listTemplatesHandler', () => {
10
+ it('should call GET /api/v1/mcp/templates', async () => {
11
+ const client = new MockClient();
12
+ const res = await listTemplatesHandler(client, {});
13
+ expect(res.data[0].id).toBe('beauty-salon');
14
+ });
15
+ });
16
+ //# sourceMappingURL=list_templates.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_templates.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/list_templates.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE3D,MAAM,UAAU;IACd,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,CAAA;IAC1D,CAAC;CACF;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAS,CAAA;QACtC,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAClD,MAAM,CAAE,GAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { listToolConfigsHandler } from '../list_tool_configs.js';
3
+ class MockGetClient {
4
+ async get(path) {
5
+ expect(path).toBe('/api/v1/mcp/agents/agent-1/tool-configs');
6
+ return {
7
+ success: true,
8
+ data: {
9
+ configured: [
10
+ { toolName: 'send_email', mode: 'single', params: { fromEmail: 'test@test.com' } },
11
+ { toolName: 'webhook_pedidos', mode: 'multi-instance', baseTool: 'call_webhook', params: { url: 'https://api.com/pedidos' }, instruction: 'Envía pedidos' }
12
+ ],
13
+ enabledWithoutConfig: ['google_search', 'identify_client'],
14
+ multiInstanceSummary: {
15
+ call_webhook: ['webhook_pedidos']
16
+ }
17
+ }
18
+ };
19
+ }
20
+ }
21
+ describe('listToolConfigsHandler', () => {
22
+ it('should list tools grouped by configured, enabled without config, and multi-instance summary', async () => {
23
+ const client = new MockGetClient();
24
+ const res = await listToolConfigsHandler(client, { agentId: 'agent-1' });
25
+ expect(res.text).toContain('Tools configuradas (2)');
26
+ expect(res.text).toContain('• send_email [single]');
27
+ expect(res.text).toContain('• webhook_pedidos [multi-instance: call_webhook]');
28
+ expect(res.text).toContain('params: fromEmail');
29
+ expect(res.text).toContain('instruction: "Envía pedidos"');
30
+ expect(res.text).toContain('Tools habilitadas sin config (2)');
31
+ expect(res.text).toContain('• google_search');
32
+ expect(res.text).toContain('Instancias multi-instance');
33
+ expect(res.text).toContain('call_webhook: webhook_pedidos');
34
+ });
35
+ it('should throw an error if agentId is missing', async () => {
36
+ await expect(listToolConfigsHandler({}, {})).rejects.toThrow('agentId is required');
37
+ });
38
+ });
39
+ //# sourceMappingURL=list_tool_configs.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_tool_configs.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/list_tool_configs.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,aAAa;IACjB,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QAC5D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE;gBACJ,UAAU,EAAE;oBACV,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE;oBAClF,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,yBAAyB,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;iBAC5J;gBACD,oBAAoB,EAAE,CAAC,eAAe,EAAE,iBAAiB,CAAC;gBAC1D,oBAAoB,EAAE;oBACpB,YAAY,EAAE,CAAC,iBAAiB,CAAC;iBAClC;aACF;SACF,CAAA;IACH,CAAC;CACF;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;QAC3G,MAAM,MAAM,GAAG,IAAI,aAAa,EAAS,CAAA;QACzC,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAqB,CAAA;QAE5F,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAA;QACpD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;QACnD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,kDAAkD,CAAC,CAAA;QAC9E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;QAC/C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAA;QAC1D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAA;QAC9D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;QAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAA;QACvD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,MAAM,CAAC,sBAAsB,CAAC,EAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { publishAgentHandler } from '../publish_agent.js';
3
+ class MockPutClient {
4
+ methodCalls = [];
5
+ async put(path, payload) {
6
+ this.methodCalls.push({ path, payload });
7
+ return { success: true };
8
+ }
9
+ }
10
+ describe('publishAgentHandler', () => {
11
+ it('should call PUT /api/v1/mcp/agents/:id/publish', async () => {
12
+ const client = new MockPutClient();
13
+ await publishAgentHandler(client, { agentId: 'a1', publish: true });
14
+ expect(client.methodCalls[0].path).toBe('/api/v1/mcp/agents/a1/publish');
15
+ expect(client.methodCalls[0].payload.publish).toBe(true);
16
+ });
17
+ });
18
+ //# sourceMappingURL=publish_agent.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish_agent.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/publish_agent.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,aAAa;IACV,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,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,aAAa,EAAS,CAAA;QACzC,MAAM,mBAAmB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAEnE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;QACxE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { removeToolConfigHandler } from '../remove_tool_config.js';
3
+ class MockDeleteClient {
4
+ paths = [];
5
+ async delete(path) {
6
+ this.paths.push(path);
7
+ return { success: true };
8
+ }
9
+ }
10
+ describe('removeToolConfigHandler', () => {
11
+ it('should DELETE to /tool-config/:toolName', async () => {
12
+ const client = new MockDeleteClient();
13
+ await removeToolConfigHandler(client, { agentId: 'a1', toolName: 'webhook_pedidos' });
14
+ expect(client.paths[0]).toBe('/api/v1/mcp/agents/a1/tool-config/webhook_pedidos');
15
+ });
16
+ it('should throw if missing arguments', async () => {
17
+ const client = new MockDeleteClient();
18
+ await expect(removeToolConfigHandler(client, { agentId: 'a1' })).rejects.toThrow('agentId and toolName are required');
19
+ });
20
+ });
21
+ //# sourceMappingURL=remove_tool_config.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove_tool_config.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/remove_tool_config.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,MAAM,gBAAgB;IACb,KAAK,GAAa,EAAE,CAAA;IAC3B,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAS,CAAA;QAC5C,MAAM,uBAAuB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAA;QACrF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAS,CAAA;QAC5C,MAAM,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAA;IACvH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ import { vi, describe, it, expect } from 'vitest';
2
+ import { switchTenantHandler } from '../switch_tenant.js';
3
+ vi.mock('../../commands/credentials.js', () => ({
4
+ readCredentials: vi.fn(() => ({ token: 'mock-token', tenantId: 't1' })),
5
+ saveCredentials: vi.fn()
6
+ }));
7
+ global.fetch = vi.fn(() => Promise.resolve({
8
+ json: () => Promise.resolve({ success: true, data: { name: 'Target Tenant Name' } })
9
+ }));
10
+ class MockClient {
11
+ methodCalls = [];
12
+ async get(path) {
13
+ this.methodCalls.push({ method: 'GET', path });
14
+ if (path === '/api/auth/me')
15
+ return { success: true, data: { user: { tenantIds: ['t1', 't2'], roles: [] } } };
16
+ return { success: true, data: {} };
17
+ }
18
+ async post(path, payload) {
19
+ this.methodCalls.push({ method: 'POST', path, payload });
20
+ return { success: true, data: { token: 'new-token' } };
21
+ }
22
+ setToken() { }
23
+ }
24
+ describe('switchTenantHandler', () => {
25
+ it('should list tenants when no tenantId provided', async () => {
26
+ const client = new MockClient();
27
+ const res = await switchTenantHandler(client, {});
28
+ expect(res.success).toBe(true);
29
+ expect(res.tenants.length).toBe(2);
30
+ });
31
+ });
32
+ //# sourceMappingURL=switch_tenant.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch_tenant.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/switch_tenant.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEzD,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;CACzB,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACzC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC;CACrF,CAAC,CAAQ,CAAA;AAEV,MAAM,UAAU;IACP,WAAW,GAAU,EAAE,CAAA;IAC9B,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,IAAI,IAAI,KAAK,cAAc;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;QAC7G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACpC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAAY;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAA;IACxD,CAAC;IACD,QAAQ,KAAI,CAAC;CACd;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,MAAM,GAAG,IAAI,UAAU,EAAS,CAAA;QACtC,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACjD,MAAM,CAAE,GAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAE,GAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { updateAgentHandler } from '../update_agent.js';
3
+ class MockClient {
4
+ methodCalls = [];
5
+ async put(path, payload) {
6
+ this.methodCalls.push({ path, payload });
7
+ return { success: true };
8
+ }
9
+ }
10
+ describe('updateAgentHandler', () => {
11
+ it('should call PUT /api/v1/mcp/agents/:id', async () => {
12
+ const client = new MockClient();
13
+ const args = { agentId: 'a1', name: 'New Name', identity: { tone: 'friendly' } };
14
+ await updateAgentHandler(client, args);
15
+ expect(client.methodCalls[0].path).toBe('/api/v1/mcp/agents/a1');
16
+ expect(client.methodCalls[0].payload.name).toBe('New Name');
17
+ expect(client.methodCalls[0].payload.identity.tone).toBe('friendly');
18
+ });
19
+ it('should require agentId', async () => {
20
+ await expect(updateAgentHandler({}, {})).rejects.toThrow();
21
+ });
22
+ });
23
+ //# sourceMappingURL=update_agent.spec.js.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { updateEnabledToolsHandler } from '../update_enabled_tools.js';
3
+ class MockPutClient {
4
+ methodCalls = [];
5
+ async put(path, payload) {
6
+ this.methodCalls.push({ path, payload });
7
+ return { success: true };
8
+ }
9
+ }
10
+ describe('updateEnabledToolsHandler', () => {
11
+ it('should call PUT to replace enabled tools', async () => {
12
+ const client = new MockPutClient();
13
+ await updateEnabledToolsHandler(client, { agentId: 'a1', toolIds: ['t1', 't2'] });
14
+ expect(client.methodCalls[0].path).toBe('/api/v1/mcp/agents/a1');
15
+ expect(client.methodCalls[0].payload.enabledTools).toEqual(['t1', 't2']);
16
+ });
17
+ });
18
+ //# sourceMappingURL=update_enabled_tools.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update_enabled_tools.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/update_enabled_tools.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAEtE,MAAM,aAAa;IACV,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,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,MAAM,GAAG,IAAI,aAAa,EAAS,CAAA;QACzC,MAAM,yBAAyB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAEjF,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,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { upsertStageHandler } from '../upsert_stage.js';
3
+ class MockPutClient {
4
+ methodCalls = [];
5
+ async put(path, payload) {
6
+ this.methodCalls.push({ path, payload });
7
+ return { success: true };
8
+ }
9
+ }
10
+ describe('upsertStageHandler', () => {
11
+ it('should PUT merged stage, connections and channelFlows', async () => {
12
+ const client = new MockPutClient();
13
+ const args = {
14
+ agentId: 'a1',
15
+ stageName: 'start',
16
+ stageConfig: { instruction: 'Hello' },
17
+ connections: [{ id: 'c1', from: 'start', to: 'end', type: 'default' }],
18
+ channelFlows: { web: { connections: [] } }
19
+ };
20
+ await upsertStageHandler(client, args);
21
+ expect(client.methodCalls[0].path).toBe('/api/v1/mcp/agents/a1');
22
+ expect(client.methodCalls[0].payload.stages.start.instruction).toBe('Hello');
23
+ expect(client.methodCalls[0].payload.connections[0].id).toBe('c1');
24
+ expect(client.methodCalls[0].payload.channelFlows.web).toBeDefined();
25
+ });
26
+ });
27
+ //# sourceMappingURL=upsert_stage.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsert_stage.spec.js","sourceRoot":"","sources":["../../../src/tools/__tests__/upsert_stage.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,aAAa;IACV,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,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,MAAM,GAAG,IAAI,aAAa,EAAS,CAAA;QACzC,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;YACrC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACtE,YAAY,EAAE,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE;SAC3C,CAAA;QAED,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,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5E,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { BotuyoApiClient } from '../client.js';
3
+ export declare const CONFIGURE_AGENT_TOOL: Tool;
4
+ export declare function configureAgentToolHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
@@ -0,0 +1,42 @@
1
+ export const CONFIGURE_AGENT_TOOL = {
2
+ name: 'configure_agent_tool',
3
+ description: `Crea o actualiza la config de un tool para un agente. Si la tool no está en \`enabledTools\`, la agrega automáticamente.
4
+
5
+ Dos modos:
6
+ - **Single-instance**: configura una tool existente (ej. \`send_email\`) con params fijos.
7
+ - **Multi-instance**: crea una instancia virtual con nombre propio basada en una tool real (requiere \`baseTool\`). Ej: \`webhook_pedidos\` basada en \`call_webhook\`.`,
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ agentId: { type: 'string', description: 'ID del agente' },
12
+ toolName: { type: 'string', description: 'Nombre del tool (existente para single-instance, o nombre custom para multi-instance)' },
13
+ baseTool: { type: 'string', description: 'Tool base del registry (solo multi-instance). Ej: "call_webhook", "sync_to_google_sheets", "sync_to_hubspot"' },
14
+ params: { type: 'object', description: 'Parámetros invisibles al LLM, inyectados en execute() (ej. fromEmail, url, spreadsheetId)' },
15
+ fields: {
16
+ type: 'array',
17
+ items: { type: 'object' },
18
+ description: 'Campos tipados que la IA ve (override del declaration). Array de {name, type, label, required, enumValues, validation}'
19
+ },
20
+ instruction: { type: 'string', description: 'Guía de 1 línea para el LLM explicando qué hace esta tool/instancia' }
21
+ },
22
+ required: ['agentId', 'toolName']
23
+ }
24
+ };
25
+ export async function configureAgentToolHandler(client, args) {
26
+ const { agentId, toolName, baseTool, params, fields, instruction } = args;
27
+ if (!agentId || !toolName) {
28
+ throw new Error('agentId and toolName are required');
29
+ }
30
+ const payload = {};
31
+ if (baseTool !== undefined)
32
+ payload.baseTool = baseTool;
33
+ if (params !== undefined)
34
+ payload.params = params;
35
+ if (fields !== undefined)
36
+ payload.fields = fields;
37
+ if (instruction !== undefined)
38
+ payload.instruction = instruction;
39
+ const result = await client.put(`/api/v1/mcp/agents/${agentId}/tool-config/${toolName}`, payload);
40
+ return result;
41
+ }
42
+ //# sourceMappingURL=configure_agent_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure_agent_tool.js","sourceRoot":"","sources":["../../src/tools/configure_agent_tool.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE;;;;wKAIyJ;IACtK,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;YACzD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uFAAuF,EAAE;YAClI,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8GAA8G,EAAE;YACzJ,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2FAA2F,EAAE;YACpI,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,wHAAwH;aACtI;YACD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qEAAqE,EAAE;SACpH;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KAClC;CACF,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAuB,EAAE,IAA6B;IACpG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAW,CAAA;IAEhF,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACvD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACjD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACjD,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAA;IAEhE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,OAAO,gBAAgB,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;IACjG,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { BotuyoApiClient } from '../client.js';
3
+ export declare const LIST_AVATARS_TOOL: Tool;
4
+ export declare const SELECT_AVATAR_TOOL: Tool;
5
+ export declare function listAvatarsHandler(client: BotuyoApiClient, _args: Record<string, unknown>): Promise<{
6
+ text: string;
7
+ }>;
8
+ export declare function selectAvatarHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<{
9
+ text: string;
10
+ }>;
@@ -0,0 +1,78 @@
1
+ export const LIST_AVATARS_TOOL = {
2
+ name: 'list_avatars',
3
+ description: 'Lista los avatares 3D disponibles en el catálogo. Muestra nombre, formato, categoría y si es premium.',
4
+ inputSchema: {
5
+ type: 'object',
6
+ properties: {},
7
+ required: []
8
+ }
9
+ };
10
+ export const SELECT_AVATAR_TOOL = {
11
+ name: 'select_avatar',
12
+ description: 'Selecciona un avatar 3D para un agente. Puede ser del catálogo (por ID) o una URL custom (.glb/.vrm).',
13
+ inputSchema: {
14
+ type: 'object',
15
+ properties: {
16
+ agentId: { type: 'string', description: 'ID del agente' },
17
+ avatarId: { type: 'string', description: 'ID del avatar del catálogo (ej: avatar_corporate_female_01). Mutuamente excluyente con avatarUrl.' },
18
+ avatarUrl: { type: 'string', description: 'URL directa a un modelo .glb/.vrm. Mutuamente excluyente con avatarId.' }
19
+ },
20
+ required: ['agentId']
21
+ }
22
+ };
23
+ export async function listAvatarsHandler(client, _args) {
24
+ const result = await client.get('/api/avatars/catalog');
25
+ if (!result || !result.success || !result.data) {
26
+ throw new Error('Could not fetch avatar catalog');
27
+ }
28
+ const catalog = result.data;
29
+ if (catalog.length === 0) {
30
+ return { text: 'No hay avatares en el catálogo aún.' };
31
+ }
32
+ let output = `Catálogo de avatares 3D (${catalog.length}):\n\n`;
33
+ for (const avatar of catalog) {
34
+ const premium = avatar.isPremium ? ' [PREMIUM]' : '';
35
+ output += ` • ${avatar._id} — ${avatar.name}${premium}\n`;
36
+ output += ` Formato: ${avatar.modelFormat.toUpperCase()} | Categoría: ${avatar.category}\n`;
37
+ if (avatar.modelUrl) {
38
+ output += ` URL: ${avatar.modelUrl}\n`;
39
+ }
40
+ output += '\n';
41
+ }
42
+ output += `Usá select_avatar con --avatarId para asignar uno a un agente.`;
43
+ return { text: output };
44
+ }
45
+ export async function selectAvatarHandler(client, args) {
46
+ const agentId = args.agentId;
47
+ const avatarId = args.avatarId;
48
+ const avatarUrl = args.avatarUrl;
49
+ if (!agentId)
50
+ throw new Error('agentId is required');
51
+ if (!avatarId && !avatarUrl)
52
+ throw new Error('Provide either avatarId (from catalog) or avatarUrl (custom URL)');
53
+ if (avatarId && avatarUrl)
54
+ throw new Error('Provide avatarId OR avatarUrl, not both');
55
+ let finalUrl = avatarUrl || '';
56
+ // If avatarId provided, look up from catalog
57
+ if (avatarId) {
58
+ const catalogResult = await client.get(`/api/avatars/catalog/${avatarId}`);
59
+ if (!catalogResult || !catalogResult.success || !catalogResult.data) {
60
+ throw new Error(`Avatar "${avatarId}" not found in catalog. Use list_avatars to see available options.`);
61
+ }
62
+ finalUrl = catalogResult.data.modelUrl;
63
+ if (!finalUrl) {
64
+ throw new Error(`Avatar "${avatarId}" exists but has no model URL configured yet.`);
65
+ }
66
+ }
67
+ // Select the avatar for the agent
68
+ const result = await client.post('/api/avatars/select', {
69
+ agentId,
70
+ avatarUrl: finalUrl
71
+ });
72
+ if (!result || !result.success) {
73
+ throw new Error(result?.message || 'Failed to select avatar');
74
+ }
75
+ const source = avatarId ? `catálogo (${avatarId})` : 'URL custom';
76
+ return { text: `✅ Avatar actualizado para agente ${agentId}\n Fuente: ${source}\n URL: ${finalUrl}` };
77
+ }
78
+ //# sourceMappingURL=configure_avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure_avatar.js","sourceRoot":"","sources":["../../src/tools/configure_avatar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { BotuyoApiClient } from '../client.js';
3
+ export declare const GET_TOOL_CONFIG_TOOL: Tool;
4
+ export declare function getToolConfigHandler(client: BotuyoApiClient, args: Record<string, unknown>): Promise<any>;
@@ -0,0 +1,28 @@
1
+ export const GET_TOOL_CONFIG_TOOL = {
2
+ name: 'get_tool_config',
3
+ description: 'Ver el config completo de un tool específico de un agente (formato JSON).',
4
+ inputSchema: {
5
+ type: 'object',
6
+ properties: {
7
+ agentId: { type: 'string', description: 'ID del agente' },
8
+ toolName: { type: 'string', description: 'Nombre del tool o instancia' }
9
+ },
10
+ required: ['agentId', 'toolName']
11
+ }
12
+ };
13
+ export async function getToolConfigHandler(client, args) {
14
+ const { agentId, toolName } = args;
15
+ if (!agentId || !toolName)
16
+ throw new Error('agentId and toolName are required');
17
+ const result = await client.get(`/api/v1/mcp/agents/${agentId}/tool-configs`);
18
+ if (!result || !result.success || !result.data) {
19
+ throw new Error('Could not fetch tool configs');
20
+ }
21
+ const configured = result.data.configured || [];
22
+ const match = configured.find((tc) => tc.toolName === toolName);
23
+ if (!match) {
24
+ return { text: `Tool "${toolName}" no tiene configuración en este agente.` };
25
+ }
26
+ return match;
27
+ }
28
+ //# sourceMappingURL=get_tool_config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_tool_config.js","sourceRoot":"","sources":["../../src/tools/get_tool_config.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;YACzD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;SACzE;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KAClC;CACF,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAuB,EAAE,IAA6B;IAC/F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;IAClC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IAE/E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,OAAO,eAAe,CAAC,CAAA;IAC7E,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,UAAU,GAAU,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;IACtD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;IAEpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,SAAS,QAAQ,0CAA0C,EAAE,CAAA;IAC9E,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -21,6 +21,12 @@ import { DELETE_AGENT_TOOL, deleteAgentHandler } from './delete_agent.js';
21
21
  import { LIST_KNOWLEDGE_DOCS_TOOL, listKnowledgeDocsHandler } from './list_knowledge_docs.js';
22
22
  import { DELETE_KNOWLEDGE_DOC_TOOL, deleteKnowledgeDocHandler } from './delete_knowledge_doc.js';
23
23
  import { ASSOCIATE_KNOWLEDGE_TOOL, associateKnowledgeHandler } from './associate_knowledge.js';
24
+ import { CONFIGURE_AGENT_TOOL, configureAgentToolHandler } from './configure_agent_tool.js';
25
+ import { LIST_TOOL_CONFIGS_TOOL, listToolConfigsHandler } from './list_tool_configs.js';
26
+ import { REMOVE_TOOL_CONFIG_TOOL, removeToolConfigHandler } from './remove_tool_config.js';
27
+ import { GET_TOOL_CONFIG_TOOL, getToolConfigHandler } from './get_tool_config.js';
28
+ import { GET_TOOLS_CATALOG_TOOL, getToolsCatalogHandler } from './list_base_tools.js';
29
+ import { LIST_AVATARS_TOOL, listAvatarsHandler, SELECT_AVATAR_TOOL, selectAvatarHandler } from './configure_avatar.js';
24
30
  export const ALL_TOOLS = [
25
31
  LIST_AGENTS_TOOL,
26
32
  GET_AGENT_TOOL,
@@ -41,6 +47,13 @@ export const ALL_TOOLS = [
41
47
  LIST_KNOWLEDGE_DOCS_TOOL,
42
48
  DELETE_KNOWLEDGE_DOC_TOOL,
43
49
  ASSOCIATE_KNOWLEDGE_TOOL,
50
+ CONFIGURE_AGENT_TOOL,
51
+ LIST_TOOL_CONFIGS_TOOL,
52
+ REMOVE_TOOL_CONFIG_TOOL,
53
+ GET_TOOL_CONFIG_TOOL,
54
+ GET_TOOLS_CATALOG_TOOL,
55
+ LIST_AVATARS_TOOL,
56
+ SELECT_AVATAR_TOOL,
44
57
  ];
45
58
  export const TOOL_HANDLERS = {
46
59
  list_agents: listAgentsHandler,
@@ -62,5 +75,12 @@ export const TOOL_HANDLERS = {
62
75
  list_knowledge_documents: listKnowledgeDocsHandler,
63
76
  delete_knowledge_document: deleteKnowledgeDocHandler,
64
77
  associate_knowledge_to_agent: associateKnowledgeHandler,
78
+ configure_agent_tool: configureAgentToolHandler,
79
+ list_tool_configs: listToolConfigsHandler,
80
+ remove_tool_config: removeToolConfigHandler,
81
+ get_tool_config: getToolConfigHandler,
82
+ get_tools_catalog: getToolsCatalogHandler,
83
+ list_avatars: listAvatarsHandler,
84
+ select_avatar: selectAvatarHandler,
65
85
  };
66
86
  //# sourceMappingURL=index.js.map