@pipedog/core 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/NOTICE +9 -0
- package/dist/adapters/base_llm_adapter.d.ts +266 -0
- package/dist/adapters/base_llm_adapter.js +489 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.js +8 -0
- package/dist/adapters/schemas/direct_function.d.ts +202 -0
- package/dist/adapters/schemas/direct_function.js +302 -0
- package/dist/adapters/schemas/function_schema.d.ts +67 -0
- package/dist/adapters/schemas/function_schema.js +72 -0
- package/dist/adapters/schemas/index.d.ts +2 -0
- package/dist/adapters/schemas/index.js +8 -0
- package/dist/adapters/schemas/tools_schema.d.ts +57 -0
- package/dist/adapters/schemas/tools_schema.js +79 -0
- package/dist/adapters/services/index.d.ts +2 -0
- package/dist/adapters/services/index.js +8 -0
- package/dist/adapters/services/open_ai_adapter.d.ts +147 -0
- package/dist/adapters/services/open_ai_adapter.js +250 -0
- package/dist/audio/dtmf/dtmf_data.d.ts +3 -0
- package/dist/audio/dtmf/dtmf_data.js +22 -0
- package/dist/audio/dtmf/index.d.ts +2 -0
- package/dist/audio/dtmf/index.js +8 -0
- package/dist/audio/dtmf/types.d.ts +31 -0
- package/dist/audio/dtmf/types.js +35 -0
- package/dist/audio/dtmf/utils.d.ts +13 -0
- package/dist/audio/dtmf/utils.js +62 -0
- package/dist/audio/filters/base_audio_filter.d.ts +51 -0
- package/dist/audio/filters/base_audio_filter.js +17 -0
- package/dist/audio/filters/index.d.ts +2 -0
- package/dist/audio/filters/index.js +8 -0
- package/dist/audio/index.d.ts +2 -0
- package/dist/audio/index.js +8 -0
- package/dist/audio/krisp_instance.d.ts +95 -0
- package/dist/audio/krisp_instance.js +229 -0
- package/dist/audio/mixers/base_audio_mixer.d.ts +56 -0
- package/dist/audio/mixers/base_audio_mixer.js +16 -0
- package/dist/audio/mixers/index.d.ts +2 -0
- package/dist/audio/mixers/index.js +8 -0
- package/dist/audio/resamplers/base_audio_resampler.d.ts +46 -0
- package/dist/audio/resamplers/base_audio_resampler.js +35 -0
- package/dist/audio/resamplers/index.d.ts +2 -0
- package/dist/audio/resamplers/index.js +8 -0
- package/dist/audio/resamplers/resampy_resampler.d.ts +10 -0
- package/dist/audio/resamplers/resampy_resampler.js +15 -0
- package/dist/audio/resamplers/soxr_resampler.d.ts +54 -0
- package/dist/audio/resamplers/soxr_resampler.js +69 -0
- package/dist/audio/resamplers/soxr_stream_resampler.d.ts +75 -0
- package/dist/audio/resamplers/soxr_stream_resampler.js +146 -0
- package/dist/audio/turn/base_turn_analyzer.d.ts +84 -0
- package/dist/audio/turn/base_turn_analyzer.js +61 -0
- package/dist/audio/turn/index.d.ts +2 -0
- package/dist/audio/turn/index.js +8 -0
- package/dist/audio/turn/smart_turn/_whisper_features.d.ts +30 -0
- package/dist/audio/turn/smart_turn/_whisper_features.js +225 -0
- package/dist/audio/turn/smart_turn/base_smart_turn.d.ts +94 -0
- package/dist/audio/turn/smart_turn/base_smart_turn.js +239 -0
- package/dist/audio/turn/smart_turn/local_smart_turn_v3.d.ts +76 -0
- package/dist/audio/turn/smart_turn/local_smart_turn_v3.js +143 -0
- package/dist/audio/utils.d.ts +224 -0
- package/dist/audio/utils.js +634 -0
- package/dist/audio/vad/data/index.d.ts +2 -0
- package/dist/audio/vad/data/index.js +8 -0
- package/dist/audio/vad/index.d.ts +2 -0
- package/dist/audio/vad/index.js +8 -0
- package/dist/audio/vad/vad_analyzer.d.ts +126 -0
- package/dist/audio/vad/vad_analyzer.js +211 -0
- package/dist/audio/vad/vad_controller.d.ts +143 -0
- package/dist/audio/vad/vad_controller.js +228 -0
- package/dist/audio/volume.d.ts +38 -0
- package/dist/audio/volume.js +75 -0
- package/dist/bus/adapters/base.d.ts +35 -0
- package/dist/bus/adapters/base.js +19 -0
- package/dist/bus/adapters/index.d.ts +10 -0
- package/dist/bus/adapters/index.js +15 -0
- package/dist/bus/adapters/llm_context_adapter.d.ts +36 -0
- package/dist/bus/adapters/llm_context_adapter.js +82 -0
- package/dist/bus/adapters/tools_schema_adapter.d.ts +25 -0
- package/dist/bus/adapters/tools_schema_adapter.js +70 -0
- package/dist/bus/bridge_processor.d.ts +111 -0
- package/dist/bus/bridge_processor.js +166 -0
- package/dist/bus/bus.d.ts +110 -0
- package/dist/bus/bus.js +200 -0
- package/dist/bus/index.d.ts +22 -0
- package/dist/bus/index.js +27 -0
- package/dist/bus/local/async_queue.d.ts +12 -0
- package/dist/bus/local/async_queue.js +21 -0
- package/dist/bus/local/index.d.ts +3 -0
- package/dist/bus/local/index.js +8 -0
- package/dist/bus/messages.d.ts +378 -0
- package/dist/bus/messages.js +357 -0
- package/dist/bus/network/index.d.ts +16 -0
- package/dist/bus/network/index.js +21 -0
- package/dist/bus/queue.d.ts +27 -0
- package/dist/bus/queue.js +51 -0
- package/dist/bus/serializers/base.d.ts +25 -0
- package/dist/bus/serializers/base.js +14 -0
- package/dist/bus/serializers/index.d.ts +9 -0
- package/dist/bus/serializers/index.js +14 -0
- package/dist/bus/serializers/json.d.ts +77 -0
- package/dist/bus/serializers/json.js +367 -0
- package/dist/bus/subscriber.d.ts +46 -0
- package/dist/bus/subscriber.js +27 -0
- package/dist/bus/ui/index.d.ts +3 -0
- package/dist/bus/ui/index.js +8 -0
- package/dist/bus/ui/messages.d.ts +186 -0
- package/dist/bus/ui/messages.js +171 -0
- package/dist/classifiers/base_classifier.d.ts +263 -0
- package/dist/classifiers/base_classifier.js +346 -0
- package/dist/classifiers/cloudflare/clef/classifier.d.ts +70 -0
- package/dist/classifiers/cloudflare/clef/classifier.js +204 -0
- package/dist/classifiers/cloudflare/clef/client.d.ts +104 -0
- package/dist/classifiers/cloudflare/clef/client.js +234 -0
- package/dist/classifiers/cloudflare/clef/index.d.ts +2 -0
- package/dist/classifiers/cloudflare/clef/index.js +8 -0
- package/dist/classifiers/cloudflare/index.d.ts +2 -0
- package/dist/classifiers/cloudflare/index.js +8 -0
- package/dist/classifiers/http_client.d.ts +70 -0
- package/dist/classifiers/http_client.js +161 -0
- package/dist/classifiers/index.d.ts +2 -0
- package/dist/classifiers/index.js +8 -0
- package/dist/classifiers/jev/classifier.d.ts +8 -0
- package/dist/classifiers/jev/classifier.js +13 -0
- package/dist/classifiers/jev/client.d.ts +8 -0
- package/dist/classifiers/jev/client.js +13 -0
- package/dist/classifiers/jev/index.d.ts +2 -0
- package/dist/classifiers/jev/index.js +8 -0
- package/dist/classifiers/llm/classifier.d.ts +72 -0
- package/dist/classifiers/llm/classifier.js +304 -0
- package/dist/classifiers/llm/index.d.ts +2 -0
- package/dist/classifiers/llm/index.js +8 -0
- package/dist/classifiers/openai/decisions/classifier.d.ts +77 -0
- package/dist/classifiers/openai/decisions/classifier.js +241 -0
- package/dist/classifiers/openai/decisions/client.d.ts +108 -0
- package/dist/classifiers/openai/decisions/client.js +234 -0
- package/dist/classifiers/openai/decisions/index.d.ts +2 -0
- package/dist/classifiers/openai/decisions/index.js +8 -0
- package/dist/classifiers/openai/index.d.ts +2 -0
- package/dist/classifiers/openai/index.js +8 -0
- package/dist/classifiers/typesafe/index.d.ts +2 -0
- package/dist/classifiers/typesafe/index.js +8 -0
- package/dist/classifiers/typesafe/jev/classifier.d.ts +70 -0
- package/dist/classifiers/typesafe/jev/classifier.js +220 -0
- package/dist/classifiers/typesafe/jev/client.d.ts +105 -0
- package/dist/classifiers/typesafe/jev/client.js +233 -0
- package/dist/classifiers/typesafe/jev/index.d.ts +2 -0
- package/dist/classifiers/typesafe/jev/index.js +8 -0
- package/dist/clocks/base_clock.d.ts +13 -0
- package/dist/clocks/base_clock.js +14 -0
- package/dist/clocks/index.d.ts +2 -0
- package/dist/clocks/index.js +8 -0
- package/dist/clocks/system_clock.d.ts +15 -0
- package/dist/clocks/system_clock.js +25 -0
- package/dist/frames/frames.d.ts +2533 -0
- package/dist/frames/frames.js +2485 -0
- package/dist/frames/index.d.ts +2 -0
- package/dist/frames/index.js +8 -0
- package/dist/frames/protobufs/frames_pb2.d.ts +229 -0
- package/dist/frames/protobufs/frames_pb2.js +466 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +56 -0
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/index.js +8 -0
- package/dist/metrics/metrics.d.ts +276 -0
- package/dist/metrics/metrics.js +254 -0
- package/dist/observers/base_observer.d.ts +173 -0
- package/dist/observers/base_observer.js +151 -0
- package/dist/observers/error_observer.d.ts +75 -0
- package/dist/observers/error_observer.js +87 -0
- package/dist/observers/function_call_observer.d.ts +157 -0
- package/dist/observers/function_call_observer.js +222 -0
- package/dist/observers/index.d.ts +2 -0
- package/dist/observers/index.js +8 -0
- package/dist/observers/loggers/debug_log_observer.d.ts +91 -0
- package/dist/observers/loggers/debug_log_observer.js +228 -0
- package/dist/observers/loggers/index.d.ts +2 -0
- package/dist/observers/loggers/index.js +8 -0
- package/dist/observers/loggers/llm_log_observer.d.ts +24 -0
- package/dist/observers/loggers/llm_log_observer.js +110 -0
- package/dist/observers/loggers/metrics_log_observer.d.ts +85 -0
- package/dist/observers/loggers/metrics_log_observer.js +186 -0
- package/dist/observers/loggers/transcription_log_observer.d.ts +23 -0
- package/dist/observers/loggers/transcription_log_observer.js +74 -0
- package/dist/observers/service_metrics_observer.d.ts +168 -0
- package/dist/observers/service_metrics_observer.js +236 -0
- package/dist/observers/speaking_observer.d.ts +104 -0
- package/dist/observers/speaking_observer.js +150 -0
- package/dist/observers/startup_timing_observer.d.ts +221 -0
- package/dist/observers/startup_timing_observer.js +365 -0
- package/dist/observers/turn_tracking_observer.d.ts +78 -0
- package/dist/observers/turn_tracking_observer.js +189 -0
- package/dist/observers/user_bot_latency_observer.d.ts +411 -0
- package/dist/observers/user_bot_latency_observer.js +974 -0
- package/dist/pipeline/base_pipeline.d.ts +49 -0
- package/dist/pipeline/base_pipeline.js +101 -0
- package/dist/pipeline/capabilities.d.ts +76 -0
- package/dist/pipeline/capabilities.js +97 -0
- package/dist/pipeline/index.d.ts +2 -0
- package/dist/pipeline/index.js +8 -0
- package/dist/pipeline/job_context.d.ts +317 -0
- package/dist/pipeline/job_context.js +450 -0
- package/dist/pipeline/job_decorator.d.ts +54 -0
- package/dist/pipeline/job_decorator.js +92 -0
- package/dist/pipeline/llm_switcher.d.ts +84 -0
- package/dist/pipeline/llm_switcher.js +107 -0
- package/dist/pipeline/llm_with_backend.d.ts +435 -0
- package/dist/pipeline/llm_with_backend.js +806 -0
- package/dist/pipeline/parallel_pipeline.d.ts +83 -0
- package/dist/pipeline/parallel_pipeline.js +200 -0
- package/dist/pipeline/pipeline.d.ts +126 -0
- package/dist/pipeline/pipeline.js +196 -0
- package/dist/pipeline/service_switcher.d.ts +287 -0
- package/dist/pipeline/service_switcher.js +509 -0
- package/dist/pipeline/sync_parallel_pipeline.d.ts +192 -0
- package/dist/pipeline/sync_parallel_pipeline.js +387 -0
- package/dist/pipeline/worker.d.ts +814 -0
- package/dist/pipeline/worker.js +1639 -0
- package/dist/pipeline/worker_observer.d.ts +131 -0
- package/dist/pipeline/worker_observer.js +274 -0
- package/dist/pipeline/worker_ready_decorator.d.ts +45 -0
- package/dist/pipeline/worker_ready_decorator.js +76 -0
- package/dist/processors/aggregators/async_tool_messages.d.ts +146 -0
- package/dist/processors/aggregators/async_tool_messages.js +291 -0
- package/dist/processors/aggregators/dtmf_aggregator.d.ts +61 -0
- package/dist/processors/aggregators/dtmf_aggregator.js +144 -0
- package/dist/processors/aggregators/gated.d.ts +43 -0
- package/dist/processors/aggregators/gated.js +86 -0
- package/dist/processors/aggregators/gated_llm_context.d.ts +42 -0
- package/dist/processors/aggregators/gated_llm_context.js +86 -0
- package/dist/processors/aggregators/index.d.ts +2 -0
- package/dist/processors/aggregators/index.js +8 -0
- package/dist/processors/aggregators/llm_context.d.ts +370 -0
- package/dist/processors/aggregators/llm_context.js +580 -0
- package/dist/processors/aggregators/llm_context_summarizer.d.ts +219 -0
- package/dist/processors/aggregators/llm_context_summarizer.js +447 -0
- package/dist/processors/aggregators/llm_response.d.ts +37 -0
- package/dist/processors/aggregators/llm_response.js +71 -0
- package/dist/processors/aggregators/llm_response_universal.d.ts +966 -0
- package/dist/processors/aggregators/llm_response_universal.js +2394 -0
- package/dist/processors/aggregators/llm_text_processor.d.ts +53 -0
- package/dist/processors/aggregators/llm_text_processor.js +102 -0
- package/dist/processors/aggregators/sentence.d.ts +39 -0
- package/dist/processors/aggregators/sentence.js +69 -0
- package/dist/processors/async_generator.d.ts +42 -0
- package/dist/processors/async_generator.js +76 -0
- package/dist/processors/audio/audio_buffer_processor.d.ts +241 -0
- package/dist/processors/audio/audio_buffer_processor.js +565 -0
- package/dist/processors/audio/index.d.ts +2 -0
- package/dist/processors/audio/index.js +8 -0
- package/dist/processors/audio/vad_processor.d.ts +67 -0
- package/dist/processors/audio/vad_processor.js +103 -0
- package/dist/processors/consumer_processor.d.ts +49 -0
- package/dist/processors/consumer_processor.js +85 -0
- package/dist/processors/filters/frame_filter.d.ts +39 -0
- package/dist/processors/filters/frame_filter.js +52 -0
- package/dist/processors/filters/function_filter.d.ts +59 -0
- package/dist/processors/filters/function_filter.js +78 -0
- package/dist/processors/filters/identity_filter.d.ts +33 -0
- package/dist/processors/filters/identity_filter.js +37 -0
- package/dist/processors/filters/index.d.ts +2 -0
- package/dist/processors/filters/index.js +8 -0
- package/dist/processors/filters/null_filter.d.ts +34 -0
- package/dist/processors/filters/null_filter.js +47 -0
- package/dist/processors/filters/wake_notifier_filter.d.ts +48 -0
- package/dist/processors/filters/wake_notifier_filter.js +49 -0
- package/dist/processors/frame_processor.d.ts +360 -0
- package/dist/processors/frame_processor.js +932 -0
- package/dist/processors/frameworks/index.d.ts +2 -0
- package/dist/processors/frameworks/index.js +8 -0
- package/dist/processors/frameworks/rtvi/frames.d.ts +241 -0
- package/dist/processors/frameworks/rtvi/frames.js +259 -0
- package/dist/processors/frameworks/rtvi/index.d.ts +6 -0
- package/dist/processors/frameworks/rtvi/index.js +11 -0
- package/dist/processors/frameworks/rtvi/models.d.ts +1741 -0
- package/dist/processors/frameworks/rtvi/models.js +1807 -0
- package/dist/processors/frameworks/rtvi/observer.d.ts +340 -0
- package/dist/processors/frameworks/rtvi/observer.js +1113 -0
- package/dist/processors/frameworks/rtvi/processor.d.ts +182 -0
- package/dist/processors/frameworks/rtvi/processor.js +676 -0
- package/dist/processors/idle_frame_processor.d.ts +44 -0
- package/dist/processors/idle_frame_processor.js +86 -0
- package/dist/processors/index.d.ts +2 -0
- package/dist/processors/index.js +8 -0
- package/dist/processors/logger.d.ts +42 -0
- package/dist/processors/logger.js +87 -0
- package/dist/processors/metrics/frame_processor_metrics.d.ts +172 -0
- package/dist/processors/metrics/frame_processor_metrics.js +372 -0
- package/dist/processors/metrics/index.d.ts +2 -0
- package/dist/processors/metrics/index.js +8 -0
- package/dist/processors/producer_processor.d.ts +68 -0
- package/dist/processors/producer_processor.js +78 -0
- package/dist/processors/text_transformer.d.ts +30 -0
- package/dist/processors/text_transformer.js +48 -0
- package/dist/registry/index.d.ts +3 -0
- package/dist/registry/index.js +8 -0
- package/dist/registry/registry.d.ts +69 -0
- package/dist/registry/registry.js +149 -0
- package/dist/registry/types.d.ts +47 -0
- package/dist/registry/types.js +39 -0
- package/dist/serializers/base_serializer.d.ts +94 -0
- package/dist/serializers/base_serializer.js +82 -0
- package/dist/serializers/index.d.ts +2 -0
- package/dist/serializers/index.js +8 -0
- package/dist/services/ai_service.d.ts +145 -0
- package/dist/services/ai_service.js +262 -0
- package/dist/services/anthropic/index.d.ts +2 -0
- package/dist/services/anthropic/index.js +7 -0
- package/dist/services/assemblyai/index.d.ts +2 -0
- package/dist/services/assemblyai/index.js +7 -0
- package/dist/services/asyncai/index.d.ts +2 -0
- package/dist/services/asyncai/index.js +7 -0
- package/dist/services/aws/index.d.ts +2 -0
- package/dist/services/aws/index.js +7 -0
- package/dist/services/azure/index.d.ts +2 -0
- package/dist/services/azure/index.js +7 -0
- package/dist/services/baseten/index.d.ts +2 -0
- package/dist/services/baseten/index.js +7 -0
- package/dist/services/bland/index.d.ts +2 -0
- package/dist/services/bland/index.js +7 -0
- package/dist/services/camb/index.d.ts +2 -0
- package/dist/services/camb/index.js +7 -0
- package/dist/services/cartesia/index.d.ts +2 -0
- package/dist/services/cartesia/index.js +7 -0
- package/dist/services/cerebras/index.d.ts +2 -0
- package/dist/services/cerebras/index.js +7 -0
- package/dist/services/crusoe/index.d.ts +2 -0
- package/dist/services/crusoe/index.js +7 -0
- package/dist/services/deepgram/index.d.ts +2 -0
- package/dist/services/deepgram/index.js +7 -0
- package/dist/services/deepseek/index.d.ts +2 -0
- package/dist/services/deepseek/index.js +7 -0
- package/dist/services/elevenlabs/index.d.ts +2 -0
- package/dist/services/elevenlabs/index.js +7 -0
- package/dist/services/fal/index.d.ts +2 -0
- package/dist/services/fal/index.js +7 -0
- package/dist/services/fireworks/index.d.ts +2 -0
- package/dist/services/fireworks/index.js +7 -0
- package/dist/services/fish/index.d.ts +2 -0
- package/dist/services/fish/index.js +7 -0
- package/dist/services/funasr/index.d.ts +3 -0
- package/dist/services/funasr/index.js +8 -0
- package/dist/services/gladia/index.d.ts +2 -0
- package/dist/services/gladia/index.js +7 -0
- package/dist/services/google/index.d.ts +2 -0
- package/dist/services/google/index.js +7 -0
- package/dist/services/gradium/index.d.ts +2 -0
- package/dist/services/gradium/index.js +7 -0
- package/dist/services/grok/index.d.ts +2 -0
- package/dist/services/grok/index.js +7 -0
- package/dist/services/groq/index.d.ts +2 -0
- package/dist/services/groq/index.js +7 -0
- package/dist/services/heygen/index.d.ts +2 -0
- package/dist/services/heygen/index.js +7 -0
- package/dist/services/hume/index.d.ts +2 -0
- package/dist/services/hume/index.js +7 -0
- package/dist/services/image_service.d.ts +52 -0
- package/dist/services/image_service.js +60 -0
- package/dist/services/inception/index.d.ts +2 -0
- package/dist/services/inception/index.js +7 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.js +8 -0
- package/dist/services/inworld/index.d.ts +2 -0
- package/dist/services/inworld/index.js +7 -0
- package/dist/services/keenable/index.d.ts +2 -0
- package/dist/services/keenable/index.js +7 -0
- package/dist/services/kokoro/index.d.ts +2 -0
- package/dist/services/kokoro/index.js +7 -0
- package/dist/services/llm_service.d.ts +1106 -0
- package/dist/services/llm_service.js +2231 -0
- package/dist/services/mem0/index.d.ts +2 -0
- package/dist/services/mem0/index.js +7 -0
- package/dist/services/meta/index.d.ts +2 -0
- package/dist/services/meta/index.js +7 -0
- package/dist/services/minimax/index.d.ts +2 -0
- package/dist/services/minimax/index.js +7 -0
- package/dist/services/mistral/index.d.ts +2 -0
- package/dist/services/mistral/index.js +7 -0
- package/dist/services/moondream/index.d.ts +2 -0
- package/dist/services/moondream/index.js +7 -0
- package/dist/services/moonshine/index.d.ts +2 -0
- package/dist/services/moonshine/index.js +7 -0
- package/dist/services/nebius/index.d.ts +2 -0
- package/dist/services/nebius/index.js +7 -0
- package/dist/services/neuphonic/index.d.ts +2 -0
- package/dist/services/neuphonic/index.js +7 -0
- package/dist/services/novita/index.d.ts +2 -0
- package/dist/services/novita/index.js +7 -0
- package/dist/services/nvidia/index.d.ts +2 -0
- package/dist/services/nvidia/index.js +11 -0
- package/dist/services/ollama/index.d.ts +2 -0
- package/dist/services/ollama/index.js +7 -0
- package/dist/services/openai/index.d.ts +2 -0
- package/dist/services/openai/index.js +7 -0
- package/dist/services/openclaw/index.d.ts +14 -0
- package/dist/services/openclaw/index.js +19 -0
- package/dist/services/openrouter/index.d.ts +2 -0
- package/dist/services/openrouter/index.js +7 -0
- package/dist/services/perplexity/index.d.ts +2 -0
- package/dist/services/perplexity/index.js +7 -0
- package/dist/services/piper/index.d.ts +2 -0
- package/dist/services/piper/index.js +7 -0
- package/dist/services/pocket_tts/index.d.ts +2 -0
- package/dist/services/pocket_tts/index.js +7 -0
- package/dist/services/qwen/index.d.ts +2 -0
- package/dist/services/qwen/index.js +7 -0
- package/dist/services/resembleai/index.d.ts +2 -0
- package/dist/services/resembleai/index.js +7 -0
- package/dist/services/rime/index.d.ts +2 -0
- package/dist/services/rime/index.js +7 -0
- package/dist/services/sambanova/index.d.ts +2 -0
- package/dist/services/sambanova/index.js +7 -0
- package/dist/services/sarvam/index.d.ts +2 -0
- package/dist/services/sarvam/index.js +7 -0
- package/dist/services/settings.d.ts +356 -0
- package/dist/services/settings.js +437 -0
- package/dist/services/simli/index.d.ts +2 -0
- package/dist/services/simli/index.js +7 -0
- package/dist/services/smallest/index.d.ts +2 -0
- package/dist/services/smallest/index.js +7 -0
- package/dist/services/soniox/index.d.ts +2 -0
- package/dist/services/soniox/index.js +7 -0
- package/dist/services/speechify/index.d.ts +2 -0
- package/dist/services/speechify/index.js +7 -0
- package/dist/services/speechmatics/index.d.ts +2 -0
- package/dist/services/speechmatics/index.js +7 -0
- package/dist/services/stt_latency.d.ts +62 -0
- package/dist/services/stt_latency.js +71 -0
- package/dist/services/stt_service.d.ts +601 -0
- package/dist/services/stt_service.js +1044 -0
- package/dist/services/tavus/index.d.ts +2 -0
- package/dist/services/tavus/index.js +7 -0
- package/dist/services/together/index.d.ts +2 -0
- package/dist/services/together/index.js +7 -0
- package/dist/services/tts_service.d.ts +909 -0
- package/dist/services/tts_service.js +2018 -0
- package/dist/services/ultravox/index.d.ts +2 -0
- package/dist/services/ultravox/index.js +9 -0
- package/dist/services/vision_service.d.ts +56 -0
- package/dist/services/vision_service.js +62 -0
- package/dist/services/websocket_service.d.ts +213 -0
- package/dist/services/websocket_service.js +654 -0
- package/dist/services/whisper/index.d.ts +2 -0
- package/dist/services/whisper/index.js +9 -0
- package/dist/services/xai/index.d.ts +2 -0
- package/dist/services/xai/index.js +9 -0
- package/dist/services/xtts/index.d.ts +2 -0
- package/dist/services/xtts/index.js +9 -0
- package/dist/tests/index.d.ts +2 -0
- package/dist/tests/index.js +8 -0
- package/dist/tests/utils.d.ts +123 -0
- package/dist/tests/utils.js +212 -0
- package/dist/transcriptions/index.d.ts +2 -0
- package/dist/transcriptions/index.js +8 -0
- package/dist/transcriptions/language.d.ts +376 -0
- package/dist/transcriptions/language.js +543 -0
- package/dist/transports/base_input.d.ts +149 -0
- package/dist/transports/base_input.js +338 -0
- package/dist/transports/base_output.d.ts +432 -0
- package/dist/transports/base_output.js +1231 -0
- package/dist/transports/base_transport.d.ts +223 -0
- package/dist/transports/base_transport.js +167 -0
- package/dist/transports/daily/index.d.ts +2 -0
- package/dist/transports/daily/index.js +9 -0
- package/dist/transports/heygen/index.d.ts +2 -0
- package/dist/transports/heygen/index.js +9 -0
- package/dist/transports/index.d.ts +2 -0
- package/dist/transports/index.js +8 -0
- package/dist/transports/lemonslice/index.d.ts +2 -0
- package/dist/transports/lemonslice/index.js +9 -0
- package/dist/transports/livekit/index.d.ts +2 -0
- package/dist/transports/livekit/index.js +9 -0
- package/dist/transports/local/index.d.ts +2 -0
- package/dist/transports/local/index.js +9 -0
- package/dist/transports/moq/index.d.ts +2 -0
- package/dist/transports/moq/index.js +9 -0
- package/dist/transports/smallwebrtc/index.d.ts +2 -0
- package/dist/transports/smallwebrtc/index.js +9 -0
- package/dist/transports/tavus/index.d.ts +2 -0
- package/dist/transports/tavus/index.js +9 -0
- package/dist/transports/video_in_sampler.d.ts +157 -0
- package/dist/transports/video_in_sampler.js +258 -0
- package/dist/transports/vonage/index.d.ts +2 -0
- package/dist/transports/vonage/index.js +9 -0
- package/dist/transports/websocket/index.d.ts +2 -0
- package/dist/transports/websocket/index.js +9 -0
- package/dist/transports/whatsapp/index.d.ts +2 -0
- package/dist/transports/whatsapp/index.js +9 -0
- package/dist/turns/eager_end_of_turn_mixin.d.ts +70 -0
- package/dist/turns/eager_end_of_turn_mixin.js +122 -0
- package/dist/turns/empty_user_turn.d.ts +55 -0
- package/dist/turns/empty_user_turn.js +53 -0
- package/dist/turns/index.d.ts +2 -0
- package/dist/turns/index.js +8 -0
- package/dist/turns/speculation_gate.d.ts +169 -0
- package/dist/turns/speculation_gate.js +294 -0
- package/dist/turns/types.d.ts +33 -0
- package/dist/turns/types.js +35 -0
- package/dist/turns/user_idle_controller.d.ts +94 -0
- package/dist/turns/user_idle_controller.js +187 -0
- package/dist/turns/user_mute/always_user_mute_strategy.d.ts +15 -0
- package/dist/turns/user_mute/always_user_mute_strategy.js +29 -0
- package/dist/turns/user_mute/base_user_mute_strategy.d.ts +39 -0
- package/dist/turns/user_mute/base_user_mute_strategy.js +45 -0
- package/dist/turns/user_mute/first_speech_user_mute_strategy.d.ts +28 -0
- package/dist/turns/user_mute/first_speech_user_mute_strategy.js +52 -0
- package/dist/turns/user_mute/function_call_user_mute_strategy.d.ts +25 -0
- package/dist/turns/user_mute/function_call_user_mute_strategy.js +50 -0
- package/dist/turns/user_mute/index.d.ts +6 -0
- package/dist/turns/user_mute/index.js +11 -0
- package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.d.ts +43 -0
- package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.js +76 -0
- package/dist/turns/user_start/base_user_turn_start_strategy.d.ts +135 -0
- package/dist/turns/user_start/base_user_turn_start_strategy.js +134 -0
- package/dist/turns/user_start/external_user_turn_start_strategy.d.ts +45 -0
- package/dist/turns/user_start/external_user_turn_start_strategy.js +64 -0
- package/dist/turns/user_start/index.d.ts +8 -0
- package/dist/turns/user_start/index.js +16 -0
- package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.d.ts +133 -0
- package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.js +243 -0
- package/dist/turns/user_start/min_words_user_turn_start_strategy.d.ts +60 -0
- package/dist/turns/user_start/min_words_user_turn_start_strategy.js +102 -0
- package/dist/turns/user_start/transcription_user_turn_start_strategy.d.ts +29 -0
- package/dist/turns/user_start/transcription_user_turn_start_strategy.js +43 -0
- package/dist/turns/user_start/vad_user_turn_start_strategy.d.ts +20 -0
- package/dist/turns/user_start/vad_user_turn_start_strategy.js +31 -0
- package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.d.ts +141 -0
- package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.js +238 -0
- package/dist/turns/user_stop/base_user_turn_stop_strategy.d.ts +174 -0
- package/dist/turns/user_stop/base_user_turn_stop_strategy.js +170 -0
- package/dist/turns/user_stop/deferred_user_turn_stop_strategy.d.ts +81 -0
- package/dist/turns/user_stop/deferred_user_turn_stop_strategy.js +107 -0
- package/dist/turns/user_stop/eager_match_policy.d.ts +36 -0
- package/dist/turns/user_stop/eager_match_policy.js +50 -0
- package/dist/turns/user_stop/eager_user_turn_stop_strategy.d.ts +84 -0
- package/dist/turns/user_stop/eager_user_turn_stop_strategy.js +154 -0
- package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.d.ts +45 -0
- package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.js +55 -0
- package/dist/turns/user_stop/external_user_turn_stop_strategy.d.ts +115 -0
- package/dist/turns/user_stop/external_user_turn_stop_strategy.js +205 -0
- package/dist/turns/user_stop/index.d.ts +10 -0
- package/dist/turns/user_stop/index.js +15 -0
- package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.d.ts +44 -0
- package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.js +59 -0
- package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.d.ts +140 -0
- package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.js +303 -0
- package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.d.ts +135 -0
- package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.js +332 -0
- package/dist/turns/user_turn_completion_mixin.d.ts +147 -0
- package/dist/turns/user_turn_completion_mixin.js +591 -0
- package/dist/turns/user_turn_controller.d.ts +134 -0
- package/dist/turns/user_turn_controller.js +335 -0
- package/dist/turns/user_turn_processor.d.ts +87 -0
- package/dist/turns/user_turn_processor.js +180 -0
- package/dist/turns/user_turn_strategies.d.ts +187 -0
- package/dist/turns/user_turn_strategies.js +222 -0
- package/dist/utils/async_tool_cancellation.d.ts +35 -0
- package/dist/utils/async_tool_cancellation.js +78 -0
- package/dist/utils/asyncio/index.d.ts +2 -0
- package/dist/utils/asyncio/index.js +7 -0
- package/dist/utils/asyncio/task_manager.d.ts +49 -0
- package/dist/utils/asyncio/task_manager.js +105 -0
- package/dist/utils/base_object.d.ts +76 -0
- package/dist/utils/base_object.js +154 -0
- package/dist/utils/context/aggregated_frame_sequencer.d.ts +491 -0
- package/dist/utils/context/aggregated_frame_sequencer.js +803 -0
- package/dist/utils/context/audio_context_manager.d.ts +131 -0
- package/dist/utils/context/audio_context_manager.js +233 -0
- package/dist/utils/context/index.d.ts +2 -0
- package/dist/utils/context/index.js +7 -0
- package/dist/utils/context/llm_context_summarization.d.ts +258 -0
- package/dist/utils/context/llm_context_summarization.js +511 -0
- package/dist/utils/context/text_segment_map.d.ts +611 -0
- package/dist/utils/context/text_segment_map.js +1132 -0
- package/dist/utils/context/word_completion_tracker.d.ts +273 -0
- package/dist/utils/context/word_completion_tracker.js +441 -0
- package/dist/utils/context/word_timestamp_tracker.d.ts +72 -0
- package/dist/utils/context/word_timestamp_tracker.js +98 -0
- package/dist/utils/deprecation.d.ts +28 -0
- package/dist/utils/deprecation.js +75 -0
- package/dist/utils/env.d.ts +38 -0
- package/dist/utils/env.js +62 -0
- package/dist/utils/errors.d.ts +75 -0
- package/dist/utils/errors.js +202 -0
- package/dist/utils/file_resolver.d.ts +126 -0
- package/dist/utils/file_resolver.js +314 -0
- package/dist/utils/file_storage.d.ts +99 -0
- package/dist/utils/file_storage.js +100 -0
- package/dist/utils/frame_queue.d.ts +36 -0
- package/dist/utils/frame_queue.js +66 -0
- package/dist/utils/http.d.ts +39 -0
- package/dist/utils/http.js +53 -0
- package/dist/utils/image.d.ts +15 -0
- package/dist/utils/image.js +30 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/log_config.d.ts +34 -0
- package/dist/utils/log_config.js +76 -0
- package/dist/utils/logger.d.ts +40 -0
- package/dist/utils/logger.js +91 -0
- package/dist/utils/mixin.d.ts +14 -0
- package/dist/utils/mixin.js +63 -0
- package/dist/utils/network.d.ts +73 -0
- package/dist/utils/network.js +90 -0
- package/dist/utils/security/allowed_origins.d.ts +16 -0
- package/dist/utils/security/allowed_origins.js +34 -0
- package/dist/utils/security/index.d.ts +2 -0
- package/dist/utils/security/index.js +7 -0
- package/dist/utils/security/redaction.d.ts +27 -0
- package/dist/utils/security/redaction.js +123 -0
- package/dist/utils/security/ssrf.d.ts +79 -0
- package/dist/utils/security/ssrf.js +327 -0
- package/dist/utils/shared.d.ts +35 -0
- package/dist/utils/shared.js +136 -0
- package/dist/utils/startup.d.ts +17 -0
- package/dist/utils/startup.js +130 -0
- package/dist/utils/string.d.ts +116 -0
- package/dist/utils/string.js +460 -0
- package/dist/utils/sync/base_notifier.d.ts +25 -0
- package/dist/utils/sync/base_notifier.js +16 -0
- package/dist/utils/sync/event_notifier.d.ts +38 -0
- package/dist/utils/sync/event_notifier.js +51 -0
- package/dist/utils/sync/index.d.ts +2 -0
- package/dist/utils/sync/index.js +7 -0
- package/dist/utils/text/alnum_utils.d.ts +109 -0
- package/dist/utils/text/alnum_utils.js +262 -0
- package/dist/utils/text/base_text_aggregator.d.ts +146 -0
- package/dist/utils/text/base_text_aggregator.js +102 -0
- package/dist/utils/text/base_text_filter.d.ts +54 -0
- package/dist/utils/text/base_text_filter.js +50 -0
- package/dist/utils/text/index.d.ts +2 -0
- package/dist/utils/text/index.js +7 -0
- package/dist/utils/text/markdown_text_filter.d.ts +147 -0
- package/dist/utils/text/markdown_text_filter.js +522 -0
- package/dist/utils/text/markup_utils.d.ts +54 -0
- package/dist/utils/text/markup_utils.js +156 -0
- package/dist/utils/text/pattern_pair_aggregator.d.ts +251 -0
- package/dist/utils/text/pattern_pair_aggregator.js +478 -0
- package/dist/utils/text/phonemes.d.ts +60 -0
- package/dist/utils/text/phonemes.js +172 -0
- package/dist/utils/text/simple_text_aggregator.d.ts +135 -0
- package/dist/utils/text/simple_text_aggregator.js +254 -0
- package/dist/utils/text/skip_tags_aggregator.d.ts +85 -0
- package/dist/utils/text/skip_tags_aggregator.js +147 -0
- package/dist/utils/text/transforms/pronunciations.d.ts +65 -0
- package/dist/utils/text/transforms/pronunciations.js +111 -0
- package/dist/utils/text/word_timestamp_utils.d.ts +26 -0
- package/dist/utils/text/word_timestamp_utils.js +52 -0
- package/dist/utils/time.d.ts +13 -0
- package/dist/utils/time.js +31 -0
- package/dist/utils/tracing/index.d.ts +3 -0
- package/dist/utils/tracing/index.js +8 -0
- package/dist/utils/tracing/service_attributes.d.ts +198 -0
- package/dist/utils/tracing/service_attributes.js +434 -0
- package/dist/utils/tracing/service_decorators.d.ts +214 -0
- package/dist/utils/tracing/service_decorators.js +1662 -0
- package/dist/utils/tracing/setup.d.ts +95 -0
- package/dist/utils/tracing/setup.js +110 -0
- package/dist/utils/tracing/tracing_context.d.ts +55 -0
- package/dist/utils/tracing/tracing_context.js +97 -0
- package/dist/utils/tracing/turn_trace_observer.d.ts +90 -0
- package/dist/utils/tracing/turn_trace_observer.js +219 -0
- package/dist/utils/types.d.ts +80 -0
- package/dist/utils/types.js +108 -0
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.js +22 -0
- package/dist/utils/yaml.d.ts +64 -0
- package/dist/utils/yaml.js +41 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.js +7 -0
- package/dist/workers/base_worker.d.ts +772 -0
- package/dist/workers/base_worker.js +1298 -0
- package/dist/workers/index.d.ts +2 -0
- package/dist/workers/index.js +8 -0
- package/dist/workers/llm/backend_llm_worker.d.ts +552 -0
- package/dist/workers/llm/backend_llm_worker.js +1055 -0
- package/dist/workers/llm/index.d.ts +6 -0
- package/dist/workers/llm/index.js +11 -0
- package/dist/workers/llm/llm_context_worker.d.ts +66 -0
- package/dist/workers/llm/llm_context_worker.js +72 -0
- package/dist/workers/llm/llm_worker.d.ts +180 -0
- package/dist/workers/llm/llm_worker.js +323 -0
- package/dist/workers/llm/tool_decorator.d.ts +68 -0
- package/dist/workers/llm/tool_decorator.js +60 -0
- package/dist/workers/runner.d.ts +268 -0
- package/dist/workers/runner.js +489 -0
- package/dist/workers/ui/index.d.ts +22 -0
- package/dist/workers/ui/index.js +27 -0
- package/dist/workers/ui/ui_event_decorator.d.ts +43 -0
- package/dist/workers/ui/ui_event_decorator.js +75 -0
- package/dist/workers/ui/ui_job_context.d.ts +12 -0
- package/dist/workers/ui/ui_job_context.js +17 -0
- package/dist/workers/ui/ui_prompts.d.ts +21 -0
- package/dist/workers/ui/ui_prompts.js +41 -0
- package/dist/workers/ui/ui_tools.d.ts +32 -0
- package/dist/workers/ui/ui_tools.js +112 -0
- package/dist/workers/ui/ui_worker.d.ts +571 -0
- package/dist/workers/ui/ui_worker.js +1156 -0
- package/package.json +46 -3
- package/README.md +0 -5
|
@@ -0,0 +1,53 @@
|
|
|
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/http.py
|
|
6
|
+
/**
|
|
7
|
+
* Compatibility helpers for the HTTP client families service SDKs use.
|
|
8
|
+
*
|
|
9
|
+
* Upstream bridges the httpx and httpx2 Python packages: service SDKs are
|
|
10
|
+
* migrating from one to the other, so the objects Pipecat hands to an SDK
|
|
11
|
+
* client — and the exceptions it catches from one — can't name a single
|
|
12
|
+
* family at import time.
|
|
13
|
+
*
|
|
14
|
+
* In JavaScript every SDK talks through `fetch`, so there is one family. The
|
|
15
|
+
* same names are kept so ported services read like upstream:
|
|
16
|
+
*
|
|
17
|
+
* - `AsyncHTTPClient` is whatever client object a caller hands to an SDK.
|
|
18
|
+
* - `TIMEOUT_EXCEPTIONS` are the timeout error types to catch around SDK calls.
|
|
19
|
+
* - `connectionLimits()` builds a plain limits object.
|
|
20
|
+
*/
|
|
21
|
+
import { TimeoutError } from "@pipedog/asyncio";
|
|
22
|
+
/**
|
|
23
|
+
* Timeout exception types to catch around SDK calls. SDKs wrap request-level
|
|
24
|
+
* timeouts in their own error type, but a timeout while iterating a response
|
|
25
|
+
* stream surfaces as the underlying transport exception.
|
|
26
|
+
*
|
|
27
|
+
* DIVERGENCE: upstream lists httpx/httpx2 `TimeoutException`. Here it is the
|
|
28
|
+
* asyncio `TimeoutError`; a `fetch` aborted by `AbortSignal.timeout()` rejects
|
|
29
|
+
* with a `DOMException` named "TimeoutError", which `isTimeoutException`
|
|
30
|
+
* also recognizes.
|
|
31
|
+
*/
|
|
32
|
+
export const TIMEOUT_EXCEPTIONS = [TimeoutError];
|
|
33
|
+
/** Whether `e` is one of `TIMEOUT_EXCEPTIONS` (or a fetch timeout `DOMException`). */
|
|
34
|
+
export function isTimeoutException(e) {
|
|
35
|
+
if (TIMEOUT_EXCEPTIONS.some((cls) => e instanceof cls))
|
|
36
|
+
return true;
|
|
37
|
+
return e instanceof Error && e.name === "TimeoutError";
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Build a connection-limits object accepted by the HTTP client.
|
|
41
|
+
*
|
|
42
|
+
* DIVERGENCE: upstream returns an httpx `Limits` instance. `fetch` has no
|
|
43
|
+
* such object, so this returns the plain options for an SDK or agent that
|
|
44
|
+
* reads them field by field.
|
|
45
|
+
*
|
|
46
|
+
* @param options Limits fields (`maxConnections`, `maxKeepaliveConnections`,
|
|
47
|
+
* `keepaliveExpiry`).
|
|
48
|
+
* @returns A limits object.
|
|
49
|
+
*/
|
|
50
|
+
export function connectionLimits(options = {}) {
|
|
51
|
+
return { ...options };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Image encoding helpers. */
|
|
2
|
+
/**
|
|
3
|
+
* Encode an image for a model to look at.
|
|
4
|
+
*
|
|
5
|
+
* An image whose format is a MIME type is already encoded and keeps its
|
|
6
|
+
* bytes. Raw pixels are encoded as a JPEG.
|
|
7
|
+
*
|
|
8
|
+
* @param image The image bytes, raw pixels or already encoded.
|
|
9
|
+
* @param size The image's width and height.
|
|
10
|
+
* @param format The pixel format, such as `"RGB"` or `"RGBA"`, or the MIME
|
|
11
|
+
* type of an encoded image. Raw pixels are taken as RGB when not given.
|
|
12
|
+
* @returns The encoded bytes and their MIME type.
|
|
13
|
+
*/
|
|
14
|
+
export declare function encodeImage(image: Uint8Array, size: [number, number], format: string | null): Promise<[Uint8Array, string]>;
|
|
15
|
+
//# sourceMappingURL=image.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
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/image.py
|
|
6
|
+
/** Image encoding helpers. */
|
|
7
|
+
/**
|
|
8
|
+
* Encode an image for a model to look at.
|
|
9
|
+
*
|
|
10
|
+
* An image whose format is a MIME type is already encoded and keeps its
|
|
11
|
+
* bytes. Raw pixels are encoded as a JPEG.
|
|
12
|
+
*
|
|
13
|
+
* @param image The image bytes, raw pixels or already encoded.
|
|
14
|
+
* @param size The image's width and height.
|
|
15
|
+
* @param format The pixel format, such as `"RGB"` or `"RGBA"`, or the MIME
|
|
16
|
+
* type of an encoded image. Raw pixels are taken as RGB when not given.
|
|
17
|
+
* @returns The encoded bytes and their MIME type.
|
|
18
|
+
*/
|
|
19
|
+
export async function encodeImage(image, size, format) {
|
|
20
|
+
if (format?.startsWith("image/")) {
|
|
21
|
+
return [image, format];
|
|
22
|
+
}
|
|
23
|
+
return [await encodeJpeg(image, size, format || "RGB"), "image/jpeg"];
|
|
24
|
+
}
|
|
25
|
+
// STUB: upstream encodes raw pixels with Pillow (`Image.frombytes(...).save(format="JPEG")`)
|
|
26
|
+
// in a thread. Core has no runtime-agnostic JPEG encoder yet.
|
|
27
|
+
async function encodeJpeg(_image, _size, _format) {
|
|
28
|
+
throw new Error("not ported yet: encodeImage() cannot JPEG-encode raw pixels; pass an already encoded image (format 'image/...')");
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=image.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026, Daily
|
|
2
|
+
// Copyright (c) 2026, pipedog contributors
|
|
3
|
+
// SPDX-License-Identifier: BSD-2-Clause
|
|
4
|
+
//
|
|
5
|
+
// Ported from pipecat: src/pipecat/utils/__init__.py
|
|
6
|
+
// Upstream's `__init__.py` is empty: import the package's modules directly.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const _LLM_CONTEXT_LOG_ENV_VAR = "PIPECAT_LOG_LLM_CONTEXT";
|
|
2
|
+
/**
|
|
3
|
+
* How much of the context LLM services include in their DEBUG log lines.
|
|
4
|
+
*
|
|
5
|
+
* LLM services log a DEBUG line each time they generate a response, and
|
|
6
|
+
* realtime services when they set up their server-side conversation. The
|
|
7
|
+
* context is built only when DEBUG is enabled.
|
|
8
|
+
*
|
|
9
|
+
* - FULL: Every message of the context.
|
|
10
|
+
* - OFF: None of it; the line is logged without the context.
|
|
11
|
+
*/
|
|
12
|
+
export declare const _LLMContextLogMode: {
|
|
13
|
+
readonly FULL: "full";
|
|
14
|
+
readonly OFF: "off";
|
|
15
|
+
};
|
|
16
|
+
export type _LLMContextLogMode = (typeof _LLMContextLogMode)[keyof typeof _LLMContextLogMode];
|
|
17
|
+
/**
|
|
18
|
+
* Return how LLM services log the context.
|
|
19
|
+
*
|
|
20
|
+
* The mode named by `PIPECAT_LOG_LLM_CONTEXT`, or `full` when it is unset
|
|
21
|
+
* or empty. The environment variable is read once, on first use.
|
|
22
|
+
*
|
|
23
|
+
* @returns The current LLM context log mode.
|
|
24
|
+
* @throws InvalidEnvVarValueError If `PIPECAT_LOG_LLM_CONTEXT` is set to an unknown mode.
|
|
25
|
+
*/
|
|
26
|
+
export declare function _getLlmContextLogMode(): _LLMContextLogMode;
|
|
27
|
+
/**
|
|
28
|
+
* Forget the cached mode so the next `_getLlmContextLogMode()` reads the
|
|
29
|
+
* environment again. Python tests assign `_llm_context_log_mode = None`; a
|
|
30
|
+
* module variable can't be assigned from outside in JS.
|
|
31
|
+
*/
|
|
32
|
+
export declare function _resetLlmContextLogMode(): void;
|
|
33
|
+
export declare function _llmContextLogModeFromEnv(): _LLMContextLogMode;
|
|
34
|
+
//# sourceMappingURL=log_config.d.ts.map
|
|
@@ -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
|