@pipedog/core 0.0.0 → 0.2.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 (736) 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/engine.d.ts +60 -0
  42. package/dist/audio/resamplers/engine.js +89 -0
  43. package/dist/audio/resamplers/index.d.ts +2 -0
  44. package/dist/audio/resamplers/index.js +8 -0
  45. package/dist/audio/resamplers/resampy_resampler.d.ts +10 -0
  46. package/dist/audio/resamplers/resampy_resampler.js +15 -0
  47. package/dist/audio/resamplers/sinc_engine.d.ts +10 -0
  48. package/dist/audio/resamplers/sinc_engine.js +235 -0
  49. package/dist/audio/resamplers/soxr_resampler.d.ts +58 -0
  50. package/dist/audio/resamplers/soxr_resampler.js +79 -0
  51. package/dist/audio/resamplers/soxr_stream_resampler.d.ts +78 -0
  52. package/dist/audio/resamplers/soxr_stream_resampler.js +159 -0
  53. package/dist/audio/turn/base_turn_analyzer.d.ts +84 -0
  54. package/dist/audio/turn/base_turn_analyzer.js +61 -0
  55. package/dist/audio/turn/index.d.ts +2 -0
  56. package/dist/audio/turn/index.js +8 -0
  57. package/dist/audio/turn/smart_turn/_whisper_features.d.ts +30 -0
  58. package/dist/audio/turn/smart_turn/_whisper_features.js +225 -0
  59. package/dist/audio/turn/smart_turn/base_smart_turn.d.ts +94 -0
  60. package/dist/audio/turn/smart_turn/base_smart_turn.js +239 -0
  61. package/dist/audio/turn/smart_turn/local_smart_turn_v3.d.ts +76 -0
  62. package/dist/audio/turn/smart_turn/local_smart_turn_v3.js +151 -0
  63. package/dist/audio/utils.d.ts +224 -0
  64. package/dist/audio/utils.js +634 -0
  65. package/dist/audio/vad/data/index.d.ts +2 -0
  66. package/dist/audio/vad/data/index.js +8 -0
  67. package/dist/audio/vad/index.d.ts +2 -0
  68. package/dist/audio/vad/index.js +8 -0
  69. package/dist/audio/vad/vad_analyzer.d.ts +134 -0
  70. package/dist/audio/vad/vad_analyzer.js +249 -0
  71. package/dist/audio/vad/vad_controller.d.ts +143 -0
  72. package/dist/audio/vad/vad_controller.js +228 -0
  73. package/dist/audio/volume.d.ts +38 -0
  74. package/dist/audio/volume.js +75 -0
  75. package/dist/bus/adapters/base.d.ts +35 -0
  76. package/dist/bus/adapters/base.js +19 -0
  77. package/dist/bus/adapters/index.d.ts +10 -0
  78. package/dist/bus/adapters/index.js +15 -0
  79. package/dist/bus/adapters/llm_context_adapter.d.ts +36 -0
  80. package/dist/bus/adapters/llm_context_adapter.js +82 -0
  81. package/dist/bus/adapters/tools_schema_adapter.d.ts +25 -0
  82. package/dist/bus/adapters/tools_schema_adapter.js +70 -0
  83. package/dist/bus/bridge_processor.d.ts +111 -0
  84. package/dist/bus/bridge_processor.js +166 -0
  85. package/dist/bus/bus.d.ts +110 -0
  86. package/dist/bus/bus.js +200 -0
  87. package/dist/bus/index.d.ts +22 -0
  88. package/dist/bus/index.js +27 -0
  89. package/dist/bus/local/async_queue.d.ts +12 -0
  90. package/dist/bus/local/async_queue.js +21 -0
  91. package/dist/bus/local/index.d.ts +3 -0
  92. package/dist/bus/local/index.js +8 -0
  93. package/dist/bus/messages.d.ts +378 -0
  94. package/dist/bus/messages.js +357 -0
  95. package/dist/bus/network/index.d.ts +16 -0
  96. package/dist/bus/network/index.js +21 -0
  97. package/dist/bus/queue.d.ts +27 -0
  98. package/dist/bus/queue.js +51 -0
  99. package/dist/bus/serializers/base.d.ts +25 -0
  100. package/dist/bus/serializers/base.js +14 -0
  101. package/dist/bus/serializers/index.d.ts +9 -0
  102. package/dist/bus/serializers/index.js +14 -0
  103. package/dist/bus/serializers/json.d.ts +77 -0
  104. package/dist/bus/serializers/json.js +367 -0
  105. package/dist/bus/subscriber.d.ts +46 -0
  106. package/dist/bus/subscriber.js +27 -0
  107. package/dist/bus/ui/index.d.ts +3 -0
  108. package/dist/bus/ui/index.js +8 -0
  109. package/dist/bus/ui/messages.d.ts +186 -0
  110. package/dist/bus/ui/messages.js +171 -0
  111. package/dist/classifiers/base_classifier.d.ts +263 -0
  112. package/dist/classifiers/base_classifier.js +346 -0
  113. package/dist/classifiers/cloudflare/clef/classifier.d.ts +70 -0
  114. package/dist/classifiers/cloudflare/clef/classifier.js +204 -0
  115. package/dist/classifiers/cloudflare/clef/client.d.ts +104 -0
  116. package/dist/classifiers/cloudflare/clef/client.js +234 -0
  117. package/dist/classifiers/cloudflare/clef/index.d.ts +2 -0
  118. package/dist/classifiers/cloudflare/clef/index.js +8 -0
  119. package/dist/classifiers/cloudflare/index.d.ts +2 -0
  120. package/dist/classifiers/cloudflare/index.js +8 -0
  121. package/dist/classifiers/http_client.d.ts +70 -0
  122. package/dist/classifiers/http_client.js +161 -0
  123. package/dist/classifiers/index.d.ts +2 -0
  124. package/dist/classifiers/index.js +8 -0
  125. package/dist/classifiers/jev/classifier.d.ts +8 -0
  126. package/dist/classifiers/jev/classifier.js +13 -0
  127. package/dist/classifiers/jev/client.d.ts +8 -0
  128. package/dist/classifiers/jev/client.js +13 -0
  129. package/dist/classifiers/jev/index.d.ts +2 -0
  130. package/dist/classifiers/jev/index.js +8 -0
  131. package/dist/classifiers/llm/classifier.d.ts +72 -0
  132. package/dist/classifiers/llm/classifier.js +304 -0
  133. package/dist/classifiers/llm/index.d.ts +2 -0
  134. package/dist/classifiers/llm/index.js +8 -0
  135. package/dist/classifiers/openai/decisions/classifier.d.ts +77 -0
  136. package/dist/classifiers/openai/decisions/classifier.js +241 -0
  137. package/dist/classifiers/openai/decisions/client.d.ts +108 -0
  138. package/dist/classifiers/openai/decisions/client.js +234 -0
  139. package/dist/classifiers/openai/decisions/index.d.ts +2 -0
  140. package/dist/classifiers/openai/decisions/index.js +8 -0
  141. package/dist/classifiers/openai/index.d.ts +2 -0
  142. package/dist/classifiers/openai/index.js +8 -0
  143. package/dist/classifiers/typesafe/index.d.ts +2 -0
  144. package/dist/classifiers/typesafe/index.js +8 -0
  145. package/dist/classifiers/typesafe/jev/classifier.d.ts +70 -0
  146. package/dist/classifiers/typesafe/jev/classifier.js +220 -0
  147. package/dist/classifiers/typesafe/jev/client.d.ts +105 -0
  148. package/dist/classifiers/typesafe/jev/client.js +233 -0
  149. package/dist/classifiers/typesafe/jev/index.d.ts +2 -0
  150. package/dist/classifiers/typesafe/jev/index.js +8 -0
  151. package/dist/clocks/base_clock.d.ts +13 -0
  152. package/dist/clocks/base_clock.js +14 -0
  153. package/dist/clocks/index.d.ts +2 -0
  154. package/dist/clocks/index.js +8 -0
  155. package/dist/clocks/system_clock.d.ts +15 -0
  156. package/dist/clocks/system_clock.js +25 -0
  157. package/dist/frames/frames.d.ts +2533 -0
  158. package/dist/frames/frames.js +2485 -0
  159. package/dist/frames/index.d.ts +2 -0
  160. package/dist/frames/index.js +8 -0
  161. package/dist/frames/protobufs/frames_pb2.d.ts +229 -0
  162. package/dist/frames/protobufs/frames_pb2.js +466 -0
  163. package/dist/index.d.ts +11 -0
  164. package/dist/index.js +56 -0
  165. package/dist/metrics/index.d.ts +2 -0
  166. package/dist/metrics/index.js +8 -0
  167. package/dist/metrics/metrics.d.ts +276 -0
  168. package/dist/metrics/metrics.js +254 -0
  169. package/dist/observers/base_observer.d.ts +173 -0
  170. package/dist/observers/base_observer.js +151 -0
  171. package/dist/observers/error_observer.d.ts +75 -0
  172. package/dist/observers/error_observer.js +87 -0
  173. package/dist/observers/function_call_observer.d.ts +157 -0
  174. package/dist/observers/function_call_observer.js +222 -0
  175. package/dist/observers/index.d.ts +2 -0
  176. package/dist/observers/index.js +8 -0
  177. package/dist/observers/loggers/debug_log_observer.d.ts +91 -0
  178. package/dist/observers/loggers/debug_log_observer.js +228 -0
  179. package/dist/observers/loggers/index.d.ts +2 -0
  180. package/dist/observers/loggers/index.js +8 -0
  181. package/dist/observers/loggers/llm_log_observer.d.ts +24 -0
  182. package/dist/observers/loggers/llm_log_observer.js +110 -0
  183. package/dist/observers/loggers/metrics_log_observer.d.ts +85 -0
  184. package/dist/observers/loggers/metrics_log_observer.js +186 -0
  185. package/dist/observers/loggers/transcription_log_observer.d.ts +23 -0
  186. package/dist/observers/loggers/transcription_log_observer.js +74 -0
  187. package/dist/observers/service_metrics_observer.d.ts +168 -0
  188. package/dist/observers/service_metrics_observer.js +236 -0
  189. package/dist/observers/speaking_observer.d.ts +104 -0
  190. package/dist/observers/speaking_observer.js +150 -0
  191. package/dist/observers/startup_timing_observer.d.ts +221 -0
  192. package/dist/observers/startup_timing_observer.js +365 -0
  193. package/dist/observers/turn_tracking_observer.d.ts +78 -0
  194. package/dist/observers/turn_tracking_observer.js +189 -0
  195. package/dist/observers/user_bot_latency_observer.d.ts +411 -0
  196. package/dist/observers/user_bot_latency_observer.js +974 -0
  197. package/dist/pipeline/base_pipeline.d.ts +49 -0
  198. package/dist/pipeline/base_pipeline.js +101 -0
  199. package/dist/pipeline/capabilities.d.ts +76 -0
  200. package/dist/pipeline/capabilities.js +97 -0
  201. package/dist/pipeline/index.d.ts +2 -0
  202. package/dist/pipeline/index.js +8 -0
  203. package/dist/pipeline/job_context.d.ts +317 -0
  204. package/dist/pipeline/job_context.js +450 -0
  205. package/dist/pipeline/job_decorator.d.ts +54 -0
  206. package/dist/pipeline/job_decorator.js +92 -0
  207. package/dist/pipeline/llm_switcher.d.ts +84 -0
  208. package/dist/pipeline/llm_switcher.js +107 -0
  209. package/dist/pipeline/llm_with_backend.d.ts +435 -0
  210. package/dist/pipeline/llm_with_backend.js +806 -0
  211. package/dist/pipeline/parallel_pipeline.d.ts +83 -0
  212. package/dist/pipeline/parallel_pipeline.js +200 -0
  213. package/dist/pipeline/pipeline.d.ts +126 -0
  214. package/dist/pipeline/pipeline.js +196 -0
  215. package/dist/pipeline/service_switcher.d.ts +287 -0
  216. package/dist/pipeline/service_switcher.js +509 -0
  217. package/dist/pipeline/sync_parallel_pipeline.d.ts +192 -0
  218. package/dist/pipeline/sync_parallel_pipeline.js +387 -0
  219. package/dist/pipeline/worker.d.ts +821 -0
  220. package/dist/pipeline/worker.js +1656 -0
  221. package/dist/pipeline/worker_observer.d.ts +131 -0
  222. package/dist/pipeline/worker_observer.js +274 -0
  223. package/dist/pipeline/worker_ready_decorator.d.ts +45 -0
  224. package/dist/pipeline/worker_ready_decorator.js +76 -0
  225. package/dist/processors/aggregators/async_tool_messages.d.ts +146 -0
  226. package/dist/processors/aggregators/async_tool_messages.js +291 -0
  227. package/dist/processors/aggregators/dtmf_aggregator.d.ts +61 -0
  228. package/dist/processors/aggregators/dtmf_aggregator.js +144 -0
  229. package/dist/processors/aggregators/gated.d.ts +43 -0
  230. package/dist/processors/aggregators/gated.js +86 -0
  231. package/dist/processors/aggregators/gated_llm_context.d.ts +42 -0
  232. package/dist/processors/aggregators/gated_llm_context.js +86 -0
  233. package/dist/processors/aggregators/index.d.ts +2 -0
  234. package/dist/processors/aggregators/index.js +8 -0
  235. package/dist/processors/aggregators/llm_context.d.ts +370 -0
  236. package/dist/processors/aggregators/llm_context.js +580 -0
  237. package/dist/processors/aggregators/llm_context_summarizer.d.ts +219 -0
  238. package/dist/processors/aggregators/llm_context_summarizer.js +447 -0
  239. package/dist/processors/aggregators/llm_response.d.ts +37 -0
  240. package/dist/processors/aggregators/llm_response.js +71 -0
  241. package/dist/processors/aggregators/llm_response_universal.d.ts +966 -0
  242. package/dist/processors/aggregators/llm_response_universal.js +2394 -0
  243. package/dist/processors/aggregators/llm_text_processor.d.ts +53 -0
  244. package/dist/processors/aggregators/llm_text_processor.js +102 -0
  245. package/dist/processors/aggregators/sentence.d.ts +39 -0
  246. package/dist/processors/aggregators/sentence.js +69 -0
  247. package/dist/processors/async_generator.d.ts +42 -0
  248. package/dist/processors/async_generator.js +76 -0
  249. package/dist/processors/audio/audio_buffer_processor.d.ts +241 -0
  250. package/dist/processors/audio/audio_buffer_processor.js +565 -0
  251. package/dist/processors/audio/index.d.ts +2 -0
  252. package/dist/processors/audio/index.js +8 -0
  253. package/dist/processors/audio/vad_processor.d.ts +67 -0
  254. package/dist/processors/audio/vad_processor.js +103 -0
  255. package/dist/processors/consumer_processor.d.ts +49 -0
  256. package/dist/processors/consumer_processor.js +85 -0
  257. package/dist/processors/filters/frame_filter.d.ts +39 -0
  258. package/dist/processors/filters/frame_filter.js +52 -0
  259. package/dist/processors/filters/function_filter.d.ts +59 -0
  260. package/dist/processors/filters/function_filter.js +78 -0
  261. package/dist/processors/filters/identity_filter.d.ts +33 -0
  262. package/dist/processors/filters/identity_filter.js +37 -0
  263. package/dist/processors/filters/index.d.ts +2 -0
  264. package/dist/processors/filters/index.js +8 -0
  265. package/dist/processors/filters/null_filter.d.ts +34 -0
  266. package/dist/processors/filters/null_filter.js +47 -0
  267. package/dist/processors/filters/wake_notifier_filter.d.ts +48 -0
  268. package/dist/processors/filters/wake_notifier_filter.js +49 -0
  269. package/dist/processors/frame_processor.d.ts +360 -0
  270. package/dist/processors/frame_processor.js +932 -0
  271. package/dist/processors/frameworks/index.d.ts +2 -0
  272. package/dist/processors/frameworks/index.js +8 -0
  273. package/dist/processors/frameworks/rtvi/frames.d.ts +241 -0
  274. package/dist/processors/frameworks/rtvi/frames.js +259 -0
  275. package/dist/processors/frameworks/rtvi/index.d.ts +6 -0
  276. package/dist/processors/frameworks/rtvi/index.js +11 -0
  277. package/dist/processors/frameworks/rtvi/models.d.ts +1741 -0
  278. package/dist/processors/frameworks/rtvi/models.js +1807 -0
  279. package/dist/processors/frameworks/rtvi/observer.d.ts +340 -0
  280. package/dist/processors/frameworks/rtvi/observer.js +1113 -0
  281. package/dist/processors/frameworks/rtvi/processor.d.ts +182 -0
  282. package/dist/processors/frameworks/rtvi/processor.js +676 -0
  283. package/dist/processors/idle_frame_processor.d.ts +44 -0
  284. package/dist/processors/idle_frame_processor.js +86 -0
  285. package/dist/processors/index.d.ts +2 -0
  286. package/dist/processors/index.js +8 -0
  287. package/dist/processors/logger.d.ts +42 -0
  288. package/dist/processors/logger.js +87 -0
  289. package/dist/processors/metrics/frame_processor_metrics.d.ts +172 -0
  290. package/dist/processors/metrics/frame_processor_metrics.js +372 -0
  291. package/dist/processors/metrics/index.d.ts +2 -0
  292. package/dist/processors/metrics/index.js +8 -0
  293. package/dist/processors/producer_processor.d.ts +68 -0
  294. package/dist/processors/producer_processor.js +78 -0
  295. package/dist/processors/text_transformer.d.ts +30 -0
  296. package/dist/processors/text_transformer.js +48 -0
  297. package/dist/registry/index.d.ts +3 -0
  298. package/dist/registry/index.js +8 -0
  299. package/dist/registry/registry.d.ts +69 -0
  300. package/dist/registry/registry.js +149 -0
  301. package/dist/registry/types.d.ts +47 -0
  302. package/dist/registry/types.js +39 -0
  303. package/dist/serializers/base_serializer.d.ts +94 -0
  304. package/dist/serializers/base_serializer.js +82 -0
  305. package/dist/serializers/index.d.ts +2 -0
  306. package/dist/serializers/index.js +8 -0
  307. package/dist/services/ai_service.d.ts +145 -0
  308. package/dist/services/ai_service.js +262 -0
  309. package/dist/services/anthropic/index.d.ts +2 -0
  310. package/dist/services/anthropic/index.js +7 -0
  311. package/dist/services/assemblyai/index.d.ts +2 -0
  312. package/dist/services/assemblyai/index.js +7 -0
  313. package/dist/services/asyncai/index.d.ts +2 -0
  314. package/dist/services/asyncai/index.js +7 -0
  315. package/dist/services/aws/index.d.ts +2 -0
  316. package/dist/services/aws/index.js +7 -0
  317. package/dist/services/azure/index.d.ts +2 -0
  318. package/dist/services/azure/index.js +7 -0
  319. package/dist/services/baseten/index.d.ts +2 -0
  320. package/dist/services/baseten/index.js +7 -0
  321. package/dist/services/bland/index.d.ts +2 -0
  322. package/dist/services/bland/index.js +7 -0
  323. package/dist/services/camb/index.d.ts +2 -0
  324. package/dist/services/camb/index.js +7 -0
  325. package/dist/services/cartesia/index.d.ts +2 -0
  326. package/dist/services/cartesia/index.js +7 -0
  327. package/dist/services/cerebras/index.d.ts +2 -0
  328. package/dist/services/cerebras/index.js +7 -0
  329. package/dist/services/crusoe/index.d.ts +2 -0
  330. package/dist/services/crusoe/index.js +7 -0
  331. package/dist/services/deepgram/index.d.ts +2 -0
  332. package/dist/services/deepgram/index.js +7 -0
  333. package/dist/services/deepseek/index.d.ts +2 -0
  334. package/dist/services/deepseek/index.js +7 -0
  335. package/dist/services/elevenlabs/index.d.ts +2 -0
  336. package/dist/services/elevenlabs/index.js +7 -0
  337. package/dist/services/fal/index.d.ts +2 -0
  338. package/dist/services/fal/index.js +7 -0
  339. package/dist/services/fireworks/index.d.ts +2 -0
  340. package/dist/services/fireworks/index.js +7 -0
  341. package/dist/services/fish/index.d.ts +2 -0
  342. package/dist/services/fish/index.js +7 -0
  343. package/dist/services/funasr/index.d.ts +3 -0
  344. package/dist/services/funasr/index.js +8 -0
  345. package/dist/services/gladia/index.d.ts +2 -0
  346. package/dist/services/gladia/index.js +7 -0
  347. package/dist/services/google/index.d.ts +2 -0
  348. package/dist/services/google/index.js +7 -0
  349. package/dist/services/gradium/index.d.ts +2 -0
  350. package/dist/services/gradium/index.js +7 -0
  351. package/dist/services/grok/index.d.ts +2 -0
  352. package/dist/services/grok/index.js +7 -0
  353. package/dist/services/groq/index.d.ts +2 -0
  354. package/dist/services/groq/index.js +7 -0
  355. package/dist/services/heygen/index.d.ts +2 -0
  356. package/dist/services/heygen/index.js +7 -0
  357. package/dist/services/hume/index.d.ts +2 -0
  358. package/dist/services/hume/index.js +7 -0
  359. package/dist/services/image_service.d.ts +52 -0
  360. package/dist/services/image_service.js +60 -0
  361. package/dist/services/inception/index.d.ts +2 -0
  362. package/dist/services/inception/index.js +7 -0
  363. package/dist/services/index.d.ts +2 -0
  364. package/dist/services/index.js +8 -0
  365. package/dist/services/inworld/index.d.ts +2 -0
  366. package/dist/services/inworld/index.js +7 -0
  367. package/dist/services/keenable/index.d.ts +2 -0
  368. package/dist/services/keenable/index.js +7 -0
  369. package/dist/services/kokoro/index.d.ts +2 -0
  370. package/dist/services/kokoro/index.js +7 -0
  371. package/dist/services/llm_service.d.ts +1106 -0
  372. package/dist/services/llm_service.js +2231 -0
  373. package/dist/services/mem0/index.d.ts +2 -0
  374. package/dist/services/mem0/index.js +7 -0
  375. package/dist/services/meta/index.d.ts +2 -0
  376. package/dist/services/meta/index.js +7 -0
  377. package/dist/services/minimax/index.d.ts +2 -0
  378. package/dist/services/minimax/index.js +7 -0
  379. package/dist/services/mistral/index.d.ts +2 -0
  380. package/dist/services/mistral/index.js +7 -0
  381. package/dist/services/moondream/index.d.ts +2 -0
  382. package/dist/services/moondream/index.js +7 -0
  383. package/dist/services/moonshine/index.d.ts +2 -0
  384. package/dist/services/moonshine/index.js +7 -0
  385. package/dist/services/nebius/index.d.ts +2 -0
  386. package/dist/services/nebius/index.js +7 -0
  387. package/dist/services/neuphonic/index.d.ts +2 -0
  388. package/dist/services/neuphonic/index.js +7 -0
  389. package/dist/services/novita/index.d.ts +2 -0
  390. package/dist/services/novita/index.js +7 -0
  391. package/dist/services/nvidia/index.d.ts +2 -0
  392. package/dist/services/nvidia/index.js +11 -0
  393. package/dist/services/ollama/index.d.ts +2 -0
  394. package/dist/services/ollama/index.js +7 -0
  395. package/dist/services/openai/index.d.ts +2 -0
  396. package/dist/services/openai/index.js +7 -0
  397. package/dist/services/openclaw/index.d.ts +14 -0
  398. package/dist/services/openclaw/index.js +19 -0
  399. package/dist/services/openrouter/index.d.ts +2 -0
  400. package/dist/services/openrouter/index.js +7 -0
  401. package/dist/services/perplexity/index.d.ts +2 -0
  402. package/dist/services/perplexity/index.js +7 -0
  403. package/dist/services/piper/index.d.ts +2 -0
  404. package/dist/services/piper/index.js +7 -0
  405. package/dist/services/pocket_tts/index.d.ts +2 -0
  406. package/dist/services/pocket_tts/index.js +7 -0
  407. package/dist/services/qwen/index.d.ts +2 -0
  408. package/dist/services/qwen/index.js +7 -0
  409. package/dist/services/resembleai/index.d.ts +2 -0
  410. package/dist/services/resembleai/index.js +7 -0
  411. package/dist/services/rime/index.d.ts +2 -0
  412. package/dist/services/rime/index.js +7 -0
  413. package/dist/services/sambanova/index.d.ts +2 -0
  414. package/dist/services/sambanova/index.js +7 -0
  415. package/dist/services/sarvam/index.d.ts +2 -0
  416. package/dist/services/sarvam/index.js +7 -0
  417. package/dist/services/settings.d.ts +356 -0
  418. package/dist/services/settings.js +437 -0
  419. package/dist/services/simli/index.d.ts +2 -0
  420. package/dist/services/simli/index.js +7 -0
  421. package/dist/services/smallest/index.d.ts +2 -0
  422. package/dist/services/smallest/index.js +7 -0
  423. package/dist/services/soniox/index.d.ts +2 -0
  424. package/dist/services/soniox/index.js +7 -0
  425. package/dist/services/speechify/index.d.ts +2 -0
  426. package/dist/services/speechify/index.js +7 -0
  427. package/dist/services/speechmatics/index.d.ts +2 -0
  428. package/dist/services/speechmatics/index.js +7 -0
  429. package/dist/services/stt_latency.d.ts +62 -0
  430. package/dist/services/stt_latency.js +71 -0
  431. package/dist/services/stt_service.d.ts +601 -0
  432. package/dist/services/stt_service.js +1044 -0
  433. package/dist/services/tavus/index.d.ts +2 -0
  434. package/dist/services/tavus/index.js +7 -0
  435. package/dist/services/together/index.d.ts +2 -0
  436. package/dist/services/together/index.js +7 -0
  437. package/dist/services/tts_service.d.ts +909 -0
  438. package/dist/services/tts_service.js +2018 -0
  439. package/dist/services/ultravox/index.d.ts +2 -0
  440. package/dist/services/ultravox/index.js +9 -0
  441. package/dist/services/vision_service.d.ts +56 -0
  442. package/dist/services/vision_service.js +62 -0
  443. package/dist/services/websocket_service.d.ts +213 -0
  444. package/dist/services/websocket_service.js +654 -0
  445. package/dist/services/whisper/index.d.ts +2 -0
  446. package/dist/services/whisper/index.js +9 -0
  447. package/dist/services/xai/index.d.ts +2 -0
  448. package/dist/services/xai/index.js +9 -0
  449. package/dist/services/xtts/index.d.ts +2 -0
  450. package/dist/services/xtts/index.js +9 -0
  451. package/dist/tests/index.d.ts +2 -0
  452. package/dist/tests/index.js +8 -0
  453. package/dist/tests/utils.d.ts +123 -0
  454. package/dist/tests/utils.js +212 -0
  455. package/dist/transcriptions/index.d.ts +2 -0
  456. package/dist/transcriptions/index.js +8 -0
  457. package/dist/transcriptions/language.d.ts +376 -0
  458. package/dist/transcriptions/language.js +543 -0
  459. package/dist/transports/base_input.d.ts +149 -0
  460. package/dist/transports/base_input.js +338 -0
  461. package/dist/transports/base_output.d.ts +432 -0
  462. package/dist/transports/base_output.js +1231 -0
  463. package/dist/transports/base_transport.d.ts +223 -0
  464. package/dist/transports/base_transport.js +167 -0
  465. package/dist/transports/daily/index.d.ts +2 -0
  466. package/dist/transports/daily/index.js +9 -0
  467. package/dist/transports/heygen/index.d.ts +2 -0
  468. package/dist/transports/heygen/index.js +9 -0
  469. package/dist/transports/index.d.ts +2 -0
  470. package/dist/transports/index.js +8 -0
  471. package/dist/transports/lemonslice/index.d.ts +2 -0
  472. package/dist/transports/lemonslice/index.js +9 -0
  473. package/dist/transports/livekit/index.d.ts +2 -0
  474. package/dist/transports/livekit/index.js +9 -0
  475. package/dist/transports/local/index.d.ts +2 -0
  476. package/dist/transports/local/index.js +9 -0
  477. package/dist/transports/moq/index.d.ts +2 -0
  478. package/dist/transports/moq/index.js +9 -0
  479. package/dist/transports/smallwebrtc/index.d.ts +2 -0
  480. package/dist/transports/smallwebrtc/index.js +9 -0
  481. package/dist/transports/tavus/index.d.ts +2 -0
  482. package/dist/transports/tavus/index.js +9 -0
  483. package/dist/transports/video_in_sampler.d.ts +157 -0
  484. package/dist/transports/video_in_sampler.js +258 -0
  485. package/dist/transports/vonage/index.d.ts +2 -0
  486. package/dist/transports/vonage/index.js +9 -0
  487. package/dist/transports/websocket/index.d.ts +2 -0
  488. package/dist/transports/websocket/index.js +9 -0
  489. package/dist/transports/whatsapp/index.d.ts +2 -0
  490. package/dist/transports/whatsapp/index.js +9 -0
  491. package/dist/turns/eager_end_of_turn_mixin.d.ts +70 -0
  492. package/dist/turns/eager_end_of_turn_mixin.js +122 -0
  493. package/dist/turns/empty_user_turn.d.ts +55 -0
  494. package/dist/turns/empty_user_turn.js +53 -0
  495. package/dist/turns/index.d.ts +2 -0
  496. package/dist/turns/index.js +8 -0
  497. package/dist/turns/speculation_gate.d.ts +169 -0
  498. package/dist/turns/speculation_gate.js +294 -0
  499. package/dist/turns/types.d.ts +33 -0
  500. package/dist/turns/types.js +35 -0
  501. package/dist/turns/user_idle_controller.d.ts +94 -0
  502. package/dist/turns/user_idle_controller.js +187 -0
  503. package/dist/turns/user_mute/always_user_mute_strategy.d.ts +15 -0
  504. package/dist/turns/user_mute/always_user_mute_strategy.js +29 -0
  505. package/dist/turns/user_mute/base_user_mute_strategy.d.ts +39 -0
  506. package/dist/turns/user_mute/base_user_mute_strategy.js +45 -0
  507. package/dist/turns/user_mute/first_speech_user_mute_strategy.d.ts +28 -0
  508. package/dist/turns/user_mute/first_speech_user_mute_strategy.js +52 -0
  509. package/dist/turns/user_mute/function_call_user_mute_strategy.d.ts +25 -0
  510. package/dist/turns/user_mute/function_call_user_mute_strategy.js +50 -0
  511. package/dist/turns/user_mute/index.d.ts +6 -0
  512. package/dist/turns/user_mute/index.js +11 -0
  513. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.d.ts +43 -0
  514. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.js +76 -0
  515. package/dist/turns/user_start/base_user_turn_start_strategy.d.ts +135 -0
  516. package/dist/turns/user_start/base_user_turn_start_strategy.js +134 -0
  517. package/dist/turns/user_start/external_user_turn_start_strategy.d.ts +45 -0
  518. package/dist/turns/user_start/external_user_turn_start_strategy.js +64 -0
  519. package/dist/turns/user_start/index.d.ts +8 -0
  520. package/dist/turns/user_start/index.js +16 -0
  521. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.d.ts +133 -0
  522. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.js +243 -0
  523. package/dist/turns/user_start/min_words_user_turn_start_strategy.d.ts +60 -0
  524. package/dist/turns/user_start/min_words_user_turn_start_strategy.js +102 -0
  525. package/dist/turns/user_start/transcription_user_turn_start_strategy.d.ts +29 -0
  526. package/dist/turns/user_start/transcription_user_turn_start_strategy.js +43 -0
  527. package/dist/turns/user_start/vad_user_turn_start_strategy.d.ts +20 -0
  528. package/dist/turns/user_start/vad_user_turn_start_strategy.js +31 -0
  529. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.d.ts +141 -0
  530. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.js +238 -0
  531. package/dist/turns/user_stop/base_user_turn_stop_strategy.d.ts +174 -0
  532. package/dist/turns/user_stop/base_user_turn_stop_strategy.js +170 -0
  533. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.d.ts +81 -0
  534. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.js +107 -0
  535. package/dist/turns/user_stop/eager_match_policy.d.ts +36 -0
  536. package/dist/turns/user_stop/eager_match_policy.js +50 -0
  537. package/dist/turns/user_stop/eager_user_turn_stop_strategy.d.ts +84 -0
  538. package/dist/turns/user_stop/eager_user_turn_stop_strategy.js +154 -0
  539. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.d.ts +45 -0
  540. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.js +55 -0
  541. package/dist/turns/user_stop/external_user_turn_stop_strategy.d.ts +115 -0
  542. package/dist/turns/user_stop/external_user_turn_stop_strategy.js +205 -0
  543. package/dist/turns/user_stop/index.d.ts +10 -0
  544. package/dist/turns/user_stop/index.js +15 -0
  545. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.d.ts +44 -0
  546. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.js +59 -0
  547. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.d.ts +140 -0
  548. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.js +303 -0
  549. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.d.ts +135 -0
  550. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.js +332 -0
  551. package/dist/turns/user_turn_completion_mixin.d.ts +147 -0
  552. package/dist/turns/user_turn_completion_mixin.js +591 -0
  553. package/dist/turns/user_turn_controller.d.ts +134 -0
  554. package/dist/turns/user_turn_controller.js +335 -0
  555. package/dist/turns/user_turn_processor.d.ts +87 -0
  556. package/dist/turns/user_turn_processor.js +180 -0
  557. package/dist/turns/user_turn_strategies.d.ts +187 -0
  558. package/dist/turns/user_turn_strategies.js +222 -0
  559. package/dist/utils/async_tool_cancellation.d.ts +35 -0
  560. package/dist/utils/async_tool_cancellation.js +78 -0
  561. package/dist/utils/asyncio/index.d.ts +2 -0
  562. package/dist/utils/asyncio/index.js +7 -0
  563. package/dist/utils/asyncio/task_manager.d.ts +49 -0
  564. package/dist/utils/asyncio/task_manager.js +105 -0
  565. package/dist/utils/base_object.d.ts +76 -0
  566. package/dist/utils/base_object.js +154 -0
  567. package/dist/utils/context/aggregated_frame_sequencer.d.ts +491 -0
  568. package/dist/utils/context/aggregated_frame_sequencer.js +803 -0
  569. package/dist/utils/context/audio_context_manager.d.ts +131 -0
  570. package/dist/utils/context/audio_context_manager.js +233 -0
  571. package/dist/utils/context/index.d.ts +2 -0
  572. package/dist/utils/context/index.js +7 -0
  573. package/dist/utils/context/llm_context_summarization.d.ts +258 -0
  574. package/dist/utils/context/llm_context_summarization.js +511 -0
  575. package/dist/utils/context/text_segment_map.d.ts +611 -0
  576. package/dist/utils/context/text_segment_map.js +1132 -0
  577. package/dist/utils/context/word_completion_tracker.d.ts +273 -0
  578. package/dist/utils/context/word_completion_tracker.js +441 -0
  579. package/dist/utils/context/word_timestamp_tracker.d.ts +72 -0
  580. package/dist/utils/context/word_timestamp_tracker.js +98 -0
  581. package/dist/utils/deprecation.d.ts +28 -0
  582. package/dist/utils/deprecation.js +75 -0
  583. package/dist/utils/env.d.ts +38 -0
  584. package/dist/utils/env.js +62 -0
  585. package/dist/utils/errors.d.ts +75 -0
  586. package/dist/utils/errors.js +202 -0
  587. package/dist/utils/file_resolver.d.ts +126 -0
  588. package/dist/utils/file_resolver.js +314 -0
  589. package/dist/utils/file_storage.d.ts +115 -0
  590. package/dist/utils/file_storage.js +178 -0
  591. package/dist/utils/frame_queue.d.ts +36 -0
  592. package/dist/utils/frame_queue.js +66 -0
  593. package/dist/utils/http.d.ts +39 -0
  594. package/dist/utils/http.js +53 -0
  595. package/dist/utils/image.d.ts +14 -0
  596. package/dist/utils/image.js +63 -0
  597. package/dist/utils/index.d.ts +2 -0
  598. package/dist/utils/index.js +8 -0
  599. package/dist/utils/jpeg_encoder.d.ts +14 -0
  600. package/dist/utils/jpeg_encoder.js +315 -0
  601. package/dist/utils/log_config.d.ts +34 -0
  602. package/dist/utils/log_config.js +76 -0
  603. package/dist/utils/logger.d.ts +40 -0
  604. package/dist/utils/logger.js +91 -0
  605. package/dist/utils/mixin.d.ts +14 -0
  606. package/dist/utils/mixin.js +63 -0
  607. package/dist/utils/network.d.ts +73 -0
  608. package/dist/utils/network.js +90 -0
  609. package/dist/utils/security/allowed_origins.d.ts +16 -0
  610. package/dist/utils/security/allowed_origins.js +34 -0
  611. package/dist/utils/security/index.d.ts +2 -0
  612. package/dist/utils/security/index.js +7 -0
  613. package/dist/utils/security/redaction.d.ts +27 -0
  614. package/dist/utils/security/redaction.js +123 -0
  615. package/dist/utils/security/ssrf.d.ts +79 -0
  616. package/dist/utils/security/ssrf.js +327 -0
  617. package/dist/utils/shared.d.ts +35 -0
  618. package/dist/utils/shared.js +136 -0
  619. package/dist/utils/startup.d.ts +17 -0
  620. package/dist/utils/startup.js +130 -0
  621. package/dist/utils/string.d.ts +116 -0
  622. package/dist/utils/string.js +460 -0
  623. package/dist/utils/sync/base_notifier.d.ts +25 -0
  624. package/dist/utils/sync/base_notifier.js +16 -0
  625. package/dist/utils/sync/event_notifier.d.ts +38 -0
  626. package/dist/utils/sync/event_notifier.js +51 -0
  627. package/dist/utils/sync/index.d.ts +2 -0
  628. package/dist/utils/sync/index.js +7 -0
  629. package/dist/utils/text/alnum_utils.d.ts +109 -0
  630. package/dist/utils/text/alnum_utils.js +262 -0
  631. package/dist/utils/text/base_text_aggregator.d.ts +146 -0
  632. package/dist/utils/text/base_text_aggregator.js +102 -0
  633. package/dist/utils/text/base_text_filter.d.ts +54 -0
  634. package/dist/utils/text/base_text_filter.js +50 -0
  635. package/dist/utils/text/index.d.ts +2 -0
  636. package/dist/utils/text/index.js +7 -0
  637. package/dist/utils/text/markdown_text_filter.d.ts +147 -0
  638. package/dist/utils/text/markdown_text_filter.js +522 -0
  639. package/dist/utils/text/markup_utils.d.ts +54 -0
  640. package/dist/utils/text/markup_utils.js +156 -0
  641. package/dist/utils/text/pattern_pair_aggregator.d.ts +251 -0
  642. package/dist/utils/text/pattern_pair_aggregator.js +478 -0
  643. package/dist/utils/text/phonemes.d.ts +60 -0
  644. package/dist/utils/text/phonemes.js +172 -0
  645. package/dist/utils/text/simple_text_aggregator.d.ts +135 -0
  646. package/dist/utils/text/simple_text_aggregator.js +254 -0
  647. package/dist/utils/text/skip_tags_aggregator.d.ts +85 -0
  648. package/dist/utils/text/skip_tags_aggregator.js +147 -0
  649. package/dist/utils/text/transforms/acronyms.d.ts +21 -0
  650. package/dist/utils/text/transforms/acronyms.js +31 -0
  651. package/dist/utils/text/transforms/currency.d.ts +16 -0
  652. package/dist/utils/text/transforms/currency.js +56 -0
  653. package/dist/utils/text/transforms/dates.d.ts +18 -0
  654. package/dist/utils/text/transforms/dates.js +102 -0
  655. package/dist/utils/text/transforms/email.d.ts +17 -0
  656. package/dist/utils/text/transforms/email.js +35 -0
  657. package/dist/utils/text/transforms/index.d.ts +37 -0
  658. package/dist/utils/text/transforms/index.js +42 -0
  659. package/dist/utils/text/transforms/numbers.d.ts +25 -0
  660. package/dist/utils/text/transforms/numbers.js +59 -0
  661. package/dist/utils/text/transforms/percentages.d.ts +16 -0
  662. package/dist/utils/text/transforms/percentages.js +32 -0
  663. package/dist/utils/text/transforms/phone.d.ts +21 -0
  664. package/dist/utils/text/transforms/phone.js +39 -0
  665. package/dist/utils/text/transforms/pronunciations.d.ts +65 -0
  666. package/dist/utils/text/transforms/pronunciations.js +112 -0
  667. package/dist/utils/text/transforms/replacements.d.ts +39 -0
  668. package/dist/utils/text/transforms/replacements.js +46 -0
  669. package/dist/utils/text/transforms/strip_markdown.d.ts +25 -0
  670. package/dist/utils/text/transforms/strip_markdown.js +60 -0
  671. package/dist/utils/text/transforms/units.d.ts +22 -0
  672. package/dist/utils/text/transforms/units.js +81 -0
  673. package/dist/utils/text/transforms/voice_formatter.d.ts +86 -0
  674. package/dist/utils/text/transforms/voice_formatter.js +98 -0
  675. package/dist/utils/text/unicode_digits.d.ts +3 -0
  676. package/dist/utils/text/unicode_digits.js +34 -0
  677. package/dist/utils/text/word_timestamp_utils.d.ts +26 -0
  678. package/dist/utils/text/word_timestamp_utils.js +52 -0
  679. package/dist/utils/time.d.ts +13 -0
  680. package/dist/utils/time.js +31 -0
  681. package/dist/utils/tracing/index.d.ts +3 -0
  682. package/dist/utils/tracing/index.js +8 -0
  683. package/dist/utils/tracing/service_attributes.d.ts +198 -0
  684. package/dist/utils/tracing/service_attributes.js +434 -0
  685. package/dist/utils/tracing/service_decorators.d.ts +214 -0
  686. package/dist/utils/tracing/service_decorators.js +1662 -0
  687. package/dist/utils/tracing/setup.d.ts +107 -0
  688. package/dist/utils/tracing/setup.js +160 -0
  689. package/dist/utils/tracing/tracing_context.d.ts +55 -0
  690. package/dist/utils/tracing/tracing_context.js +97 -0
  691. package/dist/utils/tracing/turn_trace_observer.d.ts +95 -0
  692. package/dist/utils/tracing/turn_trace_observer.js +233 -0
  693. package/dist/utils/types.d.ts +80 -0
  694. package/dist/utils/types.js +108 -0
  695. package/dist/utils/utils.d.ts +5 -0
  696. package/dist/utils/utils.js +22 -0
  697. package/dist/utils/yaml.d.ts +179 -0
  698. package/dist/utils/yaml.js +556 -0
  699. package/dist/version.d.ts +3 -0
  700. package/dist/version.js +7 -0
  701. package/dist/workers/base_worker.d.ts +772 -0
  702. package/dist/workers/base_worker.js +1298 -0
  703. package/dist/workers/index.d.ts +2 -0
  704. package/dist/workers/index.js +8 -0
  705. package/dist/workers/llm/backend_llm_worker.d.ts +552 -0
  706. package/dist/workers/llm/backend_llm_worker.js +1055 -0
  707. package/dist/workers/llm/index.d.ts +6 -0
  708. package/dist/workers/llm/index.js +11 -0
  709. package/dist/workers/llm/llm_context_worker.d.ts +66 -0
  710. package/dist/workers/llm/llm_context_worker.js +72 -0
  711. package/dist/workers/llm/llm_worker.d.ts +180 -0
  712. package/dist/workers/llm/llm_worker.js +323 -0
  713. package/dist/workers/llm/tool_decorator.d.ts +68 -0
  714. package/dist/workers/llm/tool_decorator.js +60 -0
  715. package/dist/workers/proxy/index.d.ts +3 -0
  716. package/dist/workers/proxy/index.js +9 -0
  717. package/dist/workers/proxy/websocket/client.d.ts +110 -0
  718. package/dist/workers/proxy/websocket/client.js +196 -0
  719. package/dist/workers/proxy/websocket/index.d.ts +3 -0
  720. package/dist/workers/proxy/websocket/index.js +10 -0
  721. package/dist/workers/runner.d.ts +268 -0
  722. package/dist/workers/runner.js +489 -0
  723. package/dist/workers/ui/index.d.ts +22 -0
  724. package/dist/workers/ui/index.js +27 -0
  725. package/dist/workers/ui/ui_event_decorator.d.ts +43 -0
  726. package/dist/workers/ui/ui_event_decorator.js +75 -0
  727. package/dist/workers/ui/ui_job_context.d.ts +12 -0
  728. package/dist/workers/ui/ui_job_context.js +17 -0
  729. package/dist/workers/ui/ui_prompts.d.ts +21 -0
  730. package/dist/workers/ui/ui_prompts.js +41 -0
  731. package/dist/workers/ui/ui_tools.d.ts +32 -0
  732. package/dist/workers/ui/ui_tools.js +112 -0
  733. package/dist/workers/ui/ui_worker.d.ts +571 -0
  734. package/dist/workers/ui/ui_worker.js +1156 -0
  735. package/package.json +61 -3
  736. package/README.md +0 -5
@@ -0,0 +1,233 @@
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
+ * Porting notes: upstream gets the tracer in `__init__`. Core imports
14
+ * OpenTelemetry asynchronously, so an observer built before that import
15
+ * finished gets its tracer on first use instead (`_getTracer()`).
16
+ */
17
+ import { StartFrame } from "../../frames/frames.js";
18
+ import { BaseObserver, } from "../../observers/base_observer.js";
19
+ import { logger } from "../logger.js";
20
+ import { getOpenTelemetry, isTracingAvailable, } from "./setup.js";
21
+ import { TracingContext } from "./tracing_context.js";
22
+ /**
23
+ * Observer that creates trace spans for each conversation turn.
24
+ *
25
+ * This observer uses TurnTrackingObserver to track turns and creates
26
+ * OpenTelemetry spans for each turn. Service spans (STT, LLM, TTS)
27
+ * become children of the turn spans.
28
+ *
29
+ * If conversation tracing is enabled, turns become children of a
30
+ * conversation span that encapsulates the entire session.
31
+ */
32
+ export class TurnTraceObserver extends BaseObserver {
33
+ _turnTracker;
34
+ _latencyTracker;
35
+ _tracingContext;
36
+ _currentSpan = null;
37
+ _currentTurnNumber = 0;
38
+ _traceContextMap = new Map();
39
+ _tracer;
40
+ // Conversation tracking properties
41
+ _conversationSpan = null;
42
+ _conversationId;
43
+ _additionalSpanAttributes;
44
+ /** Initialize the turn trace observer. */
45
+ constructor(options) {
46
+ super(options);
47
+ this._turnTracker = options.turnTracker;
48
+ this._latencyTracker = options.latencyTracker;
49
+ this._tracingContext = options.tracingContext || new TracingContext();
50
+ this._tracer = getOpenTelemetry()?.api.trace.getTracer("pipecat.turn") ?? null;
51
+ this._conversationId = options.conversationId ?? null;
52
+ this._additionalSpanAttributes = options.additionalSpanAttributes || {};
53
+ this._turnTracker.eventHandler("on_turn_started", async (_tracker, turnNumber) => {
54
+ await this._handleTurnStarted(turnNumber);
55
+ });
56
+ this._turnTracker.eventHandler("on_turn_ended", async (_tracker, turnNumber, duration, wasInterrupted) => {
57
+ await this._handleTurnEnded(turnNumber, duration, wasInterrupted);
58
+ });
59
+ this._latencyTracker.eventHandler("on_latency_measured", async (_tracker, latencySeconds) => {
60
+ await this._handleLatencyMeasured(latencySeconds);
61
+ });
62
+ }
63
+ /**
64
+ * The turn tracer, resolved on first use if OpenTelemetry was not available
65
+ * yet when the observer was built (core imports it asynchronously).
66
+ */
67
+ _getTracer() {
68
+ this._tracer ??= getOpenTelemetry()?.api.trace.getTracer("pipecat.turn") ?? null;
69
+ return this._tracer;
70
+ }
71
+ /**
72
+ * Handle latency measurement events.
73
+ *
74
+ * Called when the latency tracker measures user-to-bot latency.
75
+ * Adds the latency as an attribute to the current turn span.
76
+ *
77
+ * @param latencySeconds The measured latency in seconds.
78
+ */
79
+ async _handleLatencyMeasured(latencySeconds) {
80
+ if (this._currentSpan && isTracingAvailable()) {
81
+ this._currentSpan.setAttribute("turn.user_bot_latency_seconds", latencySeconds);
82
+ logger.debug(`Turn ${this._currentTurnNumber} user-bot latency: ${latencySeconds.toFixed(3)}s`);
83
+ }
84
+ }
85
+ /**
86
+ * Process a frame without modifying it.
87
+ *
88
+ * Handles StartFrame to begin conversation tracing early, ensuring
89
+ * that any spans created before Turn 1 (e.g., from flow initialization)
90
+ * are properly attached to the conversation trace.
91
+ *
92
+ * @param data The frame push event data.
93
+ */
94
+ async onPushFrame(data) {
95
+ if (data.frame instanceof StartFrame && !this._conversationSpan) {
96
+ this.startConversationTracing(this._conversationId);
97
+ }
98
+ }
99
+ /**
100
+ * Start a new conversation span.
101
+ *
102
+ * @param conversationId Optional custom ID for the conversation. If null, a UUID will be generated.
103
+ */
104
+ startConversationTracing(conversationId = null) {
105
+ const tracer = this._getTracer();
106
+ if (!isTracingAvailable() || !tracer) {
107
+ return;
108
+ }
109
+ // Generate a conversation ID if not provided
110
+ if (conversationId === null) {
111
+ conversationId = TracingContext.generateConversationId();
112
+ logger.debug(`Generated new conversation ID: ${conversationId}`);
113
+ }
114
+ this._conversationId = conversationId;
115
+ // Create a new span for this conversation
116
+ const conversationSpan = tracer.startSpan("conversation");
117
+ this._conversationSpan = conversationSpan;
118
+ // Set span attributes
119
+ conversationSpan.setAttribute("conversation.id", conversationId);
120
+ conversationSpan.setAttribute("conversation.type", "voice");
121
+ // Set custom otel attributes if provided
122
+ for (const [k, v] of Object.entries(this._additionalSpanAttributes || {})) {
123
+ conversationSpan.setAttribute(k, v);
124
+ }
125
+ // Update the tracing context
126
+ this._tracingContext.setConversationContext(conversationSpan.spanContext(), conversationId);
127
+ logger.debug(`Started tracing for Conversation ${conversationId}`);
128
+ }
129
+ /** End the current conversation span and ensure the last turn is closed. */
130
+ endConversationTracing() {
131
+ if (!isTracingAvailable()) {
132
+ return;
133
+ }
134
+ // First, ensure any active turn is closed properly
135
+ if (this._currentSpan) {
136
+ // If we have an active turn span, end it with a standard duration
137
+ logger.debug(`Ending Turn ${this._currentTurnNumber} due to conversation end`);
138
+ this._currentSpan.setAttribute("turn.was_interrupted", true);
139
+ this._currentSpan.setAttribute("turn.ended_by_conversation_end", true);
140
+ this._currentSpan.end();
141
+ this._currentSpan = null;
142
+ // Clear the turn context
143
+ this._tracingContext.setTurnContext(null);
144
+ }
145
+ // Now end the conversation span if it exists
146
+ if (this._conversationSpan) {
147
+ // End the span
148
+ this._conversationSpan.end();
149
+ this._conversationSpan = null;
150
+ // Clear the conversation context
151
+ this._tracingContext.setConversationContext(null);
152
+ logger.debug(`Ended tracing for Conversation ${this._conversationId}`);
153
+ this._conversationId = null;
154
+ }
155
+ }
156
+ /** Handle a turn start event by creating a new span. */
157
+ async _handleTurnStarted(turnNumber) {
158
+ const tracer = this._getTracer();
159
+ if (!isTracingAvailable() || !tracer) {
160
+ return;
161
+ }
162
+ if (turnNumber === 1 && !this._conversationSpan) {
163
+ this.startConversationTracing(this._conversationId);
164
+ }
165
+ // Get the parent context - conversation if available, otherwise use root context
166
+ let parentContext = null;
167
+ if (this._conversationSpan) {
168
+ parentContext = this._tracingContext.getConversationContext();
169
+ }
170
+ // Create a new span for this turn
171
+ const currentSpan = tracer.startSpan("turn", undefined, parentContext ?? undefined);
172
+ this._currentSpan = currentSpan;
173
+ this._currentTurnNumber = turnNumber;
174
+ // Set span attributes
175
+ currentSpan.setAttribute("turn.number", turnNumber);
176
+ currentSpan.setAttribute("turn.type", "conversation");
177
+ // Add conversation ID attribute if available
178
+ if (this._conversationId) {
179
+ currentSpan.setAttribute("conversation.id", this._conversationId);
180
+ }
181
+ // Store the span context so services can become children of this span
182
+ this._traceContextMap.set(turnNumber, currentSpan.spanContext());
183
+ // Update the tracing context so services can access this span
184
+ this._tracingContext.setTurnContext(currentSpan.spanContext());
185
+ logger.debug(`Started tracing for Turn ${turnNumber}`);
186
+ }
187
+ /** Handle a turn end event by ending the current span. */
188
+ async _handleTurnEnded(turnNumber, duration, wasInterrupted) {
189
+ if (!isTracingAvailable() || !this._currentSpan) {
190
+ return;
191
+ }
192
+ // Only end the span if it matches the current turn
193
+ if (turnNumber === this._currentTurnNumber) {
194
+ // Set additional attributes
195
+ this._currentSpan.setAttribute("turn.duration_seconds", duration);
196
+ this._currentSpan.setAttribute("turn.was_interrupted", wasInterrupted);
197
+ // End the span
198
+ this._currentSpan.end();
199
+ this._currentSpan = null;
200
+ // Clear the turn context
201
+ this._tracingContext.setTurnContext(null);
202
+ logger.debug(`Ended tracing for Turn ${turnNumber}`);
203
+ }
204
+ }
205
+ /**
206
+ * Get the span context for the current turn.
207
+ *
208
+ * This can be used by services to create child spans.
209
+ *
210
+ * @returns The current turn's span context or null if not available.
211
+ */
212
+ getCurrentTurnContext() {
213
+ if (!isTracingAvailable() || !this._currentSpan) {
214
+ return null;
215
+ }
216
+ return this._currentSpan.spanContext();
217
+ }
218
+ /**
219
+ * Get the span context for a specific turn.
220
+ *
221
+ * This can be used by services to create child spans.
222
+ *
223
+ * @param turnNumber The turn number to get context for.
224
+ * @returns The specified turn's span context or null if not available.
225
+ */
226
+ getTurnContext(turnNumber) {
227
+ if (!isTracingAvailable()) {
228
+ return null;
229
+ }
230
+ return this._traceContextMap.get(turnNumber) ?? null;
231
+ }
232
+ }
233
+ //# sourceMappingURL=turn_trace_observer.js.map
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Types shared across Pipecat, independent of any provider SDK.
3
+ *
4
+ * The `NOT_GIVEN` sentinel lives here so that settings, contexts and anything
5
+ * else needing "this value was not provided" share one meaning. Provider SDKs
6
+ * ship their own equivalents; those belong to the SDK and are translated at the
7
+ * adapter boundary rather than used inside Pipecat.
8
+ */
9
+ /**
10
+ * Sentinel type meaning "this value was not provided".
11
+ *
12
+ * Distinct from `null`, which is a meaningful value in most of the places
13
+ * this is used (typically "this service doesn't support this field").
14
+ * `NOT_GIVEN` is the singleton instance; test for it with `isGiven()`
15
+ * rather than comparing directly.
16
+ *
17
+ * DIVERGENCE: upstream makes the sentinel falsy (`__bool__` returns False) so
18
+ * `value or default` treats a missing value as absent. JavaScript objects are
19
+ * always truthy, so use `isGiven(value) ? value : fallback` instead.
20
+ */
21
+ export declare class NotGiven {
22
+ #private;
23
+ /** Return the singleton instance, creating it on first use. */
24
+ constructor();
25
+ /** Return the sentinel's name. */
26
+ toString(): string;
27
+ toJSON(): string;
28
+ }
29
+ /** Singleton sentinel meaning "this value was not provided". */
30
+ export declare const NOT_GIVEN: NotGiven;
31
+ /**
32
+ * Check whether a value was explicitly provided.
33
+ *
34
+ * Also acts as a type guard: inside a true branch, the value is narrowed to
35
+ * exclude `NotGiven` (e.g. `string | null | NotGiven` becomes `string | null`).
36
+ *
37
+ * @example
38
+ * if (isGiven(delta.voice)) {
39
+ * // caller wants to change the voice
40
+ * }
41
+ *
42
+ * @param value The value to check.
43
+ * @returns `true` if `value` is anything other than `NOT_GIVEN`.
44
+ */
45
+ export declare function isGiven<T>(value: T | NotGiven): value is T;
46
+ /**
47
+ * Extract a value that must have been provided.
48
+ *
49
+ * Intended for reads where `NOT_GIVEN` should never appear, such as a
50
+ * store-mode settings object (see `services/settings`). Narrows away
51
+ * `NotGiven` at the type level and throws at runtime if that invariant is
52
+ * violated.
53
+ *
54
+ * @example
55
+ * const resolvedModel = assertGiven(this._settings.model); // narrowed string | null
56
+ *
57
+ * @param value The value to extract.
58
+ * @returns The value, narrowed to exclude `NotGiven`.
59
+ * @throws Error If `value` is `NOT_GIVEN` (upstream: RuntimeError).
60
+ */
61
+ export declare function assertGiven<T>(value: T | NotGiven): T;
62
+ /**
63
+ * Extract a value that must have been provided and must not be empty.
64
+ *
65
+ * Like `assertGiven()`, but also rejects `null` (and `undefined`) and the
66
+ * empty string, which is what an unset or blank environment variable
67
+ * produces. Use it for settings a service cannot work without, such as a
68
+ * local model or voice that no provider will validate on its behalf.
69
+ *
70
+ * @example
71
+ * const voice = requireGiven(this._settings.voice, "Piper TTS voice"); // narrowed string
72
+ *
73
+ * @param value The value to extract.
74
+ * @param what How to name the value in the error, e.g. `"Piper TTS voice"`.
75
+ * @returns The value, narrowed to exclude `NotGiven` and `null`.
76
+ * @throws Error If `value` is `NOT_GIVEN` (upstream: RuntimeError).
77
+ * @throws Error If `value` is `null` or an empty string (upstream: ValueError).
78
+ */
79
+ export declare function requireGiven<T>(value: T | null | undefined | NotGiven, what: string): T;
80
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,108 @@
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/types.py
6
+ /**
7
+ * Types shared across Pipecat, independent of any provider SDK.
8
+ *
9
+ * The `NOT_GIVEN` sentinel lives here so that settings, contexts and anything
10
+ * else needing "this value was not provided" share one meaning. Provider SDKs
11
+ * ship their own equivalents; those belong to the SDK and are translated at the
12
+ * adapter boundary rather than used inside Pipecat.
13
+ */
14
+ /**
15
+ * Sentinel type meaning "this value was not provided".
16
+ *
17
+ * Distinct from `null`, which is a meaningful value in most of the places
18
+ * this is used (typically "this service doesn't support this field").
19
+ * `NOT_GIVEN` is the singleton instance; test for it with `isGiven()`
20
+ * rather than comparing directly.
21
+ *
22
+ * DIVERGENCE: upstream makes the sentinel falsy (`__bool__` returns False) so
23
+ * `value or default` treats a missing value as absent. JavaScript objects are
24
+ * always truthy, so use `isGiven(value) ? value : fallback` instead.
25
+ */
26
+ export class NotGiven {
27
+ static #instance = null;
28
+ /** Return the singleton instance, creating it on first use. */
29
+ constructor() {
30
+ if (NotGiven.#instance !== null) {
31
+ // biome-ignore lint/correctness/noConstructorReturn: singleton, as upstream's __new__.
32
+ return NotGiven.#instance;
33
+ }
34
+ NotGiven.#instance = this;
35
+ }
36
+ /** Return the sentinel's name. */
37
+ toString() {
38
+ return "NOT_GIVEN";
39
+ }
40
+ toJSON() {
41
+ return "NOT_GIVEN";
42
+ }
43
+ }
44
+ /** Singleton sentinel meaning "this value was not provided". */
45
+ export const NOT_GIVEN = new NotGiven();
46
+ /**
47
+ * Check whether a value was explicitly provided.
48
+ *
49
+ * Also acts as a type guard: inside a true branch, the value is narrowed to
50
+ * exclude `NotGiven` (e.g. `string | null | NotGiven` becomes `string | null`).
51
+ *
52
+ * @example
53
+ * if (isGiven(delta.voice)) {
54
+ * // caller wants to change the voice
55
+ * }
56
+ *
57
+ * @param value The value to check.
58
+ * @returns `true` if `value` is anything other than `NOT_GIVEN`.
59
+ */
60
+ export function isGiven(value) {
61
+ return !(value instanceof NotGiven);
62
+ }
63
+ /**
64
+ * Extract a value that must have been provided.
65
+ *
66
+ * Intended for reads where `NOT_GIVEN` should never appear, such as a
67
+ * store-mode settings object (see `services/settings`). Narrows away
68
+ * `NotGiven` at the type level and throws at runtime if that invariant is
69
+ * violated.
70
+ *
71
+ * @example
72
+ * const resolvedModel = assertGiven(this._settings.model); // narrowed string | null
73
+ *
74
+ * @param value The value to extract.
75
+ * @returns The value, narrowed to exclude `NotGiven`.
76
+ * @throws Error If `value` is `NOT_GIVEN` (upstream: RuntimeError).
77
+ */
78
+ export function assertGiven(value) {
79
+ if (!isGiven(value)) {
80
+ throw new Error("Expected a value, got NOT_GIVEN");
81
+ }
82
+ return value;
83
+ }
84
+ /**
85
+ * Extract a value that must have been provided and must not be empty.
86
+ *
87
+ * Like `assertGiven()`, but also rejects `null` (and `undefined`) and the
88
+ * empty string, which is what an unset or blank environment variable
89
+ * produces. Use it for settings a service cannot work without, such as a
90
+ * local model or voice that no provider will validate on its behalf.
91
+ *
92
+ * @example
93
+ * const voice = requireGiven(this._settings.voice, "Piper TTS voice"); // narrowed string
94
+ *
95
+ * @param value The value to extract.
96
+ * @param what How to name the value in the error, e.g. `"Piper TTS voice"`.
97
+ * @returns The value, narrowed to exclude `NotGiven` and `null`.
98
+ * @throws Error If `value` is `NOT_GIVEN` (upstream: RuntimeError).
99
+ * @throws Error If `value` is `null` or an empty string (upstream: ValueError).
100
+ */
101
+ export function requireGiven(value, what) {
102
+ const given = assertGiven(value);
103
+ if (given === null || given === undefined || given === "") {
104
+ throw new Error(`${what} must be specified`);
105
+ }
106
+ return given;
107
+ }
108
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,5 @@
1
+ /** Generate a unique id for an object. */
2
+ export declare function objId(): number;
3
+ /** Generate a unique count for an object based on its class name. */
4
+ export declare function objCount(obj: object): number;
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1,22 @@
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/utils.py
6
+ /**
7
+ * Utility functions for object identification and counting.
8
+ */
9
+ const counts = new Map();
10
+ let nextId = 0;
11
+ /** Generate a unique id for an object. */
12
+ export function objId() {
13
+ return nextId++;
14
+ }
15
+ /** Generate a unique count for an object based on its class name. */
16
+ export function objCount(obj) {
17
+ const name = obj.constructor.name;
18
+ const count = counts.get(name) ?? 0;
19
+ counts.set(name, count + 1);
20
+ return count;
21
+ }
22
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,179 @@
1
+ /** Position of a node in its document (0-based line and column, like PyYAML's `Mark`). */
2
+ export interface YamlMark {
3
+ line: number;
4
+ column: number;
5
+ }
6
+ /** Base class of the errors raised while loading YAML (`yaml.YAMLError`). */
7
+ export declare class YAMLError extends Error {
8
+ name: string;
9
+ }
10
+ /** A YAML error tied to a place in the document (`yaml.MarkedYAMLError`). */
11
+ export declare class MarkedYAMLError extends YAMLError {
12
+ name: string;
13
+ readonly problem: string;
14
+ readonly problemMark: YamlMark | null;
15
+ constructor(problem: string, problemMark?: YamlMark | null);
16
+ }
17
+ /** The document is not valid YAML (`yaml.parser.ParserError` / `yaml.scanner.ScannerError`). */
18
+ export declare class ParserError extends MarkedYAMLError {
19
+ name: string;
20
+ }
21
+ /** A node could not be turned into a value (`yaml.constructor.ConstructorError`). */
22
+ export declare class ConstructorError extends MarkedYAMLError {
23
+ name: string;
24
+ }
25
+ /** A scalar node (`yaml.ScalarNode`). `value` is its text. */
26
+ export declare class ScalarNode {
27
+ readonly isScalar = true;
28
+ readonly tag: string;
29
+ readonly value: string;
30
+ readonly startMark: YamlMark | null;
31
+ /** How the scalar was written: `null` when plain, else `'`, `"`, `|` or `>`. */
32
+ readonly style: string | null;
33
+ constructor(tag: string, value: string, startMark: YamlMark | null, style?: string | null);
34
+ }
35
+ /** A sequence node (`yaml.SequenceNode`). */
36
+ export declare class SequenceNode {
37
+ readonly isScalar = false;
38
+ readonly tag: string;
39
+ readonly value: YamlNode[];
40
+ readonly startMark: YamlMark | null;
41
+ constructor(tag: string, value: YamlNode[], startMark: YamlMark | null);
42
+ }
43
+ /** A mapping node (`yaml.MappingNode`). `value` holds the key and value nodes in order. */
44
+ export declare class MappingNode {
45
+ readonly isScalar = false;
46
+ readonly tag: string;
47
+ value: [YamlNode, YamlNode][];
48
+ readonly startMark: YamlMark | null;
49
+ constructor(tag: string, value: [YamlNode, YamlNode][], startMark: YamlMark | null);
50
+ }
51
+ /** A YAML node, as handed to a constructor. */
52
+ export type YamlNode = ScalarNode | SequenceNode | MappingNode;
53
+ /** A tag constructor registered on a loader class. */
54
+ export type YamlConstructor = (loader: SafeLoader, node: YamlNode) => unknown;
55
+ /**
56
+ * Implicit resolvers by the first character of the plain scalars they apply
57
+ * to (`""` for the empty scalar, `null` for any): `[tag, pattern]` pairs,
58
+ * tried in order.
59
+ */
60
+ export type YamlImplicitResolvers = Map<string | null, [string, RegExp][]>;
61
+ /** The loader-class shape the helpers work with (a `yaml.SafeLoader` subclass upstream). */
62
+ export interface YamlLoaderClass {
63
+ new (stream: string): SafeLoader;
64
+ yamlConstructors: Map<string, YamlConstructor>;
65
+ yamlImplicitResolvers: YamlImplicitResolvers;
66
+ /** Register a constructor for a tag on this loader class. */
67
+ addConstructor(tag: string, fn: YamlConstructor): void;
68
+ /** Register an implicit resolver on this loader class. */
69
+ addImplicitResolver(tag: string, regexp: RegExp, first: Iterable<string> | null): void;
70
+ }
71
+ /**
72
+ * The safe loader (`yaml.SafeLoader`): loads standard YAML 1.1 tags into
73
+ * plain values. Subclass it and register constructors or resolvers on the
74
+ * subclass to extend it; registrations never reach the parent class.
75
+ */
76
+ export declare class SafeLoader {
77
+ #private;
78
+ static yamlConstructors: Map<string, YamlConstructor>;
79
+ static yamlImplicitResolvers: YamlImplicitResolvers;
80
+ /** Register `fn` as the constructor for `tag` on this class (copying the parent's table first). */
81
+ static addConstructor(tag: string, fn: YamlConstructor): void;
82
+ /**
83
+ * Resolve plain scalars matching `regexp` (and starting with one of `first`,
84
+ * or any character when null) to `tag` on this class.
85
+ */
86
+ static addImplicitResolver(tag: string, regexp: RegExp, first: Iterable<string> | null): void;
87
+ constructor(stream: string);
88
+ /** Load the stream's single document (`get_single_data`); `null` for an empty stream. */
89
+ getSingleData(): unknown;
90
+ /** Compose the stream's single document into nodes, resolving tags. */
91
+ getSingleNode(): YamlNode | null;
92
+ /** The tag a plain scalar resolves to under this class's implicit resolvers. */
93
+ resolveScalar(value: string): string;
94
+ /** Construct the value of a whole document. */
95
+ constructDocument(node: YamlNode): unknown;
96
+ /** Construct the value of `node` with the constructor registered for its tag. */
97
+ constructObject(node: YamlNode): unknown;
98
+ /** The text of a scalar node. */
99
+ constructScalar(node: YamlNode): string;
100
+ /** The values of a sequence node. */
101
+ constructSequence(node: YamlNode): unknown[];
102
+ /**
103
+ * The entries of a mapping node, as an object, after applying `<<` merge
104
+ * keys. Keys are scalars; a sequence or mapping key is an error, as an
105
+ * unhashable key is upstream.
106
+ */
107
+ constructMapping(node: YamlNode): Record<string, unknown>;
108
+ /** The entries of a sequence of one-entry mappings (`!!omap`, `!!pairs`) as `[key, value]` pairs. */
109
+ constructPairs(node: YamlNode): [unknown, unknown][];
110
+ }
111
+ /**
112
+ * Parse the single YAML document in `stream` (`yaml.load(stream, Loader)`).
113
+ *
114
+ * @param stream The YAML text.
115
+ * @param Loader The loader class to load with. Defaults to `SafeLoader`.
116
+ */
117
+ export declare function load(stream: string, Loader?: YamlLoaderClass): unknown;
118
+ /**
119
+ * Register an implicit resolver (`yaml.add_implicit_resolver`) on `Loader`.
120
+ *
121
+ * @param tag The tag plain scalars matching `regexp` resolve to.
122
+ * @param regexp The pattern a plain scalar must match.
123
+ * @param first The characters such scalars start with, or null for any.
124
+ */
125
+ export declare function addImplicitResolver(tag: string, regexp: RegExp, first?: Iterable<string> | null, options?: {
126
+ Loader?: YamlLoaderClass;
127
+ }): void;
128
+ /**
129
+ * Reads an included file as UTF-8 text. Throws if the file can't be read
130
+ * (Node's `ENOENT` error is upstream's `FileNotFoundError`).
131
+ */
132
+ export type YamlFileReader = (path: string) => string;
133
+ export interface IncludeOptions {
134
+ /** Reads `!include`d files, e.g. `(p) => readFileSync(p, "utf8")`. */
135
+ readFile: YamlFileReader;
136
+ }
137
+ /**
138
+ * Register an `!include <relative-path>` constructor on `loaderClass`.
139
+ *
140
+ * Included files load with the same loader class, so nested includes work and
141
+ * scalars get the same resolver treatment as the top-level document. Paths
142
+ * resolve against `baseDir` and may reach outside it.
143
+ *
144
+ * This mutates `loaderClass`. Register on a private subclass rather than on
145
+ * `SafeLoader` itself so the constructor has no global side effects;
146
+ * `includeLoader` does that for you.
147
+ *
148
+ * @param loaderClass The loader class to register the constructor on.
149
+ * @param baseDir Directory that `!include` paths resolve against.
150
+ * @param options How to read the included files.
151
+ */
152
+ export declare function addIncludeConstructor(loaderClass: YamlLoaderClass, baseDir: string, options: IncludeOptions): void;
153
+ export interface IncludeLoaderOptions extends IncludeOptions {
154
+ /**
155
+ * Loader class to subclass. Defaults to `SafeLoader`; pass a custom
156
+ * `SafeLoader` subclass to keep its resolvers and constructors.
157
+ */
158
+ base?: YamlLoaderClass;
159
+ }
160
+ /**
161
+ * Build a loader class that resolves `!include` relative to `baseDir`.
162
+ *
163
+ * Returns a fresh subclass of `base` with the include constructor
164
+ * registered, so `base` itself is left untouched.
165
+ *
166
+ * @param baseDir Directory that `!include` paths resolve against, typically
167
+ * the directory of the document being loaded.
168
+ * @param options How to read included files, and the loader class to subclass.
169
+ * @returns A loader class to pass to `load`.
170
+ *
171
+ * @example
172
+ * ```ts
173
+ * const data = load(readFileSync(path, "utf8"), includeLoader(dirname(path), {
174
+ * readFile: (p) => readFileSync(p, "utf8"),
175
+ * }));
176
+ * ```
177
+ */
178
+ export declare function includeLoader(baseDir: string, options: IncludeLoaderOptions): YamlLoaderClass;
179
+ //# sourceMappingURL=yaml.d.ts.map