@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,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Direct function wrapper utilities for LLM function calling.
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for wrapping "direct" functions that handle LLM function
|
|
5
|
+
* calls. Direct functions have their metadata automatically extracted from
|
|
6
|
+
* function signatures (and, in TypeScript, metadata attached to the function),
|
|
7
|
+
* allowing them to be used without accompanying configurations (as
|
|
8
|
+
* FunctionSchemas or in provider-specific formats).
|
|
9
|
+
*
|
|
10
|
+
* DIVERGENCE: JavaScript has no runtime type hints or docstrings. Parameter
|
|
11
|
+
* names and which ones are required (no default value) are read from the
|
|
12
|
+
* function's source; the description and parameter types come from optional
|
|
13
|
+
* metadata attached to the function (`DirectFunctionMetadata`). Parameters
|
|
14
|
+
* without metadata get an empty (any-type) JSON schema. Minified functions
|
|
15
|
+
* lose their parameter names, so direct functions must ship unminified.
|
|
16
|
+
*/
|
|
17
|
+
import type { FunctionCallParams } from "../../services/llm_service.ts";
|
|
18
|
+
import { FunctionSchema } from "./function_schema.ts";
|
|
19
|
+
/**
|
|
20
|
+
* Metadata a direct function may carry in place of Python's type hints and
|
|
21
|
+
* docstring.
|
|
22
|
+
*/
|
|
23
|
+
export interface DirectFunctionMetadata {
|
|
24
|
+
/** The function description (Python: the docstring's description). */
|
|
25
|
+
description?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Per-parameter type hints: a JSON schema object, a JS constructor
|
|
28
|
+
* (`String`, `Number`, `Boolean`, `Object`, `Array`, `BigInt` for an
|
|
29
|
+
* integer), `null`, or an array of those (a union).
|
|
30
|
+
*/
|
|
31
|
+
parameters?: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A "direct" function that handles LLM function calls.
|
|
35
|
+
*
|
|
36
|
+
* A direct function is an async function whose first parameter is `params`
|
|
37
|
+
* (a `FunctionCallParams`), followed by the tool's arguments. Its metadata
|
|
38
|
+
* (name, description, and parameter schemas) is extracted automatically, so
|
|
39
|
+
* it can be used without an accompanying `FunctionSchema` or
|
|
40
|
+
* provider-specific configuration.
|
|
41
|
+
*
|
|
42
|
+
* Typed permissively so that concrete function signatures type-check when
|
|
43
|
+
* passed to public APIs. The precise contract — async, with a first parameter
|
|
44
|
+
* named `params` — is validated at runtime by
|
|
45
|
+
* `DirectFunctionWrapper.validateFunction`.
|
|
46
|
+
*/
|
|
47
|
+
export type DirectFunction = ((params: FunctionCallParams, ...args: any[]) => Promise<unknown>) & DirectFunctionMetadata;
|
|
48
|
+
type AnyFunction = ((...args: any[]) => unknown) & DirectFunctionMetadata;
|
|
49
|
+
/**
|
|
50
|
+
* Base class for a wrapper around a DirectFunction.
|
|
51
|
+
*
|
|
52
|
+
* Provides functionality to:
|
|
53
|
+
*
|
|
54
|
+
* - extract metadata from the function signature and attached metadata
|
|
55
|
+
* - use that metadata to generate a corresponding FunctionSchema
|
|
56
|
+
*/
|
|
57
|
+
export declare class BaseDirectFunctionWrapper {
|
|
58
|
+
function: AnyFunction;
|
|
59
|
+
name: string;
|
|
60
|
+
description: string;
|
|
61
|
+
properties: Record<string, Record<string, unknown>>;
|
|
62
|
+
required: string[];
|
|
63
|
+
/**
|
|
64
|
+
* Initialize the direct function wrapper.
|
|
65
|
+
*
|
|
66
|
+
* @param fn The function to wrap and extract metadata from.
|
|
67
|
+
*/
|
|
68
|
+
constructor(fn: AnyFunction);
|
|
69
|
+
/**
|
|
70
|
+
* Get the name of the special first function parameter.
|
|
71
|
+
*
|
|
72
|
+
* The special first parameter is ignored by metadata extraction as it's not
|
|
73
|
+
* relevant to the LLM (e.g., 'params' for FunctionCallParams).
|
|
74
|
+
*
|
|
75
|
+
* @returns The name of the special first parameter.
|
|
76
|
+
*/
|
|
77
|
+
static specialFirstParamName(): string;
|
|
78
|
+
/**
|
|
79
|
+
* Validate that the function meets direct function requirements.
|
|
80
|
+
*
|
|
81
|
+
* @param fn The function to validate.
|
|
82
|
+
* @throws Error if function doesn't meet requirements (not async, missing
|
|
83
|
+
* parameters, incorrect first parameter name).
|
|
84
|
+
*/
|
|
85
|
+
static validateFunction(fn: AnyFunction): void;
|
|
86
|
+
/**
|
|
87
|
+
* Convert the wrapped function to a FunctionSchema.
|
|
88
|
+
*
|
|
89
|
+
* @returns A FunctionSchema instance with extracted metadata.
|
|
90
|
+
*/
|
|
91
|
+
toFunctionSchema(): FunctionSchema;
|
|
92
|
+
/** Initialize metadata from function signature and attached metadata. */
|
|
93
|
+
protected _initializeMetadata(): void;
|
|
94
|
+
/** Names of the parameters after the special first one, in order. */
|
|
95
|
+
protected _argumentNames(): string[];
|
|
96
|
+
/**
|
|
97
|
+
* Get function parameters as an object of JSON schemas and a list of
|
|
98
|
+
* required parameters.
|
|
99
|
+
*
|
|
100
|
+
* Ignore the first parameter, as it's expected to be the "special" one.
|
|
101
|
+
*
|
|
102
|
+
* @param func Function to get parameters from.
|
|
103
|
+
* @returns A tuple of an object mapping each function parameter to its JSON
|
|
104
|
+
* schema, and a list of required parameter names.
|
|
105
|
+
*/
|
|
106
|
+
protected _getParametersAsJsonschema(func: AnyFunction): [Record<string, Record<string, unknown>>, string[]];
|
|
107
|
+
/**
|
|
108
|
+
* Convert a type hint to a JSON Schema.
|
|
109
|
+
*
|
|
110
|
+
* @param typeHint A JSON schema, a JS constructor, `null`, or an array of
|
|
111
|
+
* those (a union).
|
|
112
|
+
* @returns An object representing the JSON Schema
|
|
113
|
+
*/
|
|
114
|
+
protected _typehintToJsonschema(typeHint: unknown): Record<string, unknown>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Wrapper around a DirectFunction for LLM function calling.
|
|
118
|
+
*
|
|
119
|
+
* This class:
|
|
120
|
+
*
|
|
121
|
+
* - Extracts metadata from the function signature and attached metadata
|
|
122
|
+
* - Generates a corresponding FunctionSchema
|
|
123
|
+
* - Helps with function invocation
|
|
124
|
+
*/
|
|
125
|
+
export declare class DirectFunctionWrapper extends BaseDirectFunctionWrapper {
|
|
126
|
+
function: DirectFunction;
|
|
127
|
+
/**
|
|
128
|
+
* Get the special first parameter name for direct functions.
|
|
129
|
+
*
|
|
130
|
+
* @returns The string "params" which is expected as the first parameter.
|
|
131
|
+
*/
|
|
132
|
+
static specialFirstParamName(): string;
|
|
133
|
+
/**
|
|
134
|
+
* Invoke the wrapped function with the provided arguments.
|
|
135
|
+
*
|
|
136
|
+
* Arguments are matched to the function's parameters by name, like
|
|
137
|
+
* Python's `function(params=params, **args)`.
|
|
138
|
+
*
|
|
139
|
+
* @param args Arguments to pass to the function.
|
|
140
|
+
* @param params Function call parameters from the LLM service.
|
|
141
|
+
* @returns The result of the function call.
|
|
142
|
+
*/
|
|
143
|
+
invoke(args: Readonly<Record<string, unknown>>, params: FunctionCallParams): Promise<unknown>;
|
|
144
|
+
}
|
|
145
|
+
export interface ToolOptions {
|
|
146
|
+
/**
|
|
147
|
+
* Whether to cancel this function call when an interruption occurs.
|
|
148
|
+
* Defaults to true.
|
|
149
|
+
*/
|
|
150
|
+
cancelOnInterruption?: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Optional per-tool timeout in seconds. A call that runs past it is
|
|
153
|
+
* cancelled. Defaults to null (uses the LLM service default).
|
|
154
|
+
*/
|
|
155
|
+
timeoutSecs?: number | null;
|
|
156
|
+
/**
|
|
157
|
+
* Whether the LLM may cancel this call once it is running, by calling the
|
|
158
|
+
* `cancel_<name>` tool advertised alongside it. Only meaningful together
|
|
159
|
+
* with `cancelOnInterruption: false`: a synchronous call blocks the LLM
|
|
160
|
+
* until it returns, so there is no moment at which it could ask for the
|
|
161
|
+
* call to stop. What decides it is duration: the LLM reaches the cancel tool
|
|
162
|
+
* a few seconds in at best, so work that finishes before then can't be
|
|
163
|
+
* stopped whatever it costs. Every tool that opts in also adds a tool for
|
|
164
|
+
* the LLM to weigh. Defaults to false.
|
|
165
|
+
*/
|
|
166
|
+
cancellableByLlm?: boolean;
|
|
167
|
+
}
|
|
168
|
+
/** Call-option metadata `toolOptions()` attaches to a handler (internal). */
|
|
169
|
+
export interface ToolOptionsMetadata {
|
|
170
|
+
_pipecatCancelOnInterruption?: boolean;
|
|
171
|
+
_pipecatTimeoutSecs?: number | null;
|
|
172
|
+
_pipecatCancellableByLlm?: boolean;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Configure a handler's call options.
|
|
176
|
+
*
|
|
177
|
+
* This is optional. A handler advertised in an `LLMContext`'s tools — a
|
|
178
|
+
* direct function, or the `handler` a `FunctionSchema` carries — is
|
|
179
|
+
* registered automatically with default call options, so this is only needed
|
|
180
|
+
* when you want to override those defaults. It attaches the options to the
|
|
181
|
+
* handler and returns it unchanged — it does not register anything, so
|
|
182
|
+
* configured handlers can stay at module level.
|
|
183
|
+
*
|
|
184
|
+
* On an `LLMWorker`, use `tool` instead, which applies these same options and
|
|
185
|
+
* additionally marks the method for collection as one of the worker's tools.
|
|
186
|
+
*
|
|
187
|
+
* Can be used with or without options:
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* const getWeather = toolOptions(async function get_weather(params, location) { ... });
|
|
191
|
+
* const endCall = toolOptions({ cancelOnInterruption: false, timeoutSecs: 60 })(
|
|
192
|
+
* async function end_call(params, reason) { ... },
|
|
193
|
+
* );
|
|
194
|
+
*
|
|
195
|
+
* @returns The function, unchanged except for pipecat call-option metadata
|
|
196
|
+
* attached under private `_pipecat*` properties (read internally; not part
|
|
197
|
+
* of the public API).
|
|
198
|
+
*/
|
|
199
|
+
export declare function toolOptions<F extends object>(fn: F, options?: ToolOptions): F & ToolOptionsMetadata;
|
|
200
|
+
export declare function toolOptions(options?: ToolOptions): <F extends object>(fn: F) => F & ToolOptionsMetadata;
|
|
201
|
+
export {};
|
|
202
|
+
//# sourceMappingURL=direct_function.d.ts.map
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026, Daily
|
|
2
|
+
// Copyright (c) 2026, pipedog contributors
|
|
3
|
+
// SPDX-License-Identifier: BSD-2-Clause
|
|
4
|
+
//
|
|
5
|
+
// Ported from pipecat: src/pipecat/adapters/schemas/direct_function.py
|
|
6
|
+
import { FunctionSchema } from "./function_schema.js";
|
|
7
|
+
/**
|
|
8
|
+
* Parse a function's parameter list from its source: names, and whether each
|
|
9
|
+
* has a default value. Skips strings, template literals, comments and nested
|
|
10
|
+
* brackets in default values.
|
|
11
|
+
*/
|
|
12
|
+
function parseParameters(fn) {
|
|
13
|
+
const src = Function.prototype.toString.call(fn);
|
|
14
|
+
// `async x => ...` (single parameter, no parentheses).
|
|
15
|
+
const single = /^\s*async\s+([A-Za-z_$][\w$]*)\s*=>/.exec(src);
|
|
16
|
+
if (single) {
|
|
17
|
+
return [{ name: single[1], hasDefault: false }];
|
|
18
|
+
}
|
|
19
|
+
const open = src.indexOf("(");
|
|
20
|
+
if (open < 0)
|
|
21
|
+
return [];
|
|
22
|
+
const parts = [];
|
|
23
|
+
let current = "";
|
|
24
|
+
let depth = 0;
|
|
25
|
+
let i = open + 1;
|
|
26
|
+
for (; i < src.length; i++) {
|
|
27
|
+
const ch = src[i];
|
|
28
|
+
const next = src[i + 1];
|
|
29
|
+
if (ch === "/" && next === "/") {
|
|
30
|
+
const end = src.indexOf("\n", i);
|
|
31
|
+
i = end < 0 ? src.length : end;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (ch === "/" && next === "*") {
|
|
35
|
+
const end = src.indexOf("*/", i + 2);
|
|
36
|
+
i = end < 0 ? src.length : end + 1;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (ch === '"' || ch === "'" || ch === "`") {
|
|
40
|
+
let j = i + 1;
|
|
41
|
+
while (j < src.length && src[j] !== ch) {
|
|
42
|
+
if (src[j] === "\\")
|
|
43
|
+
j++;
|
|
44
|
+
j++;
|
|
45
|
+
}
|
|
46
|
+
current += src.slice(i, j + 1);
|
|
47
|
+
i = j;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (ch === "(" || ch === "[" || ch === "{")
|
|
51
|
+
depth++;
|
|
52
|
+
if (ch === ")" || ch === "]" || ch === "}") {
|
|
53
|
+
if (depth === 0)
|
|
54
|
+
break;
|
|
55
|
+
depth--;
|
|
56
|
+
}
|
|
57
|
+
if (ch === "," && depth === 0) {
|
|
58
|
+
parts.push(current);
|
|
59
|
+
current = "";
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
current += ch;
|
|
63
|
+
}
|
|
64
|
+
if (current.trim())
|
|
65
|
+
parts.push(current);
|
|
66
|
+
return parts
|
|
67
|
+
.map((part) => part.trim())
|
|
68
|
+
.filter((part) => part.length > 0)
|
|
69
|
+
.map((part) => {
|
|
70
|
+
// A top-level "=" (not "=>", "==") marks a default value.
|
|
71
|
+
let d = 0;
|
|
72
|
+
let eq = -1;
|
|
73
|
+
for (let k = 0; k < part.length; k++) {
|
|
74
|
+
const c = part[k];
|
|
75
|
+
if (c === "(" || c === "[" || c === "{")
|
|
76
|
+
d++;
|
|
77
|
+
else if (c === ")" || c === "]" || c === "}")
|
|
78
|
+
d--;
|
|
79
|
+
else if (c === "=" && d === 0 && part[k + 1] !== ">" && part[k + 1] !== "=") {
|
|
80
|
+
eq = k;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const rawName = (eq >= 0 ? part.slice(0, eq) : part).trim().replace(/^\.\.\./, "");
|
|
85
|
+
return { name: rawName, hasDefault: eq >= 0 };
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function isAsyncFunction(fn) {
|
|
89
|
+
return typeof fn === "function" && fn.constructor?.name === "AsyncFunction";
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Base class for a wrapper around a DirectFunction.
|
|
93
|
+
*
|
|
94
|
+
* Provides functionality to:
|
|
95
|
+
*
|
|
96
|
+
* - extract metadata from the function signature and attached metadata
|
|
97
|
+
* - use that metadata to generate a corresponding FunctionSchema
|
|
98
|
+
*/
|
|
99
|
+
export class BaseDirectFunctionWrapper {
|
|
100
|
+
function;
|
|
101
|
+
name;
|
|
102
|
+
description;
|
|
103
|
+
properties;
|
|
104
|
+
required;
|
|
105
|
+
/**
|
|
106
|
+
* Initialize the direct function wrapper.
|
|
107
|
+
*
|
|
108
|
+
* @param fn The function to wrap and extract metadata from.
|
|
109
|
+
*/
|
|
110
|
+
constructor(fn) {
|
|
111
|
+
this.constructor.validateFunction(fn);
|
|
112
|
+
this.function = fn;
|
|
113
|
+
this._initializeMetadata();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get the name of the special first function parameter.
|
|
117
|
+
*
|
|
118
|
+
* The special first parameter is ignored by metadata extraction as it's not
|
|
119
|
+
* relevant to the LLM (e.g., 'params' for FunctionCallParams).
|
|
120
|
+
*
|
|
121
|
+
* @returns The name of the special first parameter.
|
|
122
|
+
*/
|
|
123
|
+
static specialFirstParamName() {
|
|
124
|
+
throw new Error("Subclasses must define the special first parameter name.");
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Validate that the function meets direct function requirements.
|
|
128
|
+
*
|
|
129
|
+
* @param fn The function to validate.
|
|
130
|
+
* @throws Error if function doesn't meet requirements (not async, missing
|
|
131
|
+
* parameters, incorrect first parameter name).
|
|
132
|
+
*/
|
|
133
|
+
static validateFunction(fn) {
|
|
134
|
+
if (!isAsyncFunction(fn)) {
|
|
135
|
+
throw new Error(`Direct function ${fn.name} must be async`);
|
|
136
|
+
}
|
|
137
|
+
const params = parseParameters(fn);
|
|
138
|
+
// `this` is the class validating (like Python's `cls`), so subclasses
|
|
139
|
+
// supply their own special first parameter name.
|
|
140
|
+
// biome-ignore lint/complexity/noThisInStatic: classmethod semantics.
|
|
141
|
+
const specialFirstParamName = this.specialFirstParamName();
|
|
142
|
+
if (params.length === 0) {
|
|
143
|
+
throw new Error(`Direct function ${fn.name} must have at least one parameter (${specialFirstParamName})`);
|
|
144
|
+
}
|
|
145
|
+
const firstParamName = params[0].name;
|
|
146
|
+
if (firstParamName !== specialFirstParamName) {
|
|
147
|
+
throw new Error(`Direct function ${fn.name} first parameter must be named '${specialFirstParamName}'`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Convert the wrapped function to a FunctionSchema.
|
|
152
|
+
*
|
|
153
|
+
* @returns A FunctionSchema instance with extracted metadata.
|
|
154
|
+
*/
|
|
155
|
+
toFunctionSchema() {
|
|
156
|
+
return new FunctionSchema({
|
|
157
|
+
name: this.name,
|
|
158
|
+
description: this.description,
|
|
159
|
+
properties: this.properties,
|
|
160
|
+
required: this.required,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/** Initialize metadata from function signature and attached metadata. */
|
|
164
|
+
_initializeMetadata() {
|
|
165
|
+
// Get function name
|
|
166
|
+
this.name = this.function.name;
|
|
167
|
+
// Get function description
|
|
168
|
+
this.description = (this.function.description ?? "").trim();
|
|
169
|
+
// Get function parameters as JSON schemas, and the list of required parameters
|
|
170
|
+
[this.properties, this.required] = this._getParametersAsJsonschema(this.function);
|
|
171
|
+
}
|
|
172
|
+
/** Names of the parameters after the special first one, in order. */
|
|
173
|
+
_argumentNames() {
|
|
174
|
+
return parseParameters(this.function)
|
|
175
|
+
.slice(1)
|
|
176
|
+
.map((p) => p.name)
|
|
177
|
+
.filter((name) => name !== "self");
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get function parameters as an object of JSON schemas and a list of
|
|
181
|
+
* required parameters.
|
|
182
|
+
*
|
|
183
|
+
* Ignore the first parameter, as it's expected to be the "special" one.
|
|
184
|
+
*
|
|
185
|
+
* @param func Function to get parameters from.
|
|
186
|
+
* @returns A tuple of an object mapping each function parameter to its JSON
|
|
187
|
+
* schema, and a list of required parameter names.
|
|
188
|
+
*/
|
|
189
|
+
_getParametersAsJsonschema(func) {
|
|
190
|
+
const properties = {};
|
|
191
|
+
const required = [];
|
|
192
|
+
const hints = func.parameters ?? {};
|
|
193
|
+
const params = parseParameters(func);
|
|
194
|
+
for (let i = 0; i < params.length; i++) {
|
|
195
|
+
const { name, hasDefault } = params[i];
|
|
196
|
+
// Ignore 'self' parameter
|
|
197
|
+
if (name === "self")
|
|
198
|
+
continue;
|
|
199
|
+
// Ignore the first parameter, which is expected to be the "special" one
|
|
200
|
+
// (We have already validated that this is the case in validateFunction())
|
|
201
|
+
if (i === 0)
|
|
202
|
+
continue;
|
|
203
|
+
const typeHint = Object.hasOwn(hints, name) ? hints[name] : undefined;
|
|
204
|
+
// Convert type hint to JSON schema
|
|
205
|
+
properties[name] = this._typehintToJsonschema(typeHint);
|
|
206
|
+
// Add whether the parameter is required
|
|
207
|
+
// If the parameter has no default value, it's required
|
|
208
|
+
if (!hasDefault) {
|
|
209
|
+
required.push(name);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return [properties, required];
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Convert a type hint to a JSON Schema.
|
|
216
|
+
*
|
|
217
|
+
* @param typeHint A JSON schema, a JS constructor, `null`, or an array of
|
|
218
|
+
* those (a union).
|
|
219
|
+
* @returns An object representing the JSON Schema
|
|
220
|
+
*/
|
|
221
|
+
_typehintToJsonschema(typeHint) {
|
|
222
|
+
if (typeHint === undefined) {
|
|
223
|
+
return {};
|
|
224
|
+
}
|
|
225
|
+
// Handle basic types
|
|
226
|
+
if (typeHint === null)
|
|
227
|
+
return { type: "null" };
|
|
228
|
+
if (typeHint === String)
|
|
229
|
+
return { type: "string" };
|
|
230
|
+
if (typeHint === BigInt)
|
|
231
|
+
return { type: "integer" };
|
|
232
|
+
if (typeHint === Number)
|
|
233
|
+
return { type: "number" };
|
|
234
|
+
if (typeHint === Boolean)
|
|
235
|
+
return { type: "boolean" };
|
|
236
|
+
if (typeHint === Object)
|
|
237
|
+
return { type: "object" };
|
|
238
|
+
if (typeHint === Array)
|
|
239
|
+
return { type: "array" };
|
|
240
|
+
// Handle union types
|
|
241
|
+
if (Array.isArray(typeHint)) {
|
|
242
|
+
return { anyOf: typeHint.map((arg) => this._typehintToJsonschema(arg)) };
|
|
243
|
+
}
|
|
244
|
+
// A JSON schema given directly (copied, so the caller's object isn't shared)
|
|
245
|
+
if (typeof typeHint === "object") {
|
|
246
|
+
return structuredClone(typeHint);
|
|
247
|
+
}
|
|
248
|
+
// Default to any type if we can't determine the specific schema
|
|
249
|
+
return {};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Wrapper around a DirectFunction for LLM function calling.
|
|
254
|
+
*
|
|
255
|
+
* This class:
|
|
256
|
+
*
|
|
257
|
+
* - Extracts metadata from the function signature and attached metadata
|
|
258
|
+
* - Generates a corresponding FunctionSchema
|
|
259
|
+
* - Helps with function invocation
|
|
260
|
+
*/
|
|
261
|
+
export class DirectFunctionWrapper extends BaseDirectFunctionWrapper {
|
|
262
|
+
/**
|
|
263
|
+
* Get the special first parameter name for direct functions.
|
|
264
|
+
*
|
|
265
|
+
* @returns The string "params" which is expected as the first parameter.
|
|
266
|
+
*/
|
|
267
|
+
static specialFirstParamName() {
|
|
268
|
+
return "params";
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Invoke the wrapped function with the provided arguments.
|
|
272
|
+
*
|
|
273
|
+
* Arguments are matched to the function's parameters by name, like
|
|
274
|
+
* Python's `function(params=params, **args)`.
|
|
275
|
+
*
|
|
276
|
+
* @param args Arguments to pass to the function.
|
|
277
|
+
* @param params Function call parameters from the LLM service.
|
|
278
|
+
* @returns The result of the function call.
|
|
279
|
+
*/
|
|
280
|
+
async invoke(args, params) {
|
|
281
|
+
const positional = this._argumentNames().map((name) => args[name]);
|
|
282
|
+
return await this.function(params, ...positional);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
export function toolOptions(fnOrOptions, maybeOptions) {
|
|
286
|
+
const options = typeof fnOrOptions === "function" ? (maybeOptions ?? {}) : (fnOrOptions ?? {});
|
|
287
|
+
const cancelOnInterruption = options.cancelOnInterruption ?? true;
|
|
288
|
+
const timeoutSecs = options.timeoutSecs ?? null;
|
|
289
|
+
const cancellableByLlm = options.cancellableByLlm ?? false;
|
|
290
|
+
const decorator = (fn) => {
|
|
291
|
+
const target = fn;
|
|
292
|
+
target._pipecatCancelOnInterruption = cancelOnInterruption;
|
|
293
|
+
target._pipecatTimeoutSecs = timeoutSecs;
|
|
294
|
+
target._pipecatCancellableByLlm = cancellableByLlm;
|
|
295
|
+
return target;
|
|
296
|
+
};
|
|
297
|
+
if (typeof fnOrOptions === "function") {
|
|
298
|
+
return decorator(fnOrOptions);
|
|
299
|
+
}
|
|
300
|
+
return decorator;
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=direct_function.js.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function schema utilities for AI tool definitions.
|
|
3
|
+
*
|
|
4
|
+
* Provides standardized function schema representation for defining tools and
|
|
5
|
+
* functions used with AI models, ensuring consistent formatting across
|
|
6
|
+
* different AI service providers.
|
|
7
|
+
*/
|
|
8
|
+
import type { FunctionCallHandler } from "../../services/llm_service.ts";
|
|
9
|
+
export interface FunctionSchemaOptions {
|
|
10
|
+
/** Name of the function to be called. */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Description of what the function does. */
|
|
13
|
+
description: string;
|
|
14
|
+
/** Object defining parameter types, descriptions, and constraints. */
|
|
15
|
+
properties: Record<string, unknown>;
|
|
16
|
+
/** List of property names that are required parameters. */
|
|
17
|
+
required: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Optional handler for this function. When provided, the LLM service
|
|
20
|
+
* registers it automatically wherever the schema is advertised in the
|
|
21
|
+
* `LLMContext`, making a separate `registerFunction` call unnecessary. Wrap
|
|
22
|
+
* the handler with `toolOptions` to override its default call options
|
|
23
|
+
* (`cancelOnInterruption`, `timeoutSecs`).
|
|
24
|
+
*/
|
|
25
|
+
handler?: FunctionCallHandler | null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Standardized function schema representation for tool definition.
|
|
29
|
+
*
|
|
30
|
+
* Provides a structured way to define function tools used with AI models like
|
|
31
|
+
* OpenAI. This schema defines the function's name, description, parameter
|
|
32
|
+
* properties, and required parameters, following specifications required by
|
|
33
|
+
* AI service providers.
|
|
34
|
+
*
|
|
35
|
+
* A schema may also carry the `handler` that runs when the function is
|
|
36
|
+
* called. When set, the LLM service registers it automatically for any
|
|
37
|
+
* `LLMContext` that advertises the schema, so no separate `registerFunction`
|
|
38
|
+
* call is needed.
|
|
39
|
+
*/
|
|
40
|
+
export declare class FunctionSchema {
|
|
41
|
+
protected _name: string;
|
|
42
|
+
protected _description: string;
|
|
43
|
+
protected _properties: Record<string, unknown>;
|
|
44
|
+
protected _required: string[];
|
|
45
|
+
protected _handler: FunctionCallHandler | null;
|
|
46
|
+
constructor(options: FunctionSchemaOptions);
|
|
47
|
+
/**
|
|
48
|
+
* Converts the function schema to a plain object.
|
|
49
|
+
*
|
|
50
|
+
* @returns Object representation of the function schema.
|
|
51
|
+
*/
|
|
52
|
+
toDefaultDict(): Record<string, unknown>;
|
|
53
|
+
/** The function name. */
|
|
54
|
+
get name(): string;
|
|
55
|
+
/** The function description. */
|
|
56
|
+
get description(): string;
|
|
57
|
+
/** Object of parameter specifications. */
|
|
58
|
+
get properties(): Record<string, unknown>;
|
|
59
|
+
/** List of required parameter names. */
|
|
60
|
+
get required(): string[];
|
|
61
|
+
/**
|
|
62
|
+
* The handler for this function, or `null` if it's provided separately,
|
|
63
|
+
* through `registerFunction`.
|
|
64
|
+
*/
|
|
65
|
+
get handler(): FunctionCallHandler | null;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=function_schema.d.ts.map
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026, Daily
|
|
2
|
+
// Copyright (c) 2026, pipedog contributors
|
|
3
|
+
// SPDX-License-Identifier: BSD-2-Clause
|
|
4
|
+
//
|
|
5
|
+
// Ported from pipecat: src/pipecat/adapters/schemas/function_schema.py
|
|
6
|
+
/**
|
|
7
|
+
* Standardized function schema representation for tool definition.
|
|
8
|
+
*
|
|
9
|
+
* Provides a structured way to define function tools used with AI models like
|
|
10
|
+
* OpenAI. This schema defines the function's name, description, parameter
|
|
11
|
+
* properties, and required parameters, following specifications required by
|
|
12
|
+
* AI service providers.
|
|
13
|
+
*
|
|
14
|
+
* A schema may also carry the `handler` that runs when the function is
|
|
15
|
+
* called. When set, the LLM service registers it automatically for any
|
|
16
|
+
* `LLMContext` that advertises the schema, so no separate `registerFunction`
|
|
17
|
+
* call is needed.
|
|
18
|
+
*/
|
|
19
|
+
export class FunctionSchema {
|
|
20
|
+
_name;
|
|
21
|
+
_description;
|
|
22
|
+
_properties;
|
|
23
|
+
_required;
|
|
24
|
+
_handler;
|
|
25
|
+
constructor(options) {
|
|
26
|
+
this._name = options.name;
|
|
27
|
+
this._description = options.description;
|
|
28
|
+
this._properties = options.properties;
|
|
29
|
+
this._required = options.required;
|
|
30
|
+
this._handler = options.handler ?? null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Converts the function schema to a plain object.
|
|
34
|
+
*
|
|
35
|
+
* @returns Object representation of the function schema.
|
|
36
|
+
*/
|
|
37
|
+
toDefaultDict() {
|
|
38
|
+
return {
|
|
39
|
+
name: this._name,
|
|
40
|
+
description: this._description,
|
|
41
|
+
parameters: {
|
|
42
|
+
type: "object",
|
|
43
|
+
properties: this._properties,
|
|
44
|
+
required: this._required,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** The function name. */
|
|
49
|
+
get name() {
|
|
50
|
+
return this._name;
|
|
51
|
+
}
|
|
52
|
+
/** The function description. */
|
|
53
|
+
get description() {
|
|
54
|
+
return this._description;
|
|
55
|
+
}
|
|
56
|
+
/** Object of parameter specifications. */
|
|
57
|
+
get properties() {
|
|
58
|
+
return this._properties;
|
|
59
|
+
}
|
|
60
|
+
/** List of required parameter names. */
|
|
61
|
+
get required() {
|
|
62
|
+
return this._required;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The handler for this function, or `null` if it's provided separately,
|
|
66
|
+
* through `registerFunction`.
|
|
67
|
+
*/
|
|
68
|
+
get handler() {
|
|
69
|
+
return this._handler;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=function_schema.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026, Daily
|
|
2
|
+
// Copyright (c) 2026, pipedog contributors
|
|
3
|
+
// SPDX-License-Identifier: BSD-2-Clause
|
|
4
|
+
//
|
|
5
|
+
// Ported from pipecat: src/pipecat/adapters/schemas/__init__.py
|
|
6
|
+
// Upstream's `__init__.py` is empty: import the package's modules directly.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.js.map
|