@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,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/workers/__init__.py
|
|
6
|
+
// Upstream's `__init__.py` is empty: import the package's modules directly.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend LLM worker for two-tier voice agents.
|
|
3
|
+
*
|
|
4
|
+
* A frontend holds the conversation and hands off requests that need tools or
|
|
5
|
+
* careful reasoning. What the frontend is does not matter to this contract: a
|
|
6
|
+
* speech-to-speech model delegating on its own, or a pipeline calling a tool.
|
|
7
|
+
* A `BackendLLMWorker` runs any Pipecat LLM service, with its own context and
|
|
8
|
+
* multi-step tool calling, to do that work.
|
|
9
|
+
*
|
|
10
|
+
* The frontend and the backend exchange messages. A frontend *attaches* to the
|
|
11
|
+
* worker once, for as long as it lives, and from then on hears everything the
|
|
12
|
+
* backend produces as a stream: each of its model's turns and reasoning
|
|
13
|
+
* summaries as a `BackendOutput`, each phase of the function calls it makes as
|
|
14
|
+
* a `BackendToolCall`, and when it has run out of things to do, that it is
|
|
15
|
+
* idle. Requests go the other way as messages appended to the backend's
|
|
16
|
+
* conversation, each answered at once; a message that arrives while the
|
|
17
|
+
* backend is working joins that work, and the backend's model sorts out what
|
|
18
|
+
* it means. `_BackendSession` is the caller side of that contract.
|
|
19
|
+
*
|
|
20
|
+
* A request is text, so how a frontend words one is its own business.
|
|
21
|
+
* `_renderTranscriptRequest` renders the conversation as a labelled
|
|
22
|
+
* transcript, which is what a frontend hands over when its model signals a
|
|
23
|
+
* handoff without wording a request; a frontend whose model does word one
|
|
24
|
+
* sends that instead. `OpenAILiveLLMService`'s client delegation and
|
|
25
|
+
* `LLMWithBackend` both drive the worker this way.
|
|
26
|
+
*
|
|
27
|
+
* Porting notes:
|
|
28
|
+
* - DIVERGENCE: upstream overrides `PipelineWorker.capabilities` with a plain
|
|
29
|
+
* dict. TypeScript does not allow an override of a different type, so the
|
|
30
|
+
* backend's capabilities are exposed as `backendCapabilities`, and
|
|
31
|
+
* `PipelineWorker.capabilities` keeps its meaning.
|
|
32
|
+
* - `_BackendSession`'s `async with` is `enter()` / `exit()` (or `run(fn)`),
|
|
33
|
+
* and its `async for` is `for await`.
|
|
34
|
+
*/
|
|
35
|
+
import { Event } from "@pipedog/asyncio";
|
|
36
|
+
import type { BusJobCancelMessage, BusJobRequestMessage } from "../../bus/messages.ts";
|
|
37
|
+
import { type ErrorFrame, type Frame } from "../../frames/frames.ts";
|
|
38
|
+
import { type JobGroup, JobParams } from "../../pipeline/job_context.ts";
|
|
39
|
+
import { type LLMContext, type LLMContextMessage } from "../../processors/aggregators/llm_context.ts";
|
|
40
|
+
import { type AssistantThoughtMessage, type AssistantTurnStoppedMessage, type LLMAssistantAggregatorParams, LLMUserAggregatorParams } from "../../processors/aggregators/llm_response_universal.ts";
|
|
41
|
+
import type { LLMService } from "../../services/llm_service.ts";
|
|
42
|
+
import type { BaseWorker } from "../base_worker.ts";
|
|
43
|
+
import { LLMContextWorker } from "./llm_context_worker.ts";
|
|
44
|
+
type Dict = Record<string, unknown>;
|
|
45
|
+
/** Name of the job that attaches a frontend to a `BackendLLMWorker`. */
|
|
46
|
+
export declare const ATTACH_JOB_NAME = "attach";
|
|
47
|
+
/** Name of the job that puts a message to an attached `BackendLLMWorker`. */
|
|
48
|
+
export declare const MESSAGE_JOB_NAME = "message";
|
|
49
|
+
/** The `type` of a job update that carries a `BackendOutput`. */
|
|
50
|
+
export declare const OUTPUT_UPDATE_TYPE = "output";
|
|
51
|
+
/** The `type` of a job update that carries a `BackendToolCall`. */
|
|
52
|
+
export declare const TOOL_CALL_UPDATE_TYPE = "tool_call";
|
|
53
|
+
/** The `type` of the update that opens an `attach` job's stream. */
|
|
54
|
+
export declare const ATTACHED_UPDATE_TYPE = "attached";
|
|
55
|
+
/** The `type` of the update that says the backend has nothing left to do. */
|
|
56
|
+
export declare const IDLE_UPDATE_TYPE = "idle";
|
|
57
|
+
/** The `type` of the update that says the backend could not go on. */
|
|
58
|
+
export declare const ERROR_UPDATE_TYPE = "error";
|
|
59
|
+
/**
|
|
60
|
+
* The mark the backend's model puts at the start of a message it wants the
|
|
61
|
+
* user told. The message is sent with `prefersSpoken: true`, mark stripped; a
|
|
62
|
+
* message without it is a note (`prefersSpoken: false`). Strict prompt,
|
|
63
|
+
* flexible parsing: the model is told to put the mark first, but sometimes
|
|
64
|
+
* writes a note paragraph and then a marked one, so a mark at the start of a
|
|
65
|
+
* later line splits the message, a note before it and a spoken message from it
|
|
66
|
+
* on, rather than losing the result. The turn-completion markers are read the
|
|
67
|
+
* same way (`user_turn_completion_mixin`).
|
|
68
|
+
*/
|
|
69
|
+
export declare const SPOKEN_MARK = ">>";
|
|
70
|
+
/**
|
|
71
|
+
* How the backend's model works with the assistant, appended to its system
|
|
72
|
+
* instruction: who it is, which of what it writes the user hears, and how it
|
|
73
|
+
* takes requests. The backend's own system instruction says what it does;
|
|
74
|
+
* this says how what it writes reaches the user.
|
|
75
|
+
* `new BackendLLMWorker({ pairingInstruction })` replaces it.
|
|
76
|
+
*/
|
|
77
|
+
export declare const BACKEND_PAIRING_INSTRUCTION: string;
|
|
78
|
+
export interface BackendOutputOptions {
|
|
79
|
+
/** The text the backend produced. */
|
|
80
|
+
text: string;
|
|
81
|
+
/** Whether this is a reasoning summary rather than a response. Defaults to false. */
|
|
82
|
+
isThought?: boolean;
|
|
83
|
+
/** Whether the backend would like the user to hear this. Defaults to true. */
|
|
84
|
+
prefersSpoken?: boolean;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* One piece of output from a backend, on its way to the frontend.
|
|
88
|
+
*
|
|
89
|
+
* - `text`: the text the backend produced.
|
|
90
|
+
* - `isThought`: whether this is a reasoning summary rather than a response.
|
|
91
|
+
* - `prefersSpoken`: whether the backend would like the user to hear this.
|
|
92
|
+
* This is just a hint to the frontend: it may choose to follow it or not.
|
|
93
|
+
* `OpenAILiveLLMService`'s live model takes it into consideration, but
|
|
94
|
+
* ultimately decides what to speak (or not) based on the conversation.
|
|
95
|
+
*/
|
|
96
|
+
export declare class BackendOutput {
|
|
97
|
+
text: string;
|
|
98
|
+
isThought: boolean;
|
|
99
|
+
prefersSpoken: boolean;
|
|
100
|
+
constructor(options: BackendOutputOptions);
|
|
101
|
+
/**
|
|
102
|
+
* Render the output as a job update payload.
|
|
103
|
+
*
|
|
104
|
+
* @returns The payload.
|
|
105
|
+
*/
|
|
106
|
+
toPayload(): Dict;
|
|
107
|
+
/**
|
|
108
|
+
* Rebuild an output from a job update payload.
|
|
109
|
+
*
|
|
110
|
+
* @param payload The update payload.
|
|
111
|
+
* @returns The output.
|
|
112
|
+
*/
|
|
113
|
+
static fromPayload(payload: Dict): BackendOutput;
|
|
114
|
+
}
|
|
115
|
+
/** The phases of a `BackendToolCall`. */
|
|
116
|
+
export type BackendToolCallPhase = "started" | "in_progress" | "result" | "cancelled";
|
|
117
|
+
export interface BackendToolCallOptions {
|
|
118
|
+
/** `started`, `in_progress`, `result` or `cancelled`. */
|
|
119
|
+
phase: BackendToolCallPhase;
|
|
120
|
+
/** Name of the function called. */
|
|
121
|
+
functionName: string;
|
|
122
|
+
/** Unique identifier of the call. */
|
|
123
|
+
toolCallId: string;
|
|
124
|
+
/** Arguments passed to the function, once known. */
|
|
125
|
+
arguments?: Record<string, unknown> | null;
|
|
126
|
+
/** The result, for the `result` phase. */
|
|
127
|
+
result?: unknown;
|
|
128
|
+
/**
|
|
129
|
+
* For the `result` phase, whether the result completes the call rather
|
|
130
|
+
* than being one of a stream of intermediate results. Defaults to true.
|
|
131
|
+
*/
|
|
132
|
+
isFinal?: boolean;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* One phase of a function call the backend made while working, on its way to
|
|
136
|
+
* the frontend.
|
|
137
|
+
*
|
|
138
|
+
* The call ran in the backend's own pipeline; the frontend reports it to
|
|
139
|
+
* clients, as the `ExternalFunctionCall*Frame` `toFrame` builds, and does
|
|
140
|
+
* nothing else with it. The phases mirror the pipeline's own function-call
|
|
141
|
+
* frames.
|
|
142
|
+
*
|
|
143
|
+
* - `phase`: `started`, `in_progress`, `result` or `cancelled`.
|
|
144
|
+
* - `functionName`: name of the function called.
|
|
145
|
+
* - `toolCallId`: unique identifier of the call.
|
|
146
|
+
* - `arguments`: arguments passed to the function, once known.
|
|
147
|
+
* - `result`: the result, for the `result` phase.
|
|
148
|
+
* - `isFinal`: for the `result` phase, whether the result completes the call
|
|
149
|
+
* rather than being one of a stream of intermediate results.
|
|
150
|
+
*/
|
|
151
|
+
export declare class BackendToolCall {
|
|
152
|
+
phase: BackendToolCallPhase;
|
|
153
|
+
functionName: string;
|
|
154
|
+
toolCallId: string;
|
|
155
|
+
arguments: Record<string, unknown> | null;
|
|
156
|
+
result: unknown;
|
|
157
|
+
isFinal: boolean;
|
|
158
|
+
constructor(options: BackendToolCallOptions);
|
|
159
|
+
/**
|
|
160
|
+
* Render the call phase as a job update payload.
|
|
161
|
+
*
|
|
162
|
+
* @returns The payload.
|
|
163
|
+
*/
|
|
164
|
+
toPayload(): Dict;
|
|
165
|
+
/**
|
|
166
|
+
* Rebuild a call phase from a job update payload.
|
|
167
|
+
*
|
|
168
|
+
* @param payload The update payload.
|
|
169
|
+
* @returns The call phase.
|
|
170
|
+
*/
|
|
171
|
+
static fromPayload(payload: Dict): BackendToolCall;
|
|
172
|
+
/**
|
|
173
|
+
* Build the frame that reports this phase in the frontend's pipeline.
|
|
174
|
+
*
|
|
175
|
+
* @returns The frame for the phase.
|
|
176
|
+
*/
|
|
177
|
+
toFrame(): Frame;
|
|
178
|
+
}
|
|
179
|
+
/** The backend has nothing left to do: no run outstanding, no call in flight. */
|
|
180
|
+
export declare class BackendIdle {
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* The backend could not go on with what it was doing.
|
|
184
|
+
*
|
|
185
|
+
* - `error`: what went wrong.
|
|
186
|
+
*/
|
|
187
|
+
export declare class BackendError {
|
|
188
|
+
error: string;
|
|
189
|
+
constructor(options: {
|
|
190
|
+
error: string;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/** What a `_BackendSession` yields. */
|
|
194
|
+
export type BackendEvent = BackendOutput | BackendToolCall | BackendIdle | BackendError;
|
|
195
|
+
/**
|
|
196
|
+
* Shapes one of the backend model's outputs before it is sent.
|
|
197
|
+
*
|
|
198
|
+
* Returns the output to send in place of `output`, or null to send nothing.
|
|
199
|
+
*/
|
|
200
|
+
export type BackendOutputTransform = (output: BackendOutput) => Promise<BackendOutput | null>;
|
|
201
|
+
/** What `_renderTranscriptRequest` tells the backend to do with a transcript. */
|
|
202
|
+
export declare const TRANSCRIPT_REQUEST_INSTRUCTION: string;
|
|
203
|
+
/**
|
|
204
|
+
* Appended to a request the frontend worded itself, so the backend tells the
|
|
205
|
+
* user its result on its own rather than with whatever else it is doing.
|
|
206
|
+
*/
|
|
207
|
+
export declare const EXPLICIT_REQUEST_INSTRUCTION: string;
|
|
208
|
+
/**
|
|
209
|
+
* Render a request the frontend worded itself, with what the backend should do
|
|
210
|
+
* with it after.
|
|
211
|
+
*
|
|
212
|
+
* @param request The request, as the frontend's model worded it.
|
|
213
|
+
* @param options.instruction What the backend should do with the request,
|
|
214
|
+
* placed after it.
|
|
215
|
+
* @returns The rendered request.
|
|
216
|
+
*/
|
|
217
|
+
export declare function _renderExplicitRequest(request: string, options?: {
|
|
218
|
+
instruction?: string;
|
|
219
|
+
}): string;
|
|
220
|
+
/**
|
|
221
|
+
* Split a message the model wrote into its note and its spoken part, by the
|
|
222
|
+
* mark.
|
|
223
|
+
*
|
|
224
|
+
* @param text The message, stripped.
|
|
225
|
+
* @returns The note (what precedes the first line that begins with the mark,
|
|
226
|
+
* or the whole message when no line does) and the spoken part (what follows
|
|
227
|
+
* the mark, with any later mark removed, or empty), each stripped.
|
|
228
|
+
*/
|
|
229
|
+
export declare function _splitSpoken(text: string): [string, string];
|
|
230
|
+
/**
|
|
231
|
+
* Render a conversation as a labelled transcript for the backend to act on.
|
|
232
|
+
*
|
|
233
|
+
* Flattening the conversation into one message keeps the two conversations
|
|
234
|
+
* apart: the backend's context holds only what the backend itself said as
|
|
235
|
+
* assistant messages, so it never mistakes the frontend's speech for its own.
|
|
236
|
+
*
|
|
237
|
+
* Only user and assistant text crosses today: tool calls, tool results,
|
|
238
|
+
* images, other non-text content and messages in a service's own format are
|
|
239
|
+
* skipped, and say so at debug level. Carrying more is a question of how to
|
|
240
|
+
* render it.
|
|
241
|
+
*
|
|
242
|
+
* @param conversation The conversation the user is having with the frontend,
|
|
243
|
+
* as standard context messages.
|
|
244
|
+
* @param options.instruction What the backend should do with the transcript,
|
|
245
|
+
* placed after it.
|
|
246
|
+
* @param options.first Whether this is the backend's first request in the
|
|
247
|
+
* conversation. It decides how the transcript is introduced: as the
|
|
248
|
+
* conversation so far, or as what has been said since the previous
|
|
249
|
+
* delegation. Defaults to true.
|
|
250
|
+
* @returns The rendered request.
|
|
251
|
+
*/
|
|
252
|
+
export declare function _renderTranscriptRequest(conversation: readonly LLMContextMessage[], options?: {
|
|
253
|
+
instruction?: string;
|
|
254
|
+
first?: boolean;
|
|
255
|
+
}): string;
|
|
256
|
+
/** The frontend attached to the worker, for as long as its `attach` job lives. */
|
|
257
|
+
declare class _AttachedFrontend {
|
|
258
|
+
jobId: string;
|
|
259
|
+
detached: Event;
|
|
260
|
+
constructor(options: {
|
|
261
|
+
jobId: string;
|
|
262
|
+
detached?: Event;
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
export interface BackendLLMWorkerOptions {
|
|
266
|
+
/** The backend LLM service. */
|
|
267
|
+
llm: LLMService;
|
|
268
|
+
/**
|
|
269
|
+
* The backend's context, typically carrying its tools. A fresh empty
|
|
270
|
+
* context when omitted.
|
|
271
|
+
*/
|
|
272
|
+
context?: LLMContext | null;
|
|
273
|
+
/**
|
|
274
|
+
* Unique name for this worker on the bus. Auto-generated when omitted; give
|
|
275
|
+
* one when the backend runs in another process, where the frontend
|
|
276
|
+
* addresses it by name.
|
|
277
|
+
*/
|
|
278
|
+
name?: string | null;
|
|
279
|
+
/**
|
|
280
|
+
* Called with each `BackendOutput` the model produces before it is sent, to
|
|
281
|
+
* adjust its text or whether the user may hear it, or to return null and
|
|
282
|
+
* send nothing. Outputs the app sends itself are not passed through it
|
|
283
|
+
* unless the call asks.
|
|
284
|
+
*/
|
|
285
|
+
transformOutput?: BackendOutputTransform | null;
|
|
286
|
+
/**
|
|
287
|
+
* How the model works with the assistant, appended to the LLM's system
|
|
288
|
+
* instruction: `BACKEND_PAIRING_INSTRUCTION` unless given. One of its own
|
|
289
|
+
* has to say what that one says: that the assistant sends it requests, that
|
|
290
|
+
* the user hears what it marks with `SPOKEN_MARK` and nothing else, and how
|
|
291
|
+
* to take requests that arrive while it works.
|
|
292
|
+
*/
|
|
293
|
+
pairingInstruction?: string;
|
|
294
|
+
/**
|
|
295
|
+
* Optional parameters for the user aggregator. Defaults to external turn
|
|
296
|
+
* strategies: the backend has no audio, so the default VAD and
|
|
297
|
+
* turn-analysis strategies (and the model the latter loads) have nothing to
|
|
298
|
+
* do here.
|
|
299
|
+
*/
|
|
300
|
+
userParams?: LLMUserAggregatorParams | null;
|
|
301
|
+
/** Optional parameters for the assistant aggregator. */
|
|
302
|
+
assistantParams?: LLMAssistantAggregatorParams | null;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* A worker that runs an LLM service as the backend a frontend delegates to.
|
|
306
|
+
*
|
|
307
|
+
* The worker owns the backend's conversation: an `LLMContext` plus the
|
|
308
|
+
* aggregator pair, so multi-step tool calling works as it does in any
|
|
309
|
+
* pipeline. A frontend attaches once, for as long as it lives, and from then
|
|
310
|
+
* on hears everything the backend produces; requests it sends are appended to
|
|
311
|
+
* that conversation as user messages and run the model. `_BackendSession` is
|
|
312
|
+
* the caller side.
|
|
313
|
+
*
|
|
314
|
+
* The worker's LLM does the reasoning its frontend hands off, so it runs at
|
|
315
|
+
* its provider's default thinking unless its settings configure thinking (see
|
|
316
|
+
* `LLMSettings.useProviderThinkingDefault`).
|
|
317
|
+
*
|
|
318
|
+
* Job contract:
|
|
319
|
+
*
|
|
320
|
+
* - `attach`: no payload. Its first update is
|
|
321
|
+
* `{"type": "attached", "capabilities": {...}}`; after that, a
|
|
322
|
+
* `BackendOutput` payload for each of the model's turns and reasoning
|
|
323
|
+
* summaries and each output the app sends with `sendOutput`, a
|
|
324
|
+
* `BackendToolCall` payload for each phase of each function call the
|
|
325
|
+
* backend makes, `{"type": "idle"}` when the backend has nothing left to
|
|
326
|
+
* do, and `{"type": "error", "error": ...}` when it could not go on. The job
|
|
327
|
+
* lives until the requester cancels it, which stops the backend's work.
|
|
328
|
+
* Refused while another frontend is attached.
|
|
329
|
+
* - `message`: `{"request": str}`, appended as a user message; responds at
|
|
330
|
+
* once with `{"backend": "idle" | "working"}`, what the backend was doing
|
|
331
|
+
* when the message arrived. A message that arrives mid-run is taken up
|
|
332
|
+
* after the current step, with everything that came before it in view.
|
|
333
|
+
*
|
|
334
|
+
* The model decides what the user hears: a message it begins with
|
|
335
|
+
* `SPOKEN_MARK` asks to be spoken, whether or not the turn also calls tools,
|
|
336
|
+
* and the mark is stripped; anything else it writes, reasoning summaries
|
|
337
|
+
* included, is a note that the frontend keeps but does not speak. A mark at
|
|
338
|
+
* the start of a later line splits the message into a note and a spoken part,
|
|
339
|
+
* since the model sometimes writes it that way. The backend's own system
|
|
340
|
+
* instruction says what it does and, in plain words, what the user should be
|
|
341
|
+
* told; the pairing instruction the worker appends
|
|
342
|
+
* (`BACKEND_PAIRING_INSTRUCTION`, or the `pairingInstruction` given) is the
|
|
343
|
+
* only place the mark is named. `transformOutput` can change the flag, or the
|
|
344
|
+
* text, or drop the output.
|
|
345
|
+
*
|
|
346
|
+
* @example
|
|
347
|
+
* const backend = new BackendLLMWorker({
|
|
348
|
+
* llm: new AnthropicLLMService({ apiKey: ... }),
|
|
349
|
+
* context: new LLMContext({
|
|
350
|
+
* messages: [{ role: "system", content: BACKEND_INSTRUCTIONS }],
|
|
351
|
+
* tools: [getWeather],
|
|
352
|
+
* }),
|
|
353
|
+
* });
|
|
354
|
+
*/
|
|
355
|
+
export declare class BackendLLMWorker extends LLMContextWorker {
|
|
356
|
+
protected _attached: _AttachedFrontend | null;
|
|
357
|
+
protected _transformOutput: BackendOutputTransform | null;
|
|
358
|
+
protected _requestsPending: number;
|
|
359
|
+
protected _runsRequested: number;
|
|
360
|
+
protected _runsCompleted: number;
|
|
361
|
+
protected _idleAnnounced: boolean;
|
|
362
|
+
protected _requestAwaitingRun: number | null;
|
|
363
|
+
/**
|
|
364
|
+
* Initialize the backend worker.
|
|
365
|
+
*
|
|
366
|
+
* @throws Error If the LLM service declines the role.
|
|
367
|
+
*/
|
|
368
|
+
constructor(options: BackendLLMWorkerOptions);
|
|
369
|
+
/** Whether the backend has work in hand: a request or run outstanding, or a call in flight. */
|
|
370
|
+
get working(): boolean;
|
|
371
|
+
/** Whether a run is in progress or queued for the model. */
|
|
372
|
+
protected get _modelBusy(): boolean;
|
|
373
|
+
/**
|
|
374
|
+
* What an attached frontend can count on; all of it, for a backend that is
|
|
375
|
+
* an LLM.
|
|
376
|
+
*
|
|
377
|
+
* DIVERGENCE: `capabilities` upstream (see the module notes).
|
|
378
|
+
*/
|
|
379
|
+
get backendCapabilities(): Record<string, boolean>;
|
|
380
|
+
/**
|
|
381
|
+
* Attach a frontend: stream everything the backend produces until the job
|
|
382
|
+
* is cancelled.
|
|
383
|
+
*
|
|
384
|
+
* @param message The job request.
|
|
385
|
+
*/
|
|
386
|
+
attachFrontend(message: BusJobRequestMessage): Promise<void>;
|
|
387
|
+
/**
|
|
388
|
+
* Put a message to the backend, and say what it was doing when it arrived.
|
|
389
|
+
*
|
|
390
|
+
* @param message The job request; see the class docs for the payload.
|
|
391
|
+
*/
|
|
392
|
+
handleMessage(message: BusJobRequestMessage): Promise<void>;
|
|
393
|
+
protected _refuse(jobId: string, reason: string): Promise<void>;
|
|
394
|
+
/**
|
|
395
|
+
* Append a request to the backend's conversation, and run the model on it
|
|
396
|
+
* if it is idle.
|
|
397
|
+
*
|
|
398
|
+
* While a run is in progress or queued, or a synchronous call is in flight,
|
|
399
|
+
* the request asks for no run of its own: the run that follows the current
|
|
400
|
+
* step takes it up (see `_requestAwaitingRun`). A run while a synchronous
|
|
401
|
+
* call is in flight would see the call without its result, which the
|
|
402
|
+
* adapter cannot send as it is.
|
|
403
|
+
*/
|
|
404
|
+
protected _queueRequest(request: string): Promise<void>;
|
|
405
|
+
/** Whether a synchronous call is in flight, whose result will bring the next run. */
|
|
406
|
+
protected get _synchronousCallInFlight(): boolean;
|
|
407
|
+
/** Run the model on a request that was waiting for the current step, if nothing else will. */
|
|
408
|
+
protected _runAwaitingRequest(): Promise<void>;
|
|
409
|
+
/**
|
|
410
|
+
* Interrupt the pipeline and cancel every function call in flight.
|
|
411
|
+
*
|
|
412
|
+
* An interruption stops the run in progress and the calls that opt into
|
|
413
|
+
* cancellation on interruption; the async ones, which an interruption
|
|
414
|
+
* leaves running by design, are cancelled on their own. A request not yet
|
|
415
|
+
* taken up is dropped with the interruption, and one held for the current
|
|
416
|
+
* step is let go of, so that neither runs the model on work the frontend
|
|
417
|
+
* has abandoned: the cancellations that follow would otherwise run a held
|
|
418
|
+
* request as they settle.
|
|
419
|
+
*/
|
|
420
|
+
protected _stopWork(reason: string): Promise<void>;
|
|
421
|
+
/**
|
|
422
|
+
* Send one output of the app's own to the frontend.
|
|
423
|
+
*
|
|
424
|
+
* It reaches the frontend as the model's outputs do, but as given unless
|
|
425
|
+
* asked: `transformOutput` is not applied to it by default. With no
|
|
426
|
+
* frontend attached there is nowhere for it to go, and it is dropped with a
|
|
427
|
+
* warning.
|
|
428
|
+
*
|
|
429
|
+
* @param output The output.
|
|
430
|
+
* @param options.applyTransformOutput Whether to run the output through
|
|
431
|
+
* `transformOutput` as the model's outputs are. Defaults to false.
|
|
432
|
+
*/
|
|
433
|
+
sendOutput(output: BackendOutput, options?: {
|
|
434
|
+
applyTransformOutput?: boolean;
|
|
435
|
+
}): Promise<void>;
|
|
436
|
+
protected _onAssistantTurnStopped(message: AssistantTurnStoppedMessage): Promise<void>;
|
|
437
|
+
/** Send the idle update once the backend has nothing left to do, once per lull. */
|
|
438
|
+
protected _announceIdleIfDone(): Promise<void>;
|
|
439
|
+
/** Relay a phase of one of the backend's own function calls as a job update. */
|
|
440
|
+
protected _onFunctionCallFrame(frame: Frame): Promise<void>;
|
|
441
|
+
/**
|
|
442
|
+
* Stop the model: the frontend that was attached is gone.
|
|
443
|
+
*
|
|
444
|
+
* The `attach` job's handler is already cancelled by the time this runs,
|
|
445
|
+
* and has let go of the attachment; the work in flight stops too, so none
|
|
446
|
+
* of it is reported after the frontend has let go of it.
|
|
447
|
+
*/
|
|
448
|
+
onJobCancelled(message: BusJobCancelMessage): Promise<void>;
|
|
449
|
+
/**
|
|
450
|
+
* Tell the frontend the backend cannot go on with what it was doing.
|
|
451
|
+
*
|
|
452
|
+
* A tool handler that raises is the exception. The LLM service reports that
|
|
453
|
+
* as `ErrorCategory.APPLICATION`, settles the call with an error result and
|
|
454
|
+
* carries on, so the model still has something coming.
|
|
455
|
+
*/
|
|
456
|
+
protected _onPipelineError(frame: ErrorFrame): Promise<void>;
|
|
457
|
+
protected _onAssistantThought(message: AssistantThoughtMessage): Promise<void>;
|
|
458
|
+
/** Run an output through `transformOutput`, if there is one. */
|
|
459
|
+
protected _shape(output: BackendOutput): Promise<BackendOutput | null>;
|
|
460
|
+
/** Send one output as a job update, after any configured transform. */
|
|
461
|
+
protected _emit(output: BackendOutput, options?: {
|
|
462
|
+
applyTransformOutput?: boolean;
|
|
463
|
+
}): Promise<void>;
|
|
464
|
+
/** Send a job update to the attached frontend. */
|
|
465
|
+
protected _sendUpdate(payload: Dict): Promise<void>;
|
|
466
|
+
}
|
|
467
|
+
/** Turn an `attach` stream update into the event it carries, if it carries one. */
|
|
468
|
+
export declare function _eventFromPayload(payload: Dict): BackendEvent | null;
|
|
469
|
+
/**
|
|
470
|
+
* A frontend's side of the attached contract: one worker, attached for the
|
|
471
|
+
* session's life.
|
|
472
|
+
*
|
|
473
|
+
* Opening the session sends the `attach` job; closing it cancels the job,
|
|
474
|
+
* which stops the backend's work. In between, the session is an async
|
|
475
|
+
* iterator over what the backend produces, and `send` puts messages to it.
|
|
476
|
+
* The iteration ends when the backend goes away, with a `JobError` if it
|
|
477
|
+
* failed.
|
|
478
|
+
*
|
|
479
|
+
* @example
|
|
480
|
+
* const session = new _BackendSession(worker, "backend");
|
|
481
|
+
* await session.run(async (session) => {
|
|
482
|
+
* await session.send(request);
|
|
483
|
+
* for await (const event of session) {
|
|
484
|
+
* ...
|
|
485
|
+
* }
|
|
486
|
+
* });
|
|
487
|
+
*/
|
|
488
|
+
export declare class _BackendSession implements AsyncIterableIterator<BackendEvent> {
|
|
489
|
+
protected _worker: BaseWorker;
|
|
490
|
+
protected _backendName: string;
|
|
491
|
+
protected _timeoutSecs: number | null;
|
|
492
|
+
protected _group: JobGroup | null;
|
|
493
|
+
protected _capabilities: Record<string, boolean>;
|
|
494
|
+
/**
|
|
495
|
+
* Whether the stream ended because this side let go of the backend (the
|
|
496
|
+
* session was closed, or the attaching worker stopped), as opposed to the
|
|
497
|
+
* backend going away.
|
|
498
|
+
*/
|
|
499
|
+
detached: boolean;
|
|
500
|
+
/**
|
|
501
|
+
* Initialize the session.
|
|
502
|
+
*
|
|
503
|
+
* @param worker The worker attaching (for a pipeline processor,
|
|
504
|
+
* `this.pipelineWorker`).
|
|
505
|
+
* @param backendName Name of the backend worker.
|
|
506
|
+
* @param options.timeoutSecs How long a message may take to be
|
|
507
|
+
* acknowledged, including the wait for the backend to become ready. The
|
|
508
|
+
* attachment itself has no timeout. Defaults to 30.
|
|
509
|
+
*/
|
|
510
|
+
constructor(worker: BaseWorker, backendName: string, options?: {
|
|
511
|
+
timeoutSecs?: number | null;
|
|
512
|
+
});
|
|
513
|
+
/** Name of the backend worker. */
|
|
514
|
+
get backendName(): string;
|
|
515
|
+
/** What the backend said it can do, once its stream has opened. */
|
|
516
|
+
get capabilities(): Record<string, boolean>;
|
|
517
|
+
/** Open the session (`__aenter__`): send the `attach` job. */
|
|
518
|
+
enter(): Promise<this>;
|
|
519
|
+
/** Leave the session (`__aexit__`): close it. */
|
|
520
|
+
exit(_error?: unknown): Promise<void>;
|
|
521
|
+
/**
|
|
522
|
+
* Run `fn` inside the session, as `async with` does: open, run the block,
|
|
523
|
+
* then close (whether or not the block threw).
|
|
524
|
+
*/
|
|
525
|
+
run<R>(fn: (session: this) => Promise<R> | R): Promise<R>;
|
|
526
|
+
/** Detach: cancel the `attach` job, which stops the backend's work. */
|
|
527
|
+
close(): Promise<void>;
|
|
528
|
+
[Symbol.asyncIterator](): this;
|
|
529
|
+
/** The next event from the backend (`__anext__`). */
|
|
530
|
+
next(): Promise<IteratorResult<BackendEvent>>;
|
|
531
|
+
/**
|
|
532
|
+
* Put a message to the backend.
|
|
533
|
+
*
|
|
534
|
+
* @param request The text to append to the backend's conversation.
|
|
535
|
+
* @returns What the backend was doing when the message arrived: `"idle"` or
|
|
536
|
+
* `"working"`.
|
|
537
|
+
* @throws JobError If the backend refused the message or did not answer in
|
|
538
|
+
* time.
|
|
539
|
+
*/
|
|
540
|
+
send(request: string): Promise<string>;
|
|
541
|
+
/**
|
|
542
|
+
* Run one short job on the backend and return its response.
|
|
543
|
+
*
|
|
544
|
+
* @throws JobError If the backend refused, naming its reason, or did not
|
|
545
|
+
* answer in time.
|
|
546
|
+
*/
|
|
547
|
+
protected _ask(params: JobParams): Promise<Dict>;
|
|
548
|
+
}
|
|
549
|
+
/** The job error with the backend's own reason for it, when its response gave one. */
|
|
550
|
+
export declare function _withReason(error: string, response: Dict | null | undefined): string;
|
|
551
|
+
export {};
|
|
552
|
+
//# sourceMappingURL=backend_llm_worker.d.ts.map
|