@happyvertical/speech 0.110.1 → 0.111.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT.md +3 -0
- package/README.md +46 -3
- package/dist/adapters/local/audio.d.ts.map +1 -1
- package/dist/adapters/local/worker.d.ts +8 -5
- package/dist/adapters/local/worker.d.ts.map +1 -1
- package/dist/adapters/openai-compatible-transcriber.d.ts +3 -0
- package/dist/adapters/openai-compatible-transcriber.d.ts.map +1 -1
- package/dist/adapters/openai-compatible.d.ts +3 -0
- package/dist/adapters/openai-compatible.d.ts.map +1 -1
- package/dist/adapters/openai-realtime.d.ts +8 -0
- package/dist/adapters/openai-realtime.d.ts.map +1 -1
- package/dist/adapters/qwen3.d.ts +6 -0
- package/dist/adapters/qwen3.d.ts.map +1 -1
- package/dist/adapters/studio-server.d.ts +11 -0
- package/dist/adapters/studio-server.d.ts.map +1 -1
- package/dist/adapters/voxtral-realtime.d.ts +8 -0
- package/dist/adapters/voxtral-realtime.d.ts.map +1 -1
- package/dist/browser.js +2 -2
- package/dist/chunks/errors-CzsR_5dE.js +122 -0
- package/dist/chunks/errors-CzsR_5dE.js.map +1 -0
- package/dist/chunks/{registry-DFSF3WoM.js → registry-DhB2589P.js} +5 -5
- package/dist/chunks/registry-DhB2589P.js.map +1 -0
- package/dist/chunks/{wav-vzrhhZbu.js → wav-PxVZJX9V.js} +15 -5
- package/dist/chunks/{wav-vzrhhZbu.js.map → wav-PxVZJX9V.js.map} +1 -1
- package/dist/chunks/{websocket-YbAfY6YI.js → websocket-DLZLLyD9.js} +2 -2
- package/dist/chunks/{websocket-YbAfY6YI.js.map → websocket-DLZLLyD9.js.map} +1 -1
- package/dist/conversation-server.js +2 -2
- package/dist/conversation.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +302 -20
- package/dist/index.js.map +1 -1
- package/dist/local.js +21 -12
- package/dist/local.js.map +1 -1
- package/dist/pcm.js +2 -2
- package/dist/shared/audio.d.ts.map +1 -1
- package/dist/shared/errors.d.ts +48 -1
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/http.d.ts +3 -0
- package/dist/shared/http.d.ts.map +1 -1
- package/dist/shared/probe.d.ts +90 -0
- package/dist/shared/probe.d.ts.map +1 -0
- package/dist/shared/streaming-factory.d.ts.map +1 -1
- package/dist/shared/streaming-types.d.ts +10 -1
- package/dist/shared/streaming-types.d.ts.map +1 -1
- package/dist/shared/types.d.ts +14 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/wav.d.ts +12 -1
- package/dist/shared/wav.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/errors-Cs0vX-mV.js +0 -64
- package/dist/chunks/errors-Cs0vX-mV.js.map +0 -1
- package/dist/chunks/registry-DFSF3WoM.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/shared/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/shared/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Readiness probes (#1345): check that a configured speech endpoint answers,
|
|
3
|
+
* accepts the credentials, and (where the server lists models) serves the
|
|
4
|
+
* configured model, without sending audio or text to synthesize.
|
|
5
|
+
*/
|
|
6
|
+
import type { SpeechFetch } from './types.js';
|
|
7
|
+
/** Why a probe could not confirm the endpoint is ready. */
|
|
8
|
+
export type SpeechProbeFailureReason =
|
|
9
|
+
/** The adapter's own configuration is invalid (e.g. an unparseable `baseUrl`). */
|
|
10
|
+
'misconfigured'
|
|
11
|
+
/** No HTTP response: DNS, refused or reset connection, TLS. */
|
|
12
|
+
| 'unreachable'
|
|
13
|
+
/** No response within the probe timeout. */
|
|
14
|
+
| 'timeout'
|
|
15
|
+
/** The server answered 401 or 403. */
|
|
16
|
+
| 'unauthorized'
|
|
17
|
+
/** The server's model list does not include the configured model. */
|
|
18
|
+
| 'model_not_found'
|
|
19
|
+
/** Any other error status, or a model list that could not be read. */
|
|
20
|
+
| 'provider_error'
|
|
21
|
+
/** This adapter cannot check readiness without real work (see README). */
|
|
22
|
+
| 'unsupported';
|
|
23
|
+
/** What a successful probe confirmed. */
|
|
24
|
+
export type SpeechProbeCheck =
|
|
25
|
+
/** The server listed the configured model. */
|
|
26
|
+
'model'
|
|
27
|
+
/** A server answered and accepted the credentials; the model is unconfirmed. */
|
|
28
|
+
| 'reachability';
|
|
29
|
+
export type SpeechProbeResult = {
|
|
30
|
+
ok: true;
|
|
31
|
+
adapter: string;
|
|
32
|
+
checked: SpeechProbeCheck;
|
|
33
|
+
/** The model that was looked for, when the adapter sends one. */
|
|
34
|
+
model?: string;
|
|
35
|
+
latencyMs: number;
|
|
36
|
+
} | {
|
|
37
|
+
ok: false;
|
|
38
|
+
adapter: string;
|
|
39
|
+
reason: SpeechProbeFailureReason;
|
|
40
|
+
/** HTTP status, for `unauthorized` and `provider_error`. */
|
|
41
|
+
status?: number;
|
|
42
|
+
model?: string;
|
|
43
|
+
/** A fixed description; never the URL, a credential, or a response body. */
|
|
44
|
+
message: string;
|
|
45
|
+
latencyMs: number;
|
|
46
|
+
};
|
|
47
|
+
export interface SpeechProbeOptions {
|
|
48
|
+
/** Aborting rejects the probe with the abort reason. */
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
/** Extra request headers, merged over the adapter's. */
|
|
51
|
+
headers?: HeadersInit;
|
|
52
|
+
/**
|
|
53
|
+
* Probe timeout in milliseconds. Defaults to the adapter's `timeoutMs`,
|
|
54
|
+
* else {@link DEFAULT_SPEECH_PROBE_TIMEOUT_MS}.
|
|
55
|
+
*/
|
|
56
|
+
timeoutMs?: number;
|
|
57
|
+
}
|
|
58
|
+
export declare const DEFAULT_SPEECH_PROBE_TIMEOUT_MS = 10000;
|
|
59
|
+
export interface HttpProbeTarget {
|
|
60
|
+
adapter: string;
|
|
61
|
+
/**
|
|
62
|
+
* The URL to `GET`. A thunk so URL resolution errors become a
|
|
63
|
+
* `misconfigured` result instead of a throw.
|
|
64
|
+
*/
|
|
65
|
+
url: () => string;
|
|
66
|
+
/** `true` for an OpenAI-style `GET /models` listing. */
|
|
67
|
+
listsModels: boolean;
|
|
68
|
+
/** Model to look for in the listing; omitted, only reachability is checked. */
|
|
69
|
+
model?: string;
|
|
70
|
+
fetch?: SpeechFetch;
|
|
71
|
+
apiKey?: string;
|
|
72
|
+
headers?: HeadersInit;
|
|
73
|
+
/** The adapter's own `timeoutMs`. */
|
|
74
|
+
timeoutMs?: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Derives the OpenAI-style model list URL from a resolved endpoint: the
|
|
78
|
+
* trailing `/<resource>` is replaced with `/models` (the query is kept). An
|
|
79
|
+
* endpoint that does not end in `resource` gets `models` resolved beside it.
|
|
80
|
+
*/
|
|
81
|
+
export declare function modelsUrlFor(endpoint: string, resource: string): string;
|
|
82
|
+
/** `ws:`/`wss:` to `http:`/`https:`; other URLs are returned unchanged. */
|
|
83
|
+
export declare function toHttpUrl(url: string): string;
|
|
84
|
+
export declare function unsupportedProbe(adapter: string, message: string): SpeechProbeResult;
|
|
85
|
+
/**
|
|
86
|
+
* Sends one `GET` and classifies the outcome. Resolves for every outcome
|
|
87
|
+
* except a caller abort, which rejects with the signal's reason.
|
|
88
|
+
*/
|
|
89
|
+
export declare function probeHttpEndpoint(target: HttpProbeTarget, options?: SpeechProbeOptions): Promise<SpeechProbeResult>;
|
|
90
|
+
//# sourceMappingURL=probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/shared/probe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,2DAA2D;AAC3D,MAAM,MAAM,wBAAwB;AAClC,kFAAkF;AAChF,eAAe;AACjB,+DAA+D;GAC7D,aAAa;AACf,4CAA4C;GAC1C,SAAS;AACX,sCAAsC;GACpC,cAAc;AAChB,qEAAqE;GACnE,iBAAiB;AACnB,sEAAsE;GACpE,gBAAgB;AAClB,0EAA0E;GACxE,aAAa,CAAC;AAElB,yCAAyC;AACzC,MAAM,MAAM,gBAAgB;AAC1B,8CAA8C;AAC5C,OAAO;AACT,gFAAgF;GAC9E,cAAc,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GACzB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,wBAAwB,CAAC;IACjC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,wDAAwD;IACxD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,+BAA+B,QAAS,CAAC;AAKtD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,wDAAwD;IACxD,WAAW,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASvE;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,iBAAiB,CAEnB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CA4I5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-factory.d.ts","sourceRoot":"","sources":["../../src/shared/streaming-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAOlB,OAAO,KAAK,EACV,8BAA8B,EAE9B,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,WAAW,EAGZ,MAAM,YAAY,CAAC;AAEpB,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAClC,CAAC;AAE1C,qFAAqF;AACrF,eAAO,MAAM,8BAA8B;;;;;;;;;;;CAcjC,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,IAAI,IAAI,wBAAwB,CAKlC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,8BAAmC,EAC5C,OAAO,GAAE,uBAA4B,GACpC,oBAAoB,CA4CtB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,sBAAsB,GAAG,SAAS,CAcpC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAWpB;AAED,MAAM,WAAW,kCAAkC;IACjD,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,oBAAoB,EAC/B,OAAO,GAAE,kCAAuC,GAC/C,WAAW,
|
|
1
|
+
{"version":3,"file":"streaming-factory.d.ts","sourceRoot":"","sources":["../../src/shared/streaming-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAOlB,OAAO,KAAK,EACV,8BAA8B,EAE9B,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,WAAW,EAGZ,MAAM,YAAY,CAAC;AAEpB,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAClC,CAAC;AAE1C,qFAAqF;AACrF,eAAO,MAAM,8BAA8B;;;;;;;;;;;CAcjC,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,IAAI,IAAI,wBAAwB,CAKlC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,8BAAmC,EAC5C,OAAO,GAAE,uBAA4B,GACpC,oBAAoB,CA4CtB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,sBAAsB,GAAG,SAAS,CAcpC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAWpB;AAED,MAAM,WAAW,kCAAkC;IACjD,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,oBAAoB,EAC/B,OAAO,GAAE,kCAAuC,GAC/C,WAAW,CA+Eb"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* utterance or conversation. Callers push raw audio with `write()`, listen for
|
|
6
6
|
* `partial` and `final` events, and call `end()` for the whole transcript.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { SpeechProbeOptions, SpeechProbeResult } from './probe.js';
|
|
9
|
+
import type { SpeechFetch, TranscriptResult } from './types.js';
|
|
9
10
|
import type { SpeechUsageCallback } from './usage.js';
|
|
10
11
|
import type { SpeechWebSocketConstructor, SpeechWebSocketFactory } from './websocket.js';
|
|
11
12
|
/** Streaming adapter identifiers. */
|
|
@@ -231,6 +232,12 @@ export interface StreamingTranscriber {
|
|
|
231
232
|
* invalid limit. Optional for custom implementations.
|
|
232
233
|
*/
|
|
233
234
|
turnLimit?(options?: StreamingSessionOptions): StreamingTurnLimit | undefined;
|
|
235
|
+
/**
|
|
236
|
+
* Checks the server answers over HTTP, accepts the credentials and lists
|
|
237
|
+
* the model, without opening a session or sending audio. Optional for
|
|
238
|
+
* custom implementations; see `Transcriber.probe`.
|
|
239
|
+
*/
|
|
240
|
+
probe?(options?: SpeechProbeOptions): Promise<SpeechProbeResult>;
|
|
234
241
|
}
|
|
235
242
|
/** Adapter options shared by WebSocket streaming transcribers. */
|
|
236
243
|
export interface StreamingTranscriberOptions extends StreamingSessionSettings {
|
|
@@ -266,6 +273,8 @@ export interface StreamingTranscriberOptions extends StreamingSessionSettings {
|
|
|
266
273
|
WebSocket?: SpeechWebSocketConstructor;
|
|
267
274
|
/** Full control over socket creation; wins over `WebSocket`. */
|
|
268
275
|
createWebSocket?: SpeechWebSocketFactory;
|
|
276
|
+
/** `fetch` used by `probe()`. Defaults to `globalThis.fetch`. */
|
|
277
|
+
fetch?: SpeechFetch;
|
|
269
278
|
}
|
|
270
279
|
/** Options for the `openai-realtime` adapter. */
|
|
271
280
|
export interface OpenAIRealtimeTranscriberOptions extends StreamingTranscriberOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-types.d.ts","sourceRoot":"","sources":["../../src/shared/streaming-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming-types.d.ts","sourceRoot":"","sources":["../../src/shared/streaming-types.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { LocalTranscriberSettings } from '../adapters/local/types.js';
|
|
2
|
+
import type { SpeechProbeOptions, SpeechProbeResult } from './probe.js';
|
|
2
3
|
import type { SpeechRetryOptions } from './retry.js';
|
|
3
4
|
import type { GetStreamingTranscriberOptions, StreamingTranscriberType } from './streaming-types.js';
|
|
4
5
|
import type { SpeechUsage, SpeechUsageCallback } from './usage.js';
|
|
@@ -120,10 +121,23 @@ export interface SynthesizedSpeech {
|
|
|
120
121
|
export interface Transcriber {
|
|
121
122
|
readonly type: TranscriberType;
|
|
122
123
|
transcribe(request: TranscriptionRequest): Promise<TranscriptResult>;
|
|
124
|
+
/**
|
|
125
|
+
* Checks the configured endpoint is reachable, accepts the credentials and
|
|
126
|
+
* (where the server lists models) serves the model, without sending audio.
|
|
127
|
+
* Resolves with a typed result for every outcome except a caller abort.
|
|
128
|
+
* Present on the built-in HTTP and realtime adapters; optional for custom
|
|
129
|
+
* implementations and absent on `local`.
|
|
130
|
+
*/
|
|
131
|
+
probe?(options?: SpeechProbeOptions): Promise<SpeechProbeResult>;
|
|
123
132
|
}
|
|
124
133
|
export interface SpeechSynthesizer {
|
|
125
134
|
readonly type: SpeechSynthesizerType;
|
|
126
135
|
synthesize(request: SynthesisRequest): Promise<SynthesizedSpeech>;
|
|
136
|
+
/**
|
|
137
|
+
* Checks the configured endpoint without synthesizing anything; see
|
|
138
|
+
* {@link Transcriber.probe}. Optional for custom implementations.
|
|
139
|
+
*/
|
|
140
|
+
probe?(options?: SpeechProbeOptions): Promise<SpeechProbeResult>;
|
|
127
141
|
}
|
|
128
142
|
export interface Speech {
|
|
129
143
|
readonly transcriber?: Transcriber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EACV,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,WAAW,GACX,mBAAmB,GACnB,OAAO,GACP,wBAAwB,CAAC;AAE7B;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,eAAe,GACf,mBAAmB,GACnB,OAAO,GACP,wBAAwB,CAAC;AAE7B,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,WAAW,GACX,mBAAmB,CAAC;AAExB,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,8DAA8D;IAC9D,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;IAClD,YAAY,EAAE,qBAAqB,EAAE,CAAC;CACvC;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC;AAE3E,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAChC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAC7C,uEAAuE;IACvE,sBAAsB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAChD,sFAAsF;IACtF,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/wav.d.ts
CHANGED
|
@@ -26,6 +26,15 @@ export interface WavExpectation {
|
|
|
26
26
|
sampleRate?: number;
|
|
27
27
|
/** Required channel count. */
|
|
28
28
|
channels?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Accept a streamed WAV whose RIFF and/or `data` size is the unknown-length
|
|
31
|
+
* sentinel `0xFFFFFFFF` (ffmpeg writing to a pipe, Kokoro-FastAPI
|
|
32
|
+
* `response_format: "wav"`). A sentinel RIFF size runs to the end of the
|
|
33
|
+
* buffer; a sentinel `data` size runs to the end of the RIFF, rounded down
|
|
34
|
+
* to whole frames, and ends the chunk walk. Every other check still
|
|
35
|
+
* applies. Off by default: leave it off for untrusted uploads.
|
|
36
|
+
*/
|
|
37
|
+
allowUnknownLength?: boolean;
|
|
29
38
|
}
|
|
30
39
|
/** A validated 16-bit PCM WAV. */
|
|
31
40
|
export interface ParsedWavPcm16 {
|
|
@@ -46,7 +55,9 @@ export interface ParsedWavPcm16 {
|
|
|
46
55
|
* bits, a consistent header, and a declared data length that lies within the
|
|
47
56
|
* buffer, is non-zero and is a whole number of frames. Nothing is clamped or
|
|
48
57
|
* guessed. Every chunk inside the declared RIFF is bounds-checked, including
|
|
49
|
-
* those after `data`; bytes beyond the RIFF are ignored.
|
|
58
|
+
* those after `data`; bytes beyond the RIFF are ignored. With
|
|
59
|
+
* `allowUnknownLength`, the `0xFFFFFFFF` streaming sentinel sizes are read as
|
|
60
|
+
* "to the end" (see {@link WavExpectation.allowUnknownLength}).
|
|
50
61
|
*/
|
|
51
62
|
export declare function parseWavPcm16(bytes: Uint8Array, expect?: WavExpectation): ParsedWavPcm16;
|
|
52
63
|
//# sourceMappingURL=wav.d.ts.map
|
package/dist/shared/wav.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wav.d.ts","sourceRoot":"","sources":["../../src/shared/wav.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAShE;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY,CAMhE;AAsBD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,GAAG,UAAU,EAClC,UAAU,EAAE,MAAM,GACjB,UAAU,CA6BZ;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"wav.d.ts","sourceRoot":"","sources":["../../src/shared/wav.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAShE;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY,CAMhE;AAsBD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,GAAG,UAAU,EAClC,UAAU,EAAE,MAAM,GACjB,UAAU,CA6BZ;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,OAAO,EAAE,UAAU,CAAC;IACpB,0DAA0D;IAC1D,IAAI,EAAE,UAAU,CAAC;CAClB;AAqGD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,GAAE,cAAmB,GAC1B,cAAc,CAiHhB"}
|
package/package.json
CHANGED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
//#region src/shared/errors.ts
|
|
2
|
-
var SpeechError = class extends Error {
|
|
3
|
-
code;
|
|
4
|
-
adapter;
|
|
5
|
-
constructor(message, code, adapter) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.code = code;
|
|
8
|
-
this.adapter = adapter;
|
|
9
|
-
this.name = "SpeechError";
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
var SpeechConfigurationError = class extends SpeechError {
|
|
13
|
-
constructor(message, adapter) {
|
|
14
|
-
super(message, "SPEECH_CONFIGURATION_ERROR", adapter);
|
|
15
|
-
this.name = "SpeechConfigurationError";
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
var InvalidSpeechAdapterError = class extends SpeechError {
|
|
19
|
-
constructor(type, kind) {
|
|
20
|
-
super(`Invalid ${kind} speech adapter type: ${type}`, "INVALID_ADAPTER");
|
|
21
|
-
this.name = "InvalidSpeechAdapterError";
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
var SpeechProviderError = class extends SpeechError {
|
|
25
|
-
status;
|
|
26
|
-
responseBody;
|
|
27
|
-
/** Parsed `Retry-After` delay in milliseconds, when the provider sent one. */
|
|
28
|
-
retryAfterMs;
|
|
29
|
-
constructor(adapter, message, options = {}) {
|
|
30
|
-
super(message, "SPEECH_PROVIDER_ERROR", adapter);
|
|
31
|
-
this.name = "SpeechProviderError";
|
|
32
|
-
this.status = options.status;
|
|
33
|
-
this.responseBody = options.responseBody;
|
|
34
|
-
this.retryAfterMs = options.retryAfterMs;
|
|
35
|
-
if (options.cause !== void 0) this.cause = options.cause;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Thrown by the PCM/WAV utilities (`@happyvertical/speech/pcm`) for input that
|
|
40
|
-
* is not exactly the 16-bit PCM WAV that was asked for, and for invalid
|
|
41
|
-
* arguments (sample rate, sizes). `reason` is stable and machine-readable.
|
|
42
|
-
*/
|
|
43
|
-
var WavFormatError = class extends SpeechError {
|
|
44
|
-
reason;
|
|
45
|
-
constructor(reason, message) {
|
|
46
|
-
super(message, "SPEECH_INVALID_WAV");
|
|
47
|
-
this.name = "WavFormatError";
|
|
48
|
-
this.reason = reason;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
/** Thrown by `createPcmCapture` (`@happyvertical/speech/browser`). */
|
|
52
|
-
var PcmCaptureError = class extends SpeechError {
|
|
53
|
-
reason;
|
|
54
|
-
constructor(reason, message, cause) {
|
|
55
|
-
super(message, "SPEECH_PCM_CAPTURE");
|
|
56
|
-
this.name = "PcmCaptureError";
|
|
57
|
-
this.reason = reason;
|
|
58
|
-
if (cause !== void 0) this.cause = cause;
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
//#endregion
|
|
62
|
-
export { SpeechProviderError as a, SpeechError as i, PcmCaptureError as n, WavFormatError as o, SpeechConfigurationError as r, InvalidSpeechAdapterError as t };
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=errors-Cs0vX-mV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors-Cs0vX-mV.js","names":[],"sources":["../../src/shared/errors.ts"],"sourcesContent":["export class SpeechError extends Error {\n constructor(\n message: string,\n public code: string,\n public adapter?: string,\n ) {\n super(message);\n this.name = 'SpeechError';\n }\n}\n\nexport class SpeechConfigurationError extends SpeechError {\n constructor(message: string, adapter?: string) {\n super(message, 'SPEECH_CONFIGURATION_ERROR', adapter);\n this.name = 'SpeechConfigurationError';\n }\n}\n\nexport class InvalidSpeechAdapterError extends SpeechError {\n constructor(type: string, kind: string) {\n super(`Invalid ${kind} speech adapter type: ${type}`, 'INVALID_ADAPTER');\n this.name = 'InvalidSpeechAdapterError';\n }\n}\n\nexport class SpeechProviderError extends SpeechError {\n readonly status?: number;\n readonly responseBody?: string;\n /** Parsed `Retry-After` delay in milliseconds, when the provider sent one. */\n readonly retryAfterMs?: number;\n\n constructor(\n adapter: string,\n message: string,\n options: {\n status?: number;\n responseBody?: string;\n retryAfterMs?: number;\n cause?: unknown;\n } = {},\n ) {\n super(message, 'SPEECH_PROVIDER_ERROR', adapter);\n this.name = 'SpeechProviderError';\n this.status = options.status;\n this.responseBody = options.responseBody;\n this.retryAfterMs = options.retryAfterMs;\n if (options.cause !== undefined) {\n this.cause = options.cause;\n }\n }\n}\n\n/** Why a WAV buffer was rejected by `parseWavPcm16`, or an encode input refused. */\nexport type WavFormatErrorReason =\n | 'not_riff'\n | 'truncated'\n | 'malformed_chunk'\n | 'missing_fmt'\n | 'duplicate_fmt'\n | 'data_before_fmt'\n | 'missing_data'\n | 'empty_data'\n | 'unsupported_format'\n | 'unsupported_bits'\n | 'inconsistent_header'\n | 'misaligned_data'\n | 'rate_mismatch'\n | 'channel_mismatch'\n | 'invalid_argument';\n\n/**\n * Thrown by the PCM/WAV utilities (`@happyvertical/speech/pcm`) for input that\n * is not exactly the 16-bit PCM WAV that was asked for, and for invalid\n * arguments (sample rate, sizes). `reason` is stable and machine-readable.\n */\nexport class WavFormatError extends SpeechError {\n readonly reason: WavFormatErrorReason;\n\n constructor(reason: WavFormatErrorReason, message: string) {\n super(message, 'SPEECH_INVALID_WAV');\n this.name = 'WavFormatError';\n this.reason = reason;\n }\n}\n\n/** Why a browser PCM capture could not start or produce audio. */\nexport type PcmCaptureErrorReason =\n | 'unsupported'\n | 'setup_failed'\n | 'cancelled';\n\n/** Thrown by `createPcmCapture` (`@happyvertical/speech/browser`). */\nexport class PcmCaptureError extends SpeechError {\n readonly reason: PcmCaptureErrorReason;\n\n constructor(reason: PcmCaptureErrorReason, message: string, cause?: unknown) {\n super(message, 'SPEECH_PCM_CAPTURE');\n this.name = 'PcmCaptureError';\n this.reason = reason;\n if (cause !== undefined) {\n this.cause = cause;\n }\n }\n}\n"],"mappings":";AAAA,IAAa,cAAb,cAAiC,MAAM;CAG5B;CACA;CAHT,YACE,SACA,MACA,SACA;EACA,MAAM,OAAO;EAHN,KAAA,OAAA;EACA,KAAA,UAAA;EAGP,KAAK,OAAO;CACd;AACF;AAEA,IAAa,2BAAb,cAA8C,YAAY;CACxD,YAAY,SAAiB,SAAkB;EAC7C,MAAM,SAAS,8BAA8B,OAAO;EACpD,KAAK,OAAO;CACd;AACF;AAEA,IAAa,4BAAb,cAA+C,YAAY;CACzD,YAAY,MAAc,MAAc;EACtC,MAAM,WAAW,KAAK,wBAAwB,QAAQ,iBAAiB;EACvE,KAAK,OAAO;CACd;AACF;AAEA,IAAa,sBAAb,cAAyC,YAAY;CACnD;CACA;;CAEA;CAEA,YACE,SACA,SACA,UAKI,CAAC,GACL;EACA,MAAM,SAAS,yBAAyB,OAAO;EAC/C,KAAK,OAAO;EACZ,KAAK,SAAS,QAAQ;EACtB,KAAK,eAAe,QAAQ;EAC5B,KAAK,eAAe,QAAQ;EAC5B,IAAI,QAAQ,UAAU,KAAA,GACpB,KAAK,QAAQ,QAAQ;CAEzB;AACF;;;;;;AAyBA,IAAa,iBAAb,cAAoC,YAAY;CAC9C;CAEA,YAAY,QAA8B,SAAiB;EACzD,MAAM,SAAS,oBAAoB;EACnC,KAAK,OAAO;EACZ,KAAK,SAAS;CAChB;AACF;;AASA,IAAa,kBAAb,cAAqC,YAAY;CAC/C;CAEA,YAAY,QAA+B,SAAiB,OAAiB;EAC3E,MAAM,SAAS,oBAAoB;EACnC,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,IAAI,UAAU,KAAA,GACZ,KAAK,QAAQ;CAEjB;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry-DFSF3WoM.js","names":[],"sources":["../../src/shared/audio.ts","../../src/shared/usage.ts","../../src/shared/env.ts","../../src/shared/registry.ts"],"sourcesContent":["/**\n * Audio input normalisation shared by speech adapters: accepts the input\n * shapes callers actually have (Blob, Buffer, Uint8Array, ArrayBuffer,\n * ReadableStream), enforces byte limits while buffering, and derives a\n * multipart filename whose extension matches the MIME type.\n */\n\nimport { SpeechConfigurationError } from './errors.js';\nimport type { AudioInput, AudioSource } from './types.js';\n\n/** OpenAI caps `/audio/transcriptions` uploads at 25 MB. */\nexport const DEFAULT_MAX_AUDIO_BYTES = 25 * 1024 * 1024;\n\nconst MIME_EXTENSIONS: Record<string, string> = {\n 'audio/webm': 'webm',\n 'video/webm': 'webm',\n 'audio/mp4': 'm4a',\n 'audio/m4a': 'm4a',\n 'audio/x-m4a': 'm4a',\n 'video/mp4': 'mp4',\n 'audio/wav': 'wav',\n 'audio/wave': 'wav',\n 'audio/x-wav': 'wav',\n 'audio/vnd.wave': 'wav',\n 'audio/ogg': 'ogg',\n 'application/ogg': 'ogg',\n 'audio/mpeg': 'mp3',\n 'audio/mp3': 'mp3',\n 'audio/mpga': 'mp3',\n 'audio/flac': 'flac',\n 'audio/x-flac': 'flac',\n};\n\n/**\n * Strips parameters (e.g. `;codecs=opus`) and lower-cases a MIME type.\n * Returns `undefined` for blank input.\n */\nexport function normalizeMimeType(\n mimeType: string | undefined | null,\n): string | undefined {\n const essence = mimeType?.split(';')[0]?.trim().toLowerCase();\n return essence ? essence : undefined;\n}\n\n/**\n * Maps an audio MIME type to the file extension OpenAI-compatible servers use\n * to detect the container format. Codec parameters are ignored, so\n * `audio/webm;codecs=opus` maps to `webm`. Returns `undefined` when unknown.\n */\nexport function mimeTypeToAudioExtension(\n mimeType: string | undefined | null,\n): string | undefined {\n const essence = normalizeMimeType(mimeType);\n return essence ? MIME_EXTENSIONS[essence] : undefined;\n}\n\nexport interface NormalizeAudioOptions {\n /** MIME type override; wins over `AudioInput.mimeType`/`contentType` and Blob type. */\n mimeType?: string;\n /**\n * Maximum payload size in bytes. `undefined` or `Infinity` disables the\n * limit. Streams are cancelled as soon as they exceed it.\n */\n maxBytes?: number;\n /** Adapter name recorded on configuration errors. */\n adapter?: string;\n /** Aborts buffering (including a pending stream read) with the signal's reason. */\n signal?: AbortSignal;\n /** Base filename (without extension) used when the input has none. */\n defaultBasename?: string;\n /** Append a MIME-derived extension to the default filename. Default `true`. */\n deriveExtension?: boolean;\n}\n\nexport interface NormalizedAudio {\n blob: Blob;\n /** Full MIME type including parameters, or `application/octet-stream`. */\n mimeType: string;\n bytes: number;\n /** Explicit filename, or `<basename>.<ext>` derived from the MIME type. */\n filename: string;\n durationSeconds?: number;\n}\n\n/**\n * Accepts either an {@link AudioInput} wrapper or a bare {@link AudioSource}\n * and returns a size-checked Blob plus the metadata needed for multipart\n * uploads.\n */\nexport async function normalizeAudioInput(\n input: AudioInput | AudioSource,\n options: NormalizeAudioOptions = {},\n): Promise<NormalizedAudio> {\n const wrapped: AudioInput = isAudioInput(input) ? input : { data: input };\n const { adapter, signal } = options;\n signal?.throwIfAborted();\n const maxBytes = resolveMaxBytes(options.maxBytes, adapter);\n const data = wrapped.data;\n\n const blobType =\n typeof Blob !== 'undefined' && data instanceof Blob ? data.type : undefined;\n const mimeType =\n options.mimeType ??\n wrapped.mimeType ??\n wrapped.contentType ??\n (blobType || undefined) ??\n 'application/octet-stream';\n\n let blob: Blob;\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n assertWithinLimit(data.size, maxBytes, adapter);\n blob = data.type === mimeType ? data : new Blob([data], { type: mimeType });\n } else if (data instanceof Uint8Array) {\n assertWithinLimit(data.byteLength, maxBytes, adapter);\n blob = new Blob([copyBytes(data)], { type: mimeType });\n } else if (data instanceof ArrayBuffer) {\n assertWithinLimit(data.byteLength, maxBytes, adapter);\n blob = new Blob([data], { type: mimeType });\n } else if (isReadableStream(data)) {\n const chunks = await readStreamWithLimit(data, maxBytes, adapter, signal);\n blob = new Blob(chunks, { type: mimeType });\n } else {\n throw new SpeechConfigurationError(\n 'Unsupported audio input: expected Blob, Buffer, Uint8Array, ArrayBuffer, or ReadableStream',\n adapter,\n );\n }\n\n if (blob.size === 0) {\n throw new SpeechConfigurationError('Audio input is empty', adapter);\n }\n\n const extension =\n options.deriveExtension === false\n ? undefined\n : mimeTypeToAudioExtension(mimeType);\n const basename = options.defaultBasename ?? 'audio';\n const filename =\n wrapped.filename ?? (extension ? `${basename}.${extension}` : basename);\n\n return {\n blob,\n mimeType,\n bytes: blob.size,\n filename,\n durationSeconds: wrapped.durationSeconds,\n };\n}\n\nfunction isAudioInput(value: AudioInput | AudioSource): value is AudioInput {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'data' in value &&\n !(typeof Blob !== 'undefined' && value instanceof Blob) &&\n !(value instanceof Uint8Array) &&\n !(value instanceof ArrayBuffer) &&\n !isReadableStream(value)\n );\n}\n\nfunction isReadableStream(value: unknown): value is ReadableStream<unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as ReadableStream).getReader === 'function'\n );\n}\n\nfunction resolveMaxBytes(\n maxBytes: number | undefined,\n adapter: string | undefined,\n): number {\n if (maxBytes === undefined) {\n return Number.POSITIVE_INFINITY;\n }\n\n if (Number.isNaN(maxBytes) || maxBytes <= 0) {\n throw new SpeechConfigurationError(\n 'maxBytes must be a positive number',\n adapter,\n );\n }\n\n return maxBytes;\n}\n\nfunction assertWithinLimit(\n bytes: number,\n maxBytes: number,\n adapter: string | undefined,\n): void {\n if (bytes > maxBytes) {\n throw new SpeechConfigurationError(\n `Audio input exceeds maxBytes (${bytes} > ${maxBytes} bytes)`,\n adapter,\n );\n }\n}\n\nasync function readStreamWithLimit(\n stream: ReadableStream<unknown>,\n maxBytes: number,\n adapter: string | undefined,\n signal: AbortSignal | undefined,\n): Promise<Uint8Array<ArrayBuffer>[]> {\n const reader = stream.getReader();\n const chunks: Uint8Array<ArrayBuffer>[] = [];\n let total = 0;\n // Cancelling the reader settles any pending read, so an abort cannot hang.\n const onAbort = () => {\n reader.cancel(signal?.reason).catch(() => undefined);\n };\n signal?.addEventListener('abort', onAbort, { once: true });\n\n try {\n for (;;) {\n const { done, value } = await reader.read();\n signal?.throwIfAborted();\n if (done) {\n break;\n }\n\n // Check the size before copying so one oversized chunk is never duplicated.\n total += chunkByteLength(value, adapter);\n if (total > maxBytes) {\n await reader.cancel().catch(() => undefined);\n throw new SpeechConfigurationError(\n `Audio stream exceeds maxBytes (more than ${maxBytes} bytes)`,\n adapter,\n );\n }\n chunks.push(toBytes(value));\n }\n } finally {\n signal?.removeEventListener('abort', onAbort);\n reader.releaseLock();\n }\n\n return chunks;\n}\n\nfunction chunkByteLength(value: unknown, adapter: string | undefined): number {\n if (value instanceof Uint8Array || value instanceof ArrayBuffer) {\n return value.byteLength;\n }\n\n throw new SpeechConfigurationError(\n 'Audio stream chunks must be Uint8Array or ArrayBuffer',\n adapter,\n );\n}\n\nfunction toBytes(value: unknown): Uint8Array<ArrayBuffer> {\n return value instanceof Uint8Array\n ? copyBytes(value)\n : new Uint8Array((value as ArrayBuffer).slice(0));\n}\n\nfunction copyBytes(bytes: Uint8Array): Uint8Array<ArrayBuffer> {\n const copy = new Uint8Array(bytes.byteLength);\n copy.set(bytes);\n return copy;\n}\n","/**\n * Usage reporting shared by speech adapters.\n *\n * Adapters attach a {@link SpeechUsage} record to their results and call the\n * optional {@link SpeechUsageCallback} so callers can attribute each provider\n * call (for example to a tenant for billing).\n */\n\nexport type SpeechOperation = 'transcription' | 'synthesis';\n\nexport interface SpeechUsage {\n /** Operation that produced this usage record. */\n operation: SpeechOperation;\n /** Adapter type that made the provider call, e.g. `openai-compatible`. */\n provider: string;\n /** Model identifier sent to (or reported by) the provider. */\n model?: string;\n /** Audio duration in seconds, when the provider or caller reports it. */\n audioSeconds?: number;\n /** Size of the audio payload in bytes (uploaded for STT, received for TTS). */\n bytes?: number;\n /** Provider usage block, passed through untouched (e.g. OpenAI `usage`). */\n providerUsage?: Record<string, unknown>;\n}\n\nexport type SpeechUsageCallback = (usage: SpeechUsage) => void | Promise<void>;\n\n/**\n * Invokes every configured usage callback in order (adapter-level first, then\n * request-level). Callback errors propagate to the caller so that billing\n * hooks never fail silently.\n */\nexport async function reportSpeechUsage(\n usage: SpeechUsage,\n ...callbacks: Array<SpeechUsageCallback | undefined>\n): Promise<void> {\n for (const callback of callbacks) {\n if (callback) {\n await callback(usage);\n }\n }\n}\n\n/**\n * Extracts audio seconds from an OpenAI-style `usage` block\n * (`{ type: 'duration', seconds }`).\n */\nexport function audioSecondsFromProviderUsage(\n providerUsage: Record<string, unknown> | undefined,\n): number | undefined {\n if (!providerUsage) {\n return undefined;\n }\n\n const seconds = providerUsage.seconds;\n return typeof seconds === 'number' && Number.isFinite(seconds)\n ? seconds\n : undefined;\n}\n","/**\n * Environment configuration for speech adapters.\n *\n * Transcriber settings resolve in this order (first wins):\n * explicit options → factory context → `HAVE_SPEECH_TRANSCRIBER_*` →\n * legacy `HAVE_SPEECH_STT_*` → gateway `STT_*` aliases.\n */\n\nimport { SpeechConfigurationError } from './errors.js';\nimport type { SpeechFetch } from './types.js';\n\nexport interface SpeechEnv {\n [key: string]: string | undefined;\n}\n\n/** Environment variable names read for each transcriber setting, in priority order. */\nexport const TRANSCRIBER_ENV_KEYS = {\n type: [\n 'HAVE_SPEECH_TRANSCRIBER_TYPE',\n 'HAVE_SPEECH_STT_TYPE',\n 'HAVE_SPEECH_STT_ADAPTER',\n 'STT_ADAPTER',\n ],\n baseUrl: [\n 'HAVE_SPEECH_TRANSCRIBER_BASE_URL',\n 'HAVE_SPEECH_STT_BASE_URL',\n 'STT_BASE_URL',\n ],\n model: [\n 'HAVE_SPEECH_TRANSCRIBER_MODEL',\n 'HAVE_SPEECH_STT_MODEL',\n 'STT_MODEL',\n ],\n apiKey: [\n 'HAVE_SPEECH_TRANSCRIBER_API_KEY',\n 'HAVE_SPEECH_STT_API_KEY',\n 'STT_API_KEY',\n 'SPEECH_API_KEY',\n ],\n timeoutMs: [\n 'HAVE_SPEECH_TRANSCRIBER_TIMEOUT',\n 'HAVE_SPEECH_TRANSCRIBER_TIMEOUT_MS',\n 'HAVE_SPEECH_STT_TIMEOUT_MS',\n 'STT_TIMEOUT_MS',\n ],\n maxBytes: ['HAVE_SPEECH_TRANSCRIBER_MAX_BYTES', 'STT_MAX_BYTES'],\n headers: ['HAVE_SPEECH_TRANSCRIBER_HEADERS', 'STT_HEADERS'],\n path: ['HAVE_SPEECH_TRANSCRIBER_PATH', 'HAVE_SPEECH_STT_PATH', 'STT_PATH'],\n} as const;\n\n/** Transcriber settings read from the environment. All fields are optional. */\nexport interface TranscriberEnvConfig {\n type?: string;\n baseUrl?: string;\n model?: string;\n apiKey?: string;\n timeoutMs?: number;\n maxBytes?: number;\n headers?: Record<string, string>;\n path?: string;\n}\n\n/** Options shape accepted by {@link resolveTranscriberConfig}. */\nexport interface TranscriberConfigInput {\n type?: string;\n baseUrl?: string;\n model?: string;\n apiKey?: string;\n timeoutMs?: number;\n maxBytes?: number;\n headers?: HeadersInit;\n fetch?: SpeechFetch;\n}\n\nexport interface TranscriberConfigContext {\n env?: SpeechEnv;\n fetch?: SpeechFetch;\n headers?: HeadersInit;\n}\n\n/** Resolved transcriber settings. `headers` merges env → context → options. */\nexport interface ResolvedTranscriberConfig {\n type?: string;\n baseUrl?: string;\n model?: string;\n apiKey?: string;\n timeoutMs?: number;\n maxBytes?: number;\n headers?: Headers;\n fetch?: SpeechFetch;\n path?: string;\n}\n\nexport function readTranscriberEnv(env: SpeechEnv): TranscriberEnvConfig {\n return {\n type: readEnv(env, ...TRANSCRIBER_ENV_KEYS.type),\n baseUrl: readEnv(env, ...TRANSCRIBER_ENV_KEYS.baseUrl),\n model: readEnv(env, ...TRANSCRIBER_ENV_KEYS.model),\n apiKey: readEnv(env, ...TRANSCRIBER_ENV_KEYS.apiKey),\n timeoutMs: parseOptionalInteger(\n readEnv(env, ...TRANSCRIBER_ENV_KEYS.timeoutMs),\n ),\n maxBytes: parseOptionalInteger(\n readEnv(env, ...TRANSCRIBER_ENV_KEYS.maxBytes),\n ),\n headers: parseHeadersEnv(env, TRANSCRIBER_ENV_KEYS.headers),\n path: readEnv(env, ...TRANSCRIBER_ENV_KEYS.path),\n };\n}\n\nexport function hasTranscriberEnv(env: SpeechEnv): boolean {\n return hasAnyEnv(\n env,\n ...TRANSCRIBER_ENV_KEYS.type,\n ...TRANSCRIBER_ENV_KEYS.baseUrl,\n );\n}\n\n/**\n * Merges explicit transcriber options with the factory context and the\n * environment. Explicit options always win; headers are merged so a\n * per-deployment env header (e.g. a gateway virtual key) can be combined with\n * explicit ones.\n */\nexport function resolveTranscriberConfig(\n options: TranscriberConfigInput = {},\n context: TranscriberConfigContext = {},\n): ResolvedTranscriberConfig {\n const fromEnv = readTranscriberEnv(context.env ?? defaultEnv());\n const headers = mergeHeaderInits(\n fromEnv.headers,\n context.headers,\n options.headers,\n );\n\n return {\n type: options.type ?? fromEnv.type,\n baseUrl: (options.baseUrl ?? fromEnv.baseUrl)?.trim(),\n model: options.model ?? fromEnv.model,\n apiKey: options.apiKey ?? fromEnv.apiKey,\n timeoutMs: options.timeoutMs ?? fromEnv.timeoutMs,\n maxBytes: options.maxBytes ?? fromEnv.maxBytes,\n headers,\n fetch: options.fetch ?? context.fetch,\n path: fromEnv.path,\n };\n}\n\n/** Merges header sets left to right; later sets win per header name. */\nexport function mergeHeaderInits(\n ...sets: Array<HeadersInit | undefined>\n): Headers | undefined {\n const present = sets.filter((set): set is HeadersInit => Boolean(set));\n if (present.length === 0) {\n return undefined;\n }\n\n const merged = new Headers();\n for (const set of present) {\n new Headers(set).forEach((value, key) => {\n merged.set(key, value);\n });\n }\n return merged;\n}\n\nexport function readEnv(env: SpeechEnv, ...keys: string[]): string | undefined {\n for (const key of keys) {\n const value = env[key];\n if (value?.trim()) {\n return value.trim();\n }\n }\n\n return undefined;\n}\n\nexport function hasAnyEnv(env: SpeechEnv, ...keys: string[]): boolean {\n return keys.some((key) => Boolean(env[key]?.trim()));\n}\n\nexport function parseOptionalInteger(\n value: string | undefined,\n): number | undefined {\n if (!value) {\n return undefined;\n }\n\n const parsed = Number.parseInt(value, 10);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nexport function defaultEnv(): SpeechEnv {\n return globalThis.process?.env ?? {};\n}\n\n/**\n * Parses a JSON object of header names to string values. The raw value is\n * never echoed in errors because it may carry credentials.\n */\nexport function parseHeadersEnv(\n env: SpeechEnv,\n keys: readonly string[],\n): Record<string, string> | undefined {\n for (const key of keys) {\n const raw = env[key]?.trim();\n if (!raw) {\n continue;\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n throw new SpeechConfigurationError(\n `${key} must be a JSON object of header names to string values`,\n );\n }\n\n if (\n !parsed ||\n typeof parsed !== 'object' ||\n Array.isArray(parsed) ||\n !Object.values(parsed).every((value) => typeof value === 'string')\n ) {\n throw new SpeechConfigurationError(\n `${key} must be a JSON object of header names to string values`,\n );\n }\n\n return parsed as Record<string, string>;\n }\n\n return undefined;\n}\n","/**\n * Registry for opt-in transcriber adapters that live behind subpath exports\n * (e.g. `@happyvertical/speech/local`).\n *\n * The core entry never imports those adapters, so their heavy optional peer\n * dependencies are never resolved by bundlers or loaded at runtime unless the\n * caller imports the subpath, which registers its factory here.\n */\n\nimport type { SpeechFactoryContext } from './factory.js';\nimport type {\n GetTranscriberOptions,\n Transcriber,\n TranscriberType,\n} from './types.js';\n\nexport type OptionalTranscriberFactory = (\n options: GetTranscriberOptions,\n context: SpeechFactoryContext,\n) => Transcriber | Promise<Transcriber>;\n\n/** Adapter types that are only available after importing a subpath. */\nconst OPTIONAL_TRANSCRIBER_ENTRIES: Partial<Record<TranscriberType, string>> = {\n local: '@happyvertical/speech/local',\n};\n\nconst registered = new Map<TranscriberType, OptionalTranscriberFactory>();\n\nexport function registerOptionalTranscriber(\n type: TranscriberType,\n factory: OptionalTranscriberFactory,\n): void {\n registered.set(type, factory);\n}\n\nexport function getOptionalTranscriberFactory(\n type: string,\n): OptionalTranscriberFactory | undefined {\n return registered.get(type as TranscriberType);\n}\n\n/** Subpath that registers `type`, when it is an opt-in adapter. */\nexport function optionalTranscriberEntry(type: string): string | undefined {\n return OPTIONAL_TRANSCRIBER_ENTRIES[type as TranscriberType];\n}\n\nexport function registeredOptionalTranscribers(): TranscriberType[] {\n return [...registered.keys()];\n}\n"],"mappings":"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"}
|