@framers/agentos 0.1.227 → 0.1.229

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 (87) hide show
  1. package/README.md +1 -0
  2. package/dist/api/editImage.d.ts +21 -0
  3. package/dist/api/editImage.d.ts.map +1 -1
  4. package/dist/api/editImage.js +30 -2
  5. package/dist/api/editImage.js.map +1 -1
  6. package/dist/api/generateImage.d.ts +12 -1
  7. package/dist/api/generateImage.d.ts.map +1 -1
  8. package/dist/api/generateImage.js +7 -2
  9. package/dist/api/generateImage.js.map +1 -1
  10. package/dist/core/llm/providers/implementations/AnthropicProvider.d.ts.map +1 -1
  11. package/dist/core/llm/providers/implementations/AnthropicProvider.js +71 -12
  12. package/dist/core/llm/providers/implementations/AnthropicProvider.js.map +1 -1
  13. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -1
  14. package/dist/core/llm/providers/implementations/OpenAIProvider.js +38 -11
  15. package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -1
  16. package/dist/media/images/providers/ReplicateImageProvider.d.ts.map +1 -1
  17. package/dist/media/images/providers/ReplicateImageProvider.js +7 -0
  18. package/dist/media/images/providers/ReplicateImageProvider.js.map +1 -1
  19. package/dist/voice-pipeline/AudioRingBuffer.d.ts +28 -0
  20. package/dist/voice-pipeline/AudioRingBuffer.d.ts.map +1 -0
  21. package/dist/voice-pipeline/AudioRingBuffer.js +43 -0
  22. package/dist/voice-pipeline/AudioRingBuffer.js.map +1 -0
  23. package/dist/voice-pipeline/CircuitBreaker.d.ts +42 -0
  24. package/dist/voice-pipeline/CircuitBreaker.d.ts.map +1 -0
  25. package/dist/voice-pipeline/CircuitBreaker.js +96 -0
  26. package/dist/voice-pipeline/CircuitBreaker.js.map +1 -0
  27. package/dist/voice-pipeline/HealthyProvider.d.ts +44 -0
  28. package/dist/voice-pipeline/HealthyProvider.d.ts.map +1 -0
  29. package/dist/voice-pipeline/HealthyProvider.js +29 -0
  30. package/dist/voice-pipeline/HealthyProvider.js.map +1 -0
  31. package/dist/voice-pipeline/TranscriptDedupe.d.ts +43 -0
  32. package/dist/voice-pipeline/TranscriptDedupe.d.ts.map +1 -0
  33. package/dist/voice-pipeline/TranscriptDedupe.js +96 -0
  34. package/dist/voice-pipeline/TranscriptDedupe.js.map +1 -0
  35. package/dist/voice-pipeline/VoiceMetricsReporter.d.ts +48 -0
  36. package/dist/voice-pipeline/VoiceMetricsReporter.d.ts.map +1 -0
  37. package/dist/voice-pipeline/VoiceMetricsReporter.js +33 -0
  38. package/dist/voice-pipeline/VoiceMetricsReporter.js.map +1 -0
  39. package/dist/voice-pipeline/VoicePipelineError.d.ts +44 -0
  40. package/dist/voice-pipeline/VoicePipelineError.d.ts.map +1 -0
  41. package/dist/voice-pipeline/VoicePipelineError.js +74 -0
  42. package/dist/voice-pipeline/VoicePipelineError.js.map +1 -0
  43. package/dist/voice-pipeline/env-constructor.d.ts +48 -0
  44. package/dist/voice-pipeline/env-constructor.d.ts.map +1 -0
  45. package/dist/voice-pipeline/env-constructor.js +85 -0
  46. package/dist/voice-pipeline/env-constructor.js.map +1 -0
  47. package/dist/voice-pipeline/index.d.ts +8 -1
  48. package/dist/voice-pipeline/index.d.ts.map +1 -1
  49. package/dist/voice-pipeline/index.js +9 -1
  50. package/dist/voice-pipeline/index.js.map +1 -1
  51. package/dist/voice-pipeline/providers/DeepgramStreamingSTT.d.ts +24 -1
  52. package/dist/voice-pipeline/providers/DeepgramStreamingSTT.d.ts.map +1 -1
  53. package/dist/voice-pipeline/providers/DeepgramStreamingSTT.js +51 -0
  54. package/dist/voice-pipeline/providers/DeepgramStreamingSTT.js.map +1 -1
  55. package/dist/voice-pipeline/providers/ElevenLabsBatchTTS.d.ts +17 -1
  56. package/dist/voice-pipeline/providers/ElevenLabsBatchTTS.d.ts.map +1 -1
  57. package/dist/voice-pipeline/providers/ElevenLabsBatchTTS.js +46 -0
  58. package/dist/voice-pipeline/providers/ElevenLabsBatchTTS.js.map +1 -1
  59. package/dist/voice-pipeline/providers/ElevenLabsStreamingSTT.d.ts +16 -1
  60. package/dist/voice-pipeline/providers/ElevenLabsStreamingSTT.d.ts.map +1 -1
  61. package/dist/voice-pipeline/providers/ElevenLabsStreamingSTT.js +46 -0
  62. package/dist/voice-pipeline/providers/ElevenLabsStreamingSTT.js.map +1 -1
  63. package/dist/voice-pipeline/providers/ElevenLabsStreamingTTS.d.ts +16 -1
  64. package/dist/voice-pipeline/providers/ElevenLabsStreamingTTS.d.ts.map +1 -1
  65. package/dist/voice-pipeline/providers/ElevenLabsStreamingTTS.js +46 -0
  66. package/dist/voice-pipeline/providers/ElevenLabsStreamingTTS.js.map +1 -1
  67. package/dist/voice-pipeline/providers/OpenAIBatchTTS.d.ts +16 -1
  68. package/dist/voice-pipeline/providers/OpenAIBatchTTS.d.ts.map +1 -1
  69. package/dist/voice-pipeline/providers/OpenAIBatchTTS.js +46 -0
  70. package/dist/voice-pipeline/providers/OpenAIBatchTTS.js.map +1 -1
  71. package/dist/voice-pipeline/providers/OpenAIRealtimeTTS.d.ts +16 -1
  72. package/dist/voice-pipeline/providers/OpenAIRealtimeTTS.d.ts.map +1 -1
  73. package/dist/voice-pipeline/providers/OpenAIRealtimeTTS.js +46 -0
  74. package/dist/voice-pipeline/providers/OpenAIRealtimeTTS.js.map +1 -1
  75. package/dist/voice-pipeline/providers/StreamingSTTChain.d.ts +78 -0
  76. package/dist/voice-pipeline/providers/StreamingSTTChain.d.ts.map +1 -0
  77. package/dist/voice-pipeline/providers/StreamingSTTChain.js +225 -0
  78. package/dist/voice-pipeline/providers/StreamingSTTChain.js.map +1 -0
  79. package/dist/voice-pipeline/providers/StreamingTTSChain.d.ts +67 -0
  80. package/dist/voice-pipeline/providers/StreamingTTSChain.d.ts.map +1 -0
  81. package/dist/voice-pipeline/providers/StreamingTTSChain.js +212 -0
  82. package/dist/voice-pipeline/providers/StreamingTTSChain.js.map +1 -0
  83. package/dist/voice-pipeline/providers/index.d.ts +2 -0
  84. package/dist/voice-pipeline/providers/index.d.ts.map +1 -1
  85. package/dist/voice-pipeline/providers/index.js +2 -0
  86. package/dist/voice-pipeline/providers/index.js.map +1 -1
  87. package/package.json +1 -1
@@ -0,0 +1,212 @@
1
+ /**
2
+ * @module voice-pipeline/providers/StreamingTTSChain
3
+ *
4
+ * Priority-ordered fallback wrapper around multiple `IStreamingTTS`
5
+ * providers. Mirrors `StreamingSTTChain` semantics for outbound synthesis.
6
+ *
7
+ * Mid-synthesis failover is simpler than mid-utterance STT failover
8
+ * because TTS is one-way (text in, audio out). The chain accumulates
9
+ * tokens pushed to the primary and, on primary failure, re-sends them
10
+ * to the backup. Clients may use the first backup audio chunk's
11
+ * `fadeInMs` hint to crossfade between timbres.
12
+ */
13
+ import { EventEmitter } from 'node:events';
14
+ import { VoicePipelineError, AggregateVoiceError, } from '../VoicePipelineError.js';
15
+ export class StreamingTTSChain {
16
+ constructor(providers, opts = {}) {
17
+ this.providerId = 'chain';
18
+ if (providers.length === 0) {
19
+ throw new Error('StreamingTTSChain requires at least one provider');
20
+ }
21
+ this._providers = [...providers].sort((a, b) => a.priority - b.priority);
22
+ this.opts = opts;
23
+ }
24
+ get providers() {
25
+ return this._providers;
26
+ }
27
+ get currentProviderId() {
28
+ return this.activeProviderId;
29
+ }
30
+ async startSession(config) {
31
+ const candidates = this.filterCandidates();
32
+ if (candidates.length === 0) {
33
+ this.emitMetric({
34
+ type: 'provider_unavailable',
35
+ kind: 'tts',
36
+ checkedProviders: this._providers.map((p) => p.providerId),
37
+ });
38
+ throw new Error('No TTS providers available (all tripped or filtered)');
39
+ }
40
+ const attempts = [];
41
+ for (let i = 0; i < candidates.length; i++) {
42
+ const provider = candidates[i];
43
+ try {
44
+ const session = await provider.startSession(config);
45
+ this.activeProviderId = provider.providerId;
46
+ const evt = {
47
+ kind: 'tts',
48
+ providerId: provider.providerId,
49
+ attempt: i + 1,
50
+ };
51
+ this.opts.onProviderSelected?.(evt);
52
+ this.emitMetric({ type: 'provider_selected', ...evt });
53
+ this.opts.breaker?.recordSuccess(provider.providerId);
54
+ return this.wrapSession(session, provider, candidates.slice(i + 1), config);
55
+ }
56
+ catch (err) {
57
+ const classified = VoicePipelineError.classifyError(err, {
58
+ kind: 'tts',
59
+ provider: provider.providerId,
60
+ });
61
+ attempts.push(classified);
62
+ const failEvt = {
63
+ kind: 'tts',
64
+ providerId: provider.providerId,
65
+ errorClass: classified.errorClass,
66
+ message: classified.message,
67
+ };
68
+ this.opts.onProviderFailed?.(failEvt);
69
+ this.emitMetric({ type: 'provider_failed', ...failEvt });
70
+ this.opts.breaker?.recordFailure(provider.providerId, classified.errorClass);
71
+ }
72
+ }
73
+ this.emitMetric({
74
+ type: 'provider_unavailable',
75
+ kind: 'tts',
76
+ checkedProviders: candidates.map((p) => p.providerId),
77
+ });
78
+ throw new AggregateVoiceError(attempts);
79
+ }
80
+ filterCandidates() {
81
+ if (!this.opts.breaker)
82
+ return this._providers;
83
+ return this._providers.filter((p) => this.opts.breaker.isAvailable(p.providerId));
84
+ }
85
+ /**
86
+ * Wraps a session for mid-synthesis failover. The facade tees pushTokens
87
+ * calls into an accumulator and, when the primary emits 'error',
88
+ * opens a new session on the next backup and replays the accumulator
89
+ * before returning control.
90
+ */
91
+ wrapSession(initial, initialProvider, candidates, config) {
92
+ if (!this.opts.enableMidSynthesisFailover)
93
+ return initial;
94
+ const facade = new EventEmitter();
95
+ const tokensSinceFlush = [];
96
+ let currentSession = initial;
97
+ let currentProvider = initialProvider;
98
+ let remaining = [...candidates];
99
+ let isFailingOver = false;
100
+ const attach = (session, _providerId) => {
101
+ session.on('audio', (chunk) => {
102
+ facade.emit('audio', chunk);
103
+ });
104
+ session.on('flush_complete', () => {
105
+ tokensSinceFlush.length = 0;
106
+ facade.emit('flush_complete');
107
+ });
108
+ session.on('error', (err) => {
109
+ void tryFailover(err);
110
+ });
111
+ session.on('close', () => {
112
+ if (!isFailingOver && currentSession === session) {
113
+ void tryFailover(undefined);
114
+ }
115
+ });
116
+ };
117
+ const tryFailover = async (err) => {
118
+ if (isFailingOver)
119
+ return;
120
+ isFailingOver = true;
121
+ const startedAt = Date.now();
122
+ const classified = VoicePipelineError.classifyError(err ?? new Error('session ended'), { kind: 'tts', provider: currentProvider.providerId });
123
+ this.opts.breaker?.recordFailure(currentProvider.providerId, classified.errorClass);
124
+ for (const backup of remaining) {
125
+ if (this.opts.breaker &&
126
+ !this.opts.breaker.isAvailable(backup.providerId)) {
127
+ continue;
128
+ }
129
+ try {
130
+ const session = await backup.startSession(config);
131
+ attach(session, backup.providerId);
132
+ // Replay everything accumulated since the last successful flush.
133
+ for (const t of tokensSinceFlush) {
134
+ try {
135
+ session.pushTokens(t);
136
+ }
137
+ catch {
138
+ /* tolerate per-token failures during replay */
139
+ }
140
+ }
141
+ currentSession = session;
142
+ currentProvider = backup;
143
+ remaining = remaining.filter((c) => c !== backup);
144
+ this.activeProviderId = backup.providerId;
145
+ const evt = {
146
+ kind: 'tts',
147
+ from: initialProvider.providerId,
148
+ to: backup.providerId,
149
+ reason: classified.errorClass,
150
+ lostMs: Date.now() - startedAt,
151
+ };
152
+ this.opts.onProviderFailover?.(evt);
153
+ this.emitMetric({ type: 'provider_failover', ...evt });
154
+ isFailingOver = false;
155
+ return;
156
+ }
157
+ catch (backupErr) {
158
+ const backClass = VoicePipelineError.classifyError(backupErr, {
159
+ kind: 'tts',
160
+ provider: backup.providerId,
161
+ });
162
+ this.opts.breaker?.recordFailure(backup.providerId, backClass.errorClass);
163
+ }
164
+ }
165
+ facade.emit('error', new AggregateVoiceError([classified]));
166
+ isFailingOver = false;
167
+ };
168
+ attach(initial, initialProvider.providerId);
169
+ const wrapped = Object.assign(facade, {
170
+ providerId: 'chain',
171
+ pushTokens: (tokens) => {
172
+ tokensSinceFlush.push(tokens);
173
+ try {
174
+ currentSession.pushTokens(tokens);
175
+ }
176
+ catch (err) {
177
+ void tryFailover(err);
178
+ }
179
+ },
180
+ flush: async () => {
181
+ try {
182
+ await currentSession.flush();
183
+ }
184
+ catch (err) {
185
+ void tryFailover(err);
186
+ }
187
+ },
188
+ cancel: () => {
189
+ tokensSinceFlush.length = 0;
190
+ try {
191
+ currentSession.cancel();
192
+ }
193
+ catch {
194
+ /* best-effort */
195
+ }
196
+ },
197
+ close: () => {
198
+ try {
199
+ currentSession.close();
200
+ }
201
+ catch {
202
+ /* best-effort */
203
+ }
204
+ },
205
+ });
206
+ return wrapped;
207
+ }
208
+ emitMetric(event) {
209
+ this.opts.metrics?.emit(event);
210
+ }
211
+ }
212
+ //# sourceMappingURL=StreamingTTSChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingTTSChain.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/StreamingTTSChain.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,6 @@ export { OpenAIBatchTTS, type OpenAIBatchTTSConfig } from './OpenAIBatchTTS.js';
17
17
  export { ElevenLabsBatchTTS, type ElevenLabsBatchTTSConfig } from './ElevenLabsBatchTTS.js';
18
18
  export { BatchTTSFallback } from './BatchTTSFallback.js';
19
19
  export { OpenAIRealtimeTTS, type OpenAIRealtimeTTSConfig } from './OpenAIRealtimeTTS.js';
20
+ export { StreamingSTTChain, type StreamingSTTChainOptions, type ProviderSelectedEvent, type ProviderFailedEvent, type ProviderFailoverEvent, } from './StreamingSTTChain.js';
21
+ export { StreamingTTSChain, type StreamingTTSChainOptions, type TTSProviderSelectedEvent, type TTSProviderFailedEvent, type TTSProviderFailoverEvent, } from './StreamingTTSChain.js';
20
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,oBAAoB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,sBAAsB,EACtB,KAAK,4BAA4B,GAClC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,KAAK,4BAA4B,GAClC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,oBAAoB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,sBAAsB,EACtB,KAAK,4BAA4B,GAClC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,KAAK,4BAA4B,GAClC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC"}
@@ -17,4 +17,6 @@ export { OpenAIBatchTTS } from './OpenAIBatchTTS.js';
17
17
  export { ElevenLabsBatchTTS } from './ElevenLabsBatchTTS.js';
18
18
  export { BatchTTSFallback } from './BatchTTSFallback.js';
19
19
  export { OpenAIRealtimeTTS } from './OpenAIRealtimeTTS.js';
20
+ export { StreamingSTTChain, } from './StreamingSTTChain.js';
21
+ export { StreamingTTSChain, } from './StreamingTTSChain.js';
20
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,oBAAoB,EAAmC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,cAAc,EAA6B,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAiC,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAgC,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/voice-pipeline/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,oBAAoB,EAAmC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,cAAc,EAA6B,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAiC,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAgC,MAAM,wBAAwB,CAAC;AACzF,OAAO,EACL,iBAAiB,GAKlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,GAKlB,MAAM,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@framers/agentos",
3
- "version": "0.1.227",
3
+ "version": "0.1.229",
4
4
  "description": "Modular AgentOS orchestration library",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",