dv-pipecat-ai 0.0.72.dev651__tar.gz → 0.0.74.dev526__tar.gz
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.
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/CHANGELOG.md +12 -1
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/CONTRIBUTING.md +58 -18
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/PKG-INFO +2 -2
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/pyproject.toml +3 -4
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/dv_pipecat_ai.egg-info/PKG-INFO +2 -2
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/dv_pipecat_ai.egg-info/SOURCES.txt +6 -6
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/dv_pipecat_ai.egg-info/requires.txt +1 -1
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/parallel_pipeline.py +3 -3
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/sync_parallel_pipeline.py +3 -3
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/task.py +23 -19
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/task_observer.py +5 -11
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/consumer_processor.py +3 -2
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/frame_processor.py +18 -25
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/frameworks/rtvi.py +3 -3
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/metrics/frame_processor_metrics.py +3 -3
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/metrics/sentry.py +6 -11
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/producer_processor.py +3 -3
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/ai_service.py +68 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/ai_services.py +11 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/anthropic/llm.py +213 -21
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws/llm.py +193 -20
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws_nova_sonic/aws.py +97 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws_nova_sonic/context.py +131 -0
- dv_pipecat_ai-0.0.74.dev526/src/pipecat/services/aws_nova_sonic/frames.py +25 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/azure/llm.py +17 -6
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/cartesia/tts.py +145 -2
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/cerebras/llm.py +22 -11
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/deepgram/stt.py +68 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/deepseek/llm.py +22 -12
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/elevenlabs/tts.py +3 -3
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/fireworks/llm.py +24 -6
- dv_pipecat_ai-0.0.74.dev526/src/pipecat/services/gemini_multimodal_live/events.py +449 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/gemini_multimodal_live/gemini.py +195 -38
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/gladia/stt.py +3 -5
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/llm.py +154 -17
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/llm_openai.py +2 -4
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/stt.py +2 -2
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/grok/llm.py +54 -18
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/groq/llm.py +16 -5
- dv_pipecat_ai-0.0.74.dev526/src/pipecat/services/image_service.py +70 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/llm_service.py +149 -41
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/mcp_service.py +101 -24
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/neuphonic/tts.py +3 -5
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/nim/llm.py +14 -8
- dv_pipecat_ai-0.0.74.dev526/src/pipecat/services/ollama/llm.py +25 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai/base_llm.py +68 -9
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai/llm.py +82 -6
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai_realtime_beta/azure.py +14 -11
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai_realtime_beta/context.py +85 -0
- dv_pipecat_ai-0.0.74.dev526/src/pipecat/services/openai_realtime_beta/events.py +978 -0
- dv_pipecat_ai-0.0.74.dev526/src/pipecat/services/openai_realtime_beta/frames.py +37 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai_realtime_beta/openai.py +94 -16
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openpipe/llm.py +41 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openrouter/llm.py +21 -4
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/perplexity/llm.py +19 -9
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/qwen/llm.py +16 -5
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/riva/stt.py +2 -4
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/sambanova/llm.py +37 -10
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/simli/video.py +3 -7
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/stt_service.py +89 -10
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/tavus/video.py +2 -2
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/together/llm.py +16 -5
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/tts_service.py +237 -32
- dv_pipecat_ai-0.0.74.dev526/src/pipecat/services/vision_service.py +71 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/websocket_service.py +46 -20
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/base_output.py +2 -4
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/network/fastapi_websocket.py +2 -2
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/network/small_webrtc.py +3 -3
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/network/websocket_client.py +1 -1
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/services/daily.py +6 -11
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/services/livekit.py +3 -5
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/utils/asyncio.py → dv_pipecat_ai-0.0.74.dev526/src/pipecat/utils/asyncio/task_manager.py +26 -10
- {dv_pipecat_ai-0.0.72.dev651/src/pipecat/utils → dv_pipecat_ai-0.0.74.dev526/src/pipecat/utils/asyncio}/watchdog_async_iterator.py +6 -8
- {dv_pipecat_ai-0.0.72.dev651/src/pipecat/utils → dv_pipecat_ai-0.0.74.dev526/src/pipecat/utils/asyncio}/watchdog_event.py +6 -8
- {dv_pipecat_ai-0.0.72.dev651/src/pipecat/utils → dv_pipecat_ai-0.0.74.dev526/src/pipecat/utils/asyncio}/watchdog_priority_queue.py +8 -10
- {dv_pipecat_ai-0.0.72.dev651/src/pipecat/utils → dv_pipecat_ai-0.0.74.dev526/src/pipecat/utils/asyncio}/watchdog_queue.py +8 -10
- dv_pipecat_ai-0.0.74.dev526/src/pipecat/utils/text/__init__.py +0 -0
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/services/aws_nova_sonic/frames.py +0 -14
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/services/gemini_multimodal_live/events.py +0 -237
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/services/image_service.py +0 -33
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/services/ollama/llm.py +0 -12
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/services/openai_realtime_beta/events.py +0 -484
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/services/openai_realtime_beta/frames.py +0 -19
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/services/vision_service.py +0 -34
- dv_pipecat_ai-0.0.72.dev651/src/pipecat/utils/watchdog_reseter.py +0 -13
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.dockerignore +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/workflows/android.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/workflows/build.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/workflows/coverage.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/workflows/format.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/workflows/github.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/workflows/publish.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/workflows/publish_test.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.github/workflows/tests.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.gitignore +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/.readthedocs.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/CHANGELOG.md.template +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/Dockerfile +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/LICENSE +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/MANIFEST.in +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/README.md +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/ansible_deployment.sh +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/cleanup_old_containers.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/codecov.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/create-new-machine/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/create-new-machine/ansible_setup.sh +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/create-new-machine/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/create-new-machine/replace_env.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/create-new-machine/setup_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/create_inventory.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/delete_old_dockers.sh +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/deploy.sh +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/deploy_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/dev-requirements.txt +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/docker-compose.dev.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/dot-env.template +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/dump_logs.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/fetch_logs.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/.helmignore +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/Chart.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/templates/service.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/values-prod.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/values-stage.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/k8s/dv-pipecat/values.yaml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/merge-code-into-single-file.sh +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/pipecat.png +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/restart.sh +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/restart_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/setup.cfg +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/base_llm_adapter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/schemas/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/schemas/function_schema.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/filters/koala_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/filters/krisp_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/interruptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/mixers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/resamplers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/utils.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/vad/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/vad/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/vad/silero.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/clocks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/clocks/base_clock.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/clocks/system_clock.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/examples/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/examples/daily_runner.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/examples/run.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/frames/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/frames/frames.proto +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/frames/frames.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/metrics/metrics.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/observers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/observers/base_observer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/observers/loggers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/observers/turn_tracking_observer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/base_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/base_task.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/pipeline.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/runner.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/gated.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/gated_openai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/llm_response.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/sentence.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/user_response.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/async_generator.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/filters/frame_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/filters/function_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/filters/identity_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/filters/null_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/frameworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/frameworks/langchain.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/gstreamer/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/idle_frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/logger.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/text_transformer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/transcript_processor.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/processors/user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/py.typed +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/base_serializer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/exotel.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/genesys.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/livekit.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/plivo.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/protobuf.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/telnyx.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/serializers/twilio.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/anthropic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/assemblyai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/assemblyai/models.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/assemblyai/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws/utils.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/aws_nova_sonic/ready.wav +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/azure/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/azure/common.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/azure/image.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/azure/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/azure/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/cartesia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/cartesia/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/cerebras/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/deepgram/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/deepgram/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/deepseek/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/elevenlabs/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/fal/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/fal/image.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/fal/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/fireworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/fish/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/fish/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/gladia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/gladia/config.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/frames.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/google.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/image.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/google/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/grok/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/groq/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/groq/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/groq/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/lmnt/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/lmnt/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/mem0/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/mem0/memory.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/minimax/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/minimax/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/moondream/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/moondream/vision.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/neuphonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/nim/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/ollama/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai/image.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openpipe/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/openrouter/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/perplexity/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/piper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/piper/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/playht/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/playht/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/rime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/rime/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/riva/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/riva/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/sambanova/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/sambanova/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/sarvam/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/sarvam/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/simli/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/together/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/ultravox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/ultravox/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/whisper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/whisper/base_stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/whisper/stt.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/xtts/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/services/xtts/tts.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/sync/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/sync/base_notifier.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/sync/event_notifier.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/tests/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/tests/utils.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transcriptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transcriptions/language.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/base_input.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/base_transport.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/local/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/local/audio.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/local/tk.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/network/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/network/webrtc_connection.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/network/websocket_server.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/services/helpers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/transports/services/tavus.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651/src/pipecat/utils/text → dv_pipecat_ai-0.0.74.dev526/src/pipecat/utils/asyncio}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/base_object.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/logger_config.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/network.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/string.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/text/base_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/time.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/tracing/__init__.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/tracing/class_decorators.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/tracing/service_attributes.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/tracing/service_decorators.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/tracing/setup.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/utils/utils.py +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/stop_container.yml +0 -0
- {dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/test-requirements.txt +0 -0
|
@@ -5,7 +5,15 @@ All notable changes to **Pipecat** will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [0.0.73] - 2025-06-26
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Fixed an issue introduced in 0.0.72 that would cause `ElevenLabsTTSService`,
|
|
13
|
+
`GladiaSTTService`, `NeuphonicTTSService` and `OpenAIRealtimeBetaLLMService`
|
|
14
|
+
to throw an error.
|
|
15
|
+
|
|
16
|
+
## [0.0.72] - 2025-06-26
|
|
9
17
|
|
|
10
18
|
### Added
|
|
11
19
|
|
|
@@ -86,6 +94,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
86
94
|
|
|
87
95
|
### Fixed
|
|
88
96
|
|
|
97
|
+
- Fixed an issue that would cause heartbeat frames to be sent before processors
|
|
98
|
+
were started.
|
|
99
|
+
|
|
89
100
|
- Fixed an event loop blocking issue when using `SentryMetrics`.
|
|
90
101
|
|
|
91
102
|
- Fixed an issue in `FastAPIWebsocketClient` to ensure proper disconnection
|
|
@@ -41,36 +41,76 @@ We use Ruff for code linting and formatting. Please ensure your code passes all
|
|
|
41
41
|
|
|
42
42
|
We follow Google-style docstrings with these specific conventions:
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
- We don't require separate docstrings for `__init__` methods when parameters are documented in the class docstring
|
|
46
|
-
- Property methods should have docstrings explaining their purpose and return value
|
|
44
|
+
**Regular Classes:**
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
- Class docstring describes the class purpose and documents all `__init__` parameters in an `Args:` section
|
|
47
|
+
- No separate `__init__` docstring needed
|
|
48
|
+
- All public methods must have docstrings with `Args:` and `Returns:` sections as appropriate
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
**Dataclasses:**
|
|
51
|
+
|
|
52
|
+
- Class docstring describes the purpose and documents all fields in a `Parameters:` section
|
|
53
|
+
- No `__init__` docstring (auto-generated)
|
|
54
|
+
|
|
55
|
+
**Properties:**
|
|
56
|
+
|
|
57
|
+
- Must have docstrings with `Returns:` section
|
|
58
|
+
|
|
59
|
+
**Abstract Methods:**
|
|
53
60
|
|
|
54
|
-
|
|
61
|
+
- Must have docstrings explaining what subclasses should implement
|
|
62
|
+
|
|
63
|
+
#### Examples:
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
# Regular class
|
|
67
|
+
class MyService(BaseService):
|
|
68
|
+
"""Description of what the service does.
|
|
55
69
|
|
|
56
70
|
Args:
|
|
57
|
-
param1: Description of
|
|
58
|
-
param2: Description of
|
|
71
|
+
param1: Description of param1.
|
|
72
|
+
param2: Description of param2. Defaults to True.
|
|
73
|
+
**kwargs: Additional arguments passed to parent.
|
|
59
74
|
"""
|
|
60
75
|
|
|
61
|
-
def __init__(self, param1, param2):
|
|
62
|
-
# No docstring
|
|
63
|
-
|
|
64
|
-
self.param2 = param2
|
|
76
|
+
def __init__(self, param1: str, param2: bool = True, **kwargs):
|
|
77
|
+
# No docstring - parameters documented above
|
|
78
|
+
super().__init__(**kwargs)
|
|
65
79
|
|
|
66
80
|
@property
|
|
67
|
-
def
|
|
68
|
-
"""Get the
|
|
81
|
+
def sample_rate(self) -> int:
|
|
82
|
+
"""Get the current sample rate.
|
|
69
83
|
|
|
70
84
|
Returns:
|
|
71
|
-
|
|
85
|
+
The sample rate in Hz.
|
|
72
86
|
"""
|
|
73
|
-
return
|
|
87
|
+
return self._sample_rate
|
|
88
|
+
|
|
89
|
+
async def process_data(self, data: str) -> bool:
|
|
90
|
+
"""Process the provided data.
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
data: The data to process.
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
True if processing succeeded.
|
|
97
|
+
"""
|
|
98
|
+
pass
|
|
99
|
+
|
|
100
|
+
# Dataclass
|
|
101
|
+
@dataclass
|
|
102
|
+
class ConfigParams:
|
|
103
|
+
"""Configuration parameters for the service.
|
|
104
|
+
|
|
105
|
+
Parameters:
|
|
106
|
+
host: The host address.
|
|
107
|
+
port: The port number. Defaults to 8080.
|
|
108
|
+
timeout: Connection timeout in seconds.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
host: str
|
|
112
|
+
port: int = 8080
|
|
113
|
+
timeout: float = 30.0
|
|
74
114
|
```
|
|
75
115
|
|
|
76
116
|
# Contributor Covenant Code of Conduct
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dv-pipecat-ai
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.74.dev526
|
|
4
4
|
Summary: An open source framework for voice (and multimodal) assistants
|
|
5
5
|
License-Expression: BSD-2-Clause
|
|
6
6
|
Project-URL: Source, https://github.com/pipecat-ai/pipecat
|
|
@@ -84,7 +84,7 @@ Requires-Dist: websockets~=13.1; extra == "lmnt"
|
|
|
84
84
|
Provides-Extra: local
|
|
85
85
|
Requires-Dist: pyaudio~=0.2.14; extra == "local"
|
|
86
86
|
Provides-Extra: mcp
|
|
87
|
-
Requires-Dist: mcp[cli]~=1.
|
|
87
|
+
Requires-Dist: mcp[cli]~=1.9.4; extra == "mcp"
|
|
88
88
|
Provides-Extra: mem0
|
|
89
89
|
Requires-Dist: mem0ai~=0.1.94; extra == "mem0"
|
|
90
90
|
Provides-Extra: mlx-whisper
|
|
@@ -64,7 +64,7 @@ langchain = [ "langchain~=0.3.20", "langchain-community~=0.3.20", "langchain-ope
|
|
|
64
64
|
livekit = [ "livekit~=0.22.0", "livekit-api~=0.8.2", "tenacity~=9.0.0" ]
|
|
65
65
|
lmnt = [ "websockets~=13.1" ]
|
|
66
66
|
local = [ "pyaudio~=0.2.14" ]
|
|
67
|
-
mcp = [ "mcp[cli]~=1.
|
|
67
|
+
mcp = [ "mcp[cli]~=1.9.4" ]
|
|
68
68
|
mem0 = [ "mem0ai~=0.1.94" ]
|
|
69
69
|
mlx-whisper = [ "mlx-whisper~=0.4.2" ]
|
|
70
70
|
moondream = [ "einops~=0.8.0", "timm~=1.0.13", "transformers~=4.48.0" ]
|
|
@@ -123,9 +123,8 @@ select = [
|
|
|
123
123
|
"D", # Docstring rules
|
|
124
124
|
"I", # Import rules
|
|
125
125
|
]
|
|
126
|
-
#
|
|
127
|
-
|
|
128
|
-
ignore = ["D101", "D103", "D102", "D107"]
|
|
126
|
+
# Ignore requirement for __init__ docstrings
|
|
127
|
+
ignore = ["D107"]
|
|
129
128
|
|
|
130
129
|
[tool.ruff.lint.pydocstyle]
|
|
131
130
|
convention = "google"
|
{dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/dv_pipecat_ai.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dv-pipecat-ai
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.74.dev526
|
|
4
4
|
Summary: An open source framework for voice (and multimodal) assistants
|
|
5
5
|
License-Expression: BSD-2-Clause
|
|
6
6
|
Project-URL: Source, https://github.com/pipecat-ai/pipecat
|
|
@@ -84,7 +84,7 @@ Requires-Dist: websockets~=13.1; extra == "lmnt"
|
|
|
84
84
|
Provides-Extra: local
|
|
85
85
|
Requires-Dist: pyaudio~=0.2.14; extra == "local"
|
|
86
86
|
Provides-Extra: mcp
|
|
87
|
-
Requires-Dist: mcp[cli]~=1.
|
|
87
|
+
Requires-Dist: mcp[cli]~=1.9.4; extra == "mcp"
|
|
88
88
|
Provides-Extra: mem0
|
|
89
89
|
Requires-Dist: mem0ai~=0.1.94; extra == "mem0"
|
|
90
90
|
Provides-Extra: mlx-whisper
|
{dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/dv_pipecat_ai.egg-info/SOURCES.txt
RENAMED
|
@@ -351,18 +351,18 @@ src/pipecat/transports/services/tavus.py
|
|
|
351
351
|
src/pipecat/transports/services/helpers/__init__.py
|
|
352
352
|
src/pipecat/transports/services/helpers/daily_rest.py
|
|
353
353
|
src/pipecat/utils/__init__.py
|
|
354
|
-
src/pipecat/utils/asyncio.py
|
|
355
354
|
src/pipecat/utils/base_object.py
|
|
356
355
|
src/pipecat/utils/logger_config.py
|
|
357
356
|
src/pipecat/utils/network.py
|
|
358
357
|
src/pipecat/utils/string.py
|
|
359
358
|
src/pipecat/utils/time.py
|
|
360
359
|
src/pipecat/utils/utils.py
|
|
361
|
-
src/pipecat/utils/
|
|
362
|
-
src/pipecat/utils/
|
|
363
|
-
src/pipecat/utils/
|
|
364
|
-
src/pipecat/utils/
|
|
365
|
-
src/pipecat/utils/
|
|
360
|
+
src/pipecat/utils/asyncio/__init__.py
|
|
361
|
+
src/pipecat/utils/asyncio/task_manager.py
|
|
362
|
+
src/pipecat/utils/asyncio/watchdog_async_iterator.py
|
|
363
|
+
src/pipecat/utils/asyncio/watchdog_event.py
|
|
364
|
+
src/pipecat/utils/asyncio/watchdog_priority_queue.py
|
|
365
|
+
src/pipecat/utils/asyncio/watchdog_queue.py
|
|
366
366
|
src/pipecat/utils/text/__init__.py
|
|
367
367
|
src/pipecat/utils/text/base_text_aggregator.py
|
|
368
368
|
src/pipecat/utils/text/base_text_filter.py
|
|
@@ -21,7 +21,7 @@ from pipecat.frames.frames import (
|
|
|
21
21
|
from pipecat.pipeline.base_pipeline import BasePipeline
|
|
22
22
|
from pipecat.pipeline.pipeline import Pipeline
|
|
23
23
|
from pipecat.processors.frame_processor import FrameDirection, FrameProcessor, FrameProcessorSetup
|
|
24
|
-
from pipecat.utils.watchdog_queue import WatchdogQueue
|
|
24
|
+
from pipecat.utils.asyncio.watchdog_queue import WatchdogQueue
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class ParallelPipelineSource(FrameProcessor):
|
|
@@ -102,8 +102,8 @@ class ParallelPipeline(BasePipeline):
|
|
|
102
102
|
async def setup(self, setup: FrameProcessorSetup):
|
|
103
103
|
await super().setup(setup)
|
|
104
104
|
|
|
105
|
-
self._up_queue = WatchdogQueue(
|
|
106
|
-
self._down_queue = WatchdogQueue(
|
|
105
|
+
self._up_queue = WatchdogQueue(setup.task_manager)
|
|
106
|
+
self._down_queue = WatchdogQueue(setup.task_manager)
|
|
107
107
|
|
|
108
108
|
logger.debug(f"Creating {self} pipelines")
|
|
109
109
|
for processors in self._args:
|
|
@@ -15,7 +15,7 @@ from pipecat.frames.frames import ControlFrame, EndFrame, Frame, SystemFrame
|
|
|
15
15
|
from pipecat.pipeline.base_pipeline import BasePipeline
|
|
16
16
|
from pipecat.pipeline.pipeline import Pipeline
|
|
17
17
|
from pipecat.processors.frame_processor import FrameDirection, FrameProcessor, FrameProcessorSetup
|
|
18
|
-
from pipecat.utils.watchdog_queue import WatchdogQueue
|
|
18
|
+
from pipecat.utils.asyncio.watchdog_queue import WatchdogQueue
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
@dataclass
|
|
@@ -81,8 +81,8 @@ class SyncParallelPipeline(BasePipeline):
|
|
|
81
81
|
async def setup(self, setup: FrameProcessorSetup):
|
|
82
82
|
await super().setup(setup)
|
|
83
83
|
|
|
84
|
-
self._up_queue = WatchdogQueue(
|
|
85
|
-
self._down_queue = WatchdogQueue(
|
|
84
|
+
self._up_queue = WatchdogQueue(setup.task_manager)
|
|
85
|
+
self._down_queue = WatchdogQueue(setup.task_manager)
|
|
86
86
|
|
|
87
87
|
logger.debug(f"Creating {self} pipelines")
|
|
88
88
|
for processors in self._args:
|
|
@@ -38,11 +38,15 @@ from pipecat.pipeline.base_pipeline import BasePipeline
|
|
|
38
38
|
from pipecat.pipeline.base_task import BasePipelineTask, PipelineTaskParams
|
|
39
39
|
from pipecat.pipeline.task_observer import TaskObserver
|
|
40
40
|
from pipecat.processors.frame_processor import FrameDirection, FrameProcessor, FrameProcessorSetup
|
|
41
|
-
from pipecat.utils.asyncio import
|
|
41
|
+
from pipecat.utils.asyncio.task_manager import (
|
|
42
|
+
WATCHDOG_TIMEOUT,
|
|
43
|
+
BaseTaskManager,
|
|
44
|
+
TaskManager,
|
|
45
|
+
TaskManagerParams,
|
|
46
|
+
)
|
|
47
|
+
from pipecat.utils.asyncio.watchdog_queue import WatchdogQueue
|
|
42
48
|
from pipecat.utils.tracing.setup import is_tracing_available
|
|
43
49
|
from pipecat.utils.tracing.turn_trace_observer import TurnTraceObserver
|
|
44
|
-
from pipecat.utils.watchdog_queue import WatchdogQueue
|
|
45
|
-
from pipecat.utils.watchdog_reseter import WatchdogReseter
|
|
46
50
|
|
|
47
51
|
HEARTBEAT_SECONDS = 1.0
|
|
48
52
|
HEARTBEAT_MONITOR_SECONDS = HEARTBEAT_SECONDS * 10
|
|
@@ -133,7 +137,7 @@ class PipelineTaskSink(FrameProcessor):
|
|
|
133
137
|
await self._down_queue.put(frame)
|
|
134
138
|
|
|
135
139
|
|
|
136
|
-
class PipelineTask(
|
|
140
|
+
class PipelineTask(BasePipelineTask):
|
|
137
141
|
"""Manages the execution of a pipeline, handling frame processing and task lifecycle.
|
|
138
142
|
|
|
139
143
|
It has a couple of event handlers `on_frame_reached_upstream` and
|
|
@@ -265,24 +269,28 @@ class PipelineTask(WatchdogReseter, BasePipelineTask):
|
|
|
265
269
|
self._finished = False
|
|
266
270
|
self._cancelled = False
|
|
267
271
|
|
|
272
|
+
# This task maneger will handle all the asyncio tasks created by this
|
|
273
|
+
# PipelineTask and its frame processors.
|
|
274
|
+
self._task_manager = task_manager or TaskManager()
|
|
275
|
+
|
|
268
276
|
# This queue receives frames coming from the pipeline upstream.
|
|
269
|
-
self._up_queue = WatchdogQueue(self
|
|
277
|
+
self._up_queue = WatchdogQueue(self._task_manager)
|
|
270
278
|
self._process_up_task: Optional[asyncio.Task] = None
|
|
271
279
|
# This queue receives frames coming from the pipeline downstream.
|
|
272
|
-
self._down_queue = WatchdogQueue(self
|
|
280
|
+
self._down_queue = WatchdogQueue(self._task_manager)
|
|
273
281
|
self._process_down_task: Optional[asyncio.Task] = None
|
|
274
282
|
# This queue is the queue used to push frames to the pipeline.
|
|
275
|
-
self._push_queue = WatchdogQueue(self
|
|
283
|
+
self._push_queue = WatchdogQueue(self._task_manager)
|
|
276
284
|
self._process_push_task: Optional[asyncio.Task] = None
|
|
277
285
|
# This is the heartbeat queue. When a heartbeat frame is received in the
|
|
278
286
|
# down queue we add it to the heartbeat queue for processing.
|
|
279
|
-
self._heartbeat_queue = WatchdogQueue(self
|
|
287
|
+
self._heartbeat_queue = WatchdogQueue(self._task_manager)
|
|
280
288
|
self._heartbeat_push_task: Optional[asyncio.Task] = None
|
|
281
289
|
self._heartbeat_monitor_task: Optional[asyncio.Task] = None
|
|
282
290
|
# This is the idle queue. When frames are received downstream they are
|
|
283
291
|
# put in the queue. If no frame is received the pipeline is considered
|
|
284
292
|
# idle.
|
|
285
|
-
self._idle_queue = WatchdogQueue(self
|
|
293
|
+
self._idle_queue = WatchdogQueue(self._task_manager)
|
|
286
294
|
self._idle_monitor_task: Optional[asyncio.Task] = None
|
|
287
295
|
# This event is used to indicate a finalize frame (e.g. EndFrame,
|
|
288
296
|
# StopFrame) has been received in the down queue.
|
|
@@ -300,10 +308,6 @@ class PipelineTask(WatchdogReseter, BasePipelineTask):
|
|
|
300
308
|
self._sink = PipelineTaskSink(self._down_queue)
|
|
301
309
|
pipeline.link(self._sink)
|
|
302
310
|
|
|
303
|
-
# This task maneger will handle all the asyncio tasks created by this
|
|
304
|
-
# PipelineTask and its frame processors.
|
|
305
|
-
self._task_manager = task_manager or TaskManager()
|
|
306
|
-
|
|
307
311
|
# The task observer acts as a proxy to the provided observers. This way,
|
|
308
312
|
# we only need to pass a single observer (using the StartFrame) which
|
|
309
313
|
# then just acts as a proxy.
|
|
@@ -435,9 +439,6 @@ class PipelineTask(WatchdogReseter, BasePipelineTask):
|
|
|
435
439
|
for frame in frames:
|
|
436
440
|
await self.queue_frame(frame)
|
|
437
441
|
|
|
438
|
-
def reset_watchdog(self):
|
|
439
|
-
self._task_manager.reset_watchdog(asyncio.current_task())
|
|
440
|
-
|
|
441
442
|
async def _cancel(self):
|
|
442
443
|
if not self._cancelled:
|
|
443
444
|
logger.debug(f"Canceling pipeline task {self}")
|
|
@@ -462,12 +463,12 @@ class PipelineTask(WatchdogReseter, BasePipelineTask):
|
|
|
462
463
|
self._process_push_queue(), f"{self}::_process_push_queue"
|
|
463
464
|
)
|
|
464
465
|
|
|
465
|
-
await self._observer.start(
|
|
466
|
+
await self._observer.start()
|
|
466
467
|
|
|
467
468
|
return self._process_push_task
|
|
468
469
|
|
|
469
470
|
def _maybe_start_heartbeat_tasks(self):
|
|
470
|
-
if self._params.enable_heartbeats:
|
|
471
|
+
if self._params.enable_heartbeats and self._heartbeat_push_task is None:
|
|
471
472
|
self._heartbeat_push_task = self._task_manager.create_task(
|
|
472
473
|
self._heartbeat_push_handler(), f"{self}::_heartbeat_push_handler"
|
|
473
474
|
)
|
|
@@ -565,7 +566,6 @@ class PipelineTask(WatchdogReseter, BasePipelineTask):
|
|
|
565
566
|
"""
|
|
566
567
|
self._clock.start()
|
|
567
568
|
|
|
568
|
-
self._maybe_start_heartbeat_tasks()
|
|
569
569
|
self._maybe_start_idle_task()
|
|
570
570
|
|
|
571
571
|
start_frame = StartFrame(
|
|
@@ -647,6 +647,10 @@ class PipelineTask(WatchdogReseter, BasePipelineTask):
|
|
|
647
647
|
|
|
648
648
|
if isinstance(frame, StartFrame):
|
|
649
649
|
await self._call_event_handler("on_pipeline_started", frame)
|
|
650
|
+
|
|
651
|
+
# Start heartbeat tasks now that StartFrame has been processed
|
|
652
|
+
# by all processors in the pipeline
|
|
653
|
+
self._maybe_start_heartbeat_tasks()
|
|
650
654
|
elif isinstance(frame, EndFrame):
|
|
651
655
|
await self._call_event_handler("on_pipeline_ended", frame)
|
|
652
656
|
self._pipeline_end_event.set()
|
{dv_pipecat_ai-0.0.72.dev651 → dv_pipecat_ai-0.0.74.dev526}/src/pipecat/pipeline/task_observer.py
RENAMED
|
@@ -11,9 +11,8 @@ from typing import Dict, List, Optional
|
|
|
11
11
|
from attr import dataclass
|
|
12
12
|
|
|
13
13
|
from pipecat.observers.base_observer import BaseObserver, FramePushed
|
|
14
|
-
from pipecat.utils.asyncio import BaseTaskManager
|
|
15
|
-
from pipecat.utils.watchdog_queue import WatchdogQueue
|
|
16
|
-
from pipecat.utils.watchdog_reseter import WatchdogReseter
|
|
14
|
+
from pipecat.utils.asyncio.task_manager import BaseTaskManager
|
|
15
|
+
from pipecat.utils.asyncio.watchdog_queue import WatchdogQueue
|
|
17
16
|
|
|
18
17
|
|
|
19
18
|
@dataclass
|
|
@@ -28,7 +27,7 @@ class Proxy:
|
|
|
28
27
|
observer: BaseObserver
|
|
29
28
|
|
|
30
29
|
|
|
31
|
-
class TaskObserver(
|
|
30
|
+
class TaskObserver(BaseObserver):
|
|
32
31
|
"""This is a pipeline frame observer that is meant to be used as a proxy to
|
|
33
32
|
the user provided observers. That is, this is the observer that should be
|
|
34
33
|
passed to the frame processors. Then, every time a frame is pushed this
|
|
@@ -54,7 +53,6 @@ class TaskObserver(WatchdogReseter, BaseObserver):
|
|
|
54
53
|
self._proxies: Optional[Dict[BaseObserver, Proxy]] = (
|
|
55
54
|
None # Becomes a dict after start() is called
|
|
56
55
|
)
|
|
57
|
-
self._watchdog_timers_enabled = False
|
|
58
56
|
|
|
59
57
|
def add_observer(self, observer: BaseObserver):
|
|
60
58
|
# Add the observer to the list.
|
|
@@ -79,9 +77,8 @@ class TaskObserver(WatchdogReseter, BaseObserver):
|
|
|
79
77
|
if observer in self._observers:
|
|
80
78
|
self._observers.remove(observer)
|
|
81
79
|
|
|
82
|
-
async def start(self
|
|
80
|
+
async def start(self):
|
|
83
81
|
"""Starts all proxy observer tasks."""
|
|
84
|
-
self._watchdog_timers_enabled = watchdog_timers_enabled
|
|
85
82
|
self._proxies = self._create_proxies(self._observers)
|
|
86
83
|
|
|
87
84
|
async def stop(self):
|
|
@@ -96,14 +93,11 @@ class TaskObserver(WatchdogReseter, BaseObserver):
|
|
|
96
93
|
for proxy in self._proxies.values():
|
|
97
94
|
await proxy.queue.put(data)
|
|
98
95
|
|
|
99
|
-
def reset_watchdog(self):
|
|
100
|
-
self._task_manager.reset_watchdog(asyncio.current_task())
|
|
101
|
-
|
|
102
96
|
def _started(self) -> bool:
|
|
103
97
|
return self._proxies is not None
|
|
104
98
|
|
|
105
99
|
def _create_proxy(self, observer: BaseObserver) -> Proxy:
|
|
106
|
-
queue = WatchdogQueue(self
|
|
100
|
+
queue = WatchdogQueue(self._task_manager)
|
|
107
101
|
task = self._task_manager.create_task(
|
|
108
102
|
self._proxy_task_handler(queue, observer),
|
|
109
103
|
f"TaskObserver::{observer}::_proxy_task_handler",
|
|
@@ -10,7 +10,7 @@ from typing import Awaitable, Callable, Optional
|
|
|
10
10
|
from pipecat.frames.frames import CancelFrame, EndFrame, Frame, StartFrame
|
|
11
11
|
from pipecat.processors.frame_processor import FrameDirection, FrameProcessor
|
|
12
12
|
from pipecat.processors.producer_processor import ProducerProcessor, identity_transformer
|
|
13
|
-
from pipecat.utils.watchdog_queue import WatchdogQueue
|
|
13
|
+
from pipecat.utils.asyncio.watchdog_queue import WatchdogQueue
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class ConsumerProcessor(FrameProcessor):
|
|
@@ -32,7 +32,7 @@ class ConsumerProcessor(FrameProcessor):
|
|
|
32
32
|
super().__init__(**kwargs)
|
|
33
33
|
self._transformer = transformer
|
|
34
34
|
self._direction = direction
|
|
35
|
-
self.
|
|
35
|
+
self._producer = producer
|
|
36
36
|
self._consumer_task: Optional[asyncio.Task] = None
|
|
37
37
|
|
|
38
38
|
async def process_frame(self, frame: Frame, direction: FrameDirection):
|
|
@@ -49,6 +49,7 @@ class ConsumerProcessor(FrameProcessor):
|
|
|
49
49
|
|
|
50
50
|
async def _start(self, _: StartFrame):
|
|
51
51
|
if not self._consumer_task:
|
|
52
|
+
self._queue: WatchdogQueue = self._producer.add_consumer()
|
|
52
53
|
self._consumer_task = self.create_task(self._consumer_task_handler())
|
|
53
54
|
|
|
54
55
|
async def _stop(self, _: EndFrame):
|
|
@@ -29,11 +29,10 @@ from pipecat.frames.frames import (
|
|
|
29
29
|
from pipecat.metrics.metrics import LLMTokenUsage, MetricsData
|
|
30
30
|
from pipecat.observers.base_observer import BaseObserver, FramePushed
|
|
31
31
|
from pipecat.processors.metrics.frame_processor_metrics import FrameProcessorMetrics
|
|
32
|
-
from pipecat.utils.asyncio import BaseTaskManager
|
|
32
|
+
from pipecat.utils.asyncio.task_manager import BaseTaskManager
|
|
33
|
+
from pipecat.utils.asyncio.watchdog_event import WatchdogEvent
|
|
34
|
+
from pipecat.utils.asyncio.watchdog_queue import WatchdogQueue
|
|
33
35
|
from pipecat.utils.base_object import BaseObject
|
|
34
|
-
from pipecat.utils.watchdog_event import WatchdogEvent
|
|
35
|
-
from pipecat.utils.watchdog_queue import WatchdogQueue
|
|
36
|
-
from pipecat.utils.watchdog_reseter import WatchdogReseter
|
|
37
36
|
|
|
38
37
|
|
|
39
38
|
class FrameDirection(Enum):
|
|
@@ -49,7 +48,7 @@ class FrameProcessorSetup:
|
|
|
49
48
|
watchdog_timers_enabled: bool = False
|
|
50
49
|
|
|
51
50
|
|
|
52
|
-
class FrameProcessor(
|
|
51
|
+
class FrameProcessor(BaseObject):
|
|
53
52
|
def __init__(
|
|
54
53
|
self,
|
|
55
54
|
*,
|
|
@@ -89,7 +88,6 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
89
88
|
self._enable_usage_metrics = False
|
|
90
89
|
self._report_only_initial_ttfb = False
|
|
91
90
|
self._interruption_strategies: List[BaseInterruptionStrategy] = []
|
|
92
|
-
self._watchdog_timers_enabled = False
|
|
93
91
|
|
|
94
92
|
# Indicates whether we have received the StartFrame.
|
|
95
93
|
self.__started = False
|
|
@@ -148,8 +146,10 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
148
146
|
return self._interruption_strategies
|
|
149
147
|
|
|
150
148
|
@property
|
|
151
|
-
def
|
|
152
|
-
|
|
149
|
+
def task_manager(self) -> BaseTaskManager:
|
|
150
|
+
if not self._task_manager:
|
|
151
|
+
raise Exception(f"{self} TaskManager is still not initialized.")
|
|
152
|
+
return self._task_manager
|
|
153
153
|
|
|
154
154
|
def can_generate_metrics(self) -> bool:
|
|
155
155
|
return False
|
|
@@ -206,7 +206,7 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
206
206
|
name = f"{self}::{name}"
|
|
207
207
|
else:
|
|
208
208
|
name = f"{self}::{coroutine.cr_code.co_name}"
|
|
209
|
-
return self.
|
|
209
|
+
return self.task_manager.create_task(
|
|
210
210
|
coroutine,
|
|
211
211
|
name,
|
|
212
212
|
enable_watchdog_logging=(
|
|
@@ -215,7 +215,7 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
215
215
|
else self._enable_watchdog_logging
|
|
216
216
|
),
|
|
217
217
|
enable_watchdog_timers=(
|
|
218
|
-
enable_watchdog_timers if enable_watchdog_timers else self.
|
|
218
|
+
enable_watchdog_timers if enable_watchdog_timers else self._enable_watchdog_timers
|
|
219
219
|
),
|
|
220
220
|
watchdog_timeout=(
|
|
221
221
|
watchdog_timeout_secs if watchdog_timeout_secs else self._watchdog_timeout_secs
|
|
@@ -223,13 +223,13 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
223
223
|
)
|
|
224
224
|
|
|
225
225
|
async def cancel_task(self, task: asyncio.Task, timeout: Optional[float] = None):
|
|
226
|
-
await self.
|
|
226
|
+
await self.task_manager.cancel_task(task, timeout)
|
|
227
227
|
|
|
228
228
|
async def wait_for_task(self, task: asyncio.Task, timeout: Optional[float] = None):
|
|
229
|
-
await self.
|
|
229
|
+
await self.task_manager.wait_for_task(task, timeout)
|
|
230
230
|
|
|
231
231
|
def reset_watchdog(self):
|
|
232
|
-
self.
|
|
232
|
+
self.task_manager.task_reset_watchdog()
|
|
233
233
|
|
|
234
234
|
async def setup(self, setup: FrameProcessorSetup):
|
|
235
235
|
self._clock = setup.clock
|
|
@@ -241,7 +241,7 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
241
241
|
else setup.watchdog_timers_enabled
|
|
242
242
|
)
|
|
243
243
|
if self._metrics is not None:
|
|
244
|
-
await self._metrics.setup(self._task_manager
|
|
244
|
+
await self._metrics.setup(self._task_manager)
|
|
245
245
|
|
|
246
246
|
async def cleanup(self):
|
|
247
247
|
await super().cleanup()
|
|
@@ -256,7 +256,7 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
256
256
|
self.logger.debug(f"Linking {self} -> {self._next}")
|
|
257
257
|
|
|
258
258
|
def get_event_loop(self) -> asyncio.AbstractEventLoop:
|
|
259
|
-
return self.
|
|
259
|
+
return self.task_manager.get_event_loop()
|
|
260
260
|
|
|
261
261
|
def set_parent(self, parent: "FrameProcessor"):
|
|
262
262
|
self._parent = parent
|
|
@@ -269,11 +269,6 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
269
269
|
raise Exception(f"{self} Clock is still not initialized.")
|
|
270
270
|
return self._clock
|
|
271
271
|
|
|
272
|
-
def get_task_manager(self) -> BaseTaskManager:
|
|
273
|
-
if not self._task_manager:
|
|
274
|
-
raise Exception(f"{self} TaskManager is still not initialized.")
|
|
275
|
-
return self._task_manager
|
|
276
|
-
|
|
277
272
|
async def queue_frame(
|
|
278
273
|
self,
|
|
279
274
|
frame: Frame,
|
|
@@ -424,11 +419,9 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
424
419
|
if not self.__input_frame_task:
|
|
425
420
|
self.__should_block_frames = False
|
|
426
421
|
if not self.__input_event:
|
|
427
|
-
self.__input_event = WatchdogEvent(
|
|
428
|
-
self, watchdog_enabled=self.watchdog_timers_enabled
|
|
429
|
-
)
|
|
422
|
+
self.__input_event = WatchdogEvent(self.task_manager)
|
|
430
423
|
self.__input_event.clear()
|
|
431
|
-
self.__input_queue = WatchdogQueue(self
|
|
424
|
+
self.__input_queue = WatchdogQueue(self.task_manager)
|
|
432
425
|
self.__input_frame_task = self.create_task(self.__input_frame_task_handler())
|
|
433
426
|
|
|
434
427
|
async def __cancel_input_task(self):
|
|
@@ -460,7 +453,7 @@ class FrameProcessor(WatchdogReseter, BaseObject):
|
|
|
460
453
|
|
|
461
454
|
def __create_push_task(self):
|
|
462
455
|
if not self.__push_frame_task:
|
|
463
|
-
self.__push_queue = WatchdogQueue(self
|
|
456
|
+
self.__push_queue = WatchdogQueue(self.task_manager)
|
|
464
457
|
self.__push_frame_task = self.create_task(self.__push_frame_task_handler())
|
|
465
458
|
|
|
466
459
|
async def __cancel_push_task(self):
|
|
@@ -67,8 +67,8 @@ from pipecat.services.llm_service import (
|
|
|
67
67
|
from pipecat.transports.base_input import BaseInputTransport
|
|
68
68
|
from pipecat.transports.base_output import BaseOutputTransport
|
|
69
69
|
from pipecat.transports.base_transport import BaseTransport
|
|
70
|
+
from pipecat.utils.asyncio.watchdog_queue import WatchdogQueue
|
|
70
71
|
from pipecat.utils.string import match_endofsentence
|
|
71
|
-
from pipecat.utils.watchdog_queue import WatchdogQueue
|
|
72
72
|
|
|
73
73
|
RTVI_PROTOCOL_VERSION = "0.3.0"
|
|
74
74
|
|
|
@@ -755,10 +755,10 @@ class RTVIProcessor(FrameProcessor):
|
|
|
755
755
|
|
|
756
756
|
async def _start(self, frame: StartFrame):
|
|
757
757
|
if not self._action_task:
|
|
758
|
-
self._action_queue = WatchdogQueue(self
|
|
758
|
+
self._action_queue = WatchdogQueue(self.task_manager)
|
|
759
759
|
self._action_task = self.create_task(self._action_task_handler())
|
|
760
760
|
if not self._message_task:
|
|
761
|
-
self._message_queue = WatchdogQueue(self
|
|
761
|
+
self._message_queue = WatchdogQueue(self.task_manager)
|
|
762
762
|
self._message_task = self.create_task(self._message_task_handler())
|
|
763
763
|
await self._call_event_handler("on_bot_started")
|
|
764
764
|
|
|
@@ -18,7 +18,7 @@ from pipecat.metrics.metrics import (
|
|
|
18
18
|
TTFBMetricsData,
|
|
19
19
|
TTSUsageMetricsData,
|
|
20
20
|
)
|
|
21
|
-
from pipecat.utils.asyncio import
|
|
21
|
+
from pipecat.utils.asyncio.task_manager import BaseTaskManager
|
|
22
22
|
from pipecat.utils.base_object import BaseObject
|
|
23
23
|
|
|
24
24
|
|
|
@@ -32,14 +32,14 @@ class FrameProcessorMetrics(BaseObject):
|
|
|
32
32
|
self._should_report_ttfb = True
|
|
33
33
|
self._logger = logger
|
|
34
34
|
|
|
35
|
-
async def setup(self, task_manager:
|
|
35
|
+
async def setup(self, task_manager: BaseTaskManager):
|
|
36
36
|
self._task_manager = task_manager
|
|
37
37
|
|
|
38
38
|
async def cleanup(self):
|
|
39
39
|
await super().cleanup()
|
|
40
40
|
|
|
41
41
|
@property
|
|
42
|
-
def task_manager(self) ->
|
|
42
|
+
def task_manager(self) -> BaseTaskManager:
|
|
43
43
|
return self._task_manager
|
|
44
44
|
|
|
45
45
|
@property
|