@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.
- 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/engine.d.ts +60 -0
- package/dist/audio/resamplers/engine.js +89 -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/sinc_engine.d.ts +10 -0
- package/dist/audio/resamplers/sinc_engine.js +235 -0
- package/dist/audio/resamplers/soxr_resampler.d.ts +58 -0
- package/dist/audio/resamplers/soxr_resampler.js +79 -0
- package/dist/audio/resamplers/soxr_stream_resampler.d.ts +78 -0
- package/dist/audio/resamplers/soxr_stream_resampler.js +159 -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 +151 -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 +134 -0
- package/dist/audio/vad/vad_analyzer.js +249 -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 +821 -0
- package/dist/pipeline/worker.js +1656 -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 +115 -0
- package/dist/utils/file_storage.js +178 -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 +14 -0
- package/dist/utils/image.js +63 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/jpeg_encoder.d.ts +14 -0
- package/dist/utils/jpeg_encoder.js +315 -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/acronyms.d.ts +21 -0
- package/dist/utils/text/transforms/acronyms.js +31 -0
- package/dist/utils/text/transforms/currency.d.ts +16 -0
- package/dist/utils/text/transforms/currency.js +56 -0
- package/dist/utils/text/transforms/dates.d.ts +18 -0
- package/dist/utils/text/transforms/dates.js +102 -0
- package/dist/utils/text/transforms/email.d.ts +17 -0
- package/dist/utils/text/transforms/email.js +35 -0
- package/dist/utils/text/transforms/index.d.ts +37 -0
- package/dist/utils/text/transforms/index.js +42 -0
- package/dist/utils/text/transforms/numbers.d.ts +25 -0
- package/dist/utils/text/transforms/numbers.js +59 -0
- package/dist/utils/text/transforms/percentages.d.ts +16 -0
- package/dist/utils/text/transforms/percentages.js +32 -0
- package/dist/utils/text/transforms/phone.d.ts +21 -0
- package/dist/utils/text/transforms/phone.js +39 -0
- package/dist/utils/text/transforms/pronunciations.d.ts +65 -0
- package/dist/utils/text/transforms/pronunciations.js +112 -0
- package/dist/utils/text/transforms/replacements.d.ts +39 -0
- package/dist/utils/text/transforms/replacements.js +46 -0
- package/dist/utils/text/transforms/strip_markdown.d.ts +25 -0
- package/dist/utils/text/transforms/strip_markdown.js +60 -0
- package/dist/utils/text/transforms/units.d.ts +22 -0
- package/dist/utils/text/transforms/units.js +81 -0
- package/dist/utils/text/transforms/voice_formatter.d.ts +86 -0
- package/dist/utils/text/transforms/voice_formatter.js +98 -0
- package/dist/utils/text/unicode_digits.d.ts +3 -0
- package/dist/utils/text/unicode_digits.js +34 -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 +107 -0
- package/dist/utils/tracing/setup.js +160 -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 +95 -0
- package/dist/utils/tracing/turn_trace_observer.js +233 -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 +179 -0
- package/dist/utils/yaml.js +556 -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/proxy/index.d.ts +3 -0
- package/dist/workers/proxy/index.js +9 -0
- package/dist/workers/proxy/websocket/client.d.ts +110 -0
- package/dist/workers/proxy/websocket/client.js +196 -0
- package/dist/workers/proxy/websocket/index.d.ts +3 -0
- package/dist/workers/proxy/websocket/index.js +10 -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 +61 -3
- package/README.md +0 -5
|
@@ -0,0 +1,437 @@
|
|
|
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/services/settings.py
|
|
6
|
+
import { logger } from "../utils/logger.js";
|
|
7
|
+
import { isGiven, NOT_GIVEN } from "../utils/types.js";
|
|
8
|
+
// In a settings object `NOT_GIVEN` means "this field was not included in the
|
|
9
|
+
// delta": distinct from `null`, which is a valid stored value typically meaning
|
|
10
|
+
// "this service doesn't support this field". Every delta field defaults to it so
|
|
11
|
+
// deltas stay sparse and `applyUpdate` can skip untouched fields. It must
|
|
12
|
+
// never appear in a store-mode object — see `validateComplete()`.
|
|
13
|
+
/** Convert a snake_case key to camelCase (`voice_id` → `voiceId`). */
|
|
14
|
+
function snakeToCamel(key) {
|
|
15
|
+
return key.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase());
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Python `==` for settings values: structural equality for arrays, plain
|
|
19
|
+
* objects and class instances (dataclasses compare field by field).
|
|
20
|
+
*/
|
|
21
|
+
export function settingsValuesEqual(a, b) {
|
|
22
|
+
if (a === b)
|
|
23
|
+
return true;
|
|
24
|
+
if (typeof a === "number" && typeof b === "number")
|
|
25
|
+
return a === b;
|
|
26
|
+
if (a === null || b === null || typeof a !== "object" || typeof b !== "object")
|
|
27
|
+
return false;
|
|
28
|
+
if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
|
|
29
|
+
return false;
|
|
30
|
+
if (Array.isArray(a)) {
|
|
31
|
+
const bb = b;
|
|
32
|
+
return a.length === bb.length && a.every((v, i) => settingsValuesEqual(v, bb[i]));
|
|
33
|
+
}
|
|
34
|
+
if (a instanceof Map) {
|
|
35
|
+
const bb = b;
|
|
36
|
+
if (a.size !== bb.size)
|
|
37
|
+
return false;
|
|
38
|
+
for (const [k, v] of a) {
|
|
39
|
+
if (!bb.has(k) || !settingsValuesEqual(v, bb.get(k)))
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
if (a instanceof Set) {
|
|
45
|
+
const bb = b;
|
|
46
|
+
return a.size === bb.size && [...a].every((v) => bb.has(v));
|
|
47
|
+
}
|
|
48
|
+
if (ArrayBuffer.isView(a)) {
|
|
49
|
+
const aa = a;
|
|
50
|
+
const bb = b;
|
|
51
|
+
if (aa.length !== bb.length)
|
|
52
|
+
return false;
|
|
53
|
+
for (let i = 0; i < aa.length; i++)
|
|
54
|
+
if (aa[i] !== bb[i])
|
|
55
|
+
return false;
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
if (a instanceof Date)
|
|
59
|
+
return a.getTime() === b.getTime();
|
|
60
|
+
const ka = Object.keys(a);
|
|
61
|
+
const kb = Object.keys(b);
|
|
62
|
+
if (ka.length !== kb.length)
|
|
63
|
+
return false;
|
|
64
|
+
const ra = a;
|
|
65
|
+
const rb = b;
|
|
66
|
+
return ka.every((k) => Object.hasOwn(rb, k) && settingsValuesEqual(ra[k], rb[k]));
|
|
67
|
+
}
|
|
68
|
+
/** `copy.deepcopy` for settings values. Keeps prototypes and the `NOT_GIVEN` singleton. */
|
|
69
|
+
function deepCopy(value, memo = new Map()) {
|
|
70
|
+
if (value === null || typeof value !== "object")
|
|
71
|
+
return value;
|
|
72
|
+
if (value === NOT_GIVEN)
|
|
73
|
+
return value;
|
|
74
|
+
if (memo.has(value))
|
|
75
|
+
return memo.get(value);
|
|
76
|
+
if (Array.isArray(value)) {
|
|
77
|
+
const out = [];
|
|
78
|
+
memo.set(value, out);
|
|
79
|
+
for (const v of value)
|
|
80
|
+
out.push(deepCopy(v, memo));
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
if (value instanceof Map) {
|
|
84
|
+
const out = new Map();
|
|
85
|
+
memo.set(value, out);
|
|
86
|
+
for (const [k, v] of value)
|
|
87
|
+
out.set(deepCopy(k, memo), deepCopy(v, memo));
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
if (value instanceof Set) {
|
|
91
|
+
const out = new Set();
|
|
92
|
+
memo.set(value, out);
|
|
93
|
+
for (const v of value)
|
|
94
|
+
out.add(deepCopy(v, memo));
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
if (value instanceof Date)
|
|
98
|
+
return new Date(value.getTime());
|
|
99
|
+
if (ArrayBuffer.isView(value)) {
|
|
100
|
+
return value.slice();
|
|
101
|
+
}
|
|
102
|
+
const out = Object.create(Object.getPrototypeOf(value));
|
|
103
|
+
memo.set(value, out);
|
|
104
|
+
for (const key of Object.keys(value)) {
|
|
105
|
+
out[key] = deepCopy(value[key], memo);
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Base class for runtime-updatable service settings.
|
|
111
|
+
*
|
|
112
|
+
* These settings capture the subset of a service's configuration that can be
|
|
113
|
+
* changed **while the pipeline is running** (e.g. switching the model or
|
|
114
|
+
* changing the voice). They are *not* meant to capture every constructor
|
|
115
|
+
* parameter — only those that support live updates via
|
|
116
|
+
* `*UpdateSettingsFrame`.
|
|
117
|
+
*
|
|
118
|
+
* Every AI service type (LLM, TTS, STT) extends this with its own fields.
|
|
119
|
+
* Each instance operates in one of two modes (see module docs):
|
|
120
|
+
*
|
|
121
|
+
* - **Store mode** (`this._settings`): holds the full current state. Every
|
|
122
|
+
* field must be a real value — `NOT_GIVEN` is never valid. Use `null` for
|
|
123
|
+
* inherited fields the service doesn't support. Enforced at runtime by
|
|
124
|
+
* `validateComplete()`.
|
|
125
|
+
* - **Delta mode** (`*UpdateSettingsFrame`): a sparse update. Only fields the
|
|
126
|
+
* caller wants to change are set; all others stay at the default
|
|
127
|
+
* `NOT_GIVEN` and are skipped by `applyUpdate()`.
|
|
128
|
+
*
|
|
129
|
+
* - `model`: the model identifier used by the service. Set to `null` in
|
|
130
|
+
* store mode if the service has no model concept.
|
|
131
|
+
* - `extra`: overflow dict for service-specific keys that don't map to a
|
|
132
|
+
* declared field.
|
|
133
|
+
*/
|
|
134
|
+
export class ServiceSettings {
|
|
135
|
+
// -- common fields -------------------------------------------------------
|
|
136
|
+
/**
|
|
137
|
+
* AI model identifier (e.g. `"gpt-4o"`, `"eleven_flash_v2_5"`).
|
|
138
|
+
*
|
|
139
|
+
* Defaults to `NOT_GIVEN` for delta mode. In store mode, set to a model
|
|
140
|
+
* string or `null` if the service has no model concept.
|
|
141
|
+
*/
|
|
142
|
+
model = NOT_GIVEN;
|
|
143
|
+
/** Catch-all for service-specific keys that have no declared field. */
|
|
144
|
+
extra = {};
|
|
145
|
+
// -- class-level configuration -------------------------------------------
|
|
146
|
+
/**
|
|
147
|
+
* Map of alternative key names to canonical field names.
|
|
148
|
+
*
|
|
149
|
+
* For example `{ voice_id: "voice" }` lets callers use either spelling.
|
|
150
|
+
* Subclasses should override this as needed.
|
|
151
|
+
*/
|
|
152
|
+
static _aliases = {};
|
|
153
|
+
constructor(options = {}) {
|
|
154
|
+
if (options.extra !== undefined)
|
|
155
|
+
this.extra = options.extra;
|
|
156
|
+
this._assignOptions(options);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Copy the given options onto the declared fields of this object. A key
|
|
160
|
+
* that is `undefined` leaves its field at `NOT_GIVEN`. Settings subclasses
|
|
161
|
+
* that declare fields call this at the end of their constructor (see the
|
|
162
|
+
* module docs).
|
|
163
|
+
*/
|
|
164
|
+
_assignOptions(options) {
|
|
165
|
+
const self = this;
|
|
166
|
+
for (const [key, value] of Object.entries(options)) {
|
|
167
|
+
if (key === "extra" || value === undefined)
|
|
168
|
+
continue;
|
|
169
|
+
if (Object.hasOwn(this, key))
|
|
170
|
+
self[key] = value;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/** Names of the declared fields (`dataclasses.fields()`), without `extra`. */
|
|
174
|
+
_fieldNames() {
|
|
175
|
+
return Object.keys(this).filter((name) => name !== "extra");
|
|
176
|
+
}
|
|
177
|
+
// -- public API ----------------------------------------------------------
|
|
178
|
+
/**
|
|
179
|
+
* Return a dict of only the fields that are not `NOT_GIVEN`.
|
|
180
|
+
*
|
|
181
|
+
* Primarily useful for delta-mode objects to inspect which fields were set.
|
|
182
|
+
* For a store-mode object this returns all declared fields (since none
|
|
183
|
+
* should be `NOT_GIVEN`).
|
|
184
|
+
*
|
|
185
|
+
* Skips the `extra` field itself but merges its entries into the returned
|
|
186
|
+
* dict at the top level.
|
|
187
|
+
*
|
|
188
|
+
* @returns Dictionary mapping field names to their provided values.
|
|
189
|
+
*/
|
|
190
|
+
givenFields() {
|
|
191
|
+
const result = {};
|
|
192
|
+
const self = this;
|
|
193
|
+
for (const name of this._fieldNames()) {
|
|
194
|
+
const val = self[name];
|
|
195
|
+
if (isGiven(val))
|
|
196
|
+
result[name] = val;
|
|
197
|
+
}
|
|
198
|
+
Object.assign(result, this.extra);
|
|
199
|
+
return result;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Merge a delta-mode object into this store-mode object.
|
|
203
|
+
*
|
|
204
|
+
* Only fields in `delta` that are **given** (i.e. not `NOT_GIVEN`) are
|
|
205
|
+
* considered. A field is "changed" if its new value differs from the
|
|
206
|
+
* current value.
|
|
207
|
+
*
|
|
208
|
+
* The `extra` dicts are merged: keys present in the delta overwrite keys in
|
|
209
|
+
* the target.
|
|
210
|
+
*
|
|
211
|
+
* @param delta A delta-mode settings object of the same type.
|
|
212
|
+
* @returns A dict mapping each changed field name to its **pre-update**
|
|
213
|
+
* value. Use `Object.keys(changed)` for the set of names, or index with
|
|
214
|
+
* `changed.field` to inspect the old value.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* // store-mode object (all fields given)
|
|
218
|
+
* const current = new TTSSettings({ voice: "alice", language: "en" });
|
|
219
|
+
* // delta-mode object (only voice is set)
|
|
220
|
+
* const delta = new TTSSettings({ voice: "bob" });
|
|
221
|
+
* const changed = current.applyUpdate(delta);
|
|
222
|
+
* // changed == { voice: "alice" }
|
|
223
|
+
* // current.voice == "bob", current.language == "en"
|
|
224
|
+
*/
|
|
225
|
+
applyUpdate(delta) {
|
|
226
|
+
const changed = {};
|
|
227
|
+
const self = this;
|
|
228
|
+
const other = delta;
|
|
229
|
+
for (const name of this._fieldNames()) {
|
|
230
|
+
const newVal = Object.hasOwn(other, name) ? other[name] : NOT_GIVEN;
|
|
231
|
+
if (!isGiven(newVal))
|
|
232
|
+
continue;
|
|
233
|
+
const oldVal = self[name];
|
|
234
|
+
if (!settingsValuesEqual(oldVal, newVal)) {
|
|
235
|
+
self[name] = newVal;
|
|
236
|
+
changed[name] = oldVal;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Merge extra
|
|
240
|
+
for (const [key, newVal] of Object.entries(delta.extra)) {
|
|
241
|
+
const oldVal = Object.hasOwn(this.extra, key) ? this.extra[key] : NOT_GIVEN;
|
|
242
|
+
if (!settingsValuesEqual(oldVal, newVal)) {
|
|
243
|
+
this.extra[key] = newVal;
|
|
244
|
+
changed[key] = oldVal;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return changed;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Build a **delta-mode** settings object from a plain dictionary.
|
|
251
|
+
*
|
|
252
|
+
* The returned object is a delta: only the keys present in `settings` are
|
|
253
|
+
* set; all other fields remain `NOT_GIVEN`.
|
|
254
|
+
*
|
|
255
|
+
* Keys are matched to fields by name. Keys listed in `_aliases` are
|
|
256
|
+
* translated to their canonical name first. A snake_case key also matches
|
|
257
|
+
* its camelCase field (`system_instruction` → `systemInstruction`), so dicts
|
|
258
|
+
* written with upstream's spelling keep working. Any remaining
|
|
259
|
+
* unrecognized keys are placed into `extra`.
|
|
260
|
+
*
|
|
261
|
+
* @param settings A dictionary of setting names to values.
|
|
262
|
+
* @returns A new delta-mode settings instance.
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* const delta = TTSSettings.fromMapping({ voice_id: "alice", speed: 1.2 });
|
|
266
|
+
* // delta.voice == "alice" (via alias)
|
|
267
|
+
* // delta.language is NOT_GIVEN (not in the dict)
|
|
268
|
+
* // delta.extra == { speed: 1.2 }
|
|
269
|
+
*/
|
|
270
|
+
static fromMapping(settings) {
|
|
271
|
+
const cls = ServiceSettings;
|
|
272
|
+
const fieldNames = new Set(new cls()._fieldNames());
|
|
273
|
+
const kwargs = {};
|
|
274
|
+
const extra = {};
|
|
275
|
+
for (const [key, value] of Object.entries(settings)) {
|
|
276
|
+
// Resolve aliases first
|
|
277
|
+
const canonical = cls._aliases[key] ?? key;
|
|
278
|
+
if (fieldNames.has(canonical)) {
|
|
279
|
+
kwargs[canonical] = value;
|
|
280
|
+
}
|
|
281
|
+
else if (fieldNames.has(snakeToCamel(canonical))) {
|
|
282
|
+
kwargs[snakeToCamel(canonical)] = value;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
extra[key] = value;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const instance = new cls(kwargs);
|
|
289
|
+
instance.extra = extra;
|
|
290
|
+
return instance;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Check that this is a valid store-mode object (no `NOT_GIVEN` fields).
|
|
294
|
+
*
|
|
295
|
+
* Called automatically by `AIService.start()` to catch fields that a service
|
|
296
|
+
* forgot to initialize in its constructor. Can also be called manually after
|
|
297
|
+
* constructing a store-mode settings object.
|
|
298
|
+
*
|
|
299
|
+
* Logs an error naming every uninitialized field. Failure to initialize all
|
|
300
|
+
* fields may or may not cause runtime issues — it depends on whether and how
|
|
301
|
+
* the service actually reads the field — but it indicates a deviation from
|
|
302
|
+
* expectations and should be fixed.
|
|
303
|
+
*/
|
|
304
|
+
validateComplete() {
|
|
305
|
+
const self = this;
|
|
306
|
+
const missing = this._fieldNames().filter((name) => !isGiven(self[name]));
|
|
307
|
+
if (missing.length > 0) {
|
|
308
|
+
const names = missing.join(", ");
|
|
309
|
+
logger.error(`${this.constructor.name}: the following fields are NOT_GIVEN: ${names}. ` +
|
|
310
|
+
"All settings fields should be initialized in the service's " +
|
|
311
|
+
"constructor (use null for unsupported fields).");
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Return a deep copy of this settings instance.
|
|
316
|
+
*
|
|
317
|
+
* @returns A new settings object with the same field values.
|
|
318
|
+
*/
|
|
319
|
+
copy() {
|
|
320
|
+
return deepCopy(this);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Runtime-updatable settings for image generation services.
|
|
325
|
+
*
|
|
326
|
+
* Used in both store and delta mode — see `ServiceSettings`.
|
|
327
|
+
*
|
|
328
|
+
* - `model`: image generation model identifier.
|
|
329
|
+
*/
|
|
330
|
+
export class ImageGenSettings extends ServiceSettings {
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Runtime-updatable settings for vision services.
|
|
334
|
+
*
|
|
335
|
+
* Used in both store and delta mode — see `ServiceSettings`.
|
|
336
|
+
*
|
|
337
|
+
* - `model`: vision model identifier.
|
|
338
|
+
*/
|
|
339
|
+
export class VisionSettings extends ServiceSettings {
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Runtime-updatable settings for LLM services.
|
|
343
|
+
*
|
|
344
|
+
* Used in both store and delta mode — see `ServiceSettings`.
|
|
345
|
+
*
|
|
346
|
+
* These fields are common across LLM providers. Not every provider supports
|
|
347
|
+
* every field; in store mode, set unsupported fields to `null` (e.g. a
|
|
348
|
+
* service that doesn't support `seed` should initialize it as `seed: null`).
|
|
349
|
+
*
|
|
350
|
+
* - `model`: LLM model identifier.
|
|
351
|
+
* - `systemInstruction`: system instruction/prompt for the model.
|
|
352
|
+
* - `temperature`: sampling temperature.
|
|
353
|
+
* - `maxTokens`: maximum tokens to generate.
|
|
354
|
+
* - `topP`: nucleus sampling probability.
|
|
355
|
+
* - `topK`: top-k sampling parameter.
|
|
356
|
+
* - `frequencyPenalty`: frequency penalty.
|
|
357
|
+
* - `presencePenalty`: presence penalty.
|
|
358
|
+
* - `seed`: random seed for reproducibility.
|
|
359
|
+
* - `filterIncompleteUserTurns`: enable LLM-based turn completion detection.
|
|
360
|
+
* Set by `LLMTurnCompletionUserTurnStopStrategy` over an
|
|
361
|
+
* `LLMUpdateSettingsFrame`; application code configures it through
|
|
362
|
+
* `FilterIncompleteUserTurnStrategies` instead.
|
|
363
|
+
* - `userTurnCompletionConfig`: configuration for turn completion behavior
|
|
364
|
+
* when `filterIncompleteUserTurns` is enabled. Set by the user turn
|
|
365
|
+
* strategy, like `filterIncompleteUserTurns`.
|
|
366
|
+
* - `useProviderThinkingDefault`: whether a model with no thinking configured
|
|
367
|
+
* runs at its provider's default. Defaults to false.
|
|
368
|
+
*/
|
|
369
|
+
export class LLMSettings extends ServiceSettings {
|
|
370
|
+
systemInstruction = NOT_GIVEN;
|
|
371
|
+
temperature = NOT_GIVEN;
|
|
372
|
+
maxTokens = NOT_GIVEN;
|
|
373
|
+
topP = NOT_GIVEN;
|
|
374
|
+
topK = NOT_GIVEN;
|
|
375
|
+
frequencyPenalty = NOT_GIVEN;
|
|
376
|
+
presencePenalty = NOT_GIVEN;
|
|
377
|
+
seed = NOT_GIVEN;
|
|
378
|
+
// Upstream deprecates setting these from application code (1.7.0), but the
|
|
379
|
+
// user turn strategy still drives turn completion through them.
|
|
380
|
+
filterIncompleteUserTurns = NOT_GIVEN;
|
|
381
|
+
userTurnCompletionConfig = NOT_GIVEN;
|
|
382
|
+
useProviderThinkingDefault = NOT_GIVEN;
|
|
383
|
+
constructor(options = {}) {
|
|
384
|
+
super(options);
|
|
385
|
+
this._assignOptions(options);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Runtime-updatable settings for TTS services.
|
|
390
|
+
*
|
|
391
|
+
* Used in both store and delta mode — see `ServiceSettings`.
|
|
392
|
+
*
|
|
393
|
+
* In store mode, set unsupported fields to `null` (e.g. `language: null` if
|
|
394
|
+
* the service doesn't expose a language setting).
|
|
395
|
+
*
|
|
396
|
+
* - `model`: TTS model identifier.
|
|
397
|
+
* - `voice`: voice identifier or name.
|
|
398
|
+
* - `language`: language for speech synthesis. The union type reflects the
|
|
399
|
+
* *input* side: callers may pass a `Language` value or a raw string in a
|
|
400
|
+
* delta. However, the **stored** value (in store mode) is always a
|
|
401
|
+
* service-specific string or `null` — `TTSService._updateSettings` converts
|
|
402
|
+
* `Language` values via `languageToServiceLanguage()` before writing, and
|
|
403
|
+
* constructors do the same at construction time.
|
|
404
|
+
*/
|
|
405
|
+
export class TTSSettings extends ServiceSettings {
|
|
406
|
+
voice = NOT_GIVEN;
|
|
407
|
+
language = NOT_GIVEN;
|
|
408
|
+
static _aliases = { voice_id: "voice", voiceId: "voice" };
|
|
409
|
+
constructor(options = {}) {
|
|
410
|
+
super(options);
|
|
411
|
+
this._assignOptions(options);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Runtime-updatable settings for STT services.
|
|
416
|
+
*
|
|
417
|
+
* Used in both store and delta mode — see `ServiceSettings`.
|
|
418
|
+
*
|
|
419
|
+
* In store mode, set unsupported fields to `null` (e.g. `language: null` if
|
|
420
|
+
* the service auto-detects language).
|
|
421
|
+
*
|
|
422
|
+
* - `model`: STT model identifier.
|
|
423
|
+
* - `language`: language for speech recognition. The union type reflects the
|
|
424
|
+
* *input* side: callers may pass a `Language` value or a raw string in a
|
|
425
|
+
* delta. However, the **stored** value (in store mode) is always a
|
|
426
|
+
* service-specific string or `null` — `STTService._updateSettings` converts
|
|
427
|
+
* `Language` values via `languageToServiceLanguage()` before writing, and
|
|
428
|
+
* constructors do the same at construction time.
|
|
429
|
+
*/
|
|
430
|
+
export class STTSettings extends ServiceSettings {
|
|
431
|
+
language = NOT_GIVEN;
|
|
432
|
+
constructor(options = {}) {
|
|
433
|
+
super(options);
|
|
434
|
+
this._assignOptions(options);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STT service latency defaults.
|
|
3
|
+
*
|
|
4
|
+
* This module contains P99 time-to-final-segment (TTFS) latency values for
|
|
5
|
+
* STT services. TTFS measures the time from when speech ends to when the
|
|
6
|
+
* final transcript is received.
|
|
7
|
+
*
|
|
8
|
+
* These values are used by turn stop strategies to optimize timing. Each STT
|
|
9
|
+
* service publishes its latency via STTMetadataFrame at pipeline start.
|
|
10
|
+
*
|
|
11
|
+
* All built-in values were measured with `VADParams.stopSecs=0.2`, the
|
|
12
|
+
* recommended default. If you change `stopSecs`, re-run the benchmark with
|
|
13
|
+
* your VAD settings and pass the measured value to your STT service
|
|
14
|
+
* constructor.
|
|
15
|
+
*
|
|
16
|
+
* To measure latency for your specific deployment (region, network
|
|
17
|
+
* conditions, self-hosted instances), use the STT benchmark tool:
|
|
18
|
+
* https://github.com/pipecat-ai/stt-benchmark
|
|
19
|
+
*
|
|
20
|
+
* Run the TTFS benchmark for your service and configuration, then pass the
|
|
21
|
+
* measured value to your STT service constructor:
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const stt = new DeepgramSTTService({ apiKey: "...", ttfsP99Latency: 0.45 });
|
|
25
|
+
*
|
|
26
|
+
* Turn-based STT services (e.g. `CartesiaTurnsSTTService`,
|
|
27
|
+
* `DeepgramFluxSTTService`) have no meaningful TTFS metric — the server
|
|
28
|
+
* defines the turn boundary directly, so there is no separate "speech end →
|
|
29
|
+
* final transcript" interval to measure. Those services override the
|
|
30
|
+
* `STTService.supportsTtfs` property to return false rather than supplying a
|
|
31
|
+
* constant here.
|
|
32
|
+
*/
|
|
33
|
+
export declare const DEFAULT_TTFS_P99: number;
|
|
34
|
+
export declare const ASSEMBLYAI_TTFS_P99: number;
|
|
35
|
+
export declare const ASSEMBLYAI_SYNC_TTFS_P99: number;
|
|
36
|
+
export declare const AWS_TRANSCRIBE_TTFS_P99: number;
|
|
37
|
+
export declare const AZURE_TTFS_P99: number;
|
|
38
|
+
export declare const CARTESIA_TTFS_P99: number;
|
|
39
|
+
export declare const DEEPGRAM_TTFS_P99: number;
|
|
40
|
+
export declare const DEEPGRAM_SAGEMAKER_TTFS_P99: number;
|
|
41
|
+
export declare const ELEVENLABS_TTFS_P99: number;
|
|
42
|
+
export declare const ELEVENLABS_REALTIME_TTFS_P99: number;
|
|
43
|
+
export declare const FAL_TTFS_P99: number;
|
|
44
|
+
export declare const GEMINI_TTFS_P99: number;
|
|
45
|
+
export declare const GLADIA_TTFS_P99: number;
|
|
46
|
+
export declare const GOOGLE_TTFS_P99: number;
|
|
47
|
+
export declare const GRADIUM_TTFS_P99: number;
|
|
48
|
+
export declare const GROQ_TTFS_P99: number;
|
|
49
|
+
export declare const META_TTFS_P99: number;
|
|
50
|
+
export declare const MISTRAL_TTFS_P99: number;
|
|
51
|
+
export declare const OPENAI_TTFS_P99: number;
|
|
52
|
+
export declare const OPENAI_REALTIME_TTFS_P99: number;
|
|
53
|
+
export declare const SARVAM_TTFS_P99: number;
|
|
54
|
+
export declare const SARVAM_REALTIME_TTFS_P99: number;
|
|
55
|
+
export declare const SMALLEST_TTFS_P99: number;
|
|
56
|
+
export declare const SONIOX_TTFS_P99: number;
|
|
57
|
+
export declare const SPEECHMATICS_TTFS_P99: number;
|
|
58
|
+
export declare const XAI_TTFS_P99: number;
|
|
59
|
+
export declare const TOGETHER_TTFS_P99: number;
|
|
60
|
+
export declare const NVIDIA_TTFS_P99: number;
|
|
61
|
+
export declare const WHISPER_TTFS_P99: number;
|
|
62
|
+
//# sourceMappingURL=stt_latency.d.ts.map
|
|
@@ -0,0 +1,71 @@
|
|
|
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/services/stt_latency.py
|
|
6
|
+
/**
|
|
7
|
+
* STT service latency defaults.
|
|
8
|
+
*
|
|
9
|
+
* This module contains P99 time-to-final-segment (TTFS) latency values for
|
|
10
|
+
* STT services. TTFS measures the time from when speech ends to when the
|
|
11
|
+
* final transcript is received.
|
|
12
|
+
*
|
|
13
|
+
* These values are used by turn stop strategies to optimize timing. Each STT
|
|
14
|
+
* service publishes its latency via STTMetadataFrame at pipeline start.
|
|
15
|
+
*
|
|
16
|
+
* All built-in values were measured with `VADParams.stopSecs=0.2`, the
|
|
17
|
+
* recommended default. If you change `stopSecs`, re-run the benchmark with
|
|
18
|
+
* your VAD settings and pass the measured value to your STT service
|
|
19
|
+
* constructor.
|
|
20
|
+
*
|
|
21
|
+
* To measure latency for your specific deployment (region, network
|
|
22
|
+
* conditions, self-hosted instances), use the STT benchmark tool:
|
|
23
|
+
* https://github.com/pipecat-ai/stt-benchmark
|
|
24
|
+
*
|
|
25
|
+
* Run the TTFS benchmark for your service and configuration, then pass the
|
|
26
|
+
* measured value to your STT service constructor:
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const stt = new DeepgramSTTService({ apiKey: "...", ttfsP99Latency: 0.45 });
|
|
30
|
+
*
|
|
31
|
+
* Turn-based STT services (e.g. `CartesiaTurnsSTTService`,
|
|
32
|
+
* `DeepgramFluxSTTService`) have no meaningful TTFS metric — the server
|
|
33
|
+
* defines the turn boundary directly, so there is no separate "speech end →
|
|
34
|
+
* final transcript" interval to measure. Those services override the
|
|
35
|
+
* `STTService.supportsTtfs` property to return false rather than supplying a
|
|
36
|
+
* constant here.
|
|
37
|
+
*/
|
|
38
|
+
// Conservative fallback for services without measured values
|
|
39
|
+
export const DEFAULT_TTFS_P99 = 1.0;
|
|
40
|
+
// Measured P99 TTFS latency values (in seconds)
|
|
41
|
+
export const ASSEMBLYAI_TTFS_P99 = 0.42;
|
|
42
|
+
export const ASSEMBLYAI_SYNC_TTFS_P99 = 0.65;
|
|
43
|
+
export const AWS_TRANSCRIBE_TTFS_P99 = 1.9;
|
|
44
|
+
export const AZURE_TTFS_P99 = 1.8;
|
|
45
|
+
export const CARTESIA_TTFS_P99 = 0.81;
|
|
46
|
+
export const DEEPGRAM_TTFS_P99 = 0.35;
|
|
47
|
+
export const DEEPGRAM_SAGEMAKER_TTFS_P99 = 0.35;
|
|
48
|
+
export const ELEVENLABS_TTFS_P99 = 2.01;
|
|
49
|
+
export const ELEVENLABS_REALTIME_TTFS_P99 = 0.41;
|
|
50
|
+
export const FAL_TTFS_P99 = 2.07;
|
|
51
|
+
export const GEMINI_TTFS_P99 = 0.6;
|
|
52
|
+
export const GLADIA_TTFS_P99 = 1.49;
|
|
53
|
+
export const GOOGLE_TTFS_P99 = 1.57;
|
|
54
|
+
export const GRADIUM_TTFS_P99 = 0.62;
|
|
55
|
+
export const GROQ_TTFS_P99 = 1.54;
|
|
56
|
+
export const META_TTFS_P99 = 1.92;
|
|
57
|
+
export const MISTRAL_TTFS_P99 = 1.89;
|
|
58
|
+
export const OPENAI_TTFS_P99 = 2.01;
|
|
59
|
+
export const OPENAI_REALTIME_TTFS_P99 = 1.66;
|
|
60
|
+
export const SARVAM_TTFS_P99 = 1.17;
|
|
61
|
+
// Provisional until benchmarked against the realtime endpoint.
|
|
62
|
+
export const SARVAM_REALTIME_TTFS_P99 = 1.0;
|
|
63
|
+
export const SMALLEST_TTFS_P99 = 1.59;
|
|
64
|
+
export const SONIOX_TTFS_P99 = 0.35;
|
|
65
|
+
export const SPEECHMATICS_TTFS_P99 = 0.74;
|
|
66
|
+
export const XAI_TTFS_P99 = 2.14;
|
|
67
|
+
export const TOGETHER_TTFS_P99 = 1.0;
|
|
68
|
+
// These services run locally and should be replaced with measured values
|
|
69
|
+
export const NVIDIA_TTFS_P99 = DEFAULT_TTFS_P99;
|
|
70
|
+
export const WHISPER_TTFS_P99 = DEFAULT_TTFS_P99;
|
|
71
|
+
//# sourceMappingURL=stt_latency.js.map
|