@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,76 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/utils/log_config.py
6
+ /**
7
+ * Process-wide controls for Pipecat's debug logging.
8
+ *
9
+ * Some debug output grows with the length of a session, such as the LLM context
10
+ * logged on every inference. The settings here choose how much of it to write,
11
+ * and each is read from an environment variable once, on first use.
12
+ *
13
+ * - `PIPECAT_LOG_LLM_CONTEXT`: how much of the context LLM services include
14
+ * in their DEBUG log lines. `full` (the default) logs every message;
15
+ * `off` logs the line without the context.
16
+ *
17
+ * @example
18
+ * // PIPECAT_LOG_LLM_CONTEXT=off bun bot.ts
19
+ */
20
+ import { getEnv, InvalidEnvVarValueError } from "./env.js";
21
+ export const _LLM_CONTEXT_LOG_ENV_VAR = "PIPECAT_LOG_LLM_CONTEXT";
22
+ /**
23
+ * How much of the context LLM services include in their DEBUG log lines.
24
+ *
25
+ * LLM services log a DEBUG line each time they generate a response, and
26
+ * realtime services when they set up their server-side conversation. The
27
+ * context is built only when DEBUG is enabled.
28
+ *
29
+ * - FULL: Every message of the context.
30
+ * - OFF: None of it; the line is logged without the context.
31
+ */
32
+ export const _LLMContextLogMode = {
33
+ FULL: "full",
34
+ OFF: "off",
35
+ };
36
+ let llmContextLogMode = null;
37
+ /**
38
+ * Return how LLM services log the context.
39
+ *
40
+ * The mode named by `PIPECAT_LOG_LLM_CONTEXT`, or `full` when it is unset
41
+ * or empty. The environment variable is read once, on first use.
42
+ *
43
+ * @returns The current LLM context log mode.
44
+ * @throws InvalidEnvVarValueError If `PIPECAT_LOG_LLM_CONTEXT` is set to an unknown mode.
45
+ */
46
+ export function _getLlmContextLogMode() {
47
+ if (llmContextLogMode === null) {
48
+ llmContextLogMode = _llmContextLogModeFromEnv();
49
+ }
50
+ return llmContextLogMode;
51
+ }
52
+ /**
53
+ * Forget the cached mode so the next `_getLlmContextLogMode()` reads the
54
+ * environment again. Python tests assign `_llm_context_log_mode = None`; a
55
+ * module variable can't be assigned from outside in JS.
56
+ */
57
+ export function _resetLlmContextLogMode() {
58
+ llmContextLogMode = null;
59
+ }
60
+ export function _llmContextLogModeFromEnv() {
61
+ const raw = getEnv(_LLM_CONTEXT_LOG_ENV_VAR);
62
+ if (raw === undefined || !raw.trim()) {
63
+ return _LLMContextLogMode.FULL;
64
+ }
65
+ const value = raw.trim().toLowerCase();
66
+ const modes = Object.values(_LLMContextLogMode);
67
+ if (modes.includes(value)) {
68
+ return value;
69
+ }
70
+ throw new InvalidEnvVarValueError({
71
+ name: _LLM_CONTEXT_LOG_ENV_VAR,
72
+ value: raw,
73
+ expected: modes.join(" or "),
74
+ });
75
+ }
76
+ //# sourceMappingURL=log_config.js.map
@@ -0,0 +1,40 @@
1
+ export declare const LOG_LEVELS: {
2
+ readonly TRACE: 5;
3
+ readonly DEBUG: 10;
4
+ readonly INFO: 20;
5
+ readonly SUCCESS: 25;
6
+ readonly WARNING: 30;
7
+ readonly ERROR: 40;
8
+ readonly CRITICAL: 50;
9
+ };
10
+ export type LogLevel = keyof typeof LOG_LEVELS;
11
+ export interface LogRecord {
12
+ level: LogLevel;
13
+ message: string;
14
+ time: Date;
15
+ error?: unknown;
16
+ }
17
+ export type LogSink = (record: LogRecord) => void;
18
+ declare class Logger {
19
+ #private;
20
+ /** Only records at or above `level` are emitted. */
21
+ setLevel(level: LogLevel): void;
22
+ isEnabledFor(level: LogLevel): boolean;
23
+ /** Replace all sinks (loguru `logger.remove()` + `logger.add(sink)`). */
24
+ setSink(...sinks: LogSink[]): void;
25
+ addSink(sink: LogSink): () => void;
26
+ log(level: LogLevel, message: string, error?: unknown): void;
27
+ trace(message: string): void;
28
+ debug(message: string): void;
29
+ info(message: string): void;
30
+ success(message: string): void;
31
+ warning(message: string): void;
32
+ warn(message: string): void;
33
+ error(message: string, error?: unknown): void;
34
+ /** loguru `logger.exception`: an error with its stack. */
35
+ exception(message: string, error?: unknown): void;
36
+ critical(message: string, error?: unknown): void;
37
+ }
38
+ export declare const logger: Logger;
39
+ export type { Logger };
40
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1,91 @@
1
+ // Copyright (c) 2026, pipedog contributors
2
+ // SPDX-License-Identifier: BSD-2-Clause
3
+ //
4
+ // Stand-in for loguru, which upstream logs through. Same level names, so
5
+ // ported `logger.warning(...)` calls read the same. Replace the sink to route
6
+ // logs elsewhere (pino, console.json, Workers logs...).
7
+ export const LOG_LEVELS = {
8
+ TRACE: 5,
9
+ DEBUG: 10,
10
+ INFO: 20,
11
+ SUCCESS: 25,
12
+ WARNING: 30,
13
+ ERROR: 40,
14
+ CRITICAL: 50,
15
+ };
16
+ const consoleSink = (record) => {
17
+ const line = `${record.time.toISOString()} | ${record.level.padEnd(8)} | ${record.message}`;
18
+ if (LOG_LEVELS[record.level] >= LOG_LEVELS.ERROR) {
19
+ console.error(line, ...(record.error ? [record.error] : []));
20
+ }
21
+ else if (record.level === "WARNING") {
22
+ console.warn(line);
23
+ }
24
+ else {
25
+ console.log(line);
26
+ }
27
+ };
28
+ function initialLevel() {
29
+ const env = globalThis.process
30
+ ?.env;
31
+ const value = env?.PIPEDOG_LOG_LEVEL?.toUpperCase();
32
+ return value && value in LOG_LEVELS ? value : "DEBUG";
33
+ }
34
+ class Logger {
35
+ #level = LOG_LEVELS[initialLevel()];
36
+ #sinks = [consoleSink];
37
+ /** Only records at or above `level` are emitted. */
38
+ setLevel(level) {
39
+ this.#level = LOG_LEVELS[level];
40
+ }
41
+ isEnabledFor(level) {
42
+ return LOG_LEVELS[level] >= this.#level;
43
+ }
44
+ /** Replace all sinks (loguru `logger.remove()` + `logger.add(sink)`). */
45
+ setSink(...sinks) {
46
+ this.#sinks = sinks;
47
+ }
48
+ addSink(sink) {
49
+ this.#sinks.push(sink);
50
+ return () => {
51
+ this.#sinks = this.#sinks.filter((s) => s !== sink);
52
+ };
53
+ }
54
+ log(level, message, error) {
55
+ if (LOG_LEVELS[level] < this.#level)
56
+ return;
57
+ const record = { level, message, time: new Date(), error };
58
+ for (const sink of this.#sinks)
59
+ sink(record);
60
+ }
61
+ trace(message) {
62
+ this.log("TRACE", message);
63
+ }
64
+ debug(message) {
65
+ this.log("DEBUG", message);
66
+ }
67
+ info(message) {
68
+ this.log("INFO", message);
69
+ }
70
+ success(message) {
71
+ this.log("SUCCESS", message);
72
+ }
73
+ warning(message) {
74
+ this.log("WARNING", message);
75
+ }
76
+ warn(message) {
77
+ this.log("WARNING", message);
78
+ }
79
+ error(message, error) {
80
+ this.log("ERROR", message, error);
81
+ }
82
+ /** loguru `logger.exception`: an error with its stack. */
83
+ exception(message, error) {
84
+ this.log("ERROR", message, error);
85
+ }
86
+ critical(message, error) {
87
+ this.log("CRITICAL", message, error);
88
+ }
89
+ }
90
+ export const logger = new Logger();
91
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1,14 @@
1
+ export type Ctor<T = object> = abstract new (...args: any[]) => T;
2
+ export type Mixin<F extends (base: Ctor) => Ctor, I> = F & {
3
+ [Symbol.hasInstance](value: unknown): value is I;
4
+ };
5
+ export declare function defineMixin<I, F extends <B extends Ctor>(base: B) => Ctor>(name: string, factory: F): Mixin<F, I>;
6
+ /**
7
+ * Make `instanceof parent` true for instances of `child` without `child`
8
+ * extending it, like Python's `ABC.register`. Use it when upstream inherits
9
+ * from two concrete classes, e.g. `InputTextRawFrame(SystemFrame, TextFrame)`:
10
+ * `class InputTextRawFrame extends SystemFrame` + `addVirtualBase(InputTextRawFrame, TextFrame)`.
11
+ * The child must declare the parent's fields itself.
12
+ */
13
+ export declare function addVirtualBase(child: Function, parent: Function): void;
14
+ //# sourceMappingURL=mixin.d.ts.map
@@ -0,0 +1,63 @@
1
+ // Copyright (c) 2026, pipedog contributors
2
+ // SPDX-License-Identifier: BSD-2-Clause
3
+ //
4
+ // Python multiple inheritance (`class C(A, B)`) maps to a class-factory mixin:
5
+ // `class C extends B(A)`. `defineMixin` brands every class the factory
6
+ // produces so `x instanceof B` keeps working like `isinstance(x, B)`.
7
+ //
8
+ // export interface AudioRawFrame { audio: Uint8Array; ... }
9
+ // export const AudioRawFrame = defineMixin("AudioRawFrame", <B extends Ctor>(Base: B) => {
10
+ // abstract class AudioRawFrameMixin extends Base { ... }
11
+ // return AudioRawFrameMixin;
12
+ // });
13
+ // export class OutputAudioRawFrame extends AudioRawFrame(DataFrame) { ... }
14
+ // frame instanceof AudioRawFrame // true
15
+ //
16
+ // Constructors take one options object (Python's **kwargs), so a mixin reads
17
+ // its own keys from `args[0]` and forwards everything to `super(...args)`.
18
+ export function defineMixin(name, factory) {
19
+ const brand = Symbol.for(`pipedog.mixin.${name}`);
20
+ const apply = ((base) => {
21
+ const cls = factory(base);
22
+ Object.defineProperty(cls.prototype, brand, { value: true });
23
+ return cls;
24
+ });
25
+ Object.defineProperty(apply, "name", { value: name });
26
+ Object.defineProperty(apply, Symbol.hasInstance, {
27
+ value: (value) => typeof value === "object" &&
28
+ value !== null &&
29
+ value[brand] === true,
30
+ });
31
+ return apply;
32
+ }
33
+ const virtualBases = new WeakMap();
34
+ /**
35
+ * Make `instanceof parent` true for instances of `child` without `child`
36
+ * extending it, like Python's `ABC.register`. Use it when upstream inherits
37
+ * from two concrete classes, e.g. `InputTextRawFrame(SystemFrame, TextFrame)`:
38
+ * `class InputTextRawFrame extends SystemFrame` + `addVirtualBase(InputTextRawFrame, TextFrame)`.
39
+ * The child must declare the parent's fields itself.
40
+ */
41
+ export function addVirtualBase(child, parent) {
42
+ let children = virtualBases.get(parent);
43
+ if (!children) {
44
+ children = new Set();
45
+ virtualBases.set(parent, children);
46
+ Object.defineProperty(parent, Symbol.hasInstance, {
47
+ value(value) {
48
+ if (Function.prototype[Symbol.hasInstance].call(this, value))
49
+ return true;
50
+ const registered = virtualBases.get(this);
51
+ if (!registered)
52
+ return false;
53
+ for (const c of registered) {
54
+ if (Function.prototype[Symbol.hasInstance].call(c, value))
55
+ return true;
56
+ }
57
+ return false;
58
+ },
59
+ });
60
+ }
61
+ children.add(child);
62
+ }
63
+ //# sourceMappingURL=mixin.js.map
@@ -0,0 +1,73 @@
1
+ /** Base class for network utilities, providing exponential backoff time calculation. */
2
+ /**
3
+ * Calculate exponential backoff wait time.
4
+ *
5
+ * @param attempt Current attempt number (1-based)
6
+ * @param minWait Minimum wait time in seconds
7
+ * @param maxWait Maximum wait time in seconds
8
+ * @param multiplier Base multiplier for exponential calculation
9
+ * @returns Wait time in seconds
10
+ */
11
+ export declare function exponentialBackoffTime(attempt: number, minWait?: number, maxWait?: number, multiplier?: number): number;
12
+ export interface QuickFailureResultOptions {
13
+ isQuickFailure: boolean;
14
+ shouldGiveUp: boolean;
15
+ }
16
+ /**
17
+ * Outcome of recording one failed connection attempt.
18
+ *
19
+ * - `isQuickFailure`: Whether this attempt lasted less than the tracker's
20
+ * `minStableDuration`.
21
+ * - `shouldGiveUp`: Whether `maxConsecutiveFailures` quick failures have now
22
+ * happened in a row and the caller should stop retrying.
23
+ */
24
+ export declare class QuickFailureResult {
25
+ isQuickFailure: boolean;
26
+ shouldGiveUp: boolean;
27
+ constructor(options: QuickFailureResultOptions);
28
+ }
29
+ export interface QuickFailureTrackerOptions {
30
+ /**
31
+ * Minimum time, in seconds, a connection must survive to be considered
32
+ * stable rather than a quick failure.
33
+ */
34
+ minStableDuration?: number;
35
+ /**
36
+ * Number of consecutive quick failures after which `record()` reports that
37
+ * the caller should give up.
38
+ */
39
+ maxConsecutiveFailures?: number;
40
+ }
41
+ /**
42
+ * Detects a connection that keeps failing immediately after connecting.
43
+ *
44
+ * Exponential backoff alone doesn't help when a connection attempt succeeds
45
+ * just enough to fail again right away (e.g. a server that accepts a
46
+ * WebSocket handshake but then immediately rejects invalid credentials) —
47
+ * waiting longer between attempts won't fix that, only stopping will.
48
+ *
49
+ * Call `record()` with how long each failed attempt lasted. Once
50
+ * `maxConsecutiveFailures` attempts in a row each lasted under
51
+ * `minStableDuration` seconds, the result's `shouldGiveUp` is true,
52
+ * telling the caller to stop retrying instead of trying again.
53
+ */
54
+ export declare class QuickFailureTracker {
55
+ minStableDuration: number;
56
+ maxConsecutiveFailures: number;
57
+ count: number;
58
+ constructor(options?: QuickFailureTrackerOptions);
59
+ /**
60
+ * Record a failed connection attempt that lasted `duration` seconds.
61
+ *
62
+ * Increments the consecutive-failure streak if this attempt was a quick
63
+ * failure, or resets it if the attempt was stable.
64
+ *
65
+ * @param duration How long the failed attempt lasted, in seconds.
66
+ * @returns A `QuickFailureResult` describing this attempt and whether the
67
+ * caller should give up.
68
+ */
69
+ record(duration: number): QuickFailureResult;
70
+ /** Reset the consecutive-failure streak, e.g. on a fresh connect. */
71
+ reset(): void;
72
+ }
73
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1,90 @@
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/network.py
6
+ /** Base class for network utilities, providing exponential backoff time calculation. */
7
+ /**
8
+ * Calculate exponential backoff wait time.
9
+ *
10
+ * @param attempt Current attempt number (1-based)
11
+ * @param minWait Minimum wait time in seconds
12
+ * @param maxWait Maximum wait time in seconds
13
+ * @param multiplier Base multiplier for exponential calculation
14
+ * @returns Wait time in seconds
15
+ */
16
+ export function exponentialBackoffTime(attempt, minWait = 4, maxWait = 10, multiplier = 1) {
17
+ const exp = 2 ** (attempt - 1) * multiplier;
18
+ // Python raises OverflowError for huge exponents; JS yields Infinity/NaN.
19
+ if (Number.isNaN(exp)) {
20
+ return maxWait;
21
+ }
22
+ const result = Math.max(0, Math.min(exp, maxWait));
23
+ return Math.max(minWait, result);
24
+ }
25
+ /**
26
+ * Outcome of recording one failed connection attempt.
27
+ *
28
+ * - `isQuickFailure`: Whether this attempt lasted less than the tracker's
29
+ * `minStableDuration`.
30
+ * - `shouldGiveUp`: Whether `maxConsecutiveFailures` quick failures have now
31
+ * happened in a row and the caller should stop retrying.
32
+ */
33
+ export class QuickFailureResult {
34
+ isQuickFailure;
35
+ shouldGiveUp;
36
+ constructor(options) {
37
+ this.isQuickFailure = options.isQuickFailure;
38
+ this.shouldGiveUp = options.shouldGiveUp;
39
+ }
40
+ }
41
+ /**
42
+ * Detects a connection that keeps failing immediately after connecting.
43
+ *
44
+ * Exponential backoff alone doesn't help when a connection attempt succeeds
45
+ * just enough to fail again right away (e.g. a server that accepts a
46
+ * WebSocket handshake but then immediately rejects invalid credentials) —
47
+ * waiting longer between attempts won't fix that, only stopping will.
48
+ *
49
+ * Call `record()` with how long each failed attempt lasted. Once
50
+ * `maxConsecutiveFailures` attempts in a row each lasted under
51
+ * `minStableDuration` seconds, the result's `shouldGiveUp` is true,
52
+ * telling the caller to stop retrying instead of trying again.
53
+ */
54
+ export class QuickFailureTracker {
55
+ minStableDuration;
56
+ maxConsecutiveFailures;
57
+ count = 0;
58
+ constructor(options = {}) {
59
+ this.minStableDuration = options.minStableDuration ?? 5.0;
60
+ this.maxConsecutiveFailures = options.maxConsecutiveFailures ?? 3;
61
+ }
62
+ /**
63
+ * Record a failed connection attempt that lasted `duration` seconds.
64
+ *
65
+ * Increments the consecutive-failure streak if this attempt was a quick
66
+ * failure, or resets it if the attempt was stable.
67
+ *
68
+ * @param duration How long the failed attempt lasted, in seconds.
69
+ * @returns A `QuickFailureResult` describing this attempt and whether the
70
+ * caller should give up.
71
+ */
72
+ record(duration) {
73
+ const isQuickFailure = duration < this.minStableDuration;
74
+ if (isQuickFailure) {
75
+ this.count += 1;
76
+ }
77
+ else {
78
+ this.count = 0;
79
+ }
80
+ return new QuickFailureResult({
81
+ isQuickFailure,
82
+ shouldGiveUp: isQuickFailure && this.count >= this.maxConsecutiveFailures,
83
+ });
84
+ }
85
+ /** Reset the consecutive-failure streak, e.g. on a fresh connect. */
86
+ reset() {
87
+ this.count = 0;
88
+ }
89
+ }
90
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Return allowed origins from the `PIPECAT_ALLOWED_ORIGINS` env var.
3
+ *
4
+ * Parses a comma-separated list of origin strings. Returns an empty list
5
+ * (allow all) when the variable is unset or empty.
6
+ */
7
+ export declare function defaultAllowedOrigins(): string[];
8
+ /**
9
+ * Return whether `origin` is permitted by `allowedOrigins`.
10
+ *
11
+ * @param origin The value of the `Origin` header, or an empty string if absent.
12
+ * @param allowedOrigins List of allowed origin strings. An empty list allows
13
+ * all origins. When non-empty, a missing or disallowed origin is rejected.
14
+ */
15
+ export declare function isOriginAllowed(origin: string, allowedOrigins: string[]): boolean;
16
+ //# sourceMappingURL=allowed_origins.d.ts.map
@@ -0,0 +1,34 @@
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/security/allowed_origins.py
6
+ /** Origin validation utilities. */
7
+ import { getEnv } from "../env.js";
8
+ /**
9
+ * Return allowed origins from the `PIPECAT_ALLOWED_ORIGINS` env var.
10
+ *
11
+ * Parses a comma-separated list of origin strings. Returns an empty list
12
+ * (allow all) when the variable is unset or empty.
13
+ */
14
+ export function defaultAllowedOrigins() {
15
+ const val = getEnv("PIPECAT_ALLOWED_ORIGINS") ?? "";
16
+ return val
17
+ .split(",")
18
+ .map((o) => o.trim())
19
+ .filter((o) => o);
20
+ }
21
+ /**
22
+ * Return whether `origin` is permitted by `allowedOrigins`.
23
+ *
24
+ * @param origin The value of the `Origin` header, or an empty string if absent.
25
+ * @param allowedOrigins List of allowed origin strings. An empty list allows
26
+ * all origins. When non-empty, a missing or disallowed origin is rejected.
27
+ */
28
+ export function isOriginAllowed(origin, allowedOrigins) {
29
+ if (allowedOrigins.length === 0) {
30
+ return true;
31
+ }
32
+ return new Set(allowedOrigins.map((o) => o.toLowerCase())).has(origin.toLowerCase());
33
+ }
34
+ //# sourceMappingURL=allowed_origins.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,7 @@
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/security/__init__.py
6
+ export {};
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Masks credentials in text bound for logs and error reports.
3
+ *
4
+ * Error messages often quote whatever a failure carried: an SDK exception that
5
+ * prints the headers it sent, a URL signed for one download, a provider body
6
+ * echoing the key it rejected. `redactSecrets` masks the credential and keeps
7
+ * the rest, so a message still says what went wrong.
8
+ *
9
+ * It masks three things:
10
+ *
11
+ * - The value of any `name=value` or `name: value` pair, quoted or not,
12
+ * whose name marks a credential (`api_key`, `Authorization`,
13
+ * `X-Amz-Signature`, `apiKey`...). This covers query strings, printed
14
+ * header dicts and plain prose alike.
15
+ * - A URL's password (`scheme://user:password@host`).
16
+ * - Tokens recognizable by their format alone: provider key prefixes, AWS
17
+ * access key IDs and JWTs.
18
+ */
19
+ export declare const REDACTED = "[REDACTED]";
20
+ /**
21
+ * Mask the credentials in `text`, leaving the rest as written.
22
+ *
23
+ * @param text Text that may quote a credential, such as an error message.
24
+ * @returns The text with each credential replaced by `[REDACTED]`.
25
+ */
26
+ export declare function redactSecrets(text: string): string;
27
+ //# sourceMappingURL=redaction.d.ts.map
@@ -0,0 +1,123 @@
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/security/redaction.py
6
+ /**
7
+ * Masks credentials in text bound for logs and error reports.
8
+ *
9
+ * Error messages often quote whatever a failure carried: an SDK exception that
10
+ * prints the headers it sent, a URL signed for one download, a provider body
11
+ * echoing the key it rejected. `redactSecrets` masks the credential and keeps
12
+ * the rest, so a message still says what went wrong.
13
+ *
14
+ * It masks three things:
15
+ *
16
+ * - The value of any `name=value` or `name: value` pair, quoted or not,
17
+ * whose name marks a credential (`api_key`, `Authorization`,
18
+ * `X-Amz-Signature`, `apiKey`...). This covers query strings, printed
19
+ * header dicts and plain prose alike.
20
+ * - A URL's password (`scheme://user:password@host`).
21
+ * - Tokens recognizable by their format alone: provider key prefixes, AWS
22
+ * access key IDs and JWTs.
23
+ */
24
+ export const REDACTED = "[REDACTED]";
25
+ // A name marks a credential when one of its words is one of these, so
26
+ // `x-api-key` and `X-Amz-Security-Token` do while `keyterms` and `max_tokens`
27
+ // don't.
28
+ const CREDENTIAL_WORDS = new Set([
29
+ "apikey",
30
+ "auth",
31
+ "authorization",
32
+ "cookie",
33
+ "credential",
34
+ "credentials",
35
+ "creds",
36
+ "jwt",
37
+ "key",
38
+ "passwd",
39
+ "password",
40
+ "pwd",
41
+ "secret",
42
+ "sig",
43
+ "signature",
44
+ "token",
45
+ // Google's resumable upload session ID, which authorizes the upload by itself.
46
+ "uploadid",
47
+ ]);
48
+ // `name=value` or `name: value` (or `:=`, `=>`), the name optionally quoted as
49
+ // in a printed dict, the value quoted or running to the next delimiter. A
50
+ // quoted value cut short before its closing quote, as a truncated repr leaves
51
+ // it, runs to the next delimiter instead. An auth scheme (`Bearer`, `Basic`...)
52
+ // ahead of the value is kept. A value already redacted is matched whole, so
53
+ // text redacted twice reads the same as text redacted once.
54
+ const PAIR = new RegExp(String.raw `(?<name>(?<![\w.-])(?<nq>["']?)[A-Za-z][\w.-]*\k<nq>)` +
55
+ String.raw `(?<sep>\s*(?::=|=>|[:=])\s*)` +
56
+ String.raw `(?<scheme>(?:Bearer|Basic|Token|Api-Token|Key|Digest|AWS4-HMAC-SHA256)\s+)?` +
57
+ String.raw `(?:(?<vq>["'])(?<quoted>.*?)\k<vq>` +
58
+ String.raw `|(?<oq>["']?)(?<bare>(?:\[REDACTED\]|[^\s,;&"'}\])\[])+))`, "g");
59
+ const URL_PASSWORD = /(?<prefix>\b[a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)[^\s/@]+(?=@)/gi;
60
+ // Formats after gitleaks' rules for the same credentials
61
+ // (github.com/gitleaks/gitleaks, config/gitleaks.toml), loosened where a
62
+ // looser match costs nothing: a log line is masked, not scanned for findings.
63
+ const KNOWN_TOKENS = new RegExp(String.raw `\b(?:` +
64
+ String.raw `sk-[A-Za-z0-9_-]{20,}` + // OpenAI, Anthropic
65
+ String.raw `|(?:A3T[A-Z0-9]|AKIA|ASIA|ABIA|ACCA)[A-Z0-9]{16}` + // AWS access key IDs
66
+ String.raw `|ABSK[A-Za-z0-9+/]{109,269}={0,2}` + // Amazon Bedrock API keys, long-lived
67
+ String.raw `|bedrock-api-key-[A-Za-z0-9+/=_-]+` + // Amazon Bedrock API keys, short-lived
68
+ String.raw `|AIza[0-9A-Za-z_-]{35}` + // Google API keys
69
+ String.raw `|gh[pousr]_[A-Za-z0-9]{36,}|github_pat_\w{82,}` + // GitHub
70
+ String.raw `|xox[abeoprs]-[A-Za-z0-9-]{10,}|xapp-\d-[A-Za-z0-9-]{10,}` + // Slack
71
+ // Slack webhooks, whose path is the secret
72
+ String.raw `|(?:(?<=hooks\.slack\.com/services/)|(?<=hooks\.slack\.com/workflows/)` +
73
+ String.raw `|(?<=hooks\.slack\.com/triggers/))[A-Za-z0-9+/]{20,}` +
74
+ String.raw `|(?:hf|api_org)_[A-Za-z]{34}` + // Hugging Face
75
+ String.raw `|pplx-[A-Za-z0-9]{48}` + // Perplexity
76
+ String.raw `|SK[0-9a-fA-F]{32}` + // Twilio API keys
77
+ String.raw `|eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]*` + // JWTs, signed or not
78
+ String.raw `)` +
79
+ // A PEM private key, through its END line or, cut short, the end of the text.
80
+ String.raw `|-----BEGIN[ A-Z0-9_-]{0,100}PRIVATE KEY(?: BLOCK)?-----` +
81
+ String.raw `(?:[\s\S]*?-----END[ A-Z0-9_-]{0,100}PRIVATE KEY(?: BLOCK)?-----|[\s\S]*)`, "g");
82
+ function stripQuotes(name) {
83
+ return name.replace(/^["']+/, "").replace(/["']+$/, "");
84
+ }
85
+ function isCredentialName(name) {
86
+ const words = stripQuotes(name)
87
+ .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
88
+ .toLowerCase();
89
+ const parts = words.split(/[-_.]/).filter((p) => p);
90
+ return CREDENTIAL_WORDS.has(parts.join("")) || parts.some((p) => CREDENTIAL_WORDS.has(p));
91
+ }
92
+ function redactPairs(text) {
93
+ // String.prototype.replace collects every match before calling the
94
+ // replacer, so recursing with the same global regex is safe.
95
+ return text.replace(PAIR, (...args) => redactPair(args[args.length - 1]));
96
+ }
97
+ function redactPair(match) {
98
+ const quote = match.vq || "";
99
+ let value;
100
+ if (isCredentialName(match.name)) {
101
+ value = REDACTED;
102
+ }
103
+ else {
104
+ // The value may itself hold pairs, as `URL: https://...?token=...` does.
105
+ value = redactPairs(match.quoted || match.bare || "");
106
+ }
107
+ const opening = match.oq || "";
108
+ return `${match.name}${match.sep}${match.scheme || ""}${quote || opening}${value}${quote}`;
109
+ }
110
+ /**
111
+ * Mask the credentials in `text`, leaving the rest as written.
112
+ *
113
+ * @param text Text that may quote a credential, such as an error message.
114
+ * @returns The text with each credential replaced by `[REDACTED]`.
115
+ */
116
+ export function redactSecrets(text) {
117
+ // Known formats go first: a PEM key spans lines, and masking its first line
118
+ // as a pair's value would leave the rest unrecognizable.
119
+ text = text.replace(KNOWN_TOKENS, REDACTED);
120
+ text = redactPairs(text);
121
+ return text.replace(URL_PASSWORD, `$<prefix>${REDACTED}`);
122
+ }
123
+ //# sourceMappingURL=redaction.js.map