@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,76 @@
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/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.py
6
+ /** User mute strategy that mutes the user until the bot completes its first speech. */
7
+ import { BotStartedSpeakingFrame, BotStoppedSpeakingFrame, ErrorFrame, } from "../../frames/frames.js";
8
+ import { logger } from "../../utils/logger.js";
9
+ import { BaseUserMuteStrategy } from "./base_user_mute_strategy.js";
10
+ /**
11
+ * User mute strategy that mutes the user until the bot completes its first speech.
12
+ *
13
+ * This strategy mutes user frames immediately from the start of the
14
+ * interaction, even if the bot has not started speaking yet. User input
15
+ * remains muted until the bot finishes its first speaking turn.
16
+ *
17
+ * After the bot completes its initial speech, all subsequent user frames are
18
+ * allowed to pass through without muting.
19
+ *
20
+ * Use this strategy when the bot must fully control the beginning of the
21
+ * interaction and deliver its first response without any user interruption.
22
+ *
23
+ * The mute is also released if the bot's first speaking turn fails before
24
+ * producing any audio, so that a failed opening leaves the user able to speak.
25
+ */
26
+ export class MuteUntilFirstBotCompleteUserMuteStrategy extends BaseUserMuteStrategy {
27
+ _botStartedSpeaking = false;
28
+ _firstSpeechHandled = false;
29
+ /** Initialize the mute-until-first-bot-complete user mute strategy. */
30
+ constructor() {
31
+ super();
32
+ }
33
+ /**
34
+ * Process an incoming frame.
35
+ *
36
+ * @param frame The frame to be processed.
37
+ * @returns Whether the strategy is muted.
38
+ */
39
+ async processFrame(frame) {
40
+ await super.processFrame(frame);
41
+ if (frame instanceof BotStartedSpeakingFrame) {
42
+ this._botStartedSpeaking = true;
43
+ }
44
+ else if (frame instanceof BotStoppedSpeakingFrame) {
45
+ await this._handleBotStoppedSpeaking(frame);
46
+ }
47
+ else if (frame instanceof ErrorFrame) {
48
+ await this._handleError(frame);
49
+ }
50
+ return !this._firstSpeechHandled;
51
+ }
52
+ async _handleBotStoppedSpeaking(_frame) {
53
+ if (!this._firstSpeechHandled) {
54
+ this._firstSpeechHandled = true;
55
+ }
56
+ }
57
+ /**
58
+ * Release the mute when the first speaking turn fails before any audio.
59
+ *
60
+ * No audio means no `BotStoppedSpeakingFrame`, and no later one to wait
61
+ * for either, since a muted user can never prompt another turn. Only
62
+ * errors before the bot starts speaking count: after that the transport
63
+ * ends the turn on its own once the audio dries up.
64
+ */
65
+ async _handleError(frame) {
66
+ if (this._botStartedSpeaking) {
67
+ return;
68
+ }
69
+ if (!this._firstSpeechHandled) {
70
+ logger.warning(`${this}: releasing the user mute without the bot having completed its first ` +
71
+ `speech, after an error from ${frame.processor}: ${frame.error}`);
72
+ this._firstSpeechHandled = true;
73
+ }
74
+ }
75
+ }
76
+ //# sourceMappingURL=mute_until_first_bot_complete_user_mute_strategy.js.map
@@ -0,0 +1,135 @@
1
+ /** Base turn start strategy for determining when the user starts speaking. */
2
+ import type { Frame } from "../../frames/frames.ts";
3
+ import { FrameDirection, type FrameProcessorSetup } from "../../processors/frame_processor.ts";
4
+ import { BaseObject, type BaseObjectOptions } from "../../utils/base_object.ts";
5
+ import type { ProcessFrameResult } from "../types.ts";
6
+ export interface UserTurnStartedParamsOptions {
7
+ /** Whether the user aggregator should broadcast an interruption for this turn. */
8
+ enableInterruptions: boolean;
9
+ /**
10
+ * Whether to emit `UserStartedSpeakingFrame` for this turn. False when the
11
+ * turn was already announced elsewhere — by a shared `UserTurnProcessor`,
12
+ * or by a service that emits turn frames rather than proposing them.
13
+ */
14
+ enableUserSpeakingFrames: boolean;
15
+ }
16
+ /**
17
+ * Parameters emitted when a user turn starts.
18
+ *
19
+ * These parameters are passed to the `on_user_turn_started` event and provide
20
+ * contextual information about how the user turn should be handled by the user
21
+ * aggregator.
22
+ *
23
+ * - `enableUserSpeakingFrames`: Whether to emit `UserStartedSpeakingFrame` for
24
+ * this turn. False when the turn was already announced elsewhere — by a
25
+ * shared `UserTurnProcessor`, or by a service that emits turn frames rather
26
+ * than proposing them.
27
+ */
28
+ export declare class UserTurnStartedParams {
29
+ enableInterruptions: boolean;
30
+ enableUserSpeakingFrames: boolean;
31
+ constructor(options: UserTurnStartedParamsOptions);
32
+ }
33
+ export interface BaseUserTurnStartStrategyOptions extends BaseObjectOptions {
34
+ /**
35
+ * If true, the user aggregator will emit an interruption frame when the user
36
+ * turn starts.
37
+ */
38
+ enableInterruptions?: boolean;
39
+ }
40
+ export interface TriggerUserTurnStartedOptions {
41
+ /**
42
+ * Whether to broadcast an interruption for this turn, overriding the
43
+ * strategy's configured setting. Pass false when something else in the
44
+ * pipeline has already broadcast one.
45
+ */
46
+ enableInterruptions?: boolean | null;
47
+ /**
48
+ * Whether to emit `UserStartedSpeakingFrame` for this turn. Pass false when
49
+ * something else in the pipeline has already emitted it.
50
+ */
51
+ enableUserSpeakingFrames?: boolean | null;
52
+ }
53
+ /**
54
+ * Base class for strategies that determine when a user starts speaking.
55
+ *
56
+ * Subclasses should implement logic to detect the start of a user's turn.
57
+ * This could be based on voice activity, number of words spoken, or other
58
+ * heuristics.
59
+ *
60
+ * Events triggered by user turn start strategies:
61
+ *
62
+ * - `on_push_frame`: Indicates the strategy wants to push a frame.
63
+ * - `on_broadcast_frame`: Indicates the strategy wants to broadcast a frame.
64
+ * - `on_user_turn_started`: Signals that a user turn has started.
65
+ *
66
+ * Porting note: the deprecated `enable_user_speaking_frames` constructor
67
+ * argument and the deprecated `reset()` hook are not ported.
68
+ */
69
+ export declare class BaseUserTurnStartStrategy extends BaseObject {
70
+ protected _enableInterruptions: boolean;
71
+ protected _enableUserSpeakingFrames: boolean;
72
+ constructor(options?: BaseUserTurnStartStrategyOptions);
73
+ /**
74
+ * Whether this strategy resolves proposals into turn starts.
75
+ *
76
+ * A `ProposedUserStartedSpeakingFrame` is a request for a decision, so a
77
+ * strategy that acts on one consumes it: the frame stops travelling, and no
78
+ * resolver further along decides the same turn a second time. Override to
79
+ * true in a strategy that handles that frame.
80
+ */
81
+ get resolvesProposedTurnStartFrames(): boolean;
82
+ /**
83
+ * Set up the strategy.
84
+ *
85
+ * @param setup Configuration object containing setup parameters.
86
+ */
87
+ setup(setup: FrameProcessorSetup): Promise<void>;
88
+ /** Cleanup the strategy. */
89
+ cleanup(): Promise<void>;
90
+ /**
91
+ * Notify the strategy that a user turn has started.
92
+ *
93
+ * The controller calls this on every start strategy when a turn begins.
94
+ * Override to run, for example, logic to reset state and prepare for the
95
+ * next detection.
96
+ */
97
+ handleUserTurnStarted(): Promise<void>;
98
+ /**
99
+ * Notify the strategy that the user turn has stopped.
100
+ *
101
+ * The controller calls this on every start strategy when a turn ends.
102
+ * Override if the strategy needs to act on turn end (likely uncommon).
103
+ */
104
+ handleUserTurnStopped(): Promise<void>;
105
+ /**
106
+ * Process an incoming frame.
107
+ *
108
+ * Subclasses should override this to implement logic that decides whether
109
+ * the user turn has started.
110
+ *
111
+ * @param frame The frame to be processed.
112
+ * @returns A ProcessFrameResult indicating the outcome, or null (treated as
113
+ * CONTINUE for backward compatibility).
114
+ */
115
+ processFrame(_frame: Frame): Promise<ProcessFrameResult | null>;
116
+ /**
117
+ * Emit on_push_frame to push a frame using the user aggregator.
118
+ *
119
+ * @param frame The frame to be pushed.
120
+ * @param direction What direction the frame should be pushed to.
121
+ */
122
+ pushFrame(frame: Frame, direction?: FrameDirection): Promise<void>;
123
+ /**
124
+ * Emit on_broadcast_frame to broadcast a frame using the user aggregator.
125
+ *
126
+ * @param frameCls The class of the frame to be broadcasted.
127
+ * @param options Options to be passed to the frame's constructor.
128
+ */
129
+ broadcastFrame<O>(frameCls: new (options: O) => Frame, options?: O): Promise<void>;
130
+ /** Trigger the `on_user_turn_started` event. */
131
+ triggerUserTurnStarted(options?: TriggerUserTurnStartedOptions): Promise<void>;
132
+ /** Trigger the `on_reset_aggregation` event. */
133
+ triggerResetAggregation(): Promise<void>;
134
+ }
135
+ //# sourceMappingURL=base_user_turn_start_strategy.d.ts.map
@@ -0,0 +1,134 @@
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/turns/user_start/base_user_turn_start_strategy.py
6
+ import { FrameDirection } from "../../processors/frame_processor.js";
7
+ import { BaseObject } from "../../utils/base_object.js";
8
+ /**
9
+ * Parameters emitted when a user turn starts.
10
+ *
11
+ * These parameters are passed to the `on_user_turn_started` event and provide
12
+ * contextual information about how the user turn should be handled by the user
13
+ * aggregator.
14
+ *
15
+ * - `enableUserSpeakingFrames`: Whether to emit `UserStartedSpeakingFrame` for
16
+ * this turn. False when the turn was already announced elsewhere — by a
17
+ * shared `UserTurnProcessor`, or by a service that emits turn frames rather
18
+ * than proposing them.
19
+ */
20
+ export class UserTurnStartedParams {
21
+ enableInterruptions;
22
+ enableUserSpeakingFrames;
23
+ constructor(options) {
24
+ this.enableInterruptions = options.enableInterruptions;
25
+ this.enableUserSpeakingFrames = options.enableUserSpeakingFrames;
26
+ }
27
+ }
28
+ /**
29
+ * Base class for strategies that determine when a user starts speaking.
30
+ *
31
+ * Subclasses should implement logic to detect the start of a user's turn.
32
+ * This could be based on voice activity, number of words spoken, or other
33
+ * heuristics.
34
+ *
35
+ * Events triggered by user turn start strategies:
36
+ *
37
+ * - `on_push_frame`: Indicates the strategy wants to push a frame.
38
+ * - `on_broadcast_frame`: Indicates the strategy wants to broadcast a frame.
39
+ * - `on_user_turn_started`: Signals that a user turn has started.
40
+ *
41
+ * Porting note: the deprecated `enable_user_speaking_frames` constructor
42
+ * argument and the deprecated `reset()` hook are not ported.
43
+ */
44
+ export class BaseUserTurnStartStrategy extends BaseObject {
45
+ _enableInterruptions;
46
+ _enableUserSpeakingFrames = true;
47
+ constructor(options = {}) {
48
+ super(options);
49
+ this._enableInterruptions = options.enableInterruptions ?? true;
50
+ this._registerEventHandler("on_push_frame", true);
51
+ this._registerEventHandler("on_broadcast_frame", true);
52
+ this._registerEventHandler("on_user_turn_started", true);
53
+ this._registerEventHandler("on_reset_aggregation", true);
54
+ }
55
+ /**
56
+ * Whether this strategy resolves proposals into turn starts.
57
+ *
58
+ * A `ProposedUserStartedSpeakingFrame` is a request for a decision, so a
59
+ * strategy that acts on one consumes it: the frame stops travelling, and no
60
+ * resolver further along decides the same turn a second time. Override to
61
+ * true in a strategy that handles that frame.
62
+ */
63
+ get resolvesProposedTurnStartFrames() {
64
+ return false;
65
+ }
66
+ /**
67
+ * Set up the strategy.
68
+ *
69
+ * @param setup Configuration object containing setup parameters.
70
+ */
71
+ async setup(setup) {
72
+ await super.setup(setup.taskManager);
73
+ }
74
+ /** Cleanup the strategy. */
75
+ async cleanup() { }
76
+ /**
77
+ * Notify the strategy that a user turn has started.
78
+ *
79
+ * The controller calls this on every start strategy when a turn begins.
80
+ * Override to run, for example, logic to reset state and prepare for the
81
+ * next detection.
82
+ */
83
+ async handleUserTurnStarted() { }
84
+ /**
85
+ * Notify the strategy that the user turn has stopped.
86
+ *
87
+ * The controller calls this on every start strategy when a turn ends.
88
+ * Override if the strategy needs to act on turn end (likely uncommon).
89
+ */
90
+ async handleUserTurnStopped() { }
91
+ /**
92
+ * Process an incoming frame.
93
+ *
94
+ * Subclasses should override this to implement logic that decides whether
95
+ * the user turn has started.
96
+ *
97
+ * @param frame The frame to be processed.
98
+ * @returns A ProcessFrameResult indicating the outcome, or null (treated as
99
+ * CONTINUE for backward compatibility).
100
+ */
101
+ async processFrame(_frame) {
102
+ return null;
103
+ }
104
+ /**
105
+ * Emit on_push_frame to push a frame using the user aggregator.
106
+ *
107
+ * @param frame The frame to be pushed.
108
+ * @param direction What direction the frame should be pushed to.
109
+ */
110
+ async pushFrame(frame, direction = FrameDirection.DOWNSTREAM) {
111
+ await this._callEventHandler("on_push_frame", frame, direction);
112
+ }
113
+ /**
114
+ * Emit on_broadcast_frame to broadcast a frame using the user aggregator.
115
+ *
116
+ * @param frameCls The class of the frame to be broadcasted.
117
+ * @param options Options to be passed to the frame's constructor.
118
+ */
119
+ async broadcastFrame(frameCls, options) {
120
+ await this._callEventHandler("on_broadcast_frame", frameCls, options);
121
+ }
122
+ /** Trigger the `on_user_turn_started` event. */
123
+ async triggerUserTurnStarted(options = {}) {
124
+ await this._callEventHandler("on_user_turn_started", new UserTurnStartedParams({
125
+ enableInterruptions: options.enableInterruptions ?? this._enableInterruptions,
126
+ enableUserSpeakingFrames: options.enableUserSpeakingFrames ?? this._enableUserSpeakingFrames,
127
+ }));
128
+ }
129
+ /** Trigger the `on_reset_aggregation` event. */
130
+ async triggerResetAggregation() {
131
+ await this._callEventHandler("on_reset_aggregation");
132
+ }
133
+ }
134
+ //# sourceMappingURL=base_user_turn_start_strategy.js.map
@@ -0,0 +1,45 @@
1
+ /** User turn start strategy driven by another component in the pipeline. */
2
+ import { type Frame } from "../../frames/frames.ts";
3
+ import { ProcessFrameResult } from "../types.ts";
4
+ import { BaseUserTurnStartStrategy, type BaseUserTurnStartStrategyOptions } from "./base_user_turn_start_strategy.ts";
5
+ export interface ExternalUserTurnStartStrategyOptions extends BaseUserTurnStartStrategyOptions {
6
+ /**
7
+ * If true, broadcast an interruption when a proposal opens a turn. Ignored
8
+ * on the adopt path, where the emitter has already broadcast one.
9
+ */
10
+ enableInterruptions?: boolean;
11
+ }
12
+ /**
13
+ * User turn start strategy driven by another component in the pipeline.
14
+ *
15
+ * Rather than detecting the start of a turn itself, this strategy takes its
16
+ * cue from another processor. It understands two signals, which differ in how
17
+ * much the emitter has already done:
18
+ *
19
+ * - `ProposedUserStartedSpeakingFrame` — a service with its own turn detection
20
+ * proposing a turn boundary. This strategy makes the decision, emitting the
21
+ * `UserStartedSpeakingFrame` and broadcasting the interruption itself.
22
+ * Subclass it to adjust when, or whether, a proposal opens a turn.
23
+ *
24
+ * - `UserStartedSpeakingFrame` — the turn was already decided and announced
25
+ * elsewhere, typically by a shared `UserTurnProcessor` fanning turns out to
26
+ * several aggregators. This strategy adopts that decision and emits nothing,
27
+ * so the turn isn't announced twice.
28
+ *
29
+ * A service that emits turn frames directly lands on the adopt path and keeps
30
+ * working, but it owns the interruption logic itself. Emitting proposals
31
+ * instead hands that job back to the pipeline.
32
+ */
33
+ export declare class ExternalUserTurnStartStrategy extends BaseUserTurnStartStrategy {
34
+ constructor(options?: ExternalUserTurnStartStrategyOptions);
35
+ /** Whether this strategy resolves proposals into turn starts. */
36
+ get resolvesProposedTurnStartFrames(): boolean;
37
+ /**
38
+ * Process an incoming frame to detect user turn start.
39
+ *
40
+ * @param frame The frame to be analyzed.
41
+ * @returns STOP if the turn started, CONTINUE otherwise.
42
+ */
43
+ processFrame(frame: Frame): Promise<ProcessFrameResult>;
44
+ }
45
+ //# sourceMappingURL=external_user_turn_start_strategy.d.ts.map
@@ -0,0 +1,64 @@
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/turns/user_start/external_user_turn_start_strategy.py
6
+ /** User turn start strategy driven by another component in the pipeline. */
7
+ import { ProposedUserStartedSpeakingFrame, UserStartedSpeakingFrame, } from "../../frames/frames.js";
8
+ import { logger } from "../../utils/logger.js";
9
+ import { ProcessFrameResult } from "../types.js";
10
+ import { BaseUserTurnStartStrategy, } from "./base_user_turn_start_strategy.js";
11
+ /**
12
+ * User turn start strategy driven by another component in the pipeline.
13
+ *
14
+ * Rather than detecting the start of a turn itself, this strategy takes its
15
+ * cue from another processor. It understands two signals, which differ in how
16
+ * much the emitter has already done:
17
+ *
18
+ * - `ProposedUserStartedSpeakingFrame` — a service with its own turn detection
19
+ * proposing a turn boundary. This strategy makes the decision, emitting the
20
+ * `UserStartedSpeakingFrame` and broadcasting the interruption itself.
21
+ * Subclass it to adjust when, or whether, a proposal opens a turn.
22
+ *
23
+ * - `UserStartedSpeakingFrame` — the turn was already decided and announced
24
+ * elsewhere, typically by a shared `UserTurnProcessor` fanning turns out to
25
+ * several aggregators. This strategy adopts that decision and emits nothing,
26
+ * so the turn isn't announced twice.
27
+ *
28
+ * A service that emits turn frames directly lands on the adopt path and keeps
29
+ * working, but it owns the interruption logic itself. Emitting proposals
30
+ * instead hands that job back to the pipeline.
31
+ */
32
+ export class ExternalUserTurnStartStrategy extends BaseUserTurnStartStrategy {
33
+ constructor(options = {}) {
34
+ super({ ...options, enableInterruptions: options.enableInterruptions ?? true });
35
+ }
36
+ /** Whether this strategy resolves proposals into turn starts. */
37
+ get resolvesProposedTurnStartFrames() {
38
+ return true;
39
+ }
40
+ /**
41
+ * Process an incoming frame to detect user turn start.
42
+ *
43
+ * @param frame The frame to be analyzed.
44
+ * @returns STOP if the turn started, CONTINUE otherwise.
45
+ */
46
+ async processFrame(frame) {
47
+ if (frame instanceof ProposedUserStartedSpeakingFrame) {
48
+ logger.debug(`${this}: resolving a proposed user turn start`);
49
+ await this.triggerUserTurnStarted();
50
+ return ProcessFrameResult.STOP;
51
+ }
52
+ if (frame instanceof UserStartedSpeakingFrame) {
53
+ // Already announced elsewhere — adopt the decision without repeating it.
54
+ logger.debug(`${this}: adopting a user turn start decided elsewhere`);
55
+ await this.triggerUserTurnStarted({
56
+ enableInterruptions: false,
57
+ enableUserSpeakingFrames: false,
58
+ });
59
+ return ProcessFrameResult.STOP;
60
+ }
61
+ return ProcessFrameResult.CONTINUE;
62
+ }
63
+ }
64
+ //# sourceMappingURL=external_user_turn_start_strategy.js.map
@@ -0,0 +1,8 @@
1
+ export { BaseUserTurnStartStrategy, UserTurnStartedParams, } from "./base_user_turn_start_strategy.ts";
2
+ export { ExternalUserTurnStartStrategy } from "./external_user_turn_start_strategy.ts";
3
+ export { KrispVivaIPUserTurnStartStrategy } from "./krisp_viva_ip_user_turn_start_strategy.ts";
4
+ export { MinWordsUserTurnStartStrategy } from "./min_words_user_turn_start_strategy.ts";
5
+ export { TranscriptionUserTurnStartStrategy } from "./transcription_user_turn_start_strategy.ts";
6
+ export { VADUserTurnStartStrategy } from "./vad_user_turn_start_strategy.ts";
7
+ export { WakePhraseUserTurnStartStrategy } from "./wake_phrase_user_turn_start_strategy.ts";
8
+ //# sourceMappingURL=index.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/turns/user_start/__init__.py
6
+ // Upstream imports KrispVivaIPUserTurnStartStrategy inside a try/except and
7
+ // sets it to None when krisp_audio is not installed. Here the module is always
8
+ // importable; its Krisp runtime is injected (see its own module).
9
+ export { BaseUserTurnStartStrategy, UserTurnStartedParams, } from "./base_user_turn_start_strategy.js";
10
+ export { ExternalUserTurnStartStrategy } from "./external_user_turn_start_strategy.js";
11
+ export { KrispVivaIPUserTurnStartStrategy } from "./krisp_viva_ip_user_turn_start_strategy.js";
12
+ export { MinWordsUserTurnStartStrategy } from "./min_words_user_turn_start_strategy.js";
13
+ export { TranscriptionUserTurnStartStrategy } from "./transcription_user_turn_start_strategy.js";
14
+ export { VADUserTurnStartStrategy } from "./vad_user_turn_start_strategy.js";
15
+ export { WakePhraseUserTurnStartStrategy } from "./wake_phrase_user_turn_start_strategy.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,133 @@
1
+ import { BotStoppedSpeakingFrame, type Frame, InputAudioRawFrame, VADUserStartedSpeakingFrame, VADUserStoppedSpeakingFrame } from "../../frames/frames.ts";
2
+ import { ProcessFrameResult } from "../types.ts";
3
+ import { BaseUserTurnStartStrategy, type BaseUserTurnStartStrategyOptions } from "./base_user_turn_start_strategy.ts";
4
+ /** A Krisp IP session (`krisp_audio.IpFloat`): one probability per audio frame. */
5
+ export interface KrispIpSession {
6
+ /**
7
+ * Feed one frame of float32 samples in [-1, 1).
8
+ *
9
+ * @param frame Exactly `samplesPerFrame` samples.
10
+ * @param speechActive The per-frame VAD input.
11
+ * @returns The probability that the speech is a genuine interruption.
12
+ */
13
+ process(frame: Float32Array, speechActive: boolean): number;
14
+ }
15
+ export interface KrispVivaIPUserTurnStartStrategyOptions extends BaseUserTurnStartStrategyOptions {
16
+ /**
17
+ * Path to the Krisp VIVA IP model file (.kef). If null, uses the
18
+ * KRISP_VIVA_IP_MODEL_PATH environment variable.
19
+ */
20
+ modelPath?: string | null;
21
+ /**
22
+ * IP probability threshold (0.0 to 1.0). When the model's output exceeds
23
+ * this value, the speech is classified as a genuine interruption.
24
+ */
25
+ threshold?: number;
26
+ /**
27
+ * Frame duration in milliseconds for IP processing.
28
+ * Supported values: 10, 15, 20, 30, 32.
29
+ */
30
+ frameDurationMs?: number;
31
+ /**
32
+ * Krisp SDK API key. If empty, falls back to the KRISP_VIVA_API_KEY
33
+ * environment variable.
34
+ */
35
+ apiKey?: string;
36
+ }
37
+ /**
38
+ * User turn start strategy using Krisp VIVA Interruption Prediction.
39
+ *
40
+ * When VAD detects user speech, this strategy feeds audio frames into
41
+ * the Krisp VIVA IP model. The model outputs a probability indicating
42
+ * whether the speech is a genuine interruption (as opposed to a
43
+ * backchannel). A user turn is triggered only when this probability
44
+ * exceeds the configured threshold.
45
+ *
46
+ * This strategy is designed to work alongside other start strategies
47
+ * (e.g. `TranscriptionUserTurnStartStrategy` as a fallback) via the
48
+ * strategy list in `UserTurnStrategies`.
49
+ *
50
+ * @example
51
+ * const strategies = new UserTurnStrategies({
52
+ * start: [
53
+ * new KrispVivaIPUserTurnStartStrategy({
54
+ * modelPath: "/path/to/ip_model.kef",
55
+ * threshold: 0.5,
56
+ * }),
57
+ * new TranscriptionUserTurnStartStrategy(),
58
+ * ],
59
+ * });
60
+ */
61
+ export declare class KrispVivaIPUserTurnStartStrategy extends BaseUserTurnStartStrategy {
62
+ protected _threshold: number;
63
+ protected _frameDurationMs: number;
64
+ protected _apiKey: string;
65
+ protected _modelPath: string;
66
+ protected _sdkAcquired: boolean;
67
+ protected _ipSession: KrispIpSession | null;
68
+ protected _samplesPerFrame: number | null;
69
+ protected _sampleRate: number | null;
70
+ protected _speechActive: boolean;
71
+ protected _audioBuffer: Uint8Array;
72
+ protected _decisionMade: boolean;
73
+ constructor(options?: KrispVivaIPUserTurnStartStrategyOptions);
74
+ /** Release Krisp SDK resources. */
75
+ cleanup(): Promise<void>;
76
+ /**
77
+ * Create a Krisp IP session for the given sample rate.
78
+ *
79
+ * STUB: needs the Krisp SDK (`krisp_audio.IpFloat.create`), which has no JS
80
+ * equivalent yet. Override to supply a session.
81
+ */
82
+ protected _createIpSession(sampleRate: number): KrispIpSession;
83
+ /**
84
+ * Create or re-create the IP session when sample rate changes.
85
+ *
86
+ * @param sampleRate Audio sample rate in Hz.
87
+ */
88
+ protected _ensureSession(sampleRate: number): void;
89
+ /** Reset speech tracking state for the next candidate interruption. */
90
+ protected _resetState(): void;
91
+ /** Ready the strategy for a new user turn. */
92
+ handleUserTurnStarted(): Promise<void>;
93
+ /**
94
+ * Process a frame to detect genuine user interruptions.
95
+ *
96
+ * On `VADUserStartedSpeakingFrame`, begins collecting audio.
97
+ * On `InputAudioRawFrame`, feeds audio through the IP model and
98
+ * triggers a user turn if the interruption probability exceeds the
99
+ * threshold.
100
+ * On `VADUserStoppedSpeakingFrame` or `BotStoppedSpeakingFrame`,
101
+ * resets the candidate state.
102
+ *
103
+ * @param frame The incoming frame.
104
+ * @returns STOP if a genuine interruption was detected, CONTINUE otherwise.
105
+ */
106
+ processFrame(frame: Frame): Promise<ProcessFrameResult>;
107
+ /**
108
+ * Begin collecting audio for interruption classification.
109
+ *
110
+ * @returns Always CONTINUE; the decision is deferred until enough audio is processed.
111
+ */
112
+ protected _handleVadStarted(_frame: VADUserStartedSpeakingFrame): Promise<ProcessFrameResult>;
113
+ /**
114
+ * Feed audio to the IP model and check for genuine interruption.
115
+ *
116
+ * Every frame is passed to the IP model regardless of speech state so
117
+ * that the model maintains continuous internal state (matching the
118
+ * standalone Krisp SDK behaviour). `_speechActive` is forwarded as
119
+ * the per-frame VAD input to the model and also gates the threshold
120
+ * evaluation.
121
+ *
122
+ * @param frame Raw audio input frame.
123
+ * @returns STOP if the model detects a genuine interruption, CONTINUE otherwise.
124
+ */
125
+ protected _handleAudio(frame: InputAudioRawFrame): Promise<ProcessFrameResult>;
126
+ /**
127
+ * Reset state when the candidate interruption window ends.
128
+ *
129
+ * @returns Always CONTINUE.
130
+ */
131
+ protected _handleReset(_frame: VADUserStoppedSpeakingFrame | BotStoppedSpeakingFrame): Promise<ProcessFrameResult>;
132
+ }
133
+ //# sourceMappingURL=krisp_viva_ip_user_turn_start_strategy.d.ts.map