@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,109 @@
1
+ /** Python's `ch.isalnum()` for a single character. */
2
+ export declare function isAlnum(ch: string | undefined): boolean;
3
+ /** Python's `ch.isalpha()` for a single character. */
4
+ export declare function isAlpha(ch: string | undefined): boolean;
5
+ /** Python's `ch.isspace()` for a single character. */
6
+ export declare function isSpace(ch: string | undefined): boolean;
7
+ /** Python's `unicodedata.category(ch).startswith("P")` for a single character. */
8
+ export declare function isPunctuation(ch: string | undefined): boolean;
9
+ /** The character (code point) at code unit offset `pos` of `text`. */
10
+ export declare function charAt(text: string, pos: number): string;
11
+ /**
12
+ * Remove punctuation only at the very end of `text`.
13
+ *
14
+ * @param text Input text to trim.
15
+ * @returns `text` with any trailing run of Unicode punctuation characters removed.
16
+ */
17
+ export declare function stripTrailingPunctuation(text: string): string;
18
+ /**
19
+ * Replace typographic punctuation variants with their ASCII equivalents.
20
+ *
21
+ * @param text Input text to fold.
22
+ * @returns `text` with typographic quotes and dashes replaced by ASCII; same
23
+ * length as `text`.
24
+ */
25
+ export declare function foldTypography(text: string): string;
26
+ /**
27
+ * Fold away surface variation between two spellings of the same text, 1:1.
28
+ *
29
+ * Unlike `alnumOnly`, this never removes or merges characters -- punctuation,
30
+ * spaces, and markup are passed through unchanged, and each output character
31
+ * corresponds to exactly the same-index input character. A raw offset
32
+ * computed against the folded text therefore applies unchanged to the
33
+ * original, so callers can use it as a drop-in transform before a
34
+ * position-based literal comparison, without the risk of a fully-normalized
35
+ * (whitespace/punctuation-stripped) comparison matching across a boundary
36
+ * that wasn't already a candidate in the untransformed comparison.
37
+ *
38
+ * Folds case, accents, and typographic punctuation (`’` -> `'`,
39
+ * `–` -> `-`) -- the variations a TTS service may introduce between the
40
+ * text it was sent and the words it reports back. Deliberately narrow: each
41
+ * folded character is listed in `TYPOGRAPHIC_FOLD`, rather than applying a
42
+ * blanket Unicode compatibility normalization, which would silently fold
43
+ * thousands of characters (CJK compatibility ideographs, halfwidth katakana,
44
+ * math alphanumerics) that no service is known to substitute.
45
+ *
46
+ * @param text Input text to fold.
47
+ * @returns `text` with those variations folded away; same length as `text`.
48
+ */
49
+ export declare function foldForMatching(text: string): string;
50
+ /**
51
+ * Strip XML/HTML tags then keep only lowercase alphanumeric characters.
52
+ *
53
+ * Accented letters (e.g. ã, é) are reduced to their base letter so TTS output
54
+ * can be matched against LLM text even when the provider strips diacritics.
55
+ * Non-Latin scripts (CJK, Hangul) are kept as-is — each original character
56
+ * contributes exactly one char to the result, keeping normalized length in
57
+ * sync with raw alnum counts used by `advanceByAlnums`.
58
+ *
59
+ * @param text Input text to reduce.
60
+ * @returns Lowercase alphanumeric-only string with tags stripped.
61
+ */
62
+ export declare function alnumOnly(text: string): string;
63
+ /**
64
+ * Return true if `text` holds anything alphanumeric once markup is stripped.
65
+ *
66
+ * The predicate form of `alnumOnly`, for the question the callers actually
67
+ * ask: is there anything left to speak here? A tag's letters do not count --
68
+ * `"<break/>"` is empty by this measure.
69
+ */
70
+ export declare function hasAlnum(text: string): boolean;
71
+ /**
72
+ * Return the position in `text` after advancing past `n` characters.
73
+ *
74
+ * XML/HTML tags (`<...>`) are crossed without counting against the budget, so
75
+ * the span returned includes any tag met on the way. Everything else counts,
76
+ * punctuation and spaces included.
77
+ *
78
+ * This keeps a cursor in step with one walking the same content written
79
+ * without the tags: both move over the same characters, so neither reaches
80
+ * past what the other has. Where the budget is a count of letters and digits
81
+ * instead, use `advanceByAlnums`.
82
+ *
83
+ * @param text The source text to scan.
84
+ * @param startPos Starting position in `text`.
85
+ * @param n Number of characters (code units) to consume.
86
+ * @returns New position in `text` after consuming `n` characters.
87
+ */
88
+ export declare function advanceByChars(text: string, startPos: number, n: number): number;
89
+ /**
90
+ * Return the position in `text` after advancing past `n` alphanumeric chars.
91
+ *
92
+ * Moves through the text one character at a time, counting only alphanumeric
93
+ * characters. XML/HTML tags (`<...>`) are skipped entirely — their content is
94
+ * not counted against the budget, so the returned span includes the full tag.
95
+ * Other non-alphanumeric characters (spaces, punctuation) are also passed over
96
+ * without decrementing the budget.
97
+ *
98
+ * After the `n` alnum chars are consumed, advances further past any
99
+ * immediately following punctuation (e.g. the `,` in `"questions,"` or the `.`
100
+ * in `"done."`), stopping before the next space, alnum char, or XML tag.
101
+ *
102
+ * @param text The source text to scan.
103
+ * @param startPos Starting position in `text`.
104
+ * @param n Number of alphanumeric characters (code units) to consume.
105
+ * @returns New position in `text` after consuming `n` alnum chars and
106
+ * trailing punctuation.
107
+ */
108
+ export declare function advanceByAlnums(text: string, startPos: number, n: number): number;
109
+ //# sourceMappingURL=alnum_utils.d.ts.map
@@ -0,0 +1,262 @@
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/utils/text/alnum_utils.py
6
+ /**
7
+ * Shared alphanumeric utilities for text normalization and cursor advancement.
8
+ *
9
+ * Positions and counts are UTF-16 code units, as JavaScript string indices
10
+ * are (upstream counts code points). Every count produced here (`alnumOnly`
11
+ * lengths) and every count consumed (`advanceByAlnums`, `advanceByChars`)
12
+ * uses the same unit, so they stay in step; they only differ from upstream
13
+ * for characters outside the Basic Multilingual Plane.
14
+ */
15
+ import { stripCompleteMarkup } from "./markup_utils.js";
16
+ //
17
+ // Python `str` predicates, for one character (code point).
18
+ //
19
+ const ALNUM_RE = /^[\p{L}\p{N}]$/u;
20
+ const ALPHA_RE = /^\p{L}$/u;
21
+ const PUNCT_RE = /^\p{P}$/u;
22
+ // Python's `str.isspace()` set (differs from JS `\s` on \x1c-\x1f, \x85 and \ufeff).
23
+ // The \x1c-\x1f separators are checked by code in `isSpace`.
24
+ const SPACE_RE = /^[\t\n\v\f\r \x85\xa0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000]$/;
25
+ /** Python's `ch.isalnum()` for a single character. */
26
+ export function isAlnum(ch) {
27
+ return ch !== undefined && ALNUM_RE.test(ch);
28
+ }
29
+ /** Python's `ch.isalpha()` for a single character. */
30
+ export function isAlpha(ch) {
31
+ return ch !== undefined && ALPHA_RE.test(ch);
32
+ }
33
+ /** Python's `ch.isspace()` for a single character. */
34
+ export function isSpace(ch) {
35
+ if (ch === undefined)
36
+ return false;
37
+ const code = ch.charCodeAt(0);
38
+ return (ch.length === 1 && code >= 0x1c && code <= 0x1f) || SPACE_RE.test(ch);
39
+ }
40
+ /** Python's `unicodedata.category(ch).startswith("P")` for a single character. */
41
+ export function isPunctuation(ch) {
42
+ return ch !== undefined && PUNCT_RE.test(ch);
43
+ }
44
+ /** The character (code point) at code unit offset `pos` of `text`. */
45
+ export function charAt(text, pos) {
46
+ const cp = text.codePointAt(pos);
47
+ return cp === undefined ? "" : String.fromCodePoint(cp);
48
+ }
49
+ /**
50
+ * Remove punctuation only at the very end of `text`.
51
+ *
52
+ * @param text Input text to trim.
53
+ * @returns `text` with any trailing run of Unicode punctuation characters removed.
54
+ */
55
+ export function stripTrailingPunctuation(text) {
56
+ return text.replace(/\p{P}+$/u, "");
57
+ }
58
+ /**
59
+ * Typographic punctuation variants mapped to their ASCII equivalents.
60
+ *
61
+ * LLMs emit the typographic forms and TTS services may report the ASCII ones
62
+ * in word-timestamp events (or the reverse). Every entry is a single
63
+ * character mapped to a single character, which is what lets
64
+ * `foldForMatching` keep its 1:1 length contract.
65
+ */
66
+ const TYPOGRAPHIC_FOLD = {
67
+ "‘": "'", // ‘ LEFT SINGLE QUOTATION MARK
68
+ "’": "'", // ’ RIGHT SINGLE QUOTATION MARK
69
+ ʼ: "'", // ʼ MODIFIER LETTER APOSTROPHE
70
+ "“": '"', // “ LEFT DOUBLE QUOTATION MARK
71
+ "”": '"', // ” RIGHT DOUBLE QUOTATION MARK
72
+ "–": "-", // – EN DASH
73
+ "—": "-", // — EM DASH
74
+ };
75
+ const TYPOGRAPHIC_FOLD_RE = /[\u2018\u2019\u02bc\u201c\u201d\u2013\u2014]/g;
76
+ /**
77
+ * Replace typographic punctuation variants with their ASCII equivalents.
78
+ *
79
+ * @param text Input text to fold.
80
+ * @returns `text` with typographic quotes and dashes replaced by ASCII; same
81
+ * length as `text`.
82
+ */
83
+ export function foldTypography(text) {
84
+ return text.replace(TYPOGRAPHIC_FOLD_RE, (ch) => TYPOGRAPHIC_FOLD[ch] ?? ch);
85
+ }
86
+ /**
87
+ * Lowercase `char`, reduced to its base letter if it carries a combining accent.
88
+ *
89
+ * NFD decomposes an accented character into a base letter plus a combining
90
+ * mark (e.g. `é` -> `e` + `◌́`, category `Mn`); dropping the mark keeps only
91
+ * the base letter. Always returns exactly one character of the same length,
92
+ * so callers can rely on a 1:1 length mapping with the input.
93
+ */
94
+ function foldAccentedChar(char) {
95
+ const nfd = [...char.normalize("NFD")];
96
+ let folded;
97
+ if (nfd.length >= 2 && /^\p{Mn}$/u.test(nfd[1])) {
98
+ folded = nfd[0].toLowerCase();
99
+ }
100
+ else {
101
+ folded = char.toLowerCase();
102
+ }
103
+ // A few lowercase mappings change length (they do in Python too); keep the
104
+ // 1:1 length contract by leaving such a character as it is.
105
+ return folded.length === char.length ? folded : char;
106
+ }
107
+ /**
108
+ * Fold away surface variation between two spellings of the same text, 1:1.
109
+ *
110
+ * Unlike `alnumOnly`, this never removes or merges characters -- punctuation,
111
+ * spaces, and markup are passed through unchanged, and each output character
112
+ * corresponds to exactly the same-index input character. A raw offset
113
+ * computed against the folded text therefore applies unchanged to the
114
+ * original, so callers can use it as a drop-in transform before a
115
+ * position-based literal comparison, without the risk of a fully-normalized
116
+ * (whitespace/punctuation-stripped) comparison matching across a boundary
117
+ * that wasn't already a candidate in the untransformed comparison.
118
+ *
119
+ * Folds case, accents, and typographic punctuation (`’` -> `'`,
120
+ * `–` -> `-`) -- the variations a TTS service may introduce between the
121
+ * text it was sent and the words it reports back. Deliberately narrow: each
122
+ * folded character is listed in `TYPOGRAPHIC_FOLD`, rather than applying a
123
+ * blanket Unicode compatibility normalization, which would silently fold
124
+ * thousands of characters (CJK compatibility ideographs, halfwidth katakana,
125
+ * math alphanumerics) that no service is known to substitute.
126
+ *
127
+ * @param text Input text to fold.
128
+ * @returns `text` with those variations folded away; same length as `text`.
129
+ */
130
+ export function foldForMatching(text) {
131
+ let folded = "";
132
+ for (const ch of text) {
133
+ folded += isAlpha(ch) ? foldAccentedChar(ch) : ch;
134
+ }
135
+ return foldTypography(folded);
136
+ }
137
+ /**
138
+ * Strip XML/HTML tags then keep only lowercase alphanumeric characters.
139
+ *
140
+ * Accented letters (e.g. ã, é) are reduced to their base letter so TTS output
141
+ * can be matched against LLM text even when the provider strips diacritics.
142
+ * Non-Latin scripts (CJK, Hangul) are kept as-is — each original character
143
+ * contributes exactly one char to the result, keeping normalized length in
144
+ * sync with raw alnum counts used by `advanceByAlnums`.
145
+ *
146
+ * @param text Input text to reduce.
147
+ * @returns Lowercase alphanumeric-only string with tags stripped.
148
+ */
149
+ export function alnumOnly(text) {
150
+ text = stripCompleteMarkup(text);
151
+ let result = "";
152
+ for (const char of text) {
153
+ // Ignore punctuation, spaces, emojis, etc.
154
+ // Keep only letters and numbers.
155
+ if (!isAlnum(char)) {
156
+ continue;
157
+ }
158
+ if (isAlpha(char)) {
159
+ // Letters, including CJK and Hangul: fold accents, a no-op for scripts
160
+ // that have none.
161
+ result += foldAccentedChar(char);
162
+ }
163
+ else {
164
+ // Digits and other alnum-but-not-alphabetic characters: no case or
165
+ // accent to fold, so keep as-is (lowercase conversion is a no-op).
166
+ const lower = char.toLowerCase();
167
+ result += lower.length === char.length ? lower : char;
168
+ }
169
+ }
170
+ return result;
171
+ }
172
+ /**
173
+ * Return true if `text` holds anything alphanumeric once markup is stripped.
174
+ *
175
+ * The predicate form of `alnumOnly`, for the question the callers actually
176
+ * ask: is there anything left to speak here? A tag's letters do not count --
177
+ * `"<break/>"` is empty by this measure.
178
+ */
179
+ export function hasAlnum(text) {
180
+ return alnumOnly(text).length > 0;
181
+ }
182
+ /**
183
+ * Return the position in `text` after advancing past `n` characters.
184
+ *
185
+ * XML/HTML tags (`<...>`) are crossed without counting against the budget, so
186
+ * the span returned includes any tag met on the way. Everything else counts,
187
+ * punctuation and spaces included.
188
+ *
189
+ * This keeps a cursor in step with one walking the same content written
190
+ * without the tags: both move over the same characters, so neither reaches
191
+ * past what the other has. Where the budget is a count of letters and digits
192
+ * instead, use `advanceByAlnums`.
193
+ *
194
+ * @param text The source text to scan.
195
+ * @param startPos Starting position in `text`.
196
+ * @param n Number of characters (code units) to consume.
197
+ * @returns New position in `text` after consuming `n` characters.
198
+ */
199
+ export function advanceByChars(text, startPos, n) {
200
+ let pos = startPos;
201
+ let count = 0;
202
+ while (pos < text.length && count < n) {
203
+ if (text[pos] === "<") {
204
+ const end = text.indexOf(">", pos);
205
+ pos = end !== -1 ? end + 1 : pos + 1;
206
+ }
207
+ else {
208
+ const len = charAt(text, pos).length;
209
+ count += len;
210
+ pos += len;
211
+ }
212
+ }
213
+ return pos;
214
+ }
215
+ /**
216
+ * Return the position in `text` after advancing past `n` alphanumeric chars.
217
+ *
218
+ * Moves through the text one character at a time, counting only alphanumeric
219
+ * characters. XML/HTML tags (`<...>`) are skipped entirely — their content is
220
+ * not counted against the budget, so the returned span includes the full tag.
221
+ * Other non-alphanumeric characters (spaces, punctuation) are also passed over
222
+ * without decrementing the budget.
223
+ *
224
+ * After the `n` alnum chars are consumed, advances further past any
225
+ * immediately following punctuation (e.g. the `,` in `"questions,"` or the `.`
226
+ * in `"done."`), stopping before the next space, alnum char, or XML tag.
227
+ *
228
+ * @param text The source text to scan.
229
+ * @param startPos Starting position in `text`.
230
+ * @param n Number of alphanumeric characters (code units) to consume.
231
+ * @returns New position in `text` after consuming `n` alnum chars and
232
+ * trailing punctuation.
233
+ */
234
+ export function advanceByAlnums(text, startPos, n) {
235
+ let pos = startPos;
236
+ let count = 0;
237
+ while (pos < text.length && count < n) {
238
+ if (text[pos] === "<") {
239
+ const end = text.indexOf(">", pos);
240
+ pos = end !== -1 ? end + 1 : pos + 1;
241
+ }
242
+ else {
243
+ const ch = charAt(text, pos);
244
+ if (isAlnum(ch)) {
245
+ count += ch.length;
246
+ }
247
+ pos += ch.length;
248
+ }
249
+ }
250
+ while (pos < text.length) {
251
+ if (text[pos] === "<") {
252
+ break;
253
+ }
254
+ const ch = charAt(text, pos);
255
+ if (isAlnum(ch) || isSpace(ch)) {
256
+ break;
257
+ }
258
+ pos += ch.length;
259
+ }
260
+ return pos;
261
+ }
262
+ //# sourceMappingURL=alnum_utils.js.map
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Built-in text types.
3
+ *
4
+ * `BACKCHANNEL` is a short acknowledgment the bot says while the user talks,
5
+ * such as "Mm-hmm.". Text can also have a type of its own, such as `"code"`.
6
+ */
7
+ export declare const TextType: {
8
+ readonly BACKCHANNEL: "backchannel";
9
+ readonly SENTENCE: "sentence";
10
+ readonly TOKEN: "token";
11
+ readonly WORD: "word";
12
+ };
13
+ export type TextType = (typeof TextType)[keyof typeof TextType];
14
+ export interface AggregationOptions {
15
+ /** The aggregated text content. */
16
+ text: string;
17
+ /**
18
+ * What the text represents: a `TextType` such as a sentence or a word, or a
19
+ * custom type such as `"code"`.
20
+ */
21
+ type: string;
22
+ }
23
+ /**
24
+ * Data class representing aggregated text and its type.
25
+ *
26
+ * An Aggregation object is created whenever a stream of text is aggregated by
27
+ * a text aggregator. It contains the aggregated text and a type saying what
28
+ * the text represents.
29
+ *
30
+ * - `text`: The aggregated text content.
31
+ * - `type`: What the text represents: a `TextType` such as a sentence or
32
+ * a word, or a custom type such as `"code"`.
33
+ */
34
+ export declare class Aggregation {
35
+ text: string;
36
+ type: string;
37
+ constructor(options: AggregationOptions);
38
+ /**
39
+ * Return a string representation of the aggregation.
40
+ *
41
+ * @returns A descriptive string showing the type and text of the aggregation.
42
+ */
43
+ toString(): string;
44
+ }
45
+ export interface BaseTextAggregatorOptions {
46
+ /**
47
+ * The aggregation strategy to use. SENTENCE buffers text until sentence
48
+ * boundaries are detected, TOKEN passes text through immediately, and WORD
49
+ * buffers until word boundaries.
50
+ */
51
+ aggregationType?: TextType;
52
+ /** Language code for sentence detection. */
53
+ language?: string | null;
54
+ }
55
+ /**
56
+ * Base class for text aggregators in the Pipecat framework.
57
+ *
58
+ * Text aggregators are usually used by the TTS service to aggregate LLM tokens
59
+ * and decide when the aggregated text should be pushed to the TTS service.
60
+ *
61
+ * Text aggregators can also be used to manipulate text while it's being
62
+ * aggregated (e.g. reasoning blocks can be removed).
63
+ *
64
+ * Subclasses must implement all abstract methods to define specific aggregation
65
+ * logic, text manipulation behavior, and state management for interruptions.
66
+ */
67
+ export declare abstract class BaseTextAggregator {
68
+ protected _aggregationType: TextType;
69
+ protected _language: string;
70
+ /**
71
+ * Initialize the base text aggregator.
72
+ *
73
+ * @throws Error If `aggregationType` is not a `TextType` (upstream: ValueError).
74
+ */
75
+ constructor(options?: BaseTextAggregatorOptions);
76
+ /** The normalized language code used for sentence detection. */
77
+ get language(): string;
78
+ /**
79
+ * Select a sentence tokenizer without discarding buffered text.
80
+ *
81
+ * @param language Language code. Call between generations to keep one
82
+ * language for all text within a generation.
83
+ */
84
+ setLanguage(language: string | null): void;
85
+ /** The aggregation type for this aggregator. */
86
+ get aggregationType(): TextType;
87
+ /**
88
+ * The currently aggregated text.
89
+ *
90
+ * Subclasses must implement this property to return the text that has
91
+ * been accumulated so far in their internal buffer or storage.
92
+ */
93
+ abstract get text(): Aggregation;
94
+ /**
95
+ * Aggregate the specified text and yield completed aggregations.
96
+ *
97
+ * This method processes the input text character-by-character internally
98
+ * and yields Aggregation objects as they complete.
99
+ *
100
+ * Subclasses should implement their specific logic for:
101
+ *
102
+ * - How to process text character-by-character
103
+ * - When to consider the aggregated text ready for processing
104
+ * - What criteria determine text completion (e.g., sentence boundaries)
105
+ * - When a completion occurs, yield an Aggregation object containing the
106
+ * aggregated text (stripped of leading/trailing whitespace) and its type
107
+ *
108
+ * @param text The text to be aggregated.
109
+ * @returns An async iterable of Aggregation objects as they complete. Each
110
+ * Aggregation consists of the aggregated text (stripped of
111
+ * leading/trailing whitespace) and a type saying what it represents: a
112
+ * `TextType` such as a sentence or a word, or a custom type such as
113
+ * `"code"`.
114
+ */
115
+ abstract aggregate(text: string): AsyncIterable<Aggregation>;
116
+ /**
117
+ * Flush any pending aggregation.
118
+ *
119
+ * This method is called at the end of a stream (e.g., when receiving
120
+ * LLMFullResponseEndFrame) to return any text that was buffered.
121
+ *
122
+ * @returns An Aggregation object if there is pending text, or null if there
123
+ * is no pending text.
124
+ */
125
+ abstract flush(): Promise<Aggregation | null>;
126
+ /**
127
+ * Handle interruptions in the text aggregation process.
128
+ *
129
+ * When an interruption occurs it is possible that we might want to discard
130
+ * the aggregated text or do some internal modifications to the aggregated text.
131
+ *
132
+ * Subclasses should implement this method to define how they respond to
133
+ * interruptions, such as clearing buffers, resetting state, or preserving
134
+ * partial content.
135
+ */
136
+ abstract handleInterruption(): Promise<void>;
137
+ /**
138
+ * Clear the internally aggregated text and reset to initial state.
139
+ *
140
+ * Subclasses should implement this method to return the aggregator to its
141
+ * initial state, discarding any previously accumulated text content and
142
+ * resetting any internal tracking variables.
143
+ */
144
+ abstract reset(): Promise<void>;
145
+ }
146
+ //# sourceMappingURL=base_text_aggregator.d.ts.map
@@ -0,0 +1,102 @@
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/utils/text/base_text_aggregator.py
6
+ /**
7
+ * Base text aggregator interface for Pipecat text processing.
8
+ *
9
+ * This module defines the abstract base class for text aggregators that
10
+ * accumulate and process text tokens, typically used by TTS services to
11
+ * determine when aggregated text should be sent for speech synthesis.
12
+ *
13
+ * The deprecated `AggregationType` alias of `TextType` is not ported.
14
+ */
15
+ import { resolveSentenceTokenizerLanguage } from "../string.js";
16
+ /**
17
+ * Built-in text types.
18
+ *
19
+ * `BACKCHANNEL` is a short acknowledgment the bot says while the user talks,
20
+ * such as "Mm-hmm.". Text can also have a type of its own, such as `"code"`.
21
+ */
22
+ export const TextType = {
23
+ BACKCHANNEL: "backchannel",
24
+ SENTENCE: "sentence",
25
+ TOKEN: "token",
26
+ WORD: "word",
27
+ };
28
+ const TEXT_TYPE_VALUES = new Set(Object.values(TextType));
29
+ /**
30
+ * Data class representing aggregated text and its type.
31
+ *
32
+ * An Aggregation object is created whenever a stream of text is aggregated by
33
+ * a text aggregator. It contains the aggregated text and a type saying what
34
+ * the text represents.
35
+ *
36
+ * - `text`: The aggregated text content.
37
+ * - `type`: What the text represents: a `TextType` such as a sentence or
38
+ * a word, or a custom type such as `"code"`.
39
+ */
40
+ export class Aggregation {
41
+ text;
42
+ type;
43
+ constructor(options) {
44
+ this.text = options.text;
45
+ this.type = options.type;
46
+ }
47
+ /**
48
+ * Return a string representation of the aggregation.
49
+ *
50
+ * @returns A descriptive string showing the type and text of the aggregation.
51
+ */
52
+ toString() {
53
+ return `Aggregation by ${this.type}: ${this.text}`;
54
+ }
55
+ }
56
+ /**
57
+ * Base class for text aggregators in the Pipecat framework.
58
+ *
59
+ * Text aggregators are usually used by the TTS service to aggregate LLM tokens
60
+ * and decide when the aggregated text should be pushed to the TTS service.
61
+ *
62
+ * Text aggregators can also be used to manipulate text while it's being
63
+ * aggregated (e.g. reasoning blocks can be removed).
64
+ *
65
+ * Subclasses must implement all abstract methods to define specific aggregation
66
+ * logic, text manipulation behavior, and state management for interruptions.
67
+ */
68
+ export class BaseTextAggregator {
69
+ _aggregationType;
70
+ _language;
71
+ /**
72
+ * Initialize the base text aggregator.
73
+ *
74
+ * @throws Error If `aggregationType` is not a `TextType` (upstream: ValueError).
75
+ */
76
+ constructor(options = {}) {
77
+ const aggregationType = options.aggregationType ?? TextType.SENTENCE;
78
+ if (!TEXT_TYPE_VALUES.has(aggregationType)) {
79
+ throw new Error(`'${aggregationType}' is not a valid TextType`);
80
+ }
81
+ this._aggregationType = aggregationType;
82
+ this._language = resolveSentenceTokenizerLanguage(options.language ?? null);
83
+ }
84
+ /** The normalized language code used for sentence detection. */
85
+ get language() {
86
+ return this._language;
87
+ }
88
+ /**
89
+ * Select a sentence tokenizer without discarding buffered text.
90
+ *
91
+ * @param language Language code. Call between generations to keep one
92
+ * language for all text within a generation.
93
+ */
94
+ setLanguage(language) {
95
+ this._language = resolveSentenceTokenizerLanguage(language);
96
+ }
97
+ /** The aggregation type for this aggregator. */
98
+ get aggregationType() {
99
+ return this._aggregationType;
100
+ }
101
+ }
102
+ //# sourceMappingURL=base_text_aggregator.js.map
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Base text filter interface for Pipecat text processing.
3
+ *
4
+ * This module defines the abstract base class for text filters that can
5
+ * modify text content in the processing pipeline, including support for
6
+ * settings updates and interruption handling.
7
+ */
8
+ /**
9
+ * Abstract base class for text filters in the Pipecat framework.
10
+ *
11
+ * Text filters are responsible for modifying text content as it flows through
12
+ * the processing pipeline. They support dynamic settings updates and can
13
+ * handle interruptions to reset their internal state.
14
+ *
15
+ * Subclasses must implement all abstract methods to define specific filtering
16
+ * behavior, settings management, and interruption handling logic.
17
+ */
18
+ export declare abstract class BaseTextFilter {
19
+ constructor(_options?: object);
20
+ /**
21
+ * Update the filter's configuration settings.
22
+ *
23
+ * Subclasses should implement this method to handle dynamic configuration
24
+ * updates during runtime, updating internal state as needed.
25
+ *
26
+ * @param settings Dictionary of setting names to values for configuration.
27
+ */
28
+ updateSettings(_settings: Readonly<Record<string, unknown>>): Promise<void>;
29
+ /**
30
+ * Apply filtering transformations to the input text.
31
+ *
32
+ * Subclasses must implement this method to define the specific text
33
+ * transformations that should be applied to the input.
34
+ *
35
+ * @param text The input text to be filtered.
36
+ * @returns The filtered text after applying transformations.
37
+ */
38
+ abstract filter(text: string): Promise<string>;
39
+ /**
40
+ * Handle interruption events in the processing pipeline.
41
+ *
42
+ * Subclasses should implement this method to reset internal state, clear
43
+ * buffers, or perform other cleanup when an interruption occurs.
44
+ */
45
+ handleInterruption(): Promise<void>;
46
+ /**
47
+ * Reset the filter state after an interruption has been handled.
48
+ *
49
+ * Subclasses should implement this method to restore the filter to normal
50
+ * operation after an interruption has been processed and resolved.
51
+ */
52
+ resetInterruption(): Promise<void>;
53
+ }
54
+ //# sourceMappingURL=base_text_filter.d.ts.map