dv-pipecat-ai 0.0.82.dev815__tar.gz → 0.0.82.dev857__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.
Potentially problematic release.
This version of dv-pipecat-ai might be problematic. Click here for more details.
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/github.yml +23 -7
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/promote-prod.yml +17 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/CHANGELOG.md +349 -2
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/CLAUDE.md +52 -7
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/PKG-INFO +8 -3
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/README.md +1 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/env.example +15 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/deployment.yaml +13 -2
- dv_pipecat_ai-0.0.82.dev857/k8s/dv-pipecat/values-canary.yaml +13 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/values-prod.yaml +11 -3
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/values-stage.yaml +3 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/values.yaml +19 -9
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/pyproject.toml +20 -3
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/dv_pipecat_ai.egg-info/PKG-INFO +8 -3
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/dv_pipecat_ai.egg-info/SOURCES.txt +27 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/dv_pipecat_ai.egg-info/requires.txt +8 -1
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/adapters/base_llm_adapter.py +95 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/adapters/services/anthropic_adapter.py +353 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +40 -2
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/services/bedrock_adapter.py +40 -2
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/adapters/services/gemini_adapter.py +311 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/adapters/services/open_ai_adapter.py +120 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +39 -1
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/dtmf/types.py +47 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/dtmf/utils.py +70 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/filters/aic_filter.py +199 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/utils.py +9 -7
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/extensions/ivr/ivr_navigator.py +452 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/frames/frames.py +156 -43
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/pipeline/llm_switcher.py +76 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/parallel_pipeline.py +3 -3
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/pipeline/service_switcher.py +144 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/task.py +68 -28
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/task_observer.py +10 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/aggregators/dtmf_aggregator.py +2 -2
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors/aggregators/llm_context.py +277 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/aggregators/llm_response.py +48 -15
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors/aggregators/llm_response_universal.py +840 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/aggregators/openai_llm_context.py +3 -3
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/dtmf_aggregator.py +0 -2
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/filters/stt_mute_filter.py +0 -2
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/frame_processor.py +18 -11
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/frameworks/rtvi.py +17 -10
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/metrics/sentry.py +2 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/runner/daily.py +233 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/runner/run.py +1 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/runner/utils.py +7 -7
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/asterisk.py +20 -4
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/exotel.py +1 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/plivo.py +1 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/telnyx.py +1 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/twilio.py +1 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/__init__.py +2 -2
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/anthropic/llm.py +113 -28
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/asyncai/tts.py +4 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws/llm.py +82 -8
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws/tts.py +0 -10
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws_nova_sonic/aws.py +5 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/cartesia/tts.py +28 -16
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/cerebras/llm.py +15 -10
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/deepgram/stt.py +8 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/deepseek/llm.py +13 -8
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/fireworks/llm.py +13 -8
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/fish/tts.py +8 -6
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/gemini_multimodal_live/gemini.py +5 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/gladia/config.py +7 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/gladia/stt.py +23 -15
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/llm.py +159 -59
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/llm_openai.py +18 -3
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/grok/llm.py +2 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/llm_service.py +38 -3
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/mem0/memory.py +2 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/mistral/llm.py +5 -6
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/nim/llm.py +2 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai/base_llm.py +88 -26
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai/image.py +6 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai_realtime_beta/openai.py +5 -2
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openpipe/llm.py +6 -8
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/perplexity/llm.py +13 -8
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/playht/tts.py +9 -6
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/rime/tts.py +1 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/sambanova/llm.py +18 -13
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/services/sarvam/tts.py +647 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/speechmatics/stt.py +2 -2
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/tavus/video.py +1 -1
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/tts_service.py +15 -5
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/vistaar/llm.py +2 -5
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/transports/base_input.py +32 -19
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/transports/base_output.py +39 -5
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/services/daily.py → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/daily/transport.py +57 -36
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/services/helpers/daily_rest.py → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/daily/utils.py +4 -1
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/services/livekit.py → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/livekit/transport.py +54 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/network/fastapi_websocket.py +25 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/network/small_webrtc.py +25 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/network/webrtc_connection.py +25 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/network/websocket_client.py +25 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/network/websocket_server.py +25 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/services/daily.py +25 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/services/helpers/__init__.py +0 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/services/helpers/daily_rest.py +23 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/services/livekit.py +25 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/services/tavus.py +25 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/network/webrtc_connection.py → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/smallwebrtc/connection.py +4 -3
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/network/small_webrtc.py → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/smallwebrtc/transport.py +3 -2
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/tavus/__init__.py +0 -0
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/services/tavus.py → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/tavus/transport.py +1 -1
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/websocket/__init__.py +0 -0
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/network/fastapi_websocket.py → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/websocket/fastapi.py +1 -1
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/whatsapp/__init__.py +0 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/whatsapp/api.py +345 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/whatsapp/client.py +364 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/utils/__init__.py +0 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/utils/asyncio/__init__.py +0 -0
- dv_pipecat_ai-0.0.82.dev857/src/pipecat/utils/text/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/uv.lock +53 -33
- dv_pipecat_ai-0.0.82.dev815/k8s/dv-pipecat/values-canary.yaml +0 -9
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/adapters/base_llm_adapter.py +0 -57
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/adapters/services/anthropic_adapter.py +0 -53
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/adapters/services/gemini_adapter.py +0 -41
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/adapters/services/open_ai_adapter.py +0 -39
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/runner/daily.py +0 -132
- dv_pipecat_ai-0.0.82.dev815/src/pipecat/services/sarvam/tts.py +0 -242
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.dockerignore +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/build.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/coverage.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/format.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/publish.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/publish_test.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/python-compatibility.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/set-traffic-split.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/smart-auto-release.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/sync-quickstart.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/tests.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.gitignore +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.readthedocs.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/CHANGELOG.md.template +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/CONTRIBUTING.md +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/LICENSE +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/MANIFEST.in +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/ansible_deployment.sh +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/cleanup_old_containers.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/codecov.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/create-new-machine/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/create-new-machine/ansible_setup.sh +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/create-new-machine/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/create-new-machine/replace_env.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/create-new-machine/setup_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/create_inventory.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/delete_old_dockers.sh +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/deploy.sh +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/deploy_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/docker-compose.dev.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/dump_logs.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/fetch_logs.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/.helmignore +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/Chart.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/dv-pipecat/templates/service.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/k8s/istio/destination-virtualservice.yaml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/merge-code-into-single-file.sh +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/pipecat.png +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/restart.sh +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/restart_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/setup.cfg +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/schemas/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/schemas/direct_function.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/schemas/function_schema.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/adapters/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/audio/filters → dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/dtmf}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/audio/interruptions → dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/filters}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/filters/koala_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/filters/krisp_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/audio/mixers → dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/interruptions}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/audio/turn → dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/mixers}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/resamplers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/audio/turn/smart_turn → dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/turn}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/audio/vad → dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/turn/smart_turn}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/audio/vad/data → dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/vad}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/clocks → dv_pipecat_ai-0.0.82.dev857/src/pipecat/audio/vad/data}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/vad/silero.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/extensions → dv_pipecat_ai-0.0.82.dev857/src/pipecat/clocks}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/clocks/base_clock.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/clocks/system_clock.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/extensions/voicemail → dv_pipecat_ai-0.0.82.dev857/src/pipecat/extensions}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/frames → dv_pipecat_ai-0.0.82.dev857/src/pipecat/extensions/ivr}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/metrics → dv_pipecat_ai-0.0.82.dev857/src/pipecat/extensions/voicemail}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/observers → dv_pipecat_ai-0.0.82.dev857/src/pipecat/frames}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/frames/frames.proto +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/observers/loggers → dv_pipecat_ai-0.0.82.dev857/src/pipecat/metrics}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/metrics/metrics.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/pipeline → dv_pipecat_ai-0.0.82.dev857/src/pipecat/observers}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/observers/base_observer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/processors → dv_pipecat_ai-0.0.82.dev857/src/pipecat/observers/loggers}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/observers/turn_tracking_observer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/processors/aggregators → dv_pipecat_ai-0.0.82.dev857/src/pipecat/pipeline}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/base_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/base_task.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/pipeline.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/runner.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/processors/audio → dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/processors/filters → dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors/aggregators}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/aggregators/gated.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/aggregators/gated_openai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/aggregators/sentence.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/aggregators/user_response.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/async_generator.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/processors/frameworks → dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors/audio}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/consumer_processor.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/processors/gstreamer → dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors/filters}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/filters/frame_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/filters/function_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/filters/identity_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/filters/null_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/processors/metrics → dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors/frameworks}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/frameworks/langchain.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/services/asyncai → dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors/gstreamer}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/idle_frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/logger.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/services/mistral → dv_pipecat_ai-0.0.82.dev857/src/pipecat/processors/metrics}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/producer_processor.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/text_transformer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/transcript_processor.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/processors/user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/py.typed +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/runner/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/runner/livekit.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/runner/types.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/base_serializer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/convox.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/genesys.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/livekit.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/serializers/protobuf.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/ai_service.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/ai_services.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/anthropic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/assemblyai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/assemblyai/models.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/assemblyai/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/services/soniox → dv_pipecat_ai-0.0.82.dev857/src/pipecat/services/asyncai}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws/utils.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/aws_nova_sonic/ready.wav +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/azure/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/azure/common.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/azure/image.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/azure/llm.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/azure/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/azure/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/cartesia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/cartesia/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/cerebras/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/deepgram/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/deepgram/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/deepseek/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/elevenlabs/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/elevenlabs/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/fal/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/fal/image.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/fal/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/fireworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/fish/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/gladia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/frames.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/google.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/image.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/test-google-chirp.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/google/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/grok/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/groq/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/groq/llm.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/groq/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/groq/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/hamsa/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/hamsa/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/heygen/api.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/heygen/client.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/heygen/video.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/image_service.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/inworld/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/inworld/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/lmnt/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/lmnt/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/mcp_service.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/mem0/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/minimax/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/minimax/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/sync → dv_pipecat_ai-0.0.82.dev857/src/pipecat/services/mistral}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/moondream/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/moondream/vision.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/neuphonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/neuphonic/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/nim/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/ollama/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/ollama/llm.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai/llm.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openpipe/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openrouter/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/openrouter/llm.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/perplexity/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/piper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/piper/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/playht/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/qwen/llm.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/rime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/riva/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/riva/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/riva/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/sambanova/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/sambanova/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/sarvam/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/simli/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/simli/video.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/tests → dv_pipecat_ai-0.0.82.dev857/src/pipecat/services/soniox}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/soniox/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/speechmatics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/stt_service.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/together/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/together/llm.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/ultravox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/ultravox/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/vision_service.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/vistaar/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/websocket_service.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/whisper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/whisper/base_stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/whisper/stt.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/xtts/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/services/xtts/tts.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/transcriptions → dv_pipecat_ai-0.0.82.dev857/src/pipecat/sync}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/sync/base_notifier.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/sync/event_notifier.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports → dv_pipecat_ai-0.0.82.dev857/src/pipecat/tests}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/tests/utils.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/local → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transcriptions}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/transcriptions/language.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/network → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/transports/base_transport.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/services → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/daily}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/services/helpers → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/livekit}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/utils → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/local}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/transports/local/audio.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/transports/local/tk.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/utils/asyncio → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/network}/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815/src/pipecat/utils/text → dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/services}/__init__.py +0 -0
- /dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/network/websocket_client.py → /dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/websocket/client.py +0 -0
- /dv_pipecat_ai-0.0.82.dev815/src/pipecat/transports/network/websocket_server.py → /dv_pipecat_ai-0.0.82.dev857/src/pipecat/transports/websocket/server.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/asyncio/task_manager.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/base_object.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/logger_config.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/network.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/string.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/text/base_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/time.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/tracing/__init__.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/tracing/class_decorators.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/tracing/service_attributes.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/tracing/service_decorators.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/tracing/setup.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/src/pipecat/utils/utils.py +0 -0
- {dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/stop_container.yml +0 -0
|
@@ -169,20 +169,36 @@ jobs:
|
|
|
169
169
|
run: |
|
|
170
170
|
echo "🔍 Checking if KEDA is already installed..."
|
|
171
171
|
|
|
172
|
+
# Ensure KEDA Helm repository exists and is up-to-date for both install and upgrade paths
|
|
173
|
+
if ! helm repo list | grep -q '^kedacore\s'; then
|
|
174
|
+
helm repo add kedacore https://kedacore.github.io/charts
|
|
175
|
+
else
|
|
176
|
+
# Force update in case URL changed or local cache is stale
|
|
177
|
+
helm repo add kedacore https://kedacore.github.io/charts --force-update
|
|
178
|
+
fi
|
|
179
|
+
helm repo update
|
|
180
|
+
|
|
172
181
|
# Install KEDA if needed
|
|
173
182
|
if ! kubectl get deployment -n keda keda-operator >/dev/null 2>&1; then
|
|
174
183
|
echo "🚀 Installing KEDA core..."
|
|
175
184
|
|
|
176
|
-
#
|
|
177
|
-
helm
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
# Install KEDA core (required before HTTP add-on)
|
|
181
|
-
helm install keda kedacore/keda --namespace keda --create-namespace --wait --timeout=5m
|
|
185
|
+
# Install KEDA core (required before HTTP add-on) with 30s HTTP timeout
|
|
186
|
+
helm install keda kedacore/keda --namespace keda --create-namespace --wait --timeout=5m \
|
|
187
|
+
--set operator.extraEnvs[0].name=KEDA_HTTP_DEFAULT_TIMEOUT \
|
|
188
|
+
--set operator.extraEnvs[0].value="30000"
|
|
182
189
|
|
|
183
|
-
echo "✅ KEDA core installation completed"
|
|
190
|
+
echo "✅ KEDA core installation completed with 30s HTTP timeout"
|
|
184
191
|
else
|
|
185
192
|
echo "✅ KEDA core already installed"
|
|
193
|
+
|
|
194
|
+
# Update existing KEDA installation to ensure HTTP timeout is set
|
|
195
|
+
echo "🔄 Updating KEDA configuration to ensure 30s HTTP timeout..."
|
|
196
|
+
helm upgrade keda kedacore/keda --namespace keda --reuse-values \
|
|
197
|
+
--set operator.extraEnvs[0].name=KEDA_HTTP_DEFAULT_TIMEOUT \
|
|
198
|
+
--set operator.extraEnvs[0].value="30000" \
|
|
199
|
+
--wait --timeout=5m
|
|
200
|
+
|
|
201
|
+
echo "✅ KEDA configuration updated with 30s HTTP timeout"
|
|
186
202
|
fi
|
|
187
203
|
|
|
188
204
|
# Verify KEDA CRDs are available
|
{dv_pipecat_ai-0.0.82.dev815 → dv_pipecat_ai-0.0.82.dev857}/.github/workflows/promote-prod.yml
RENAMED
|
@@ -15,6 +15,7 @@ env:
|
|
|
15
15
|
HELM_RELEASE_NAME: dv-pipecat
|
|
16
16
|
CLUSTER: desivocal-prod-us-e1-cluster
|
|
17
17
|
CLUSTER_ZONE: us-east1
|
|
18
|
+
SECRETS_JSON: ${{ secrets.PROD_SECRETS_JSON }}
|
|
18
19
|
|
|
19
20
|
jobs:
|
|
20
21
|
promote:
|
|
@@ -25,6 +26,9 @@ jobs:
|
|
|
25
26
|
steps:
|
|
26
27
|
- uses: actions/checkout@v4
|
|
27
28
|
|
|
29
|
+
- name: Install jq
|
|
30
|
+
run: sudo apt-get update && sudo apt-get install -y jq
|
|
31
|
+
|
|
28
32
|
- uses: google-github-actions/auth@v2
|
|
29
33
|
with:
|
|
30
34
|
workload_identity_provider: projects/623676891410/locations/global/workloadIdentityPools/desivocal-staging-pool/providers/github
|
|
@@ -51,8 +55,21 @@ jobs:
|
|
|
51
55
|
# 1 roll stable Deployment to desired image
|
|
52
56
|
- name: Upgrade stable release
|
|
53
57
|
run: |
|
|
58
|
+
PROD_ADMIN_API_KEY=$(echo "$SECRETS_JSON" | jq -r '.ADMIN_API_KEY // empty')
|
|
59
|
+
if [ -z "$PROD_ADMIN_API_KEY" ]; then
|
|
60
|
+
echo "❌ ADMIN_API_KEY not found in SECRETS_JSON"
|
|
61
|
+
exit 1
|
|
62
|
+
fi
|
|
63
|
+
PROD_CALLING_BACKEND_URL=$(echo "$SECRETS_JSON" | jq -r '.CALLING_BACKEND_URL // empty')
|
|
64
|
+
if [ -z "$PROD_CALLING_BACKEND_URL" ]; then
|
|
65
|
+
echo "❌ CALLING_BACKEND_URL not found in SECRETS_JSON"
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
echo "🚀 Promoting to stable production..."
|
|
54
69
|
helm upgrade $HELM_RELEASE_NAME ./k8s/dv-pipecat \
|
|
55
70
|
-f ./k8s/dv-pipecat/values-prod.yaml \
|
|
56
71
|
--set image.repository=$REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE_NAME \
|
|
57
72
|
--set image.tag=${{ steps.tag.outputs.TAG }} \
|
|
73
|
+
--set ADMIN_API_KEY="${PROD_ADMIN_API_KEY}" \
|
|
74
|
+
--set CALLING_BACKEND_URL="${PROD_CALLING_BACKEND_URL}" \
|
|
58
75
|
--namespace default
|
|
@@ -5,6 +5,353 @@ 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
|
+
## [0.0.84] - 2025-09-05
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Add the ability to send DTMF to `LiveKitTransport`.
|
|
13
|
+
|
|
14
|
+
- Expanded support for universal `LLMContext` to the Anthropic LLM service.
|
|
15
|
+
Using the universal `LLMContext` and associated `LLMContextAggregatorPair` is
|
|
16
|
+
a pre-requisite for using `LLMSwitcher` to switch between LLMs at runtime.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Updated `daily-python` to 0.19.9.
|
|
21
|
+
|
|
22
|
+
- Restored `DailyTransport`'s native DTMF support using Daily's `send_dtmf()`
|
|
23
|
+
method instead of generated audio tones.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Fixed a `AWSBedrockLLMService` crash caused by an extra `await`.
|
|
28
|
+
|
|
29
|
+
- Fixed a `OpenAIImageGenService` issue where it was not creating
|
|
30
|
+
`URLImageRawFrame` correctly.
|
|
31
|
+
|
|
32
|
+
## [0.0.83] - 2025-09-03
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- Added multilingual support for AsyncAI in `AsyncAITTSService` and `AsyncAIHttpTTSService`.
|
|
37
|
+
|
|
38
|
+
- New `languages`: `es`, `fr`, `de`, `it`.
|
|
39
|
+
|
|
40
|
+
- Added new frames `InputTransportMessageUrgentFrame` and
|
|
41
|
+
`DailyInputTransportMessageUrgentFrame` for transport messages received from
|
|
42
|
+
external sources.
|
|
43
|
+
|
|
44
|
+
- Added `UserSpeakingFrame`. This will be sent upstream and downstream while VAD
|
|
45
|
+
detects the user is speaking.
|
|
46
|
+
|
|
47
|
+
- Expanded support for universal `LLMContext` to more LLM services. Using the
|
|
48
|
+
universal `LLMContext` and associated `LLMContextAggregatorPair` is a
|
|
49
|
+
pre-requisite for using `LLMSwitcher` to switch between LLMs at runtime.
|
|
50
|
+
Here are the newly-supported services:
|
|
51
|
+
|
|
52
|
+
- Azure
|
|
53
|
+
- Cerebras
|
|
54
|
+
- Deepseek
|
|
55
|
+
- Fireworks AI
|
|
56
|
+
- Google Vertex AI
|
|
57
|
+
- Grok
|
|
58
|
+
- Groq
|
|
59
|
+
- Mistral
|
|
60
|
+
- NVIDIA NIM
|
|
61
|
+
- Ollama
|
|
62
|
+
- OpenPipe
|
|
63
|
+
- OpenRouter
|
|
64
|
+
- Perplexity
|
|
65
|
+
- Qwen
|
|
66
|
+
- SambaNova
|
|
67
|
+
- Together.ai
|
|
68
|
+
|
|
69
|
+
- Added support for WhatsApp User-initiated Calls.
|
|
70
|
+
|
|
71
|
+
- Added new audio filter `AICFilter`, speech enhancement for improving VAD/STT
|
|
72
|
+
performance, no ONNX dependency.
|
|
73
|
+
See https://ai-coustics.com/sdk/
|
|
74
|
+
|
|
75
|
+
- Added a timeout around cancel input tasks to prevent indefinite hangs when
|
|
76
|
+
cancellation is swallowed by third-party code.
|
|
77
|
+
|
|
78
|
+
- Added `pipecat.extensions.ivr` for automated IVR system navigation with
|
|
79
|
+
configurable goals and conversation handling. Supports DTMF input, verbal
|
|
80
|
+
responses, and intelligent menu traversal.
|
|
81
|
+
|
|
82
|
+
Basic usage:
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
from pipecat.extensions.ivr.ivr_navigator import IVRNavigator
|
|
86
|
+
|
|
87
|
+
# Create IVR navigator with your goal
|
|
88
|
+
ivr_navigator = IVRNavigator(
|
|
89
|
+
llm=llm_service,
|
|
90
|
+
ivr_prompt="Navigate to billing department to dispute a charge"
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
# Handle different outcomes
|
|
94
|
+
@ivr_navigator.event_handler("on_conversation_detected")
|
|
95
|
+
async def on_conversation(processor, conversation_history):
|
|
96
|
+
# Switch to normal conversation mode
|
|
97
|
+
pass
|
|
98
|
+
|
|
99
|
+
@ivr_navigator.event_handler("on_ivr_status_changed")
|
|
100
|
+
async def on_ivr_status(processor, status):
|
|
101
|
+
if status == IVRStatus.COMPLETED:
|
|
102
|
+
# End pipeline, transfer call, or start bot conversation
|
|
103
|
+
elif status == IVRStatus.STUCK:
|
|
104
|
+
# Handle navigation failure
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
- `BaseOutputTransport` now implements `write_dtmf()` by loading DTMF audio and
|
|
108
|
+
sending it through the transport. This makes sending DTMF generic across all
|
|
109
|
+
output transports.
|
|
110
|
+
|
|
111
|
+
- Added new config parameters to `GladiaSTTService`.
|
|
112
|
+
- PreProcessingConfig > `audio_enhancer` to enhance audio quality.
|
|
113
|
+
- CustomVocabularyItem > `pronunciations` and `language` to specify special
|
|
114
|
+
pronunciations and in which language it will be pronounced.
|
|
115
|
+
|
|
116
|
+
### Changed
|
|
117
|
+
|
|
118
|
+
- `UserStartedSpeakingFrame` and `UserStoppedSpeakingFrame` are also pushed
|
|
119
|
+
upstream.
|
|
120
|
+
|
|
121
|
+
- `ParallelPipeline` now waits for `CancelFrame` to finish in all branches
|
|
122
|
+
before pushing it downstream.
|
|
123
|
+
|
|
124
|
+
- Added `sip_codecs` to the `DailyRoomSipParams`.
|
|
125
|
+
|
|
126
|
+
- Updated the `configure()` function in `pipecat.runner.daily` to include new
|
|
127
|
+
args to create SIP-enabled rooms. Additionally, added new args to control the
|
|
128
|
+
room and token expiration durations.
|
|
129
|
+
|
|
130
|
+
- `pipecat.frames.frames.KeypadEntry` is deprecated and has been moved to
|
|
131
|
+
`pipecat.audio.dtmf.types.KeypadEntry`.
|
|
132
|
+
|
|
133
|
+
- Updated `RimeTTSService`'s flush_audio message to conform with Rime's official
|
|
134
|
+
API.
|
|
135
|
+
|
|
136
|
+
- Updated the default model for `CerebrasLLMService` to GPT-OSS-120B.
|
|
137
|
+
|
|
138
|
+
### Removed
|
|
139
|
+
|
|
140
|
+
- Remove `StopInterruptionFrame`. This was a legacy frame that was not being
|
|
141
|
+
used really anywhere and it didn't provide any useful meaning. It was only
|
|
142
|
+
pushed after `UserStoppedSpeakingFrame`, so developers can just use
|
|
143
|
+
`UserStoppedSpeakingFrame`.
|
|
144
|
+
|
|
145
|
+
- `DailyTransport.write_dtmf()` has been removed in favor of the generic
|
|
146
|
+
`BaseOutputTransport.write_dtmf()`.
|
|
147
|
+
|
|
148
|
+
- Remove deprecated `DailyTransport.send_dtmf()`.
|
|
149
|
+
|
|
150
|
+
### Deprecated
|
|
151
|
+
|
|
152
|
+
- Transports have been re-organized.
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
pipecat.transports.network.small_webrtc -> pipecat.transports.smallwebrtc.transport
|
|
156
|
+
pipecat.transports.network.webrtc_connection -> pipecat.transports.smallwebrtc.connection
|
|
157
|
+
pipecat.transports.network.websocket_client -> pipecat.transports.websocket.client
|
|
158
|
+
pipecat.transports.network.websocket_server -> pipecat.transports.websocket.server
|
|
159
|
+
pipecat.transports.network.fastapi_websocket -> pipecat.transports.websocket.fastapi
|
|
160
|
+
pipecat.transports.services.daily -> pipecat.transports.daily.transport
|
|
161
|
+
pipecat.transports.services.helpers.daily_rest -> pipecat.transports.daily.utils
|
|
162
|
+
pipecat.transports.services.livekit -> pipecat.transports.livekit.transport
|
|
163
|
+
pipecat.transports.services.tavus -> pipecat.transports.tavus.transport
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
- `pipecat.frames.frames.KeypadEntry` is deprecated use
|
|
167
|
+
`pipecat.audio.dtmf.types.KeypadEntry` instead.
|
|
168
|
+
|
|
169
|
+
### Fixed
|
|
170
|
+
|
|
171
|
+
- Fixed an issue where messages received from the transport were always being resent.
|
|
172
|
+
|
|
173
|
+
- Fixed `SmallWebRTCTransport` to not use `mid` to decide if the transceiver should
|
|
174
|
+
be `sendrecv` or not.
|
|
175
|
+
|
|
176
|
+
- Fixed an issue where Deepgram swallowed `asyncio.CancelledError` during
|
|
177
|
+
disconnect, preventing tasks from being cancelled.
|
|
178
|
+
|
|
179
|
+
- Fixed an issue where `PipelineTask` was not cleaning up the observers.
|
|
180
|
+
|
|
181
|
+
### Performance
|
|
182
|
+
|
|
183
|
+
- Reduced latency and improved memory performance in `Mem0MemoryService`.
|
|
184
|
+
|
|
185
|
+
## [0.0.82] - 2025-08-28
|
|
186
|
+
|
|
187
|
+
### Added
|
|
188
|
+
|
|
189
|
+
- Added a new `LLMRunFrame` to trigger an LLM response:
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
await task.queue_frames([LLMRunFrame()])
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
This replaces `OpenAILLMContextFrame`, which you’d previously typically use
|
|
196
|
+
like this:
|
|
197
|
+
|
|
198
|
+
```python
|
|
199
|
+
await task.queue_frames([context_aggregator.user().get_context_frame()])
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Use this way of kicking off your conversation when you’ve already initialized
|
|
203
|
+
your context and are simply instructing the bot when to go:
|
|
204
|
+
|
|
205
|
+
```python
|
|
206
|
+
context = OpenAILLMContext(messages, tools)
|
|
207
|
+
context_aggregator = llm.create_context_aggregator(context)
|
|
208
|
+
|
|
209
|
+
# ...
|
|
210
|
+
|
|
211
|
+
@transport.event_handler("on_client_connected")
|
|
212
|
+
async def on_client_connected(transport, client):
|
|
213
|
+
# Kick off the conversation.
|
|
214
|
+
await task.queue_frames([LLMRunFrame()])
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Note that if you want to add new messages when kicking off the conversation,
|
|
218
|
+
you could use `LLMMessagesAppendFrame` with `run_llm=True` instead:
|
|
219
|
+
|
|
220
|
+
```python
|
|
221
|
+
@transport.event_handler("on_client_connected")
|
|
222
|
+
async def on_client_connected(transport, client):
|
|
223
|
+
# Kick off the conversation.
|
|
224
|
+
await task.queue_frames([LLMMessagesAppendFrame(new_messages, run_llm=True)])
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
In the rare case you don’t have a context aggregator in your pipeline, then
|
|
228
|
+
you may continue using a context frame.
|
|
229
|
+
|
|
230
|
+
- Added support for switching between audio+text to text-only modes within the
|
|
231
|
+
same pipeline. This is done by pushing
|
|
232
|
+
`LLMConfigureOutputFrame(skip_tts=True)` to enter text-only mode, and
|
|
233
|
+
disabling it to return to audio+text. The LLM will still generate tokens and
|
|
234
|
+
add them to the context, but they will not be sent to TTS.
|
|
235
|
+
|
|
236
|
+
- Added `skip_tts` field to `TextFrame`. This lets a text frame bypass TTS while
|
|
237
|
+
still being included in the LLM context. Useful for cases like structured text
|
|
238
|
+
that isn’t meant to be spoken but should still contribute to context.
|
|
239
|
+
|
|
240
|
+
- Added a `cancel_timeout_secs` argument to `PipelineTask` which defines how
|
|
241
|
+
long the pipeline has to complete cancellation. When `PipelineTask.cancel()`
|
|
242
|
+
is called, a `CancelFrame` is pushed through the pipeline and must reach the
|
|
243
|
+
end. If it does not reach the end within the specified time, a warning is
|
|
244
|
+
shown and the wait is aborted.
|
|
245
|
+
|
|
246
|
+
- Added a new "universal" (LLM-agnostic) `LLMContext` and accompanying
|
|
247
|
+
`LLMContextAggregatorPair`, which will eventually replace `OpenAILLMContext`
|
|
248
|
+
(and the other under-the-hood contexts) and the other context aggregators.
|
|
249
|
+
The new universal `LLMContext` machinery allows a single context to be shared
|
|
250
|
+
between different LLMs, enabling runtime LLM switching and scenarios like
|
|
251
|
+
failover.
|
|
252
|
+
|
|
253
|
+
From the developer's point of view, switching to using the new universal
|
|
254
|
+
context machinery will usually be a matter of going from this:
|
|
255
|
+
|
|
256
|
+
```python
|
|
257
|
+
context = OpenAILLMContext(messages, tools)
|
|
258
|
+
context_aggregator = llm.create_context_aggregator(context)
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
To this:
|
|
262
|
+
|
|
263
|
+
```python
|
|
264
|
+
context = LLMContext(messages, tools)
|
|
265
|
+
context_aggregator = LLMContextAggregatorPair(context)
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
To start, the universal `LLMContext` is supported with the following LLM
|
|
269
|
+
services:
|
|
270
|
+
|
|
271
|
+
- `OpenAILLMService`
|
|
272
|
+
- `GoogleLLMService`
|
|
273
|
+
|
|
274
|
+
- Added a new `LLMSwitcher` class to enable runtime LLM switching, built atop a
|
|
275
|
+
new generic `ServiceSwitcher`.
|
|
276
|
+
|
|
277
|
+
Switchers take a switching strategy. The first available strategy is
|
|
278
|
+
`ServiceSwitcherStrategyManual`.
|
|
279
|
+
|
|
280
|
+
To switch LLMs at runtime, the LLMs must be sharing one instance of the new
|
|
281
|
+
universal `LLMContext` (see above bullet).
|
|
282
|
+
|
|
283
|
+
```python
|
|
284
|
+
# Instantiate your LLM services
|
|
285
|
+
llm_openai = OpenAILLMService(api_key=os.getenv("OPENAI_API_KEY"))
|
|
286
|
+
llm_google = GoogleLLMService(api_key=os.getenv("GOOGLE_API_KEY"))
|
|
287
|
+
|
|
288
|
+
# Instantiate a switcher
|
|
289
|
+
# (ServiceSwitcherStrategyManual defaults to OpenAI, as it's first in the list)
|
|
290
|
+
llm_switcher = LLMSwitcher(
|
|
291
|
+
llms=[llm_openai, llm_google], strategy_type=ServiceSwitcherStrategyManual
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
# Create your pipeline
|
|
295
|
+
pipeline = Pipeline(
|
|
296
|
+
[
|
|
297
|
+
transport.input(),
|
|
298
|
+
stt,
|
|
299
|
+
context_aggregator.user(),
|
|
300
|
+
llm_switcher,
|
|
301
|
+
tts,
|
|
302
|
+
transport.output(),
|
|
303
|
+
context_aggregator.assistant(),
|
|
304
|
+
]
|
|
305
|
+
)
|
|
306
|
+
task = PipelineTask(pipeline, params=PipelineParams(allow_interruptions=True))
|
|
307
|
+
|
|
308
|
+
# ...
|
|
309
|
+
# Whenever is appropriate, switch LLMs!
|
|
310
|
+
await task.queue_frames([ManuallySwitchServiceFrame(service=llm_google)])
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
- Added an `LLMService.run_inference()` method to LLM services to enable
|
|
314
|
+
direct, out-of-band (i.e. out-of-pipeline) inference.
|
|
315
|
+
|
|
316
|
+
### Changed
|
|
317
|
+
|
|
318
|
+
- Updated `daily-python` to 0.19.8.
|
|
319
|
+
|
|
320
|
+
- `PipelineTask` now waits for `StartFrame` to reach the end of the pipeline
|
|
321
|
+
before pushing any other frames.
|
|
322
|
+
|
|
323
|
+
- Updated `CartesiaTTSService` and `CartesiaHttpTTSService` to align with
|
|
324
|
+
Cartesia's changes for the `speed` parameter. It now takes only an enum of
|
|
325
|
+
`slow`, `normal`, or `fast`.
|
|
326
|
+
|
|
327
|
+
- Added support to `AWSBedrockLLMService` for setting authentication
|
|
328
|
+
credentials through environment variables.
|
|
329
|
+
|
|
330
|
+
- Updated `SarvamTTSService` to use WebSocket streaming for real-time audio
|
|
331
|
+
generation with multiple Indian languages, with HTTP support still available
|
|
332
|
+
via `SarvamHttpTTSService`.
|
|
333
|
+
|
|
334
|
+
### Fixed
|
|
335
|
+
|
|
336
|
+
- Fixed an RTVI issue that was causing frames to be pushed before pipeline was
|
|
337
|
+
properly initialized.
|
|
338
|
+
|
|
339
|
+
- Fixed some `get_messages_for_logging()` that were returning a JSON string
|
|
340
|
+
instead of a list.
|
|
341
|
+
|
|
342
|
+
- Fixed a `DailyTransport` issue that prevented DTMF tones from being sent.
|
|
343
|
+
|
|
344
|
+
- Fixed a missing import in `SentryMetrics`.
|
|
345
|
+
|
|
346
|
+
- Fixed `AWSPollyTTSService` to support AWS credential provider chain (IAM
|
|
347
|
+
roles, IRSA, instance profiles) instead of requiring explicit environment
|
|
348
|
+
variables.
|
|
349
|
+
|
|
350
|
+
- Fixed a `CartesiaTTSService` issue that was causing the application to hang
|
|
351
|
+
after Cartesia's 5 minutes timed out.
|
|
352
|
+
|
|
353
|
+
- Fixed an issue preventing `SpeechmaticsSTTService` from transcribing audio.
|
|
354
|
+
|
|
8
355
|
## [0.0.81] - 2025-08-25
|
|
9
356
|
|
|
10
357
|
### Added
|
|
@@ -54,8 +401,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
54
401
|
|
|
55
402
|
### Deprecated
|
|
56
403
|
|
|
57
|
-
- `FrameProcessor.wait_for_task()` is deprecated. Use `await task` or
|
|
58
|
-
asyncio.wait_for(task, timeout)` instead.
|
|
404
|
+
- `FrameProcessor.wait_for_task()` is deprecated. Use `await task` or
|
|
405
|
+
`await asyncio.wait_for(task, timeout)` instead.
|
|
59
406
|
|
|
60
407
|
### Removed
|
|
61
408
|
|
|
@@ -60,6 +60,25 @@ python scripts/version-utils.py update 0.0.75.dev123 # Manual version update
|
|
|
60
60
|
|
|
61
61
|
See **[docs/AUTO_RELEASE.md](docs/AUTO_RELEASE.md)** for complete documentation.
|
|
62
62
|
|
|
63
|
+
## Recent Releases
|
|
64
|
+
|
|
65
|
+
### [0.0.84] - 2025-09-05
|
|
66
|
+
**Major Updates:**
|
|
67
|
+
- **DTMF Support**: Added DTMF capabilities to `LiveKitTransport` and restored native DTMF for `DailyTransport`
|
|
68
|
+
- **Universal LLM Context**: Expanded support for universal `LLMContext` to Anthropic, enabling LLM switching at runtime
|
|
69
|
+
- **Performance**: Updated `daily-python` to 0.19.9
|
|
70
|
+
- **Bug Fixes**: Fixed `AWSBedrockLLMService` crash and `OpenAIImageGenService` frame creation issues
|
|
71
|
+
|
|
72
|
+
### [0.0.83] - 2025-09-03
|
|
73
|
+
**Major Features:**
|
|
74
|
+
- **Multilingual TTS**: AsyncAI TTS with support for Spanish, French, German, Italian
|
|
75
|
+
- **Enhanced Frame System**: New `InputTransportMessageUrgentFrame`, `DailyInputTransportMessageUrgentFrame`, and `UserSpeakingFrame`
|
|
76
|
+
- **Universal LLM Support**: Extended to 15+ services (Azure, Cerebras, Deepseek, Fireworks AI, Google Vertex AI, Grok, Groq, Mistral, NVIDIA NIM, Ollama, OpenPipe, OpenRouter, Perplexity, Qwen, SambaNova, Together.ai)
|
|
77
|
+
- **WhatsApp Integration**: Support for WhatsApp user-initiated calls
|
|
78
|
+
- **IVR Navigator**: New `pipecat.extensions.ivr` for automated IVR system navigation
|
|
79
|
+
- **Audio Enhancement**: `AICFilter` for speech enhancement without ONNX dependency
|
|
80
|
+
- **DTMF Processing**: Generic DTMF audio loading across all output transports
|
|
81
|
+
|
|
63
82
|
### Ringg Chatbot Development (Primary Codebase)
|
|
64
83
|
The main development work happens in `examples/ringg-chatbot/`, which is a production telephony chatbot system.
|
|
65
84
|
|
|
@@ -113,9 +132,12 @@ Pipecat is a **pipeline-based real-time AI conversation framework** for building
|
|
|
113
132
|
### AI Services Integration
|
|
114
133
|
- **AIService** base class with common functionality
|
|
115
134
|
- **LLMService**, **STTService**, **TTSService**, **VisionService** for different AI capabilities
|
|
135
|
+
- **Universal LLMContext**: LLM-agnostic context enabling runtime LLM switching
|
|
136
|
+
- **LLMSwitcher**: Runtime switching between different LLM services
|
|
137
|
+
- **LLMContextAggregatorPair**: Universal context aggregator for cross-LLM compatibility
|
|
116
138
|
- Context aggregators manage conversation state
|
|
117
139
|
- Function calling support with result callbacks
|
|
118
|
-
- Multiple providers: OpenAI, Anthropic, Google, AWS, Azure, Deepgram, ElevenLabs, etc.
|
|
140
|
+
- Multiple providers: OpenAI, Anthropic, Google, AWS, Azure, Deepgram, ElevenLabs, AsyncAI, etc.
|
|
119
141
|
|
|
120
142
|
### Transport Layer
|
|
121
143
|
- **BaseTransport** provides input/output interface
|
|
@@ -138,18 +160,20 @@ AssemblyAI, AWS Transcribe, Azure, Cartesia, Deepgram, Fal Wizper, Gladia, Googl
|
|
|
138
160
|
Anthropic, AWS Bedrock, Azure, Cerebras, DeepSeek, Fireworks AI, Google Gemini/Vertex AI, Grok, Groq, NVIDIA NIM, Ollama, OpenAI, OpenPipe, OpenRouter, Perplexity, Qwen, SambaNova, Together AI
|
|
139
161
|
|
|
140
162
|
### Text-to-Speech (TTS)
|
|
141
|
-
AWS Polly, Azure, Cartesia, Deepgram, ElevenLabs, Fish, Google, Groq, LMNT, MiniMax, Neuphonic, NVIDIA Riva, OpenAI, Piper, PlayHT, Rime, Sarvam, XTTS
|
|
163
|
+
AsyncAI, AWS Polly, Azure, Cartesia, Deepgram, ElevenLabs, Fish, Google, Groq, LMNT, MiniMax, Neuphonic, NVIDIA Riva, OpenAI, Piper, PlayHT, Rime, Sarvam, XTTS
|
|
142
164
|
|
|
143
165
|
### Transport & Communication
|
|
144
|
-
Daily (WebRTC), SmallWebRTC, FastAPI WebSocket, WebSocket Server, Tavus
|
|
166
|
+
Daily (WebRTC), SmallWebRTC, FastAPI WebSocket, WebSocket Server, Tavus, WhatsApp
|
|
145
167
|
|
|
146
168
|
### Additional Services
|
|
147
169
|
- **Speech-to-Speech**: AWS Nova Sonic, Gemini, OpenAI
|
|
148
170
|
- **Image Generation**: fal, Google Imagen, OpenAI
|
|
149
|
-
- **Video**: Simli, Tavus
|
|
171
|
+
- **Video**: HeyGen, Simli, Tavus
|
|
150
172
|
- **Memory**: Mem0
|
|
151
173
|
- **Vision**: Moondream
|
|
152
174
|
- **Analytics**: Sentry
|
|
175
|
+
- **IVR Navigation**: Automated IVR system navigation with DTMF and voice response
|
|
176
|
+
- **Audio Enhancement**: AICoustics filter for VAD/STT performance improvement
|
|
153
177
|
|
|
154
178
|
## Typical Data Flow Pattern
|
|
155
179
|
|
|
@@ -174,15 +198,21 @@ Based on Pipecat documentation, key frame types include:
|
|
|
174
198
|
- Subclasses: `InputAudioRawFrame`, `OutputAudioRawFrame`, `TTSAudioRawFrame`
|
|
175
199
|
- **ImageRawFrame**: Image data with `size` and `format`
|
|
176
200
|
- Subclasses: `InputImageRawFrame`, `VisionImageRawFrame`, `URLImageRawFrame`
|
|
177
|
-
- **TextFrame**: Text chunks for processing
|
|
201
|
+
- **TextFrame**: Text chunks for processing (supports `skip_tts` field)
|
|
178
202
|
- **TranscriptionFrame**: Speech transcriptions with `user_id`, `timestamp`, `language`
|
|
179
|
-
- **LLMMessagesFrame**: Message arrays for LLM processing
|
|
203
|
+
- **LLMMessagesFrame**: Message arrays for LLM processing (deprecated, use `LLMMessagesUpdateFrame`)
|
|
204
|
+
- **InputTransportMessageUrgentFrame**: Urgent transport messages from external sources
|
|
205
|
+
- **DailyInputTransportMessageUrgentFrame**: Daily-specific urgent transport messages
|
|
206
|
+
- **UserSpeakingFrame**: Bidirectional frame sent while VAD detects user speaking
|
|
207
|
+
- **LLMRunFrame**: Trigger LLM response without context changes
|
|
180
208
|
|
|
181
209
|
### System Control
|
|
182
210
|
- **StartFrame/EndFrame**: Pipeline lifecycle control
|
|
183
|
-
- **StartInterruptionFrame
|
|
211
|
+
- **StartInterruptionFrame**: User speech interruption handling (StopInterruptionFrame removed in v0.0.83)
|
|
184
212
|
- **BotStartedSpeakingFrame/BotStoppedSpeakingFrame**: Bot speech activity
|
|
185
213
|
- **FunctionCallInProgressFrame/FunctionCallResultFrame**: LLM function calling
|
|
214
|
+
- **LLMConfigureOutputFrame**: Configure LLM output behavior (e.g., `skip_tts=True` for text-only mode)
|
|
215
|
+
- **ManuallySwitchServiceFrame**: Switch between services at runtime (used with LLMSwitcher)
|
|
186
216
|
|
|
187
217
|
## Common Development Patterns
|
|
188
218
|
|
|
@@ -206,6 +236,21 @@ task = PipelineTask(pipeline)
|
|
|
206
236
|
await task.run()
|
|
207
237
|
```
|
|
208
238
|
|
|
239
|
+
### Runtime LLM Switching
|
|
240
|
+
```python
|
|
241
|
+
# Using Universal LLMContext and LLMSwitcher
|
|
242
|
+
context = LLMContext(messages, tools) # Universal context
|
|
243
|
+
context_aggregator = LLMContextAggregatorPair(context)
|
|
244
|
+
|
|
245
|
+
# Create LLM switcher with multiple providers
|
|
246
|
+
llm_openai = OpenAILLMService(api_key=openai_key)
|
|
247
|
+
llm_anthropic = AnthropicLLMService(api_key=anthropic_key)
|
|
248
|
+
llm_switcher = LLMSwitcher([llm_openai, llm_anthropic])
|
|
249
|
+
|
|
250
|
+
# Switch LLMs at runtime
|
|
251
|
+
await task.queue_frames([ManuallySwitchServiceFrame(service=llm_anthropic)])
|
|
252
|
+
```
|
|
253
|
+
|
|
209
254
|
### Adding New Frame Types
|
|
210
255
|
- Define in `src/pipecat/frames/frames.py`
|
|
211
256
|
- Extend appropriate base frame class
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dv-pipecat-ai
|
|
3
|
-
Version: 0.0.82.
|
|
3
|
+
Version: 0.0.82.dev857
|
|
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
|
|
@@ -15,6 +15,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
15
15
|
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
+
Requires-Dist: aiofiles<25,>=24.1.0
|
|
18
19
|
Requires-Dist: aiohttp<4,>=3.11.12
|
|
19
20
|
Requires-Dist: audioop-lts~=0.2.1; python_version >= "3.13"
|
|
20
21
|
Requires-Dist: docstring_parser~=0.16
|
|
@@ -31,6 +32,8 @@ Requires-Dist: soxr~=0.5.0
|
|
|
31
32
|
Requires-Dist: openai<=1.99.1,>=1.74.0
|
|
32
33
|
Requires-Dist: numba==0.61.2
|
|
33
34
|
Requires-Dist: wait_for2>=0.4.1; python_version < "3.12"
|
|
35
|
+
Provides-Extra: aic
|
|
36
|
+
Requires-Dist: aic-sdk~=1.0.1; extra == "aic"
|
|
34
37
|
Provides-Extra: anthropic
|
|
35
38
|
Requires-Dist: anthropic~=0.49.0; extra == "anthropic"
|
|
36
39
|
Provides-Extra: assemblyai
|
|
@@ -50,7 +53,7 @@ Requires-Dist: websockets<15.0,>=13.1; extra == "cartesia"
|
|
|
50
53
|
Provides-Extra: cerebras
|
|
51
54
|
Provides-Extra: deepseek
|
|
52
55
|
Provides-Extra: daily
|
|
53
|
-
Requires-Dist: daily-python~=0.19.
|
|
56
|
+
Requires-Dist: daily-python~=0.19.9; extra == "daily"
|
|
54
57
|
Provides-Extra: deepgram
|
|
55
58
|
Requires-Dist: deepgram-sdk~=4.7.0; extra == "deepgram"
|
|
56
59
|
Provides-Extra: elevenlabs
|
|
@@ -130,6 +133,8 @@ Requires-Dist: uvicorn<1.0.0,>=0.32.0; extra == "runner"
|
|
|
130
133
|
Requires-Dist: fastapi<0.117.0,>=0.115.6; extra == "runner"
|
|
131
134
|
Requires-Dist: pipecat-ai-small-webrtc-prebuilt>=1.0.0; extra == "runner"
|
|
132
135
|
Provides-Extra: sambanova
|
|
136
|
+
Provides-Extra: sarvam
|
|
137
|
+
Requires-Dist: websockets<15.0,>=13.1; extra == "sarvam"
|
|
133
138
|
Provides-Extra: sentry
|
|
134
139
|
Requires-Dist: sentry-sdk~=2.23.1; extra == "sentry"
|
|
135
140
|
Provides-Extra: local-smart-turn
|
|
@@ -231,7 +236,7 @@ You can connect to Pipecat from any platform using our official SDKs:
|
|
|
231
236
|
| Video | [HeyGen](https://docs.pipecat.ai/server/services/video/heygen), [Tavus](https://docs.pipecat.ai/server/services/video/tavus), [Simli](https://docs.pipecat.ai/server/services/video/simli) |
|
|
232
237
|
| Memory | [mem0](https://docs.pipecat.ai/server/services/memory/mem0) |
|
|
233
238
|
| Vision & Image | [fal](https://docs.pipecat.ai/server/services/image-generation/fal), [Google Imagen](https://docs.pipecat.ai/server/services/image-generation/fal), [Moondream](https://docs.pipecat.ai/server/services/vision/moondream) |
|
|
234
|
-
| Audio Processing | [Silero VAD](https://docs.pipecat.ai/server/utilities/audio/silero-vad-analyzer), [Krisp](https://docs.pipecat.ai/server/utilities/audio/krisp-filter), [Koala](https://docs.pipecat.ai/server/utilities/audio/koala-filter), [Noisereduce](https://docs.pipecat.ai/server/utilities/audio/noisereduce-filter)
|
|
239
|
+
| Audio Processing | [Silero VAD](https://docs.pipecat.ai/server/utilities/audio/silero-vad-analyzer), [Krisp](https://docs.pipecat.ai/server/utilities/audio/krisp-filter), [Koala](https://docs.pipecat.ai/server/utilities/audio/koala-filter), [ai-coustics](https://docs.pipecat.ai/server/utilities/audio/aic-filter), [Noisereduce](https://docs.pipecat.ai/server/utilities/audio/noisereduce-filter) |
|
|
235
240
|
| Analytics & Metrics | [OpenTelemetry](https://docs.pipecat.ai/server/utilities/opentelemetry), [Sentry](https://docs.pipecat.ai/server/services/analytics/sentry) |
|
|
236
241
|
|
|
237
242
|
📚 [View full services documentation →](https://docs.pipecat.ai/server/services/supported-services)
|
|
@@ -62,7 +62,7 @@ You can connect to Pipecat from any platform using our official SDKs:
|
|
|
62
62
|
| Video | [HeyGen](https://docs.pipecat.ai/server/services/video/heygen), [Tavus](https://docs.pipecat.ai/server/services/video/tavus), [Simli](https://docs.pipecat.ai/server/services/video/simli) |
|
|
63
63
|
| Memory | [mem0](https://docs.pipecat.ai/server/services/memory/mem0) |
|
|
64
64
|
| Vision & Image | [fal](https://docs.pipecat.ai/server/services/image-generation/fal), [Google Imagen](https://docs.pipecat.ai/server/services/image-generation/fal), [Moondream](https://docs.pipecat.ai/server/services/vision/moondream) |
|
|
65
|
-
| Audio Processing | [Silero VAD](https://docs.pipecat.ai/server/utilities/audio/silero-vad-analyzer), [Krisp](https://docs.pipecat.ai/server/utilities/audio/krisp-filter), [Koala](https://docs.pipecat.ai/server/utilities/audio/koala-filter), [Noisereduce](https://docs.pipecat.ai/server/utilities/audio/noisereduce-filter)
|
|
65
|
+
| Audio Processing | [Silero VAD](https://docs.pipecat.ai/server/utilities/audio/silero-vad-analyzer), [Krisp](https://docs.pipecat.ai/server/utilities/audio/krisp-filter), [Koala](https://docs.pipecat.ai/server/utilities/audio/koala-filter), [ai-coustics](https://docs.pipecat.ai/server/utilities/audio/aic-filter), [Noisereduce](https://docs.pipecat.ai/server/utilities/audio/noisereduce-filter) |
|
|
66
66
|
| Analytics & Metrics | [OpenTelemetry](https://docs.pipecat.ai/server/utilities/opentelemetry), [Sentry](https://docs.pipecat.ai/server/services/analytics/sentry) |
|
|
67
67
|
|
|
68
68
|
📚 [View full services documentation →](https://docs.pipecat.ai/server/services/supported-services)
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# AI-COUSTICS
|
|
2
|
+
AICOUSTICS_LICENSE_KEY=...
|
|
3
|
+
|
|
1
4
|
# Anthropic
|
|
2
5
|
ANTHROPIC_API_KEY=...
|
|
3
6
|
|
|
@@ -59,6 +62,9 @@ GOOGLE_VERTEX_TEST_CREDENTIALS=...
|
|
|
59
62
|
LMNT_API_KEY=...
|
|
60
63
|
LMNT_VOICE_ID=...
|
|
61
64
|
|
|
65
|
+
# Perplexity
|
|
66
|
+
PERPLEXITY_API_KEY=...
|
|
67
|
+
|
|
62
68
|
# PlayHT
|
|
63
69
|
PLAY_HT_USER_ID=...
|
|
64
70
|
PLAY_HT_API_KEY=...
|
|
@@ -140,3 +146,12 @@ SENTRY_DSN=...
|
|
|
140
146
|
|
|
141
147
|
# Heygen
|
|
142
148
|
HEYGEN_API_KEY=...
|
|
149
|
+
|
|
150
|
+
# Mistral
|
|
151
|
+
MISTRAL_API_KEY=...
|
|
152
|
+
|
|
153
|
+
# NVIDIA
|
|
154
|
+
NVIDIA_API_KEY=...
|
|
155
|
+
|
|
156
|
+
# Qwen
|
|
157
|
+
QWEN_API_KEY=...
|