@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,434 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026, Daily
|
|
2
|
+
// Copyright (c) 2026, pipedog contributors
|
|
3
|
+
// SPDX-License-Identifier: BSD-2-Clause
|
|
4
|
+
//
|
|
5
|
+
// Ported from pipecat: src/pipecat/utils/tracing/service_attributes.py
|
|
6
|
+
/** Python `isinstance(value, (str, int, float, bool))`. */
|
|
7
|
+
function isPrimitive(value) {
|
|
8
|
+
return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
|
|
9
|
+
}
|
|
10
|
+
/** Convert a camelCase name back to upstream's snake_case (`voiceId` → `voice_id`). */
|
|
11
|
+
export function _camelToSnake(name) {
|
|
12
|
+
return name.replace(/[A-Z]/g, (c) => `_${c.toLowerCase()}`);
|
|
13
|
+
}
|
|
14
|
+
/** Set every primitive extra keyword argument (keys not in `known`) as an attribute. */
|
|
15
|
+
function setExtraAttributes(span, options, known) {
|
|
16
|
+
for (const [key, value] of Object.entries(options)) {
|
|
17
|
+
if (known.has(key))
|
|
18
|
+
continue;
|
|
19
|
+
if (isPrimitive(value)) {
|
|
20
|
+
span.setAttribute(key, value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** Set the primitive given fields of `settings` as `settings.<key>` attributes. */
|
|
25
|
+
function setSettingsAttributes(span, settings) {
|
|
26
|
+
// Use givenFields() defensively in case a service doesn't initialize all settings.
|
|
27
|
+
if (settings) {
|
|
28
|
+
for (const [key, value] of Object.entries(settings.givenFields())) {
|
|
29
|
+
if (isPrimitive(value)) {
|
|
30
|
+
span.setAttribute(`settings.${_camelToSnake(key)}`, value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Extract the standardized gen_ai.provider.name value from a service class name.
|
|
37
|
+
*
|
|
38
|
+
* Source:
|
|
39
|
+
* https://github.com/open-telemetry/semantic-conventions-genai/blob/main/docs/registry/attributes/gen-ai.md
|
|
40
|
+
*
|
|
41
|
+
* Uses standard OTel names where possible, with special case mappings for
|
|
42
|
+
* service names that don't follow the pattern.
|
|
43
|
+
*
|
|
44
|
+
* @param serviceName The service class name to extract provider name from.
|
|
45
|
+
* @returns The standardized gen_ai.provider.name value.
|
|
46
|
+
*/
|
|
47
|
+
export function _getProviderNameFromServiceName(serviceName) {
|
|
48
|
+
const SPECIAL_CASE_MAPPINGS = {
|
|
49
|
+
// AWS
|
|
50
|
+
AWSBedrockLLMService: "aws.bedrock",
|
|
51
|
+
// Azure
|
|
52
|
+
AzureLLMService: "azure.ai.openai",
|
|
53
|
+
// Google
|
|
54
|
+
GoogleLLMService: "gcp.gemini",
|
|
55
|
+
GoogleVertexLLMService: "gcp.vertex_ai",
|
|
56
|
+
// Others
|
|
57
|
+
GrokLLMService: "x_ai",
|
|
58
|
+
MistralLLMService: "mistral_ai",
|
|
59
|
+
};
|
|
60
|
+
if (Object.hasOwn(SPECIAL_CASE_MAPPINGS, serviceName)) {
|
|
61
|
+
return SPECIAL_CASE_MAPPINGS[serviceName];
|
|
62
|
+
}
|
|
63
|
+
let provider;
|
|
64
|
+
if (serviceName.endsWith("LLMService")) {
|
|
65
|
+
provider = serviceName.slice(0, -10).toLowerCase();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
provider = serviceName.toLowerCase();
|
|
69
|
+
}
|
|
70
|
+
return provider;
|
|
71
|
+
}
|
|
72
|
+
const TTS_KNOWN = new Set([
|
|
73
|
+
"serviceName",
|
|
74
|
+
"model",
|
|
75
|
+
"voiceId",
|
|
76
|
+
"text",
|
|
77
|
+
"settings",
|
|
78
|
+
"characterCount",
|
|
79
|
+
"operationName",
|
|
80
|
+
"ttfb",
|
|
81
|
+
]);
|
|
82
|
+
/**
|
|
83
|
+
* Add TTS-specific attributes to a span.
|
|
84
|
+
*
|
|
85
|
+
* @param span The span to add attributes to.
|
|
86
|
+
* @param options The TTS attributes; any other key is added as an attribute.
|
|
87
|
+
*/
|
|
88
|
+
export function addTtsSpanAttributes(span, options) {
|
|
89
|
+
const operationName = options.operationName ?? "tts";
|
|
90
|
+
// Add standard attributes
|
|
91
|
+
span.setAttribute("gen_ai.provider.name", options.serviceName.replaceAll("TTSService", "").toLowerCase());
|
|
92
|
+
span.setAttribute("gen_ai.request.model", options.model);
|
|
93
|
+
span.setAttribute("gen_ai.operation.name", operationName);
|
|
94
|
+
span.setAttribute("gen_ai.output.type", "speech");
|
|
95
|
+
span.setAttribute("voice_id", options.voiceId);
|
|
96
|
+
// Add optional attributes
|
|
97
|
+
if (options.text) {
|
|
98
|
+
span.setAttribute("text", options.text);
|
|
99
|
+
}
|
|
100
|
+
if (options.characterCount !== null && options.characterCount !== undefined) {
|
|
101
|
+
span.setAttribute("metrics.character_count", options.characterCount);
|
|
102
|
+
}
|
|
103
|
+
if (options.ttfb !== null && options.ttfb !== undefined) {
|
|
104
|
+
span.setAttribute("metrics.ttfb", options.ttfb);
|
|
105
|
+
}
|
|
106
|
+
setSettingsAttributes(span, options.settings);
|
|
107
|
+
// Add any additional keyword arguments as attributes
|
|
108
|
+
setExtraAttributes(span, options, TTS_KNOWN);
|
|
109
|
+
}
|
|
110
|
+
const STT_KNOWN = new Set([
|
|
111
|
+
"serviceName",
|
|
112
|
+
"model",
|
|
113
|
+
"operationName",
|
|
114
|
+
"transcript",
|
|
115
|
+
"isFinal",
|
|
116
|
+
"language",
|
|
117
|
+
"userId",
|
|
118
|
+
"settings",
|
|
119
|
+
"vadEnabled",
|
|
120
|
+
"ttfb",
|
|
121
|
+
]);
|
|
122
|
+
/**
|
|
123
|
+
* Add STT-specific attributes to a span.
|
|
124
|
+
*
|
|
125
|
+
* @param span The span to add attributes to.
|
|
126
|
+
* @param options The STT attributes; any other key is added as an attribute.
|
|
127
|
+
*/
|
|
128
|
+
export function addSttSpanAttributes(span, options) {
|
|
129
|
+
const operationName = options.operationName ?? "stt";
|
|
130
|
+
// Add standard attributes
|
|
131
|
+
span.setAttribute("gen_ai.provider.name", options.serviceName.replaceAll("STTService", "").toLowerCase());
|
|
132
|
+
span.setAttribute("gen_ai.request.model", options.model);
|
|
133
|
+
span.setAttribute("gen_ai.operation.name", operationName);
|
|
134
|
+
span.setAttribute("vad_enabled", options.vadEnabled ?? false);
|
|
135
|
+
// Add optional attributes
|
|
136
|
+
if (options.transcript) {
|
|
137
|
+
span.setAttribute("transcript", options.transcript);
|
|
138
|
+
}
|
|
139
|
+
if (options.isFinal !== null && options.isFinal !== undefined) {
|
|
140
|
+
span.setAttribute("is_final", options.isFinal);
|
|
141
|
+
}
|
|
142
|
+
if (options.language) {
|
|
143
|
+
span.setAttribute("language", options.language);
|
|
144
|
+
}
|
|
145
|
+
if (options.userId) {
|
|
146
|
+
span.setAttribute("user_id", options.userId);
|
|
147
|
+
}
|
|
148
|
+
if (options.ttfb !== null && options.ttfb !== undefined) {
|
|
149
|
+
span.setAttribute("metrics.ttfb", options.ttfb);
|
|
150
|
+
}
|
|
151
|
+
setSettingsAttributes(span, options.settings);
|
|
152
|
+
// Add any additional keyword arguments as attributes
|
|
153
|
+
setExtraAttributes(span, options, STT_KNOWN);
|
|
154
|
+
}
|
|
155
|
+
const LLM_KNOWN = new Set([
|
|
156
|
+
"serviceName",
|
|
157
|
+
"model",
|
|
158
|
+
"stream",
|
|
159
|
+
"messages",
|
|
160
|
+
"output",
|
|
161
|
+
"tools",
|
|
162
|
+
"toolCount",
|
|
163
|
+
"toolChoice",
|
|
164
|
+
"systemInstructions",
|
|
165
|
+
"parameters",
|
|
166
|
+
"extraParameters",
|
|
167
|
+
"ttfb",
|
|
168
|
+
]);
|
|
169
|
+
const GEN_AI_REQUEST_PARAMETERS = new Set([
|
|
170
|
+
"temperature",
|
|
171
|
+
"max_tokens",
|
|
172
|
+
"max_completion_tokens",
|
|
173
|
+
"top_p",
|
|
174
|
+
"top_k",
|
|
175
|
+
"frequency_penalty",
|
|
176
|
+
"presence_penalty",
|
|
177
|
+
"seed",
|
|
178
|
+
]);
|
|
179
|
+
/**
|
|
180
|
+
* Add LLM-specific attributes to a span.
|
|
181
|
+
*
|
|
182
|
+
* @param span The span to add attributes to.
|
|
183
|
+
* @param options The LLM attributes; any other key is added as an attribute.
|
|
184
|
+
* Keys of `parameters` may be camelCase settings names; they are converted
|
|
185
|
+
* to snake_case attribute names.
|
|
186
|
+
*/
|
|
187
|
+
export function addLlmSpanAttributes(span, options) {
|
|
188
|
+
// Add standard attributes
|
|
189
|
+
span.setAttribute("gen_ai.provider.name", _getProviderNameFromServiceName(options.serviceName));
|
|
190
|
+
span.setAttribute("gen_ai.request.model", options.model);
|
|
191
|
+
span.setAttribute("gen_ai.operation.name", "chat");
|
|
192
|
+
span.setAttribute("gen_ai.output.type", "text");
|
|
193
|
+
span.setAttribute("stream", options.stream ?? true);
|
|
194
|
+
// Add optional attributes
|
|
195
|
+
if (options.messages) {
|
|
196
|
+
span.setAttribute("input", options.messages);
|
|
197
|
+
}
|
|
198
|
+
if (options.output) {
|
|
199
|
+
span.setAttribute("output", options.output);
|
|
200
|
+
}
|
|
201
|
+
if (options.tools) {
|
|
202
|
+
span.setAttribute("tools", options.tools);
|
|
203
|
+
}
|
|
204
|
+
if (options.toolCount !== null && options.toolCount !== undefined) {
|
|
205
|
+
span.setAttribute("tool_count", options.toolCount);
|
|
206
|
+
}
|
|
207
|
+
if (options.toolChoice) {
|
|
208
|
+
span.setAttribute("tool_choice", options.toolChoice);
|
|
209
|
+
}
|
|
210
|
+
if (options.systemInstructions) {
|
|
211
|
+
span.setAttribute("gen_ai.system_instructions", options.systemInstructions);
|
|
212
|
+
}
|
|
213
|
+
if (options.ttfb !== null && options.ttfb !== undefined) {
|
|
214
|
+
span.setAttribute("metrics.ttfb", options.ttfb);
|
|
215
|
+
}
|
|
216
|
+
// Add parameters if provided
|
|
217
|
+
if (options.parameters) {
|
|
218
|
+
for (const [rawKey, value] of Object.entries(options.parameters)) {
|
|
219
|
+
if (isPrimitive(value)) {
|
|
220
|
+
const key = _camelToSnake(rawKey);
|
|
221
|
+
if (GEN_AI_REQUEST_PARAMETERS.has(key)) {
|
|
222
|
+
span.setAttribute(`gen_ai.request.${key}`, value);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
span.setAttribute(`param.${key}`, value);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Add extra parameters if provided
|
|
231
|
+
if (options.extraParameters) {
|
|
232
|
+
for (const [key, value] of Object.entries(options.extraParameters)) {
|
|
233
|
+
if (isPrimitive(value)) {
|
|
234
|
+
span.setAttribute(`extra.${key}`, value);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Add any additional keyword arguments as attributes
|
|
239
|
+
setExtraAttributes(span, options, LLM_KNOWN);
|
|
240
|
+
}
|
|
241
|
+
function isObject(value) {
|
|
242
|
+
return typeof value === "object" && value !== null;
|
|
243
|
+
}
|
|
244
|
+
const GEMINI_KNOWN = new Set([
|
|
245
|
+
"serviceName",
|
|
246
|
+
"model",
|
|
247
|
+
"operationName",
|
|
248
|
+
"voiceId",
|
|
249
|
+
"language",
|
|
250
|
+
"modalities",
|
|
251
|
+
"settings",
|
|
252
|
+
"tools",
|
|
253
|
+
"toolsSerialized",
|
|
254
|
+
"transcript",
|
|
255
|
+
"isInput",
|
|
256
|
+
"textOutput",
|
|
257
|
+
"audioDataSize",
|
|
258
|
+
]);
|
|
259
|
+
/** An enum member upstream (`.value`); a plain string in TS. */
|
|
260
|
+
function enumValue(value) {
|
|
261
|
+
return isObject(value) && "value" in value ? value.value : value;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Add Gemini Live specific attributes to a span.
|
|
265
|
+
*
|
|
266
|
+
* @param span The span to add attributes to.
|
|
267
|
+
* @param options The Gemini Live attributes; any other key is added as an attribute.
|
|
268
|
+
*/
|
|
269
|
+
export function addGeminiLiveSpanAttributes(span, options) {
|
|
270
|
+
// Add standard attributes
|
|
271
|
+
span.setAttribute("gen_ai.provider.name", "gcp.gemini");
|
|
272
|
+
span.setAttribute("gen_ai.request.model", options.model);
|
|
273
|
+
span.setAttribute("gen_ai.operation.name", options.operationName);
|
|
274
|
+
span.setAttribute("service.operation", options.operationName);
|
|
275
|
+
// Add optional attributes
|
|
276
|
+
if (options.voiceId) {
|
|
277
|
+
span.setAttribute("voice_id", options.voiceId);
|
|
278
|
+
}
|
|
279
|
+
if (options.language) {
|
|
280
|
+
span.setAttribute("language", options.language);
|
|
281
|
+
}
|
|
282
|
+
if (options.modalities) {
|
|
283
|
+
span.setAttribute("modalities", options.modalities);
|
|
284
|
+
}
|
|
285
|
+
if (options.transcript) {
|
|
286
|
+
span.setAttribute("transcript", options.transcript);
|
|
287
|
+
if (options.isInput !== null && options.isInput !== undefined) {
|
|
288
|
+
span.setAttribute("transcript.is_input", options.isInput);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
if (options.textOutput) {
|
|
292
|
+
span.setAttribute("text_output", options.textOutput);
|
|
293
|
+
}
|
|
294
|
+
if (options.audioDataSize !== null && options.audioDataSize !== undefined) {
|
|
295
|
+
span.setAttribute("audio.data_size_bytes", options.audioDataSize);
|
|
296
|
+
}
|
|
297
|
+
const tools = options.tools;
|
|
298
|
+
if (tools && tools.length > 0) {
|
|
299
|
+
span.setAttribute("tools.count", tools.length);
|
|
300
|
+
span.setAttribute("tools.available", true);
|
|
301
|
+
// Add individual tool names for easier filtering
|
|
302
|
+
const toolNames = [];
|
|
303
|
+
for (const tool of tools) {
|
|
304
|
+
if (isObject(tool) && "name" in tool) {
|
|
305
|
+
const toolName = tool.name;
|
|
306
|
+
if (toolName !== null && toolName !== undefined) {
|
|
307
|
+
toolNames.push(String(toolName));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (toolNames.length > 0) {
|
|
312
|
+
span.setAttribute("tools.names", toolNames.join(","));
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
if (options.toolsSerialized) {
|
|
316
|
+
span.setAttribute("tools.definitions", options.toolsSerialized);
|
|
317
|
+
}
|
|
318
|
+
// Use givenFields() defensively in case a service doesn't initialize all settings.
|
|
319
|
+
if (options.settings) {
|
|
320
|
+
for (const [key, value] of Object.entries(options.settings.givenFields())) {
|
|
321
|
+
if (isPrimitive(value)) {
|
|
322
|
+
span.setAttribute(`settings.${_camelToSnake(key)}`, value);
|
|
323
|
+
}
|
|
324
|
+
else if (key === "vad" && value) {
|
|
325
|
+
// Handle VAD settings specially
|
|
326
|
+
if (isObject(value)) {
|
|
327
|
+
if ("disabled" in value && value.disabled !== null && value.disabled !== undefined) {
|
|
328
|
+
span.setAttribute("settings.vad.disabled", value.disabled);
|
|
329
|
+
}
|
|
330
|
+
if ("startSensitivity" in value && value.startSensitivity) {
|
|
331
|
+
span.setAttribute("settings.vad.start_sensitivity", String(enumValue(value.startSensitivity)));
|
|
332
|
+
}
|
|
333
|
+
if ("endSensitivity" in value && value.endSensitivity) {
|
|
334
|
+
span.setAttribute("settings.vad.end_sensitivity", String(enumValue(value.endSensitivity)));
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
// Add any additional keyword arguments as attributes
|
|
341
|
+
setExtraAttributes(span, options, GEMINI_KNOWN);
|
|
342
|
+
}
|
|
343
|
+
const OPENAI_REALTIME_KNOWN = new Set([
|
|
344
|
+
"serviceName",
|
|
345
|
+
"model",
|
|
346
|
+
"operationName",
|
|
347
|
+
"sessionProperties",
|
|
348
|
+
"transcript",
|
|
349
|
+
"isInput",
|
|
350
|
+
"contextMessages",
|
|
351
|
+
"functionCalls",
|
|
352
|
+
"tools",
|
|
353
|
+
"toolsSerialized",
|
|
354
|
+
"audioDataSize",
|
|
355
|
+
]);
|
|
356
|
+
/**
|
|
357
|
+
* Add OpenAI Realtime specific attributes to a span.
|
|
358
|
+
*
|
|
359
|
+
* @param span The span to add attributes to.
|
|
360
|
+
* @param options The OpenAI Realtime attributes; any other key is added as an attribute.
|
|
361
|
+
*/
|
|
362
|
+
export function addOpenaiRealtimeSpanAttributes(span, options) {
|
|
363
|
+
// Add standard attributes
|
|
364
|
+
span.setAttribute("gen_ai.provider.name", "openai");
|
|
365
|
+
span.setAttribute("gen_ai.request.model", options.model);
|
|
366
|
+
span.setAttribute("gen_ai.operation.name", options.operationName);
|
|
367
|
+
span.setAttribute("service.operation", options.operationName);
|
|
368
|
+
// Add optional attributes
|
|
369
|
+
if (options.transcript) {
|
|
370
|
+
span.setAttribute("transcript", options.transcript);
|
|
371
|
+
if (options.isInput !== null && options.isInput !== undefined) {
|
|
372
|
+
span.setAttribute("transcript.is_input", options.isInput);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
if (options.contextMessages) {
|
|
376
|
+
span.setAttribute("input", options.contextMessages);
|
|
377
|
+
}
|
|
378
|
+
if (options.audioDataSize !== null && options.audioDataSize !== undefined) {
|
|
379
|
+
span.setAttribute("audio.data_size_bytes", options.audioDataSize);
|
|
380
|
+
}
|
|
381
|
+
const tools = options.tools;
|
|
382
|
+
if (tools && tools.length > 0) {
|
|
383
|
+
span.setAttribute("tools.count", tools.length);
|
|
384
|
+
span.setAttribute("tools.available", true);
|
|
385
|
+
// Add individual tool names for easier filtering
|
|
386
|
+
const toolNames = [];
|
|
387
|
+
for (const tool of tools) {
|
|
388
|
+
if (isObject(tool) && "name" in tool) {
|
|
389
|
+
toolNames.push(String(tool.name));
|
|
390
|
+
}
|
|
391
|
+
else if (isObject(tool) && isObject(tool.function) && "name" in tool.function) {
|
|
392
|
+
toolNames.push(String(tool.function.name));
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
if (toolNames.length > 0) {
|
|
396
|
+
span.setAttribute("tools.names", toolNames.join(","));
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
if (options.toolsSerialized) {
|
|
400
|
+
span.setAttribute("tools.definitions", options.toolsSerialized);
|
|
401
|
+
}
|
|
402
|
+
const functionCalls = options.functionCalls;
|
|
403
|
+
if (functionCalls && functionCalls.length > 0) {
|
|
404
|
+
span.setAttribute("function_calls.count", functionCalls.length);
|
|
405
|
+
const call = functionCalls[0];
|
|
406
|
+
if (isObject(call) && "name" in call) {
|
|
407
|
+
span.setAttribute("function_calls.first_name", String(call.name));
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
// Add session properties if provided
|
|
411
|
+
if (options.sessionProperties) {
|
|
412
|
+
for (const [key, value] of Object.entries(options.sessionProperties)) {
|
|
413
|
+
if (isPrimitive(value)) {
|
|
414
|
+
span.setAttribute(`session.${key}`, value);
|
|
415
|
+
}
|
|
416
|
+
else if (key === "turn_detection" && value !== null && value !== undefined) {
|
|
417
|
+
if (typeof value === "boolean") {
|
|
418
|
+
span.setAttribute("session.turn_detection.enabled", value);
|
|
419
|
+
}
|
|
420
|
+
else if (isObject(value)) {
|
|
421
|
+
span.setAttribute("session.turn_detection.enabled", true);
|
|
422
|
+
for (const [tdKey, tdValue] of Object.entries(value)) {
|
|
423
|
+
if (isPrimitive(tdValue)) {
|
|
424
|
+
span.setAttribute(`session.turn_detection.${tdKey}`, tdValue);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
// Add any additional keyword arguments as attributes
|
|
432
|
+
setExtraAttributes(span, options, OPENAI_REALTIME_KNOWN);
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=service_attributes.js.map
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { type OtelContext, type OtelSpan } from "./setup.ts";
|
|
2
|
+
type Service = any;
|
|
3
|
+
/** A decorator returned by the `traced*` functions. */
|
|
4
|
+
export type TracedMethodDecorator = (value: any, context?: any, descriptor?: PropertyDescriptor) => any;
|
|
5
|
+
/**
|
|
6
|
+
* Get the model name from a service instance.
|
|
7
|
+
*
|
|
8
|
+
* This is a bit of a mess — there were multiple places a model name could live.
|
|
9
|
+
* Soon, `this._settings` should be the only source of truth about model name.
|
|
10
|
+
* In fact...it might already be the case, but juuuuust to be safe, we'll
|
|
11
|
+
* check all the places we used to store it.
|
|
12
|
+
*/
|
|
13
|
+
export declare function _getModelName(service: Service): string;
|
|
14
|
+
/**
|
|
15
|
+
* Get the current turn's tracing context if available.
|
|
16
|
+
*
|
|
17
|
+
* @param service The service instance.
|
|
18
|
+
* @returns The turn context, or null if unavailable.
|
|
19
|
+
*/
|
|
20
|
+
export declare function _getTurnContext(service: Service): OtelContext | null;
|
|
21
|
+
/**
|
|
22
|
+
* Get the parent service span context (internal use only).
|
|
23
|
+
*
|
|
24
|
+
* This looks for the service span that was created when the service was initialized,
|
|
25
|
+
* or falls back to the conversation context if available.
|
|
26
|
+
*
|
|
27
|
+
* @param service The service instance.
|
|
28
|
+
* @returns The parent service context, or null if unavailable.
|
|
29
|
+
*/
|
|
30
|
+
export declare function _getParentServiceContext(service: Service): OtelContext | null;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the effective system instruction for tracing (internal use only).
|
|
33
|
+
*
|
|
34
|
+
* System instructions can live on the LLM service (`settings.systemInstruction`,
|
|
35
|
+
* the norm — and the composed source of truth, see
|
|
36
|
+
* `LLMService._composeSystemInstruction`) or be supplied as an initial
|
|
37
|
+
* system message in the context. The service setting takes priority,
|
|
38
|
+
* matching service behavior.
|
|
39
|
+
*
|
|
40
|
+
* @param service The LLM service instance.
|
|
41
|
+
* @param context The universal `LLMContext`, or null.
|
|
42
|
+
* @returns The system instruction text, or null if none is present.
|
|
43
|
+
*/
|
|
44
|
+
export declare function _getSystemInstruction(service: Service, context: Service): string | null;
|
|
45
|
+
/**
|
|
46
|
+
* Add token usage metrics to a span (internal use only).
|
|
47
|
+
*
|
|
48
|
+
* @param span The span to add token metrics to.
|
|
49
|
+
* @param tokenUsage A dict (snake_case keys) or `LLMTokenUsage` object
|
|
50
|
+
* containing token usage information.
|
|
51
|
+
*/
|
|
52
|
+
export declare function _addTokenUsageToSpan(span: OtelSpan, tokenUsage: unknown): void;
|
|
53
|
+
/**
|
|
54
|
+
* Add STT usage metrics to a span (internal use only).
|
|
55
|
+
*
|
|
56
|
+
* @param span The span to add usage metrics to.
|
|
57
|
+
* @param usage `STTUsage` object with audio seconds.
|
|
58
|
+
*/
|
|
59
|
+
export declare function _addSttUsageToSpan(span: OtelSpan, usage: Service): void;
|
|
60
|
+
export interface TracedOptions {
|
|
61
|
+
/** Custom span name. */
|
|
62
|
+
name?: string | null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Trace TTS service methods with TTS-specific attributes.
|
|
66
|
+
*
|
|
67
|
+
* Automatically captures and records:
|
|
68
|
+
*
|
|
69
|
+
* - Service name and model information
|
|
70
|
+
* - Voice ID and settings
|
|
71
|
+
* - Character count and text content
|
|
72
|
+
* - Performance metrics like TTFB
|
|
73
|
+
*
|
|
74
|
+
* The span is scoped to the full synthesis operation, from
|
|
75
|
+
* `createAudioContext` until `TTSStoppedFrame` (or `removeAudioContext` as a
|
|
76
|
+
* safety net), so TTFB and any other runtime-computed metrics land on the
|
|
77
|
+
* correct span even when audio chunks are delivered after `runTts` returns
|
|
78
|
+
* (e.g. WebSocket streaming TTS services).
|
|
79
|
+
*
|
|
80
|
+
* Works with both async functions and generators.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* class MyTTSService extends TTSService {
|
|
84
|
+
* @tracedTts
|
|
85
|
+
* async *runTts(text: string, contextId: string) { ... }
|
|
86
|
+
* }
|
|
87
|
+
*
|
|
88
|
+
* @param func The TTS method to trace (when used as `@tracedTts`).
|
|
89
|
+
* @param options.name Custom span name. Defaults to service type and class name.
|
|
90
|
+
* @returns Wrapped method with TTS-specific tracing, or a decorator when
|
|
91
|
+
* called with options.
|
|
92
|
+
*/
|
|
93
|
+
export declare function tracedTts(options?: TracedOptions): TracedMethodDecorator;
|
|
94
|
+
export declare function tracedTts(func: any, context?: any, descriptor?: PropertyDescriptor): any;
|
|
95
|
+
/**
|
|
96
|
+
* Apply `tracedTts` to `owner[attrName]` without decorator syntax.
|
|
97
|
+
*
|
|
98
|
+
* Equivalent to upstream's class-definition-time `__set_name__` hook: wraps
|
|
99
|
+
* `owner.setup` so the audio-context patches install on every instance, and
|
|
100
|
+
* replaces the method with its traced wrapper.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* class MyTTSService extends TTSService {
|
|
104
|
+
* async *runTts(text: string, contextId: string) { ... }
|
|
105
|
+
* static {
|
|
106
|
+
* installTracedTts(this.prototype, "runTts");
|
|
107
|
+
* }
|
|
108
|
+
* }
|
|
109
|
+
*/
|
|
110
|
+
export declare function installTracedTts(owner: object, attrName: string, _options?: TracedOptions): void;
|
|
111
|
+
/**
|
|
112
|
+
* Trace STT service methods with transcription attributes.
|
|
113
|
+
*
|
|
114
|
+
* Automatically captures and records:
|
|
115
|
+
*
|
|
116
|
+
* - Service name and model information
|
|
117
|
+
* - Transcription text and final status
|
|
118
|
+
* - Language information
|
|
119
|
+
* - Performance metrics like TTFB
|
|
120
|
+
* - Usage metrics (audio seconds) when the service reports them via
|
|
121
|
+
* `startSttUsageMetrics`
|
|
122
|
+
*
|
|
123
|
+
* The span is scoped to one STT segment, from `VADUserStartedSpeakingFrame`
|
|
124
|
+
* (or the first `TranscriptionFrame` when VAD did not fire, e.g. whispered
|
|
125
|
+
* speech) until a finalized `TranscriptionFrame`. Multiple finalized
|
|
126
|
+
* transcripts in a single user turn produce multiple sequential spans, each
|
|
127
|
+
* anchored at the point speech for that segment began. `metrics.ttfb` is read
|
|
128
|
+
* after the base `pushFrame` runs `stopTtfbMetrics` for the finalized frame,
|
|
129
|
+
* so the value is correct for the closing span.
|
|
130
|
+
*
|
|
131
|
+
* @param func The STT method to trace (when used as `@tracedStt`).
|
|
132
|
+
* @param options.name Custom span name. Defaults to function name.
|
|
133
|
+
* @returns The original method unchanged. The decorator's class-level work is
|
|
134
|
+
* to install a `pushFrame` wrapper on the owning class (or, as a TC39
|
|
135
|
+
* decorator, on each instance) that owns the span lifetime.
|
|
136
|
+
*/
|
|
137
|
+
export declare function tracedStt(options?: TracedOptions): TracedMethodDecorator;
|
|
138
|
+
export declare function tracedStt(func: any, context?: any, descriptor?: PropertyDescriptor): any;
|
|
139
|
+
/**
|
|
140
|
+
* Apply `tracedStt` to `owner` without decorator syntax.
|
|
141
|
+
*
|
|
142
|
+
* Equivalent to upstream's class-definition-time `__set_name__` hook: wraps
|
|
143
|
+
* `pushFrame`, `stopTtfbMetrics` and `startSttUsageMetrics` so VAD,
|
|
144
|
+
* transcription, and finalization events drive the span lifecycle. The
|
|
145
|
+
* decorated method itself runs unchanged.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* class MySTTService extends STTService {
|
|
149
|
+
* static {
|
|
150
|
+
* installTracedStt(this.prototype, "_handleTranscription");
|
|
151
|
+
* }
|
|
152
|
+
* }
|
|
153
|
+
*/
|
|
154
|
+
export declare function installTracedStt(owner: object, _attrName?: string, _options?: TracedOptions): void;
|
|
155
|
+
/**
|
|
156
|
+
* Trace LLM service methods with LLM-specific attributes.
|
|
157
|
+
*
|
|
158
|
+
* Automatically captures and records:
|
|
159
|
+
*
|
|
160
|
+
* - Service name and model information
|
|
161
|
+
* - Context content and messages
|
|
162
|
+
* - Tool configurations
|
|
163
|
+
* - Token usage metrics
|
|
164
|
+
* - Performance metrics like TTFB
|
|
165
|
+
* - Aggregated output text
|
|
166
|
+
*
|
|
167
|
+
* @param func The LLM method to trace (when used as `@tracedLlm`).
|
|
168
|
+
* @param options.name Custom span name. Defaults to service type and class name.
|
|
169
|
+
* @returns Wrapped method with LLM-specific tracing, or a decorator when
|
|
170
|
+
* called with options.
|
|
171
|
+
*/
|
|
172
|
+
export declare function tracedLlm(options?: TracedOptions): TracedMethodDecorator;
|
|
173
|
+
export declare function tracedLlm(func: any, context?: any, descriptor?: PropertyDescriptor): any;
|
|
174
|
+
/**
|
|
175
|
+
* Get the AUDIO token count from a Gemini modality breakdown, if reported.
|
|
176
|
+
*
|
|
177
|
+
* Duck-typed (`entry.modality` / `entry.tokenCount`) so this module doesn't
|
|
178
|
+
* depend on Google types. Gemini omits modalities with no tokens (and omits
|
|
179
|
+
* the list entirely when there is no breakdown), so absence means "not
|
|
180
|
+
* reported" rather than zero.
|
|
181
|
+
*
|
|
182
|
+
* @param details A modality breakdown from usage metadata, e.g. `promptTokensDetails`.
|
|
183
|
+
* @returns The AUDIO token count, or null if not reported.
|
|
184
|
+
*/
|
|
185
|
+
export declare function _geminiAudioModalityTokens(details: unknown): number | null;
|
|
186
|
+
/**
|
|
187
|
+
* Trace Gemini Live service methods with operation-specific attributes.
|
|
188
|
+
*
|
|
189
|
+
* This decorator automatically captures relevant information based on the operation type:
|
|
190
|
+
*
|
|
191
|
+
* - llm_setup: Configuration, tools definitions, and system instructions
|
|
192
|
+
* - llm_tool_call: Function call information
|
|
193
|
+
* - llm_tool_result: Function execution results
|
|
194
|
+
* - llm_response: Complete LLM response with usage and output
|
|
195
|
+
*
|
|
196
|
+
* @param operation The operation name (matches the event type being handled).
|
|
197
|
+
* @returns A decorator that wraps the method with Gemini Live specific tracing.
|
|
198
|
+
*/
|
|
199
|
+
export declare function tracedGeminiLive(operation: string): TracedMethodDecorator;
|
|
200
|
+
/**
|
|
201
|
+
* Trace OpenAI Realtime service methods with operation-specific attributes.
|
|
202
|
+
*
|
|
203
|
+
* This decorator automatically captures relevant information based on the operation type:
|
|
204
|
+
*
|
|
205
|
+
* - llm_setup: Session configuration and tools
|
|
206
|
+
* - llm_request: Context and input messages
|
|
207
|
+
* - llm_response: Usage metadata, output, and function calls
|
|
208
|
+
*
|
|
209
|
+
* @param operation The operation name (matches the event type being handled).
|
|
210
|
+
* @returns A decorator that wraps the method with OpenAI Realtime specific tracing.
|
|
211
|
+
*/
|
|
212
|
+
export declare function tracedOpenaiRealtime(operation: string): TracedMethodDecorator;
|
|
213
|
+
export {};
|
|
214
|
+
//# sourceMappingURL=service_decorators.d.ts.map
|