@vibesdotdev/integrations-elevenlabs 0.0.0-stage → 1.0.0-rc.1

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 (74) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +34 -2
  3. package/dist/ai/index.d.ts +3 -0
  4. package/dist/ai/index.d.ts.map +1 -0
  5. package/dist/ai/index.js +3 -0
  6. package/dist/ai/index.js.map +1 -0
  7. package/dist/ai/metadata/assets/assets/logos/providers/elevenlabs.svg +1 -0
  8. package/dist/ai/metadata/provider-models/elevenlabs/elevenlabs-eleven-flash-v2-5.json +17 -0
  9. package/dist/ai/metadata/provider-models/elevenlabs/elevenlabs-eleven-multilingual-v2.json +17 -0
  10. package/dist/ai/metadata/provider-models/elevenlabs/elevenlabs-eleven-v3.json +17 -0
  11. package/dist/ai/metadata/provider-models/elevenlabs/flash-multilingual.json +17 -0
  12. package/dist/ai/metadata/provider-models/elevenlabs/multilingual-stable.json +17 -0
  13. package/dist/ai/metadata/providers/elevenlabs.json +22 -0
  14. package/dist/ai/provider.plugin.d.ts +6 -0
  15. package/dist/ai/provider.plugin.d.ts.map +1 -0
  16. package/dist/ai/provider.plugin.js +122 -0
  17. package/dist/ai/provider.plugin.js.map +1 -0
  18. package/dist/ai/providers/cloud/speech/elevenlabs/config/config.elevenlabs.descriptor.d.ts +4194 -0
  19. package/dist/ai/providers/cloud/speech/elevenlabs/config/config.elevenlabs.descriptor.d.ts.map +1 -0
  20. package/dist/ai/providers/cloud/speech/elevenlabs/config/config.elevenlabs.descriptor.js +43 -0
  21. package/dist/ai/providers/cloud/speech/elevenlabs/config/config.elevenlabs.descriptor.js.map +1 -0
  22. package/dist/ai/providers/cloud/speech/elevenlabs/config/schemas/index.d.ts +15 -0
  23. package/dist/ai/providers/cloud/speech/elevenlabs/config/schemas/index.d.ts.map +1 -0
  24. package/dist/ai/providers/cloud/speech/elevenlabs/config/schemas/index.js +8 -0
  25. package/dist/ai/providers/cloud/speech/elevenlabs/config/schemas/index.js.map +1 -0
  26. package/dist/ai/providers/cloud/speech/elevenlabs/index.d.ts +5 -0
  27. package/dist/ai/providers/cloud/speech/elevenlabs/index.d.ts.map +1 -0
  28. package/dist/ai/providers/cloud/speech/elevenlabs/index.js +4 -0
  29. package/dist/ai/providers/cloud/speech/elevenlabs/index.js.map +1 -0
  30. package/dist/ai/providers/cloud/speech/elevenlabs/provider.elevenlabs.descriptor.d.ts +183 -0
  31. package/dist/ai/providers/cloud/speech/elevenlabs/provider.elevenlabs.descriptor.d.ts.map +1 -0
  32. package/dist/ai/providers/cloud/speech/elevenlabs/provider.elevenlabs.descriptor.js +50 -0
  33. package/dist/ai/providers/cloud/speech/elevenlabs/provider.elevenlabs.descriptor.js.map +1 -0
  34. package/dist/ai/providers/elevenlabs/detection/index.d.ts +2 -0
  35. package/dist/ai/providers/elevenlabs/detection/index.d.ts.map +1 -0
  36. package/dist/ai/providers/elevenlabs/detection/index.js +2 -0
  37. package/dist/ai/providers/elevenlabs/detection/index.js.map +1 -0
  38. package/dist/ai/providers/elevenlabs/detection/system.d.ts +4 -0
  39. package/dist/ai/providers/elevenlabs/detection/system.d.ts.map +1 -0
  40. package/dist/ai/providers/elevenlabs/detection/system.js +28 -0
  41. package/dist/ai/providers/elevenlabs/detection/system.js.map +1 -0
  42. package/dist/ai/providers/elevenlabs/elevenlabs.provider.impl.d.ts +25 -0
  43. package/dist/ai/providers/elevenlabs/elevenlabs.provider.impl.d.ts.map +1 -0
  44. package/dist/ai/providers/elevenlabs/elevenlabs.provider.impl.js +196 -0
  45. package/dist/ai/providers/elevenlabs/elevenlabs.provider.impl.js.map +1 -0
  46. package/dist/ai/providers/elevenlabs/index.d.ts +4 -0
  47. package/dist/ai/providers/elevenlabs/index.d.ts.map +1 -0
  48. package/dist/ai/providers/elevenlabs/index.js +4 -0
  49. package/dist/ai/providers/elevenlabs/index.js.map +1 -0
  50. package/dist/ai/providers/elevenlabs/recommendations.d.ts +23 -0
  51. package/dist/ai/providers/elevenlabs/recommendations.d.ts.map +1 -0
  52. package/dist/ai/providers/elevenlabs/recommendations.js +73 -0
  53. package/dist/ai/providers/elevenlabs/recommendations.js.map +1 -0
  54. package/dist/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.descriptor.d.ts +35 -0
  55. package/dist/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.descriptor.d.ts.map +1 -0
  56. package/dist/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.descriptor.js +24 -0
  57. package/dist/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.descriptor.js.map +1 -0
  58. package/dist/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.impl.d.ts +31 -0
  59. package/dist/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.impl.d.ts.map +1 -0
  60. package/dist/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.impl.js +103 -0
  61. package/dist/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.impl.js.map +1 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +2 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/schemas/catalog.d.ts +127 -0
  67. package/dist/schemas/catalog.d.ts.map +1 -0
  68. package/dist/schemas/catalog.js +20 -0
  69. package/dist/schemas/catalog.js.map +1 -0
  70. package/dist/schemas/speech.d.ts +35 -0
  71. package/dist/schemas/speech.d.ts.map +1 -0
  72. package/dist/schemas/speech.js +74 -0
  73. package/dist/schemas/speech.js.map +1 -0
  74. package/package.json +73 -4
@@ -0,0 +1,196 @@
1
+ import { getLogger } from '@vibesdotdev/logging';
2
+ import { detectElevenLabsSystem } from "./detection/system.js";
3
+ import { assertNoPlaintextCredentials } from '@vibesdotdev/ai/providers-runtime';
4
+ import { ElevenLabsSpeechSchema } from "../../../schemas/speech.js";
5
+ import { AnyGenerationRequestSchema } from '@vibesdotdev/ai/generation/execution/schemas/request';
6
+ import { probeProviderHealth } from '@vibesdotdev/ai/providers-runtime/client';
7
+ import { fetchAIProvider } from '@vibesdotdev/ai/providers-runtime/client';
8
+ import { createAIModelDescriptor } from '@vibesdotdev/ai/models/schemas';
9
+ import { getVibesAIClient } from '@vibesdotdev/ai/client';
10
+ import { CapabilityError, settle } from '@vibesdotdev/kernel';
11
+ import { ElevenLabsModelsSchema, ElevenLabsVoicesSchema } from "../../../schemas/catalog.js";
12
+ import { elevenlabsConnectionSchema } from "../cloud/speech/elevenlabs/config/schemas/index.js";
13
+ export function parseElevenLabsVoices(providerId, payload) {
14
+ const parsed = ElevenLabsVoicesSchema.safeParse(payload);
15
+ if (!parsed.success)
16
+ throw new CapabilityError('Invalid ElevenLabs voice catalog', 'UNAVAILABLE', { reason: 'catalog-schema', cause: parsed.error });
17
+ return projectVoices(providerId, parsed.data);
18
+ }
19
+ function projectVoices(providerId, catalog) {
20
+ return catalog.voices.map(item => {
21
+ const voice = { providerId, voiceId: item.voice_id, name: item.name };
22
+ if (item.description !== undefined)
23
+ voice.description = item.description;
24
+ if (item.preview_url !== undefined)
25
+ voice.previewUrl = item.preview_url;
26
+ const languages = item.verified_languages.map(language => language.language);
27
+ if (item.labels?.language)
28
+ languages.push(item.labels.language);
29
+ if (languages.length)
30
+ voice.languages = [...new Set(languages)];
31
+ if (item.category)
32
+ voice.tags = [item.category];
33
+ return voice;
34
+ });
35
+ }
36
+ export function parseElevenLabsModels(providerId, payload) {
37
+ const parsed = ElevenLabsModelsSchema.safeParse(payload);
38
+ if (!parsed.success)
39
+ throw new CapabilityError('Invalid ElevenLabs model catalog', 'UNAVAILABLE', { reason: 'catalog-schema', cause: parsed.error });
40
+ return projectModels(providerId, parsed.data);
41
+ }
42
+ function projectModels(providerId, catalog) {
43
+ return catalog.filter(item => item.can_do_text_to_speech).map(item => createAIModelDescriptor({
44
+ id: item.model_id.startsWith('elevenlabs:') ? item.model_id : `elevenlabs:${item.model_id}`,
45
+ providerId, name: item.model_id, displayName: item.name ?? item.model_id,
46
+ description: item.description, capabilities: ['audio_generation_text_to_speech'],
47
+ modalities: ['speech'], modelType: 'audio_tts', configuration: { modelId: item.model_id },
48
+ hardware: ['cloud'], enabled: true
49
+ }));
50
+ }
51
+ export class ElevenLabsProviderType {
52
+ descriptor;
53
+ context;
54
+ constructor(descriptor, context) {
55
+ this.descriptor = descriptor;
56
+ this.context = context;
57
+ }
58
+ async generate(provider, model, request, options) {
59
+ const speech = ElevenLabsSpeechSchema.safeParse(request);
60
+ if (!speech.success)
61
+ throw new CapabilityError('Invalid ElevenLabs speech request', 'INVALID_INPUT', { reason: 'speech-schema', cause: speech.error });
62
+ const ai = await getVibesAIClient(this.context.runtime);
63
+ const canonicalRequest = AnyGenerationRequestSchema.parse({ ...request, providerId: provider.id, modelId: model.id });
64
+ if (canonicalRequest.modality !== 'speech' && canonicalRequest.modality !== 'audio') {
65
+ throw new CapabilityError('Invalid ElevenLabs speech modality', 'INVALID_INPUT', { reason: 'speech-schema' });
66
+ }
67
+ const generated = await ai.requestGeneration({ ...canonicalRequest, ...speech.data }, { ...options });
68
+ // SAFETY: AI returns the response for the validated request's modality; this legacy interface keeps it generic.
69
+ const response = generated;
70
+ return { response, adapterId: 'elevenlabs-tts', generationMethod: options?.generationMethod ?? 'direct' };
71
+ }
72
+ async detectInstalled() {
73
+ const detected = await detectElevenLabsSystem(this.context.runtime);
74
+ return detected ? [{ name: detected.name, source: 'system', config: { ...detected.configuration } }] : [];
75
+ }
76
+ async recommendModels(useCase) {
77
+ if (useCase === 'voice-cloning' || useCase === 'cloning') {
78
+ return [
79
+ {
80
+ modelId: 'eleven_multilingual_v2',
81
+ modelName: 'Eleven Multilingual v2',
82
+ score: 95,
83
+ reason: 'Best model for voice cloning with multilingual support',
84
+ capabilities: ['tts', 'voice-cloning', 'multilingual'],
85
+ useCaseFit: 95
86
+ }
87
+ ];
88
+ }
89
+ if (useCase && useCase !== 'audio' && useCase !== 'tts' && useCase !== 'speech')
90
+ return [];
91
+ return [
92
+ {
93
+ modelId: 'eleven_v3',
94
+ modelName: 'Eleven v3',
95
+ score: 97,
96
+ reason: 'Flagship expressive speech synthesis with broad multilingual support',
97
+ capabilities: ['tts', 'multilingual'],
98
+ useCaseFit: 97
99
+ },
100
+ {
101
+ modelId: 'eleven_multilingual_v2',
102
+ modelName: 'Eleven Multilingual v2',
103
+ score: 95,
104
+ reason: 'Stable, lifelike multilingual speech for long-form generation',
105
+ capabilities: ['tts', 'multilingual'],
106
+ useCaseFit: 95
107
+ },
108
+ {
109
+ modelId: 'eleven_flash_v2_5',
110
+ modelName: 'Eleven Flash v2.5',
111
+ score: 90,
112
+ reason: 'Current ultra-low-latency multilingual speech model',
113
+ capabilities: ['tts', 'streaming'],
114
+ useCaseFit: 90
115
+ }
116
+ ];
117
+ }
118
+ async resolveElevenLabsKey(value, options) {
119
+ assertNoPlaintextCredentials({ apiKey: value });
120
+ if (value.source === 'inline')
121
+ throw new CapabilityError('Inline credentials are refused', 'INVALID_INPUT', { reason: 'credential-inline' });
122
+ if (options?.resolveCredential)
123
+ return options.resolveCredential(value);
124
+ const resolved = await this.context.runtime.resolveCredential(value);
125
+ if (!resolved.ok) {
126
+ if (resolved.error.reason === 'credential-not-set')
127
+ return undefined;
128
+ throw resolved.error;
129
+ }
130
+ return resolved.value;
131
+ }
132
+ async catalog(provider, path, schema, options) {
133
+ const config = this.connection(provider.configuration);
134
+ const apiKey = await this.resolveElevenLabsKey(config.apiKey, options);
135
+ if (!apiKey)
136
+ return null;
137
+ const outcome = await settle(() => this.context.runtime.lifecycle.wait(async (signal) => {
138
+ const response = await fetchAIProvider(this.context, `${config.baseUrl.replace(/\/$/, '')}/${path}`, { headers: { 'xi-api-key': apiKey }, signal, redirect: 'error' });
139
+ if (response.status === 404) {
140
+ await response.body?.cancel();
141
+ return null;
142
+ }
143
+ if (!response.ok) {
144
+ await response.body?.cancel();
145
+ throw new CapabilityError('ElevenLabs HTTP request failed', 'UNAVAILABLE', { reason: 'upstream-http', details: { status: response.status } });
146
+ }
147
+ const parsed = schema.safeParse(await response.json());
148
+ if (!parsed.success)
149
+ throw new CapabilityError('Invalid ElevenLabs catalog response', 'UNAVAILABLE', { reason: 'catalog-schema', cause: parsed.error });
150
+ return parsed.data;
151
+ }, { timeoutMs: options?.timeout ?? config.timeout, signal: options?.signal, reason: 'elevenlabs catalog' }));
152
+ if (!outcome.ok) {
153
+ const failure = CapabilityError.from(outcome.cause);
154
+ if (failure.code === 'CANCELLED' || failure.code === 'TIMEOUT')
155
+ return null;
156
+ throw new CapabilityError('ElevenLabs catalog request failed', 'UNAVAILABLE', { reason: 'catalog-request', cause: failure });
157
+ }
158
+ return outcome.value;
159
+ }
160
+ async listVoices(provider, options) {
161
+ const catalog = await this.catalog(provider, 'voices?show_legacy=true', ElevenLabsVoicesSchema, options);
162
+ return catalog === null ? null : projectVoices(provider.id, catalog);
163
+ }
164
+ async listModels(provider, options) {
165
+ const catalog = await this.catalog(provider, 'models', ElevenLabsModelsSchema, options);
166
+ return catalog === null ? null : projectModels(provider.id, catalog);
167
+ }
168
+ connection(config) {
169
+ const result = elevenlabsConnectionSchema.safeParse(config);
170
+ if (!result.success)
171
+ throw new CapabilityError('Invalid ElevenLabs connection', 'INVALID_INPUT', { reason: 'connection-schema', cause: result.error });
172
+ return result.data;
173
+ }
174
+ async checkHealth(config, options) {
175
+ const start = Date.now();
176
+ const connection = this.connection(config);
177
+ const apiKey = await this.resolveElevenLabsKey(connection.apiKey, options);
178
+ if (!apiKey)
179
+ return { healthy: false, error: { code: 'MISSING_API_KEY', message: 'ElevenLabs credential is unavailable' }, checkedAt: new Date() };
180
+ const result = await probeProviderHealth({ runtime: this.context.runtime,
181
+ url: `${connection.baseUrl.replace(/\/$/, '')}/user`, headers: { 'xi-api-key': apiKey },
182
+ timeoutMs: options?.timeout ?? connection.timeout, signal: options?.signal });
183
+ if (!result.ok) {
184
+ getLogger('integrations-elevenlabs', this.context.runtime).warn('ElevenLabs health probe failed', { code: result.code, cause: result.cause });
185
+ }
186
+ return { healthy: result.ok, latencyMs: Date.now() - start, checkedAt: new Date(),
187
+ error: result.ok ? undefined : { code: result.code, message: result.message },
188
+ availableModalities: result.ok ? ['audio'] : undefined };
189
+ }
190
+ async validateConnection(config) {
191
+ const parsed = elevenlabsConnectionSchema.safeParse(config);
192
+ return parsed.success ? { valid: true } : { valid: false, errors: ['Invalid ElevenLabs connection'] };
193
+ }
194
+ async dispose() { }
195
+ }
196
+ //# sourceMappingURL=elevenlabs.provider.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs.provider.impl.js","sourceRoot":"","sources":["../../../../src/ai/providers/elevenlabs/elevenlabs.provider.impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { ElevenLabsProviderType, parseElevenLabsModels, parseElevenLabsVoices } from './elevenlabs.provider.impl.ts';
2
+ export { detectElevenLabsSystem } from './detection/system.ts';
3
+ export { ElevenLabsRecommendation } from './recommendations.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/elevenlabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACrH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ElevenLabsProviderType, parseElevenLabsModels, parseElevenLabsVoices } from "./elevenlabs.provider.impl.js";
2
+ export { detectElevenLabsSystem } from "./detection/system.js";
3
+ export { ElevenLabsRecommendation } from "./recommendations.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/providers/elevenlabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACrH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { ProviderRecommendation, type ModelAdapter } from '@vibesdotdev/ai/recommendations/base';
2
+ import type { ModelRecommendation, RecommendationContext, SetupMethod, SetupStep, UseCase } from '@vibesdotdev/ai/recommendations/schemas';
3
+ export declare class ElevenLabsRecommendation extends ProviderRecommendation {
4
+ readonly providerType = "elevenlabs";
5
+ readonly displayName = "ElevenLabs";
6
+ getUseCaseScore(useCase: UseCase): number;
7
+ getStageScore(stage: RecommendationContext['stage']): number;
8
+ getRequiredEnvironmentVariables(): string[];
9
+ getReason(useCase: UseCase): string;
10
+ getStrengths(): string[];
11
+ getWeaknesses(context: RecommendationContext): string[];
12
+ getSupportedSetupMethods(): SetupMethod[];
13
+ getSetupSteps(method: SetupMethod): Promise<SetupStep[]>;
14
+ recommendModels(_adapter: ModelAdapter | null, context: RecommendationContext): Promise<ModelRecommendation[]>;
15
+ getExecutionContext(): {
16
+ recommendModels: "server";
17
+ getSetupSteps: "both";
18
+ };
19
+ supportsOAuth(): boolean;
20
+ supportsLocal(): boolean;
21
+ requiresGPU(): boolean;
22
+ }
23
+ //# sourceMappingURL=recommendations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/elevenlabs/recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACjG,OAAO,KAAK,EACX,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,yCAAyC,CAAC;AAEjD,qBAAa,wBAAyB,SAAQ,sBAAsB;IACnE,QAAQ,CAAC,YAAY,gBAAgB;IACrC,QAAQ,CAAC,WAAW,gBAAgB;IACpC,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAKzC,aAAa,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,MAAM;IAG5D,+BAA+B,IAAI,MAAM,EAAE;IAG3C,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAKnC,YAAY,IAAI,MAAM,EAAE;IAGxB,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,EAAE;IAGvD,wBAAwB,IAAI,WAAW,EAAE;IAGnC,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBxD,eAAe,CACpB,QAAQ,EAAE,YAAY,GAAG,IAAI,EAC7B,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAejC,mBAAmB;;;;IAGnB,aAAa,IAAI,OAAO;IAGxB,aAAa,IAAI,OAAO;IAGxB,WAAW,IAAI,OAAO;CAGtB"}
@@ -0,0 +1,73 @@
1
+ import { ProviderRecommendation } from '@vibesdotdev/ai/recommendations/base';
2
+ export class ElevenLabsRecommendation extends ProviderRecommendation {
3
+ providerType = 'elevenlabs';
4
+ displayName = 'ElevenLabs';
5
+ getUseCaseScore(useCase) {
6
+ return { chat: 0, development: 15, research: 20, images: 0, video: 0, audio: 50, organization: 8 }[useCase];
7
+ }
8
+ getStageScore(stage) {
9
+ return stage === 'production' ? 18 : 0;
10
+ }
11
+ getRequiredEnvironmentVariables() {
12
+ return ['ELEVENLABS_API_KEY'];
13
+ }
14
+ getReason(useCase) {
15
+ return useCase === 'audio'
16
+ ? 'Natural multilingual speech synthesis and voice cloning'
17
+ : 'Cloud TTS when spoken output is part of the workflow';
18
+ }
19
+ getStrengths() {
20
+ return ['Expressive multilingual TTS', 'Voice cloning', 'Low-latency Flash models'];
21
+ }
22
+ getWeaknesses(context) {
23
+ return context.requiresLocal ? ['No local inference deployment'] : [];
24
+ }
25
+ getSupportedSetupMethods() {
26
+ return ['api_key', 'env_var'];
27
+ }
28
+ async getSetupSteps(method) {
29
+ if (method === 'api_key') {
30
+ return [
31
+ {
32
+ step: 'Store ElevenLabs API key',
33
+ description: 'Create and store an ElevenLabs key through the Vibes credential boundary.',
34
+ action: 'https://elevenlabs.io/app/settings/api-keys'
35
+ }
36
+ ];
37
+ }
38
+ return [
39
+ {
40
+ step: 'Bind environment credential',
41
+ description: 'Bind ELEVENLABS_API_KEY through the runtime environment.'
42
+ }
43
+ ];
44
+ }
45
+ async recommendModels(_adapter, context) {
46
+ return [
47
+ {
48
+ modelId: 'eleven_v3',
49
+ modelName: 'Eleven v3',
50
+ score: context.useCase === 'audio' ? 97 : 90,
51
+ reason: 'Flagship expressive speech synthesis',
52
+ contextWindow: 0,
53
+ capabilities: ['tts', 'multilingual'],
54
+ isAvailable: true,
55
+ requiresUpgrade: false,
56
+ useCaseFit: context.useCase === 'audio' ? 97 : 90
57
+ }
58
+ ];
59
+ }
60
+ getExecutionContext() {
61
+ return { recommendModels: 'server', getSetupSteps: 'both' };
62
+ }
63
+ supportsOAuth() {
64
+ return false;
65
+ }
66
+ supportsLocal() {
67
+ return false;
68
+ }
69
+ requiresGPU() {
70
+ return false;
71
+ }
72
+ }
73
+ //# sourceMappingURL=recommendations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendations.js","sourceRoot":"","sources":["../../../../src/ai/providers/elevenlabs/recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAqB,MAAM,sCAAsC,CAAC;AASjG,MAAM,OAAO,wBAAyB,SAAQ,sBAAsB;IAC1D,YAAY,GAAG,YAAY,CAAC;IAC5B,WAAW,GAAG,YAAY,CAAC;IACpC,eAAe,CAAC,OAAgB;QAC/B,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CACjG,OAAO,CACP,CAAC;IACH,CAAC;IACD,aAAa,CAAC,KAAqC;QAClD,OAAO,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,+BAA+B;QAC9B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/B,CAAC;IACD,SAAS,CAAC,OAAgB;QACzB,OAAO,OAAO,KAAK,OAAO;YACzB,CAAC,CAAC,yDAAyD;YAC3D,CAAC,CAAC,sDAAsD,CAAC;IAC3D,CAAC;IACD,YAAY;QACX,OAAO,CAAC,6BAA6B,EAAE,eAAe,EAAE,0BAA0B,CAAC,CAAC;IACrF,CAAC;IACD,aAAa,CAAC,OAA8B;QAC3C,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IACD,wBAAwB;QACvB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,MAAmB;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;gBACN;oBACC,IAAI,EAAE,0BAA0B;oBAChC,WAAW,EAAE,2EAA2E;oBACxF,MAAM,EAAE,6CAA6C;iBACrD;aACD,CAAC;QACH,CAAC;QACD,OAAO;YACN;gBACC,IAAI,EAAE,6BAA6B;gBACnC,WAAW,EAAE,0DAA0D;aACvE;SACD,CAAC;IACH,CAAC;IACD,KAAK,CAAC,eAAe,CACpB,QAA6B,EAC7B,OAA8B;QAE9B,OAAO;YACN;gBACC,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC5C,MAAM,EAAE,sCAAsC;gBAC9C,aAAa,EAAE,CAAC;gBAChB,YAAY,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;gBACrC,WAAW,EAAE,IAAI;gBACjB,eAAe,EAAE,KAAK;gBACtB,UAAU,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;aACjD;SACD,CAAC;IACH,CAAC;IACD,mBAAmB;QAClB,OAAO,EAAE,eAAe,EAAE,QAAiB,EAAE,aAAa,EAAE,MAAe,EAAE,CAAC;IAC/E,CAAC;IACD,aAAa;QACZ,OAAO,KAAK,CAAC;IACd,CAAC;IACD,aAAa;QACZ,OAAO,KAAK,CAAC;IACd,CAAC;IACD,WAAW;QACV,OAAO,KAAK,CAAC;IACd,CAAC;CACD"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * `spec-elevenlabs-tts` — ElevenLabs REST text-to-speech dialect.
3
+ *
4
+ * POST `{baseUrl}/text-to-speech/{voiceId}?output_format=<fmt>` with
5
+ * JSON body `{ text, model_id, voice_settings }`. Header
6
+ * `xi-api-key: <key>`. Response is binary audio bytes.
7
+ *
8
+ * Universal scope. Realtime streaming via WebSocket is a future
9
+ * spec — `spec-elevenlabs-tts-ws` — over `transport-ws`.
10
+ */
11
+ declare const _default: {
12
+ id: string;
13
+ kind: "ai/spec";
14
+ name: string;
15
+ description: string;
16
+ modalities: ("image" | "text" | "audio" | "video" | "embedding" | "transcription" | "evaluation" | "speech" | "ocr")[];
17
+ streamFraming: "none" | "sse" | "sse-named" | "ndjson" | "binary-chunked" | "ws-frame";
18
+ toolCallEnvelope: string;
19
+ transports: string[];
20
+ external: boolean;
21
+ priority: number;
22
+ enabled: boolean;
23
+ capabilities?: ("streaming" | "json_mode" | "text_generation" | "chat_completion" | "function_calling" | "embedding_generation" | "image_generation_text_to_image" | "image_generation_image_to_image" | "image_generation_inpainting" | "image_generation_outpainting" | "image_upscaling" | "image_editing_via_instructions" | "audio_generation_text_to_speech" | "audio_generation_voice_cloning" | "audio_generation_music" | "audio_generation_sound_effects" | "audio_transcription" | "audio_transcription_realtime" | "video_generation_text_to_video" | "workflow_execution" | "code_generation" | "image_understanding" | "structured_evaluation")[] | undefined;
24
+ imageControls?: {
25
+ steps: boolean;
26
+ cfg: boolean;
27
+ sampler: boolean;
28
+ scheduler: boolean;
29
+ negativePrompt: boolean;
30
+ seed: boolean;
31
+ } | undefined;
32
+ tags?: string[] | undefined;
33
+ };
34
+ export default _default;
35
+ //# sourceMappingURL=elevenlabs-tts.spec.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-tts.spec.descriptor.d.ts","sourceRoot":"","sources":["../../../../src/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.descriptor.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAYG"}
@@ -0,0 +1,24 @@
1
+ import { createAISpecDescriptor } from '@vibesdotdev/ai/specs/schemas/descriptor';
2
+ /**
3
+ * `spec-elevenlabs-tts` — ElevenLabs REST text-to-speech dialect.
4
+ *
5
+ * POST `{baseUrl}/text-to-speech/{voiceId}?output_format=<fmt>` with
6
+ * JSON body `{ text, model_id, voice_settings }`. Header
7
+ * `xi-api-key: <key>`. Response is binary audio bytes.
8
+ *
9
+ * Universal scope. Realtime streaming via WebSocket is a future
10
+ * spec — `spec-elevenlabs-tts-ws` — over `transport-ws`.
11
+ */
12
+ export default createAISpecDescriptor({
13
+ id: 'elevenlabs-tts',
14
+ name: 'ElevenLabs REST TTS',
15
+ description: 'POST /text-to-speech/{voiceId} with JSON body; binary audio response.',
16
+ modalities: ['speech', 'audio'],
17
+ streamFraming: 'binary-chunked',
18
+ toolCallEnvelope: 'none',
19
+ transports: ['fetch'],
20
+ capabilities: ['audio_generation_text_to_speech', 'audio_generation_voice_cloning'],
21
+ priority: 100,
22
+ tags: ['elevenlabs', 'tts', 'rest']
23
+ });
24
+ //# sourceMappingURL=elevenlabs-tts.spec.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-tts.spec.descriptor.js","sourceRoot":"","sources":["../../../../src/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF;;;;;;;;;GASG;AACH,eAAe,sBAAsB,CAAC;IACrC,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACV,uEAAuE;IACxE,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM;IACxB,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,YAAY,EAAE,CAAC,iCAAiC,EAAE,gCAAgC,CAAC;IACnF,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC;CACnC,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { AISpecInterface, DecodedEvent, SpecCallContext, WireRequest, WireResponseChunk } from '@vibesdotdev/ai/specs/interfaces';
2
+ import type { GenerationRequest } from '@vibesdotdev/ai/interfaces';
3
+ import type { Modality } from '@vibesdotdev/ai/models/schemas';
4
+ export default class ElevenLabsTtsSpec implements AISpecInterface {
5
+ readonly descriptor: {
6
+ id: string;
7
+ kind: "ai/spec";
8
+ name: string;
9
+ description: string;
10
+ modalities: ("image" | "text" | "audio" | "video" | "embedding" | "transcription" | "evaluation" | "speech" | "ocr")[];
11
+ streamFraming: "none" | "sse" | "sse-named" | "ndjson" | "binary-chunked" | "ws-frame";
12
+ toolCallEnvelope: string;
13
+ transports: string[];
14
+ external: boolean;
15
+ priority: number;
16
+ enabled: boolean;
17
+ capabilities?: ("streaming" | "json_mode" | "text_generation" | "chat_completion" | "function_calling" | "embedding_generation" | "image_generation_text_to_image" | "image_generation_image_to_image" | "image_generation_inpainting" | "image_generation_outpainting" | "image_upscaling" | "image_editing_via_instructions" | "audio_generation_text_to_speech" | "audio_generation_voice_cloning" | "audio_generation_music" | "audio_generation_sound_effects" | "audio_transcription" | "audio_transcription_realtime" | "video_generation_text_to_video" | "workflow_execution" | "code_generation" | "image_understanding" | "structured_evaluation")[] | undefined;
18
+ imageControls?: {
19
+ steps: boolean;
20
+ cfg: boolean;
21
+ sampler: boolean;
22
+ scheduler: boolean;
23
+ negativePrompt: boolean;
24
+ seed: boolean;
25
+ } | undefined;
26
+ tags?: string[] | undefined;
27
+ };
28
+ encodeRequest<M extends Modality>(request: GenerationRequest<M>, context: SpecCallContext): WireRequest;
29
+ decodeResponse<M extends Modality>(chunks: AsyncIterable<WireResponseChunk>, request: GenerationRequest<M>, context: SpecCallContext): AsyncIterable<DecodedEvent<M>>;
30
+ }
31
+ //# sourceMappingURL=elevenlabs-tts.spec.impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-tts.spec.impl.d.ts","sourceRoot":"","sources":["../../../../src/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.impl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACvI,OAAO,KAAK,EAAmD,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACrH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAI/D,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,eAAe;IAChE,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;MAAc;IAEjC,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,WAAW;IAmBhG,cAAc,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAoE5K"}
@@ -0,0 +1,103 @@
1
+ import { CapabilityError } from '@vibesdotdev/kernel';
2
+ import { ElevenLabsSpeechSchema, ElevenLabsContextSchema, AudioHeadersSchema, WavBytesSchema, elevenLabsFormats } from "../../../schemas/speech.js";
3
+ import descriptor from "./elevenlabs-tts.spec.descriptor.js";
4
+ export default class ElevenLabsTtsSpec {
5
+ descriptor = descriptor;
6
+ encodeRequest(request, context) {
7
+ const parsed = ElevenLabsSpeechSchema.safeParse(request);
8
+ if (!parsed.success)
9
+ throw new CapabilityError('Invalid ElevenLabs speech request', 'INVALID_INPUT', { reason: 'speech-schema', cause: parsed.error });
10
+ const model = ElevenLabsContextSchema.safeParse(context);
11
+ if (!model.success)
12
+ throw new CapabilityError('Missing ElevenLabs wire model', 'INVALID_INPUT', { reason: 'wire-model', cause: model.error });
13
+ const speech = parsed.data;
14
+ return {
15
+ method: 'POST',
16
+ path: `/text-to-speech/${encodeURIComponent(speech.voiceId ?? speech.voice)}?output_format=${elevenLabsFormats[speech.format]}`,
17
+ headers: { 'Content-Type': 'application/json', Accept: 'audio/*' },
18
+ body: {
19
+ text: speech.text, model_id: model.data.wireModelId,
20
+ voice_settings: { stability: speech.stability, similarity_boost: speech.similarityBoost,
21
+ style: speech.style, use_speaker_boost: speech.useSpeakerBoost }
22
+ },
23
+ streaming: false
24
+ };
25
+ }
26
+ async *decodeResponse(chunks, request, context) {
27
+ const parsed = ElevenLabsSpeechSchema.safeParse(request);
28
+ if (!parsed.success) {
29
+ yield { kind: 'error', error: new CapabilityError('Invalid ElevenLabs speech request', 'INVALID_INPUT', { reason: 'speech-schema', cause: parsed.error }) };
30
+ return;
31
+ }
32
+ const collected = [];
33
+ let size = 0;
34
+ let expectedLength;
35
+ try {
36
+ for await (const chunk of chunks) {
37
+ if (chunk.kind === 'headers') {
38
+ if (chunk.status >= 400) {
39
+ yield { kind: 'error', error: new CapabilityError('ElevenLabs HTTP request failed', 'UNAVAILABLE', { reason: 'upstream-http', details: { status: chunk.status } }) };
40
+ return;
41
+ }
42
+ const headers = AudioHeadersSchema.safeParse(chunk.headers);
43
+ if (!headers.success) {
44
+ yield { kind: 'error', error: new CapabilityError('Invalid ElevenLabs audio headers', 'UNAVAILABLE', { reason: 'audio-headers', cause: headers.error }) };
45
+ return;
46
+ }
47
+ expectedLength = headers.data['content-length'];
48
+ }
49
+ else if (chunk.kind === 'bytes') {
50
+ collected.push(chunk.data);
51
+ size += chunk.data.byteLength;
52
+ }
53
+ else if (chunk.kind === 'error') {
54
+ yield { kind: 'error', error: new CapabilityError('ElevenLabs audio transport failed', 'UNAVAILABLE', { reason: 'audio-transport', cause: chunk.error }) };
55
+ return;
56
+ }
57
+ else if (chunk.kind === 'end') {
58
+ if (size === 0) {
59
+ yield { kind: 'error', error: new CapabilityError('Empty ElevenLabs audio response', 'UNAVAILABLE', { reason: 'audio-empty' }) };
60
+ return;
61
+ }
62
+ const merged = new Uint8Array(size);
63
+ let offset = 0;
64
+ for (const bytes of collected) {
65
+ merged.set(bytes, offset);
66
+ offset += bytes.length;
67
+ }
68
+ if ((expectedLength !== undefined && size !== expectedLength) ||
69
+ (parsed.data.format === 'pcm' && size % 2 !== 0)) {
70
+ yield { kind: 'error', error: new CapabilityError('Invalid or truncated ElevenLabs audio response', 'UNAVAILABLE', { reason: 'audio-truncated' }) };
71
+ return;
72
+ }
73
+ if (parsed.data.format === 'wav') {
74
+ const wav = WavBytesSchema.safeParse(merged);
75
+ if (!wav.success) {
76
+ const reason = wav.error.issues.some(issue => issue.message === 'audio-empty') ? 'audio-empty' : 'audio-truncated';
77
+ yield { kind: 'error', error: new CapabilityError('Invalid ElevenLabs WAV audio response', 'UNAVAILABLE', { reason, cause: wav.error }) };
78
+ return;
79
+ }
80
+ }
81
+ let binary = '';
82
+ for (const byte of merged)
83
+ binary += String.fromCharCode(byte);
84
+ const result = {
85
+ id: `${context.providerId}.${context.variantId}.${Date.now()}`,
86
+ timestamp: new Date(), audio: btoa(binary), format: parsed.data.format,
87
+ metadata: { modelVersion: context.wireModelId, byteLength: size }
88
+ };
89
+ const response = result;
90
+ // SAFETY: the validated speech/audio modalities both return the owner's base audio result.
91
+ yield { kind: 'result', result: response };
92
+ return;
93
+ }
94
+ }
95
+ }
96
+ catch (error) {
97
+ yield { kind: 'error', error: new CapabilityError('ElevenLabs audio transport failed', 'UNAVAILABLE', { reason: 'audio-transport', cause: error }) };
98
+ return;
99
+ }
100
+ yield { kind: 'error', error: new CapabilityError('Incomplete ElevenLabs audio response', 'UNAVAILABLE', { reason: 'audio-truncated' }) };
101
+ }
102
+ }
103
+ //# sourceMappingURL=elevenlabs-tts.spec.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-tts.spec.impl.js","sourceRoot":"","sources":["../../../../src/ai/specs/elevenlabs-tts/elevenlabs-tts.spec.impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './ai/index.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./ai/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}