@pipedog/core 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (698) hide show
  1. package/LICENSE +25 -0
  2. package/NOTICE +9 -0
  3. package/dist/adapters/base_llm_adapter.d.ts +266 -0
  4. package/dist/adapters/base_llm_adapter.js +489 -0
  5. package/dist/adapters/index.d.ts +2 -0
  6. package/dist/adapters/index.js +8 -0
  7. package/dist/adapters/schemas/direct_function.d.ts +202 -0
  8. package/dist/adapters/schemas/direct_function.js +302 -0
  9. package/dist/adapters/schemas/function_schema.d.ts +67 -0
  10. package/dist/adapters/schemas/function_schema.js +72 -0
  11. package/dist/adapters/schemas/index.d.ts +2 -0
  12. package/dist/adapters/schemas/index.js +8 -0
  13. package/dist/adapters/schemas/tools_schema.d.ts +57 -0
  14. package/dist/adapters/schemas/tools_schema.js +79 -0
  15. package/dist/adapters/services/index.d.ts +2 -0
  16. package/dist/adapters/services/index.js +8 -0
  17. package/dist/adapters/services/open_ai_adapter.d.ts +147 -0
  18. package/dist/adapters/services/open_ai_adapter.js +250 -0
  19. package/dist/audio/dtmf/dtmf_data.d.ts +3 -0
  20. package/dist/audio/dtmf/dtmf_data.js +22 -0
  21. package/dist/audio/dtmf/index.d.ts +2 -0
  22. package/dist/audio/dtmf/index.js +8 -0
  23. package/dist/audio/dtmf/types.d.ts +31 -0
  24. package/dist/audio/dtmf/types.js +35 -0
  25. package/dist/audio/dtmf/utils.d.ts +13 -0
  26. package/dist/audio/dtmf/utils.js +62 -0
  27. package/dist/audio/filters/base_audio_filter.d.ts +51 -0
  28. package/dist/audio/filters/base_audio_filter.js +17 -0
  29. package/dist/audio/filters/index.d.ts +2 -0
  30. package/dist/audio/filters/index.js +8 -0
  31. package/dist/audio/index.d.ts +2 -0
  32. package/dist/audio/index.js +8 -0
  33. package/dist/audio/krisp_instance.d.ts +95 -0
  34. package/dist/audio/krisp_instance.js +229 -0
  35. package/dist/audio/mixers/base_audio_mixer.d.ts +56 -0
  36. package/dist/audio/mixers/base_audio_mixer.js +16 -0
  37. package/dist/audio/mixers/index.d.ts +2 -0
  38. package/dist/audio/mixers/index.js +8 -0
  39. package/dist/audio/resamplers/base_audio_resampler.d.ts +46 -0
  40. package/dist/audio/resamplers/base_audio_resampler.js +35 -0
  41. package/dist/audio/resamplers/index.d.ts +2 -0
  42. package/dist/audio/resamplers/index.js +8 -0
  43. package/dist/audio/resamplers/resampy_resampler.d.ts +10 -0
  44. package/dist/audio/resamplers/resampy_resampler.js +15 -0
  45. package/dist/audio/resamplers/soxr_resampler.d.ts +54 -0
  46. package/dist/audio/resamplers/soxr_resampler.js +69 -0
  47. package/dist/audio/resamplers/soxr_stream_resampler.d.ts +75 -0
  48. package/dist/audio/resamplers/soxr_stream_resampler.js +146 -0
  49. package/dist/audio/turn/base_turn_analyzer.d.ts +84 -0
  50. package/dist/audio/turn/base_turn_analyzer.js +61 -0
  51. package/dist/audio/turn/index.d.ts +2 -0
  52. package/dist/audio/turn/index.js +8 -0
  53. package/dist/audio/turn/smart_turn/_whisper_features.d.ts +30 -0
  54. package/dist/audio/turn/smart_turn/_whisper_features.js +225 -0
  55. package/dist/audio/turn/smart_turn/base_smart_turn.d.ts +94 -0
  56. package/dist/audio/turn/smart_turn/base_smart_turn.js +239 -0
  57. package/dist/audio/turn/smart_turn/local_smart_turn_v3.d.ts +76 -0
  58. package/dist/audio/turn/smart_turn/local_smart_turn_v3.js +143 -0
  59. package/dist/audio/utils.d.ts +224 -0
  60. package/dist/audio/utils.js +634 -0
  61. package/dist/audio/vad/data/index.d.ts +2 -0
  62. package/dist/audio/vad/data/index.js +8 -0
  63. package/dist/audio/vad/index.d.ts +2 -0
  64. package/dist/audio/vad/index.js +8 -0
  65. package/dist/audio/vad/vad_analyzer.d.ts +126 -0
  66. package/dist/audio/vad/vad_analyzer.js +211 -0
  67. package/dist/audio/vad/vad_controller.d.ts +143 -0
  68. package/dist/audio/vad/vad_controller.js +228 -0
  69. package/dist/audio/volume.d.ts +38 -0
  70. package/dist/audio/volume.js +75 -0
  71. package/dist/bus/adapters/base.d.ts +35 -0
  72. package/dist/bus/adapters/base.js +19 -0
  73. package/dist/bus/adapters/index.d.ts +10 -0
  74. package/dist/bus/adapters/index.js +15 -0
  75. package/dist/bus/adapters/llm_context_adapter.d.ts +36 -0
  76. package/dist/bus/adapters/llm_context_adapter.js +82 -0
  77. package/dist/bus/adapters/tools_schema_adapter.d.ts +25 -0
  78. package/dist/bus/adapters/tools_schema_adapter.js +70 -0
  79. package/dist/bus/bridge_processor.d.ts +111 -0
  80. package/dist/bus/bridge_processor.js +166 -0
  81. package/dist/bus/bus.d.ts +110 -0
  82. package/dist/bus/bus.js +200 -0
  83. package/dist/bus/index.d.ts +22 -0
  84. package/dist/bus/index.js +27 -0
  85. package/dist/bus/local/async_queue.d.ts +12 -0
  86. package/dist/bus/local/async_queue.js +21 -0
  87. package/dist/bus/local/index.d.ts +3 -0
  88. package/dist/bus/local/index.js +8 -0
  89. package/dist/bus/messages.d.ts +378 -0
  90. package/dist/bus/messages.js +357 -0
  91. package/dist/bus/network/index.d.ts +16 -0
  92. package/dist/bus/network/index.js +21 -0
  93. package/dist/bus/queue.d.ts +27 -0
  94. package/dist/bus/queue.js +51 -0
  95. package/dist/bus/serializers/base.d.ts +25 -0
  96. package/dist/bus/serializers/base.js +14 -0
  97. package/dist/bus/serializers/index.d.ts +9 -0
  98. package/dist/bus/serializers/index.js +14 -0
  99. package/dist/bus/serializers/json.d.ts +77 -0
  100. package/dist/bus/serializers/json.js +367 -0
  101. package/dist/bus/subscriber.d.ts +46 -0
  102. package/dist/bus/subscriber.js +27 -0
  103. package/dist/bus/ui/index.d.ts +3 -0
  104. package/dist/bus/ui/index.js +8 -0
  105. package/dist/bus/ui/messages.d.ts +186 -0
  106. package/dist/bus/ui/messages.js +171 -0
  107. package/dist/classifiers/base_classifier.d.ts +263 -0
  108. package/dist/classifiers/base_classifier.js +346 -0
  109. package/dist/classifiers/cloudflare/clef/classifier.d.ts +70 -0
  110. package/dist/classifiers/cloudflare/clef/classifier.js +204 -0
  111. package/dist/classifiers/cloudflare/clef/client.d.ts +104 -0
  112. package/dist/classifiers/cloudflare/clef/client.js +234 -0
  113. package/dist/classifiers/cloudflare/clef/index.d.ts +2 -0
  114. package/dist/classifiers/cloudflare/clef/index.js +8 -0
  115. package/dist/classifiers/cloudflare/index.d.ts +2 -0
  116. package/dist/classifiers/cloudflare/index.js +8 -0
  117. package/dist/classifiers/http_client.d.ts +70 -0
  118. package/dist/classifiers/http_client.js +161 -0
  119. package/dist/classifiers/index.d.ts +2 -0
  120. package/dist/classifiers/index.js +8 -0
  121. package/dist/classifiers/jev/classifier.d.ts +8 -0
  122. package/dist/classifiers/jev/classifier.js +13 -0
  123. package/dist/classifiers/jev/client.d.ts +8 -0
  124. package/dist/classifiers/jev/client.js +13 -0
  125. package/dist/classifiers/jev/index.d.ts +2 -0
  126. package/dist/classifiers/jev/index.js +8 -0
  127. package/dist/classifiers/llm/classifier.d.ts +72 -0
  128. package/dist/classifiers/llm/classifier.js +304 -0
  129. package/dist/classifiers/llm/index.d.ts +2 -0
  130. package/dist/classifiers/llm/index.js +8 -0
  131. package/dist/classifiers/openai/decisions/classifier.d.ts +77 -0
  132. package/dist/classifiers/openai/decisions/classifier.js +241 -0
  133. package/dist/classifiers/openai/decisions/client.d.ts +108 -0
  134. package/dist/classifiers/openai/decisions/client.js +234 -0
  135. package/dist/classifiers/openai/decisions/index.d.ts +2 -0
  136. package/dist/classifiers/openai/decisions/index.js +8 -0
  137. package/dist/classifiers/openai/index.d.ts +2 -0
  138. package/dist/classifiers/openai/index.js +8 -0
  139. package/dist/classifiers/typesafe/index.d.ts +2 -0
  140. package/dist/classifiers/typesafe/index.js +8 -0
  141. package/dist/classifiers/typesafe/jev/classifier.d.ts +70 -0
  142. package/dist/classifiers/typesafe/jev/classifier.js +220 -0
  143. package/dist/classifiers/typesafe/jev/client.d.ts +105 -0
  144. package/dist/classifiers/typesafe/jev/client.js +233 -0
  145. package/dist/classifiers/typesafe/jev/index.d.ts +2 -0
  146. package/dist/classifiers/typesafe/jev/index.js +8 -0
  147. package/dist/clocks/base_clock.d.ts +13 -0
  148. package/dist/clocks/base_clock.js +14 -0
  149. package/dist/clocks/index.d.ts +2 -0
  150. package/dist/clocks/index.js +8 -0
  151. package/dist/clocks/system_clock.d.ts +15 -0
  152. package/dist/clocks/system_clock.js +25 -0
  153. package/dist/frames/frames.d.ts +2533 -0
  154. package/dist/frames/frames.js +2485 -0
  155. package/dist/frames/index.d.ts +2 -0
  156. package/dist/frames/index.js +8 -0
  157. package/dist/frames/protobufs/frames_pb2.d.ts +229 -0
  158. package/dist/frames/protobufs/frames_pb2.js +466 -0
  159. package/dist/index.d.ts +11 -0
  160. package/dist/index.js +56 -0
  161. package/dist/metrics/index.d.ts +2 -0
  162. package/dist/metrics/index.js +8 -0
  163. package/dist/metrics/metrics.d.ts +276 -0
  164. package/dist/metrics/metrics.js +254 -0
  165. package/dist/observers/base_observer.d.ts +173 -0
  166. package/dist/observers/base_observer.js +151 -0
  167. package/dist/observers/error_observer.d.ts +75 -0
  168. package/dist/observers/error_observer.js +87 -0
  169. package/dist/observers/function_call_observer.d.ts +157 -0
  170. package/dist/observers/function_call_observer.js +222 -0
  171. package/dist/observers/index.d.ts +2 -0
  172. package/dist/observers/index.js +8 -0
  173. package/dist/observers/loggers/debug_log_observer.d.ts +91 -0
  174. package/dist/observers/loggers/debug_log_observer.js +228 -0
  175. package/dist/observers/loggers/index.d.ts +2 -0
  176. package/dist/observers/loggers/index.js +8 -0
  177. package/dist/observers/loggers/llm_log_observer.d.ts +24 -0
  178. package/dist/observers/loggers/llm_log_observer.js +110 -0
  179. package/dist/observers/loggers/metrics_log_observer.d.ts +85 -0
  180. package/dist/observers/loggers/metrics_log_observer.js +186 -0
  181. package/dist/observers/loggers/transcription_log_observer.d.ts +23 -0
  182. package/dist/observers/loggers/transcription_log_observer.js +74 -0
  183. package/dist/observers/service_metrics_observer.d.ts +168 -0
  184. package/dist/observers/service_metrics_observer.js +236 -0
  185. package/dist/observers/speaking_observer.d.ts +104 -0
  186. package/dist/observers/speaking_observer.js +150 -0
  187. package/dist/observers/startup_timing_observer.d.ts +221 -0
  188. package/dist/observers/startup_timing_observer.js +365 -0
  189. package/dist/observers/turn_tracking_observer.d.ts +78 -0
  190. package/dist/observers/turn_tracking_observer.js +189 -0
  191. package/dist/observers/user_bot_latency_observer.d.ts +411 -0
  192. package/dist/observers/user_bot_latency_observer.js +974 -0
  193. package/dist/pipeline/base_pipeline.d.ts +49 -0
  194. package/dist/pipeline/base_pipeline.js +101 -0
  195. package/dist/pipeline/capabilities.d.ts +76 -0
  196. package/dist/pipeline/capabilities.js +97 -0
  197. package/dist/pipeline/index.d.ts +2 -0
  198. package/dist/pipeline/index.js +8 -0
  199. package/dist/pipeline/job_context.d.ts +317 -0
  200. package/dist/pipeline/job_context.js +450 -0
  201. package/dist/pipeline/job_decorator.d.ts +54 -0
  202. package/dist/pipeline/job_decorator.js +92 -0
  203. package/dist/pipeline/llm_switcher.d.ts +84 -0
  204. package/dist/pipeline/llm_switcher.js +107 -0
  205. package/dist/pipeline/llm_with_backend.d.ts +435 -0
  206. package/dist/pipeline/llm_with_backend.js +806 -0
  207. package/dist/pipeline/parallel_pipeline.d.ts +83 -0
  208. package/dist/pipeline/parallel_pipeline.js +200 -0
  209. package/dist/pipeline/pipeline.d.ts +126 -0
  210. package/dist/pipeline/pipeline.js +196 -0
  211. package/dist/pipeline/service_switcher.d.ts +287 -0
  212. package/dist/pipeline/service_switcher.js +509 -0
  213. package/dist/pipeline/sync_parallel_pipeline.d.ts +192 -0
  214. package/dist/pipeline/sync_parallel_pipeline.js +387 -0
  215. package/dist/pipeline/worker.d.ts +814 -0
  216. package/dist/pipeline/worker.js +1639 -0
  217. package/dist/pipeline/worker_observer.d.ts +131 -0
  218. package/dist/pipeline/worker_observer.js +274 -0
  219. package/dist/pipeline/worker_ready_decorator.d.ts +45 -0
  220. package/dist/pipeline/worker_ready_decorator.js +76 -0
  221. package/dist/processors/aggregators/async_tool_messages.d.ts +146 -0
  222. package/dist/processors/aggregators/async_tool_messages.js +291 -0
  223. package/dist/processors/aggregators/dtmf_aggregator.d.ts +61 -0
  224. package/dist/processors/aggregators/dtmf_aggregator.js +144 -0
  225. package/dist/processors/aggregators/gated.d.ts +43 -0
  226. package/dist/processors/aggregators/gated.js +86 -0
  227. package/dist/processors/aggregators/gated_llm_context.d.ts +42 -0
  228. package/dist/processors/aggregators/gated_llm_context.js +86 -0
  229. package/dist/processors/aggregators/index.d.ts +2 -0
  230. package/dist/processors/aggregators/index.js +8 -0
  231. package/dist/processors/aggregators/llm_context.d.ts +370 -0
  232. package/dist/processors/aggregators/llm_context.js +580 -0
  233. package/dist/processors/aggregators/llm_context_summarizer.d.ts +219 -0
  234. package/dist/processors/aggregators/llm_context_summarizer.js +447 -0
  235. package/dist/processors/aggregators/llm_response.d.ts +37 -0
  236. package/dist/processors/aggregators/llm_response.js +71 -0
  237. package/dist/processors/aggregators/llm_response_universal.d.ts +966 -0
  238. package/dist/processors/aggregators/llm_response_universal.js +2394 -0
  239. package/dist/processors/aggregators/llm_text_processor.d.ts +53 -0
  240. package/dist/processors/aggregators/llm_text_processor.js +102 -0
  241. package/dist/processors/aggregators/sentence.d.ts +39 -0
  242. package/dist/processors/aggregators/sentence.js +69 -0
  243. package/dist/processors/async_generator.d.ts +42 -0
  244. package/dist/processors/async_generator.js +76 -0
  245. package/dist/processors/audio/audio_buffer_processor.d.ts +241 -0
  246. package/dist/processors/audio/audio_buffer_processor.js +565 -0
  247. package/dist/processors/audio/index.d.ts +2 -0
  248. package/dist/processors/audio/index.js +8 -0
  249. package/dist/processors/audio/vad_processor.d.ts +67 -0
  250. package/dist/processors/audio/vad_processor.js +103 -0
  251. package/dist/processors/consumer_processor.d.ts +49 -0
  252. package/dist/processors/consumer_processor.js +85 -0
  253. package/dist/processors/filters/frame_filter.d.ts +39 -0
  254. package/dist/processors/filters/frame_filter.js +52 -0
  255. package/dist/processors/filters/function_filter.d.ts +59 -0
  256. package/dist/processors/filters/function_filter.js +78 -0
  257. package/dist/processors/filters/identity_filter.d.ts +33 -0
  258. package/dist/processors/filters/identity_filter.js +37 -0
  259. package/dist/processors/filters/index.d.ts +2 -0
  260. package/dist/processors/filters/index.js +8 -0
  261. package/dist/processors/filters/null_filter.d.ts +34 -0
  262. package/dist/processors/filters/null_filter.js +47 -0
  263. package/dist/processors/filters/wake_notifier_filter.d.ts +48 -0
  264. package/dist/processors/filters/wake_notifier_filter.js +49 -0
  265. package/dist/processors/frame_processor.d.ts +360 -0
  266. package/dist/processors/frame_processor.js +932 -0
  267. package/dist/processors/frameworks/index.d.ts +2 -0
  268. package/dist/processors/frameworks/index.js +8 -0
  269. package/dist/processors/frameworks/rtvi/frames.d.ts +241 -0
  270. package/dist/processors/frameworks/rtvi/frames.js +259 -0
  271. package/dist/processors/frameworks/rtvi/index.d.ts +6 -0
  272. package/dist/processors/frameworks/rtvi/index.js +11 -0
  273. package/dist/processors/frameworks/rtvi/models.d.ts +1741 -0
  274. package/dist/processors/frameworks/rtvi/models.js +1807 -0
  275. package/dist/processors/frameworks/rtvi/observer.d.ts +340 -0
  276. package/dist/processors/frameworks/rtvi/observer.js +1113 -0
  277. package/dist/processors/frameworks/rtvi/processor.d.ts +182 -0
  278. package/dist/processors/frameworks/rtvi/processor.js +676 -0
  279. package/dist/processors/idle_frame_processor.d.ts +44 -0
  280. package/dist/processors/idle_frame_processor.js +86 -0
  281. package/dist/processors/index.d.ts +2 -0
  282. package/dist/processors/index.js +8 -0
  283. package/dist/processors/logger.d.ts +42 -0
  284. package/dist/processors/logger.js +87 -0
  285. package/dist/processors/metrics/frame_processor_metrics.d.ts +172 -0
  286. package/dist/processors/metrics/frame_processor_metrics.js +372 -0
  287. package/dist/processors/metrics/index.d.ts +2 -0
  288. package/dist/processors/metrics/index.js +8 -0
  289. package/dist/processors/producer_processor.d.ts +68 -0
  290. package/dist/processors/producer_processor.js +78 -0
  291. package/dist/processors/text_transformer.d.ts +30 -0
  292. package/dist/processors/text_transformer.js +48 -0
  293. package/dist/registry/index.d.ts +3 -0
  294. package/dist/registry/index.js +8 -0
  295. package/dist/registry/registry.d.ts +69 -0
  296. package/dist/registry/registry.js +149 -0
  297. package/dist/registry/types.d.ts +47 -0
  298. package/dist/registry/types.js +39 -0
  299. package/dist/serializers/base_serializer.d.ts +94 -0
  300. package/dist/serializers/base_serializer.js +82 -0
  301. package/dist/serializers/index.d.ts +2 -0
  302. package/dist/serializers/index.js +8 -0
  303. package/dist/services/ai_service.d.ts +145 -0
  304. package/dist/services/ai_service.js +262 -0
  305. package/dist/services/anthropic/index.d.ts +2 -0
  306. package/dist/services/anthropic/index.js +7 -0
  307. package/dist/services/assemblyai/index.d.ts +2 -0
  308. package/dist/services/assemblyai/index.js +7 -0
  309. package/dist/services/asyncai/index.d.ts +2 -0
  310. package/dist/services/asyncai/index.js +7 -0
  311. package/dist/services/aws/index.d.ts +2 -0
  312. package/dist/services/aws/index.js +7 -0
  313. package/dist/services/azure/index.d.ts +2 -0
  314. package/dist/services/azure/index.js +7 -0
  315. package/dist/services/baseten/index.d.ts +2 -0
  316. package/dist/services/baseten/index.js +7 -0
  317. package/dist/services/bland/index.d.ts +2 -0
  318. package/dist/services/bland/index.js +7 -0
  319. package/dist/services/camb/index.d.ts +2 -0
  320. package/dist/services/camb/index.js +7 -0
  321. package/dist/services/cartesia/index.d.ts +2 -0
  322. package/dist/services/cartesia/index.js +7 -0
  323. package/dist/services/cerebras/index.d.ts +2 -0
  324. package/dist/services/cerebras/index.js +7 -0
  325. package/dist/services/crusoe/index.d.ts +2 -0
  326. package/dist/services/crusoe/index.js +7 -0
  327. package/dist/services/deepgram/index.d.ts +2 -0
  328. package/dist/services/deepgram/index.js +7 -0
  329. package/dist/services/deepseek/index.d.ts +2 -0
  330. package/dist/services/deepseek/index.js +7 -0
  331. package/dist/services/elevenlabs/index.d.ts +2 -0
  332. package/dist/services/elevenlabs/index.js +7 -0
  333. package/dist/services/fal/index.d.ts +2 -0
  334. package/dist/services/fal/index.js +7 -0
  335. package/dist/services/fireworks/index.d.ts +2 -0
  336. package/dist/services/fireworks/index.js +7 -0
  337. package/dist/services/fish/index.d.ts +2 -0
  338. package/dist/services/fish/index.js +7 -0
  339. package/dist/services/funasr/index.d.ts +3 -0
  340. package/dist/services/funasr/index.js +8 -0
  341. package/dist/services/gladia/index.d.ts +2 -0
  342. package/dist/services/gladia/index.js +7 -0
  343. package/dist/services/google/index.d.ts +2 -0
  344. package/dist/services/google/index.js +7 -0
  345. package/dist/services/gradium/index.d.ts +2 -0
  346. package/dist/services/gradium/index.js +7 -0
  347. package/dist/services/grok/index.d.ts +2 -0
  348. package/dist/services/grok/index.js +7 -0
  349. package/dist/services/groq/index.d.ts +2 -0
  350. package/dist/services/groq/index.js +7 -0
  351. package/dist/services/heygen/index.d.ts +2 -0
  352. package/dist/services/heygen/index.js +7 -0
  353. package/dist/services/hume/index.d.ts +2 -0
  354. package/dist/services/hume/index.js +7 -0
  355. package/dist/services/image_service.d.ts +52 -0
  356. package/dist/services/image_service.js +60 -0
  357. package/dist/services/inception/index.d.ts +2 -0
  358. package/dist/services/inception/index.js +7 -0
  359. package/dist/services/index.d.ts +2 -0
  360. package/dist/services/index.js +8 -0
  361. package/dist/services/inworld/index.d.ts +2 -0
  362. package/dist/services/inworld/index.js +7 -0
  363. package/dist/services/keenable/index.d.ts +2 -0
  364. package/dist/services/keenable/index.js +7 -0
  365. package/dist/services/kokoro/index.d.ts +2 -0
  366. package/dist/services/kokoro/index.js +7 -0
  367. package/dist/services/llm_service.d.ts +1106 -0
  368. package/dist/services/llm_service.js +2231 -0
  369. package/dist/services/mem0/index.d.ts +2 -0
  370. package/dist/services/mem0/index.js +7 -0
  371. package/dist/services/meta/index.d.ts +2 -0
  372. package/dist/services/meta/index.js +7 -0
  373. package/dist/services/minimax/index.d.ts +2 -0
  374. package/dist/services/minimax/index.js +7 -0
  375. package/dist/services/mistral/index.d.ts +2 -0
  376. package/dist/services/mistral/index.js +7 -0
  377. package/dist/services/moondream/index.d.ts +2 -0
  378. package/dist/services/moondream/index.js +7 -0
  379. package/dist/services/moonshine/index.d.ts +2 -0
  380. package/dist/services/moonshine/index.js +7 -0
  381. package/dist/services/nebius/index.d.ts +2 -0
  382. package/dist/services/nebius/index.js +7 -0
  383. package/dist/services/neuphonic/index.d.ts +2 -0
  384. package/dist/services/neuphonic/index.js +7 -0
  385. package/dist/services/novita/index.d.ts +2 -0
  386. package/dist/services/novita/index.js +7 -0
  387. package/dist/services/nvidia/index.d.ts +2 -0
  388. package/dist/services/nvidia/index.js +11 -0
  389. package/dist/services/ollama/index.d.ts +2 -0
  390. package/dist/services/ollama/index.js +7 -0
  391. package/dist/services/openai/index.d.ts +2 -0
  392. package/dist/services/openai/index.js +7 -0
  393. package/dist/services/openclaw/index.d.ts +14 -0
  394. package/dist/services/openclaw/index.js +19 -0
  395. package/dist/services/openrouter/index.d.ts +2 -0
  396. package/dist/services/openrouter/index.js +7 -0
  397. package/dist/services/perplexity/index.d.ts +2 -0
  398. package/dist/services/perplexity/index.js +7 -0
  399. package/dist/services/piper/index.d.ts +2 -0
  400. package/dist/services/piper/index.js +7 -0
  401. package/dist/services/pocket_tts/index.d.ts +2 -0
  402. package/dist/services/pocket_tts/index.js +7 -0
  403. package/dist/services/qwen/index.d.ts +2 -0
  404. package/dist/services/qwen/index.js +7 -0
  405. package/dist/services/resembleai/index.d.ts +2 -0
  406. package/dist/services/resembleai/index.js +7 -0
  407. package/dist/services/rime/index.d.ts +2 -0
  408. package/dist/services/rime/index.js +7 -0
  409. package/dist/services/sambanova/index.d.ts +2 -0
  410. package/dist/services/sambanova/index.js +7 -0
  411. package/dist/services/sarvam/index.d.ts +2 -0
  412. package/dist/services/sarvam/index.js +7 -0
  413. package/dist/services/settings.d.ts +356 -0
  414. package/dist/services/settings.js +437 -0
  415. package/dist/services/simli/index.d.ts +2 -0
  416. package/dist/services/simli/index.js +7 -0
  417. package/dist/services/smallest/index.d.ts +2 -0
  418. package/dist/services/smallest/index.js +7 -0
  419. package/dist/services/soniox/index.d.ts +2 -0
  420. package/dist/services/soniox/index.js +7 -0
  421. package/dist/services/speechify/index.d.ts +2 -0
  422. package/dist/services/speechify/index.js +7 -0
  423. package/dist/services/speechmatics/index.d.ts +2 -0
  424. package/dist/services/speechmatics/index.js +7 -0
  425. package/dist/services/stt_latency.d.ts +62 -0
  426. package/dist/services/stt_latency.js +71 -0
  427. package/dist/services/stt_service.d.ts +601 -0
  428. package/dist/services/stt_service.js +1044 -0
  429. package/dist/services/tavus/index.d.ts +2 -0
  430. package/dist/services/tavus/index.js +7 -0
  431. package/dist/services/together/index.d.ts +2 -0
  432. package/dist/services/together/index.js +7 -0
  433. package/dist/services/tts_service.d.ts +909 -0
  434. package/dist/services/tts_service.js +2018 -0
  435. package/dist/services/ultravox/index.d.ts +2 -0
  436. package/dist/services/ultravox/index.js +9 -0
  437. package/dist/services/vision_service.d.ts +56 -0
  438. package/dist/services/vision_service.js +62 -0
  439. package/dist/services/websocket_service.d.ts +213 -0
  440. package/dist/services/websocket_service.js +654 -0
  441. package/dist/services/whisper/index.d.ts +2 -0
  442. package/dist/services/whisper/index.js +9 -0
  443. package/dist/services/xai/index.d.ts +2 -0
  444. package/dist/services/xai/index.js +9 -0
  445. package/dist/services/xtts/index.d.ts +2 -0
  446. package/dist/services/xtts/index.js +9 -0
  447. package/dist/tests/index.d.ts +2 -0
  448. package/dist/tests/index.js +8 -0
  449. package/dist/tests/utils.d.ts +123 -0
  450. package/dist/tests/utils.js +212 -0
  451. package/dist/transcriptions/index.d.ts +2 -0
  452. package/dist/transcriptions/index.js +8 -0
  453. package/dist/transcriptions/language.d.ts +376 -0
  454. package/dist/transcriptions/language.js +543 -0
  455. package/dist/transports/base_input.d.ts +149 -0
  456. package/dist/transports/base_input.js +338 -0
  457. package/dist/transports/base_output.d.ts +432 -0
  458. package/dist/transports/base_output.js +1231 -0
  459. package/dist/transports/base_transport.d.ts +223 -0
  460. package/dist/transports/base_transport.js +167 -0
  461. package/dist/transports/daily/index.d.ts +2 -0
  462. package/dist/transports/daily/index.js +9 -0
  463. package/dist/transports/heygen/index.d.ts +2 -0
  464. package/dist/transports/heygen/index.js +9 -0
  465. package/dist/transports/index.d.ts +2 -0
  466. package/dist/transports/index.js +8 -0
  467. package/dist/transports/lemonslice/index.d.ts +2 -0
  468. package/dist/transports/lemonslice/index.js +9 -0
  469. package/dist/transports/livekit/index.d.ts +2 -0
  470. package/dist/transports/livekit/index.js +9 -0
  471. package/dist/transports/local/index.d.ts +2 -0
  472. package/dist/transports/local/index.js +9 -0
  473. package/dist/transports/moq/index.d.ts +2 -0
  474. package/dist/transports/moq/index.js +9 -0
  475. package/dist/transports/smallwebrtc/index.d.ts +2 -0
  476. package/dist/transports/smallwebrtc/index.js +9 -0
  477. package/dist/transports/tavus/index.d.ts +2 -0
  478. package/dist/transports/tavus/index.js +9 -0
  479. package/dist/transports/video_in_sampler.d.ts +157 -0
  480. package/dist/transports/video_in_sampler.js +258 -0
  481. package/dist/transports/vonage/index.d.ts +2 -0
  482. package/dist/transports/vonage/index.js +9 -0
  483. package/dist/transports/websocket/index.d.ts +2 -0
  484. package/dist/transports/websocket/index.js +9 -0
  485. package/dist/transports/whatsapp/index.d.ts +2 -0
  486. package/dist/transports/whatsapp/index.js +9 -0
  487. package/dist/turns/eager_end_of_turn_mixin.d.ts +70 -0
  488. package/dist/turns/eager_end_of_turn_mixin.js +122 -0
  489. package/dist/turns/empty_user_turn.d.ts +55 -0
  490. package/dist/turns/empty_user_turn.js +53 -0
  491. package/dist/turns/index.d.ts +2 -0
  492. package/dist/turns/index.js +8 -0
  493. package/dist/turns/speculation_gate.d.ts +169 -0
  494. package/dist/turns/speculation_gate.js +294 -0
  495. package/dist/turns/types.d.ts +33 -0
  496. package/dist/turns/types.js +35 -0
  497. package/dist/turns/user_idle_controller.d.ts +94 -0
  498. package/dist/turns/user_idle_controller.js +187 -0
  499. package/dist/turns/user_mute/always_user_mute_strategy.d.ts +15 -0
  500. package/dist/turns/user_mute/always_user_mute_strategy.js +29 -0
  501. package/dist/turns/user_mute/base_user_mute_strategy.d.ts +39 -0
  502. package/dist/turns/user_mute/base_user_mute_strategy.js +45 -0
  503. package/dist/turns/user_mute/first_speech_user_mute_strategy.d.ts +28 -0
  504. package/dist/turns/user_mute/first_speech_user_mute_strategy.js +52 -0
  505. package/dist/turns/user_mute/function_call_user_mute_strategy.d.ts +25 -0
  506. package/dist/turns/user_mute/function_call_user_mute_strategy.js +50 -0
  507. package/dist/turns/user_mute/index.d.ts +6 -0
  508. package/dist/turns/user_mute/index.js +11 -0
  509. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.d.ts +43 -0
  510. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.js +76 -0
  511. package/dist/turns/user_start/base_user_turn_start_strategy.d.ts +135 -0
  512. package/dist/turns/user_start/base_user_turn_start_strategy.js +134 -0
  513. package/dist/turns/user_start/external_user_turn_start_strategy.d.ts +45 -0
  514. package/dist/turns/user_start/external_user_turn_start_strategy.js +64 -0
  515. package/dist/turns/user_start/index.d.ts +8 -0
  516. package/dist/turns/user_start/index.js +16 -0
  517. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.d.ts +133 -0
  518. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.js +243 -0
  519. package/dist/turns/user_start/min_words_user_turn_start_strategy.d.ts +60 -0
  520. package/dist/turns/user_start/min_words_user_turn_start_strategy.js +102 -0
  521. package/dist/turns/user_start/transcription_user_turn_start_strategy.d.ts +29 -0
  522. package/dist/turns/user_start/transcription_user_turn_start_strategy.js +43 -0
  523. package/dist/turns/user_start/vad_user_turn_start_strategy.d.ts +20 -0
  524. package/dist/turns/user_start/vad_user_turn_start_strategy.js +31 -0
  525. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.d.ts +141 -0
  526. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.js +238 -0
  527. package/dist/turns/user_stop/base_user_turn_stop_strategy.d.ts +174 -0
  528. package/dist/turns/user_stop/base_user_turn_stop_strategy.js +170 -0
  529. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.d.ts +81 -0
  530. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.js +107 -0
  531. package/dist/turns/user_stop/eager_match_policy.d.ts +36 -0
  532. package/dist/turns/user_stop/eager_match_policy.js +50 -0
  533. package/dist/turns/user_stop/eager_user_turn_stop_strategy.d.ts +84 -0
  534. package/dist/turns/user_stop/eager_user_turn_stop_strategy.js +154 -0
  535. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.d.ts +45 -0
  536. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.js +55 -0
  537. package/dist/turns/user_stop/external_user_turn_stop_strategy.d.ts +115 -0
  538. package/dist/turns/user_stop/external_user_turn_stop_strategy.js +205 -0
  539. package/dist/turns/user_stop/index.d.ts +10 -0
  540. package/dist/turns/user_stop/index.js +15 -0
  541. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.d.ts +44 -0
  542. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.js +59 -0
  543. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.d.ts +140 -0
  544. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.js +303 -0
  545. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.d.ts +135 -0
  546. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.js +332 -0
  547. package/dist/turns/user_turn_completion_mixin.d.ts +147 -0
  548. package/dist/turns/user_turn_completion_mixin.js +591 -0
  549. package/dist/turns/user_turn_controller.d.ts +134 -0
  550. package/dist/turns/user_turn_controller.js +335 -0
  551. package/dist/turns/user_turn_processor.d.ts +87 -0
  552. package/dist/turns/user_turn_processor.js +180 -0
  553. package/dist/turns/user_turn_strategies.d.ts +187 -0
  554. package/dist/turns/user_turn_strategies.js +222 -0
  555. package/dist/utils/async_tool_cancellation.d.ts +35 -0
  556. package/dist/utils/async_tool_cancellation.js +78 -0
  557. package/dist/utils/asyncio/index.d.ts +2 -0
  558. package/dist/utils/asyncio/index.js +7 -0
  559. package/dist/utils/asyncio/task_manager.d.ts +49 -0
  560. package/dist/utils/asyncio/task_manager.js +105 -0
  561. package/dist/utils/base_object.d.ts +76 -0
  562. package/dist/utils/base_object.js +154 -0
  563. package/dist/utils/context/aggregated_frame_sequencer.d.ts +491 -0
  564. package/dist/utils/context/aggregated_frame_sequencer.js +803 -0
  565. package/dist/utils/context/audio_context_manager.d.ts +131 -0
  566. package/dist/utils/context/audio_context_manager.js +233 -0
  567. package/dist/utils/context/index.d.ts +2 -0
  568. package/dist/utils/context/index.js +7 -0
  569. package/dist/utils/context/llm_context_summarization.d.ts +258 -0
  570. package/dist/utils/context/llm_context_summarization.js +511 -0
  571. package/dist/utils/context/text_segment_map.d.ts +611 -0
  572. package/dist/utils/context/text_segment_map.js +1132 -0
  573. package/dist/utils/context/word_completion_tracker.d.ts +273 -0
  574. package/dist/utils/context/word_completion_tracker.js +441 -0
  575. package/dist/utils/context/word_timestamp_tracker.d.ts +72 -0
  576. package/dist/utils/context/word_timestamp_tracker.js +98 -0
  577. package/dist/utils/deprecation.d.ts +28 -0
  578. package/dist/utils/deprecation.js +75 -0
  579. package/dist/utils/env.d.ts +38 -0
  580. package/dist/utils/env.js +62 -0
  581. package/dist/utils/errors.d.ts +75 -0
  582. package/dist/utils/errors.js +202 -0
  583. package/dist/utils/file_resolver.d.ts +126 -0
  584. package/dist/utils/file_resolver.js +314 -0
  585. package/dist/utils/file_storage.d.ts +99 -0
  586. package/dist/utils/file_storage.js +100 -0
  587. package/dist/utils/frame_queue.d.ts +36 -0
  588. package/dist/utils/frame_queue.js +66 -0
  589. package/dist/utils/http.d.ts +39 -0
  590. package/dist/utils/http.js +53 -0
  591. package/dist/utils/image.d.ts +15 -0
  592. package/dist/utils/image.js +30 -0
  593. package/dist/utils/index.d.ts +2 -0
  594. package/dist/utils/index.js +8 -0
  595. package/dist/utils/log_config.d.ts +34 -0
  596. package/dist/utils/log_config.js +76 -0
  597. package/dist/utils/logger.d.ts +40 -0
  598. package/dist/utils/logger.js +91 -0
  599. package/dist/utils/mixin.d.ts +14 -0
  600. package/dist/utils/mixin.js +63 -0
  601. package/dist/utils/network.d.ts +73 -0
  602. package/dist/utils/network.js +90 -0
  603. package/dist/utils/security/allowed_origins.d.ts +16 -0
  604. package/dist/utils/security/allowed_origins.js +34 -0
  605. package/dist/utils/security/index.d.ts +2 -0
  606. package/dist/utils/security/index.js +7 -0
  607. package/dist/utils/security/redaction.d.ts +27 -0
  608. package/dist/utils/security/redaction.js +123 -0
  609. package/dist/utils/security/ssrf.d.ts +79 -0
  610. package/dist/utils/security/ssrf.js +327 -0
  611. package/dist/utils/shared.d.ts +35 -0
  612. package/dist/utils/shared.js +136 -0
  613. package/dist/utils/startup.d.ts +17 -0
  614. package/dist/utils/startup.js +130 -0
  615. package/dist/utils/string.d.ts +116 -0
  616. package/dist/utils/string.js +460 -0
  617. package/dist/utils/sync/base_notifier.d.ts +25 -0
  618. package/dist/utils/sync/base_notifier.js +16 -0
  619. package/dist/utils/sync/event_notifier.d.ts +38 -0
  620. package/dist/utils/sync/event_notifier.js +51 -0
  621. package/dist/utils/sync/index.d.ts +2 -0
  622. package/dist/utils/sync/index.js +7 -0
  623. package/dist/utils/text/alnum_utils.d.ts +109 -0
  624. package/dist/utils/text/alnum_utils.js +262 -0
  625. package/dist/utils/text/base_text_aggregator.d.ts +146 -0
  626. package/dist/utils/text/base_text_aggregator.js +102 -0
  627. package/dist/utils/text/base_text_filter.d.ts +54 -0
  628. package/dist/utils/text/base_text_filter.js +50 -0
  629. package/dist/utils/text/index.d.ts +2 -0
  630. package/dist/utils/text/index.js +7 -0
  631. package/dist/utils/text/markdown_text_filter.d.ts +147 -0
  632. package/dist/utils/text/markdown_text_filter.js +522 -0
  633. package/dist/utils/text/markup_utils.d.ts +54 -0
  634. package/dist/utils/text/markup_utils.js +156 -0
  635. package/dist/utils/text/pattern_pair_aggregator.d.ts +251 -0
  636. package/dist/utils/text/pattern_pair_aggregator.js +478 -0
  637. package/dist/utils/text/phonemes.d.ts +60 -0
  638. package/dist/utils/text/phonemes.js +172 -0
  639. package/dist/utils/text/simple_text_aggregator.d.ts +135 -0
  640. package/dist/utils/text/simple_text_aggregator.js +254 -0
  641. package/dist/utils/text/skip_tags_aggregator.d.ts +85 -0
  642. package/dist/utils/text/skip_tags_aggregator.js +147 -0
  643. package/dist/utils/text/transforms/pronunciations.d.ts +65 -0
  644. package/dist/utils/text/transforms/pronunciations.js +111 -0
  645. package/dist/utils/text/word_timestamp_utils.d.ts +26 -0
  646. package/dist/utils/text/word_timestamp_utils.js +52 -0
  647. package/dist/utils/time.d.ts +13 -0
  648. package/dist/utils/time.js +31 -0
  649. package/dist/utils/tracing/index.d.ts +3 -0
  650. package/dist/utils/tracing/index.js +8 -0
  651. package/dist/utils/tracing/service_attributes.d.ts +198 -0
  652. package/dist/utils/tracing/service_attributes.js +434 -0
  653. package/dist/utils/tracing/service_decorators.d.ts +214 -0
  654. package/dist/utils/tracing/service_decorators.js +1662 -0
  655. package/dist/utils/tracing/setup.d.ts +95 -0
  656. package/dist/utils/tracing/setup.js +110 -0
  657. package/dist/utils/tracing/tracing_context.d.ts +55 -0
  658. package/dist/utils/tracing/tracing_context.js +97 -0
  659. package/dist/utils/tracing/turn_trace_observer.d.ts +90 -0
  660. package/dist/utils/tracing/turn_trace_observer.js +219 -0
  661. package/dist/utils/types.d.ts +80 -0
  662. package/dist/utils/types.js +108 -0
  663. package/dist/utils/utils.d.ts +5 -0
  664. package/dist/utils/utils.js +22 -0
  665. package/dist/utils/yaml.d.ts +64 -0
  666. package/dist/utils/yaml.js +41 -0
  667. package/dist/version.d.ts +3 -0
  668. package/dist/version.js +7 -0
  669. package/dist/workers/base_worker.d.ts +772 -0
  670. package/dist/workers/base_worker.js +1298 -0
  671. package/dist/workers/index.d.ts +2 -0
  672. package/dist/workers/index.js +8 -0
  673. package/dist/workers/llm/backend_llm_worker.d.ts +552 -0
  674. package/dist/workers/llm/backend_llm_worker.js +1055 -0
  675. package/dist/workers/llm/index.d.ts +6 -0
  676. package/dist/workers/llm/index.js +11 -0
  677. package/dist/workers/llm/llm_context_worker.d.ts +66 -0
  678. package/dist/workers/llm/llm_context_worker.js +72 -0
  679. package/dist/workers/llm/llm_worker.d.ts +180 -0
  680. package/dist/workers/llm/llm_worker.js +323 -0
  681. package/dist/workers/llm/tool_decorator.d.ts +68 -0
  682. package/dist/workers/llm/tool_decorator.js +60 -0
  683. package/dist/workers/runner.d.ts +268 -0
  684. package/dist/workers/runner.js +489 -0
  685. package/dist/workers/ui/index.d.ts +22 -0
  686. package/dist/workers/ui/index.js +27 -0
  687. package/dist/workers/ui/ui_event_decorator.d.ts +43 -0
  688. package/dist/workers/ui/ui_event_decorator.js +75 -0
  689. package/dist/workers/ui/ui_job_context.d.ts +12 -0
  690. package/dist/workers/ui/ui_job_context.js +17 -0
  691. package/dist/workers/ui/ui_prompts.d.ts +21 -0
  692. package/dist/workers/ui/ui_prompts.js +41 -0
  693. package/dist/workers/ui/ui_tools.d.ts +32 -0
  694. package/dist/workers/ui/ui_tools.js +112 -0
  695. package/dist/workers/ui/ui_worker.d.ts +571 -0
  696. package/dist/workers/ui/ui_worker.js +1156 -0
  697. package/package.json +46 -3
  698. package/README.md +0 -5
@@ -0,0 +1,95 @@
1
+ export type OtelAttributeValue = string | number | boolean | readonly string[] | readonly number[] | readonly boolean[];
2
+ /** `SpanContext` from `@opentelemetry/api`. */
3
+ export interface OtelSpanContext {
4
+ traceId: string;
5
+ spanId: string;
6
+ traceFlags: number;
7
+ isRemote?: boolean;
8
+ }
9
+ /** `Span` from `@opentelemetry/api`. */
10
+ export interface OtelSpan {
11
+ spanContext(): OtelSpanContext;
12
+ setAttribute(key: string, value: OtelAttributeValue): unknown;
13
+ end(endTime?: unknown): void;
14
+ }
15
+ /** `Context` from `@opentelemetry/api` (opaque). */
16
+ export interface OtelContext {
17
+ getValue(key: symbol): unknown;
18
+ }
19
+ /** `Tracer` from `@opentelemetry/api`. */
20
+ export interface OtelTracer {
21
+ startSpan(name: string, options?: Record<string, unknown>, context?: OtelContext): OtelSpan;
22
+ }
23
+ /** The `@opentelemetry/api` module. */
24
+ export interface OtelApi {
25
+ trace: {
26
+ getTracer(name: string, version?: string): OtelTracer;
27
+ wrapSpanContext(spanContext: OtelSpanContext): OtelSpan;
28
+ setSpan(context: OtelContext, span: OtelSpan): OtelContext;
29
+ setGlobalTracerProvider(provider: unknown): unknown;
30
+ };
31
+ context: {
32
+ active(): OtelContext;
33
+ };
34
+ }
35
+ /** The `@opentelemetry/sdk-trace-base` module (v2). */
36
+ export interface OtelSdkTraceBase {
37
+ BasicTracerProvider: new (config?: {
38
+ resource?: unknown;
39
+ spanProcessors?: unknown[];
40
+ }) => unknown;
41
+ BatchSpanProcessor: new (exporter: unknown) => unknown;
42
+ ConsoleSpanExporter: new () => unknown;
43
+ }
44
+ /** The `@opentelemetry/resources` module (v2). */
45
+ export interface OtelResources {
46
+ resourceFromAttributes(attributes: Record<string, string>): unknown;
47
+ }
48
+ /** The OpenTelemetry modules handed to `registerOpenTelemetry()`. */
49
+ export interface OpenTelemetryModules {
50
+ /** `@opentelemetry/api`. Enables tracing. */
51
+ api: OtelApi;
52
+ /** `@opentelemetry/sdk-trace-base`. Needed by `setupTracing()`. */
53
+ sdk?: OtelSdkTraceBase | null;
54
+ /** `@opentelemetry/resources`. Needed by `setupTracing()`. */
55
+ resources?: OtelResources | null;
56
+ }
57
+ /**
58
+ * Make OpenTelemetry available to Pipecat (upstream's optional import).
59
+ * Pass `null` to disable tracing again.
60
+ */
61
+ export declare function registerOpenTelemetry(modules: OpenTelemetryModules | null): void;
62
+ /** The registered OpenTelemetry modules, or null if tracing is unavailable. */
63
+ export declare function getOpenTelemetry(): OpenTelemetryModules | null;
64
+ /**
65
+ * Check if OpenTelemetry tracing is available and configured.
66
+ *
67
+ * @returns True if tracing is available, False otherwise.
68
+ */
69
+ export declare function isTracingAvailable(): boolean;
70
+ export interface SetupTracingOptions {
71
+ /** The name of the service for traces. Defaults to `"pipecat"`. */
72
+ serviceName?: string;
73
+ /**
74
+ * A pre-configured OpenTelemetry span exporter instance. If null, only
75
+ * console export will be available if enabled.
76
+ */
77
+ exporter?: unknown;
78
+ /** Whether to also export traces to console (useful for debugging). */
79
+ consoleExport?: boolean;
80
+ }
81
+ /**
82
+ * Set up OpenTelemetry tracing with a user-provided exporter.
83
+ *
84
+ * Requires `registerOpenTelemetry()` to have been called with the `sdk` and
85
+ * `resources` modules.
86
+ *
87
+ * @returns True if setup was successful, False otherwise.
88
+ *
89
+ * @example
90
+ * // With OTLP exporter
91
+ * const exporter = new OTLPTraceExporter({ url: "http://localhost:4318/v1/traces" });
92
+ * setupTracing({ serviceName: "my-service", exporter });
93
+ */
94
+ export declare function setupTracing(options?: SetupTracingOptions): boolean;
95
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1,110 @@
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/setup.py
6
+ /**
7
+ * Core OpenTelemetry tracing utilities and setup for Pipecat.
8
+ *
9
+ * This module provides functions to check availability and configure
10
+ * OpenTelemetry tracing for Pipecat applications. It handles the optional
11
+ * nature of OpenTelemetry dependencies and provides a safe setup process.
12
+ *
13
+ * Porting notes: upstream detects OpenTelemetry by trying to import it. Core
14
+ * takes no third-party dependencies, so the OpenTelemetry JS modules are
15
+ * handed in instead, once, at startup:
16
+ *
17
+ * @example
18
+ * import * as api from "@opentelemetry/api";
19
+ * import * as sdk from "@opentelemetry/sdk-trace-base";
20
+ * import * as resources from "@opentelemetry/resources";
21
+ * import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
22
+ *
23
+ * registerOpenTelemetry({ api, sdk, resources });
24
+ * setupTracing({
25
+ * serviceName: "my-service",
26
+ * exporter: new OTLPTraceExporter({ url: "http://localhost:4318/v1/traces" }),
27
+ * });
28
+ *
29
+ * Until `registerOpenTelemetry()` is called, `isTracingAvailable()` is false and
30
+ * every tracing helper is a no-op, as upstream behaves without OpenTelemetry.
31
+ */
32
+ import { rethrowIfCancelled } from "@pipedog/asyncio";
33
+ import { logger } from "../logger.js";
34
+ let openTelemetry = null;
35
+ /**
36
+ * Make OpenTelemetry available to Pipecat (upstream's optional import).
37
+ * Pass `null` to disable tracing again.
38
+ */
39
+ export function registerOpenTelemetry(modules) {
40
+ openTelemetry = modules;
41
+ }
42
+ /** The registered OpenTelemetry modules, or null if tracing is unavailable. */
43
+ export function getOpenTelemetry() {
44
+ return openTelemetry;
45
+ }
46
+ /**
47
+ * Check if OpenTelemetry tracing is available and configured.
48
+ *
49
+ * @returns True if tracing is available, False otherwise.
50
+ */
51
+ export function isTracingAvailable() {
52
+ return openTelemetry !== null;
53
+ }
54
+ function getenv(name) {
55
+ return globalThis.process?.env?.[name];
56
+ }
57
+ /**
58
+ * Set up OpenTelemetry tracing with a user-provided exporter.
59
+ *
60
+ * Requires `registerOpenTelemetry()` to have been called with the `sdk` and
61
+ * `resources` modules.
62
+ *
63
+ * @returns True if setup was successful, False otherwise.
64
+ *
65
+ * @example
66
+ * // With OTLP exporter
67
+ * const exporter = new OTLPTraceExporter({ url: "http://localhost:4318/v1/traces" });
68
+ * setupTracing({ serviceName: "my-service", exporter });
69
+ */
70
+ export function setupTracing(options = {}) {
71
+ const serviceName = options.serviceName ?? "pipecat";
72
+ const exporter = options.exporter ?? null;
73
+ const consoleExport = options.consoleExport ?? false;
74
+ const otel = openTelemetry;
75
+ if (!otel) {
76
+ return false;
77
+ }
78
+ try {
79
+ const { sdk, resources } = otel;
80
+ if (!sdk || !resources) {
81
+ throw new Error("the OpenTelemetry `sdk` and `resources` modules were not registered");
82
+ }
83
+ // Create a resource with service info
84
+ const resource = resources.resourceFromAttributes({
85
+ "service.name": serviceName,
86
+ "service.instance.id": getenv("HOSTNAME") ?? "unknown",
87
+ "deployment.environment": getenv("ENVIRONMENT") ?? "development",
88
+ });
89
+ const spanProcessors = [];
90
+ // Add console exporter if requested (good for debugging)
91
+ if (consoleExport) {
92
+ const consoleExporter = new sdk.ConsoleSpanExporter();
93
+ spanProcessors.push(new sdk.BatchSpanProcessor(consoleExporter));
94
+ }
95
+ // Add user-provided exporter if available
96
+ if (exporter) {
97
+ spanProcessors.push(new sdk.BatchSpanProcessor(exporter));
98
+ }
99
+ // Set up the tracer provider with the resource
100
+ const tracerProvider = new sdk.BasicTracerProvider({ resource, spanProcessors });
101
+ otel.api.trace.setGlobalTracerProvider(tracerProvider);
102
+ return true;
103
+ }
104
+ catch (e) {
105
+ rethrowIfCancelled(e);
106
+ logger.error(`Error setting up tracing: ${e instanceof Error ? e.message : e}`);
107
+ return false;
108
+ }
109
+ }
110
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Pipeline-scoped tracing context for OpenTelemetry tracing in Pipecat.
3
+ *
4
+ * This module provides a per-pipeline tracing context that holds the current
5
+ * conversation and turn span contexts. Each PipelineWorker creates its own
6
+ * TracingContext, ensuring concurrent pipelines do not interfere with each
7
+ * other.
8
+ */
9
+ import { type OtelContext, type OtelSpanContext } from "./setup.ts";
10
+ /**
11
+ * Pipeline-scoped tracing context.
12
+ *
13
+ * Holds the current conversation and turn span contexts for a single pipeline.
14
+ * Created by PipelineWorker, passed to TurnTraceObserver (writer) and services
15
+ * (readers) via StartFrame.
16
+ */
17
+ export declare class TracingContext {
18
+ protected _conversationContext: OtelContext | null;
19
+ protected _turnContext: OtelContext | null;
20
+ protected _conversationId: string | null;
21
+ /**
22
+ * Set the current conversation context.
23
+ *
24
+ * @param spanContext The span context for the current conversation or null to clear it.
25
+ * @param conversationId Optional ID for the conversation.
26
+ */
27
+ setConversationContext(spanContext: OtelSpanContext | null, conversationId?: string | null): void;
28
+ /**
29
+ * Get the OpenTelemetry context for the current conversation.
30
+ *
31
+ * @returns The current conversation context or null if not available.
32
+ */
33
+ getConversationContext(): OtelContext | null;
34
+ /**
35
+ * Set the current turn context.
36
+ *
37
+ * @param spanContext The span context for the current turn or null to clear it.
38
+ */
39
+ setTurnContext(spanContext: OtelSpanContext | null): void;
40
+ /**
41
+ * Get the OpenTelemetry context for the current turn.
42
+ *
43
+ * @returns The current turn context or null if not available.
44
+ */
45
+ getTurnContext(): OtelContext | null;
46
+ /** The ID for the current conversation, or null if not available. */
47
+ get conversationId(): string | null;
48
+ /**
49
+ * Generate a new conversation ID.
50
+ *
51
+ * @returns A new randomly generated UUID string.
52
+ */
53
+ static generateConversationId(): string;
54
+ }
55
+ //# sourceMappingURL=tracing_context.d.ts.map
@@ -0,0 +1,97 @@
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/tracing_context.py
6
+ /**
7
+ * Pipeline-scoped tracing context for OpenTelemetry tracing in Pipecat.
8
+ *
9
+ * This module provides a per-pipeline tracing context that holds the current
10
+ * conversation and turn span contexts. Each PipelineWorker creates its own
11
+ * TracingContext, ensuring concurrent pipelines do not interfere with each
12
+ * other.
13
+ */
14
+ import { getOpenTelemetry } from "./setup.js";
15
+ /** Wrap a span context in a non-recording span and put it in a context. */
16
+ function contextWithSpanContext(spanContext) {
17
+ const otel = getOpenTelemetry();
18
+ if (!otel)
19
+ return null;
20
+ const nonRecordingSpan = otel.api.trace.wrapSpanContext(spanContext);
21
+ return otel.api.trace.setSpan(otel.api.context.active(), nonRecordingSpan);
22
+ }
23
+ /**
24
+ * Pipeline-scoped tracing context.
25
+ *
26
+ * Holds the current conversation and turn span contexts for a single pipeline.
27
+ * Created by PipelineWorker, passed to TurnTraceObserver (writer) and services
28
+ * (readers) via StartFrame.
29
+ */
30
+ export class TracingContext {
31
+ _conversationContext = null;
32
+ _turnContext = null;
33
+ _conversationId = null;
34
+ /**
35
+ * Set the current conversation context.
36
+ *
37
+ * @param spanContext The span context for the current conversation or null to clear it.
38
+ * @param conversationId Optional ID for the conversation.
39
+ */
40
+ setConversationContext(spanContext, conversationId = null) {
41
+ if (getOpenTelemetry() === null) {
42
+ return;
43
+ }
44
+ this._conversationId = conversationId;
45
+ if (spanContext) {
46
+ this._conversationContext = contextWithSpanContext(spanContext);
47
+ }
48
+ else {
49
+ this._conversationContext = null;
50
+ }
51
+ }
52
+ /**
53
+ * Get the OpenTelemetry context for the current conversation.
54
+ *
55
+ * @returns The current conversation context or null if not available.
56
+ */
57
+ getConversationContext() {
58
+ return this._conversationContext;
59
+ }
60
+ /**
61
+ * Set the current turn context.
62
+ *
63
+ * @param spanContext The span context for the current turn or null to clear it.
64
+ */
65
+ setTurnContext(spanContext) {
66
+ if (getOpenTelemetry() === null) {
67
+ return;
68
+ }
69
+ if (spanContext) {
70
+ this._turnContext = contextWithSpanContext(spanContext);
71
+ }
72
+ else {
73
+ this._turnContext = null;
74
+ }
75
+ }
76
+ /**
77
+ * Get the OpenTelemetry context for the current turn.
78
+ *
79
+ * @returns The current turn context or null if not available.
80
+ */
81
+ getTurnContext() {
82
+ return this._turnContext;
83
+ }
84
+ /** The ID for the current conversation, or null if not available. */
85
+ get conversationId() {
86
+ return this._conversationId;
87
+ }
88
+ /**
89
+ * Generate a new conversation ID.
90
+ *
91
+ * @returns A new randomly generated UUID string.
92
+ */
93
+ static generateConversationId() {
94
+ return crypto.randomUUID();
95
+ }
96
+ }
97
+ //# sourceMappingURL=tracing_context.js.map
@@ -0,0 +1,90 @@
1
+ import { BaseObserver, type BaseObserverOptions, type FramePushed } from "../../observers/base_observer.ts";
2
+ import type { TurnTrackingObserver } from "../../observers/turn_tracking_observer.ts";
3
+ import type { UserBotLatencyObserver } from "../../observers/user_bot_latency_observer.ts";
4
+ import { type OtelAttributeValue, type OtelSpan, type OtelSpanContext, type OtelTracer } from "./setup.ts";
5
+ import { TracingContext } from "./tracing_context.ts";
6
+ export interface TurnTraceObserverOptions extends BaseObserverOptions {
7
+ /** The turn tracking observer to monitor. */
8
+ turnTracker: TurnTrackingObserver;
9
+ /** The latency tracking observer for user-bot latency. */
10
+ latencyTracker: UserBotLatencyObserver;
11
+ /** Optional conversation ID for grouping turns. */
12
+ conversationId?: string | null;
13
+ /** Additional attributes to add to spans. */
14
+ additionalSpanAttributes?: Record<string, OtelAttributeValue> | null;
15
+ /** Pipeline-scoped tracing context for span hierarchy. */
16
+ tracingContext?: TracingContext | null;
17
+ }
18
+ /**
19
+ * Observer that creates trace spans for each conversation turn.
20
+ *
21
+ * This observer uses TurnTrackingObserver to track turns and creates
22
+ * OpenTelemetry spans for each turn. Service spans (STT, LLM, TTS)
23
+ * become children of the turn spans.
24
+ *
25
+ * If conversation tracing is enabled, turns become children of a
26
+ * conversation span that encapsulates the entire session.
27
+ */
28
+ export declare class TurnTraceObserver extends BaseObserver {
29
+ protected _turnTracker: TurnTrackingObserver;
30
+ protected _latencyTracker: UserBotLatencyObserver;
31
+ protected _tracingContext: TracingContext;
32
+ protected _currentSpan: OtelSpan | null;
33
+ protected _currentTurnNumber: number;
34
+ protected _traceContextMap: Map<number, OtelSpanContext>;
35
+ protected _tracer: OtelTracer | null;
36
+ protected _conversationSpan: OtelSpan | null;
37
+ protected _conversationId: string | null;
38
+ protected _additionalSpanAttributes: Record<string, OtelAttributeValue>;
39
+ /** Initialize the turn trace observer. */
40
+ constructor(options: TurnTraceObserverOptions);
41
+ /**
42
+ * Handle latency measurement events.
43
+ *
44
+ * Called when the latency tracker measures user-to-bot latency.
45
+ * Adds the latency as an attribute to the current turn span.
46
+ *
47
+ * @param latencySeconds The measured latency in seconds.
48
+ */
49
+ protected _handleLatencyMeasured(latencySeconds: number): Promise<void>;
50
+ /**
51
+ * Process a frame without modifying it.
52
+ *
53
+ * Handles StartFrame to begin conversation tracing early, ensuring
54
+ * that any spans created before Turn 1 (e.g., from flow initialization)
55
+ * are properly attached to the conversation trace.
56
+ *
57
+ * @param data The frame push event data.
58
+ */
59
+ onPushFrame(data: FramePushed): Promise<void>;
60
+ /**
61
+ * Start a new conversation span.
62
+ *
63
+ * @param conversationId Optional custom ID for the conversation. If null, a UUID will be generated.
64
+ */
65
+ startConversationTracing(conversationId?: string | null): void;
66
+ /** End the current conversation span and ensure the last turn is closed. */
67
+ endConversationTracing(): void;
68
+ /** Handle a turn start event by creating a new span. */
69
+ protected _handleTurnStarted(turnNumber: number): Promise<void>;
70
+ /** Handle a turn end event by ending the current span. */
71
+ protected _handleTurnEnded(turnNumber: number, duration: number, wasInterrupted: boolean): Promise<void>;
72
+ /**
73
+ * Get the span context for the current turn.
74
+ *
75
+ * This can be used by services to create child spans.
76
+ *
77
+ * @returns The current turn's span context or null if not available.
78
+ */
79
+ getCurrentTurnContext(): OtelSpanContext | null;
80
+ /**
81
+ * Get the span context for a specific turn.
82
+ *
83
+ * This can be used by services to create child spans.
84
+ *
85
+ * @param turnNumber The turn number to get context for.
86
+ * @returns The specified turn's span context or null if not available.
87
+ */
88
+ getTurnContext(turnNumber: number): OtelSpanContext | null;
89
+ }
90
+ //# sourceMappingURL=turn_trace_observer.d.ts.map
@@ -0,0 +1,219 @@
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/turn_trace_observer.py
6
+ /**
7
+ * Turn trace observer for OpenTelemetry tracing in Pipecat.
8
+ *
9
+ * This module provides an observer that creates trace spans for each
10
+ * conversation turn, integrating with the turn tracking system to provide
11
+ * hierarchical tracing of conversation flows.
12
+ */
13
+ import { StartFrame } from "../../frames/frames.js";
14
+ import { BaseObserver, } from "../../observers/base_observer.js";
15
+ import { logger } from "../logger.js";
16
+ import { getOpenTelemetry, isTracingAvailable, } from "./setup.js";
17
+ import { TracingContext } from "./tracing_context.js";
18
+ /**
19
+ * Observer that creates trace spans for each conversation turn.
20
+ *
21
+ * This observer uses TurnTrackingObserver to track turns and creates
22
+ * OpenTelemetry spans for each turn. Service spans (STT, LLM, TTS)
23
+ * become children of the turn spans.
24
+ *
25
+ * If conversation tracing is enabled, turns become children of a
26
+ * conversation span that encapsulates the entire session.
27
+ */
28
+ export class TurnTraceObserver extends BaseObserver {
29
+ _turnTracker;
30
+ _latencyTracker;
31
+ _tracingContext;
32
+ _currentSpan = null;
33
+ _currentTurnNumber = 0;
34
+ _traceContextMap = new Map();
35
+ _tracer;
36
+ // Conversation tracking properties
37
+ _conversationSpan = null;
38
+ _conversationId;
39
+ _additionalSpanAttributes;
40
+ /** Initialize the turn trace observer. */
41
+ constructor(options) {
42
+ super(options);
43
+ this._turnTracker = options.turnTracker;
44
+ this._latencyTracker = options.latencyTracker;
45
+ this._tracingContext = options.tracingContext || new TracingContext();
46
+ this._tracer = getOpenTelemetry()?.api.trace.getTracer("pipecat.turn") ?? null;
47
+ this._conversationId = options.conversationId ?? null;
48
+ this._additionalSpanAttributes = options.additionalSpanAttributes || {};
49
+ this._turnTracker.eventHandler("on_turn_started", async (_tracker, turnNumber) => {
50
+ await this._handleTurnStarted(turnNumber);
51
+ });
52
+ this._turnTracker.eventHandler("on_turn_ended", async (_tracker, turnNumber, duration, wasInterrupted) => {
53
+ await this._handleTurnEnded(turnNumber, duration, wasInterrupted);
54
+ });
55
+ this._latencyTracker.eventHandler("on_latency_measured", async (_tracker, latencySeconds) => {
56
+ await this._handleLatencyMeasured(latencySeconds);
57
+ });
58
+ }
59
+ /**
60
+ * Handle latency measurement events.
61
+ *
62
+ * Called when the latency tracker measures user-to-bot latency.
63
+ * Adds the latency as an attribute to the current turn span.
64
+ *
65
+ * @param latencySeconds The measured latency in seconds.
66
+ */
67
+ async _handleLatencyMeasured(latencySeconds) {
68
+ if (this._currentSpan && isTracingAvailable()) {
69
+ this._currentSpan.setAttribute("turn.user_bot_latency_seconds", latencySeconds);
70
+ logger.debug(`Turn ${this._currentTurnNumber} user-bot latency: ${latencySeconds.toFixed(3)}s`);
71
+ }
72
+ }
73
+ /**
74
+ * Process a frame without modifying it.
75
+ *
76
+ * Handles StartFrame to begin conversation tracing early, ensuring
77
+ * that any spans created before Turn 1 (e.g., from flow initialization)
78
+ * are properly attached to the conversation trace.
79
+ *
80
+ * @param data The frame push event data.
81
+ */
82
+ async onPushFrame(data) {
83
+ if (data.frame instanceof StartFrame && !this._conversationSpan) {
84
+ this.startConversationTracing(this._conversationId);
85
+ }
86
+ }
87
+ /**
88
+ * Start a new conversation span.
89
+ *
90
+ * @param conversationId Optional custom ID for the conversation. If null, a UUID will be generated.
91
+ */
92
+ startConversationTracing(conversationId = null) {
93
+ if (!isTracingAvailable() || !this._tracer) {
94
+ return;
95
+ }
96
+ // Generate a conversation ID if not provided
97
+ if (conversationId === null) {
98
+ conversationId = TracingContext.generateConversationId();
99
+ logger.debug(`Generated new conversation ID: ${conversationId}`);
100
+ }
101
+ this._conversationId = conversationId;
102
+ // Create a new span for this conversation
103
+ const conversationSpan = this._tracer.startSpan("conversation");
104
+ this._conversationSpan = conversationSpan;
105
+ // Set span attributes
106
+ conversationSpan.setAttribute("conversation.id", conversationId);
107
+ conversationSpan.setAttribute("conversation.type", "voice");
108
+ // Set custom otel attributes if provided
109
+ for (const [k, v] of Object.entries(this._additionalSpanAttributes || {})) {
110
+ conversationSpan.setAttribute(k, v);
111
+ }
112
+ // Update the tracing context
113
+ this._tracingContext.setConversationContext(conversationSpan.spanContext(), conversationId);
114
+ logger.debug(`Started tracing for Conversation ${conversationId}`);
115
+ }
116
+ /** End the current conversation span and ensure the last turn is closed. */
117
+ endConversationTracing() {
118
+ if (!isTracingAvailable()) {
119
+ return;
120
+ }
121
+ // First, ensure any active turn is closed properly
122
+ if (this._currentSpan) {
123
+ // If we have an active turn span, end it with a standard duration
124
+ logger.debug(`Ending Turn ${this._currentTurnNumber} due to conversation end`);
125
+ this._currentSpan.setAttribute("turn.was_interrupted", true);
126
+ this._currentSpan.setAttribute("turn.ended_by_conversation_end", true);
127
+ this._currentSpan.end();
128
+ this._currentSpan = null;
129
+ // Clear the turn context
130
+ this._tracingContext.setTurnContext(null);
131
+ }
132
+ // Now end the conversation span if it exists
133
+ if (this._conversationSpan) {
134
+ // End the span
135
+ this._conversationSpan.end();
136
+ this._conversationSpan = null;
137
+ // Clear the conversation context
138
+ this._tracingContext.setConversationContext(null);
139
+ logger.debug(`Ended tracing for Conversation ${this._conversationId}`);
140
+ this._conversationId = null;
141
+ }
142
+ }
143
+ /** Handle a turn start event by creating a new span. */
144
+ async _handleTurnStarted(turnNumber) {
145
+ if (!isTracingAvailable() || !this._tracer) {
146
+ return;
147
+ }
148
+ if (turnNumber === 1 && !this._conversationSpan) {
149
+ this.startConversationTracing(this._conversationId);
150
+ }
151
+ // Get the parent context - conversation if available, otherwise use root context
152
+ let parentContext = null;
153
+ if (this._conversationSpan) {
154
+ parentContext = this._tracingContext.getConversationContext();
155
+ }
156
+ // Create a new span for this turn
157
+ const currentSpan = this._tracer.startSpan("turn", undefined, parentContext ?? undefined);
158
+ this._currentSpan = currentSpan;
159
+ this._currentTurnNumber = turnNumber;
160
+ // Set span attributes
161
+ currentSpan.setAttribute("turn.number", turnNumber);
162
+ currentSpan.setAttribute("turn.type", "conversation");
163
+ // Add conversation ID attribute if available
164
+ if (this._conversationId) {
165
+ currentSpan.setAttribute("conversation.id", this._conversationId);
166
+ }
167
+ // Store the span context so services can become children of this span
168
+ this._traceContextMap.set(turnNumber, currentSpan.spanContext());
169
+ // Update the tracing context so services can access this span
170
+ this._tracingContext.setTurnContext(currentSpan.spanContext());
171
+ logger.debug(`Started tracing for Turn ${turnNumber}`);
172
+ }
173
+ /** Handle a turn end event by ending the current span. */
174
+ async _handleTurnEnded(turnNumber, duration, wasInterrupted) {
175
+ if (!isTracingAvailable() || !this._currentSpan) {
176
+ return;
177
+ }
178
+ // Only end the span if it matches the current turn
179
+ if (turnNumber === this._currentTurnNumber) {
180
+ // Set additional attributes
181
+ this._currentSpan.setAttribute("turn.duration_seconds", duration);
182
+ this._currentSpan.setAttribute("turn.was_interrupted", wasInterrupted);
183
+ // End the span
184
+ this._currentSpan.end();
185
+ this._currentSpan = null;
186
+ // Clear the turn context
187
+ this._tracingContext.setTurnContext(null);
188
+ logger.debug(`Ended tracing for Turn ${turnNumber}`);
189
+ }
190
+ }
191
+ /**
192
+ * Get the span context for the current turn.
193
+ *
194
+ * This can be used by services to create child spans.
195
+ *
196
+ * @returns The current turn's span context or null if not available.
197
+ */
198
+ getCurrentTurnContext() {
199
+ if (!isTracingAvailable() || !this._currentSpan) {
200
+ return null;
201
+ }
202
+ return this._currentSpan.spanContext();
203
+ }
204
+ /**
205
+ * Get the span context for a specific turn.
206
+ *
207
+ * This can be used by services to create child spans.
208
+ *
209
+ * @param turnNumber The turn number to get context for.
210
+ * @returns The specified turn's span context or null if not available.
211
+ */
212
+ getTurnContext(turnNumber) {
213
+ if (!isTracingAvailable()) {
214
+ return null;
215
+ }
216
+ return this._traceContextMap.get(turnNumber) ?? null;
217
+ }
218
+ }
219
+ //# sourceMappingURL=turn_trace_observer.js.map