@spekoai/mcp 1.0.0 → 1.0.4
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/LICENSE +21 -0
- package/README.md +142 -36
- package/dist/index.d.ts +26 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +112 -25
- package/package.json +44 -40
- package/dist/data/benchmarks.d.ts +0 -124
- package/dist/data/benchmarks.d.ts.map +0 -1
- package/dist/data/benchmarks.js +0 -176
- package/dist/data/benchmarks.js.map +0 -1
- package/dist/data/templates.d.ts +0 -39
- package/dist/data/templates.d.ts.map +0 -1
- package/dist/data/templates.js +0 -385
- package/dist/data/templates.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/api-client.d.ts +0 -71
- package/dist/lib/api-client.d.ts.map +0 -1
- package/dist/lib/api-client.js +0 -282
- package/dist/lib/api-client.js.map +0 -1
- package/dist/lib/benchmark-utils.d.ts +0 -45
- package/dist/lib/benchmark-utils.d.ts.map +0 -1
- package/dist/lib/benchmark-utils.js +0 -244
- package/dist/lib/benchmark-utils.js.map +0 -1
- package/dist/lib/project-scanner.d.ts +0 -16
- package/dist/lib/project-scanner.d.ts.map +0 -1
- package/dist/lib/project-scanner.js +0 -154
- package/dist/lib/project-scanner.js.map +0 -1
- package/dist/lib/tier-gate.d.ts +0 -14
- package/dist/lib/tier-gate.d.ts.map +0 -1
- package/dist/lib/tier-gate.js +0 -27
- package/dist/lib/tier-gate.js.map +0 -1
- package/dist/tools/agent-crud.d.ts +0 -3
- package/dist/tools/agent-crud.d.ts.map +0 -1
- package/dist/tools/agent-crud.js +0 -114
- package/dist/tools/agent-crud.js.map +0 -1
- package/dist/tools/legacy.d.ts +0 -3
- package/dist/tools/legacy.d.ts.map +0 -1
- package/dist/tools/legacy.js +0 -354
- package/dist/tools/legacy.js.map +0 -1
- package/dist/tools/migrate.d.ts +0 -3
- package/dist/tools/migrate.d.ts.map +0 -1
- package/dist/tools/migrate.js +0 -145
- package/dist/tools/migrate.js.map +0 -1
- package/dist/tools/recommend.d.ts +0 -3
- package/dist/tools/recommend.d.ts.map +0 -1
- package/dist/tools/recommend.js +0 -163
- package/dist/tools/recommend.js.map +0 -1
- package/dist/tools/setup.d.ts +0 -3
- package/dist/tools/setup.d.ts.map +0 -1
- package/dist/tools/setup.js +0 -104
- package/dist/tools/setup.js.map +0 -1
package/dist/data/benchmarks.js
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Benchmark data from production voice AI deployments.
|
|
3
|
-
* Covers 8+ languages across enterprise use cases.
|
|
4
|
-
*
|
|
5
|
-
* Each row is a tested STT+LLM+TTS combination with real latency,
|
|
6
|
-
* quality (UTMOS), and cost measurements.
|
|
7
|
-
*/
|
|
8
|
-
export const BENCHMARK_DATA = [
|
|
9
|
-
{
|
|
10
|
-
stt: "Deepgram", sttModel: "nova-3",
|
|
11
|
-
llm: "OpenAI", llmModel: "gpt-4.1-mini",
|
|
12
|
-
tts: "Cartesia", ttsModel: "sonic-3",
|
|
13
|
-
latencyMs: 168, quality: 4.5, costPerMin: 0.007, mos: 4.3,
|
|
14
|
-
languages: ["Thai", "English", "Vietnamese", "Indonesian", "Japanese", "Korean"],
|
|
15
|
-
notes: "Best overall for APAC multilingual. Production-proven across enterprise deployments."
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
stt: "Deepgram", sttModel: "nova-3",
|
|
19
|
-
llm: "Groq", llmModel: "llama-4-maverick",
|
|
20
|
-
tts: "Cartesia", ttsModel: "sonic-3",
|
|
21
|
-
latencyMs: 156, quality: 4.2, costPerMin: 0.005,
|
|
22
|
-
languages: ["Thai", "English"],
|
|
23
|
-
notes: "Lowest latency option. Groq inference is fast but quality slightly lower."
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
stt: "Deepgram", sttModel: "nova-3",
|
|
27
|
-
llm: "OpenAI", llmModel: "gpt-4.1",
|
|
28
|
-
tts: "ElevenLabs", ttsModel: "turbo_v2.5",
|
|
29
|
-
latencyMs: 215, quality: 4.5, costPerMin: 0.014, mos: 4.5,
|
|
30
|
-
languages: ["Thai", "English", "Japanese"],
|
|
31
|
-
notes: "Highest naturalness. ElevenLabs excels for emotional/expressive voices."
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
stt: "AssemblyAI", sttModel: "universal-3-pro",
|
|
35
|
-
llm: "OpenAI", llmModel: "gpt-4.1-mini",
|
|
36
|
-
tts: "Cartesia", ttsModel: "sonic-3",
|
|
37
|
-
latencyMs: 178, quality: 4.4, costPerMin: 0.008, mos: 4.2,
|
|
38
|
-
languages: ["English", "Vietnamese", "Filipino", "Cantonese"],
|
|
39
|
-
notes: "Strong for Southeast Asian languages. AssemblyAI universal model handles accents well."
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
stt: "OpenAI", sttModel: "gpt-4o-transcribe",
|
|
43
|
-
llm: "OpenAI", llmModel: "gpt-4.1",
|
|
44
|
-
tts: "ElevenLabs", ttsModel: "eleven_v3",
|
|
45
|
-
latencyMs: 287, quality: 4.8, costPerMin: 0.022, mos: 4.8,
|
|
46
|
-
languages: ["English", "Japanese", "Korean"],
|
|
47
|
-
notes: "Premium quality, highest cost. Best for high-stakes conversations (insurance, healthcare)."
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
stt: "Speechmatics", sttModel: "enhanced",
|
|
51
|
-
llm: "OpenAI", llmModel: "gpt-4.1-mini",
|
|
52
|
-
tts: "Rime", ttsModel: "arcana-v3",
|
|
53
|
-
latencyMs: 205, quality: 4.2, costPerMin: 0.008,
|
|
54
|
-
languages: ["Thai", "English", "Cantonese"],
|
|
55
|
-
notes: "Speechmatics leads for Thai code-switching (94% vs Deepgram 71%)."
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
stt: "Deepgram", sttModel: "nova-3",
|
|
59
|
-
llm: "Google", llmModel: "gemini-2.5-pro",
|
|
60
|
-
tts: "PlayHT", ttsModel: "play-3.0-mini",
|
|
61
|
-
latencyMs: 268, quality: 4.1, costPerMin: 0.008, mos: 4.1,
|
|
62
|
-
languages: ["English", "Indonesian", "Filipino"],
|
|
63
|
-
notes: "Good balance for Indonesian/Filipino markets."
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
stt: "Google", sttModel: "chirp-3",
|
|
67
|
-
llm: "Groq", llmModel: "llama-4-maverick",
|
|
68
|
-
tts: "Cartesia", ttsModel: "sonic-3",
|
|
69
|
-
latencyMs: 195, quality: 4.0, costPerMin: 0.006,
|
|
70
|
-
languages: ["English", "Vietnamese", "Japanese", "Korean"],
|
|
71
|
-
notes: "Budget option with decent quality. Good for high-volume, cost-sensitive deployments."
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
stt: "Deepgram", sttModel: "nova-3",
|
|
75
|
-
llm: "ElevenLabs", llmModel: "eleven-turbo",
|
|
76
|
-
tts: "ElevenLabs", ttsModel: "eleven_v3",
|
|
77
|
-
latencyMs: 142, quality: 4.1, costPerMin: 0.004,
|
|
78
|
-
languages: ["Thai", "English", "Vietnamese", "Indonesian"],
|
|
79
|
-
notes: "ElevenLabs end-to-end. Lowest latency when using their full stack."
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
stt: "Deepgram", sttModel: "nova-3",
|
|
83
|
-
llm: "Google", llmModel: "gemini-2.5-flash",
|
|
84
|
-
tts: "Cartesia", ttsModel: "sonic-3",
|
|
85
|
-
latencyMs: 148, quality: 4.2, costPerMin: 0.004,
|
|
86
|
-
languages: ["English", "Thai", "Vietnamese", "Filipino", "Indonesian"],
|
|
87
|
-
notes: "Best cost-to-performance ratio. Gemini Flash is surprisingly good for voice agents."
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
stt: "Deepgram", sttModel: "nova-3",
|
|
91
|
-
llm: "Anthropic", llmModel: "claude-sonnet-4-5",
|
|
92
|
-
tts: "Cartesia", ttsModel: "sonic-3",
|
|
93
|
-
latencyMs: 198, quality: 4.6, costPerMin: 0.009,
|
|
94
|
-
languages: ["English", "Japanese", "Korean", "Thai"],
|
|
95
|
-
notes: "Claude excels at nuanced conversations. Best for complex reasoning in voice agents."
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
stt: "AssemblyAI", sttModel: "universal-3-pro",
|
|
99
|
-
llm: "ElevenLabs", llmModel: "eleven-turbo",
|
|
100
|
-
tts: "ElevenLabs", ttsModel: "turbo_v2.5",
|
|
101
|
-
latencyMs: 210, quality: 4.0, costPerMin: 0.006,
|
|
102
|
-
languages: ["English", "Cantonese", "Japanese"],
|
|
103
|
-
notes: "Solid mid-range option for East Asian languages."
|
|
104
|
-
},
|
|
105
|
-
];
|
|
106
|
-
export const USE_CASE_PRIORITIES = {
|
|
107
|
-
"debt-collections": { latency: 80, quality: 60, cost: 70 },
|
|
108
|
-
"sales": { latency: 70, quality: 80, cost: 50 },
|
|
109
|
-
"customer-support": { latency: 60, quality: 90, cost: 60 },
|
|
110
|
-
"scheduling": { latency: 90, quality: 40, cost: 80 },
|
|
111
|
-
"insurance-claims": { latency: 50, quality: 95, cost: 40 },
|
|
112
|
-
"lead-qualification": { latency: 75, quality: 75, cost: 55 },
|
|
113
|
-
"appointment-reminders": { latency: 85, quality: 50, cost: 75 },
|
|
114
|
-
"healthcare-triage": { latency: 55, quality: 95, cost: 45 },
|
|
115
|
-
"banking-faq": { latency: 60, quality: 90, cost: 60 },
|
|
116
|
-
"recruitment-screening": { latency: 65, quality: 85, cost: 50 },
|
|
117
|
-
};
|
|
118
|
-
export const SUPPORTED_LANGUAGES = [
|
|
119
|
-
"English", "Thai", "Vietnamese", "Indonesian", "Filipino",
|
|
120
|
-
"Japanese", "Korean", "Cantonese", "Mandarin", "Malay",
|
|
121
|
-
];
|
|
122
|
-
export const PROVIDER_INFO = {
|
|
123
|
-
stt: {
|
|
124
|
-
"Deepgram": { url: "https://deepgram.com", models: ["nova-3", "nova-2"], strengths: "Fast, accurate, good multilingual" },
|
|
125
|
-
"AssemblyAI": { url: "https://assemblyai.com", models: ["universal-3-pro"], strengths: "Best for accented speech, speaker diarization" },
|
|
126
|
-
"OpenAI": { url: "https://openai.com", models: ["gpt-4o-transcribe", "whisper-large-v3"], strengths: "Highest accuracy, slower" },
|
|
127
|
-
"Speechmatics": { url: "https://speechmatics.com", models: ["enhanced"], strengths: "Best for code-switching (Thai/English)" },
|
|
128
|
-
"Google": { url: "https://cloud.google.com/speech-to-text", models: ["chirp-3"], strengths: "Wide language coverage, competitive pricing" },
|
|
129
|
-
},
|
|
130
|
-
llm: {
|
|
131
|
-
"OpenAI": { url: "https://openai.com", models: ["gpt-4.1-mini", "gpt-4.1"], strengths: "Best general-purpose, reliable" },
|
|
132
|
-
"Anthropic": { url: "https://anthropic.com", models: ["claude-sonnet-4-5"], strengths: "Nuanced reasoning, safety, complex conversations" },
|
|
133
|
-
"Google": { url: "https://ai.google.dev", models: ["gemini-2.5-flash", "gemini-2.5-pro"], strengths: "Fast, cost-effective, multilingual" },
|
|
134
|
-
"Groq": { url: "https://groq.com", models: ["llama-4-maverick"], strengths: "Ultra-low latency inference" },
|
|
135
|
-
"ElevenLabs": { url: "https://elevenlabs.io", models: ["eleven-turbo"], strengths: "Lowest latency in ElevenLabs stack" },
|
|
136
|
-
},
|
|
137
|
-
tts: {
|
|
138
|
-
"Cartesia": { url: "https://cartesia.ai", models: ["sonic-3"], strengths: "Lowest TTFB, natural prosody, multilingual" },
|
|
139
|
-
"ElevenLabs": { url: "https://elevenlabs.io", models: ["eleven_v3", "turbo_v2.5"], strengths: "Most natural, expressive, emotional range" },
|
|
140
|
-
"PlayHT": { url: "https://play.ht", models: ["play-3.0-mini"], strengths: "Good quality-to-cost ratio" },
|
|
141
|
-
"Rime": { url: "https://rime.ai", models: ["arcana-v3"], strengths: "Consistent quality, good for Asian languages" },
|
|
142
|
-
},
|
|
143
|
-
};
|
|
144
|
-
export const S2S_PROVIDER_INFO = {
|
|
145
|
-
"OpenAI Realtime": {
|
|
146
|
-
url: "https://platform.openai.com/docs/guides/realtime",
|
|
147
|
-
models: ["gpt-realtime"],
|
|
148
|
-
strengths: "Lowest S2S latency for English, direct provider WebSocket",
|
|
149
|
-
},
|
|
150
|
-
"Gemini Live": {
|
|
151
|
-
url: "https://ai.google.dev/gemini-api/docs/live",
|
|
152
|
-
models: ["gemini-2.5-flash-live-preview"],
|
|
153
|
-
strengths: "Strong multimodal support and broad language coverage",
|
|
154
|
-
},
|
|
155
|
-
};
|
|
156
|
-
export const S2S_OPTIONS = [
|
|
157
|
-
{
|
|
158
|
-
provider: "openai-realtime",
|
|
159
|
-
model: "gpt-realtime",
|
|
160
|
-
latencyMs: 120,
|
|
161
|
-
quality: 4.6,
|
|
162
|
-
costPerHour: 1.2,
|
|
163
|
-
languages: ["English"],
|
|
164
|
-
notes: "Best raw latency. Prefer for English speed/quality sessions.",
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
provider: "gemini-live",
|
|
168
|
-
model: "gemini-2.5-flash-live-preview",
|
|
169
|
-
latencyMs: 138,
|
|
170
|
-
quality: 4.4,
|
|
171
|
-
costPerHour: 0.9,
|
|
172
|
-
languages: ["English", "Japanese", "Korean", "Spanish", "German"],
|
|
173
|
-
notes: "Great multilingual S2S option with lower hourly cost.",
|
|
174
|
-
},
|
|
175
|
-
];
|
|
176
|
-
//# sourceMappingURL=benchmarks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"benchmarks.js","sourceRoot":"","sources":["../../src/data/benchmarks.ts"],"names":[],"mappings":"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"}
|
package/dist/data/templates.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Project scaffolding templates for different voice AI frameworks.
|
|
3
|
-
*/
|
|
4
|
-
export interface ProjectFile {
|
|
5
|
-
path: string;
|
|
6
|
-
content: string;
|
|
7
|
-
}
|
|
8
|
-
export type SetupFramework = "nextjs" | "react" | "vanilla";
|
|
9
|
-
export declare function getLiveKitAgentTemplate(config: {
|
|
10
|
-
language: string;
|
|
11
|
-
useCase: string;
|
|
12
|
-
stt: string;
|
|
13
|
-
sttModel: string;
|
|
14
|
-
llm: string;
|
|
15
|
-
llmModel: string;
|
|
16
|
-
tts: string;
|
|
17
|
-
ttsModel: string;
|
|
18
|
-
agentName: string;
|
|
19
|
-
}): ProjectFile[];
|
|
20
|
-
export declare function getNextJSTemplate(config: {
|
|
21
|
-
language: string;
|
|
22
|
-
useCase: string;
|
|
23
|
-
stt: string;
|
|
24
|
-
sttModel: string;
|
|
25
|
-
llm: string;
|
|
26
|
-
llmModel: string;
|
|
27
|
-
tts: string;
|
|
28
|
-
ttsModel: string;
|
|
29
|
-
agentName: string;
|
|
30
|
-
}): ProjectFile[];
|
|
31
|
-
export declare function getSpekoComponentTemplate(config: {
|
|
32
|
-
framework: SetupFramework;
|
|
33
|
-
agentId: string;
|
|
34
|
-
language: string;
|
|
35
|
-
priority: "speed" | "quality" | "cost";
|
|
36
|
-
context: string;
|
|
37
|
-
systemPrompt: string;
|
|
38
|
-
}): string;
|
|
39
|
-
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/data/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAoE5D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,WAAW,EAAE,CAwMhB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,WAAW,EAAE,CA+EhB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAqDT"}
|
package/dist/data/templates.js
DELETED
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Project scaffolding templates for different voice AI frameworks.
|
|
3
|
-
*/
|
|
4
|
-
const LIVEKIT_STT_IMPORTS = {
|
|
5
|
-
Deepgram: "from livekit.plugins import deepgram",
|
|
6
|
-
OpenAI: "from livekit.plugins import openai",
|
|
7
|
-
Google: "from livekit.plugins import google",
|
|
8
|
-
};
|
|
9
|
-
const LIVEKIT_LLM_IMPORTS = {
|
|
10
|
-
OpenAI: "from livekit.plugins import openai",
|
|
11
|
-
Anthropic: "from livekit.plugins import anthropic",
|
|
12
|
-
Google: "from livekit.plugins import google",
|
|
13
|
-
};
|
|
14
|
-
const LIVEKIT_TTS_IMPORTS = {
|
|
15
|
-
Cartesia: "from livekit.plugins import cartesia",
|
|
16
|
-
ElevenLabs: "from livekit.plugins import elevenlabs",
|
|
17
|
-
};
|
|
18
|
-
const LIVEKIT_STT_SNIPPETS = {
|
|
19
|
-
Deepgram: "deepgram.STT(model=\"{model}\")",
|
|
20
|
-
OpenAI: "openai.STT(model=\"{model}\")",
|
|
21
|
-
Google: "google.STT(model=\"{model}\")",
|
|
22
|
-
};
|
|
23
|
-
const LIVEKIT_LLM_SNIPPETS = {
|
|
24
|
-
OpenAI: "openai.LLM(model=\"{model}\")",
|
|
25
|
-
Anthropic: "anthropic.LLM(model=\"{model}\")",
|
|
26
|
-
Google: "google.LLM(model=\"{model}\")",
|
|
27
|
-
};
|
|
28
|
-
const LIVEKIT_TTS_SNIPPETS = {
|
|
29
|
-
Cartesia: "cartesia.TTS(model=\"{model}\")",
|
|
30
|
-
ElevenLabs: "elevenlabs.TTS(model=\"{model}\")",
|
|
31
|
-
};
|
|
32
|
-
const LIVEKIT_ENV_KEYS = {
|
|
33
|
-
Deepgram: "DEEPGRAM_API_KEY",
|
|
34
|
-
AssemblyAI: "ASSEMBLYAI_API_KEY",
|
|
35
|
-
OpenAI: "OPENAI_API_KEY",
|
|
36
|
-
Google: "GOOGLE_API_KEY",
|
|
37
|
-
Speechmatics: "SPEECHMATICS_API_KEY",
|
|
38
|
-
Groq: "GROQ_API_KEY",
|
|
39
|
-
Anthropic: "ANTHROPIC_API_KEY",
|
|
40
|
-
Cartesia: "CARTESIA_API_KEY",
|
|
41
|
-
ElevenLabs: "ELEVENLABS_API_KEY",
|
|
42
|
-
PlayHT: "PLAYHT_API_KEY",
|
|
43
|
-
Rime: "RIME_API_KEY",
|
|
44
|
-
};
|
|
45
|
-
const uniq = (items) => [...new Set(items.filter(Boolean))];
|
|
46
|
-
function templateOrError(stage, provider, model) {
|
|
47
|
-
if (stage === "STT") {
|
|
48
|
-
const expression = LIVEKIT_STT_SNIPPETS[provider];
|
|
49
|
-
if (!expression)
|
|
50
|
-
throw new Error(`LiveKit scaffold does not support STT provider: ${provider}`);
|
|
51
|
-
return expression.replace("{model}", model);
|
|
52
|
-
}
|
|
53
|
-
if (stage === "LLM") {
|
|
54
|
-
const expression = LIVEKIT_LLM_SNIPPETS[provider];
|
|
55
|
-
if (!expression)
|
|
56
|
-
throw new Error(`LiveKit scaffold does not support LLM provider: ${provider}`);
|
|
57
|
-
return expression.replace("{model}", model);
|
|
58
|
-
}
|
|
59
|
-
const expression = LIVEKIT_TTS_SNIPPETS[provider];
|
|
60
|
-
if (!expression)
|
|
61
|
-
throw new Error(`LiveKit scaffold does not support TTS provider: ${provider}`);
|
|
62
|
-
return expression.replace("{model}", model);
|
|
63
|
-
}
|
|
64
|
-
export function getLiveKitAgentTemplate(config) {
|
|
65
|
-
const envKeyForProvider = (provider) => {
|
|
66
|
-
const key = LIVEKIT_ENV_KEYS[provider];
|
|
67
|
-
return key ? `${key}=your-${provider.toLowerCase().replace(/\s/g, "-")}-key` : null;
|
|
68
|
-
};
|
|
69
|
-
const seen = new Set();
|
|
70
|
-
const addKey = (provider) => {
|
|
71
|
-
const line = envKeyForProvider(provider);
|
|
72
|
-
if (!line || seen.has(provider))
|
|
73
|
-
return [];
|
|
74
|
-
seen.add(provider);
|
|
75
|
-
return [line];
|
|
76
|
-
};
|
|
77
|
-
const envLines = [
|
|
78
|
-
"# Speko Generated Config",
|
|
79
|
-
`# Agent: ${config.agentName}`,
|
|
80
|
-
`# Language: ${config.language} | Use Case: ${config.useCase}`,
|
|
81
|
-
"",
|
|
82
|
-
"# LiveKit",
|
|
83
|
-
"LIVEKIT_URL=wss://your-project.livekit.cloud",
|
|
84
|
-
"LIVEKIT_API_KEY=your-api-key",
|
|
85
|
-
"LIVEKIT_API_SECRET=your-api-secret",
|
|
86
|
-
"",
|
|
87
|
-
`# STT: ${config.stt} ${config.sttModel}`,
|
|
88
|
-
...addKey(config.stt),
|
|
89
|
-
"",
|
|
90
|
-
`# LLM: ${config.llm} ${config.llmModel}`,
|
|
91
|
-
...addKey(config.llm),
|
|
92
|
-
"",
|
|
93
|
-
`# TTS: ${config.tts} ${config.ttsModel}`,
|
|
94
|
-
...addKey(config.tts),
|
|
95
|
-
"",
|
|
96
|
-
];
|
|
97
|
-
const sttImports = uniq([LIVEKIT_STT_IMPORTS[config.stt]]);
|
|
98
|
-
const llmImports = uniq([LIVEKIT_LLM_IMPORTS[config.llm]]);
|
|
99
|
-
const ttsImports = uniq([LIVEKIT_TTS_IMPORTS[config.tts]]);
|
|
100
|
-
const envFile = envLines.join("\n");
|
|
101
|
-
const agentPy = `"""
|
|
102
|
-
${config.agentName} - Voice AI Agent
|
|
103
|
-
Generated by Speko MCP
|
|
104
|
-
|
|
105
|
-
Stack: ${config.stt} ${config.sttModel} → ${config.llm} ${config.llmModel} → ${config.tts} ${config.ttsModel}
|
|
106
|
-
Language: ${config.language} | Use Case: ${config.useCase}
|
|
107
|
-
"""
|
|
108
|
-
|
|
109
|
-
import logging
|
|
110
|
-
from dotenv import load_dotenv
|
|
111
|
-
from livekit.agents import AutoSubscribe, JobContext, WorkerOptions, cli, llm
|
|
112
|
-
from livekit.agents.pipeline import VoicePipelineAgent
|
|
113
|
-
${sttImports.filter(Boolean).join("\n")}
|
|
114
|
-
${llmImports.filter(Boolean).join("\n")}
|
|
115
|
-
${ttsImports.filter(Boolean).join("\n")}
|
|
116
|
-
|
|
117
|
-
load_dotenv()
|
|
118
|
-
logger = logging.getLogger("${config.agentName}")
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
async def entrypoint(ctx: JobContext):
|
|
122
|
-
await ctx.connect(auto_subscribe=AutoSubscribe.AUDIO_ONLY)
|
|
123
|
-
|
|
124
|
-
initial_ctx = llm.ChatContext().append(
|
|
125
|
-
role="system",
|
|
126
|
-
text=(
|
|
127
|
-
"You are a voice AI agent for ${config.useCase.toLowerCase()}. "
|
|
128
|
-
"You communicate in ${config.language}. "
|
|
129
|
-
"Keep responses concise (1-2 sentences). "
|
|
130
|
-
"Be natural, warm, and helpful."
|
|
131
|
-
),
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
agent = VoicePipelineAgent(
|
|
135
|
-
vad=ctx.proc.userdata.get("vad"),
|
|
136
|
-
stt=${templateOrError("STT", config.stt, config.sttModel)},
|
|
137
|
-
llm=${templateOrError("LLM", config.llm, config.llmModel)},
|
|
138
|
-
tts=${templateOrError("TTS", config.tts, config.ttsModel)},
|
|
139
|
-
chat_ctx=initial_ctx,
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
agent.start(ctx.room)
|
|
143
|
-
await agent.say(
|
|
144
|
-
"Hello! How can I help you today?",
|
|
145
|
-
allow_interruptions=True,
|
|
146
|
-
)
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
if __name__ == "__main__":
|
|
150
|
-
cli.run_app(WorkerOptions(entrypoint_fnc=entrypoint))
|
|
151
|
-
`;
|
|
152
|
-
const LIVEKIT_PLUGIN_PACKAGES = {
|
|
153
|
-
Deepgram: "livekit-plugins-deepgram>=1.0.0",
|
|
154
|
-
OpenAI: "livekit-plugins-openai>=1.0.0",
|
|
155
|
-
Cartesia: "livekit-plugins-cartesia>=1.0.0",
|
|
156
|
-
ElevenLabs: "livekit-plugins-elevenlabs>=1.0.0",
|
|
157
|
-
Anthropic: "livekit-plugins-anthropic>=1.0.0",
|
|
158
|
-
Google: "livekit-plugins-google>=1.0.0",
|
|
159
|
-
};
|
|
160
|
-
const pluginLines = uniq([
|
|
161
|
-
LIVEKIT_PLUGIN_PACKAGES[config.stt],
|
|
162
|
-
LIVEKIT_PLUGIN_PACKAGES[config.llm],
|
|
163
|
-
LIVEKIT_PLUGIN_PACKAGES[config.tts],
|
|
164
|
-
].filter(Boolean));
|
|
165
|
-
const requirementsTxt = [
|
|
166
|
-
"livekit-agents>=1.0.0",
|
|
167
|
-
...pluginLines,
|
|
168
|
-
"livekit-plugins-silero>=1.0.0",
|
|
169
|
-
"python-dotenv>=1.0.0",
|
|
170
|
-
"",
|
|
171
|
-
].join("\n");
|
|
172
|
-
const spekoYaml = `# Speko Agent Configuration
|
|
173
|
-
# Generated by Speko MCP — https://speko.ai
|
|
174
|
-
|
|
175
|
-
agent:
|
|
176
|
-
name: ${config.agentName}
|
|
177
|
-
version: "1.0.0"
|
|
178
|
-
language: ${config.language}
|
|
179
|
-
use_case: ${config.useCase}
|
|
180
|
-
|
|
181
|
-
pipeline:
|
|
182
|
-
stt:
|
|
183
|
-
provider: ${config.stt.toLowerCase()}
|
|
184
|
-
model: ${config.sttModel}
|
|
185
|
-
llm:
|
|
186
|
-
provider: ${config.llm.toLowerCase()}
|
|
187
|
-
model: ${config.llmModel}
|
|
188
|
-
temperature: 0.7
|
|
189
|
-
max_tokens: 150
|
|
190
|
-
tts:
|
|
191
|
-
provider: ${config.tts.toLowerCase()}
|
|
192
|
-
model: ${config.ttsModel}
|
|
193
|
-
|
|
194
|
-
quality:
|
|
195
|
-
target_latency_ms: 250
|
|
196
|
-
min_utmos: 4.0
|
|
197
|
-
max_cost_per_min: 0.015
|
|
198
|
-
|
|
199
|
-
monitoring:
|
|
200
|
-
log_level: info
|
|
201
|
-
metrics: true
|
|
202
|
-
alerts:
|
|
203
|
-
latency_p95_threshold_ms: 350
|
|
204
|
-
error_rate_threshold: 0.02
|
|
205
|
-
`;
|
|
206
|
-
const readmeMd = `# ${config.agentName}
|
|
207
|
-
|
|
208
|
-
Voice AI agent generated by [Speko](https://speko.ai).
|
|
209
|
-
|
|
210
|
-
## Stack
|
|
211
|
-
|
|
212
|
-
| Component | Provider | Model |
|
|
213
|
-
|-----------|----------|-------|
|
|
214
|
-
| STT | ${config.stt} | ${config.sttModel} |
|
|
215
|
-
| LLM | ${config.llm} | ${config.llmModel} |
|
|
216
|
-
| TTS | ${config.tts} | ${config.ttsModel} |
|
|
217
|
-
|
|
218
|
-
**Language:** ${config.language}
|
|
219
|
-
**Use Case:** ${config.useCase}
|
|
220
|
-
|
|
221
|
-
## Setup
|
|
222
|
-
|
|
223
|
-
\`\`\`bash
|
|
224
|
-
# Install dependencies
|
|
225
|
-
pip install -r requirements.txt
|
|
226
|
-
|
|
227
|
-
# Configure environment
|
|
228
|
-
cp .env.example .env
|
|
229
|
-
# Edit .env with your API keys
|
|
230
|
-
|
|
231
|
-
# Run the agent
|
|
232
|
-
python agent.py dev
|
|
233
|
-
\`\`\`
|
|
234
|
-
|
|
235
|
-
## Configuration
|
|
236
|
-
|
|
237
|
-
Edit \`speko.yaml\` to adjust pipeline settings, quality targets, and monitoring thresholds.
|
|
238
|
-
|
|
239
|
-
## Powered by Speko
|
|
240
|
-
|
|
241
|
-
This agent was scaffolded using Speko MCP. To optimize your stack:
|
|
242
|
-
|
|
243
|
-
\`\`\`
|
|
244
|
-
npx @speko/mcp
|
|
245
|
-
\`\`\`
|
|
246
|
-
`;
|
|
247
|
-
return [
|
|
248
|
-
{ path: ".env.example", content: envFile },
|
|
249
|
-
{ path: "agent.py", content: agentPy },
|
|
250
|
-
{ path: "requirements.txt", content: requirementsTxt },
|
|
251
|
-
{ path: "speko.yaml", content: spekoYaml },
|
|
252
|
-
{ path: "README.md", content: readmeMd },
|
|
253
|
-
];
|
|
254
|
-
}
|
|
255
|
-
export function getNextJSTemplate(config) {
|
|
256
|
-
const envFile = [
|
|
257
|
-
"# Speko Generated Config",
|
|
258
|
-
`# Agent: ${config.agentName}`,
|
|
259
|
-
"",
|
|
260
|
-
"NEXT_PUBLIC_ELEVENLABS_AGENT_ID=your-agent-id",
|
|
261
|
-
"ELEVENLABS_API_KEY=your-elevenlabs-key",
|
|
262
|
-
...(config.llm === "OpenAI" ? ["OPENAI_API_KEY=your-openai-key"] : []),
|
|
263
|
-
...(config.llm === "Anthropic" ? ["ANTHROPIC_API_KEY=your-anthropic-key"] : []),
|
|
264
|
-
"",
|
|
265
|
-
].join("\n");
|
|
266
|
-
const voiceWidgetTsx = `"use client";
|
|
267
|
-
|
|
268
|
-
import { useConversation } from "@elevenlabs/react";
|
|
269
|
-
import { useCallback, useState } from "react";
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* ${config.agentName} — Voice Widget
|
|
273
|
-
* Generated by Speko MCP
|
|
274
|
-
*
|
|
275
|
-
* Stack: ${config.stt} → ${config.llm} → ${config.tts}
|
|
276
|
-
*/
|
|
277
|
-
export function VoiceWidget() {
|
|
278
|
-
const [isActive, setIsActive] = useState(false);
|
|
279
|
-
|
|
280
|
-
const conversation = useConversation({
|
|
281
|
-
onConnect: () => setIsActive(true),
|
|
282
|
-
onDisconnect: () => setIsActive(false),
|
|
283
|
-
onError: (error) => console.error("Voice error:", error),
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
const startConversation = useCallback(async () => {
|
|
287
|
-
try {
|
|
288
|
-
await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
289
|
-
await conversation.startSession({
|
|
290
|
-
agentId: process.env.NEXT_PUBLIC_ELEVENLABS_AGENT_ID!,
|
|
291
|
-
});
|
|
292
|
-
} catch (error) {
|
|
293
|
-
console.error("Failed to start:", error);
|
|
294
|
-
}
|
|
295
|
-
}, [conversation]);
|
|
296
|
-
|
|
297
|
-
const stopConversation = useCallback(async () => {
|
|
298
|
-
await conversation.endSession();
|
|
299
|
-
}, [conversation]);
|
|
300
|
-
|
|
301
|
-
return (
|
|
302
|
-
<div className="flex flex-col items-center gap-4 p-8">
|
|
303
|
-
<div
|
|
304
|
-
className={\`w-24 h-24 rounded-full flex items-center justify-center transition-all \${
|
|
305
|
-
isActive
|
|
306
|
-
? "bg-red-500 animate-pulse shadow-lg shadow-red-500/50"
|
|
307
|
-
: "bg-indigo-600 hover:bg-indigo-700 shadow-lg"
|
|
308
|
-
}\`}
|
|
309
|
-
>
|
|
310
|
-
<button
|
|
311
|
-
onClick={isActive ? stopConversation : startConversation}
|
|
312
|
-
className="text-white text-sm font-medium"
|
|
313
|
-
>
|
|
314
|
-
{isActive ? "End" : "Start"}
|
|
315
|
-
</button>
|
|
316
|
-
</div>
|
|
317
|
-
<p className="text-sm text-gray-500">
|
|
318
|
-
{conversation.status === "connected"
|
|
319
|
-
? conversation.isSpeaking
|
|
320
|
-
? "Agent is speaking..."
|
|
321
|
-
: "Listening..."
|
|
322
|
-
: "Click to start"}
|
|
323
|
-
</p>
|
|
324
|
-
</div>
|
|
325
|
-
);
|
|
326
|
-
}
|
|
327
|
-
`;
|
|
328
|
-
return [
|
|
329
|
-
{ path: ".env.example", content: envFile },
|
|
330
|
-
{ path: "components/voice-widget.tsx", content: voiceWidgetTsx },
|
|
331
|
-
];
|
|
332
|
-
}
|
|
333
|
-
export function getSpekoComponentTemplate(config) {
|
|
334
|
-
if (config.framework === "nextjs") {
|
|
335
|
-
return `"use client";
|
|
336
|
-
|
|
337
|
-
import { VoiceAgent } from "@speko/js/react";
|
|
338
|
-
|
|
339
|
-
export function SpekoWidget() {
|
|
340
|
-
return (
|
|
341
|
-
<VoiceAgent
|
|
342
|
-
agentId="${config.agentId}"
|
|
343
|
-
apiKey={process.env.NEXT_PUBLIC_SPEKO_KEY}
|
|
344
|
-
language="${config.language}"
|
|
345
|
-
priority="${config.priority}"
|
|
346
|
-
context="${config.context.replace(/"/g, '\\"')}"
|
|
347
|
-
systemPrompt="${config.systemPrompt.replace(/"/g, '\\"')}"
|
|
348
|
-
position="bottom-right"
|
|
349
|
-
/>
|
|
350
|
-
);
|
|
351
|
-
}
|
|
352
|
-
`;
|
|
353
|
-
}
|
|
354
|
-
if (config.framework === "react") {
|
|
355
|
-
return `import { VoiceAgent } from "@speko/js/react";
|
|
356
|
-
|
|
357
|
-
export function SpekoWidget() {
|
|
358
|
-
return (
|
|
359
|
-
<VoiceAgent
|
|
360
|
-
agentId="${config.agentId}"
|
|
361
|
-
apiKey={import.meta.env.VITE_SPEKO_KEY}
|
|
362
|
-
language="${config.language}"
|
|
363
|
-
priority="${config.priority}"
|
|
364
|
-
context="${config.context.replace(/"/g, '\\"')}"
|
|
365
|
-
systemPrompt="${config.systemPrompt.replace(/"/g, '\\"')}"
|
|
366
|
-
/>
|
|
367
|
-
);
|
|
368
|
-
}
|
|
369
|
-
`;
|
|
370
|
-
}
|
|
371
|
-
return `import { Speko } from "@speko/js";
|
|
372
|
-
|
|
373
|
-
const speko = new Speko({
|
|
374
|
-
agentId: "${config.agentId}",
|
|
375
|
-
apiKey: window.SPEKO_KEY,
|
|
376
|
-
language: "${config.language}",
|
|
377
|
-
priority: "${config.priority}",
|
|
378
|
-
context: "${config.context.replace(/"/g, '\\"')}",
|
|
379
|
-
systemPrompt: "${config.systemPrompt.replace(/"/g, '\\"')}",
|
|
380
|
-
});
|
|
381
|
-
|
|
382
|
-
speko.mount("#speko-root");
|
|
383
|
-
`;
|
|
384
|
-
}
|
|
385
|
-
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/data/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,mBAAmB,GAA2B;IAClD,QAAQ,EAAE,sCAAsC;IAChD,MAAM,EAAE,oCAAoC;IAC5C,MAAM,EAAE,oCAAoC;CAC7C,CAAC;AAEF,MAAM,mBAAmB,GAA2B;IAClD,MAAM,EAAE,oCAAoC;IAC5C,SAAS,EAAE,uCAAuC;IAClD,MAAM,EAAE,oCAAoC;CAC7C,CAAC;AAEF,MAAM,mBAAmB,GAA2B;IAClD,QAAQ,EAAE,sCAAsC;IAChD,UAAU,EAAE,wCAAwC;CACrD,CAAC;AAEF,MAAM,oBAAoB,GAA2B;IACnD,QAAQ,EAAE,iCAAiC;IAC3C,MAAM,EAAE,+BAA+B;IACvC,MAAM,EAAE,+BAA+B;CACxC,CAAC;AAEF,MAAM,oBAAoB,GAA2B;IACnD,MAAM,EAAE,+BAA+B;IACvC,SAAS,EAAE,kCAAkC;IAC7C,MAAM,EAAE,+BAA+B;CACxC,CAAC;AAEF,MAAM,oBAAoB,GAA2B;IACnD,QAAQ,EAAE,iCAAiC;IAC3C,UAAU,EAAE,mCAAmC;CAChD,CAAC;AAEF,MAAM,gBAAgB,GAA2B;IAC/C,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,oBAAoB;IAChC,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,gBAAgB;IACxB,YAAY,EAAE,sBAAsB;IACpC,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,oBAAoB;IAChC,MAAM,EAAE,gBAAgB;IACxB,IAAI,EAAE,cAAc;CACrB,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtE,SAAS,eAAe,CAAC,KAA4B,EAAE,QAAgB,EAAE,KAAa;IACpF,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC;QAChG,OAAO,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC;QAChG,OAAO,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC;IAChG,OAAO,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAUvC;IACC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAiB,EAAE;QAC5D,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAY,EAAE;QAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG;QACf,0BAA0B;QAC1B,YAAY,MAAM,CAAC,SAAS,EAAE;QAC9B,eAAe,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,OAAO,EAAE;QAC9D,EAAE;QACF,WAAW;QACX,8CAA8C;QAC9C,8BAA8B;QAC9B,oCAAoC;QACpC,EAAE;QACF,UAAU,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE;QACzC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QACrB,EAAE;QACF,UAAU,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE;QACzC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QACrB,EAAE;QACF,UAAU,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE;QACzC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QACrB,EAAE;KACH,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG;EAChB,MAAM,CAAC,SAAS;;;SAGT,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ;YAChG,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,OAAO;;;;;;;EAOvD,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EACrC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EACrC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;8BAGT,MAAM,CAAC,SAAS;;;;;;;;;4CASF,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;kCACtC,MAAM,CAAC,QAAQ;;;;;;;;cAQnC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC;cACnD,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC;cACnD,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC;;;;;;;;;;;;;CAahE,CAAC;IAEA,MAAM,uBAAuB,GAA2B;QACtD,QAAQ,EAAE,iCAAiC;QAC3C,MAAM,EAAE,+BAA+B;QACvC,QAAQ,EAAE,iCAAiC;QAC3C,UAAU,EAAE,mCAAmC;QAC/C,SAAS,EAAE,kCAAkC;QAC7C,MAAM,EAAE,+BAA+B;KACxC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC;QACvB,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC;QACnC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC;QACnC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC;KACpC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAEnB,MAAM,eAAe,GAAG;QACtB,uBAAuB;QACvB,GAAG,WAAW;QACd,+BAA+B;QAC/B,sBAAsB;QACtB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,SAAS,GAAG;;;;UAIV,MAAM,CAAC,SAAS;;cAEZ,MAAM,CAAC,QAAQ;cACf,MAAM,CAAC,OAAO;;;;gBAIZ,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;aAC3B,MAAM,CAAC,QAAQ;;gBAEZ,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;aAC3B,MAAM,CAAC,QAAQ;;;;gBAIZ,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;aAC3B,MAAM,CAAC,QAAQ;;;;;;;;;;;;;CAa3B,CAAC;IAEA,MAAM,QAAQ,GAAG,KAAK,MAAM,CAAC,SAAS;;;;;;;;UAQ9B,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,QAAQ;UAC/B,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,QAAQ;UAC/B,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,QAAQ;;gBAEzB,MAAM,CAAC,QAAQ;gBACf,MAAM,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B7B,CAAC;IAEA,OAAO;QACL,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE;QAC1C,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;QACtC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,eAAe,EAAE;QACtD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE;QAC1C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAUjC;IACC,MAAM,OAAO,GAAG;QACd,0BAA0B;QAC1B,YAAY,MAAM,CAAC,SAAS,EAAE;QAC9B,EAAE;QACF,+CAA+C;QAC/C,wCAAwC;QACxC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,cAAc,GAAG;;;;;;KAMpB,MAAM,CAAC,SAAS;;;YAGT,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDrD,CAAC;IAEA,OAAO;QACL,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE;QAC1C,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,cAAc,EAAE;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAOzC;IACC,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO;;;;;;;iBAOM,MAAM,CAAC,OAAO;;kBAEb,MAAM,CAAC,QAAQ;kBACf,MAAM,CAAC,QAAQ;iBAChB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;sBAC9B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;;;;;CAK7D,CAAC;IACA,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO;;;;;iBAKM,MAAM,CAAC,OAAO;;kBAEb,MAAM,CAAC,QAAQ;kBACf,MAAM,CAAC,QAAQ;iBAChB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;sBAC9B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;;;;CAI7D,CAAC;IACA,CAAC;IAED,OAAO;;;cAGK,MAAM,CAAC,OAAO;;eAEb,MAAM,CAAC,QAAQ;eACf,MAAM,CAAC,QAAQ;cAChB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;mBAC9B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;;;;CAI1D,CAAC;AACF,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAE5B,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|