voice-router-dev 0.9.4 → 0.9.6

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/CHANGELOG.md CHANGED
@@ -5,6 +5,72 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.9.6] - 2026-06-01
9
+
10
+ ### Fixed
11
+
12
+ #### Speechmatics Batch File Upload Multipart Body
13
+
14
+ Fixed `SpeechmaticsAdapter.transcribe()` for the file-input branch so `POST /v2/jobs` is sent as a real `multipart/form-data` body with a boundary. The previous implementation built a plain object `{ config, data_file }` and set the `Content-Type: multipart/form-data` header on the axios request; axios then serialized the object as JSON and Speechmatics rejected the request with `"Content-Type must be multipart/form-data"`, so no job was ever created (`transcription_id: null`). The adapter now constructs a `FormData` (normalizing `Buffer` to `Blob` for Node) and lets axios derive `Content-Type` with the boundary. URL input (`fetch_data`) was unaffected.
15
+
16
+ ## [0.9.5] - 2026-06-01
17
+
18
+ ### Added
19
+
20
+ #### Provider Update Checker
21
+
22
+ New `pnpm providers:check-updates` tool that fetches every tracked upstream — provider specs, npm SDK declaration files, remote-content URLs — and reports drift against the recorded baselines in `specs/.checksums.json`. Use `--write` to baseline. Exit code is `0` when clean, `2` when changes are detected, `1` on error — suitable for CI scheduling. Companion: `pnpm openapi:check-consumed` (exit `2` if any post-fix spec on disk differs from the recorded `consumedSha256`).
23
+
24
+ #### Consumed-Spec Checksum Tracking
25
+
26
+ `specs/.checksums.json` now records `consumedSha256` (and `consumedAt`, `fixedBy`) alongside the raw upstream `sha256` for every non-manual spec. The consumed checksum is the hash of the spec file *after* `fix-*-spec.js` runs — i.e. the exact bytes orval reads — so the file records both "what we downloaded from upstream" and "what codegen was built from", closing the gap for the five fixed specs (assemblyai, deepgram, openai, speechmatics, elevenlabs). `pnpm openapi:record-consumed` writes the field and is wired into `openapi:generate` immediately after `openapi:fix-specs`.
27
+
28
+ #### Hand-Maintained Generated File Restores
29
+
30
+ `scripts/fix-generated.js` now restores four files under `src/generated/` that have no generator and were being wiped by `openapi:clean`: `soniox/sdk-types.ts`, `soniox/streaming-response-types.ts`, `elevenlabs/streaming-response-types.ts`, and `deepgram/streaming-response-types.ts`. Canonical sources are tracked under `specs/` and registered as `manual` entries in the spec manifest with `dependsOnUpstreams` links so the checker flags them for review when the relevant SDK changes.
31
+
32
+ #### Shared Spec Manifest
33
+
34
+ Extracted `SPEC_SOURCES` and `PROVIDERS` definitions into `scripts/provider-upstream-manifest.js`, shared by `sync-specs.js` and the new checker. Also exports `canonicalizeForHash` and `stableStringify`.
35
+
36
+ ### Changed
37
+
38
+ #### ElevenLabs Language List (public API change)
39
+
40
+ `ElevenLabsLanguageCodes`, `ElevenLabsLanguages`, `ElevenLabsLanguageLabels`, and `ElevenLabsLanguage` now contain **80 entries** (was 99). ElevenLabs removed 19 languages from Scribe coverage: `la`, `mi`, `br`, `eu`, `sq`, `si`, `yi`, `fo`, `ht`, `tk`, `sa`, `bo`, `tl`, `mg`, `tt`, `haw`, `ba`, `su`, `nn`. The curated list now lives in tracked `specs/elevenlabs-languages.json` instead of being inlined in the generator script.
41
+
42
+ #### Upstream Specs Synced + Regenerated
43
+
44
+ All eight upstream specs were re-synced and the full provider type set regenerated. Notable: OpenAI realtime model union now includes the latest `gpt-realtime-2`, `gpt-realtime-mini-*`, `gpt-audio-1.5`, `gpt-audio-mini-*` variants; new schema files for transcript metadata (AssemblyAI), reasoning (OpenAI), usage logs and TTS (Soniox), and audio-filtering / speaker-input (Speechmatics).
45
+
46
+ #### Soniox Generate Step Ordering
47
+
48
+ `openapi:generate` and `openapi:generate:soniox` now run `sync-soniox-models` before `sync-soniox-streaming`. The streaming generator reads from `src/generated/soniox/models.ts` to enrich realtime model metadata, and the previous order caused `ENOENT` on a from-scratch rebuild.
49
+
50
+ ### Fixed
51
+
52
+ #### Canonical Hashing for Non-Deterministic Upstreams
53
+
54
+ Spec hashing now canonicalizes JSON content (parse + stable-key stringify) and masks ISO-8601 timestamps before producing the SHA. Without this, providers that reorder keys per request or embed the current server time in `example` fields (e.g. Gladia) reported a "changed" spec on every check, drowning real upstream signal.
55
+
56
+ #### Relative Redirect Handling
57
+
58
+ `sync-specs.js` and `check-provider-updates.js` now resolve relative `Location` headers against the request URL via `new URL(location, requestUrl)`, drain the redirect body, and cap at 10 hops. The prior code passed the raw `Location` value into `http.get()`, which threw `Invalid URL` and crashed the script on the first relative redirect (e.g. ElevenLabs docs).
59
+
60
+ #### NPM Tarball Declaration File Lookup
61
+
62
+ `normalizeTarPath` now strips a leading `./` so declaration paths resolved from `package.json` `exports.types` (`./dist/index.d.cts`) match tarball entries (`package/dist/index.d.cts`). Previously every SDK declaration hash silently failed with `File not found in npm tarball: ./dist/...`, defeating SDK-drift detection.
63
+
64
+ #### sync-specs Preserves Consumed Fields
65
+
66
+ `sync-specs.js` now spreads the existing checksums entry when rewriting it, so `consumedSha256` / `consumedAt` / `fixedBy` survive a re-sync. Previously they were silently wiped each time.
67
+
68
+ ### Internal
69
+
70
+ #### Dropped Noisy Upstream
71
+
72
+ Removed `deepgramModelsApi` from `providerUpstreams`. Its `/v1/models` response carries per-request fields that vary even after JSON canonicalization, so any baseline would report drift every run. Real Deepgram changes are still surfaced via the `@deepgram/sdk` npm baseline and the `deepgram-openapi.yml` spec.
73
+
8
74
  ## [0.9.4] - 2026-04-28
9
75
 
10
76
  ### Changed
@@ -1134,9 +1134,6 @@ declare const AzureLocales: readonly [{
1134
1134
  }, {
1135
1135
  readonly code: "az-AZ";
1136
1136
  readonly name: "Azerbaijani (Azerbaijan)";
1137
- }, {
1138
- readonly code: "be-BY";
1139
- readonly name: "Belarusian (Belarus)";
1140
1137
  }, {
1141
1138
  readonly code: "bg-BG";
1142
1139
  readonly name: "Bulgarian (Bulgaria)";
@@ -1377,9 +1374,6 @@ declare const AzureLocales: readonly [{
1377
1374
  }, {
1378
1375
  readonly code: "lv-LV";
1379
1376
  readonly name: "Latvian (Latvia)";
1380
- }, {
1381
- readonly code: "mi-NZ";
1382
- readonly name: "Maori (New Zealand)";
1383
1377
  }, {
1384
1378
  readonly code: "mk-MK";
1385
1379
  readonly name: "Macedonian (North Macedonia)";
@@ -1537,7 +1531,7 @@ declare const AzureLocales: readonly [{
1537
1531
  /**
1538
1532
  * Azure Speech-to-Text supported locale codes (BCP-47)
1539
1533
  */
1540
- declare const AzureLocaleCodes: readonly ["af-ZA", "am-ET", "ar-AE", "ar-BH", "ar-DZ", "ar-EG", "ar-IL", "ar-IQ", "ar-JO", "ar-KW", "ar-LB", "ar-LY", "ar-MA", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SY", "ar-TN", "ar-YE", "as-IN", "az-AZ", "be-BY", "bg-BG", "bn-BD", "bn-IN", "bs-BA", "ca-ES", "cs-CZ", "cy-GB", "da-DK", "de-AT", "de-CH", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-GH", "en-HK", "en-IE", "en-IN", "en-KE", "en-NG", "en-NZ", "en-PH", "en-SG", "en-TZ", "en-US", "en-ZA", "es-AR", "es-BO", "es-CL", "es-CO", "es-CR", "es-CU", "es-DO", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-MX", "es-NI", "es-PA", "es-PE", "es-PR", "es-PY", "es-SV", "es-US", "es-UY", "es-VE", "et-EE", "eu-ES", "fa-IR", "fi-FI", "fil-PH", "fr-BE", "fr-CA", "fr-CH", "fr-FR", "ga-IE", "gl-ES", "gu-IN", "he-IL", "hi-IN", "hr-HR", "hu-HU", "hy-AM", "id-ID", "is-IS", "it-CH", "it-IT", "ja-JP", "jv-ID", "ka-GE", "kk-KZ", "km-KH", "kn-IN", "ko-KR", "lo-LA", "lt-LT", "lv-LV", "mi-NZ", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "ms-MY", "mt-MT", "my-MM", "nan-CN", "nb-NO", "ne-NP", "nl-BE", "nl-NL", "or-IN", "pa-IN", "pl-PL", "ps-AF", "pt-BR", "pt-PT", "ro-RO", "ru-RU", "si-LK", "sk-SK", "sl-SI", "so-SO", "sq-AL", "sr-ME", "sr-RS", "sr-XK", "su-ID", "sv-SE", "sw-KE", "sw-TZ", "ta-IN", "ta-LK", "ta-MY", "ta-SG", "te-IN", "th-TH", "tr-TR", "uk-UA", "ur-IN", "ur-PK", "uz-UZ", "vi-VN", "wuu-CN", "yue-CN", "zh-CN", "zh-HK", "zh-SG", "zh-TW", "zu-ZA"];
1534
+ declare const AzureLocaleCodes: readonly ["af-ZA", "am-ET", "ar-AE", "ar-BH", "ar-DZ", "ar-EG", "ar-IL", "ar-IQ", "ar-JO", "ar-KW", "ar-LB", "ar-LY", "ar-MA", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SY", "ar-TN", "ar-YE", "as-IN", "az-AZ", "bg-BG", "bn-BD", "bn-IN", "bs-BA", "ca-ES", "cs-CZ", "cy-GB", "da-DK", "de-AT", "de-CH", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-GH", "en-HK", "en-IE", "en-IN", "en-KE", "en-NG", "en-NZ", "en-PH", "en-SG", "en-TZ", "en-US", "en-ZA", "es-AR", "es-BO", "es-CL", "es-CO", "es-CR", "es-CU", "es-DO", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-MX", "es-NI", "es-PA", "es-PE", "es-PR", "es-PY", "es-SV", "es-US", "es-UY", "es-VE", "et-EE", "eu-ES", "fa-IR", "fi-FI", "fil-PH", "fr-BE", "fr-CA", "fr-CH", "fr-FR", "ga-IE", "gl-ES", "gu-IN", "he-IL", "hi-IN", "hr-HR", "hu-HU", "hy-AM", "id-ID", "is-IS", "it-CH", "it-IT", "ja-JP", "jv-ID", "ka-GE", "kk-KZ", "km-KH", "kn-IN", "ko-KR", "lo-LA", "lt-LT", "lv-LV", "mk-MK", "ml-IN", "mn-MN", "mr-IN", "ms-MY", "mt-MT", "my-MM", "nan-CN", "nb-NO", "ne-NP", "nl-BE", "nl-NL", "or-IN", "pa-IN", "pl-PL", "ps-AF", "pt-BR", "pt-PT", "ro-RO", "ru-RU", "si-LK", "sk-SK", "sl-SI", "so-SO", "sq-AL", "sr-ME", "sr-RS", "sr-XK", "su-ID", "sv-SE", "sw-KE", "sw-TZ", "ta-IN", "ta-LK", "ta-MY", "ta-SG", "te-IN", "th-TH", "tr-TR", "uk-UA", "ur-IN", "ur-PK", "uz-UZ", "vi-VN", "wuu-CN", "yue-CN", "zh-CN", "zh-HK", "zh-SG", "zh-TW", "zu-ZA"];
1541
1535
  /**
1542
1536
  * Type for Azure locale codes
1543
1537
  */
@@ -1583,7 +1577,6 @@ declare const AzureLocale: {
1583
1577
  readonly "ar-YE": "ar-YE";
1584
1578
  readonly "as-IN": "as-IN";
1585
1579
  readonly "az-AZ": "az-AZ";
1586
- readonly "be-BY": "be-BY";
1587
1580
  readonly "bg-BG": "bg-BG";
1588
1581
  readonly "bn-BD": "bn-BD";
1589
1582
  readonly "bn-IN": "bn-IN";
@@ -1664,7 +1657,6 @@ declare const AzureLocale: {
1664
1657
  readonly "lo-LA": "lo-LA";
1665
1658
  readonly "lt-LT": "lt-LT";
1666
1659
  readonly "lv-LV": "lv-LV";
1667
- readonly "mi-NZ": "mi-NZ";
1668
1660
  readonly "mk-MK": "mk-MK";
1669
1661
  readonly "ml-IN": "ml-IN";
1670
1662
  readonly "mn-MN": "mn-MN";
@@ -1835,12 +1827,6 @@ declare const ElevenLabsLanguages: readonly [{
1835
1827
  }, {
1836
1828
  readonly code: "lt";
1837
1829
  readonly name: "Lithuanian";
1838
- }, {
1839
- readonly code: "la";
1840
- readonly name: "Latin";
1841
- }, {
1842
- readonly code: "mi";
1843
- readonly name: "Maori";
1844
1830
  }, {
1845
1831
  readonly code: "ml";
1846
1832
  readonly name: "Malayalam";
@@ -1880,12 +1866,6 @@ declare const ElevenLabsLanguages: readonly [{
1880
1866
  }, {
1881
1867
  readonly code: "mk";
1882
1868
  readonly name: "Macedonian";
1883
- }, {
1884
- readonly code: "br";
1885
- readonly name: "Breton";
1886
- }, {
1887
- readonly code: "eu";
1888
- readonly name: "Basque";
1889
1869
  }, {
1890
1870
  readonly code: "is";
1891
1871
  readonly name: "Icelandic";
@@ -1904,9 +1884,6 @@ declare const ElevenLabsLanguages: readonly [{
1904
1884
  }, {
1905
1885
  readonly code: "kk";
1906
1886
  readonly name: "Kazakh";
1907
- }, {
1908
- readonly code: "sq";
1909
- readonly name: "Albanian";
1910
1887
  }, {
1911
1888
  readonly code: "sw";
1912
1889
  readonly name: "Swahili";
@@ -1919,9 +1896,6 @@ declare const ElevenLabsLanguages: readonly [{
1919
1896
  }, {
1920
1897
  readonly code: "pa";
1921
1898
  readonly name: "Punjabi";
1922
- }, {
1923
- readonly code: "si";
1924
- readonly name: "Sinhala";
1925
1899
  }, {
1926
1900
  readonly code: "km";
1927
1901
  readonly name: "Khmer";
@@ -1958,80 +1932,41 @@ declare const ElevenLabsLanguages: readonly [{
1958
1932
  }, {
1959
1933
  readonly code: "am";
1960
1934
  readonly name: "Amharic";
1961
- }, {
1962
- readonly code: "yi";
1963
- readonly name: "Yiddish";
1964
1935
  }, {
1965
1936
  readonly code: "lo";
1966
1937
  readonly name: "Lao";
1967
1938
  }, {
1968
1939
  readonly code: "uz";
1969
1940
  readonly name: "Uzbek";
1970
- }, {
1971
- readonly code: "fo";
1972
- readonly name: "Faroese";
1973
- }, {
1974
- readonly code: "ht";
1975
- readonly name: "Haitian Creole";
1976
1941
  }, {
1977
1942
  readonly code: "ps";
1978
1943
  readonly name: "Pashto";
1979
- }, {
1980
- readonly code: "tk";
1981
- readonly name: "Turkmen";
1982
- }, {
1983
- readonly code: "nn";
1984
- readonly name: "Norwegian Nynorsk";
1985
1944
  }, {
1986
1945
  readonly code: "mt";
1987
1946
  readonly name: "Maltese";
1988
- }, {
1989
- readonly code: "sa";
1990
- readonly name: "Sanskrit";
1991
1947
  }, {
1992
1948
  readonly code: "lb";
1993
1949
  readonly name: "Luxembourgish";
1994
1950
  }, {
1995
1951
  readonly code: "my";
1996
1952
  readonly name: "Burmese";
1997
- }, {
1998
- readonly code: "bo";
1999
- readonly name: "Tibetan";
2000
- }, {
2001
- readonly code: "tl";
2002
- readonly name: "Tagalog";
2003
- }, {
2004
- readonly code: "mg";
2005
- readonly name: "Malagasy";
2006
1953
  }, {
2007
1954
  readonly code: "as";
2008
1955
  readonly name: "Assamese";
2009
- }, {
2010
- readonly code: "tt";
2011
- readonly name: "Tatar";
2012
- }, {
2013
- readonly code: "haw";
2014
- readonly name: "Hawaiian";
2015
1956
  }, {
2016
1957
  readonly code: "ln";
2017
1958
  readonly name: "Lingala";
2018
1959
  }, {
2019
1960
  readonly code: "ha";
2020
1961
  readonly name: "Hausa";
2021
- }, {
2022
- readonly code: "ba";
2023
- readonly name: "Bashkir";
2024
1962
  }, {
2025
1963
  readonly code: "jw";
2026
1964
  readonly name: "Javanese";
2027
- }, {
2028
- readonly code: "su";
2029
- readonly name: "Sundanese";
2030
1965
  }];
2031
1966
  /**
2032
1967
  * ElevenLabs supported language codes
2033
1968
  */
2034
- declare const ElevenLabsLanguageCodes: readonly ["en", "zh", "de", "es", "ru", "ko", "fr", "ja", "pt", "tr", "pl", "ca", "nl", "ar", "sv", "it", "id", "hi", "fi", "vi", "he", "uk", "el", "ms", "cs", "ro", "da", "hu", "ta", "no", "th", "ur", "hr", "bg", "lt", "la", "mi", "ml", "cy", "sk", "te", "fa", "lv", "bn", "sr", "az", "sl", "kn", "et", "mk", "br", "eu", "is", "hy", "ne", "mn", "bs", "kk", "sq", "sw", "gl", "mr", "pa", "si", "km", "sn", "yo", "so", "af", "oc", "ka", "be", "tg", "sd", "gu", "am", "yi", "lo", "uz", "fo", "ht", "ps", "tk", "nn", "mt", "sa", "lb", "my", "bo", "tl", "mg", "as", "tt", "haw", "ln", "ha", "ba", "jw", "su"];
1969
+ declare const ElevenLabsLanguageCodes: readonly ["en", "zh", "de", "es", "ru", "ko", "fr", "ja", "pt", "tr", "pl", "ca", "nl", "ar", "sv", "it", "id", "hi", "fi", "vi", "he", "uk", "el", "ms", "cs", "ro", "da", "hu", "ta", "no", "th", "ur", "hr", "bg", "lt", "ml", "cy", "sk", "te", "fa", "lv", "bn", "sr", "az", "sl", "kn", "et", "mk", "is", "hy", "ne", "mn", "bs", "kk", "sw", "gl", "mr", "pa", "km", "sn", "yo", "so", "af", "oc", "ka", "be", "tg", "sd", "gu", "am", "lo", "uz", "ps", "mt", "lb", "my", "as", "ln", "ha", "jw"];
2035
1970
  /**
2036
1971
  * Type for ElevenLabs language codes
2037
1972
  */
@@ -2087,8 +2022,6 @@ declare const ElevenLabsLanguage: {
2087
2022
  readonly hr: "hr";
2088
2023
  readonly bg: "bg";
2089
2024
  readonly lt: "lt";
2090
- readonly la: "la";
2091
- readonly mi: "mi";
2092
2025
  readonly ml: "ml";
2093
2026
  readonly cy: "cy";
2094
2027
  readonly sk: "sk";
@@ -2102,20 +2035,16 @@ declare const ElevenLabsLanguage: {
2102
2035
  readonly kn: "kn";
2103
2036
  readonly et: "et";
2104
2037
  readonly mk: "mk";
2105
- readonly br: "br";
2106
- readonly eu: "eu";
2107
2038
  readonly is: "is";
2108
2039
  readonly hy: "hy";
2109
2040
  readonly ne: "ne";
2110
2041
  readonly mn: "mn";
2111
2042
  readonly bs: "bs";
2112
2043
  readonly kk: "kk";
2113
- readonly sq: "sq";
2114
2044
  readonly sw: "sw";
2115
2045
  readonly gl: "gl";
2116
2046
  readonly mr: "mr";
2117
2047
  readonly pa: "pa";
2118
- readonly si: "si";
2119
2048
  readonly km: "km";
2120
2049
  readonly sn: "sn";
2121
2050
  readonly yo: "yo";
@@ -2128,29 +2057,16 @@ declare const ElevenLabsLanguage: {
2128
2057
  readonly sd: "sd";
2129
2058
  readonly gu: "gu";
2130
2059
  readonly am: "am";
2131
- readonly yi: "yi";
2132
2060
  readonly lo: "lo";
2133
2061
  readonly uz: "uz";
2134
- readonly fo: "fo";
2135
- readonly ht: "ht";
2136
2062
  readonly ps: "ps";
2137
- readonly tk: "tk";
2138
- readonly nn: "nn";
2139
2063
  readonly mt: "mt";
2140
- readonly sa: "sa";
2141
2064
  readonly lb: "lb";
2142
2065
  readonly my: "my";
2143
- readonly bo: "bo";
2144
- readonly tl: "tl";
2145
- readonly mg: "mg";
2146
2066
  readonly as: "as";
2147
- readonly tt: "tt";
2148
- readonly haw: "haw";
2149
2067
  readonly ln: "ln";
2150
2068
  readonly ha: "ha";
2151
- readonly ba: "ba";
2152
2069
  readonly jw: "jw";
2153
- readonly su: "su";
2154
2070
  };
2155
2071
 
2156
2072
  /**
@@ -2225,7 +2141,7 @@ declare const ElevenLabsRealtimeModel: {
2225
2141
  /**
2226
2142
  * All OpenAI audio model codes (transcription + realtime)
2227
2143
  */
2228
- declare const OpenAIModelCodes$1: readonly ["gpt-4o-mini-realtime-preview", "gpt-4o-mini-realtime-preview-2024-12-17", "gpt-4o-mini-transcribe", "gpt-4o-mini-transcribe-2025-12-15", "gpt-4o-realtime-preview", "gpt-4o-realtime-preview-2024-10-01", "gpt-4o-realtime-preview-2024-12-17", "gpt-4o-realtime-preview-2025-06-03", "gpt-4o-transcribe", "gpt-4o-transcribe-diarize", "gpt-audio-1.5", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-10-06", "gpt-realtime-mini-2025-12-15", "whisper-1"];
2144
+ declare const OpenAIModelCodes$1: readonly ["gpt-4o-mini-realtime-preview", "gpt-4o-mini-realtime-preview-2024-12-17", "gpt-4o-mini-transcribe", "gpt-4o-mini-transcribe-2025-12-15", "gpt-4o-realtime-preview", "gpt-4o-realtime-preview-2024-10-01", "gpt-4o-realtime-preview-2024-12-17", "gpt-4o-realtime-preview-2025-06-03", "gpt-4o-transcribe", "gpt-4o-transcribe-diarize", "gpt-audio-1.5", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-10-06", "gpt-realtime-mini-2025-12-15", "gpt-realtime-whisper", "whisper-1"];
2229
2145
  /**
2230
2146
  * Type for all OpenAI model codes
2231
2147
  */
@@ -2233,7 +2149,7 @@ type OpenAIModelCode = (typeof OpenAIModelCodes$1)[number];
2233
2149
  /**
2234
2150
  * OpenAI transcription model codes (for batch transcription)
2235
2151
  */
2236
- declare const OpenAITranscriptionModelCodes: readonly ["gpt-4o-mini-transcribe", "gpt-4o-mini-transcribe-2025-12-15", "gpt-4o-transcribe", "gpt-4o-transcribe-diarize", "whisper-1"];
2152
+ declare const OpenAITranscriptionModelCodes: readonly ["gpt-4o-mini-transcribe", "gpt-4o-mini-transcribe-2025-12-15", "gpt-4o-transcribe", "gpt-4o-transcribe-diarize", "gpt-realtime-whisper", "whisper-1"];
2237
2153
  /**
2238
2154
  * Type for OpenAI transcription model codes
2239
2155
  */
@@ -2241,7 +2157,7 @@ type OpenAITranscriptionModelCode = (typeof OpenAITranscriptionModelCodes)[numbe
2241
2157
  /**
2242
2158
  * OpenAI realtime model codes (for streaming)
2243
2159
  */
2244
- declare const OpenAIRealtimeModelCodes$1: readonly ["gpt-4o-mini-realtime-preview", "gpt-4o-mini-realtime-preview-2024-12-17", "gpt-4o-realtime-preview", "gpt-4o-realtime-preview-2024-10-01", "gpt-4o-realtime-preview-2024-12-17", "gpt-4o-realtime-preview-2025-06-03", "gpt-audio-1.5", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-10-06", "gpt-realtime-mini-2025-12-15"];
2160
+ declare const OpenAIRealtimeModelCodes$1: readonly ["gpt-4o-mini-realtime-preview", "gpt-4o-mini-realtime-preview-2024-12-17", "gpt-4o-realtime-preview", "gpt-4o-realtime-preview-2024-10-01", "gpt-4o-realtime-preview-2024-12-17", "gpt-4o-realtime-preview-2025-06-03", "gpt-audio-1.5", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-10-06", "gpt-realtime-mini-2025-12-15"];
2245
2161
  /**
2246
2162
  * Type for OpenAI realtime model codes
2247
2163
  */
@@ -3412,10 +3328,11 @@ declare const OpenAIModel: {
3412
3328
  readonly "gpt-4o-mini-transcribe-2025-12-15": "gpt-4o-mini-transcribe-2025-12-15";
3413
3329
  readonly "gpt-4o-transcribe": "gpt-4o-transcribe";
3414
3330
  readonly "gpt-4o-transcribe-diarize": "gpt-4o-transcribe-diarize";
3331
+ readonly "gpt-realtime-whisper": "gpt-realtime-whisper";
3415
3332
  readonly "whisper-1": "whisper-1";
3416
3333
  };
3417
- declare const OpenAIModelCodes: readonly ["gpt-4o-mini-realtime-preview", "gpt-4o-mini-realtime-preview-2024-12-17", "gpt-4o-mini-transcribe", "gpt-4o-mini-transcribe-2025-12-15", "gpt-4o-realtime-preview", "gpt-4o-realtime-preview-2024-10-01", "gpt-4o-realtime-preview-2024-12-17", "gpt-4o-realtime-preview-2025-06-03", "gpt-4o-transcribe", "gpt-4o-transcribe-diarize", "gpt-audio-1.5", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-10-06", "gpt-realtime-mini-2025-12-15", "whisper-1"];
3418
- declare const OpenAIModelLabels: Record<"whisper-1" | "gpt-4o-transcribe" | "gpt-4o-mini-transcribe" | "gpt-4o-mini-transcribe-2025-12-15" | "gpt-4o-transcribe-diarize" | "gpt-4o-mini-realtime-preview" | "gpt-4o-mini-realtime-preview-2024-12-17" | "gpt-4o-realtime-preview" | "gpt-4o-realtime-preview-2024-10-01" | "gpt-4o-realtime-preview-2024-12-17" | "gpt-4o-realtime-preview-2025-06-03" | "gpt-audio-1.5" | "gpt-audio-mini" | "gpt-audio-mini-2025-10-06" | "gpt-audio-mini-2025-12-15" | "gpt-realtime" | "gpt-realtime-1.5" | "gpt-realtime-2025-08-28" | "gpt-realtime-mini" | "gpt-realtime-mini-2025-10-06" | "gpt-realtime-mini-2025-12-15", string>;
3334
+ declare const OpenAIModelCodes: readonly ["gpt-4o-mini-realtime-preview", "gpt-4o-mini-realtime-preview-2024-12-17", "gpt-4o-mini-transcribe", "gpt-4o-mini-transcribe-2025-12-15", "gpt-4o-realtime-preview", "gpt-4o-realtime-preview-2024-10-01", "gpt-4o-realtime-preview-2024-12-17", "gpt-4o-realtime-preview-2025-06-03", "gpt-4o-transcribe", "gpt-4o-transcribe-diarize", "gpt-audio-1.5", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-10-06", "gpt-realtime-mini-2025-12-15", "gpt-realtime-whisper", "whisper-1"];
3335
+ declare const OpenAIModelLabels: Record<"gpt-4o-mini-transcribe" | "gpt-4o-mini-transcribe-2025-12-15" | "gpt-4o-transcribe" | "gpt-4o-transcribe-diarize" | "gpt-realtime-whisper" | "whisper-1" | "gpt-4o-mini-realtime-preview" | "gpt-4o-mini-realtime-preview-2024-12-17" | "gpt-4o-realtime-preview" | "gpt-4o-realtime-preview-2024-10-01" | "gpt-4o-realtime-preview-2024-12-17" | "gpt-4o-realtime-preview-2025-06-03" | "gpt-audio-1.5" | "gpt-audio-mini" | "gpt-audio-mini-2025-10-06" | "gpt-audio-mini-2025-12-15" | "gpt-realtime" | "gpt-realtime-1.5" | "gpt-realtime-2" | "gpt-realtime-2025-08-28" | "gpt-realtime-mini" | "gpt-realtime-mini-2025-10-06" | "gpt-realtime-mini-2025-12-15", string>;
3419
3336
  /**
3420
3337
  * OpenAI Realtime API models (streaming)
3421
3338
  * @see scripts/generate-openai-models.js
@@ -3433,12 +3350,13 @@ declare const OpenAIRealtimeModel: {
3433
3350
  readonly "gpt-audio-mini-2025-12-15": "gpt-audio-mini-2025-12-15";
3434
3351
  readonly "gpt-realtime": "gpt-realtime";
3435
3352
  readonly "gpt-realtime-1.5": "gpt-realtime-1.5";
3353
+ readonly "gpt-realtime-2": "gpt-realtime-2";
3436
3354
  readonly "gpt-realtime-2025-08-28": "gpt-realtime-2025-08-28";
3437
3355
  readonly "gpt-realtime-mini": "gpt-realtime-mini";
3438
3356
  readonly "gpt-realtime-mini-2025-10-06": "gpt-realtime-mini-2025-10-06";
3439
3357
  readonly "gpt-realtime-mini-2025-12-15": "gpt-realtime-mini-2025-12-15";
3440
3358
  };
3441
- declare const OpenAIRealtimeModelCodes: readonly ["gpt-4o-mini-realtime-preview", "gpt-4o-mini-realtime-preview-2024-12-17", "gpt-4o-realtime-preview", "gpt-4o-realtime-preview-2024-10-01", "gpt-4o-realtime-preview-2024-12-17", "gpt-4o-realtime-preview-2025-06-03", "gpt-audio-1.5", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-10-06", "gpt-realtime-mini-2025-12-15"];
3359
+ declare const OpenAIRealtimeModelCodes: readonly ["gpt-4o-mini-realtime-preview", "gpt-4o-mini-realtime-preview-2024-12-17", "gpt-4o-realtime-preview", "gpt-4o-realtime-preview-2024-10-01", "gpt-4o-realtime-preview-2024-12-17", "gpt-4o-realtime-preview-2025-06-03", "gpt-audio-1.5", "gpt-audio-mini", "gpt-audio-mini-2025-10-06", "gpt-audio-mini-2025-12-15", "gpt-realtime", "gpt-realtime-1.5", "gpt-realtime-2", "gpt-realtime-2025-08-28", "gpt-realtime-mini", "gpt-realtime-mini-2025-10-06", "gpt-realtime-mini-2025-12-15"];
3442
3360
 
3443
3361
  /**
3444
3362
  * OpenAI transcription response formats
@@ -3528,6 +3446,7 @@ declare const OpenAIRealtimeTranscriptionModel: {
3528
3446
  readonly "gpt-4o-mini-transcribe-2025-12-15": "gpt-4o-mini-transcribe-2025-12-15";
3529
3447
  readonly "gpt-4o-transcribe": "gpt-4o-transcribe";
3530
3448
  readonly "gpt-4o-transcribe-diarize": "gpt-4o-transcribe-diarize";
3449
+ readonly "gpt-realtime-whisper": "gpt-realtime-whisper";
3531
3450
  readonly "whisper-1": "whisper-1";
3532
3451
  };
3533
3452
  /** OpenAI Realtime audio format type */