elevenlabs-voice-agent-mcp 1.0.15 → 1.1.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.
Files changed (158) hide show
  1. package/README.md +202 -23
  2. package/dist/__tests__/mocks/fixtures.d.ts +136 -0
  3. package/dist/__tests__/mocks/fixtures.d.ts.map +1 -0
  4. package/dist/__tests__/mocks/fixtures.js +393 -0
  5. package/dist/__tests__/mocks/fixtures.js.map +1 -0
  6. package/dist/__tests__/schemas/schemas.test.d.ts +7 -0
  7. package/dist/__tests__/schemas/schemas.test.d.ts.map +1 -0
  8. package/dist/__tests__/schemas/schemas.test.js +537 -0
  9. package/dist/__tests__/schemas/schemas.test.js.map +1 -0
  10. package/dist/__tests__/services/elevenlabs-api.test.d.ts +7 -0
  11. package/dist/__tests__/services/elevenlabs-api.test.d.ts.map +1 -0
  12. package/dist/__tests__/services/elevenlabs-api.test.js +272 -0
  13. package/dist/__tests__/services/elevenlabs-api.test.js.map +1 -0
  14. package/dist/__tests__/services/formatters.test.d.ts +7 -0
  15. package/dist/__tests__/services/formatters.test.d.ts.map +1 -0
  16. package/dist/__tests__/services/formatters.test.js +387 -0
  17. package/dist/__tests__/services/formatters.test.js.map +1 -0
  18. package/dist/__tests__/setup.d.ts +7 -0
  19. package/dist/__tests__/setup.d.ts.map +1 -0
  20. package/dist/__tests__/setup.js +25 -0
  21. package/dist/__tests__/setup.js.map +1 -0
  22. package/dist/__tests__/tools/agent-tools.test.d.ts +7 -0
  23. package/dist/__tests__/tools/agent-tools.test.d.ts.map +1 -0
  24. package/dist/__tests__/tools/agent-tools.test.js +343 -0
  25. package/dist/__tests__/tools/agent-tools.test.js.map +1 -0
  26. package/dist/__tests__/tools/batch-calling-tools.test.d.ts +7 -0
  27. package/dist/__tests__/tools/batch-calling-tools.test.d.ts.map +1 -0
  28. package/dist/__tests__/tools/batch-calling-tools.test.js +236 -0
  29. package/dist/__tests__/tools/batch-calling-tools.test.js.map +1 -0
  30. package/dist/__tests__/tools/conversation-tools.test.d.ts +7 -0
  31. package/dist/__tests__/tools/conversation-tools.test.d.ts.map +1 -0
  32. package/dist/__tests__/tools/conversation-tools.test.js +212 -0
  33. package/dist/__tests__/tools/conversation-tools.test.js.map +1 -0
  34. package/dist/__tests__/tools/knowledge-tools.test.d.ts +7 -0
  35. package/dist/__tests__/tools/knowledge-tools.test.d.ts.map +1 -0
  36. package/dist/__tests__/tools/knowledge-tools.test.js +209 -0
  37. package/dist/__tests__/tools/knowledge-tools.test.js.map +1 -0
  38. package/dist/__tests__/tools/outbound-tools.test.d.ts +7 -0
  39. package/dist/__tests__/tools/outbound-tools.test.d.ts.map +1 -0
  40. package/dist/__tests__/tools/outbound-tools.test.js +194 -0
  41. package/dist/__tests__/tools/outbound-tools.test.js.map +1 -0
  42. package/dist/__tests__/tools/phone-number-tools.test.d.ts +7 -0
  43. package/dist/__tests__/tools/phone-number-tools.test.d.ts.map +1 -0
  44. package/dist/__tests__/tools/phone-number-tools.test.js +314 -0
  45. package/dist/__tests__/tools/phone-number-tools.test.js.map +1 -0
  46. package/dist/__tests__/tools/tool-tools.test.d.ts +7 -0
  47. package/dist/__tests__/tools/tool-tools.test.d.ts.map +1 -0
  48. package/dist/__tests__/tools/tool-tools.test.js +287 -0
  49. package/dist/__tests__/tools/tool-tools.test.js.map +1 -0
  50. package/dist/__tests__/tools/utility-tools.test.d.ts +7 -0
  51. package/dist/__tests__/tools/utility-tools.test.d.ts.map +1 -0
  52. package/dist/__tests__/tools/utility-tools.test.js +207 -0
  53. package/dist/__tests__/tools/utility-tools.test.js.map +1 -0
  54. package/dist/__tests__/utils/error-handlers.test.d.ts +7 -0
  55. package/dist/__tests__/utils/error-handlers.test.d.ts.map +1 -0
  56. package/dist/__tests__/utils/error-handlers.test.js +237 -0
  57. package/dist/__tests__/utils/error-handlers.test.js.map +1 -0
  58. package/dist/__tests__/utils/phone-normalizer.test.d.ts +7 -0
  59. package/dist/__tests__/utils/phone-normalizer.test.d.ts.map +1 -0
  60. package/dist/__tests__/utils/phone-normalizer.test.js +224 -0
  61. package/dist/__tests__/utils/phone-normalizer.test.js.map +1 -0
  62. package/dist/__tests__/utils/truncation.test.d.ts +7 -0
  63. package/dist/__tests__/utils/truncation.test.d.ts.map +1 -0
  64. package/dist/__tests__/utils/truncation.test.js +208 -0
  65. package/dist/__tests__/utils/truncation.test.js.map +1 -0
  66. package/dist/constants.d.ts +128 -4
  67. package/dist/constants.d.ts.map +1 -1
  68. package/dist/constants.js +150 -24
  69. package/dist/constants.js.map +1 -1
  70. package/dist/index.d.ts +13 -2
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +27 -3
  73. package/dist/index.js.map +1 -1
  74. package/dist/schemas/agent-schemas.d.ts +23 -8
  75. package/dist/schemas/agent-schemas.d.ts.map +1 -1
  76. package/dist/schemas/agent-schemas.js +23 -8
  77. package/dist/schemas/agent-schemas.js.map +1 -1
  78. package/dist/schemas/batch-calling-schemas.d.ts +24 -9
  79. package/dist/schemas/batch-calling-schemas.d.ts.map +1 -1
  80. package/dist/schemas/batch-calling-schemas.js +24 -9
  81. package/dist/schemas/batch-calling-schemas.js.map +1 -1
  82. package/dist/schemas/common-schemas.d.ts +45 -13
  83. package/dist/schemas/common-schemas.d.ts.map +1 -1
  84. package/dist/schemas/common-schemas.js +45 -13
  85. package/dist/schemas/common-schemas.js.map +1 -1
  86. package/dist/schemas/conversation-schemas.d.ts +12 -5
  87. package/dist/schemas/conversation-schemas.d.ts.map +1 -1
  88. package/dist/schemas/conversation-schemas.js +12 -5
  89. package/dist/schemas/conversation-schemas.js.map +1 -1
  90. package/dist/schemas/outbound-schemas.d.ts +23 -8
  91. package/dist/schemas/outbound-schemas.d.ts.map +1 -1
  92. package/dist/schemas/outbound-schemas.js +23 -8
  93. package/dist/schemas/outbound-schemas.js.map +1 -1
  94. package/dist/schemas/phone-number-schemas.d.ts +37 -14
  95. package/dist/schemas/phone-number-schemas.d.ts.map +1 -1
  96. package/dist/schemas/phone-number-schemas.js +37 -14
  97. package/dist/schemas/phone-number-schemas.js.map +1 -1
  98. package/dist/schemas/tool-schemas.d.ts +27 -9
  99. package/dist/schemas/tool-schemas.d.ts.map +1 -1
  100. package/dist/schemas/tool-schemas.js +34 -11
  101. package/dist/schemas/tool-schemas.js.map +1 -1
  102. package/dist/services/elevenlabs-api.d.ts +108 -14
  103. package/dist/services/elevenlabs-api.d.ts.map +1 -1
  104. package/dist/services/elevenlabs-api.js +108 -14
  105. package/dist/services/elevenlabs-api.js.map +1 -1
  106. package/dist/services/formatters.d.ts +147 -21
  107. package/dist/services/formatters.d.ts.map +1 -1
  108. package/dist/services/formatters.js +147 -21
  109. package/dist/services/formatters.js.map +1 -1
  110. package/dist/tools/agent-tools.d.ts +5 -3
  111. package/dist/tools/agent-tools.d.ts.map +1 -1
  112. package/dist/tools/agent-tools.js +5 -3
  113. package/dist/tools/agent-tools.js.map +1 -1
  114. package/dist/tools/batch-calling-tools.d.ts +5 -3
  115. package/dist/tools/batch-calling-tools.d.ts.map +1 -1
  116. package/dist/tools/batch-calling-tools.js +5 -3
  117. package/dist/tools/batch-calling-tools.js.map +1 -1
  118. package/dist/tools/conversation-tools.d.ts +5 -3
  119. package/dist/tools/conversation-tools.d.ts.map +1 -1
  120. package/dist/tools/conversation-tools.js +5 -3
  121. package/dist/tools/conversation-tools.js.map +1 -1
  122. package/dist/tools/knowledge-tools.d.ts +5 -3
  123. package/dist/tools/knowledge-tools.d.ts.map +1 -1
  124. package/dist/tools/knowledge-tools.js +5 -3
  125. package/dist/tools/knowledge-tools.js.map +1 -1
  126. package/dist/tools/outbound-tools.d.ts +5 -3
  127. package/dist/tools/outbound-tools.d.ts.map +1 -1
  128. package/dist/tools/outbound-tools.js +5 -3
  129. package/dist/tools/outbound-tools.js.map +1 -1
  130. package/dist/tools/phone-number-tools.d.ts +5 -4
  131. package/dist/tools/phone-number-tools.d.ts.map +1 -1
  132. package/dist/tools/phone-number-tools.js +5 -4
  133. package/dist/tools/phone-number-tools.js.map +1 -1
  134. package/dist/tools/tool-tools.d.ts +5 -3
  135. package/dist/tools/tool-tools.d.ts.map +1 -1
  136. package/dist/tools/tool-tools.js +5 -3
  137. package/dist/tools/tool-tools.js.map +1 -1
  138. package/dist/tools/utility-tools.d.ts +5 -3
  139. package/dist/tools/utility-tools.d.ts.map +1 -1
  140. package/dist/tools/utility-tools.js +5 -3
  141. package/dist/tools/utility-tools.js.map +1 -1
  142. package/dist/types.d.ts +457 -10
  143. package/dist/types.d.ts.map +1 -1
  144. package/dist/types.js +15 -3
  145. package/dist/types.js.map +1 -1
  146. package/dist/utils/error-handlers.d.ts +47 -14
  147. package/dist/utils/error-handlers.d.ts.map +1 -1
  148. package/dist/utils/error-handlers.js +47 -14
  149. package/dist/utils/error-handlers.js.map +1 -1
  150. package/dist/utils/phone-normalizer.d.ts +43 -22
  151. package/dist/utils/phone-normalizer.d.ts.map +1 -1
  152. package/dist/utils/phone-normalizer.js +43 -22
  153. package/dist/utils/phone-normalizer.js.map +1 -1
  154. package/dist/utils/truncation.d.ts +46 -22
  155. package/dist/utils/truncation.d.ts.map +1 -1
  156. package/dist/utils/truncation.js +46 -22
  157. package/dist/utils/truncation.js.map +1 -1
  158. package/package.json +10 -4
@@ -0,0 +1,287 @@
1
+ /**
2
+ * Tests for agent tool management tools
3
+ *
4
+ * Tests creating, listing, and deleting webhook tools for agents.
5
+ */
6
+ import { describe, it, expect, vi, beforeEach } from "vitest";
7
+ import axios from "axios";
8
+ import { elevenlabs_create_webhook_tool, elevenlabs_list_tools, elevenlabs_delete_tool } from "../../tools/tool-tools.js";
9
+ import { mockAgent, mockTool, mockToolWithEnum } from "../mocks/fixtures.js";
10
+ import { ResponseFormat } from "../../types.js";
11
+ // Mock axios
12
+ vi.mock("axios");
13
+ const mockedAxios = vi.mocked(axios);
14
+ describe("Tool Management Tools", () => {
15
+ beforeEach(() => {
16
+ vi.clearAllMocks();
17
+ process.env.ELEVENLABS_API_KEY = "test_api_key_12345";
18
+ });
19
+ describe("elevenlabs_create_webhook_tool", () => {
20
+ it("should have correct tool metadata", () => {
21
+ expect(elevenlabs_create_webhook_tool.name).toBe("elevenlabs_create_webhook_tool");
22
+ expect(elevenlabs_create_webhook_tool.description).toContain("webhook tool");
23
+ expect(elevenlabs_create_webhook_tool.annotations?.readOnlyHint).toBe(false);
24
+ });
25
+ it("should create a webhook tool with all parameters", async () => {
26
+ mockedAxios.mockResolvedValueOnce({ data: mockTool });
27
+ const result = await elevenlabs_create_webhook_tool.handler({
28
+ agent_id: "ag_test123",
29
+ name: "check_order_status",
30
+ description: "Check the status of a customer order by order ID.",
31
+ url: "https://api.example.com/orders/status",
32
+ method: "POST",
33
+ headers: {
34
+ "Authorization": "Bearer token123"
35
+ },
36
+ parameters: [
37
+ {
38
+ name: "order_id",
39
+ type: "string",
40
+ description: "The unique order identifier",
41
+ required: true
42
+ },
43
+ {
44
+ name: "include_history",
45
+ type: "boolean",
46
+ description: "Include order history",
47
+ required: false
48
+ }
49
+ ],
50
+ response_format: ResponseFormat.MARKDOWN
51
+ });
52
+ expect(result.content[0].text).toContain("check_order_status");
53
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
54
+ method: "POST",
55
+ url: expect.stringContaining("/convai/agents/ag_test123/tools"),
56
+ data: expect.objectContaining({
57
+ name: "check_order_status",
58
+ description: "Check the status of a customer order by order ID.",
59
+ type: "webhook",
60
+ url: "https://api.example.com/orders/status",
61
+ method: "POST",
62
+ headers: { "Authorization": "Bearer token123" },
63
+ parameters: expect.arrayContaining([
64
+ expect.objectContaining({ name: "order_id", required: true })
65
+ ])
66
+ })
67
+ }));
68
+ });
69
+ it("should create a tool with enum parameters", async () => {
70
+ mockedAxios.mockResolvedValueOnce({ data: mockToolWithEnum });
71
+ const result = await elevenlabs_create_webhook_tool.handler({
72
+ agent_id: "ag_test123",
73
+ name: "get_shipping_rates",
74
+ description: "Get shipping rates for different carriers.",
75
+ url: "https://api.example.com/shipping/rates",
76
+ method: "GET",
77
+ parameters: [
78
+ {
79
+ name: "carrier",
80
+ type: "string",
81
+ description: "Shipping carrier",
82
+ required: true,
83
+ enum: ["fedex", "ups", "usps"]
84
+ }
85
+ ],
86
+ response_format: ResponseFormat.MARKDOWN
87
+ });
88
+ expect(result.content[0].text).toContain("get_shipping_rates");
89
+ });
90
+ it("should create a tool with default method", async () => {
91
+ mockedAxios.mockResolvedValueOnce({ data: mockTool });
92
+ await elevenlabs_create_webhook_tool.handler({
93
+ agent_id: "ag_test123",
94
+ name: "simple_tool",
95
+ description: "A simple webhook tool.",
96
+ url: "https://api.example.com/simple",
97
+ parameters: [],
98
+ response_format: ResponseFormat.MARKDOWN
99
+ });
100
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
101
+ data: expect.objectContaining({
102
+ method: "POST"
103
+ })
104
+ }));
105
+ });
106
+ it("should return JSON format", async () => {
107
+ mockedAxios.mockResolvedValueOnce({ data: mockTool });
108
+ const result = await elevenlabs_create_webhook_tool.handler({
109
+ agent_id: "ag_test123",
110
+ name: "test_tool",
111
+ description: "A test webhook tool for testing.",
112
+ url: "https://api.example.com/test",
113
+ parameters: [],
114
+ response_format: ResponseFormat.JSON
115
+ });
116
+ const parsed = JSON.parse(result.content[0].text);
117
+ expect(parsed.name).toBe("check_order_status");
118
+ expect(parsed.type).toBe("webhook");
119
+ });
120
+ it("should validate tool name format", async () => {
121
+ await expect(elevenlabs_create_webhook_tool.handler({
122
+ agent_id: "ag_test123",
123
+ name: "invalid name with spaces!",
124
+ description: "A test webhook tool.",
125
+ url: "https://api.example.com/test",
126
+ parameters: [],
127
+ response_format: ResponseFormat.MARKDOWN
128
+ })).rejects.toThrow();
129
+ });
130
+ it("should validate description minimum length", async () => {
131
+ await expect(elevenlabs_create_webhook_tool.handler({
132
+ agent_id: "ag_test123",
133
+ name: "test_tool",
134
+ description: "Too short",
135
+ url: "https://api.example.com/test",
136
+ parameters: [],
137
+ response_format: ResponseFormat.MARKDOWN
138
+ })).rejects.toThrow();
139
+ });
140
+ it("should validate URL format", async () => {
141
+ await expect(elevenlabs_create_webhook_tool.handler({
142
+ agent_id: "ag_test123",
143
+ name: "test_tool",
144
+ description: "A valid description here.",
145
+ url: "not-a-valid-url",
146
+ parameters: [],
147
+ response_format: ResponseFormat.MARKDOWN
148
+ })).rejects.toThrow();
149
+ });
150
+ it("should handle API error for non-existent agent", async () => {
151
+ const error = {
152
+ response: { status: 404, data: { detail: "Agent not found" } },
153
+ isAxiosError: true
154
+ };
155
+ mockedAxios.mockRejectedValueOnce(error);
156
+ vi.mocked(axios.isAxiosError).mockReturnValue(true);
157
+ await expect(elevenlabs_create_webhook_tool.handler({
158
+ agent_id: "ag_nonexistent",
159
+ name: "test_tool",
160
+ description: "A valid description here.",
161
+ url: "https://api.example.com/test",
162
+ parameters: [],
163
+ response_format: ResponseFormat.MARKDOWN
164
+ })).rejects.toThrow("not found");
165
+ });
166
+ });
167
+ describe("elevenlabs_list_tools", () => {
168
+ it("should have correct tool metadata", () => {
169
+ expect(elevenlabs_list_tools.name).toBe("elevenlabs_list_tools");
170
+ expect(elevenlabs_list_tools.annotations?.readOnlyHint).toBe(true);
171
+ });
172
+ it("should list tools for an agent", async () => {
173
+ const agentWithTools = {
174
+ ...mockAgent,
175
+ conversation_config: {
176
+ ...mockAgent.conversation_config,
177
+ agent: {
178
+ ...mockAgent.conversation_config.agent,
179
+ prompt: {
180
+ ...mockAgent.conversation_config.agent.prompt,
181
+ tools: [mockTool, mockToolWithEnum]
182
+ }
183
+ }
184
+ }
185
+ };
186
+ mockedAxios.mockResolvedValueOnce({ data: agentWithTools });
187
+ const result = await elevenlabs_list_tools.handler({
188
+ agent_id: "ag_test123",
189
+ response_format: ResponseFormat.MARKDOWN
190
+ });
191
+ expect(result.content[0].text).toContain("Tools (2)");
192
+ expect(result.content[0].text).toContain("check_order_status");
193
+ expect(result.content[0].text).toContain("get_shipping_rates");
194
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
195
+ method: "GET",
196
+ url: expect.stringContaining("/convai/agents/ag_test123")
197
+ }));
198
+ });
199
+ it("should return JSON format", async () => {
200
+ const agentWithTools = {
201
+ ...mockAgent,
202
+ conversation_config: {
203
+ ...mockAgent.conversation_config,
204
+ agent: {
205
+ ...mockAgent.conversation_config.agent,
206
+ prompt: {
207
+ ...mockAgent.conversation_config.agent.prompt,
208
+ tools: [mockTool]
209
+ }
210
+ }
211
+ }
212
+ };
213
+ mockedAxios.mockResolvedValueOnce({ data: agentWithTools });
214
+ const result = await elevenlabs_list_tools.handler({
215
+ agent_id: "ag_test123",
216
+ response_format: ResponseFormat.JSON
217
+ });
218
+ const parsed = JSON.parse(result.content[0].text);
219
+ expect(parsed).toHaveLength(1);
220
+ expect(parsed[0].name).toBe("check_order_status");
221
+ });
222
+ it("should handle agent with no tools", async () => {
223
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
224
+ const result = await elevenlabs_list_tools.handler({
225
+ agent_id: "ag_test123",
226
+ response_format: ResponseFormat.MARKDOWN
227
+ });
228
+ expect(result.content[0].text).toContain("No tools configured");
229
+ });
230
+ it("should handle API error for non-existent agent", async () => {
231
+ const error = {
232
+ response: { status: 404, data: { detail: "Agent not found" } },
233
+ isAxiosError: true
234
+ };
235
+ mockedAxios.mockRejectedValueOnce(error);
236
+ vi.mocked(axios.isAxiosError).mockReturnValue(true);
237
+ await expect(elevenlabs_list_tools.handler({
238
+ agent_id: "ag_nonexistent",
239
+ response_format: ResponseFormat.MARKDOWN
240
+ })).rejects.toThrow("not found");
241
+ });
242
+ });
243
+ describe("elevenlabs_delete_tool", () => {
244
+ it("should have correct tool metadata", () => {
245
+ expect(elevenlabs_delete_tool.name).toBe("elevenlabs_delete_tool");
246
+ expect(elevenlabs_delete_tool.annotations?.destructiveHint).toBe(true);
247
+ });
248
+ it("should delete a tool from agent", async () => {
249
+ mockedAxios.mockResolvedValueOnce({ data: {} });
250
+ const result = await elevenlabs_delete_tool.handler({
251
+ agent_id: "ag_test123",
252
+ tool_name: "check_order_status"
253
+ });
254
+ expect(result.content[0].text).toContain("Successfully deleted tool");
255
+ expect(result.content[0].text).toContain("check_order_status");
256
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
257
+ method: "DELETE",
258
+ url: expect.stringContaining("/convai/agents/ag_test123/tools/check_order_status")
259
+ }));
260
+ });
261
+ it("should handle API error for non-existent tool", async () => {
262
+ const error = {
263
+ response: { status: 404, data: { detail: "Tool not found" } },
264
+ isAxiosError: true
265
+ };
266
+ mockedAxios.mockRejectedValueOnce(error);
267
+ vi.mocked(axios.isAxiosError).mockReturnValue(true);
268
+ await expect(elevenlabs_delete_tool.handler({
269
+ agent_id: "ag_test123",
270
+ tool_name: "nonexistent_tool"
271
+ })).rejects.toThrow("not found");
272
+ });
273
+ it("should validate tool_name is required", async () => {
274
+ await expect(elevenlabs_delete_tool.handler({
275
+ agent_id: "ag_test123",
276
+ tool_name: ""
277
+ })).rejects.toThrow();
278
+ });
279
+ it("should validate agent_id is required", async () => {
280
+ await expect(elevenlabs_delete_tool.handler({
281
+ agent_id: "",
282
+ tool_name: "test_tool"
283
+ })).rejects.toThrow();
284
+ });
285
+ });
286
+ });
287
+ //# sourceMappingURL=tool-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-tools.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools/tool-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests for utility tools
3
+ *
4
+ * Tests widget generation and voice listing.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=utility-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-tools.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/tools/utility-tools.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Tests for utility tools
3
+ *
4
+ * Tests widget generation and voice listing.
5
+ */
6
+ import { describe, it, expect, vi, beforeEach } from "vitest";
7
+ import axios from "axios";
8
+ import { elevenlabs_generate_widget_code, elevenlabs_list_voices } from "../../tools/utility-tools.js";
9
+ import { mockAgent, mockVoice, mockVoiceMale } from "../mocks/fixtures.js";
10
+ import { ResponseFormat } from "../../types.js";
11
+ // Mock axios
12
+ vi.mock("axios");
13
+ const mockedAxios = vi.mocked(axios);
14
+ describe("Utility Tools", () => {
15
+ beforeEach(() => {
16
+ vi.clearAllMocks();
17
+ process.env.ELEVENLABS_API_KEY = "test_api_key_12345";
18
+ });
19
+ describe("elevenlabs_generate_widget_code", () => {
20
+ it("should have correct tool metadata", () => {
21
+ expect(elevenlabs_generate_widget_code.name).toBe("elevenlabs_generate_widget_code");
22
+ expect(elevenlabs_generate_widget_code.description).toContain("widget");
23
+ expect(elevenlabs_generate_widget_code.annotations?.readOnlyHint).toBe(true);
24
+ });
25
+ it("should generate basic widget code", async () => {
26
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
27
+ const result = await elevenlabs_generate_widget_code.handler({
28
+ agent_id: "ag_test123"
29
+ });
30
+ expect(result.content[0].text).toContain("Widget Embed Code");
31
+ expect(result.content[0].text).toContain('agentId: "ag_test123"');
32
+ expect(result.content[0].text).toContain("elevenlabs.io/convai-widget/index.js");
33
+ // Verify agent exists check
34
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
35
+ method: "GET",
36
+ url: expect.stringContaining("/convai/agents/ag_test123")
37
+ }));
38
+ });
39
+ it("should generate widget code with custom color", async () => {
40
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
41
+ const result = await elevenlabs_generate_widget_code.handler({
42
+ agent_id: "ag_test123",
43
+ color: "#FF5733"
44
+ });
45
+ expect(result.content[0].text).toContain('color: "#FF5733"');
46
+ });
47
+ it("should generate widget code with custom avatar", async () => {
48
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
49
+ const result = await elevenlabs_generate_widget_code.handler({
50
+ agent_id: "ag_test123",
51
+ avatar_url: "https://example.com/avatar.png"
52
+ });
53
+ expect(result.content[0].text).toContain('avatarUrl: "https://example.com/avatar.png"');
54
+ });
55
+ it("should generate widget code with both color and avatar", async () => {
56
+ mockedAxios.mockResolvedValueOnce({ data: mockAgent });
57
+ const result = await elevenlabs_generate_widget_code.handler({
58
+ agent_id: "ag_test123",
59
+ color: "#00FF00",
60
+ avatar_url: "https://example.com/custom-avatar.png"
61
+ });
62
+ expect(result.content[0].text).toContain('color: "#00FF00"');
63
+ expect(result.content[0].text).toContain('avatarUrl: "https://example.com/custom-avatar.png"');
64
+ });
65
+ it("should handle API error for non-existent agent", async () => {
66
+ const error = {
67
+ response: { status: 404, data: { detail: "Agent not found" } },
68
+ isAxiosError: true
69
+ };
70
+ mockedAxios.mockRejectedValueOnce(error);
71
+ vi.mocked(axios.isAxiosError).mockReturnValue(true);
72
+ await expect(elevenlabs_generate_widget_code.handler({
73
+ agent_id: "ag_nonexistent"
74
+ })).rejects.toThrow("not found");
75
+ });
76
+ it("should validate color format", async () => {
77
+ await expect(elevenlabs_generate_widget_code.handler({
78
+ agent_id: "ag_test123",
79
+ color: "invalid-color"
80
+ })).rejects.toThrow();
81
+ });
82
+ it("should validate avatar URL format", async () => {
83
+ await expect(elevenlabs_generate_widget_code.handler({
84
+ agent_id: "ag_test123",
85
+ avatar_url: "not-a-url"
86
+ })).rejects.toThrow();
87
+ });
88
+ });
89
+ describe("elevenlabs_list_voices", () => {
90
+ it("should have correct tool metadata", () => {
91
+ expect(elevenlabs_list_voices.name).toBe("elevenlabs_list_voices");
92
+ expect(elevenlabs_list_voices.annotations?.readOnlyHint).toBe(true);
93
+ });
94
+ it("should list voices with default parameters", async () => {
95
+ mockedAxios.mockResolvedValueOnce({
96
+ data: { voices: [mockVoice, mockVoiceMale] }
97
+ });
98
+ const result = await elevenlabs_list_voices.handler({
99
+ response_format: ResponseFormat.MARKDOWN
100
+ });
101
+ expect(result.content[0].text).toContain("Voices");
102
+ expect(result.content[0].text).toContain("Rachel");
103
+ expect(result.content[0].text).toContain("Adam");
104
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
105
+ method: "GET",
106
+ url: expect.stringContaining("/voices")
107
+ }));
108
+ });
109
+ it("should filter by language", async () => {
110
+ mockedAxios.mockResolvedValueOnce({
111
+ data: { voices: [mockVoice] }
112
+ });
113
+ await elevenlabs_list_voices.handler({
114
+ language: "en",
115
+ response_format: ResponseFormat.MARKDOWN
116
+ });
117
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
118
+ params: expect.objectContaining({ language: "en" })
119
+ }));
120
+ });
121
+ it("should filter by gender", async () => {
122
+ mockedAxios.mockResolvedValueOnce({
123
+ data: { voices: [mockVoice] }
124
+ });
125
+ await elevenlabs_list_voices.handler({
126
+ gender: "female",
127
+ response_format: ResponseFormat.MARKDOWN
128
+ });
129
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
130
+ params: expect.objectContaining({ gender: "female" })
131
+ }));
132
+ });
133
+ it("should filter by age", async () => {
134
+ mockedAxios.mockResolvedValueOnce({
135
+ data: { voices: [mockVoice] }
136
+ });
137
+ await elevenlabs_list_voices.handler({
138
+ age: "middle_aged",
139
+ response_format: ResponseFormat.MARKDOWN
140
+ });
141
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
142
+ params: expect.objectContaining({ age: "middle_aged" })
143
+ }));
144
+ });
145
+ it("should respect limit parameter", async () => {
146
+ const manyVoices = Array(30).fill(mockVoice);
147
+ mockedAxios.mockResolvedValueOnce({
148
+ data: { voices: manyVoices }
149
+ });
150
+ const result = await elevenlabs_list_voices.handler({
151
+ limit: 10,
152
+ response_format: ResponseFormat.JSON
153
+ });
154
+ const parsed = JSON.parse(result.content[0].text);
155
+ expect(parsed).toHaveLength(10);
156
+ });
157
+ it("should return JSON format", async () => {
158
+ mockedAxios.mockResolvedValueOnce({
159
+ data: { voices: [mockVoice] }
160
+ });
161
+ const result = await elevenlabs_list_voices.handler({
162
+ response_format: ResponseFormat.JSON
163
+ });
164
+ const parsed = JSON.parse(result.content[0].text);
165
+ expect(parsed).toHaveLength(1);
166
+ expect(parsed[0].voice_id).toBe("21m00Tcm4TlvDq8ikWAM");
167
+ });
168
+ it("should handle empty voice list", async () => {
169
+ mockedAxios.mockResolvedValueOnce({
170
+ data: { voices: [] }
171
+ });
172
+ const result = await elevenlabs_list_voices.handler({
173
+ response_format: ResponseFormat.MARKDOWN
174
+ });
175
+ expect(result.content[0].text).toContain("No voices found");
176
+ });
177
+ it("should combine multiple filters", async () => {
178
+ mockedAxios.mockResolvedValueOnce({
179
+ data: { voices: [mockVoice] }
180
+ });
181
+ await elevenlabs_list_voices.handler({
182
+ language: "en",
183
+ gender: "female",
184
+ age: "middle_aged",
185
+ limit: 5,
186
+ response_format: ResponseFormat.MARKDOWN
187
+ });
188
+ expect(mockedAxios).toHaveBeenCalledWith(expect.objectContaining({
189
+ params: expect.objectContaining({
190
+ language: "en",
191
+ gender: "female",
192
+ age: "middle_aged"
193
+ })
194
+ }));
195
+ });
196
+ it("should handle null voices response", async () => {
197
+ mockedAxios.mockResolvedValueOnce({
198
+ data: { voices: null }
199
+ });
200
+ const result = await elevenlabs_list_voices.handler({
201
+ response_format: ResponseFormat.MARKDOWN
202
+ });
203
+ expect(result.content[0].text).toContain("No voices found");
204
+ });
205
+ });
206
+ });
207
+ //# sourceMappingURL=utility-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-tools.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools/utility-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests for error handling utilities
3
+ *
4
+ * Tests error parsing and user-friendly message generation.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=error-handlers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handlers.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/error-handlers.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}