@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,147 @@
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/skip_tags_aggregator.py
6
+ /**
7
+ * Skip tags aggregator for preventing sentence boundaries within tagged content.
8
+ *
9
+ * This module provides a text aggregator that prevents end-of-sentence matching
10
+ * between specified start/end tag pairs, ensuring that tagged content is processed
11
+ * as a unit regardless of internal punctuation.
12
+ */
13
+ import { longestTrailingPartialMatch, parseStartEndTags } from "../string.js";
14
+ import { Aggregation, TextType } from "./base_text_aggregator.js";
15
+ import { SimpleTextAggregator, } from "./simple_text_aggregator.js";
16
+ /**
17
+ * Aggregator that prevents end of sentence matching between start/end tags.
18
+ *
19
+ * This aggregator buffers text until it finds an end of sentence or a start
20
+ * tag. If a start tag is found the aggregator will keep aggregating text
21
+ * unconditionally until the corresponding end tag is found. It's particularly
22
+ * useful for processing content with custom delimiters that should prevent
23
+ * text from being considered for end of sentence matching.
24
+ *
25
+ * The aggregator ensures that tags spanning multiple text chunks are correctly
26
+ * identified and that content within tags is never split at sentence boundaries.
27
+ */
28
+ export class SkipTagsAggregator extends SimpleTextAggregator {
29
+ _tags;
30
+ _currentTag;
31
+ _currentTagIndex;
32
+ /**
33
+ * Initialize the skip tags aggregator.
34
+ *
35
+ * @param options.tags Tag pairs that should prevent sentence boundary detection.
36
+ * Other options are passed to SimpleTextAggregator (e.g. aggregationType).
37
+ */
38
+ constructor(options) {
39
+ super(options);
40
+ this._tags = options.tags;
41
+ this._currentTag = null;
42
+ this._currentTagIndex = 0;
43
+ }
44
+ /**
45
+ * Aggregate text while respecting tag boundaries.
46
+ *
47
+ * Processes the input text character-by-character, updates tag state, and
48
+ * uses the parent's lookahead logic for sentence detection when not
49
+ * inside tags.
50
+ *
51
+ * In TOKEN mode, text is passed through immediately unless we're inside
52
+ * a tag, in which case we buffer until the closing tag is found. Text
53
+ * ending in a partial start tag (e.g. `<spe` of `<spell>`) is held
54
+ * back until a later chunk determines whether it begins a tag, so a tag
55
+ * split across chunks is still recognized.
56
+ *
57
+ * @param text Text to aggregate.
58
+ * @returns Aggregation objects containing text up to a sentence boundary,
59
+ * marked as SENTENCE type (or TOKEN type in TOKEN mode).
60
+ */
61
+ async *aggregate(text) {
62
+ if (this._aggregationType === TextType.TOKEN) {
63
+ // In TOKEN mode, process chars for tag tracking but yield the
64
+ // full input as a single token when not inside a tag.
65
+ for (const char of text) {
66
+ this._text += char;
67
+ // Update tag state
68
+ [this._currentTag, this._currentTagIndex] = parseStartEndTags(this._text, this._tags, this._currentTag, this._currentTagIndex);
69
+ }
70
+ // After processing all chars: if not inside a tag, yield accumulated text.
71
+ // A trailing partial start tag (e.g. "<spe" of "<spell>") is held back
72
+ // so a tag split across chunks isn't leaked as plain text; it's retained
73
+ // in the buffer to be completed by the next chunk. The tag-scan index
74
+ // resets to 0 so the retained partial tag is rescanned once complete.
75
+ if (!this._currentTag && this._text) {
76
+ const heldBack = longestTrailingPartialMatch(this._text, this._tags.map(([start]) => start));
77
+ const yieldLength = this._text.length - heldBack;
78
+ if (yieldLength > 0) {
79
+ const content = this._text.slice(0, yieldLength);
80
+ this._text = this._text.slice(yieldLength);
81
+ this._currentTagIndex = 0;
82
+ yield new Aggregation({ text: content, type: TextType.TOKEN });
83
+ }
84
+ }
85
+ return;
86
+ }
87
+ // Process text character by character
88
+ for (const char of text) {
89
+ this._text += char;
90
+ // Update tag state
91
+ [this._currentTag, this._currentTagIndex] = parseStartEndTags(this._text, this._tags, this._currentTag, this._currentTagIndex);
92
+ // If inside tags, don't check for sentences
93
+ if (this._currentTag) {
94
+ continue;
95
+ }
96
+ // Otherwise, use parent's lookahead logic for sentence detection
97
+ const result = await super._checkSentenceWithLookahead(char);
98
+ if (result) {
99
+ yield result;
100
+ }
101
+ }
102
+ }
103
+ /**
104
+ * Flush any remaining text in the buffer.
105
+ *
106
+ * In SENTENCE mode, returns the buffered text as-is: tags are
107
+ * pass-through markers, so content is spoken whether or not a start
108
+ * tag's closing tag ever arrived. In TOKEN mode, returns any text
109
+ * still buffered behind an unclosed tag instead of discarding it.
110
+ *
111
+ * @returns Any remaining text, or null if the buffer is empty.
112
+ */
113
+ async flush() {
114
+ if (this._aggregationType === TextType.TOKEN) {
115
+ if (this._text) {
116
+ const result = this._text;
117
+ await this.reset();
118
+ return new Aggregation({ text: result, type: TextType.TOKEN });
119
+ }
120
+ return null;
121
+ }
122
+ return await super.flush();
123
+ }
124
+ /**
125
+ * Handle interruptions by clearing the buffer and tag state.
126
+ *
127
+ * Called when an interruption occurs in the processing pipeline,
128
+ * to reset the state and discard any partially aggregated text.
129
+ */
130
+ async handleInterruption() {
131
+ await super.handleInterruption();
132
+ this._currentTag = null;
133
+ this._currentTagIndex = 0;
134
+ }
135
+ /**
136
+ * Clear the internally aggregated text and tag state.
137
+ *
138
+ * Resets the aggregator to its initial state, discarding any
139
+ * buffered text.
140
+ */
141
+ async reset() {
142
+ await super.reset();
143
+ this._currentTag = null;
144
+ this._currentTagIndex = 0;
145
+ }
146
+ }
147
+ //# sourceMappingURL=skip_tags_aggregator.js.map
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Replace words with a TTS service's pronunciation markup.
3
+ *
4
+ * Applications usually reach this through a service's
5
+ * `TTSService.pronunciationTransformIpa` static method, which supplies the
6
+ * service's own formatter.
7
+ */
8
+ import type { TextType } from "../../../frames/frames.ts";
9
+ /** Turns `(word, ipa)` into the text to send, or null when it cannot. */
10
+ export type PronunciationFormatter = (word: string, ipa: string) => string | null;
11
+ /** Returns the text to send in place of a match. */
12
+ export type PronunciationReplacer = (match: RegExpExecArray) => string;
13
+ export interface PronunciationTransform {
14
+ (text: string, textType: string | TextType): Promise<string>;
15
+ }
16
+ /**
17
+ * A text transform that replaces words with a service's pronunciation markup.
18
+ *
19
+ * TTS services recognize it among their `textTransforms` and skip it while
20
+ * they cannot read pronunciation markup (see `TTSService.supportsPronunciations`),
21
+ * so the words are spoken as written.
22
+ */
23
+ export declare class PronunciationTransform {
24
+ protected _pattern: RegExp | null;
25
+ protected _replace: PronunciationReplacer;
26
+ /**
27
+ * Initialize the transform.
28
+ *
29
+ * @param pattern Matches the words to replace, or null when there are none.
30
+ * @param replace Returns the text to send in place of a match.
31
+ */
32
+ constructor(pattern: RegExp | null, replace: PronunciationReplacer);
33
+ /**
34
+ * Replace every matched word in `text`.
35
+ *
36
+ * Python's `__call__`; calling the instance runs this.
37
+ *
38
+ * @param text The text about to be sent to the service.
39
+ * @param _textType The text type of the text (unused).
40
+ * @returns The text with each matched word replaced.
41
+ */
42
+ transform(text: string, _textType: string | TextType): string;
43
+ }
44
+ /**
45
+ * Return a transform that replaces each word with its formatted pronunciation.
46
+ *
47
+ * Words match whole and case-insensitively, longest first, and never as part
48
+ * of a longer or hyphenated word. The matched text is passed to the formatter,
49
+ * so markup that keeps the word (such as an SSML `<phoneme>` tag) keeps it as
50
+ * written.
51
+ *
52
+ * Every pronunciation is formatted once here, so one the service cannot use
53
+ * is reported when the transform is built rather than while speaking. Those
54
+ * words are left out and spoken as written.
55
+ *
56
+ * @param pronunciations Word to IPA, e.g. `{ Metformin: "mɛtˈfɔɹmɪn" }`.
57
+ * @param formatPronunciation Turns `(word, ipa)` into the text to send, or
58
+ * null when it cannot.
59
+ * @param options.serviceName Name used in the warning for unusable pronunciations.
60
+ * @returns A transform to register with `textTransforms`.
61
+ */
62
+ export declare function pronunciationTransform(pronunciations: Readonly<Record<string, string>>, formatPronunciation: PronunciationFormatter, options?: {
63
+ serviceName?: string;
64
+ }): PronunciationTransform;
65
+ //# sourceMappingURL=pronunciations.d.ts.map
@@ -0,0 +1,111 @@
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/transforms/pronunciations.py
6
+ import { logger } from "../../logger.js";
7
+ /**
8
+ * A text transform that replaces words with a service's pronunciation markup.
9
+ *
10
+ * TTS services recognize it among their `textTransforms` and skip it while
11
+ * they cannot read pronunciation markup (see `TTSService.supportsPronunciations`),
12
+ * so the words are spoken as written.
13
+ */
14
+ // biome-ignore lint/suspicious/noUnsafeDeclarationMerging: adds Python's `__call__` signature to the class.
15
+ export class PronunciationTransform {
16
+ _pattern;
17
+ _replace;
18
+ /**
19
+ * Initialize the transform.
20
+ *
21
+ * @param pattern Matches the words to replace, or null when there are none.
22
+ * @param replace Returns the text to send in place of a match.
23
+ */
24
+ constructor(pattern, replace) {
25
+ const call = async (text, textType) => self.transform(text, textType);
26
+ const self = Object.setPrototypeOf(call, new.target.prototype);
27
+ self._pattern = pattern;
28
+ self._replace = replace;
29
+ // biome-ignore lint/correctness/noConstructorReturn: returning the callable is the point (see above).
30
+ return self;
31
+ }
32
+ /**
33
+ * Replace every matched word in `text`.
34
+ *
35
+ * Python's `__call__`; calling the instance runs this.
36
+ *
37
+ * @param text The text about to be sent to the service.
38
+ * @param _textType The text type of the text (unused).
39
+ * @returns The text with each matched word replaced.
40
+ */
41
+ transform(text, _textType) {
42
+ const pattern = this._pattern;
43
+ if (!pattern)
44
+ return text;
45
+ pattern.lastIndex = 0;
46
+ return text.replace(pattern, (...args) => {
47
+ // `replace` passes (match, ...groups, offset, input); rebuild an exec array.
48
+ const match = [args[0]];
49
+ return this._replace(match);
50
+ });
51
+ }
52
+ }
53
+ /** Python's `re.escape` for a JS (`u`-flag) regular expression. */
54
+ function escapeRegex(text) {
55
+ return text.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&");
56
+ }
57
+ /**
58
+ * Return a transform that replaces each word with its formatted pronunciation.
59
+ *
60
+ * Words match whole and case-insensitively, longest first, and never as part
61
+ * of a longer or hyphenated word. The matched text is passed to the formatter,
62
+ * so markup that keeps the word (such as an SSML `<phoneme>` tag) keeps it as
63
+ * written.
64
+ *
65
+ * Every pronunciation is formatted once here, so one the service cannot use
66
+ * is reported when the transform is built rather than while speaking. Those
67
+ * words are left out and spoken as written.
68
+ *
69
+ * @param pronunciations Word to IPA, e.g. `{ Metformin: "mɛtˈfɔɹmɪn" }`.
70
+ * @param formatPronunciation Turns `(word, ipa)` into the text to send, or
71
+ * null when it cannot.
72
+ * @param options.serviceName Name used in the warning for unusable pronunciations.
73
+ * @returns A transform to register with `textTransforms`.
74
+ */
75
+ export function pronunciationTransform(pronunciations, formatPronunciation, options = {}) {
76
+ const serviceName = options.serviceName ?? "TTS service";
77
+ const phonemes = new Map();
78
+ const unusable = [];
79
+ for (const [rawWord, value] of Object.entries(pronunciations)) {
80
+ const word = rawWord.trim();
81
+ if (!word)
82
+ continue;
83
+ if (formatPronunciation(word, value) === null) {
84
+ unusable.push(word);
85
+ }
86
+ else {
87
+ phonemes.set(word.toLowerCase(), value);
88
+ }
89
+ }
90
+ if (unusable.length > 0) {
91
+ logger.warning(`${serviceName} cannot use these IPA pronunciations, so they ` +
92
+ `will be spoken as written: ${unusable.join(", ")}`);
93
+ }
94
+ let pattern = null;
95
+ if (phonemes.size > 0) {
96
+ const words = [...phonemes.keys()].sort((a, b) => b.length - a.length);
97
+ // Python's Unicode `\w` is letters, digits and underscore.
98
+ pattern = new RegExp(`(?<![\\p{L}\\p{N}_-])(?:${words.map(escapeRegex).join("|")})(?![\\p{L}\\p{N}_-])`, "giu");
99
+ }
100
+ const replace = (match) => {
101
+ const word = match[0];
102
+ // Python indexes the dict directly; a case-folding mismatch would raise
103
+ // there, here the word is kept as written.
104
+ const ipa = phonemes.get(word.toLowerCase());
105
+ if (ipa === undefined)
106
+ return word;
107
+ return formatPronunciation(word, ipa) || word;
108
+ };
109
+ return new PronunciationTransform(pattern, replace);
110
+ }
111
+ //# sourceMappingURL=pronunciations.js.map
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Merge punctuation/space-only tokens into the preceding word.
3
+ *
4
+ * Some TTS services (e.g. Inworld) emit spaces and punctuation as separate
5
+ * word-timestamp tokens rather than attaching them to the adjacent word.
6
+ * This function collapses those tokens so downstream consumers always receive
7
+ * words with trailing punctuation already attached — identical to the format
8
+ * produced by ElevenLabs or Cartesia.
9
+ *
10
+ * A token is considered punct/space-only when its text contains no alphanumeric
11
+ * characters after stripping XML/HTML tags. Such tokens are appended to the
12
+ * preceding word's text and their timestamp is discarded (the preceding word's
13
+ * timestamp is kept). Leading punct/space tokens with no preceding word are
14
+ * silently discarded. Every output token is stripped of leading and trailing
15
+ * whitespace (spaces, tabs, newlines).
16
+ *
17
+ * @param wordTimes Raw list of `[word, timestamp]` pairs from the TTS service.
18
+ * @returns Merged list where every entry contains at least one alphanumeric
19
+ * character and has no leading or trailing whitespace.
20
+ *
21
+ * @example
22
+ * mergePunctTokens([["questions", 1.0], [", ", 1.2], ["explain", 1.4]]);
23
+ * // → [["questions,", 1.0], ["explain", 1.4]]
24
+ */
25
+ export declare function mergePunctTokens(wordTimes: readonly (readonly [string, number])[]): [string, number][];
26
+ //# sourceMappingURL=word_timestamp_utils.d.ts.map
@@ -0,0 +1,52 @@
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/word_timestamp_utils.py
6
+ /** Utilities for normalizing word-timestamp streams from TTS services. */
7
+ const TAG_RE = /<[^>]+>/g;
8
+ const ALNUM_RE = /[\p{L}\p{N}]/u;
9
+ /**
10
+ * Merge punctuation/space-only tokens into the preceding word.
11
+ *
12
+ * Some TTS services (e.g. Inworld) emit spaces and punctuation as separate
13
+ * word-timestamp tokens rather than attaching them to the adjacent word.
14
+ * This function collapses those tokens so downstream consumers always receive
15
+ * words with trailing punctuation already attached — identical to the format
16
+ * produced by ElevenLabs or Cartesia.
17
+ *
18
+ * A token is considered punct/space-only when its text contains no alphanumeric
19
+ * characters after stripping XML/HTML tags. Such tokens are appended to the
20
+ * preceding word's text and their timestamp is discarded (the preceding word's
21
+ * timestamp is kept). Leading punct/space tokens with no preceding word are
22
+ * silently discarded. Every output token is stripped of leading and trailing
23
+ * whitespace (spaces, tabs, newlines).
24
+ *
25
+ * @param wordTimes Raw list of `[word, timestamp]` pairs from the TTS service.
26
+ * @returns Merged list where every entry contains at least one alphanumeric
27
+ * character and has no leading or trailing whitespace.
28
+ *
29
+ * @example
30
+ * mergePunctTokens([["questions", 1.0], [", ", 1.2], ["explain", 1.4]]);
31
+ * // → [["questions,", 1.0], ["explain", 1.4]]
32
+ */
33
+ export function mergePunctTokens(wordTimes) {
34
+ const merged = [];
35
+ for (const [word, ts] of wordTimes) {
36
+ const stripped = word.replace(TAG_RE, "");
37
+ const hasAlnum = ALNUM_RE.test(stripped);
38
+ if (!hasAlnum) {
39
+ const last = merged[merged.length - 1];
40
+ if (last) {
41
+ const [prevWord, prevTs] = last;
42
+ merged[merged.length - 1] = [prevWord + word, prevTs];
43
+ }
44
+ // else: leading punct/space with no preceding word → discard
45
+ }
46
+ else {
47
+ merged.push([word, ts]);
48
+ }
49
+ }
50
+ return merged.map(([word, ts]) => [word.trim(), ts]);
51
+ }
52
+ //# sourceMappingURL=word_timestamp_utils.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Time utilities: ISO8601 formatting, nanosecond conversions, and
3
+ * human-readable time strings.
4
+ */
5
+ /** The current UTC time as an ISO8601 string with millisecond precision. */
6
+ export declare function timeNowIso8601(): string;
7
+ /** Convert seconds to (integer) nanoseconds. */
8
+ export declare function secondsToNanoseconds(seconds: number): number;
9
+ /** Convert nanoseconds to seconds. */
10
+ export declare function nanosecondsToSeconds(nanoseconds: number): number;
11
+ /** Convert nanoseconds to an "H:MM:SS.microseconds" string. */
12
+ export declare function nanosecondsToStr(nanoseconds: number): string;
13
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1,31 @@
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/time.py
6
+ /**
7
+ * Time utilities: ISO8601 formatting, nanosecond conversions, and
8
+ * human-readable time strings.
9
+ */
10
+ /** The current UTC time as an ISO8601 string with millisecond precision. */
11
+ export function timeNowIso8601() {
12
+ return new Date().toISOString().replace("Z", "+00:00");
13
+ }
14
+ /** Convert seconds to (integer) nanoseconds. */
15
+ export function secondsToNanoseconds(seconds) {
16
+ return Math.trunc(seconds * 1_000_000_000);
17
+ }
18
+ /** Convert nanoseconds to seconds. */
19
+ export function nanosecondsToSeconds(nanoseconds) {
20
+ return nanoseconds / 1_000_000_000;
21
+ }
22
+ /** Convert nanoseconds to an "H:MM:SS.microseconds" string. */
23
+ export function nanosecondsToStr(nanoseconds) {
24
+ const totalSeconds = nanosecondsToSeconds(nanoseconds);
25
+ const hours = Math.floor(totalSeconds / 3600);
26
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
27
+ const seconds = Math.floor(totalSeconds % 60);
28
+ const microseconds = Math.trunc((totalSeconds - Math.trunc(totalSeconds)) * 1_000_000);
29
+ return `${hours}:${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}.${String(microseconds).padStart(6, "0")}`;
30
+ }
31
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1,3 @@
1
+ /** OpenTelemetry tracing utilities for Pipecat. */
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,8 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/utils/tracing/__init__.py
6
+ /** OpenTelemetry tracing utilities for Pipecat. */
7
+ export {};
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Functions for adding attributes to OpenTelemetry spans.
3
+ *
4
+ * This module provides specialized functions for adding service-specific
5
+ * attributes to OpenTelemetry spans, following standard semantic conventions
6
+ * where applicable and Pipecat-specific conventions for additional context.
7
+ *
8
+ * Porting notes:
9
+ * - Upstream's keyword arguments become an options object after the span.
10
+ * Extra keyword arguments (upstream `**kwargs`) are any other keys of that
11
+ * object; they are used verbatim as attribute names.
12
+ * - Settings field names are camelCase in TS (`givenFields()`); they are
13
+ * converted back to snake_case for the `settings.*` attribute names so spans
14
+ * carry the same attribute names as upstream.
15
+ */
16
+ import type { ServiceSettings } from "../../services/settings.ts";
17
+ import type { OtelSpan } from "./setup.ts";
18
+ /** Convert a camelCase name back to upstream's snake_case (`voiceId` → `voice_id`). */
19
+ export declare function _camelToSnake(name: string): string;
20
+ /**
21
+ * Extract the standardized gen_ai.provider.name value from a service class name.
22
+ *
23
+ * Source:
24
+ * https://github.com/open-telemetry/semantic-conventions-genai/blob/main/docs/registry/attributes/gen-ai.md
25
+ *
26
+ * Uses standard OTel names where possible, with special case mappings for
27
+ * service names that don't follow the pattern.
28
+ *
29
+ * @param serviceName The service class name to extract provider name from.
30
+ * @returns The standardized gen_ai.provider.name value.
31
+ */
32
+ export declare function _getProviderNameFromServiceName(serviceName: string): string;
33
+ export interface TtsSpanAttributesOptions {
34
+ /** Name of the TTS service (e.g., "cartesia"). */
35
+ serviceName: string;
36
+ /** Model name/identifier. */
37
+ model: string;
38
+ /** Voice identifier. */
39
+ voiceId: string;
40
+ /** The text being synthesized. */
41
+ text?: string | null;
42
+ /** Service configuration settings. */
43
+ settings?: ServiceSettings | null;
44
+ /** Number of characters in the text. */
45
+ characterCount?: number | null;
46
+ /** Name of the operation (default: "tts"). */
47
+ operationName?: string;
48
+ /** Time to first byte in seconds. */
49
+ ttfb?: number | null;
50
+ /** Additional attributes to add. */
51
+ [key: string]: unknown;
52
+ }
53
+ /**
54
+ * Add TTS-specific attributes to a span.
55
+ *
56
+ * @param span The span to add attributes to.
57
+ * @param options The TTS attributes; any other key is added as an attribute.
58
+ */
59
+ export declare function addTtsSpanAttributes(span: OtelSpan, options: TtsSpanAttributesOptions): void;
60
+ export interface SttSpanAttributesOptions {
61
+ /** Name of the STT service (e.g., "deepgram"). */
62
+ serviceName: string;
63
+ /** Model name/identifier. */
64
+ model: string;
65
+ /** Name of the operation (default: "stt"). */
66
+ operationName?: string;
67
+ /** The transcribed text. */
68
+ transcript?: string | null;
69
+ /** Whether this is a final transcript. */
70
+ isFinal?: boolean | null;
71
+ /** Detected or configured language. */
72
+ language?: string | null;
73
+ /** User ID associated with the audio being transcribed. */
74
+ userId?: string | null;
75
+ /** Service configuration settings. */
76
+ settings?: ServiceSettings | null;
77
+ /** Whether voice activity detection is enabled. */
78
+ vadEnabled?: boolean;
79
+ /** Time to first byte in seconds. */
80
+ ttfb?: number | null;
81
+ /** Additional attributes to add. */
82
+ [key: string]: unknown;
83
+ }
84
+ /**
85
+ * Add STT-specific attributes to a span.
86
+ *
87
+ * @param span The span to add attributes to.
88
+ * @param options The STT attributes; any other key is added as an attribute.
89
+ */
90
+ export declare function addSttSpanAttributes(span: OtelSpan, options: SttSpanAttributesOptions): void;
91
+ export interface LlmSpanAttributesOptions {
92
+ /** Name of the LLM service (e.g., "openai"). */
93
+ serviceName: string;
94
+ /** Model name/identifier. */
95
+ model: string;
96
+ /** Whether streaming is enabled. */
97
+ stream?: boolean;
98
+ /** JSON-serialized messages. */
99
+ messages?: string | null;
100
+ /** Aggregated output text from the LLM. */
101
+ output?: string | null;
102
+ /** JSON-serialized tools configuration. */
103
+ tools?: string | null;
104
+ /** Number of tools available. */
105
+ toolCount?: number | null;
106
+ /** Tool selection configuration. */
107
+ toolChoice?: string | null;
108
+ /** System instructions. */
109
+ systemInstructions?: string | null;
110
+ /** Service parameters. */
111
+ parameters?: Record<string, unknown> | null;
112
+ /** Additional parameters. */
113
+ extraParameters?: Record<string, unknown> | null;
114
+ /** Time to first byte in seconds. */
115
+ ttfb?: number | null;
116
+ /** Additional attributes to add. */
117
+ [key: string]: unknown;
118
+ }
119
+ /**
120
+ * Add LLM-specific attributes to a span.
121
+ *
122
+ * @param span The span to add attributes to.
123
+ * @param options The LLM attributes; any other key is added as an attribute.
124
+ * Keys of `parameters` may be camelCase settings names; they are converted
125
+ * to snake_case attribute names.
126
+ */
127
+ export declare function addLlmSpanAttributes(span: OtelSpan, options: LlmSpanAttributesOptions): void;
128
+ export interface GeminiLiveSpanAttributesOptions {
129
+ /** Name of the service. */
130
+ serviceName: string;
131
+ /** Model name/identifier. */
132
+ model: string;
133
+ /** Name of the operation (setup, model_turn, tool_call, etc.). */
134
+ operationName: string;
135
+ /** Voice identifier used for output. */
136
+ voiceId?: string | null;
137
+ /** Language code for the session. */
138
+ language?: string | null;
139
+ /** Supported modalities (e.g., "AUDIO", "TEXT"). */
140
+ modalities?: string | null;
141
+ /** Service configuration settings. */
142
+ settings?: ServiceSettings | null;
143
+ /** Available tools/functions list. */
144
+ tools?: unknown[] | null;
145
+ /** JSON-serialized tools for detailed inspection. */
146
+ toolsSerialized?: string | null;
147
+ /** Transcription text. */
148
+ transcript?: string | null;
149
+ /** Whether transcript is input (true) or output (false). */
150
+ isInput?: boolean | null;
151
+ /** Text output from model. */
152
+ textOutput?: string | null;
153
+ /** Size of audio data in bytes. */
154
+ audioDataSize?: number | null;
155
+ /** Additional attributes to add. */
156
+ [key: string]: unknown;
157
+ }
158
+ /**
159
+ * Add Gemini Live specific attributes to a span.
160
+ *
161
+ * @param span The span to add attributes to.
162
+ * @param options The Gemini Live attributes; any other key is added as an attribute.
163
+ */
164
+ export declare function addGeminiLiveSpanAttributes(span: OtelSpan, options: GeminiLiveSpanAttributesOptions): void;
165
+ export interface OpenaiRealtimeSpanAttributesOptions {
166
+ /** Name of the service. */
167
+ serviceName: string;
168
+ /** Model name/identifier. */
169
+ model: string;
170
+ /** Name of the operation (setup, transcription, response, etc.). */
171
+ operationName: string;
172
+ /** Session configuration properties. */
173
+ sessionProperties?: Record<string, unknown> | null;
174
+ /** Transcription text. */
175
+ transcript?: string | null;
176
+ /** Whether transcript is input (true) or output (false). */
177
+ isInput?: boolean | null;
178
+ /** JSON-serialized context messages. */
179
+ contextMessages?: string | null;
180
+ /** Function calls being made. */
181
+ functionCalls?: unknown[] | null;
182
+ /** Available tools/functions list. */
183
+ tools?: unknown[] | null;
184
+ /** JSON-serialized tools for detailed inspection. */
185
+ toolsSerialized?: string | null;
186
+ /** Size of audio data in bytes. */
187
+ audioDataSize?: number | null;
188
+ /** Additional attributes to add. */
189
+ [key: string]: unknown;
190
+ }
191
+ /**
192
+ * Add OpenAI Realtime specific attributes to a span.
193
+ *
194
+ * @param span The span to add attributes to.
195
+ * @param options The OpenAI Realtime attributes; any other key is added as an attribute.
196
+ */
197
+ export declare function addOpenaiRealtimeSpanAttributes(span: OtelSpan, options: OpenaiRealtimeSpanAttributesOptions): void;
198
+ //# sourceMappingURL=service_attributes.d.ts.map