elevenlabs-voice-agent-mcp 1.0.14 → 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.
- package/README.md +202 -23
- package/dist/__tests__/mocks/fixtures.d.ts +136 -0
- package/dist/__tests__/mocks/fixtures.d.ts.map +1 -0
- package/dist/__tests__/mocks/fixtures.js +393 -0
- package/dist/__tests__/mocks/fixtures.js.map +1 -0
- package/dist/__tests__/schemas/schemas.test.d.ts +7 -0
- package/dist/__tests__/schemas/schemas.test.d.ts.map +1 -0
- package/dist/__tests__/schemas/schemas.test.js +537 -0
- package/dist/__tests__/schemas/schemas.test.js.map +1 -0
- package/dist/__tests__/services/elevenlabs-api.test.d.ts +7 -0
- package/dist/__tests__/services/elevenlabs-api.test.d.ts.map +1 -0
- package/dist/__tests__/services/elevenlabs-api.test.js +272 -0
- package/dist/__tests__/services/elevenlabs-api.test.js.map +1 -0
- package/dist/__tests__/services/formatters.test.d.ts +7 -0
- package/dist/__tests__/services/formatters.test.d.ts.map +1 -0
- package/dist/__tests__/services/formatters.test.js +387 -0
- package/dist/__tests__/services/formatters.test.js.map +1 -0
- package/dist/__tests__/setup.d.ts +7 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +25 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/tools/agent-tools.test.d.ts +7 -0
- package/dist/__tests__/tools/agent-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/agent-tools.test.js +343 -0
- package/dist/__tests__/tools/agent-tools.test.js.map +1 -0
- package/dist/__tests__/tools/batch-calling-tools.test.d.ts +7 -0
- package/dist/__tests__/tools/batch-calling-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/batch-calling-tools.test.js +236 -0
- package/dist/__tests__/tools/batch-calling-tools.test.js.map +1 -0
- package/dist/__tests__/tools/conversation-tools.test.d.ts +7 -0
- package/dist/__tests__/tools/conversation-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/conversation-tools.test.js +212 -0
- package/dist/__tests__/tools/conversation-tools.test.js.map +1 -0
- package/dist/__tests__/tools/knowledge-tools.test.d.ts +7 -0
- package/dist/__tests__/tools/knowledge-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/knowledge-tools.test.js +209 -0
- package/dist/__tests__/tools/knowledge-tools.test.js.map +1 -0
- package/dist/__tests__/tools/outbound-tools.test.d.ts +7 -0
- package/dist/__tests__/tools/outbound-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/outbound-tools.test.js +194 -0
- package/dist/__tests__/tools/outbound-tools.test.js.map +1 -0
- package/dist/__tests__/tools/phone-number-tools.test.d.ts +7 -0
- package/dist/__tests__/tools/phone-number-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/phone-number-tools.test.js +314 -0
- package/dist/__tests__/tools/phone-number-tools.test.js.map +1 -0
- package/dist/__tests__/tools/tool-tools.test.d.ts +7 -0
- package/dist/__tests__/tools/tool-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/tool-tools.test.js +287 -0
- package/dist/__tests__/tools/tool-tools.test.js.map +1 -0
- package/dist/__tests__/tools/utility-tools.test.d.ts +7 -0
- package/dist/__tests__/tools/utility-tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools/utility-tools.test.js +207 -0
- package/dist/__tests__/tools/utility-tools.test.js.map +1 -0
- package/dist/__tests__/utils/error-handlers.test.d.ts +7 -0
- package/dist/__tests__/utils/error-handlers.test.d.ts.map +1 -0
- package/dist/__tests__/utils/error-handlers.test.js +237 -0
- package/dist/__tests__/utils/error-handlers.test.js.map +1 -0
- package/dist/__tests__/utils/phone-normalizer.test.d.ts +7 -0
- package/dist/__tests__/utils/phone-normalizer.test.d.ts.map +1 -0
- package/dist/__tests__/utils/phone-normalizer.test.js +224 -0
- package/dist/__tests__/utils/phone-normalizer.test.js.map +1 -0
- package/dist/__tests__/utils/truncation.test.d.ts +7 -0
- package/dist/__tests__/utils/truncation.test.d.ts.map +1 -0
- package/dist/__tests__/utils/truncation.test.js +208 -0
- package/dist/__tests__/utils/truncation.test.js.map +1 -0
- package/dist/constants.d.ts +129 -5
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +150 -24
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -3
- package/dist/index.js.map +1 -1
- package/dist/schemas/agent-schemas.d.ts +23 -8
- package/dist/schemas/agent-schemas.d.ts.map +1 -1
- package/dist/schemas/agent-schemas.js +23 -8
- package/dist/schemas/agent-schemas.js.map +1 -1
- package/dist/schemas/batch-calling-schemas.d.ts +24 -9
- package/dist/schemas/batch-calling-schemas.d.ts.map +1 -1
- package/dist/schemas/batch-calling-schemas.js +24 -9
- package/dist/schemas/batch-calling-schemas.js.map +1 -1
- package/dist/schemas/common-schemas.d.ts +45 -13
- package/dist/schemas/common-schemas.d.ts.map +1 -1
- package/dist/schemas/common-schemas.js +45 -13
- package/dist/schemas/common-schemas.js.map +1 -1
- package/dist/schemas/conversation-schemas.d.ts +12 -5
- package/dist/schemas/conversation-schemas.d.ts.map +1 -1
- package/dist/schemas/conversation-schemas.js +12 -5
- package/dist/schemas/conversation-schemas.js.map +1 -1
- package/dist/schemas/outbound-schemas.d.ts +23 -8
- package/dist/schemas/outbound-schemas.d.ts.map +1 -1
- package/dist/schemas/outbound-schemas.js +23 -8
- package/dist/schemas/outbound-schemas.js.map +1 -1
- package/dist/schemas/phone-number-schemas.d.ts +37 -14
- package/dist/schemas/phone-number-schemas.d.ts.map +1 -1
- package/dist/schemas/phone-number-schemas.js +37 -14
- package/dist/schemas/phone-number-schemas.js.map +1 -1
- package/dist/schemas/tool-schemas.d.ts +27 -9
- package/dist/schemas/tool-schemas.d.ts.map +1 -1
- package/dist/schemas/tool-schemas.js +34 -11
- package/dist/schemas/tool-schemas.js.map +1 -1
- package/dist/services/elevenlabs-api.d.ts +108 -14
- package/dist/services/elevenlabs-api.d.ts.map +1 -1
- package/dist/services/elevenlabs-api.js +108 -14
- package/dist/services/elevenlabs-api.js.map +1 -1
- package/dist/services/formatters.d.ts +147 -21
- package/dist/services/formatters.d.ts.map +1 -1
- package/dist/services/formatters.js +147 -21
- package/dist/services/formatters.js.map +1 -1
- package/dist/tools/agent-tools.d.ts +5 -3
- package/dist/tools/agent-tools.d.ts.map +1 -1
- package/dist/tools/agent-tools.js +5 -3
- package/dist/tools/agent-tools.js.map +1 -1
- package/dist/tools/batch-calling-tools.d.ts +5 -3
- package/dist/tools/batch-calling-tools.d.ts.map +1 -1
- package/dist/tools/batch-calling-tools.js +5 -3
- package/dist/tools/batch-calling-tools.js.map +1 -1
- package/dist/tools/conversation-tools.d.ts +5 -3
- package/dist/tools/conversation-tools.d.ts.map +1 -1
- package/dist/tools/conversation-tools.js +5 -3
- package/dist/tools/conversation-tools.js.map +1 -1
- package/dist/tools/knowledge-tools.d.ts +5 -3
- package/dist/tools/knowledge-tools.d.ts.map +1 -1
- package/dist/tools/knowledge-tools.js +5 -3
- package/dist/tools/knowledge-tools.js.map +1 -1
- package/dist/tools/outbound-tools.d.ts +5 -3
- package/dist/tools/outbound-tools.d.ts.map +1 -1
- package/dist/tools/outbound-tools.js +5 -3
- package/dist/tools/outbound-tools.js.map +1 -1
- package/dist/tools/phone-number-tools.d.ts +5 -4
- package/dist/tools/phone-number-tools.d.ts.map +1 -1
- package/dist/tools/phone-number-tools.js +5 -4
- package/dist/tools/phone-number-tools.js.map +1 -1
- package/dist/tools/tool-tools.d.ts +5 -3
- package/dist/tools/tool-tools.d.ts.map +1 -1
- package/dist/tools/tool-tools.js +5 -3
- package/dist/tools/tool-tools.js.map +1 -1
- package/dist/tools/utility-tools.d.ts +5 -3
- package/dist/tools/utility-tools.d.ts.map +1 -1
- package/dist/tools/utility-tools.js +5 -3
- package/dist/tools/utility-tools.js.map +1 -1
- package/dist/types.d.ts +457 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -3
- package/dist/types.js.map +1 -1
- package/dist/utils/error-handlers.d.ts +47 -14
- package/dist/utils/error-handlers.d.ts.map +1 -1
- package/dist/utils/error-handlers.js +47 -14
- package/dist/utils/error-handlers.js.map +1 -1
- package/dist/utils/phone-normalizer.d.ts +43 -22
- package/dist/utils/phone-normalizer.d.ts.map +1 -1
- package/dist/utils/phone-normalizer.js +43 -22
- package/dist/utils/phone-normalizer.js.map +1 -1
- package/dist/utils/truncation.d.ts +46 -22
- package/dist/utils/truncation.d.ts.map +1 -1
- package/dist/utils/truncation.js +46 -22
- package/dist/utils/truncation.js.map +1 -1
- package/package.json +10 -4
package/dist/utils/truncation.js
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Response truncation utilities
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* @fileoverview Response truncation utilities
|
|
3
|
+
* @description Handles truncation of large responses to stay within MCP character limits
|
|
4
|
+
* while providing clear guidance to users. Prevents overwhelming clients with excessive data.
|
|
5
|
+
* @module utils/truncation
|
|
6
6
|
*/
|
|
7
7
|
import { CHARACTER_LIMIT } from "../constants.js";
|
|
8
8
|
/**
|
|
9
|
-
* Truncates content if it exceeds the character limit
|
|
9
|
+
* Truncates content if it exceeds the character limit.
|
|
10
|
+
* @description Checks content length against CHARACTER_LIMIT and truncates with
|
|
11
|
+
* a helpful message if exceeded. Used to prevent response overflow in MCP tools.
|
|
12
|
+
*
|
|
13
|
+
* @param {string} content - The content to potentially truncate
|
|
14
|
+
* @param {string} [context] - Additional context or guidance for the user
|
|
15
|
+
* @returns {string} Original content if within limit, or truncated with indicator
|
|
10
16
|
*
|
|
11
|
-
* @
|
|
12
|
-
*
|
|
13
|
-
*
|
|
17
|
+
* @example
|
|
18
|
+
* const output = truncateIfNeeded(longMarkdown, "Use offset=100 to continue");
|
|
19
|
+
* // If over limit: "...content...[TRUNCATED: Response exceeded 25000 characters. Use offset=100 to continue]"
|
|
14
20
|
*/
|
|
15
21
|
export function truncateIfNeeded(content, context) {
|
|
16
22
|
if (content.length <= CHARACTER_LIMIT) {
|
|
@@ -21,13 +27,19 @@ export function truncateIfNeeded(content, context) {
|
|
|
21
27
|
return `${truncated}\n\n[TRUNCATED: Response exceeded ${CHARACTER_LIMIT} characters. ${guidance}]`;
|
|
22
28
|
}
|
|
23
29
|
/**
|
|
24
|
-
* Truncates an array of items
|
|
30
|
+
* Truncates an array of items with pagination guidance.
|
|
31
|
+
* @description Formats array items one by one, stopping when the character limit
|
|
32
|
+
* is reached. Provides pagination guidance for fetching remaining items.
|
|
33
|
+
*
|
|
34
|
+
* @template T - Type of items in the array
|
|
35
|
+
* @param {T[]} items - Array of items that might need truncation
|
|
36
|
+
* @param {(item: T, index: number) => string} formatter - Function to format each item as a string
|
|
37
|
+
* @param {number} [currentOffset=0] - Current pagination offset for guidance
|
|
38
|
+
* @param {string} [context] - Additional context for users
|
|
39
|
+
* @returns {string} Formatted and potentially truncated string
|
|
25
40
|
*
|
|
26
|
-
* @
|
|
27
|
-
*
|
|
28
|
-
* @param currentOffset - Current pagination offset
|
|
29
|
-
* @param context - Additional context for users
|
|
30
|
-
* @returns Formatted and potentially truncated string
|
|
41
|
+
* @example
|
|
42
|
+
* const output = truncateArray(agents, (agent, i) => `${i}. ${agent.name}\n`, 0);
|
|
31
43
|
*/
|
|
32
44
|
export function truncateArray(items, formatter, currentOffset = 0, context) {
|
|
33
45
|
let result = "";
|
|
@@ -46,11 +58,17 @@ export function truncateArray(items, formatter, currentOffset = 0, context) {
|
|
|
46
58
|
return result;
|
|
47
59
|
}
|
|
48
60
|
/**
|
|
49
|
-
* Safely truncates a string in the middle, preserving start and end
|
|
61
|
+
* Safely truncates a string in the middle, preserving start and end.
|
|
62
|
+
* @description Useful for displaying long strings (like URLs) in limited space
|
|
63
|
+
* while showing both the beginning and end.
|
|
50
64
|
*
|
|
51
|
-
* @param content - Content to truncate
|
|
52
|
-
* @param maxLength - Maximum length
|
|
53
|
-
* @returns Truncated string with "..." indicator
|
|
65
|
+
* @param {string} content - Content to truncate
|
|
66
|
+
* @param {number} maxLength - Maximum length of output string
|
|
67
|
+
* @returns {string} Truncated string with "..." indicator in the middle
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* truncateMiddle("https://example.com/very/long/path/to/resource", 30);
|
|
71
|
+
* // Returns: "https://examp...to/resource"
|
|
54
72
|
*/
|
|
55
73
|
export function truncateMiddle(content, maxLength) {
|
|
56
74
|
if (content.length <= maxLength) {
|
|
@@ -62,11 +80,17 @@ export function truncateMiddle(content, maxLength) {
|
|
|
62
80
|
return `${start}...${end}`;
|
|
63
81
|
}
|
|
64
82
|
/**
|
|
65
|
-
* Formats a large JSON object with optional truncation
|
|
83
|
+
* Formats a large JSON object with optional truncation.
|
|
84
|
+
* @description Converts any object to pretty-printed JSON, automatically
|
|
85
|
+
* truncating if the result exceeds CHARACTER_LIMIT.
|
|
86
|
+
*
|
|
87
|
+
* @param {unknown} obj - Object to format as JSON
|
|
88
|
+
* @param {number} [indent=2] - Number of spaces for indentation
|
|
89
|
+
* @returns {string} JSON string, potentially truncated with guidance
|
|
66
90
|
*
|
|
67
|
-
* @
|
|
68
|
-
*
|
|
69
|
-
*
|
|
91
|
+
* @example
|
|
92
|
+
* const json = formatJSON({ agents: [...] });
|
|
93
|
+
* // Returns pretty-printed JSON, truncated if over 25000 chars
|
|
70
94
|
*/
|
|
71
95
|
export function formatJSON(obj, indent = 2) {
|
|
72
96
|
const json = JSON.stringify(obj, null, indent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncation.js","sourceRoot":"","sources":["../../src/utils/truncation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"truncation.js","sourceRoot":"","sources":["../../src/utils/truncation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAgB;IAChE,IAAI,OAAO,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,IAAI,0DAA0D,CAAC;IAEvF,OAAO,GAAG,SAAS,qCAAqC,eAAe,gBAAgB,QAAQ,GAAG,CAAC;AACrG,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAU,EACV,SAA6C,EAC7C,gBAAwB,CAAC,EACzB,OAAgB;IAEhB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,aAAa,GAAG,KAAK,CAAC;YACzC,MAAM,QAAQ,GAAG,OAAO,IAAI,cAAc,UAAU,6CAA6C,CAAC;YAClG,MAAM,IAAI,qCAAqC,eAAe,gBAAgB,QAAQ,GAAG,CAAC;YAC1F,MAAM;QACR,CAAC;QAED,MAAM,IAAI,SAAS,CAAC;QACpB,KAAK,EAAE,CAAC;IACV,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,SAAiB;IAC/D,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IAE3D,OAAO,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY,EAAE,SAAiB,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAC,IAAI,EAAE,8EAA8E,CAAC,CAAC;IAChH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "elevenlabs-voice-agent-mcp",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "MCP server for ElevenLabs Voice Agent Development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,8 +34,12 @@
|
|
|
34
34
|
"dev": "tsx watch src/index.ts",
|
|
35
35
|
"build": "tsc && chmod +x dist/index.js",
|
|
36
36
|
"clean": "rm -rf dist",
|
|
37
|
-
"test": "
|
|
38
|
-
"test:
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest",
|
|
39
|
+
"test:coverage": "vitest run --coverage",
|
|
40
|
+
"test:ui": "vitest --ui",
|
|
41
|
+
"test:types": "tsc --noEmit -p tsconfig.test.json",
|
|
42
|
+
"test:integration": "npm run test:startup && npm run test:api && npm run test:mcp && npm run test:tools",
|
|
39
43
|
"test:startup": "tsx test/test-server-startup.ts",
|
|
40
44
|
"test:api": "tsx test/test-api-connection.ts",
|
|
41
45
|
"test:mcp": "tsx test/mcp-client-test.ts",
|
|
@@ -53,8 +57,10 @@
|
|
|
53
57
|
},
|
|
54
58
|
"devDependencies": {
|
|
55
59
|
"@types/node": "^22.10.0",
|
|
60
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
56
61
|
"dotenv": "^17.2.3",
|
|
57
62
|
"tsx": "^4.19.2",
|
|
58
|
-
"typescript": "^5.7.2"
|
|
63
|
+
"typescript": "^5.7.2",
|
|
64
|
+
"vitest": "^4.0.16"
|
|
59
65
|
}
|
|
60
66
|
}
|