@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,489 @@
|
|
|
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/adapters/base_llm_adapter.py
|
|
6
|
+
/**
|
|
7
|
+
* Base adapter for LLM provider integration.
|
|
8
|
+
*
|
|
9
|
+
* Provides the abstract base class for implementing LLM provider-specific
|
|
10
|
+
* adapters that handle tool format conversion and standardization.
|
|
11
|
+
*/
|
|
12
|
+
import { rethrowIfCancelled } from "@pipedog/asyncio";
|
|
13
|
+
import { LLMSpecificMessage, } from "../processors/aggregators/llm_context.js";
|
|
14
|
+
import { warnDeprecated } from "../utils/deprecation.js";
|
|
15
|
+
import { logger } from "../utils/logger.js";
|
|
16
|
+
import { UrlReachability } from "../utils/security/ssrf.js";
|
|
17
|
+
import { isGiven } from "../utils/types.js";
|
|
18
|
+
import { ToolsSchema } from "./schemas/tools_schema.js";
|
|
19
|
+
let warnedBuiltinToolsNotInjected = false;
|
|
20
|
+
/** The scheme of a URL, lowercased (Python's `urlsplit(url).scheme`). */
|
|
21
|
+
export function urlScheme(url) {
|
|
22
|
+
const match = /^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(url);
|
|
23
|
+
return match ? match[1].toLowerCase() : "";
|
|
24
|
+
}
|
|
25
|
+
function base64Decode(data) {
|
|
26
|
+
const binary = atob(data);
|
|
27
|
+
const bytes = new Uint8Array(binary.length);
|
|
28
|
+
for (let i = 0; i < binary.length; i++)
|
|
29
|
+
bytes[i] = binary.charCodeAt(i);
|
|
30
|
+
return bytes;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Raised when converting a universal `LLMContext` to a provider's message
|
|
34
|
+
* format fails.
|
|
35
|
+
*
|
|
36
|
+
* Adapters that transform context messages into a provider-specific format
|
|
37
|
+
* throw this from their conversion routine, wrapping the underlying error
|
|
38
|
+
* (preserved as `cause`). Its message identifies the failure as a
|
|
39
|
+
* context-mapping problem and carries the underlying cause. The corresponding
|
|
40
|
+
* LLM service catches this and surfaces it in the `ErrorFrame` it pushes
|
|
41
|
+
* upstream.
|
|
42
|
+
*/
|
|
43
|
+
export class LLMContextConversionError extends Error {
|
|
44
|
+
name = "LLMContextConversionError";
|
|
45
|
+
/**
|
|
46
|
+
* @param cause The underlying error raised during message conversion.
|
|
47
|
+
*/
|
|
48
|
+
constructor(cause) {
|
|
49
|
+
super(`Error mapping context messages to provider format: ${errorText(cause)}`, { cause });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function errorText(e) {
|
|
53
|
+
return e instanceof Error ? e.message : String(e);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Abstract base class for LLM provider adapters.
|
|
57
|
+
*
|
|
58
|
+
* Provides a standard interface for converting to provider-specific formats.
|
|
59
|
+
*
|
|
60
|
+
* Handles:
|
|
61
|
+
*
|
|
62
|
+
* - Extracting provider-specific parameters for LLM invocation from a
|
|
63
|
+
* universal LLM context
|
|
64
|
+
* - Converting standardized tools schema to provider-specific tool formats.
|
|
65
|
+
* - Extracting messages from the LLM context for the purposes of logging
|
|
66
|
+
* about the specific provider.
|
|
67
|
+
* - Resolving conflicts between `systemInstruction` and initial
|
|
68
|
+
* system/developer messages in the conversation context.
|
|
69
|
+
*
|
|
70
|
+
* Subclasses must implement provider-specific conversion logic.
|
|
71
|
+
*/
|
|
72
|
+
export class BaseLLMAdapter {
|
|
73
|
+
_warnedSystemInstruction = false;
|
|
74
|
+
_warnedContextSystemMessage = false;
|
|
75
|
+
_builtinTools = {};
|
|
76
|
+
_fileResolver = null;
|
|
77
|
+
// Whether this provider's conversion consumes raw bytes (rather than the
|
|
78
|
+
// base64 payload of a data URL) for inline file content. Decides which form
|
|
79
|
+
// the resolution pass prepares in the resolver's cache, so conversion never
|
|
80
|
+
// re-decodes or re-encodes a file on later turns.
|
|
81
|
+
prefersRawFileBytes = false;
|
|
82
|
+
/**
|
|
83
|
+
* Built-in tools automatically merged into every inference request.
|
|
84
|
+
*
|
|
85
|
+
* Keyed by tool name for O(1) lookup, insertion, and removal (`delete`). The service
|
|
86
|
+
* injects tools here so they are sent transparently on every inference
|
|
87
|
+
* request without the user having to add them to their `ToolsSchema`.
|
|
88
|
+
*/
|
|
89
|
+
get builtinTools() {
|
|
90
|
+
return this._builtinTools;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The resolver that fetches and caches file content for this adapter.
|
|
94
|
+
*
|
|
95
|
+
* Set once by the owning LLM service. Every conversion this adapter
|
|
96
|
+
* performs — invocation params and logging alike — reads the same resolver
|
|
97
|
+
* caches. Without one, conversion still passes through URLs the provider
|
|
98
|
+
* consumes directly, but fails on any file that would need fetching.
|
|
99
|
+
*/
|
|
100
|
+
get fileResolver() {
|
|
101
|
+
return this._fileResolver;
|
|
102
|
+
}
|
|
103
|
+
set fileResolver(resolver) {
|
|
104
|
+
this._fileResolver = resolver;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Whether the provider can be handed `url` to fetch itself.
|
|
108
|
+
*
|
|
109
|
+
* This covers both URLs the provider fetches over the public internet and
|
|
110
|
+
* cloud-storage URIs it resolves through its own IAM (e.g. Bedrock reading
|
|
111
|
+
* `s3://`). A URL the provider can't consume is instead fetched into the
|
|
112
|
+
* file resolver's cache and inlined at conversion — see
|
|
113
|
+
* `prepareFileContent()`.
|
|
114
|
+
*
|
|
115
|
+
* @param url The file URL from a `file_url` context content item.
|
|
116
|
+
* @param mimeType The file's MIME type.
|
|
117
|
+
* @returns True if conversion can pass `url` through to the provider.
|
|
118
|
+
*/
|
|
119
|
+
supportsFileUrl(_url, _mimeType) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Fetch the file content this provider will need into the resolver's caches.
|
|
124
|
+
*
|
|
125
|
+
* A `file_url` item whose URL the provider consumes directly
|
|
126
|
+
* (`supportsFileUrl()`, and — for `http(s)` — publicly routable) needs
|
|
127
|
+
* nothing. Any other `file_url` item is fetched into the `fileResolver`'s
|
|
128
|
+
* cache, in the form this provider's conversion reads: raw bytes when
|
|
129
|
+
* `prefersRawFileBytes`, a base64 data URL otherwise. Inline `file_base64`
|
|
130
|
+
* items get their decoded bytes cached for raw-bytes providers. The
|
|
131
|
+
* resolver caches by URL, so each file is fetched once no matter how many
|
|
132
|
+
* turns — or how many adapters sharing the resolver — consume it; only the
|
|
133
|
+
* per-provider pass-through decision is re-evaluated here on every run.
|
|
134
|
+
*
|
|
135
|
+
* An adapter whose conversion inlines files (through `inlinedFileContent()`
|
|
136
|
+
* or `decodedFileBytes()`) awaits this at the start of
|
|
137
|
+
* `getLlmInvocationParams()`. An adapter for a provider that doesn't take
|
|
138
|
+
* files doesn't call it, so nothing is fetched for that provider.
|
|
139
|
+
*
|
|
140
|
+
* @param context The LLM context whose messages to resolve.
|
|
141
|
+
* @throws LLMContextConversionError If a file URL can't be resolved (refused
|
|
142
|
+
* by the reachability policy, download failure, unresolvable scheme,
|
|
143
|
+
* corrupt base64). The service handles it like any other conversion
|
|
144
|
+
* failure, including invalid-file-message cleanup.
|
|
145
|
+
*/
|
|
146
|
+
async prepareFileContent(context) {
|
|
147
|
+
const resolver = this._fileResolver;
|
|
148
|
+
if (resolver === null) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
for (const message of context.getMessages()) {
|
|
152
|
+
if (message instanceof LLMSpecificMessage) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
const content = message.content;
|
|
156
|
+
if (!Array.isArray(content)) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
for (const rawItem of content) {
|
|
160
|
+
if (rawItem === null || typeof rawItem !== "object" || Array.isArray(rawItem)) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
const item = rawItem;
|
|
164
|
+
try {
|
|
165
|
+
if (item.type === "file_url") {
|
|
166
|
+
const fileData = item.file;
|
|
167
|
+
const url = fileData.url;
|
|
168
|
+
const mimeType = fileData.mime_type;
|
|
169
|
+
if (await this._canPassFileUrl(url, mimeType, resolver)) {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (this.prefersRawFileBytes) {
|
|
173
|
+
await resolver.fetch(url);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
await resolver.ensureDataUrl(url, mimeType);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else if (item.type === "file_base64" && this.prefersRawFileBytes) {
|
|
180
|
+
await resolver.fetch(item.file.file_data);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
catch (e) {
|
|
184
|
+
rethrowIfCancelled(e);
|
|
185
|
+
throw new LLMContextConversionError(e);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/** Whether `url` can be handed to the provider to fetch itself. */
|
|
191
|
+
async _canPassFileUrl(url, mimeType, resolver) {
|
|
192
|
+
if (!this.supportsFileUrl(url, mimeType)) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
const scheme = urlScheme(url);
|
|
196
|
+
if (scheme !== "http" && scheme !== "https") {
|
|
197
|
+
// A cloud-storage URI resolved via the provider's own IAM; reachability
|
|
198
|
+
// from here is irrelevant.
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
return (await resolver.classify(url)) === UrlReachability.PUBLIC;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Return the content to inline for a `file_url` item, or null when the URL
|
|
205
|
+
* passes through.
|
|
206
|
+
*
|
|
207
|
+
* @param fileData The item's `file` object (`url`, `mime_type`, ...).
|
|
208
|
+
* @returns null when the URL passes through for the provider to fetch
|
|
209
|
+
* itself; otherwise the resolved content from the `fileResolver`'s caches
|
|
210
|
+
* — raw bytes when `prefersRawFileBytes`, a base64 data URL otherwise.
|
|
211
|
+
* @throws Error If the provider can't consume the URL and no resolved
|
|
212
|
+
* content is cached (wrapped as `LLMContextConversionError` by the
|
|
213
|
+
* conversion routine's caller).
|
|
214
|
+
*/
|
|
215
|
+
inlinedFileContent(fileData) {
|
|
216
|
+
const resolver = this._fileResolver;
|
|
217
|
+
const url = fileData.url;
|
|
218
|
+
const mimeType = fileData.mime_type;
|
|
219
|
+
if (this.supportsFileUrl(url, mimeType)) {
|
|
220
|
+
const scheme = urlScheme(url);
|
|
221
|
+
if (scheme !== "http" && scheme !== "https") {
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
const reachability = resolver !== null ? resolver.cachedReachability(url) : null;
|
|
225
|
+
// Unclassified (no resolver / resolution not run) keeps the
|
|
226
|
+
// conversion-only behavior: hand the URL to the provider.
|
|
227
|
+
if (reachability == null || reachability === UrlReachability.PUBLIC) {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (resolver !== null) {
|
|
232
|
+
let resolved;
|
|
233
|
+
if (this.prefersRawFileBytes) {
|
|
234
|
+
resolved = resolver.cachedBytes(url);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
resolved = resolver.cachedDataUrl(url);
|
|
238
|
+
}
|
|
239
|
+
if (resolved != null) {
|
|
240
|
+
return resolved;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
throw new Error(`Unresolved file URL for this provider: '${url}' (await prepareFileContent ` +
|
|
244
|
+
"in getLlmInvocationParams, with a file resolver set)");
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Return a `file_base64` item's decoded bytes, from the resolver's cache
|
|
248
|
+
* when prepared.
|
|
249
|
+
*
|
|
250
|
+
* Falls back to decoding inline for conversion-only calls where no
|
|
251
|
+
* resolution has run.
|
|
252
|
+
*
|
|
253
|
+
* @param fileData The item's `file` object (`file_data`, ...).
|
|
254
|
+
*/
|
|
255
|
+
decodedFileBytes(fileData) {
|
|
256
|
+
const dataUrl = fileData.file_data;
|
|
257
|
+
if (this._fileResolver !== null) {
|
|
258
|
+
const cached = this._fileResolver.cachedBytes(dataUrl);
|
|
259
|
+
if (cached != null) {
|
|
260
|
+
return cached;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
const comma = dataUrl.indexOf(",");
|
|
264
|
+
if (comma < 0) {
|
|
265
|
+
throw new Error("Invalid data URL: missing ','");
|
|
266
|
+
}
|
|
267
|
+
return base64Decode(dataUrl.slice(comma + 1));
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Create an LLM-specific message (as opposed to a standard message) for use
|
|
271
|
+
* in an LLMContext.
|
|
272
|
+
*
|
|
273
|
+
* @param message The message content.
|
|
274
|
+
* @returns A LLMSpecificMessage instance.
|
|
275
|
+
*/
|
|
276
|
+
createLlmSpecificMessage(message) {
|
|
277
|
+
return new LLMSpecificMessage({ llm: this.idForLlmSpecificMessages, message });
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get messages from the LLM context, including standard and LLM-specific
|
|
281
|
+
* messages.
|
|
282
|
+
*
|
|
283
|
+
* @param context The LLM context containing messages.
|
|
284
|
+
* @param options.truncateLargeValues If true, return deep copies of messages
|
|
285
|
+
* with large values replaced by short placeholders.
|
|
286
|
+
* @returns List of messages including standard and LLM-specific messages.
|
|
287
|
+
*/
|
|
288
|
+
getMessages(context, options = {}) {
|
|
289
|
+
return context.getMessages(this.idForLlmSpecificMessages, {
|
|
290
|
+
truncateLargeValues: options.truncateLargeValues ?? false,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* The tools a realtime session carries, in provider format.
|
|
295
|
+
*
|
|
296
|
+
* The context's own tools when it has any, else the init-provided ones.
|
|
297
|
+
* Built-in tools ride along with whichever set is in use, and are the set
|
|
298
|
+
* when there is neither.
|
|
299
|
+
*
|
|
300
|
+
* @param contextTools The context's tools (`NOT_GIVEN` or `null` when it has
|
|
301
|
+
* none).
|
|
302
|
+
* @param serviceTools The service's init-provided tools, as
|
|
303
|
+
* `_serviceTools()` returns them: a `ToolsSchema` or a provider-native
|
|
304
|
+
* tool list, or `null`.
|
|
305
|
+
* @returns The tools, or `null` when there are none at all.
|
|
306
|
+
*/
|
|
307
|
+
_realtimeSessionTools(contextTools, serviceTools) {
|
|
308
|
+
const own = contextTools != null && isGiven(contextTools) ? contextTools : serviceTools;
|
|
309
|
+
const converted = this.fromStandardTools(own);
|
|
310
|
+
return converted == null || !isGiven(converted) ? null : converted;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Convert tools from standard format to provider format.
|
|
314
|
+
*
|
|
315
|
+
* Built-in tools are automatically merged into the schema before conversion
|
|
316
|
+
* so that every inference request receives them without the user having to
|
|
317
|
+
* declare them explicitly; when there are no other tools, they are the tool
|
|
318
|
+
* set.
|
|
319
|
+
*
|
|
320
|
+
* @param tools Tools in standard format or provider-specific format.
|
|
321
|
+
* @returns List of tools converted to provider format, or original tools
|
|
322
|
+
* (possibly `null`) if not in standard format.
|
|
323
|
+
*/
|
|
324
|
+
fromStandardTools(tools) {
|
|
325
|
+
if (Object.keys(this._builtinTools).length > 0) {
|
|
326
|
+
if (tools instanceof ToolsSchema) {
|
|
327
|
+
tools = new ToolsSchema({
|
|
328
|
+
standardTools: [...tools.standardTools, ...Object.values(this._builtinTools)],
|
|
329
|
+
customTools: tools.customTools,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
else if (tools == null || !isGiven(tools)) {
|
|
333
|
+
tools = new ToolsSchema({ standardTools: [...Object.values(this._builtinTools)] });
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
// User supplied tools in a legacy/provider-specific format. Built-in
|
|
337
|
+
// tools cannot be safely merged, so they will not be injected.
|
|
338
|
+
// Migrate to ToolsSchema to enable built-in tool support; use
|
|
339
|
+
// customTools as an escape hatch for any provider-specific tools that
|
|
340
|
+
// don't fit the standard schema.
|
|
341
|
+
// Like Python's `warnings.warn` (default filter), warn once.
|
|
342
|
+
if (!warnedBuiltinToolsNotInjected) {
|
|
343
|
+
warnedBuiltinToolsNotInjected = true;
|
|
344
|
+
logger.warning("Built-in tools (e.g. async tool cancellation) could not be injected " +
|
|
345
|
+
"because the supplied tools are not a ToolsSchema instance. " +
|
|
346
|
+
"Migrate to ToolsSchema to enable built-in tool support. " +
|
|
347
|
+
"Use new ToolsSchema({ customTools: ... }) as an escape hatch for any " +
|
|
348
|
+
"provider-specific tools that don't fit the standard schema.");
|
|
349
|
+
}
|
|
350
|
+
// Fall through and return the original tools unchanged.
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
if (tools instanceof ToolsSchema) {
|
|
354
|
+
return this.toProviderToolsFormat(tools);
|
|
355
|
+
}
|
|
356
|
+
// Fallback to return the same tools in case they are not in a standard format
|
|
357
|
+
return (tools ?? null);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Warn once that the initial `"system"` context message is deprecated.
|
|
361
|
+
*
|
|
362
|
+
* The system prompt belongs on the LLM service, where it composes with the
|
|
363
|
+
* instructions the framework contributes — appended instructions,
|
|
364
|
+
* turn-completion guidance, async-tool guidance. A prompt carried in the
|
|
365
|
+
* context bypasses that composition, and providers that take the system
|
|
366
|
+
* instruction as a separate parameter drop it entirely when the service
|
|
367
|
+
* also has one.
|
|
368
|
+
*/
|
|
369
|
+
_warnContextSystemMessage() {
|
|
370
|
+
if (this._warnedContextSystemMessage) {
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
this._warnedContextSystemMessage = true;
|
|
374
|
+
warnDeprecated('`new LLMContext({ messages: [{ role: "system", ... }, ...] })` is deprecated since 1.9.0' +
|
|
375
|
+
" and will be removed in 2.0.0. Use `systemInstruction` on the LLM service" +
|
|
376
|
+
" instead.", 3);
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Extract an initial `"system"` message for use as a system instruction.
|
|
380
|
+
*
|
|
381
|
+
* Only useful for services that expect the system instruction as a separate
|
|
382
|
+
* parameter, not inline in conversation history (today, all non-OpenAI
|
|
383
|
+
* services). Does not extract `"developer"` messages — those are converted
|
|
384
|
+
* to `"user"` by the adapter's subsequent message loop, like any other
|
|
385
|
+
* non-system role the provider doesn't support.
|
|
386
|
+
*
|
|
387
|
+
* Checks `messages[0]`. If the role is `"system"`, removes it and returns
|
|
388
|
+
* its content. If extracting would leave the messages list empty
|
|
389
|
+
* (`messages.length === 1`), the message is converted to `"user"` role
|
|
390
|
+
* instead of being extracted, to prevent sending an empty conversation
|
|
391
|
+
* history to providers that require at least one non-system message.
|
|
392
|
+
*
|
|
393
|
+
* @param messages Message list in standard format. The list is mutated
|
|
394
|
+
* in-place; the message objects it holds are never mutated, since they are
|
|
395
|
+
* shared with the source LLMContext.
|
|
396
|
+
* @param options.systemInstruction The system instruction from service
|
|
397
|
+
* settings or `runInference`. Only used to decide whether to warn about a
|
|
398
|
+
* conflict in the single-message case.
|
|
399
|
+
* @returns The extracted system message content, or `null` if nothing was
|
|
400
|
+
* extracted.
|
|
401
|
+
*/
|
|
402
|
+
_extractInitialSystem(messages, options = {}) {
|
|
403
|
+
const systemInstruction = options.systemInstruction ?? null;
|
|
404
|
+
if (messages.length === 0) {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
const first = messages[0];
|
|
408
|
+
if (first.role !== "system") {
|
|
409
|
+
return null;
|
|
410
|
+
}
|
|
411
|
+
this._warnContextSystemMessage();
|
|
412
|
+
// Would extracting empty the list? Convert to "user" instead.
|
|
413
|
+
if (messages.length === 1) {
|
|
414
|
+
if (systemInstruction) {
|
|
415
|
+
if (!this._warnedSystemInstruction) {
|
|
416
|
+
this._warnedSystemInstruction = true;
|
|
417
|
+
logger.warning("Both system_instruction and an initial system message in" +
|
|
418
|
+
" context are set. Using system_instruction. The context" +
|
|
419
|
+
" system message is being converted to a user message to" +
|
|
420
|
+
" avoid sending an empty conversation history.");
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
// Replace rather than mutate: the message objects are shared with the
|
|
424
|
+
// source LLMContext, so an in-place write would rewrite its history.
|
|
425
|
+
messages[0] = { ...first, role: "user" };
|
|
426
|
+
return null;
|
|
427
|
+
}
|
|
428
|
+
// Extract
|
|
429
|
+
let content = first.content ?? "";
|
|
430
|
+
if (Array.isArray(content)) {
|
|
431
|
+
// Join text parts for providers that expect a string system instruction
|
|
432
|
+
content = content
|
|
433
|
+
.filter((part) => part.type === "text")
|
|
434
|
+
.map((part) => part.text ?? "")
|
|
435
|
+
.join(" ");
|
|
436
|
+
}
|
|
437
|
+
messages.shift();
|
|
438
|
+
return content;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Resolve conflict between `systemInstruction` and an extracted context
|
|
442
|
+
* system message.
|
|
443
|
+
*
|
|
444
|
+
* @param systemFromContext Content extracted from an initial `"system"`
|
|
445
|
+
* message by `_extractInitialSystem()`, or detected inline (OpenAI
|
|
446
|
+
* adapters).
|
|
447
|
+
* @param systemInstruction From service settings or `runInference` param.
|
|
448
|
+
* @param options.discardContextSystem If true (non-OpenAI adapters), the
|
|
449
|
+
* context system message is discarded when `systemInstruction` is also
|
|
450
|
+
* present. If false (OpenAI adapters), both are kept.
|
|
451
|
+
* @returns The effective system instruction to use, or `null` if the system
|
|
452
|
+
* instruction is already represented in the messages (OpenAI path).
|
|
453
|
+
*/
|
|
454
|
+
_resolveSystemInstruction(systemFromContext, systemInstruction, options) {
|
|
455
|
+
const { discardContextSystem } = options;
|
|
456
|
+
if (systemFromContext && systemInstruction) {
|
|
457
|
+
if (!this._warnedSystemInstruction) {
|
|
458
|
+
this._warnedSystemInstruction = true;
|
|
459
|
+
if (discardContextSystem) {
|
|
460
|
+
// This provider takes the system instruction as a separate
|
|
461
|
+
// parameter, so only one of the two can be sent.
|
|
462
|
+
logger.warning("Both system_instruction and an initial system message in" +
|
|
463
|
+
" context are set. Using system_instruction; the context" +
|
|
464
|
+
" system message is not sent to the model. Move the prompt" +
|
|
465
|
+
" to system_instruction on the LLM service.");
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
logger.warning("Both system_instruction and an initial system message" +
|
|
469
|
+
" in context are set, which may be unintended. Keeping" +
|
|
470
|
+
" both, but consider using system_instruction for" +
|
|
471
|
+
" system-level instructions and developer messages in" +
|
|
472
|
+
" context for supplementary guidance.");
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
if (systemInstruction) {
|
|
477
|
+
return systemInstruction;
|
|
478
|
+
}
|
|
479
|
+
if (systemFromContext) {
|
|
480
|
+
if (discardContextSystem) {
|
|
481
|
+
return systemFromContext;
|
|
482
|
+
}
|
|
483
|
+
// Content is already in messages; nothing to prepend
|
|
484
|
+
return null;
|
|
485
|
+
}
|
|
486
|
+
return null;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
//# sourceMappingURL=base_llm_adapter.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/adapters/__init__.py
|
|
6
|
+
// Upstream's `__init__.py` is empty: import the package's modules directly.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.js.map
|