@framers/agentos 0.9.30 → 0.9.32

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 (47) hide show
  1. package/README.md +21 -21
  2. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -1
  3. package/dist/core/llm/providers/implementations/OpenAIProvider.js +12 -2
  4. package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -1
  5. package/dist/core/llm/providers/implementations/openai-response-format-guard.d.ts +33 -0
  6. package/dist/core/llm/providers/implementations/openai-response-format-guard.d.ts.map +1 -0
  7. package/dist/core/llm/providers/implementations/openai-response-format-guard.js +60 -0
  8. package/dist/core/llm/providers/implementations/openai-response-format-guard.js.map +1 -0
  9. package/dist/io/speech/SpeechProviderResolver.d.ts.map +1 -1
  10. package/dist/io/speech/SpeechProviderResolver.js +1 -0
  11. package/dist/io/speech/SpeechProviderResolver.js.map +1 -1
  12. package/dist/io/speech/index.d.ts +1 -0
  13. package/dist/io/speech/index.d.ts.map +1 -1
  14. package/dist/io/speech/index.js +1 -0
  15. package/dist/io/speech/index.js.map +1 -1
  16. package/dist/io/speech/providerCatalog.d.ts.map +1 -1
  17. package/dist/io/speech/providerCatalog.js +12 -0
  18. package/dist/io/speech/providerCatalog.js.map +1 -1
  19. package/dist/io/speech/providers/DeepgramTextToSpeechProvider.d.ts +59 -0
  20. package/dist/io/speech/providers/DeepgramTextToSpeechProvider.d.ts.map +1 -0
  21. package/dist/io/speech/providers/DeepgramTextToSpeechProvider.js +147 -0
  22. package/dist/io/speech/providers/DeepgramTextToSpeechProvider.js.map +1 -0
  23. package/dist/io/voice-pipeline/env-constructor.d.ts +7 -0
  24. package/dist/io/voice-pipeline/env-constructor.d.ts.map +1 -1
  25. package/dist/io/voice-pipeline/env-constructor.js +7 -0
  26. package/dist/io/voice-pipeline/env-constructor.js.map +1 -1
  27. package/dist/io/voice-pipeline/index.d.ts +1 -1
  28. package/dist/io/voice-pipeline/index.d.ts.map +1 -1
  29. package/dist/io/voice-pipeline/index.js +1 -1
  30. package/dist/io/voice-pipeline/index.js.map +1 -1
  31. package/dist/io/voice-pipeline/providers/DeepgramAuraBatchTTS.d.ts +68 -0
  32. package/dist/io/voice-pipeline/providers/DeepgramAuraBatchTTS.d.ts.map +1 -0
  33. package/dist/io/voice-pipeline/providers/DeepgramAuraBatchTTS.js +157 -0
  34. package/dist/io/voice-pipeline/providers/DeepgramAuraBatchTTS.js.map +1 -0
  35. package/dist/io/voice-pipeline/providers/DeepgramAuraStreamingTTS.d.ts +67 -0
  36. package/dist/io/voice-pipeline/providers/DeepgramAuraStreamingTTS.d.ts.map +1 -0
  37. package/dist/io/voice-pipeline/providers/DeepgramAuraStreamingTTS.js +230 -0
  38. package/dist/io/voice-pipeline/providers/DeepgramAuraStreamingTTS.js.map +1 -0
  39. package/dist/io/voice-pipeline/providers/index.d.ts +2 -0
  40. package/dist/io/voice-pipeline/providers/index.d.ts.map +1 -1
  41. package/dist/io/voice-pipeline/providers/index.js +2 -0
  42. package/dist/io/voice-pipeline/providers/index.js.map +1 -1
  43. package/dist/safety/provenance/anchoring/providers/createAnchorProvider.d.ts +1 -1
  44. package/dist/safety/provenance/anchoring/providers/createAnchorProvider.js +1 -1
  45. package/dist/safety/provenance/index.d.ts +1 -1
  46. package/dist/safety/provenance/index.js +1 -1
  47. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeepgramAuraStreamingTTS.d.ts","sourceRoot":"","sources":["../../../../src/io/voice-pipeline/providers/DeepgramAuraStreamingTTS.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAiB/B,uEAAuE;AACvE,MAAM,WAAW,8BAA8B;IAC7C,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7C,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/F;AA8ID;;;;;;;;;;;;GAYG;AACH,qBAAa,wBAAyB,YAAW,aAAa,EAAE,eAAe;IAOjE,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,QAAQ,CAAC,UAAU,mBAAmB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6D;gBAE5D,MAAM,EAAE,8BAA8B;IAa7D,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA0BzC,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAM9E"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * @module voice-pipeline/providers/DeepgramAuraStreamingTTS
3
+ *
4
+ * Streaming text-to-speech adapter for Deepgram Aura over WebSocket,
5
+ * implementing {@link IStreamingTTS} / {@link StreamingTTSSession} for
6
+ * {@link VoicePipelineOrchestrator}.
7
+ *
8
+ * ## Deepgram Aura WebSocket protocol
9
+ *
10
+ * - **Endpoint:** `wss://api.deepgram.com/v1/speak?model={voice}&encoding={enc}`
11
+ * - **Authentication:** `Authorization: Token {apiKey}` header (same as REST).
12
+ * - **Inbound (client → Deepgram):** JSON control frames —
13
+ * `{ "type": "Speak", "text": "..." }`, `{ "type": "Flush" }`, `{ "type": "Clear" }`.
14
+ * - **Outbound (Deepgram → client):** BINARY audio frames, plus text JSON
15
+ * control frames (`{ "type": "Flushed" | "Cleared" | "Metadata" | "Warning" }`).
16
+ *
17
+ * Audio arrives as raw binary (unlike ElevenLabs, which base64-encodes audio
18
+ * inside JSON), so the message handler branches on the `ws` `isBinary` flag.
19
+ *
20
+ * @see https://developers.deepgram.com/docs/tts-websocket
21
+ */
22
+ import { EventEmitter } from 'node:events';
23
+ import WebSocket from 'ws';
24
+ import { ApiKeyPool } from '../../../core/providers/ApiKeyPool.js';
25
+ import { defaultCapabilities, } from '../HealthyProvider.js';
26
+ import { VoicePipelineError } from '../VoicePipelineError.js';
27
+ const DEFAULT_VOICE = 'aura-2-thalia-en';
28
+ const DEFAULT_SAMPLE_RATE = 24000;
29
+ /** Approx MP3 bytes/sec at Aura's default bitrate — used only for a duration estimate. */
30
+ const BYTES_PER_SEC_MP3 = 16000;
31
+ async function defaultDeepgramTtsProbe(apiKey) {
32
+ const start = Date.now();
33
+ const res = await fetch('https://api.deepgram.com/v1/auth/token', {
34
+ headers: { Authorization: `Token ${apiKey}` },
35
+ signal: AbortSignal.timeout(1000),
36
+ });
37
+ return { ok: res.ok, status: res.status, latencyMs: Date.now() - start };
38
+ }
39
+ /** Map the pipeline audio-format union to a Deepgram `encoding` value. */
40
+ function toDeepgramEncoding(format) {
41
+ if (format === 'opus')
42
+ return { encoding: 'opus', format: 'opus' };
43
+ if (format === 'pcm')
44
+ return { encoding: 'linear16', format: 'pcm' };
45
+ return { encoding: 'mp3', format: 'mp3' };
46
+ }
47
+ /**
48
+ * A live streaming TTS session connected to Deepgram Aura via WebSocket.
49
+ * Emits `audio`, `flush_complete`, `error`, and `close`.
50
+ */
51
+ class DeepgramAuraStreamingTTSSession extends EventEmitter {
52
+ constructor(config, sessionConfig) {
53
+ super();
54
+ this.config = config;
55
+ this.ws = null;
56
+ this.closed = false;
57
+ this.pendingFlush = false;
58
+ this.accumulatedText = '';
59
+ this.voice = sessionConfig.voice ?? config.voice ?? DEFAULT_VOICE;
60
+ const mapped = toDeepgramEncoding(sessionConfig.format ?? 'mp3');
61
+ this.encoding = mapped.encoding;
62
+ this.format = mapped.format;
63
+ this.sampleRate = sessionConfig.sampleRate ?? DEFAULT_SAMPLE_RATE;
64
+ }
65
+ /** Open the WebSocket. Deepgram needs no beginning-of-stream handshake. */
66
+ async connect() {
67
+ const wsBase = this.config.baseUrl ?? 'wss://api.deepgram.com/v1/speak';
68
+ const params = new URLSearchParams({ model: this.voice, encoding: this.encoding });
69
+ // linear16 (raw PCM) requires an explicit sample_rate; container formats infer it.
70
+ if (this.encoding === 'linear16')
71
+ params.set('sample_rate', String(this.sampleRate));
72
+ const url = `${wsBase}?${params.toString()}`;
73
+ return new Promise((resolve, reject) => {
74
+ this.ws = new WebSocket(url, {
75
+ headers: { Authorization: `Token ${this.config.apiKey}` },
76
+ });
77
+ this.ws.on('open', () => resolve());
78
+ this.ws.on('error', (err) => {
79
+ this.emit('error', err);
80
+ reject(err);
81
+ });
82
+ this.ws.on('message', (data, isBinary) => this._handleMessage(data, isBinary));
83
+ this.ws.on('close', () => {
84
+ this.closed = true;
85
+ this.emit('close');
86
+ });
87
+ });
88
+ }
89
+ pushTokens(tokens) {
90
+ if (this.closed || !this.ws || this.ws.readyState !== WebSocket.OPEN)
91
+ return;
92
+ this.accumulatedText += tokens;
93
+ this.ws.send(JSON.stringify({ type: 'Speak', text: tokens }));
94
+ }
95
+ async flush() {
96
+ if (this.closed || !this.ws || this.ws.readyState !== WebSocket.OPEN)
97
+ return;
98
+ this.pendingFlush = true;
99
+ this.ws.send(JSON.stringify({ type: 'Flush' }));
100
+ return new Promise((resolve) => {
101
+ const onFlush = () => {
102
+ this.removeListener('_internal_flush', onFlush);
103
+ clearTimeout(timeout);
104
+ resolve();
105
+ };
106
+ // Safety timeout: resolve after 5s even if no Flushed frame arrives.
107
+ const timeout = setTimeout(() => {
108
+ this.removeListener('_internal_flush', onFlush);
109
+ this.pendingFlush = false;
110
+ this.emit('flush_complete');
111
+ resolve();
112
+ }, 5000);
113
+ this.on('_internal_flush', onFlush);
114
+ });
115
+ }
116
+ cancel() {
117
+ this.pendingFlush = false;
118
+ this.accumulatedText = '';
119
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
120
+ // Clear discards server-buffered audio without tearing down the socket.
121
+ this.ws.send(JSON.stringify({ type: 'Clear' }));
122
+ }
123
+ }
124
+ close() {
125
+ if (this.closed)
126
+ return;
127
+ this.closed = true;
128
+ if (this.ws) {
129
+ if (this.ws.readyState === WebSocket.OPEN)
130
+ this.ws.close(1000, 'session closed');
131
+ this.ws = null;
132
+ }
133
+ this.emit('close');
134
+ }
135
+ _handleMessage(data, isBinary) {
136
+ if (isBinary) {
137
+ const audioBuffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
138
+ const durationMs = Math.round((audioBuffer.byteLength / BYTES_PER_SEC_MP3) * 1000);
139
+ const chunk = {
140
+ audio: audioBuffer,
141
+ format: this.format,
142
+ sampleRate: this.sampleRate,
143
+ durationMs,
144
+ text: this.accumulatedText,
145
+ };
146
+ this.emit('audio', chunk);
147
+ return;
148
+ }
149
+ // Text control frame.
150
+ let msg;
151
+ try {
152
+ msg = JSON.parse(data.toString('utf-8'));
153
+ }
154
+ catch {
155
+ return;
156
+ }
157
+ if (msg.type === 'Flushed') {
158
+ this.accumulatedText = '';
159
+ if (this.pendingFlush) {
160
+ this.pendingFlush = false;
161
+ this.emit('_internal_flush');
162
+ this.emit('flush_complete');
163
+ }
164
+ }
165
+ // Metadata / Cleared / Warning frames are ignored.
166
+ }
167
+ }
168
+ /**
169
+ * Streaming TTS provider that creates Deepgram Aura WebSocket sessions.
170
+ * Implements {@link IStreamingTTS} for use with {@link VoicePipelineOrchestrator}.
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * const tts = new DeepgramAuraStreamingTTS({ apiKey: process.env.DEEPGRAM_API_KEY! });
175
+ * const session = await tts.startSession({ voice: 'aura-2-arcas-en' });
176
+ * session.on('audio', (chunk) => transport.sendAudio(chunk));
177
+ * session.pushTokens('Hello there!');
178
+ * await session.flush();
179
+ * ```
180
+ */
181
+ export class DeepgramAuraStreamingTTS {
182
+ constructor(config) {
183
+ this.config = config;
184
+ this.providerId = 'deepgram-aura';
185
+ this.keyPool = new ApiKeyPool(config.apiKey);
186
+ this.priority = config.priority ?? 5;
187
+ this.capabilities = defaultCapabilities({
188
+ languages: ['*'],
189
+ streaming: true,
190
+ costTier: 'cheap',
191
+ latencyClass: 'realtime',
192
+ ...(config.capabilities ?? {}),
193
+ });
194
+ this.healthProbe = config.healthProbe ?? defaultDeepgramTtsProbe;
195
+ }
196
+ async healthCheck() {
197
+ if (!this.keyPool.hasKeys) {
198
+ return { ok: false, error: { class: 'auth', message: 'no api key available' } };
199
+ }
200
+ const key = this.keyPool.next();
201
+ try {
202
+ const res = await this.healthProbe(key);
203
+ if (res.ok)
204
+ return { ok: true, latencyMs: res.latencyMs };
205
+ const classified = VoicePipelineError.classifyError(new Error(`HTTP ${res.status}`), {
206
+ kind: 'tts',
207
+ provider: this.providerId,
208
+ });
209
+ return {
210
+ ok: false,
211
+ latencyMs: res.latencyMs,
212
+ error: { class: classified.errorClass, message: `HTTP ${res.status}` },
213
+ };
214
+ }
215
+ catch (err) {
216
+ const classified = VoicePipelineError.classifyError(err, {
217
+ kind: 'tts',
218
+ provider: this.providerId,
219
+ });
220
+ return { ok: false, error: { class: classified.errorClass, message: classified.message } };
221
+ }
222
+ }
223
+ async startSession(config) {
224
+ const resolvedConfig = { ...this.config, apiKey: this.keyPool.next() };
225
+ const session = new DeepgramAuraStreamingTTSSession(resolvedConfig, config ?? {});
226
+ await session.connect();
227
+ return session;
228
+ }
229
+ }
230
+ //# sourceMappingURL=DeepgramAuraStreamingTTS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeepgramAuraStreamingTTS.js","sourceRoot":"","sources":["../../../../src/io/voice-pipeline/providers/DeepgramAuraStreamingTTS.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,11 @@
12
12
  export { DeepgramStreamingSTT, type DeepgramStreamingSTTConfig } from './DeepgramStreamingSTT.js';
13
13
  export { ElevenLabsStreamingSTT, type ElevenLabsStreamingSTTConfig, } from './ElevenLabsStreamingSTT.js';
14
14
  export { ElevenLabsStreamingTTS, type ElevenLabsStreamingTTSConfig, } from './ElevenLabsStreamingTTS.js';
15
+ export { DeepgramAuraStreamingTTS, type DeepgramAuraStreamingTTSConfig, } from './DeepgramAuraStreamingTTS.js';
15
16
  export { AgentSessionVoiceAdapter } from './AgentSessionVoiceAdapter.js';
16
17
  export { OpenAIBatchTTS, type OpenAIBatchTTSConfig } from './OpenAIBatchTTS.js';
17
18
  export { ElevenLabsBatchTTS, type ElevenLabsBatchTTSConfig } from './ElevenLabsBatchTTS.js';
19
+ export { DeepgramAuraBatchTTS, type DeepgramAuraBatchTTSConfig, chunkForAura, } from './DeepgramAuraBatchTTS.js';
18
20
  export { BatchTTSFallback } from './BatchTTSFallback.js';
19
21
  export { OpenAIRealtimeTTS, type OpenAIRealtimeTTSConfig } from './OpenAIRealtimeTTS.js';
20
22
  export { StreamingSTTChain, type StreamingSTTChainOptions, type ProviderSelectedEvent, type ProviderFailedEvent, type ProviderFailoverEvent, } from './StreamingSTTChain.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/io/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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/io/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,EACL,wBAAwB,EACxB,KAAK,8BAA8B,GACpC,MAAM,+BAA+B,CAAC;AACvC,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,EACL,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,YAAY,GACb,MAAM,2BAA2B,CAAC;AACnC,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"}
@@ -12,9 +12,11 @@
12
12
  export { DeepgramStreamingSTT } from './DeepgramStreamingSTT.js';
13
13
  export { ElevenLabsStreamingSTT, } from './ElevenLabsStreamingSTT.js';
14
14
  export { ElevenLabsStreamingTTS, } from './ElevenLabsStreamingTTS.js';
15
+ export { DeepgramAuraStreamingTTS, } from './DeepgramAuraStreamingTTS.js';
15
16
  export { AgentSessionVoiceAdapter } from './AgentSessionVoiceAdapter.js';
16
17
  export { OpenAIBatchTTS } from './OpenAIBatchTTS.js';
17
18
  export { ElevenLabsBatchTTS } from './ElevenLabsBatchTTS.js';
19
+ export { DeepgramAuraBatchTTS, chunkForAura, } from './DeepgramAuraBatchTTS.js';
18
20
  export { BatchTTSFallback } from './BatchTTSFallback.js';
19
21
  export { OpenAIRealtimeTTS } from './OpenAIRealtimeTTS.js';
20
22
  export { StreamingSTTChain, } from './StreamingSTTChain.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/io/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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/io/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,EACL,wBAAwB,GAEzB,MAAM,+BAA+B,CAAC;AACvC,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,EACL,oBAAoB,EAEpB,YAAY,GACb,MAAM,2BAA2B,CAAC;AACnC,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"}
@@ -31,7 +31,7 @@ export declare function registerAnchorProviderFactory(type: string, factory: Pro
31
31
  * The `@framers/agentos-ext-anchor-providers` extension package provides
32
32
  * a `registerExtensionProviders()` function that registers all curated external providers.
33
33
  *
34
- * @see https://github.com/framersai/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
34
+ * @see https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
35
35
  */
36
36
  export declare function createAnchorProvider(target?: AnchorTarget): AnchorProvider;
37
37
  export {};
@@ -37,7 +37,7 @@ export function registerAnchorProviderFactory(type, factory) {
37
37
  * The `@framers/agentos-ext-anchor-providers` extension package provides
38
38
  * a `registerExtensionProviders()` function that registers all curated external providers.
39
39
  *
40
- * @see https://github.com/framersai/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
40
+ * @see https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
41
41
  */
42
42
  export function createAnchorProvider(target) {
43
43
  if (!target || target.type === 'none') {
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * External anchor providers (Rekor, Ethereum, Solana, OpenTimestamps, WORM) are in the
9
9
  * `@framers/agentos-ext-anchor-providers` extension package.
10
- * See: https://github.com/framersai/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
10
+ * See: https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
11
11
  *
12
12
  * @module AgentOS/Provenance
13
13
  */
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * External anchor providers (Rekor, Ethereum, Solana, OpenTimestamps, WORM) are in the
9
9
  * `@framers/agentos-ext-anchor-providers` extension package.
10
- * See: https://github.com/framersai/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
10
+ * See: https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
11
11
  *
12
12
  * @module AgentOS/Provenance
13
13
  */
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@framers/agentos",
3
- "version": "0.9.30",
3
+ "version": "0.9.32",
4
4
  "description": "AgentOS: open-source TypeScript framework for autonomous AI agents. Unified graph orchestration, cognitive memory, runtime tool forging, multi-tier guardrails, voice pipeline, and 11 LLM providers.",
5
5
  "homepage": "https://agentos.sh",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/framersai/agentos.git"
8
+ "url": "git+https://github.com/framerslab/agentos.git"
9
9
  },
10
10
  "bugs": {
11
- "url": "https://github.com/framersai/agentos/issues"
11
+ "url": "https://github.com/framerslab/agentos/issues"
12
12
  },
13
13
  "type": "module",
14
14
  "main": "dist/index.js",
@@ -579,8 +579,8 @@
579
579
  "dev:test": "vitest",
580
580
  "docs:clean": "rimraf docs/api ../../docs-generated/library ../../docs-generated/api",
581
581
  "docs:library": "npm run docs:clean && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.json && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.modules.json && node scripts/generate-doc-search-index.mjs && pnpm --dir ../../ exec node apps/agentos.sh/scripts/copy-docs.js",
582
- "docs:site-api": "pnpm --dir ../../ --filter @framersai/agentos-live-docs run build",
583
- "docs:verify": "node scripts/build-publication-inventory.mjs && pnpm --dir ../../ --filter @framersai/agentos-live-docs run verify:publication && npx vitest run src/api/runtime/__tests__/docs-alignment.test.ts",
582
+ "docs:site-api": "pnpm --dir ../../ --filter @framers/agentos-live-docs run build",
583
+ "docs:verify": "node scripts/build-publication-inventory.mjs && pnpm --dir ../../ --filter @framers/agentos-live-docs run verify:publication && npx vitest run src/api/runtime/__tests__/docs-alignment.test.ts",
584
584
  "docs": "npm run docs:library",
585
585
  "docs:full": "npm run docs:library && npm run docs:site-api",
586
586
  "docs:watch": "npm run docs:clean && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.json && pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.modules.json && node scripts/generate-doc-search-index.mjs && pnpm --dir ../../ exec node apps/agentos.sh/scripts/copy-docs.js && concurrently \"pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.json --watch\" \"pnpm --dir ../../ exec typedoc --options packages/agentos/typedoc.modules.json --watch\" \"node scripts/generate-doc-search-index.mjs --watch\" \"pnpm --dir ../../ exec node apps/agentos.sh/scripts/copy-docs.js --watch\""