@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,79 @@
1
+ /** Who can safely reach a URL's host. */
2
+ export declare const UrlReachability: {
3
+ /** Publicly routable — safe to hand to a third party to fetch itself. */
4
+ readonly PUBLIC: "public";
5
+ /**
6
+ * Within a trusted private network — safe for this server to fetch
7
+ * directly, but not to hand off to a third party that can't reach it.
8
+ */
9
+ readonly ALLOWED: "allowed";
10
+ /** Nobody should fetch it. */
11
+ readonly BLOCKED: "blocked";
12
+ };
13
+ export type UrlReachability = (typeof UrlReachability)[keyof typeof UrlReachability];
14
+ /** A parsed IP address: its version and its value as a bigint. */
15
+ export interface IPAddress {
16
+ version: 4 | 6;
17
+ value: bigint;
18
+ }
19
+ /**
20
+ * Parse an IPv4 or IPv6 address (Python's `ipaddress.ip_address`).
21
+ *
22
+ * @throws Error If `text` is not a valid address (upstream: ValueError).
23
+ */
24
+ export declare function ipAddress(text: string): IPAddress;
25
+ /** An IPv4 or IPv6 network in CIDR form (Python's `IPv4Network | IPv6Network`). */
26
+ export declare class IPNetwork {
27
+ #private;
28
+ readonly version: 4 | 6;
29
+ readonly networkAddress: bigint;
30
+ readonly prefixlen: number;
31
+ /**
32
+ * @param cidr A network such as `"10.0.0.0/8"` or `"fd00::/8"`. A bare
33
+ * address is a single-host network. Host bits must be zero, as Python's
34
+ * strict default requires.
35
+ * @throws Error If `cidr` is not a valid network (upstream: ValueError).
36
+ */
37
+ constructor(cidr: string);
38
+ /** Whether `address` lies in this network (Python's `ip in network`). */
39
+ contains(address: IPAddress): boolean;
40
+ toString(): string;
41
+ }
42
+ /** Python's `ip_address(...).is_global`. */
43
+ export declare function ipAddressIsGlobal(address: IPAddress): boolean;
44
+ /** Resolve a hostname to its IP addresses (as `getaddrinfo` does). Throw if it fails. */
45
+ export type HostResolver = (hostname: string) => Promise<string[]>;
46
+ /** The default resolver: IP literals as-is, hostnames through `node:dns` if available. */
47
+ export declare const defaultHostResolver: HostResolver;
48
+ /** Install the resolver `classifyUrlReachability` uses. Pass `null` for the default. */
49
+ export declare function setHostResolver(resolver: HostResolver | null): void;
50
+ /**
51
+ * Return trusted networks from the `PIPECAT_ALLOWED_FILE_URL_NETWORKS` env var.
52
+ *
53
+ * Parses a comma-separated list of CIDR ranges (e.g.
54
+ * `10.0.0.0/8,192.168.0.0/16`). Returns an empty list (trust only the
55
+ * public internet) when the variable is unset or empty.
56
+ */
57
+ export declare function defaultAllowedFileUrlNetworks(): string[];
58
+ /**
59
+ * Classify who can safely reach `url`'s host: the public internet, this server, or no one.
60
+ *
61
+ * Resolution happens once, up front; it doesn't defend against a target
62
+ * that resolves differently between this check and the actual connection
63
+ * (DNS rebinding).
64
+ *
65
+ * @param url The URL to classify.
66
+ * @param allowedNetworks Private networks this server is trusted to reach
67
+ * directly (e.g. where a deployment's own file servers live), beyond the
68
+ * public internet.
69
+ * @returns `PUBLIC` if every resolved address is publicly routable — safe to
70
+ * hand to a third party (e.g. an LLM provider) to fetch itself.
71
+ * `ALLOWED` if not publicly routable, but every address falls within
72
+ * `allowedNetworks` — safe for this server to fetch directly, but not to
73
+ * hand off to a third party that can't reach it.
74
+ * `BLOCKED` otherwise: loopback, link-local (including the cloud metadata
75
+ * range `169.254.0.0/16`), private (RFC 1918), or unique-local (IPv6 ULA)
76
+ * addresses outside `allowedNetworks`, or a host that fails to resolve.
77
+ */
78
+ export declare function classifyUrlReachability(url: string, allowedNetworks?: readonly IPNetwork[]): Promise<UrlReachability>;
79
+ //# sourceMappingURL=ssrf.d.ts.map
@@ -0,0 +1,327 @@
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/ssrf.py
6
+ /**
7
+ * Guards against server-side request forgery via client-supplied URLs.
8
+ *
9
+ * Porting notes: Python's `ipaddress` module has no JavaScript counterpart, so
10
+ * this module carries the small part of it it needs (`IPNetwork`,
11
+ * `ipAddressIsGlobal`). Host resolution goes through a pluggable
12
+ * `HostResolver`; the default one uses `node:dns` through
13
+ * `process.getBuiltinModule` where the runtime provides it (Bun, Node, Deno),
14
+ * and otherwise only resolves IP literals, so a hostname that cannot be
15
+ * resolved is `BLOCKED`.
16
+ */
17
+ import { abortable, rethrowIfCancelled } from "@pipedog/asyncio";
18
+ /** Who can safely reach a URL's host. */
19
+ export const UrlReachability = {
20
+ /** Publicly routable — safe to hand to a third party to fetch itself. */
21
+ PUBLIC: "public",
22
+ /**
23
+ * Within a trusted private network — safe for this server to fetch
24
+ * directly, but not to hand off to a third party that can't reach it.
25
+ */
26
+ ALLOWED: "allowed",
27
+ /** Nobody should fetch it. */
28
+ BLOCKED: "blocked",
29
+ };
30
+ function parseIPv4(text) {
31
+ const parts = text.split(".");
32
+ if (parts.length !== 4)
33
+ return null;
34
+ let value = 0n;
35
+ for (const part of parts) {
36
+ if (!/^\d{1,3}$/.test(part))
37
+ return null;
38
+ // Python rejects leading zeros (ambiguous octal).
39
+ if (part.length > 1 && part.startsWith("0"))
40
+ return null;
41
+ const n = Number(part);
42
+ if (n > 255)
43
+ return null;
44
+ value = (value << 8n) | BigInt(n);
45
+ }
46
+ return value;
47
+ }
48
+ function parseIPv6(text) {
49
+ // Drop a scope id ("fe80::1%eth0").
50
+ const address = text.split("%")[0] ?? "";
51
+ if (!address.includes(":"))
52
+ return null;
53
+ let head = address;
54
+ let tailV4 = null;
55
+ const lastColon = address.lastIndexOf(":");
56
+ const last = address.slice(lastColon + 1);
57
+ if (last.includes(".")) {
58
+ tailV4 = parseIPv4(last);
59
+ if (tailV4 === null)
60
+ return null;
61
+ head = `${address.slice(0, lastColon + 1)}0:0`;
62
+ }
63
+ const halves = head.split("::");
64
+ if (halves.length > 2)
65
+ return null;
66
+ const parseGroups = (s) => {
67
+ if (s === "")
68
+ return [];
69
+ const groups = [];
70
+ for (const g of s.split(":")) {
71
+ if (!/^[0-9a-fA-F]{1,4}$/.test(g))
72
+ return null;
73
+ groups.push(Number.parseInt(g, 16));
74
+ }
75
+ return groups;
76
+ };
77
+ const left = parseGroups(halves[0] ?? "");
78
+ const right = halves.length === 2 ? parseGroups(halves[1] ?? "") : [];
79
+ if (left === null || right === null)
80
+ return null;
81
+ let groups;
82
+ if (halves.length === 2) {
83
+ const missing = 8 - left.length - right.length;
84
+ if (missing < 1)
85
+ return null;
86
+ groups = [...left, ...new Array(missing).fill(0), ...right];
87
+ }
88
+ else {
89
+ groups = left;
90
+ }
91
+ if (groups.length !== 8)
92
+ return null;
93
+ let value = 0n;
94
+ for (const g of groups)
95
+ value = (value << 16n) | BigInt(g);
96
+ if (tailV4 !== null)
97
+ value = (value & ~0xffffffffn) | tailV4;
98
+ return value;
99
+ }
100
+ /**
101
+ * Parse an IPv4 or IPv6 address (Python's `ipaddress.ip_address`).
102
+ *
103
+ * @throws Error If `text` is not a valid address (upstream: ValueError).
104
+ */
105
+ export function ipAddress(text) {
106
+ const v4 = parseIPv4(text);
107
+ if (v4 !== null)
108
+ return { version: 4, value: v4 };
109
+ const v6 = parseIPv6(text);
110
+ if (v6 !== null)
111
+ return { version: 6, value: v6 };
112
+ throw new Error(`'${text}' does not appear to be an IPv4 or IPv6 address`);
113
+ }
114
+ /** An IPv4 or IPv6 network in CIDR form (Python's `IPv4Network | IPv6Network`). */
115
+ export class IPNetwork {
116
+ version;
117
+ networkAddress;
118
+ prefixlen;
119
+ #mask;
120
+ /**
121
+ * @param cidr A network such as `"10.0.0.0/8"` or `"fd00::/8"`. A bare
122
+ * address is a single-host network. Host bits must be zero, as Python's
123
+ * strict default requires.
124
+ * @throws Error If `cidr` is not a valid network (upstream: ValueError).
125
+ */
126
+ constructor(cidr) {
127
+ const [addressText, prefixText] = cidr.trim().split("/");
128
+ const address = ipAddress(addressText ?? "");
129
+ const bits = address.version === 4 ? 32 : 128;
130
+ const prefixlen = prefixText === undefined ? bits : Number(prefixText);
131
+ if (!Number.isInteger(prefixlen) || prefixlen < 0 || prefixlen > bits) {
132
+ throw new Error(`'${cidr}' does not appear to be an IPv4 or IPv6 network`);
133
+ }
134
+ const all = (1n << BigInt(bits)) - 1n;
135
+ const mask = (all << BigInt(bits - prefixlen)) & all;
136
+ if ((address.value & mask) !== address.value) {
137
+ throw new Error(`${cidr} has host bits set`);
138
+ }
139
+ this.version = address.version;
140
+ this.networkAddress = address.value;
141
+ this.prefixlen = prefixlen;
142
+ this.#mask = mask;
143
+ }
144
+ /** Whether `address` lies in this network (Python's `ip in network`). */
145
+ contains(address) {
146
+ return address.version === this.version && (address.value & this.#mask) === this.networkAddress;
147
+ }
148
+ toString() {
149
+ return `${formatAddress({ version: this.version, value: this.networkAddress })}/${this.prefixlen}`;
150
+ }
151
+ }
152
+ function formatAddress(address) {
153
+ if (address.version === 4) {
154
+ const v = address.value;
155
+ return [24n, 16n, 8n, 0n].map((s) => ((v >> s) & 0xffn).toString()).join(".");
156
+ }
157
+ const groups = [];
158
+ for (let s = 112n; s >= 0n; s -= 16n)
159
+ groups.push(((address.value >> s) & 0xffffn).toString(16));
160
+ return groups.join(":");
161
+ }
162
+ // The IANA special-purpose registries, as Python's `ipaddress` lists them.
163
+ const IPV4_PRIVATE = [
164
+ "0.0.0.0/8",
165
+ "10.0.0.0/8",
166
+ "127.0.0.0/8",
167
+ "169.254.0.0/16",
168
+ "172.16.0.0/12",
169
+ "192.0.0.0/29",
170
+ "192.0.0.170/31",
171
+ "192.0.2.0/24",
172
+ "192.168.0.0/16",
173
+ "198.18.0.0/15",
174
+ "198.51.100.0/24",
175
+ "203.0.113.0/24",
176
+ "240.0.0.0/4",
177
+ "255.255.255.255/32",
178
+ ].map((n) => new IPNetwork(n));
179
+ const IPV4_PRIVATE_EXCEPTIONS = ["192.0.0.9/32", "192.0.0.10/32"].map((n) => new IPNetwork(n));
180
+ const IPV4_SHARED_ADDRESS_SPACE = new IPNetwork("100.64.0.0/10");
181
+ const IPV6_PRIVATE = [
182
+ "::1/128",
183
+ "::/128",
184
+ "::ffff:0:0/96",
185
+ "64:ff9b:1::/48",
186
+ "100::/64",
187
+ "2001::/23",
188
+ "2001:db8::/32",
189
+ "2002::/16",
190
+ "3fff::/20",
191
+ "fc00::/7",
192
+ "fe80::/10",
193
+ ].map((n) => new IPNetwork(n));
194
+ const IPV6_PRIVATE_EXCEPTIONS = [
195
+ "2001:1::1/128",
196
+ "2001:1::2/128",
197
+ "2001:3::/32",
198
+ "2001:4:112::/48",
199
+ "2001:20::/28",
200
+ "2001:30::/28",
201
+ ].map((n) => new IPNetwork(n));
202
+ const IPV4_MAPPED = new IPNetwork("::ffff:0:0/96");
203
+ /** Python's `ip_address(...).is_global`. */
204
+ export function ipAddressIsGlobal(address) {
205
+ if (address.version === 4) {
206
+ const isPrivate = IPV4_PRIVATE.some((n) => n.contains(address)) &&
207
+ !IPV4_PRIVATE_EXCEPTIONS.some((n) => n.contains(address));
208
+ return !IPV4_SHARED_ADDRESS_SPACE.contains(address) && !isPrivate;
209
+ }
210
+ // An IPv4-mapped address is judged by the IPv4 address it carries.
211
+ if (IPV4_MAPPED.contains(address)) {
212
+ return ipAddressIsGlobal({ version: 4, value: address.value & 0xffffffffn });
213
+ }
214
+ const isPrivate = IPV6_PRIVATE.some((n) => n.contains(address)) &&
215
+ !IPV6_PRIVATE_EXCEPTIONS.some((n) => n.contains(address));
216
+ return !isPrivate;
217
+ }
218
+ function nodeDns() {
219
+ const proc = globalThis.process;
220
+ try {
221
+ return proc?.getBuiltinModule?.("node:dns")?.promises ?? null;
222
+ }
223
+ catch (e) {
224
+ rethrowIfCancelled(e);
225
+ return null;
226
+ }
227
+ }
228
+ /** The default resolver: IP literals as-is, hostnames through `node:dns` if available. */
229
+ export const defaultHostResolver = async (hostname) => {
230
+ try {
231
+ ipAddress(hostname);
232
+ return [hostname];
233
+ }
234
+ catch (e) {
235
+ rethrowIfCancelled(e);
236
+ }
237
+ const dns = nodeDns();
238
+ if (!dns) {
239
+ throw new Error(`no DNS resolver available to resolve '${hostname}'`);
240
+ }
241
+ const infos = await abortable(dns.lookup(hostname, { all: true }));
242
+ return infos.map((info) => info.address);
243
+ };
244
+ let hostResolver = defaultHostResolver;
245
+ /** Install the resolver `classifyUrlReachability` uses. Pass `null` for the default. */
246
+ export function setHostResolver(resolver) {
247
+ hostResolver = resolver ?? defaultHostResolver;
248
+ }
249
+ function getenv(name) {
250
+ return globalThis.process?.env?.[name];
251
+ }
252
+ /**
253
+ * Return trusted networks from the `PIPECAT_ALLOWED_FILE_URL_NETWORKS` env var.
254
+ *
255
+ * Parses a comma-separated list of CIDR ranges (e.g.
256
+ * `10.0.0.0/8,192.168.0.0/16`). Returns an empty list (trust only the
257
+ * public internet) when the variable is unset or empty.
258
+ */
259
+ export function defaultAllowedFileUrlNetworks() {
260
+ const val = getenv("PIPECAT_ALLOWED_FILE_URL_NETWORKS") ?? "";
261
+ return val
262
+ .split(",")
263
+ .map((n) => n.trim())
264
+ .filter((n) => n);
265
+ }
266
+ function urlHostname(url) {
267
+ let parsed;
268
+ try {
269
+ parsed = new URL(url);
270
+ }
271
+ catch (e) {
272
+ rethrowIfCancelled(e);
273
+ return null;
274
+ }
275
+ let hostname = parsed.hostname;
276
+ // `URL` keeps the brackets around IPv6 literals; `urlsplit` does not.
277
+ if (hostname.startsWith("[") && hostname.endsWith("]")) {
278
+ hostname = hostname.slice(1, -1);
279
+ }
280
+ return hostname ? hostname.toLowerCase() : null;
281
+ }
282
+ /**
283
+ * Classify who can safely reach `url`'s host: the public internet, this server, or no one.
284
+ *
285
+ * Resolution happens once, up front; it doesn't defend against a target
286
+ * that resolves differently between this check and the actual connection
287
+ * (DNS rebinding).
288
+ *
289
+ * @param url The URL to classify.
290
+ * @param allowedNetworks Private networks this server is trusted to reach
291
+ * directly (e.g. where a deployment's own file servers live), beyond the
292
+ * public internet.
293
+ * @returns `PUBLIC` if every resolved address is publicly routable — safe to
294
+ * hand to a third party (e.g. an LLM provider) to fetch itself.
295
+ * `ALLOWED` if not publicly routable, but every address falls within
296
+ * `allowedNetworks` — safe for this server to fetch directly, but not to
297
+ * hand off to a third party that can't reach it.
298
+ * `BLOCKED` otherwise: loopback, link-local (including the cloud metadata
299
+ * range `169.254.0.0/16`), private (RFC 1918), or unique-local (IPv6 ULA)
300
+ * addresses outside `allowedNetworks`, or a host that fails to resolve.
301
+ */
302
+ export async function classifyUrlReachability(url, allowedNetworks = []) {
303
+ const hostname = urlHostname(url);
304
+ if (!hostname) {
305
+ return UrlReachability.BLOCKED;
306
+ }
307
+ let addresses;
308
+ try {
309
+ addresses = await hostResolver(hostname);
310
+ }
311
+ catch (e) {
312
+ rethrowIfCancelled(e);
313
+ return UrlReachability.BLOCKED;
314
+ }
315
+ if (addresses.length === 0) {
316
+ return UrlReachability.BLOCKED;
317
+ }
318
+ const ips = addresses.map((a) => ipAddress(a));
319
+ if (ips.every((ip) => ipAddressIsGlobal(ip))) {
320
+ return UrlReachability.PUBLIC;
321
+ }
322
+ if (ips.every((ip) => ipAddressIsGlobal(ip) || allowedNetworks.some((network) => network.contains(ip)))) {
323
+ return UrlReachability.ALLOWED;
324
+ }
325
+ return UrlReachability.BLOCKED;
326
+ }
327
+ //# sourceMappingURL=ssrf.js.map
@@ -0,0 +1,35 @@
1
+ type AsyncMethod<This, A extends unknown[], T> = (this: This, ...args: A) => Promise<T>;
2
+ /**
3
+ * Run the decorated method for the first owner to acquire `name`.
4
+ *
5
+ * Owners that arrive while the first is still running wait for it to finish,
6
+ * so no caller continues against a half-built resource. Later owners return
7
+ * `null` without running the method again.
8
+ *
9
+ * A method that throws leaves the resource unbuilt, and every owner of it is
10
+ * told: the error is re-thrown to each one that arrives later, rather than the
11
+ * method being attempted again. So the owners of a resource share its verdict,
12
+ * and a pair of processors sharing a client either both come up or both fail.
13
+ *
14
+ * Note: the lock is not reentrant, so a method must not call another method
15
+ * that acquires the same resource.
16
+ *
17
+ * @param name The resource being acquired. Names are per instance, so paired
18
+ * operations on the same object (e.g. `setup`/`cleanup` and `join`/`leave`)
19
+ * count their owners separately.
20
+ */
21
+ export declare function acquires(name: string): <This extends object, A extends unknown[], T>(func: AsyncMethod<This, A, T>, _context?: unknown) => AsyncMethod<This, A, T | null>;
22
+ /**
23
+ * Run the decorated method for the last owner to release `name`.
24
+ *
25
+ * Every other owner returns `null`, as does a release that no acquire
26
+ * matched.
27
+ *
28
+ * Note: the lock is not reentrant, so a method must not call another method
29
+ * that releases the same resource.
30
+ *
31
+ * @param name The resource being released, matching the `acquires` name.
32
+ */
33
+ export declare function releases(name: string): <This extends object, A extends unknown[], T>(func: AsyncMethod<This, A, T>, _context?: unknown) => AsyncMethod<This, A, T | null>;
34
+ export {};
35
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1,136 @@
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/shared.py
6
+ /**
7
+ * Decorators for operations on a resource shared by several owners.
8
+ *
9
+ * An input and an output transport share a single client, so both set it up,
10
+ * both join its room, and both tear it down. Processors are set up and cleaned
11
+ * up concurrently, so those calls overlap.
12
+ *
13
+ * Decorate the paired operations with `acquires` and `releases` and the work
14
+ * runs once: the first owner to acquire runs the body while the rest wait for
15
+ * it, and only the last owner to release runs the undo.
16
+ *
17
+ * The returned decorators work both as standard (TC39) method decorators and
18
+ * as plain functions, since runtimes that strip types (Node) do not run
19
+ * decorator syntax:
20
+ *
21
+ * @example
22
+ * class Client {
23
+ * async setup(): Promise<void> { ... }
24
+ * async cleanup(): Promise<void> { ... }
25
+ * static {
26
+ * this.prototype.setup = acquires("client")(this.prototype.setup);
27
+ * this.prototype.cleanup = releases("client")(this.prototype.cleanup);
28
+ * }
29
+ * }
30
+ */
31
+ import { Lock } from "@pipedog/asyncio";
32
+ /** How many owners hold a resource, and the lock serializing them. */
33
+ class SharedResource {
34
+ owners = 0;
35
+ lock = new Lock();
36
+ // What acquiring raised, if it did, so later owners fail the same way.
37
+ error = null;
38
+ hasError = false;
39
+ }
40
+ // Upstream keeps the state in the instance's `__dict__`; a WeakMap keeps it
41
+ // per instance without touching the object.
42
+ const RESOURCES = new WeakMap();
43
+ /**
44
+ * Get the named resource's state, creating it on first use.
45
+ *
46
+ * The state lives with the instance so a class doesn't need to initialize it,
47
+ * and so two instances of the same class count their owners separately.
48
+ */
49
+ function sharedResource(obj, name) {
50
+ let resources = RESOURCES.get(obj);
51
+ if (!resources) {
52
+ resources = new Map();
53
+ RESOURCES.set(obj, resources);
54
+ }
55
+ let resource = resources.get(name);
56
+ if (!resource) {
57
+ resource = new SharedResource();
58
+ resources.set(name, resource);
59
+ }
60
+ return resource;
61
+ }
62
+ /**
63
+ * Run the decorated method for the first owner to acquire `name`.
64
+ *
65
+ * Owners that arrive while the first is still running wait for it to finish,
66
+ * so no caller continues against a half-built resource. Later owners return
67
+ * `null` without running the method again.
68
+ *
69
+ * A method that throws leaves the resource unbuilt, and every owner of it is
70
+ * told: the error is re-thrown to each one that arrives later, rather than the
71
+ * method being attempted again. So the owners of a resource share its verdict,
72
+ * and a pair of processors sharing a client either both come up or both fail.
73
+ *
74
+ * Note: the lock is not reentrant, so a method must not call another method
75
+ * that acquires the same resource.
76
+ *
77
+ * @param name The resource being acquired. Names are per instance, so paired
78
+ * operations on the same object (e.g. `setup`/`cleanup` and `join`/`leave`)
79
+ * count their owners separately.
80
+ */
81
+ export function acquires(name) {
82
+ return function decorator(func, _context) {
83
+ return async function wrapper(...args) {
84
+ const resource = sharedResource(this, name);
85
+ return await resource.lock.run(async () => {
86
+ if (resource.hasError) {
87
+ throw resource.error;
88
+ }
89
+ resource.owners += 1;
90
+ if (resource.owners === 1) {
91
+ try {
92
+ return await func.apply(this, args);
93
+ }
94
+ catch (e) {
95
+ // Nothing was built, so nothing is owned and nothing is released
96
+ // later. Upstream catches BaseException, so cancellation counts too.
97
+ resource.owners -= 1;
98
+ resource.error = e;
99
+ resource.hasError = true;
100
+ throw e;
101
+ }
102
+ }
103
+ return null;
104
+ });
105
+ };
106
+ };
107
+ }
108
+ /**
109
+ * Run the decorated method for the last owner to release `name`.
110
+ *
111
+ * Every other owner returns `null`, as does a release that no acquire
112
+ * matched.
113
+ *
114
+ * Note: the lock is not reentrant, so a method must not call another method
115
+ * that releases the same resource.
116
+ *
117
+ * @param name The resource being released, matching the `acquires` name.
118
+ */
119
+ export function releases(name) {
120
+ return function decorator(func, _context) {
121
+ return async function wrapper(...args) {
122
+ const resource = sharedResource(this, name);
123
+ return await resource.lock.run(async () => {
124
+ if (resource.owners === 0) {
125
+ return null;
126
+ }
127
+ resource.owners -= 1;
128
+ if (resource.owners === 0) {
129
+ return await func.apply(this, args);
130
+ }
131
+ return null;
132
+ });
133
+ };
134
+ };
135
+ }
136
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1,17 @@
1
+ /** Absolute paths of the files listed in `PIPECAT_SETUP_FILES`. */
2
+ export declare function _setupFilePaths(): string[];
3
+ export interface RunSetupHookOptions {
4
+ /** Object passed to the hook function. */
5
+ target: unknown;
6
+ /** Name of the async function to call in each setup file (e.g. `"setup_worker_runner"`). */
7
+ functionName: string;
8
+ }
9
+ /**
10
+ * Run `functionName(target)` from every `PIPECAT_SETUP_FILES` module.
11
+ *
12
+ * @param options.target Object passed to the hook function.
13
+ * @param options.functionName Name of the async function to call in each
14
+ * setup file. Its camelCase spelling is accepted too.
15
+ */
16
+ export declare function runSetupHook(options: RunSetupHookOptions): Promise<void>;
17
+ //# sourceMappingURL=startup.d.ts.map