@pipedog/core 0.0.0 → 0.1.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.
Files changed (698) hide show
  1. package/LICENSE +25 -0
  2. package/NOTICE +9 -0
  3. package/dist/adapters/base_llm_adapter.d.ts +266 -0
  4. package/dist/adapters/base_llm_adapter.js +489 -0
  5. package/dist/adapters/index.d.ts +2 -0
  6. package/dist/adapters/index.js +8 -0
  7. package/dist/adapters/schemas/direct_function.d.ts +202 -0
  8. package/dist/adapters/schemas/direct_function.js +302 -0
  9. package/dist/adapters/schemas/function_schema.d.ts +67 -0
  10. package/dist/adapters/schemas/function_schema.js +72 -0
  11. package/dist/adapters/schemas/index.d.ts +2 -0
  12. package/dist/adapters/schemas/index.js +8 -0
  13. package/dist/adapters/schemas/tools_schema.d.ts +57 -0
  14. package/dist/adapters/schemas/tools_schema.js +79 -0
  15. package/dist/adapters/services/index.d.ts +2 -0
  16. package/dist/adapters/services/index.js +8 -0
  17. package/dist/adapters/services/open_ai_adapter.d.ts +147 -0
  18. package/dist/adapters/services/open_ai_adapter.js +250 -0
  19. package/dist/audio/dtmf/dtmf_data.d.ts +3 -0
  20. package/dist/audio/dtmf/dtmf_data.js +22 -0
  21. package/dist/audio/dtmf/index.d.ts +2 -0
  22. package/dist/audio/dtmf/index.js +8 -0
  23. package/dist/audio/dtmf/types.d.ts +31 -0
  24. package/dist/audio/dtmf/types.js +35 -0
  25. package/dist/audio/dtmf/utils.d.ts +13 -0
  26. package/dist/audio/dtmf/utils.js +62 -0
  27. package/dist/audio/filters/base_audio_filter.d.ts +51 -0
  28. package/dist/audio/filters/base_audio_filter.js +17 -0
  29. package/dist/audio/filters/index.d.ts +2 -0
  30. package/dist/audio/filters/index.js +8 -0
  31. package/dist/audio/index.d.ts +2 -0
  32. package/dist/audio/index.js +8 -0
  33. package/dist/audio/krisp_instance.d.ts +95 -0
  34. package/dist/audio/krisp_instance.js +229 -0
  35. package/dist/audio/mixers/base_audio_mixer.d.ts +56 -0
  36. package/dist/audio/mixers/base_audio_mixer.js +16 -0
  37. package/dist/audio/mixers/index.d.ts +2 -0
  38. package/dist/audio/mixers/index.js +8 -0
  39. package/dist/audio/resamplers/base_audio_resampler.d.ts +46 -0
  40. package/dist/audio/resamplers/base_audio_resampler.js +35 -0
  41. package/dist/audio/resamplers/index.d.ts +2 -0
  42. package/dist/audio/resamplers/index.js +8 -0
  43. package/dist/audio/resamplers/resampy_resampler.d.ts +10 -0
  44. package/dist/audio/resamplers/resampy_resampler.js +15 -0
  45. package/dist/audio/resamplers/soxr_resampler.d.ts +54 -0
  46. package/dist/audio/resamplers/soxr_resampler.js +69 -0
  47. package/dist/audio/resamplers/soxr_stream_resampler.d.ts +75 -0
  48. package/dist/audio/resamplers/soxr_stream_resampler.js +146 -0
  49. package/dist/audio/turn/base_turn_analyzer.d.ts +84 -0
  50. package/dist/audio/turn/base_turn_analyzer.js +61 -0
  51. package/dist/audio/turn/index.d.ts +2 -0
  52. package/dist/audio/turn/index.js +8 -0
  53. package/dist/audio/turn/smart_turn/_whisper_features.d.ts +30 -0
  54. package/dist/audio/turn/smart_turn/_whisper_features.js +225 -0
  55. package/dist/audio/turn/smart_turn/base_smart_turn.d.ts +94 -0
  56. package/dist/audio/turn/smart_turn/base_smart_turn.js +239 -0
  57. package/dist/audio/turn/smart_turn/local_smart_turn_v3.d.ts +76 -0
  58. package/dist/audio/turn/smart_turn/local_smart_turn_v3.js +143 -0
  59. package/dist/audio/utils.d.ts +224 -0
  60. package/dist/audio/utils.js +634 -0
  61. package/dist/audio/vad/data/index.d.ts +2 -0
  62. package/dist/audio/vad/data/index.js +8 -0
  63. package/dist/audio/vad/index.d.ts +2 -0
  64. package/dist/audio/vad/index.js +8 -0
  65. package/dist/audio/vad/vad_analyzer.d.ts +126 -0
  66. package/dist/audio/vad/vad_analyzer.js +211 -0
  67. package/dist/audio/vad/vad_controller.d.ts +143 -0
  68. package/dist/audio/vad/vad_controller.js +228 -0
  69. package/dist/audio/volume.d.ts +38 -0
  70. package/dist/audio/volume.js +75 -0
  71. package/dist/bus/adapters/base.d.ts +35 -0
  72. package/dist/bus/adapters/base.js +19 -0
  73. package/dist/bus/adapters/index.d.ts +10 -0
  74. package/dist/bus/adapters/index.js +15 -0
  75. package/dist/bus/adapters/llm_context_adapter.d.ts +36 -0
  76. package/dist/bus/adapters/llm_context_adapter.js +82 -0
  77. package/dist/bus/adapters/tools_schema_adapter.d.ts +25 -0
  78. package/dist/bus/adapters/tools_schema_adapter.js +70 -0
  79. package/dist/bus/bridge_processor.d.ts +111 -0
  80. package/dist/bus/bridge_processor.js +166 -0
  81. package/dist/bus/bus.d.ts +110 -0
  82. package/dist/bus/bus.js +200 -0
  83. package/dist/bus/index.d.ts +22 -0
  84. package/dist/bus/index.js +27 -0
  85. package/dist/bus/local/async_queue.d.ts +12 -0
  86. package/dist/bus/local/async_queue.js +21 -0
  87. package/dist/bus/local/index.d.ts +3 -0
  88. package/dist/bus/local/index.js +8 -0
  89. package/dist/bus/messages.d.ts +378 -0
  90. package/dist/bus/messages.js +357 -0
  91. package/dist/bus/network/index.d.ts +16 -0
  92. package/dist/bus/network/index.js +21 -0
  93. package/dist/bus/queue.d.ts +27 -0
  94. package/dist/bus/queue.js +51 -0
  95. package/dist/bus/serializers/base.d.ts +25 -0
  96. package/dist/bus/serializers/base.js +14 -0
  97. package/dist/bus/serializers/index.d.ts +9 -0
  98. package/dist/bus/serializers/index.js +14 -0
  99. package/dist/bus/serializers/json.d.ts +77 -0
  100. package/dist/bus/serializers/json.js +367 -0
  101. package/dist/bus/subscriber.d.ts +46 -0
  102. package/dist/bus/subscriber.js +27 -0
  103. package/dist/bus/ui/index.d.ts +3 -0
  104. package/dist/bus/ui/index.js +8 -0
  105. package/dist/bus/ui/messages.d.ts +186 -0
  106. package/dist/bus/ui/messages.js +171 -0
  107. package/dist/classifiers/base_classifier.d.ts +263 -0
  108. package/dist/classifiers/base_classifier.js +346 -0
  109. package/dist/classifiers/cloudflare/clef/classifier.d.ts +70 -0
  110. package/dist/classifiers/cloudflare/clef/classifier.js +204 -0
  111. package/dist/classifiers/cloudflare/clef/client.d.ts +104 -0
  112. package/dist/classifiers/cloudflare/clef/client.js +234 -0
  113. package/dist/classifiers/cloudflare/clef/index.d.ts +2 -0
  114. package/dist/classifiers/cloudflare/clef/index.js +8 -0
  115. package/dist/classifiers/cloudflare/index.d.ts +2 -0
  116. package/dist/classifiers/cloudflare/index.js +8 -0
  117. package/dist/classifiers/http_client.d.ts +70 -0
  118. package/dist/classifiers/http_client.js +161 -0
  119. package/dist/classifiers/index.d.ts +2 -0
  120. package/dist/classifiers/index.js +8 -0
  121. package/dist/classifiers/jev/classifier.d.ts +8 -0
  122. package/dist/classifiers/jev/classifier.js +13 -0
  123. package/dist/classifiers/jev/client.d.ts +8 -0
  124. package/dist/classifiers/jev/client.js +13 -0
  125. package/dist/classifiers/jev/index.d.ts +2 -0
  126. package/dist/classifiers/jev/index.js +8 -0
  127. package/dist/classifiers/llm/classifier.d.ts +72 -0
  128. package/dist/classifiers/llm/classifier.js +304 -0
  129. package/dist/classifiers/llm/index.d.ts +2 -0
  130. package/dist/classifiers/llm/index.js +8 -0
  131. package/dist/classifiers/openai/decisions/classifier.d.ts +77 -0
  132. package/dist/classifiers/openai/decisions/classifier.js +241 -0
  133. package/dist/classifiers/openai/decisions/client.d.ts +108 -0
  134. package/dist/classifiers/openai/decisions/client.js +234 -0
  135. package/dist/classifiers/openai/decisions/index.d.ts +2 -0
  136. package/dist/classifiers/openai/decisions/index.js +8 -0
  137. package/dist/classifiers/openai/index.d.ts +2 -0
  138. package/dist/classifiers/openai/index.js +8 -0
  139. package/dist/classifiers/typesafe/index.d.ts +2 -0
  140. package/dist/classifiers/typesafe/index.js +8 -0
  141. package/dist/classifiers/typesafe/jev/classifier.d.ts +70 -0
  142. package/dist/classifiers/typesafe/jev/classifier.js +220 -0
  143. package/dist/classifiers/typesafe/jev/client.d.ts +105 -0
  144. package/dist/classifiers/typesafe/jev/client.js +233 -0
  145. package/dist/classifiers/typesafe/jev/index.d.ts +2 -0
  146. package/dist/classifiers/typesafe/jev/index.js +8 -0
  147. package/dist/clocks/base_clock.d.ts +13 -0
  148. package/dist/clocks/base_clock.js +14 -0
  149. package/dist/clocks/index.d.ts +2 -0
  150. package/dist/clocks/index.js +8 -0
  151. package/dist/clocks/system_clock.d.ts +15 -0
  152. package/dist/clocks/system_clock.js +25 -0
  153. package/dist/frames/frames.d.ts +2533 -0
  154. package/dist/frames/frames.js +2485 -0
  155. package/dist/frames/index.d.ts +2 -0
  156. package/dist/frames/index.js +8 -0
  157. package/dist/frames/protobufs/frames_pb2.d.ts +229 -0
  158. package/dist/frames/protobufs/frames_pb2.js +466 -0
  159. package/dist/index.d.ts +11 -0
  160. package/dist/index.js +56 -0
  161. package/dist/metrics/index.d.ts +2 -0
  162. package/dist/metrics/index.js +8 -0
  163. package/dist/metrics/metrics.d.ts +276 -0
  164. package/dist/metrics/metrics.js +254 -0
  165. package/dist/observers/base_observer.d.ts +173 -0
  166. package/dist/observers/base_observer.js +151 -0
  167. package/dist/observers/error_observer.d.ts +75 -0
  168. package/dist/observers/error_observer.js +87 -0
  169. package/dist/observers/function_call_observer.d.ts +157 -0
  170. package/dist/observers/function_call_observer.js +222 -0
  171. package/dist/observers/index.d.ts +2 -0
  172. package/dist/observers/index.js +8 -0
  173. package/dist/observers/loggers/debug_log_observer.d.ts +91 -0
  174. package/dist/observers/loggers/debug_log_observer.js +228 -0
  175. package/dist/observers/loggers/index.d.ts +2 -0
  176. package/dist/observers/loggers/index.js +8 -0
  177. package/dist/observers/loggers/llm_log_observer.d.ts +24 -0
  178. package/dist/observers/loggers/llm_log_observer.js +110 -0
  179. package/dist/observers/loggers/metrics_log_observer.d.ts +85 -0
  180. package/dist/observers/loggers/metrics_log_observer.js +186 -0
  181. package/dist/observers/loggers/transcription_log_observer.d.ts +23 -0
  182. package/dist/observers/loggers/transcription_log_observer.js +74 -0
  183. package/dist/observers/service_metrics_observer.d.ts +168 -0
  184. package/dist/observers/service_metrics_observer.js +236 -0
  185. package/dist/observers/speaking_observer.d.ts +104 -0
  186. package/dist/observers/speaking_observer.js +150 -0
  187. package/dist/observers/startup_timing_observer.d.ts +221 -0
  188. package/dist/observers/startup_timing_observer.js +365 -0
  189. package/dist/observers/turn_tracking_observer.d.ts +78 -0
  190. package/dist/observers/turn_tracking_observer.js +189 -0
  191. package/dist/observers/user_bot_latency_observer.d.ts +411 -0
  192. package/dist/observers/user_bot_latency_observer.js +974 -0
  193. package/dist/pipeline/base_pipeline.d.ts +49 -0
  194. package/dist/pipeline/base_pipeline.js +101 -0
  195. package/dist/pipeline/capabilities.d.ts +76 -0
  196. package/dist/pipeline/capabilities.js +97 -0
  197. package/dist/pipeline/index.d.ts +2 -0
  198. package/dist/pipeline/index.js +8 -0
  199. package/dist/pipeline/job_context.d.ts +317 -0
  200. package/dist/pipeline/job_context.js +450 -0
  201. package/dist/pipeline/job_decorator.d.ts +54 -0
  202. package/dist/pipeline/job_decorator.js +92 -0
  203. package/dist/pipeline/llm_switcher.d.ts +84 -0
  204. package/dist/pipeline/llm_switcher.js +107 -0
  205. package/dist/pipeline/llm_with_backend.d.ts +435 -0
  206. package/dist/pipeline/llm_with_backend.js +806 -0
  207. package/dist/pipeline/parallel_pipeline.d.ts +83 -0
  208. package/dist/pipeline/parallel_pipeline.js +200 -0
  209. package/dist/pipeline/pipeline.d.ts +126 -0
  210. package/dist/pipeline/pipeline.js +196 -0
  211. package/dist/pipeline/service_switcher.d.ts +287 -0
  212. package/dist/pipeline/service_switcher.js +509 -0
  213. package/dist/pipeline/sync_parallel_pipeline.d.ts +192 -0
  214. package/dist/pipeline/sync_parallel_pipeline.js +387 -0
  215. package/dist/pipeline/worker.d.ts +814 -0
  216. package/dist/pipeline/worker.js +1639 -0
  217. package/dist/pipeline/worker_observer.d.ts +131 -0
  218. package/dist/pipeline/worker_observer.js +274 -0
  219. package/dist/pipeline/worker_ready_decorator.d.ts +45 -0
  220. package/dist/pipeline/worker_ready_decorator.js +76 -0
  221. package/dist/processors/aggregators/async_tool_messages.d.ts +146 -0
  222. package/dist/processors/aggregators/async_tool_messages.js +291 -0
  223. package/dist/processors/aggregators/dtmf_aggregator.d.ts +61 -0
  224. package/dist/processors/aggregators/dtmf_aggregator.js +144 -0
  225. package/dist/processors/aggregators/gated.d.ts +43 -0
  226. package/dist/processors/aggregators/gated.js +86 -0
  227. package/dist/processors/aggregators/gated_llm_context.d.ts +42 -0
  228. package/dist/processors/aggregators/gated_llm_context.js +86 -0
  229. package/dist/processors/aggregators/index.d.ts +2 -0
  230. package/dist/processors/aggregators/index.js +8 -0
  231. package/dist/processors/aggregators/llm_context.d.ts +370 -0
  232. package/dist/processors/aggregators/llm_context.js +580 -0
  233. package/dist/processors/aggregators/llm_context_summarizer.d.ts +219 -0
  234. package/dist/processors/aggregators/llm_context_summarizer.js +447 -0
  235. package/dist/processors/aggregators/llm_response.d.ts +37 -0
  236. package/dist/processors/aggregators/llm_response.js +71 -0
  237. package/dist/processors/aggregators/llm_response_universal.d.ts +966 -0
  238. package/dist/processors/aggregators/llm_response_universal.js +2394 -0
  239. package/dist/processors/aggregators/llm_text_processor.d.ts +53 -0
  240. package/dist/processors/aggregators/llm_text_processor.js +102 -0
  241. package/dist/processors/aggregators/sentence.d.ts +39 -0
  242. package/dist/processors/aggregators/sentence.js +69 -0
  243. package/dist/processors/async_generator.d.ts +42 -0
  244. package/dist/processors/async_generator.js +76 -0
  245. package/dist/processors/audio/audio_buffer_processor.d.ts +241 -0
  246. package/dist/processors/audio/audio_buffer_processor.js +565 -0
  247. package/dist/processors/audio/index.d.ts +2 -0
  248. package/dist/processors/audio/index.js +8 -0
  249. package/dist/processors/audio/vad_processor.d.ts +67 -0
  250. package/dist/processors/audio/vad_processor.js +103 -0
  251. package/dist/processors/consumer_processor.d.ts +49 -0
  252. package/dist/processors/consumer_processor.js +85 -0
  253. package/dist/processors/filters/frame_filter.d.ts +39 -0
  254. package/dist/processors/filters/frame_filter.js +52 -0
  255. package/dist/processors/filters/function_filter.d.ts +59 -0
  256. package/dist/processors/filters/function_filter.js +78 -0
  257. package/dist/processors/filters/identity_filter.d.ts +33 -0
  258. package/dist/processors/filters/identity_filter.js +37 -0
  259. package/dist/processors/filters/index.d.ts +2 -0
  260. package/dist/processors/filters/index.js +8 -0
  261. package/dist/processors/filters/null_filter.d.ts +34 -0
  262. package/dist/processors/filters/null_filter.js +47 -0
  263. package/dist/processors/filters/wake_notifier_filter.d.ts +48 -0
  264. package/dist/processors/filters/wake_notifier_filter.js +49 -0
  265. package/dist/processors/frame_processor.d.ts +360 -0
  266. package/dist/processors/frame_processor.js +932 -0
  267. package/dist/processors/frameworks/index.d.ts +2 -0
  268. package/dist/processors/frameworks/index.js +8 -0
  269. package/dist/processors/frameworks/rtvi/frames.d.ts +241 -0
  270. package/dist/processors/frameworks/rtvi/frames.js +259 -0
  271. package/dist/processors/frameworks/rtvi/index.d.ts +6 -0
  272. package/dist/processors/frameworks/rtvi/index.js +11 -0
  273. package/dist/processors/frameworks/rtvi/models.d.ts +1741 -0
  274. package/dist/processors/frameworks/rtvi/models.js +1807 -0
  275. package/dist/processors/frameworks/rtvi/observer.d.ts +340 -0
  276. package/dist/processors/frameworks/rtvi/observer.js +1113 -0
  277. package/dist/processors/frameworks/rtvi/processor.d.ts +182 -0
  278. package/dist/processors/frameworks/rtvi/processor.js +676 -0
  279. package/dist/processors/idle_frame_processor.d.ts +44 -0
  280. package/dist/processors/idle_frame_processor.js +86 -0
  281. package/dist/processors/index.d.ts +2 -0
  282. package/dist/processors/index.js +8 -0
  283. package/dist/processors/logger.d.ts +42 -0
  284. package/dist/processors/logger.js +87 -0
  285. package/dist/processors/metrics/frame_processor_metrics.d.ts +172 -0
  286. package/dist/processors/metrics/frame_processor_metrics.js +372 -0
  287. package/dist/processors/metrics/index.d.ts +2 -0
  288. package/dist/processors/metrics/index.js +8 -0
  289. package/dist/processors/producer_processor.d.ts +68 -0
  290. package/dist/processors/producer_processor.js +78 -0
  291. package/dist/processors/text_transformer.d.ts +30 -0
  292. package/dist/processors/text_transformer.js +48 -0
  293. package/dist/registry/index.d.ts +3 -0
  294. package/dist/registry/index.js +8 -0
  295. package/dist/registry/registry.d.ts +69 -0
  296. package/dist/registry/registry.js +149 -0
  297. package/dist/registry/types.d.ts +47 -0
  298. package/dist/registry/types.js +39 -0
  299. package/dist/serializers/base_serializer.d.ts +94 -0
  300. package/dist/serializers/base_serializer.js +82 -0
  301. package/dist/serializers/index.d.ts +2 -0
  302. package/dist/serializers/index.js +8 -0
  303. package/dist/services/ai_service.d.ts +145 -0
  304. package/dist/services/ai_service.js +262 -0
  305. package/dist/services/anthropic/index.d.ts +2 -0
  306. package/dist/services/anthropic/index.js +7 -0
  307. package/dist/services/assemblyai/index.d.ts +2 -0
  308. package/dist/services/assemblyai/index.js +7 -0
  309. package/dist/services/asyncai/index.d.ts +2 -0
  310. package/dist/services/asyncai/index.js +7 -0
  311. package/dist/services/aws/index.d.ts +2 -0
  312. package/dist/services/aws/index.js +7 -0
  313. package/dist/services/azure/index.d.ts +2 -0
  314. package/dist/services/azure/index.js +7 -0
  315. package/dist/services/baseten/index.d.ts +2 -0
  316. package/dist/services/baseten/index.js +7 -0
  317. package/dist/services/bland/index.d.ts +2 -0
  318. package/dist/services/bland/index.js +7 -0
  319. package/dist/services/camb/index.d.ts +2 -0
  320. package/dist/services/camb/index.js +7 -0
  321. package/dist/services/cartesia/index.d.ts +2 -0
  322. package/dist/services/cartesia/index.js +7 -0
  323. package/dist/services/cerebras/index.d.ts +2 -0
  324. package/dist/services/cerebras/index.js +7 -0
  325. package/dist/services/crusoe/index.d.ts +2 -0
  326. package/dist/services/crusoe/index.js +7 -0
  327. package/dist/services/deepgram/index.d.ts +2 -0
  328. package/dist/services/deepgram/index.js +7 -0
  329. package/dist/services/deepseek/index.d.ts +2 -0
  330. package/dist/services/deepseek/index.js +7 -0
  331. package/dist/services/elevenlabs/index.d.ts +2 -0
  332. package/dist/services/elevenlabs/index.js +7 -0
  333. package/dist/services/fal/index.d.ts +2 -0
  334. package/dist/services/fal/index.js +7 -0
  335. package/dist/services/fireworks/index.d.ts +2 -0
  336. package/dist/services/fireworks/index.js +7 -0
  337. package/dist/services/fish/index.d.ts +2 -0
  338. package/dist/services/fish/index.js +7 -0
  339. package/dist/services/funasr/index.d.ts +3 -0
  340. package/dist/services/funasr/index.js +8 -0
  341. package/dist/services/gladia/index.d.ts +2 -0
  342. package/dist/services/gladia/index.js +7 -0
  343. package/dist/services/google/index.d.ts +2 -0
  344. package/dist/services/google/index.js +7 -0
  345. package/dist/services/gradium/index.d.ts +2 -0
  346. package/dist/services/gradium/index.js +7 -0
  347. package/dist/services/grok/index.d.ts +2 -0
  348. package/dist/services/grok/index.js +7 -0
  349. package/dist/services/groq/index.d.ts +2 -0
  350. package/dist/services/groq/index.js +7 -0
  351. package/dist/services/heygen/index.d.ts +2 -0
  352. package/dist/services/heygen/index.js +7 -0
  353. package/dist/services/hume/index.d.ts +2 -0
  354. package/dist/services/hume/index.js +7 -0
  355. package/dist/services/image_service.d.ts +52 -0
  356. package/dist/services/image_service.js +60 -0
  357. package/dist/services/inception/index.d.ts +2 -0
  358. package/dist/services/inception/index.js +7 -0
  359. package/dist/services/index.d.ts +2 -0
  360. package/dist/services/index.js +8 -0
  361. package/dist/services/inworld/index.d.ts +2 -0
  362. package/dist/services/inworld/index.js +7 -0
  363. package/dist/services/keenable/index.d.ts +2 -0
  364. package/dist/services/keenable/index.js +7 -0
  365. package/dist/services/kokoro/index.d.ts +2 -0
  366. package/dist/services/kokoro/index.js +7 -0
  367. package/dist/services/llm_service.d.ts +1106 -0
  368. package/dist/services/llm_service.js +2231 -0
  369. package/dist/services/mem0/index.d.ts +2 -0
  370. package/dist/services/mem0/index.js +7 -0
  371. package/dist/services/meta/index.d.ts +2 -0
  372. package/dist/services/meta/index.js +7 -0
  373. package/dist/services/minimax/index.d.ts +2 -0
  374. package/dist/services/minimax/index.js +7 -0
  375. package/dist/services/mistral/index.d.ts +2 -0
  376. package/dist/services/mistral/index.js +7 -0
  377. package/dist/services/moondream/index.d.ts +2 -0
  378. package/dist/services/moondream/index.js +7 -0
  379. package/dist/services/moonshine/index.d.ts +2 -0
  380. package/dist/services/moonshine/index.js +7 -0
  381. package/dist/services/nebius/index.d.ts +2 -0
  382. package/dist/services/nebius/index.js +7 -0
  383. package/dist/services/neuphonic/index.d.ts +2 -0
  384. package/dist/services/neuphonic/index.js +7 -0
  385. package/dist/services/novita/index.d.ts +2 -0
  386. package/dist/services/novita/index.js +7 -0
  387. package/dist/services/nvidia/index.d.ts +2 -0
  388. package/dist/services/nvidia/index.js +11 -0
  389. package/dist/services/ollama/index.d.ts +2 -0
  390. package/dist/services/ollama/index.js +7 -0
  391. package/dist/services/openai/index.d.ts +2 -0
  392. package/dist/services/openai/index.js +7 -0
  393. package/dist/services/openclaw/index.d.ts +14 -0
  394. package/dist/services/openclaw/index.js +19 -0
  395. package/dist/services/openrouter/index.d.ts +2 -0
  396. package/dist/services/openrouter/index.js +7 -0
  397. package/dist/services/perplexity/index.d.ts +2 -0
  398. package/dist/services/perplexity/index.js +7 -0
  399. package/dist/services/piper/index.d.ts +2 -0
  400. package/dist/services/piper/index.js +7 -0
  401. package/dist/services/pocket_tts/index.d.ts +2 -0
  402. package/dist/services/pocket_tts/index.js +7 -0
  403. package/dist/services/qwen/index.d.ts +2 -0
  404. package/dist/services/qwen/index.js +7 -0
  405. package/dist/services/resembleai/index.d.ts +2 -0
  406. package/dist/services/resembleai/index.js +7 -0
  407. package/dist/services/rime/index.d.ts +2 -0
  408. package/dist/services/rime/index.js +7 -0
  409. package/dist/services/sambanova/index.d.ts +2 -0
  410. package/dist/services/sambanova/index.js +7 -0
  411. package/dist/services/sarvam/index.d.ts +2 -0
  412. package/dist/services/sarvam/index.js +7 -0
  413. package/dist/services/settings.d.ts +356 -0
  414. package/dist/services/settings.js +437 -0
  415. package/dist/services/simli/index.d.ts +2 -0
  416. package/dist/services/simli/index.js +7 -0
  417. package/dist/services/smallest/index.d.ts +2 -0
  418. package/dist/services/smallest/index.js +7 -0
  419. package/dist/services/soniox/index.d.ts +2 -0
  420. package/dist/services/soniox/index.js +7 -0
  421. package/dist/services/speechify/index.d.ts +2 -0
  422. package/dist/services/speechify/index.js +7 -0
  423. package/dist/services/speechmatics/index.d.ts +2 -0
  424. package/dist/services/speechmatics/index.js +7 -0
  425. package/dist/services/stt_latency.d.ts +62 -0
  426. package/dist/services/stt_latency.js +71 -0
  427. package/dist/services/stt_service.d.ts +601 -0
  428. package/dist/services/stt_service.js +1044 -0
  429. package/dist/services/tavus/index.d.ts +2 -0
  430. package/dist/services/tavus/index.js +7 -0
  431. package/dist/services/together/index.d.ts +2 -0
  432. package/dist/services/together/index.js +7 -0
  433. package/dist/services/tts_service.d.ts +909 -0
  434. package/dist/services/tts_service.js +2018 -0
  435. package/dist/services/ultravox/index.d.ts +2 -0
  436. package/dist/services/ultravox/index.js +9 -0
  437. package/dist/services/vision_service.d.ts +56 -0
  438. package/dist/services/vision_service.js +62 -0
  439. package/dist/services/websocket_service.d.ts +213 -0
  440. package/dist/services/websocket_service.js +654 -0
  441. package/dist/services/whisper/index.d.ts +2 -0
  442. package/dist/services/whisper/index.js +9 -0
  443. package/dist/services/xai/index.d.ts +2 -0
  444. package/dist/services/xai/index.js +9 -0
  445. package/dist/services/xtts/index.d.ts +2 -0
  446. package/dist/services/xtts/index.js +9 -0
  447. package/dist/tests/index.d.ts +2 -0
  448. package/dist/tests/index.js +8 -0
  449. package/dist/tests/utils.d.ts +123 -0
  450. package/dist/tests/utils.js +212 -0
  451. package/dist/transcriptions/index.d.ts +2 -0
  452. package/dist/transcriptions/index.js +8 -0
  453. package/dist/transcriptions/language.d.ts +376 -0
  454. package/dist/transcriptions/language.js +543 -0
  455. package/dist/transports/base_input.d.ts +149 -0
  456. package/dist/transports/base_input.js +338 -0
  457. package/dist/transports/base_output.d.ts +432 -0
  458. package/dist/transports/base_output.js +1231 -0
  459. package/dist/transports/base_transport.d.ts +223 -0
  460. package/dist/transports/base_transport.js +167 -0
  461. package/dist/transports/daily/index.d.ts +2 -0
  462. package/dist/transports/daily/index.js +9 -0
  463. package/dist/transports/heygen/index.d.ts +2 -0
  464. package/dist/transports/heygen/index.js +9 -0
  465. package/dist/transports/index.d.ts +2 -0
  466. package/dist/transports/index.js +8 -0
  467. package/dist/transports/lemonslice/index.d.ts +2 -0
  468. package/dist/transports/lemonslice/index.js +9 -0
  469. package/dist/transports/livekit/index.d.ts +2 -0
  470. package/dist/transports/livekit/index.js +9 -0
  471. package/dist/transports/local/index.d.ts +2 -0
  472. package/dist/transports/local/index.js +9 -0
  473. package/dist/transports/moq/index.d.ts +2 -0
  474. package/dist/transports/moq/index.js +9 -0
  475. package/dist/transports/smallwebrtc/index.d.ts +2 -0
  476. package/dist/transports/smallwebrtc/index.js +9 -0
  477. package/dist/transports/tavus/index.d.ts +2 -0
  478. package/dist/transports/tavus/index.js +9 -0
  479. package/dist/transports/video_in_sampler.d.ts +157 -0
  480. package/dist/transports/video_in_sampler.js +258 -0
  481. package/dist/transports/vonage/index.d.ts +2 -0
  482. package/dist/transports/vonage/index.js +9 -0
  483. package/dist/transports/websocket/index.d.ts +2 -0
  484. package/dist/transports/websocket/index.js +9 -0
  485. package/dist/transports/whatsapp/index.d.ts +2 -0
  486. package/dist/transports/whatsapp/index.js +9 -0
  487. package/dist/turns/eager_end_of_turn_mixin.d.ts +70 -0
  488. package/dist/turns/eager_end_of_turn_mixin.js +122 -0
  489. package/dist/turns/empty_user_turn.d.ts +55 -0
  490. package/dist/turns/empty_user_turn.js +53 -0
  491. package/dist/turns/index.d.ts +2 -0
  492. package/dist/turns/index.js +8 -0
  493. package/dist/turns/speculation_gate.d.ts +169 -0
  494. package/dist/turns/speculation_gate.js +294 -0
  495. package/dist/turns/types.d.ts +33 -0
  496. package/dist/turns/types.js +35 -0
  497. package/dist/turns/user_idle_controller.d.ts +94 -0
  498. package/dist/turns/user_idle_controller.js +187 -0
  499. package/dist/turns/user_mute/always_user_mute_strategy.d.ts +15 -0
  500. package/dist/turns/user_mute/always_user_mute_strategy.js +29 -0
  501. package/dist/turns/user_mute/base_user_mute_strategy.d.ts +39 -0
  502. package/dist/turns/user_mute/base_user_mute_strategy.js +45 -0
  503. package/dist/turns/user_mute/first_speech_user_mute_strategy.d.ts +28 -0
  504. package/dist/turns/user_mute/first_speech_user_mute_strategy.js +52 -0
  505. package/dist/turns/user_mute/function_call_user_mute_strategy.d.ts +25 -0
  506. package/dist/turns/user_mute/function_call_user_mute_strategy.js +50 -0
  507. package/dist/turns/user_mute/index.d.ts +6 -0
  508. package/dist/turns/user_mute/index.js +11 -0
  509. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.d.ts +43 -0
  510. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.js +76 -0
  511. package/dist/turns/user_start/base_user_turn_start_strategy.d.ts +135 -0
  512. package/dist/turns/user_start/base_user_turn_start_strategy.js +134 -0
  513. package/dist/turns/user_start/external_user_turn_start_strategy.d.ts +45 -0
  514. package/dist/turns/user_start/external_user_turn_start_strategy.js +64 -0
  515. package/dist/turns/user_start/index.d.ts +8 -0
  516. package/dist/turns/user_start/index.js +16 -0
  517. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.d.ts +133 -0
  518. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.js +243 -0
  519. package/dist/turns/user_start/min_words_user_turn_start_strategy.d.ts +60 -0
  520. package/dist/turns/user_start/min_words_user_turn_start_strategy.js +102 -0
  521. package/dist/turns/user_start/transcription_user_turn_start_strategy.d.ts +29 -0
  522. package/dist/turns/user_start/transcription_user_turn_start_strategy.js +43 -0
  523. package/dist/turns/user_start/vad_user_turn_start_strategy.d.ts +20 -0
  524. package/dist/turns/user_start/vad_user_turn_start_strategy.js +31 -0
  525. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.d.ts +141 -0
  526. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.js +238 -0
  527. package/dist/turns/user_stop/base_user_turn_stop_strategy.d.ts +174 -0
  528. package/dist/turns/user_stop/base_user_turn_stop_strategy.js +170 -0
  529. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.d.ts +81 -0
  530. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.js +107 -0
  531. package/dist/turns/user_stop/eager_match_policy.d.ts +36 -0
  532. package/dist/turns/user_stop/eager_match_policy.js +50 -0
  533. package/dist/turns/user_stop/eager_user_turn_stop_strategy.d.ts +84 -0
  534. package/dist/turns/user_stop/eager_user_turn_stop_strategy.js +154 -0
  535. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.d.ts +45 -0
  536. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.js +55 -0
  537. package/dist/turns/user_stop/external_user_turn_stop_strategy.d.ts +115 -0
  538. package/dist/turns/user_stop/external_user_turn_stop_strategy.js +205 -0
  539. package/dist/turns/user_stop/index.d.ts +10 -0
  540. package/dist/turns/user_stop/index.js +15 -0
  541. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.d.ts +44 -0
  542. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.js +59 -0
  543. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.d.ts +140 -0
  544. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.js +303 -0
  545. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.d.ts +135 -0
  546. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.js +332 -0
  547. package/dist/turns/user_turn_completion_mixin.d.ts +147 -0
  548. package/dist/turns/user_turn_completion_mixin.js +591 -0
  549. package/dist/turns/user_turn_controller.d.ts +134 -0
  550. package/dist/turns/user_turn_controller.js +335 -0
  551. package/dist/turns/user_turn_processor.d.ts +87 -0
  552. package/dist/turns/user_turn_processor.js +180 -0
  553. package/dist/turns/user_turn_strategies.d.ts +187 -0
  554. package/dist/turns/user_turn_strategies.js +222 -0
  555. package/dist/utils/async_tool_cancellation.d.ts +35 -0
  556. package/dist/utils/async_tool_cancellation.js +78 -0
  557. package/dist/utils/asyncio/index.d.ts +2 -0
  558. package/dist/utils/asyncio/index.js +7 -0
  559. package/dist/utils/asyncio/task_manager.d.ts +49 -0
  560. package/dist/utils/asyncio/task_manager.js +105 -0
  561. package/dist/utils/base_object.d.ts +76 -0
  562. package/dist/utils/base_object.js +154 -0
  563. package/dist/utils/context/aggregated_frame_sequencer.d.ts +491 -0
  564. package/dist/utils/context/aggregated_frame_sequencer.js +803 -0
  565. package/dist/utils/context/audio_context_manager.d.ts +131 -0
  566. package/dist/utils/context/audio_context_manager.js +233 -0
  567. package/dist/utils/context/index.d.ts +2 -0
  568. package/dist/utils/context/index.js +7 -0
  569. package/dist/utils/context/llm_context_summarization.d.ts +258 -0
  570. package/dist/utils/context/llm_context_summarization.js +511 -0
  571. package/dist/utils/context/text_segment_map.d.ts +611 -0
  572. package/dist/utils/context/text_segment_map.js +1132 -0
  573. package/dist/utils/context/word_completion_tracker.d.ts +273 -0
  574. package/dist/utils/context/word_completion_tracker.js +441 -0
  575. package/dist/utils/context/word_timestamp_tracker.d.ts +72 -0
  576. package/dist/utils/context/word_timestamp_tracker.js +98 -0
  577. package/dist/utils/deprecation.d.ts +28 -0
  578. package/dist/utils/deprecation.js +75 -0
  579. package/dist/utils/env.d.ts +38 -0
  580. package/dist/utils/env.js +62 -0
  581. package/dist/utils/errors.d.ts +75 -0
  582. package/dist/utils/errors.js +202 -0
  583. package/dist/utils/file_resolver.d.ts +126 -0
  584. package/dist/utils/file_resolver.js +314 -0
  585. package/dist/utils/file_storage.d.ts +99 -0
  586. package/dist/utils/file_storage.js +100 -0
  587. package/dist/utils/frame_queue.d.ts +36 -0
  588. package/dist/utils/frame_queue.js +66 -0
  589. package/dist/utils/http.d.ts +39 -0
  590. package/dist/utils/http.js +53 -0
  591. package/dist/utils/image.d.ts +15 -0
  592. package/dist/utils/image.js +30 -0
  593. package/dist/utils/index.d.ts +2 -0
  594. package/dist/utils/index.js +8 -0
  595. package/dist/utils/log_config.d.ts +34 -0
  596. package/dist/utils/log_config.js +76 -0
  597. package/dist/utils/logger.d.ts +40 -0
  598. package/dist/utils/logger.js +91 -0
  599. package/dist/utils/mixin.d.ts +14 -0
  600. package/dist/utils/mixin.js +63 -0
  601. package/dist/utils/network.d.ts +73 -0
  602. package/dist/utils/network.js +90 -0
  603. package/dist/utils/security/allowed_origins.d.ts +16 -0
  604. package/dist/utils/security/allowed_origins.js +34 -0
  605. package/dist/utils/security/index.d.ts +2 -0
  606. package/dist/utils/security/index.js +7 -0
  607. package/dist/utils/security/redaction.d.ts +27 -0
  608. package/dist/utils/security/redaction.js +123 -0
  609. package/dist/utils/security/ssrf.d.ts +79 -0
  610. package/dist/utils/security/ssrf.js +327 -0
  611. package/dist/utils/shared.d.ts +35 -0
  612. package/dist/utils/shared.js +136 -0
  613. package/dist/utils/startup.d.ts +17 -0
  614. package/dist/utils/startup.js +130 -0
  615. package/dist/utils/string.d.ts +116 -0
  616. package/dist/utils/string.js +460 -0
  617. package/dist/utils/sync/base_notifier.d.ts +25 -0
  618. package/dist/utils/sync/base_notifier.js +16 -0
  619. package/dist/utils/sync/event_notifier.d.ts +38 -0
  620. package/dist/utils/sync/event_notifier.js +51 -0
  621. package/dist/utils/sync/index.d.ts +2 -0
  622. package/dist/utils/sync/index.js +7 -0
  623. package/dist/utils/text/alnum_utils.d.ts +109 -0
  624. package/dist/utils/text/alnum_utils.js +262 -0
  625. package/dist/utils/text/base_text_aggregator.d.ts +146 -0
  626. package/dist/utils/text/base_text_aggregator.js +102 -0
  627. package/dist/utils/text/base_text_filter.d.ts +54 -0
  628. package/dist/utils/text/base_text_filter.js +50 -0
  629. package/dist/utils/text/index.d.ts +2 -0
  630. package/dist/utils/text/index.js +7 -0
  631. package/dist/utils/text/markdown_text_filter.d.ts +147 -0
  632. package/dist/utils/text/markdown_text_filter.js +522 -0
  633. package/dist/utils/text/markup_utils.d.ts +54 -0
  634. package/dist/utils/text/markup_utils.js +156 -0
  635. package/dist/utils/text/pattern_pair_aggregator.d.ts +251 -0
  636. package/dist/utils/text/pattern_pair_aggregator.js +478 -0
  637. package/dist/utils/text/phonemes.d.ts +60 -0
  638. package/dist/utils/text/phonemes.js +172 -0
  639. package/dist/utils/text/simple_text_aggregator.d.ts +135 -0
  640. package/dist/utils/text/simple_text_aggregator.js +254 -0
  641. package/dist/utils/text/skip_tags_aggregator.d.ts +85 -0
  642. package/dist/utils/text/skip_tags_aggregator.js +147 -0
  643. package/dist/utils/text/transforms/pronunciations.d.ts +65 -0
  644. package/dist/utils/text/transforms/pronunciations.js +111 -0
  645. package/dist/utils/text/word_timestamp_utils.d.ts +26 -0
  646. package/dist/utils/text/word_timestamp_utils.js +52 -0
  647. package/dist/utils/time.d.ts +13 -0
  648. package/dist/utils/time.js +31 -0
  649. package/dist/utils/tracing/index.d.ts +3 -0
  650. package/dist/utils/tracing/index.js +8 -0
  651. package/dist/utils/tracing/service_attributes.d.ts +198 -0
  652. package/dist/utils/tracing/service_attributes.js +434 -0
  653. package/dist/utils/tracing/service_decorators.d.ts +214 -0
  654. package/dist/utils/tracing/service_decorators.js +1662 -0
  655. package/dist/utils/tracing/setup.d.ts +95 -0
  656. package/dist/utils/tracing/setup.js +110 -0
  657. package/dist/utils/tracing/tracing_context.d.ts +55 -0
  658. package/dist/utils/tracing/tracing_context.js +97 -0
  659. package/dist/utils/tracing/turn_trace_observer.d.ts +90 -0
  660. package/dist/utils/tracing/turn_trace_observer.js +219 -0
  661. package/dist/utils/types.d.ts +80 -0
  662. package/dist/utils/types.js +108 -0
  663. package/dist/utils/utils.d.ts +5 -0
  664. package/dist/utils/utils.js +22 -0
  665. package/dist/utils/yaml.d.ts +64 -0
  666. package/dist/utils/yaml.js +41 -0
  667. package/dist/version.d.ts +3 -0
  668. package/dist/version.js +7 -0
  669. package/dist/workers/base_worker.d.ts +772 -0
  670. package/dist/workers/base_worker.js +1298 -0
  671. package/dist/workers/index.d.ts +2 -0
  672. package/dist/workers/index.js +8 -0
  673. package/dist/workers/llm/backend_llm_worker.d.ts +552 -0
  674. package/dist/workers/llm/backend_llm_worker.js +1055 -0
  675. package/dist/workers/llm/index.d.ts +6 -0
  676. package/dist/workers/llm/index.js +11 -0
  677. package/dist/workers/llm/llm_context_worker.d.ts +66 -0
  678. package/dist/workers/llm/llm_context_worker.js +72 -0
  679. package/dist/workers/llm/llm_worker.d.ts +180 -0
  680. package/dist/workers/llm/llm_worker.js +323 -0
  681. package/dist/workers/llm/tool_decorator.d.ts +68 -0
  682. package/dist/workers/llm/tool_decorator.js +60 -0
  683. package/dist/workers/runner.d.ts +268 -0
  684. package/dist/workers/runner.js +489 -0
  685. package/dist/workers/ui/index.d.ts +22 -0
  686. package/dist/workers/ui/index.js +27 -0
  687. package/dist/workers/ui/ui_event_decorator.d.ts +43 -0
  688. package/dist/workers/ui/ui_event_decorator.js +75 -0
  689. package/dist/workers/ui/ui_job_context.d.ts +12 -0
  690. package/dist/workers/ui/ui_job_context.js +17 -0
  691. package/dist/workers/ui/ui_prompts.d.ts +21 -0
  692. package/dist/workers/ui/ui_prompts.js +41 -0
  693. package/dist/workers/ui/ui_tools.d.ts +32 -0
  694. package/dist/workers/ui/ui_tools.js +112 -0
  695. package/dist/workers/ui/ui_worker.d.ts +571 -0
  696. package/dist/workers/ui/ui_worker.js +1156 -0
  697. package/package.json +46 -3
  698. package/README.md +0 -5
@@ -0,0 +1,95 @@
1
+ /** Version triple reported by the Krisp SDK. */
2
+ export interface KrispSdkVersion {
3
+ major: number;
4
+ minor: number;
5
+ patch: number;
6
+ }
7
+ /** The subset of the `krisp_audio` SDK surface this module uses. */
8
+ export interface KrispAudioSdk {
9
+ SamplingRate: Record<string, unknown>;
10
+ FrameDuration: Record<string, unknown>;
11
+ LogLevel: {
12
+ Off: unknown;
13
+ } & Record<string, unknown>;
14
+ getVersion(): KrispSdkVersion;
15
+ globalInit(...args: unknown[]): void;
16
+ }
17
+ /**
18
+ * Install the Krisp SDK binding used by this module.
19
+ *
20
+ * STUB SUPPORT: there is no bundled binding; until one is installed every
21
+ * SDK call throws.
22
+ */
23
+ export declare function setKrispAudioSdk(sdk: KrispAudioSdk): void;
24
+ export declare const KRISP_SAMPLE_RATES: ReadonlyMap<number, unknown>;
25
+ export declare const KRISP_FRAME_DURATIONS: ReadonlyMap<number, unknown>;
26
+ /**
27
+ * Convert integer sample rate to Krisp SDK enum value.
28
+ *
29
+ * @param sampleRate Sample rate in Hz (e.g., 16000, 24000, 48000).
30
+ * @returns Corresponding Krisp SDK SampleRate enum value.
31
+ * @throws Error if the sample rate is not supported by Krisp SDK.
32
+ */
33
+ export declare function intToKrispSampleRate(sampleRate: number): unknown;
34
+ /**
35
+ * Convert integer frame duration to Krisp SDK enum value.
36
+ *
37
+ * @param frameDurationMs Frame duration in milliseconds (e.g., 10, 20, 30).
38
+ * @returns Corresponding Krisp SDK FrameDuration enum value.
39
+ * @throws Error if the frame duration is not supported by Krisp SDK.
40
+ */
41
+ export declare function intToKrispFrameDuration(frameDurationMs: number): unknown;
42
+ /** Whether the installed krisp_audio build uses nanobind bindings (>= 1.11.0). */
43
+ export declare function krispSdkUsesNanobindBindings(): boolean;
44
+ /**
45
+ * Singleton manager for Krisp VIVA SDK with reference counting.
46
+ *
47
+ * The SDK's global state is shared by every Krisp session in the process, so
48
+ * it is initialized once, on first use, and left up for the life of the
49
+ * process: destroying it while any session is still alive leaves that session
50
+ * reading freed memory, and there is no point in the process where every
51
+ * session is known to be gone. The reference count tracks how many components
52
+ * hold the SDK; it does not decide when to tear it down.
53
+ *
54
+ * (Upstream guards the state with a threading lock; JavaScript runs these
55
+ * synchronous methods atomically, so no lock is needed.)
56
+ */
57
+ export declare class KrispVivaSDKManager {
58
+ protected static _initialized: boolean;
59
+ protected static _referenceCount: number;
60
+ /** Callback for Krisp SDK licensing errors. */
61
+ protected static _licenseCallback(error: unknown, errorMessage: unknown): void;
62
+ /** Callback for Krisp SDK logging. */
63
+ protected static _logCallback(logMessage: unknown, logLevel: unknown): void;
64
+ /**
65
+ * Acquire a reference to the SDK (initializes if needed).
66
+ *
67
+ * Call this before creating Krisp sessions.
68
+ *
69
+ * @param apiKey Krisp SDK API key. If empty, falls back to the
70
+ * KRISP_VIVA_API_KEY environment variable. Only the key of the caller that
71
+ * initializes the SDK is used.
72
+ * @throws If SDK initialization fails (propagated from krisp_audio).
73
+ */
74
+ static acquire(apiKey?: string): void;
75
+ /**
76
+ * Release a reference to the SDK.
77
+ *
78
+ * Call this once the caller's Krisp sessions are gone. Releasing the last
79
+ * reference does not tear the SDK down; see the class docs.
80
+ */
81
+ static release(): void;
82
+ /**
83
+ * Get the current reference count.
84
+ *
85
+ * @returns Current number of active references to the SDK.
86
+ */
87
+ static getReferenceCount(): number;
88
+ /**
89
+ * Check if the SDK is currently initialized.
90
+ *
91
+ * @returns True if SDK is initialized, false otherwise.
92
+ */
93
+ static isInitialized(): boolean;
94
+ }
95
+ //# sourceMappingURL=krisp_instance.d.ts.map
@@ -0,0 +1,229 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/audio/krisp_instance.py
6
+ /**
7
+ * Krisp Instance manager for pipecat audio.
8
+ *
9
+ * PORTING NOTE: the Krisp VIVA SDK (`krisp_audio`) has no edge-compatible
10
+ * JavaScript binding. The module's logic is ported against the
11
+ * `KrispAudioSdk` interface below, but the default SDK is a stub whose calls
12
+ * throw "not ported yet". A runtime-specific package can provide the real
13
+ * binding with `setKrispAudioSdk()`.
14
+ */
15
+ import { logger } from "../utils/logger.js";
16
+ function notPorted() {
17
+ throw new Error("krisp_audio is not ported yet");
18
+ }
19
+ // Placeholder SDK: the enum members are their own names, every call throws.
20
+ const STUB_KRISP_AUDIO = {
21
+ SamplingRate: {
22
+ Sr8000Hz: "Sr8000Hz",
23
+ Sr16000Hz: "Sr16000Hz",
24
+ Sr24000Hz: "Sr24000Hz",
25
+ Sr32000Hz: "Sr32000Hz",
26
+ Sr44100Hz: "Sr44100Hz",
27
+ Sr48000Hz: "Sr48000Hz",
28
+ },
29
+ FrameDuration: {
30
+ Fd10ms: "Fd10ms",
31
+ Fd15ms: "Fd15ms",
32
+ Fd20ms: "Fd20ms",
33
+ Fd30ms: "Fd30ms",
34
+ Fd32ms: "Fd32ms",
35
+ },
36
+ LogLevel: { Off: "Off" },
37
+ getVersion: notPorted,
38
+ globalInit: notPorted,
39
+ };
40
+ let krispAudio = STUB_KRISP_AUDIO;
41
+ // Krisp SDK SamplingRate enum member for each sample rate (Hz)
42
+ const SAMPLE_RATE_MEMBERS = [
43
+ [8000, "Sr8000Hz"],
44
+ [16000, "Sr16000Hz"],
45
+ [24000, "Sr24000Hz"],
46
+ [32000, "Sr32000Hz"],
47
+ [44100, "Sr44100Hz"],
48
+ [48000, "Sr48000Hz"],
49
+ ];
50
+ // Krisp SDK FrameDuration enum member for each frame duration (ms)
51
+ const FRAME_DURATION_MEMBERS = [
52
+ [10, "Fd10ms"],
53
+ [15, "Fd15ms"],
54
+ [20, "Fd20ms"],
55
+ [30, "Fd30ms"],
56
+ [32, "Fd32ms"],
57
+ ];
58
+ const sampleRates = new Map();
59
+ const frameDurations = new Map();
60
+ // Upstream builds these maps from the krisp_audio enums at import time; here
61
+ // they are rebuilt whenever an SDK binding is installed.
62
+ function buildKrispMaps() {
63
+ sampleRates.clear();
64
+ for (const [rate, member] of SAMPLE_RATE_MEMBERS) {
65
+ sampleRates.set(rate, krispAudio.SamplingRate[member]);
66
+ }
67
+ frameDurations.clear();
68
+ for (const [duration, member] of FRAME_DURATION_MEMBERS) {
69
+ frameDurations.set(duration, krispAudio.FrameDuration[member]);
70
+ }
71
+ }
72
+ buildKrispMaps();
73
+ /**
74
+ * Install the Krisp SDK binding used by this module.
75
+ *
76
+ * STUB SUPPORT: there is no bundled binding; until one is installed every
77
+ * SDK call throws.
78
+ */
79
+ export function setKrispAudioSdk(sdk) {
80
+ krispAudio = sdk;
81
+ buildKrispMaps();
82
+ }
83
+ // Mapping of sample rates (Hz) to Krisp SDK SamplingRate enums
84
+ export const KRISP_SAMPLE_RATES = sampleRates;
85
+ // Mapping of frame durations (ms) to Krisp SDK FrameDuration enums
86
+ export const KRISP_FRAME_DURATIONS = frameDurations;
87
+ /**
88
+ * Convert integer sample rate to Krisp SDK enum value.
89
+ *
90
+ * @param sampleRate Sample rate in Hz (e.g., 16000, 24000, 48000).
91
+ * @returns Corresponding Krisp SDK SampleRate enum value.
92
+ * @throws Error if the sample rate is not supported by Krisp SDK.
93
+ */
94
+ export function intToKrispSampleRate(sampleRate) {
95
+ if (!KRISP_SAMPLE_RATES.has(sampleRate)) {
96
+ const supportedRates = [...KRISP_SAMPLE_RATES.keys()].sort((a, b) => a - b).join(", ");
97
+ throw new Error(`Unsupported sample rate: ${sampleRate} Hz. Supported rates: ${supportedRates} Hz`);
98
+ }
99
+ return KRISP_SAMPLE_RATES.get(sampleRate);
100
+ }
101
+ /**
102
+ * Convert integer frame duration to Krisp SDK enum value.
103
+ *
104
+ * @param frameDurationMs Frame duration in milliseconds (e.g., 10, 20, 30).
105
+ * @returns Corresponding Krisp SDK FrameDuration enum value.
106
+ * @throws Error if the frame duration is not supported by Krisp SDK.
107
+ */
108
+ export function intToKrispFrameDuration(frameDurationMs) {
109
+ if (!KRISP_FRAME_DURATIONS.has(frameDurationMs)) {
110
+ const supportedDurations = [...KRISP_FRAME_DURATIONS.keys()].sort((a, b) => a - b).join(", ");
111
+ throw new Error(`Unsupported frame duration: ${frameDurationMs} ms. ` +
112
+ `Supported durations: ${supportedDurations} ms`);
113
+ }
114
+ return KRISP_FRAME_DURATIONS.get(frameDurationMs);
115
+ }
116
+ // Krisp SDK switched its Python bindings from pybind11 to nanobind starting in
117
+ // 1.11.0. Among other things, this changed the noise suppression level
118
+ // argument from int to float and requires writable (not just readable) ndarray
119
+ // input.
120
+ const NANOBIND_SDK_VERSION = [1, 11, 0];
121
+ /** Whether the installed krisp_audio build uses nanobind bindings (>= 1.11.0). */
122
+ export function krispSdkUsesNanobindBindings() {
123
+ const version = krispAudio.getVersion();
124
+ const v = [version.major, version.minor, version.patch];
125
+ for (let i = 0; i < 3; i++) {
126
+ if (v[i] !== NANOBIND_SDK_VERSION[i]) {
127
+ return v[i] > NANOBIND_SDK_VERSION[i];
128
+ }
129
+ }
130
+ return true;
131
+ }
132
+ function getEnv(name) {
133
+ return globalThis.process?.env?.[name];
134
+ }
135
+ /**
136
+ * Singleton manager for Krisp VIVA SDK with reference counting.
137
+ *
138
+ * The SDK's global state is shared by every Krisp session in the process, so
139
+ * it is initialized once, on first use, and left up for the life of the
140
+ * process: destroying it while any session is still alive leaves that session
141
+ * reading freed memory, and there is no point in the process where every
142
+ * session is known to be gone. The reference count tracks how many components
143
+ * hold the SDK; it does not decide when to tear it down.
144
+ *
145
+ * (Upstream guards the state with a threading lock; JavaScript runs these
146
+ * synchronous methods atomically, so no lock is needed.)
147
+ */
148
+ export class KrispVivaSDKManager {
149
+ static _initialized = false;
150
+ static _referenceCount = 0;
151
+ /** Callback for Krisp SDK licensing errors. */
152
+ static _licenseCallback(error, errorMessage) {
153
+ logger.error(`Krisp licensing error: ${error} - ${errorMessage}`);
154
+ }
155
+ /** Callback for Krisp SDK logging. */
156
+ static _logCallback(logMessage, logLevel) {
157
+ logger.info(`[${logLevel}] ${logMessage}`);
158
+ }
159
+ /**
160
+ * Acquire a reference to the SDK (initializes if needed).
161
+ *
162
+ * Call this before creating Krisp sessions.
163
+ *
164
+ * @param apiKey Krisp SDK API key. If empty, falls back to the
165
+ * KRISP_VIVA_API_KEY environment variable. Only the key of the caller that
166
+ * initializes the SDK is used.
167
+ * @throws If SDK initialization fails (propagated from krisp_audio).
168
+ */
169
+ static acquire(apiKey = "") {
170
+ // Initialize the SDK once per process.
171
+ if (!KrispVivaSDKManager._initialized) {
172
+ try {
173
+ const key = apiKey || getEnv("KRISP_VIVA_API_KEY") || "";
174
+ try {
175
+ // New SDK signature (requires license key)
176
+ krispAudio.globalInit("", key, KrispVivaSDKManager._licenseCallback, KrispVivaSDKManager._logCallback, krispAudio.LogLevel.Off);
177
+ }
178
+ catch (e) {
179
+ if (!(e instanceof TypeError))
180
+ throw e;
181
+ // Old SDK signature (no license key)
182
+ krispAudio.globalInit("", KrispVivaSDKManager._logCallback, krispAudio.LogLevel.Off);
183
+ }
184
+ }
185
+ catch (e) {
186
+ logger.error(`Krisp SDK initialization failed: ${e}`);
187
+ throw e;
188
+ }
189
+ // Set before anything else that could fail: a flag that claims the SDK
190
+ // is down while it is up would let a second globalInit() re-seat global
191
+ // state that live sessions still point at.
192
+ KrispVivaSDKManager._initialized = true;
193
+ const SDK_VERSION = krispAudio.getVersion();
194
+ logger.debug(`Krisp Audio Python SDK initialized - Version: ` +
195
+ `${SDK_VERSION.major}.${SDK_VERSION.minor}.${SDK_VERSION.patch}`);
196
+ }
197
+ KrispVivaSDKManager._referenceCount += 1;
198
+ logger.debug(`Krisp SDK reference count: ${KrispVivaSDKManager._referenceCount}`);
199
+ }
200
+ /**
201
+ * Release a reference to the SDK.
202
+ *
203
+ * Call this once the caller's Krisp sessions are gone. Releasing the last
204
+ * reference does not tear the SDK down; see the class docs.
205
+ */
206
+ static release() {
207
+ if (KrispVivaSDKManager._referenceCount > 0) {
208
+ KrispVivaSDKManager._referenceCount -= 1;
209
+ logger.debug(`Krisp SDK reference count: ${KrispVivaSDKManager._referenceCount}`);
210
+ }
211
+ }
212
+ /**
213
+ * Get the current reference count.
214
+ *
215
+ * @returns Current number of active references to the SDK.
216
+ */
217
+ static getReferenceCount() {
218
+ return KrispVivaSDKManager._referenceCount;
219
+ }
220
+ /**
221
+ * Check if the SDK is currently initialized.
222
+ *
223
+ * @returns True if SDK is initialized, false otherwise.
224
+ */
225
+ static isInitialized() {
226
+ return KrispVivaSDKManager._initialized;
227
+ }
228
+ }
229
+ //# sourceMappingURL=krisp_instance.js.map
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Base audio mixer for output transport integration.
3
+ *
4
+ * Provides the abstract base class for audio mixers that can be integrated
5
+ * with output transports to mix incoming audio with generated audio from the
6
+ * mixer.
7
+ */
8
+ import type { MixerControlFrame } from "../../frames/frames.ts";
9
+ /**
10
+ * Base class for output transport audio mixers.
11
+ *
12
+ * If an audio mixer is provided to the output transport it will be used to
13
+ * mix the audio frames coming into to the transport with the audio generated
14
+ * from the mixer. There are control frames to update mixer settings or to
15
+ * enable or disable the mixer at runtime.
16
+ */
17
+ export declare abstract class BaseAudioMixer {
18
+ /**
19
+ * Initialize the mixer when the output transport starts.
20
+ *
21
+ * This will be called from the output transport when the transport is
22
+ * started. It can be used to initialize the mixer. The output transport
23
+ * sample rate is provided so the mixer can adjust to that sample rate.
24
+ *
25
+ * @param sampleRate The sample rate of the output transport in Hz.
26
+ */
27
+ abstract start(sampleRate: number): Promise<void>;
28
+ /**
29
+ * Clean up the mixer when the output transport stops.
30
+ *
31
+ * This will be called from the output transport when the transport is
32
+ * stopping.
33
+ */
34
+ abstract stop(): Promise<void>;
35
+ /**
36
+ * Process mixer control frames from the transport.
37
+ *
38
+ * This will be called when the output transport receives a
39
+ * MixerControlFrame.
40
+ *
41
+ * @param frame The mixer control frame to process.
42
+ */
43
+ abstract processFrame(frame: MixerControlFrame): Promise<void>;
44
+ /**
45
+ * Mix transport audio with mixer-generated audio.
46
+ *
47
+ * This is called with the audio that is about to be sent from the output
48
+ * transport and that should be mixed with the mixer audio if the mixer is
49
+ * enabled.
50
+ *
51
+ * @param audio Raw audio bytes from the transport to mix.
52
+ * @returns Mixed audio bytes combining transport and mixer audio.
53
+ */
54
+ abstract mix(audio: Uint8Array): Promise<Uint8Array>;
55
+ }
56
+ //# sourceMappingURL=base_audio_mixer.d.ts.map
@@ -0,0 +1,16 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/audio/mixers/base_audio_mixer.py
6
+ /**
7
+ * Base class for output transport audio mixers.
8
+ *
9
+ * If an audio mixer is provided to the output transport it will be used to
10
+ * mix the audio frames coming into to the transport with the audio generated
11
+ * from the mixer. There are control frames to update mixer settings or to
12
+ * enable or disable the mixer at runtime.
13
+ */
14
+ export class BaseAudioMixer {
15
+ }
16
+ //# sourceMappingURL=base_audio_mixer.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,8 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/audio/mixers/__init__.py
6
+ // Upstream's `__init__.py` is empty: import the package's modules directly.
7
+ export {};
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Base audio resampler interface for Pipecat.
3
+ *
4
+ * Defines the abstract base class for audio resampling implementations,
5
+ * providing a common interface for converting audio between different sample
6
+ * rates.
7
+ */
8
+ /** SOXR resampling quality presets, from fastest (QQ) to highest quality (VHQ). */
9
+ export type SoxrQuality = "QQ" | "LQ" | "MQ" | "HQ" | "VHQ";
10
+ /**
11
+ * Abstract base class for audio resampling implementations.
12
+ *
13
+ * Defines the interface that all audio resampling implementations must
14
+ * follow, providing a standardized way to convert audio data between
15
+ * different sample rates.
16
+ */
17
+ export declare abstract class BaseAudioResampler {
18
+ /**
19
+ * Resamples the given audio data to a different sample rate.
20
+ *
21
+ * @param audio The audio data to be resampled, as raw bytes.
22
+ * @param inRate The original sample rate of the audio data in Hz.
23
+ * @param outRate The desired sample rate for the output audio in Hz.
24
+ * @returns The resampled audio data as raw bytes.
25
+ */
26
+ abstract resample(audio: Uint8Array, inRate: number, outRate: number): Promise<Uint8Array>;
27
+ /**
28
+ * Emit any audio still held internally and reset the resampler.
29
+ *
30
+ * Streaming resamplers keep recently seen input in their filter, so the
31
+ * tail of a stream is only emitted once more audio arrives. Call this at
32
+ * the end of a continuous stream to collect that tail and start clean.
33
+ *
34
+ * @returns The remaining resampled audio as raw bytes, empty if the
35
+ * resampler holds nothing.
36
+ */
37
+ flush(): Promise<Uint8Array>;
38
+ /**
39
+ * Discard any audio still held internally and reset the resampler.
40
+ *
41
+ * Use this when a stream is abandoned rather than finished (e.g. after an
42
+ * interruption), so its leftover tail doesn't leak into the next stream.
43
+ */
44
+ reset(): Promise<void>;
45
+ }
46
+ //# sourceMappingURL=base_audio_resampler.d.ts.map
@@ -0,0 +1,35 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/audio/resamplers/base_audio_resampler.py
6
+ /**
7
+ * Abstract base class for audio resampling implementations.
8
+ *
9
+ * Defines the interface that all audio resampling implementations must
10
+ * follow, providing a standardized way to convert audio data between
11
+ * different sample rates.
12
+ */
13
+ export class BaseAudioResampler {
14
+ /**
15
+ * Emit any audio still held internally and reset the resampler.
16
+ *
17
+ * Streaming resamplers keep recently seen input in their filter, so the
18
+ * tail of a stream is only emitted once more audio arrives. Call this at
19
+ * the end of a continuous stream to collect that tail and start clean.
20
+ *
21
+ * @returns The remaining resampled audio as raw bytes, empty if the
22
+ * resampler holds nothing.
23
+ */
24
+ async flush() {
25
+ return new Uint8Array(0);
26
+ }
27
+ /**
28
+ * Discard any audio still held internally and reset the resampler.
29
+ *
30
+ * Use this when a stream is abandoned rather than finished (e.g. after an
31
+ * interruption), so its leftover tail doesn't leak into the next stream.
32
+ */
33
+ async reset() { }
34
+ }
35
+ //# sourceMappingURL=base_audio_resampler.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,8 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/audio/resamplers/__init__.py
6
+ // Upstream's `__init__.py` is empty: import the package's modules directly.
7
+ export {};
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Resampy-based audio resampler implementation.
3
+ *
4
+ * PORTING NOTE: upstream's only export, `ResampyResampler`, is deprecated
5
+ * (since 1.2.0, removed in 2.0.0) and is not ported. Use
6
+ * `SOXRAudioResampler`, `createFileResampler()` or `createStreamResampler()`
7
+ * instead.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=resampy_resampler.d.ts.map
@@ -0,0 +1,15 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/audio/resamplers/resampy_resampler.py
6
+ /**
7
+ * Resampy-based audio resampler implementation.
8
+ *
9
+ * PORTING NOTE: upstream's only export, `ResampyResampler`, is deprecated
10
+ * (since 1.2.0, removed in 2.0.0) and is not ported. Use
11
+ * `SOXRAudioResampler`, `createFileResampler()` or `createStreamResampler()`
12
+ * instead.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=resampy_resampler.js.map
@@ -0,0 +1,54 @@
1
+ /**
2
+ * SoX-based audio resampler implementation.
3
+ *
4
+ * Provides an audio resampler that uses the SoX resampler library for very
5
+ * high-quality audio sample rate conversion.
6
+ *
7
+ * When to use the SOXRAudioResampler:
8
+ * 1. For batch processing of complete audio files
9
+ * 2. When you have all the audio data available at once
10
+ *
11
+ * PORTING NOTE: libsoxr has no edge-compatible JavaScript equivalent yet. The
12
+ * class logic is ported, but the actual resampling (`soxrResample`) is a stub
13
+ * that throws "not ported yet". A WASM build of libsoxr, injected at runtime,
14
+ * is the intended replacement.
15
+ */
16
+ import { BaseAudioResampler, type SoxrQuality } from "./base_audio_resampler.ts";
17
+ /**
18
+ * Stand-in for `soxr.resample()`: resample a whole mono signal.
19
+ *
20
+ * STUB: libsoxr is not available in JavaScript yet; always throws.
21
+ *
22
+ * @internal
23
+ */
24
+ export declare function soxrResample<T extends Int16Array | Float32Array>(_audio: T, _inRate: number, _outRate: number, _quality: SoxrQuality): T;
25
+ export interface SOXRAudioResamplerOptions {
26
+ /**
27
+ * SOXR quality preset. Higher quality means higher CPU cost. One of "VHQ"
28
+ * (default, very high quality), "HQ", "MQ", "LQ", or "QQ" (quick, lowest
29
+ * latency).
30
+ */
31
+ quality?: SoxrQuality;
32
+ }
33
+ /**
34
+ * Audio resampler implementation using the SoX resampler library.
35
+ *
36
+ * Configured for very high quality (VHQ) resampling by default, providing
37
+ * excellent audio quality at the cost of additional computational overhead.
38
+ */
39
+ export declare class SOXRAudioResampler extends BaseAudioResampler {
40
+ protected _quality: SoxrQuality;
41
+ constructor(options?: SOXRAudioResamplerOptions);
42
+ /**
43
+ * Resample audio data using SoX resampler library.
44
+ *
45
+ * @param audio Input audio data as raw bytes (16-bit signed integers).
46
+ * @param inRate Original sample rate in Hz.
47
+ * @param outRate Target sample rate in Hz.
48
+ * @returns Resampled audio data as raw bytes (16-bit signed integers).
49
+ */
50
+ resample(audio: Uint8Array, inRate: number, outRate: number): Promise<Uint8Array>;
51
+ }
52
+ /** View (or copy, if unaligned) 16-bit PCM bytes as samples. @internal */
53
+ export declare function bytesToInt16(audio: Uint8Array): Int16Array;
54
+ //# sourceMappingURL=soxr_resampler.d.ts.map
@@ -0,0 +1,69 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/audio/resamplers/soxr_resampler.py
6
+ /**
7
+ * SoX-based audio resampler implementation.
8
+ *
9
+ * Provides an audio resampler that uses the SoX resampler library for very
10
+ * high-quality audio sample rate conversion.
11
+ *
12
+ * When to use the SOXRAudioResampler:
13
+ * 1. For batch processing of complete audio files
14
+ * 2. When you have all the audio data available at once
15
+ *
16
+ * PORTING NOTE: libsoxr has no edge-compatible JavaScript equivalent yet. The
17
+ * class logic is ported, but the actual resampling (`soxrResample`) is a stub
18
+ * that throws "not ported yet". A WASM build of libsoxr, injected at runtime,
19
+ * is the intended replacement.
20
+ */
21
+ import { BaseAudioResampler } from "./base_audio_resampler.js";
22
+ /**
23
+ * Stand-in for `soxr.resample()`: resample a whole mono signal.
24
+ *
25
+ * STUB: libsoxr is not available in JavaScript yet; always throws.
26
+ *
27
+ * @internal
28
+ */
29
+ export function soxrResample(_audio, _inRate, _outRate, _quality) {
30
+ throw new Error("soxr resampling is not ported yet");
31
+ }
32
+ /**
33
+ * Audio resampler implementation using the SoX resampler library.
34
+ *
35
+ * Configured for very high quality (VHQ) resampling by default, providing
36
+ * excellent audio quality at the cost of additional computational overhead.
37
+ */
38
+ export class SOXRAudioResampler extends BaseAudioResampler {
39
+ _quality;
40
+ constructor(options = {}) {
41
+ super();
42
+ this._quality = options.quality ?? "VHQ";
43
+ }
44
+ /**
45
+ * Resample audio data using SoX resampler library.
46
+ *
47
+ * @param audio Input audio data as raw bytes (16-bit signed integers).
48
+ * @param inRate Original sample rate in Hz.
49
+ * @param outRate Target sample rate in Hz.
50
+ * @returns Resampled audio data as raw bytes (16-bit signed integers).
51
+ */
52
+ async resample(audio, inRate, outRate) {
53
+ if (inRate === outRate) {
54
+ return audio;
55
+ }
56
+ const audioData = bytesToInt16(audio);
57
+ const resampledAudio = soxrResample(audioData, inRate, outRate, this._quality);
58
+ return new Uint8Array(resampledAudio.buffer, resampledAudio.byteOffset, resampledAudio.byteLength);
59
+ }
60
+ }
61
+ /** View (or copy, if unaligned) 16-bit PCM bytes as samples. @internal */
62
+ export function bytesToInt16(audio) {
63
+ const length = audio.length >> 1;
64
+ if (audio.byteOffset % 2 !== 0) {
65
+ return new Int16Array(audio.slice(0, length * 2).buffer);
66
+ }
67
+ return new Int16Array(audio.buffer, audio.byteOffset, length);
68
+ }
69
+ //# sourceMappingURL=soxr_resampler.js.map