dv-pipecat-ai 0.0.82.dev881__tar.gz → 0.0.85.dev1__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.

Files changed (468) hide show
  1. dv_pipecat_ai-0.0.85.dev1/.github/workflows/github.yml +414 -0
  2. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/PKG-INFO +2 -1
  3. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/pyproject.toml +1 -1
  4. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/dv_pipecat_ai.egg-info/PKG-INFO +2 -1
  5. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/dv_pipecat_ai.egg-info/SOURCES.txt +4 -3
  6. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/dv_pipecat_ai.egg-info/requires.txt +1 -0
  7. dv_pipecat_ai-0.0.85.dev1/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
  8. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/vad/silero.py +9 -3
  9. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/frames/frames.py +49 -0
  10. dv_pipecat_ai-0.0.85.dev1/src/pipecat/pipeline/tts_switcher.py +30 -0
  11. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/dtmf_aggregator.py +22 -29
  12. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/llm_response.py +2 -0
  13. dv_pipecat_ai-0.0.85.dev1/src/pipecat/processors/dtmf_aggregator.py +255 -0
  14. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/filters/stt_mute_filter.py +15 -0
  15. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/user_idle_processor.py +32 -5
  16. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/__init__.py +3 -1
  17. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/convox.py +40 -3
  18. dv_pipecat_ai-0.0.85.dev1/src/pipecat/serializers/custom.py +257 -0
  19. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/plivo.py +4 -1
  20. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/elevenlabs/stt.py +18 -8
  21. dv_pipecat_ai-0.0.85.dev1/src/pipecat/services/sarvam/__init__.py +15 -0
  22. dv_pipecat_ai-0.0.85.dev1/src/pipecat/services/sarvam/stt.py +540 -0
  23. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/sarvam/tts.py +13 -1
  24. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/speechmatics/stt.py +16 -0
  25. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/vistaar/llm.py +45 -7
  26. dv_pipecat_ai-0.0.82.dev881/.github/workflows/github.yml +0 -402
  27. dv_pipecat_ai-0.0.82.dev881/.github/workflows/smart-auto-release.yml +0 -192
  28. dv_pipecat_ai-0.0.82.dev881/src/pipecat/processors/dtmf_aggregator.py +0 -154
  29. dv_pipecat_ai-0.0.82.dev881/src/pipecat/serializers/genesys.py +0 -95
  30. dv_pipecat_ai-0.0.82.dev881/src/pipecat/services/google/test-google-chirp.py +0 -45
  31. dv_pipecat_ai-0.0.82.dev881/src/pipecat/services/sarvam/__init__.py +0 -8
  32. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.dockerignore +0 -0
  33. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
  34. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
  35. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
  36. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
  37. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
  38. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
  39. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
  40. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  41. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  42. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/build.yaml +0 -0
  43. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/coverage.yaml +0 -0
  44. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/format.yaml +0 -0
  45. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/promote-prod.yml +0 -0
  46. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/publish.yaml +0 -0
  47. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/publish_test.yaml +0 -0
  48. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/python-compatibility.yaml +0 -0
  49. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/set-traffic-split.yml +0 -0
  50. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/sync-quickstart.yaml +0 -0
  51. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.github/workflows/tests.yaml +0 -0
  52. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.gitignore +0 -0
  53. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.pre-commit-config.yaml +0 -0
  54. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/.readthedocs.yaml +0 -0
  55. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/CHANGELOG.md +0 -0
  56. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/CHANGELOG.md.template +0 -0
  57. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/CLAUDE.md +0 -0
  58. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/CONTRIBUTING.md +0 -0
  59. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
  60. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/LICENSE +0 -0
  61. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/MANIFEST.in +0 -0
  62. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/README.md +0 -0
  63. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/ansible.cfg +0 -0
  64. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/ansible_deployment.sh +0 -0
  65. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/cleanup_old_containers.yml +0 -0
  66. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/codecov.yml +0 -0
  67. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/create-new-machine/ansible.cfg +0 -0
  68. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/create-new-machine/ansible_setup.sh +0 -0
  69. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/create-new-machine/inventory.ini +0 -0
  70. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/create-new-machine/replace_env.yml +0 -0
  71. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/create-new-machine/setup_playbook.yml +0 -0
  72. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/create_inventory.py +0 -0
  73. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/delete_old_dockers.sh +0 -0
  74. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/deploy.sh +0 -0
  75. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/deploy_playbook.yml +0 -0
  76. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/docker-compose.dev.yml +0 -0
  77. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/dump_logs.yml +0 -0
  78. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/env.example +0 -0
  79. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/fetch_logs.yml +0 -0
  80. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/inventory.ini +0 -0
  81. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/.helmignore +0 -0
  82. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/Chart.yaml +0 -0
  83. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
  84. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
  85. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
  86. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
  87. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
  88. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
  89. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
  90. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
  91. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
  92. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
  93. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/templates/service.yaml +0 -0
  94. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/values-canary.yaml +0 -0
  95. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/values-prod.yaml +0 -0
  96. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/values-stage.yaml +0 -0
  97. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/dv-pipecat/values.yaml +0 -0
  98. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/k8s/istio/destination-virtualservice.yaml +0 -0
  99. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/merge-code-into-single-file.sh +0 -0
  100. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/pipecat.png +0 -0
  101. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/restart.sh +0 -0
  102. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/restart_playbook.yml +0 -0
  103. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/setup.cfg +0 -0
  104. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
  105. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
  106. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/__init__.py +0 -0
  107. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/__init__.py +0 -0
  108. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/base_llm_adapter.py +0 -0
  109. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/schemas/__init__.py +0 -0
  110. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/schemas/direct_function.py +0 -0
  111. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/schemas/function_schema.py +0 -0
  112. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
  113. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/services/__init__.py +0 -0
  114. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
  115. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
  116. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
  117. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
  118. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
  119. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
  120. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/__init__.py +0 -0
  121. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/__init__.py +0 -0
  122. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
  123. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
  124. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
  125. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
  126. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
  127. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
  128. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
  129. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
  130. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
  131. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
  132. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
  133. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
  134. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/types.py +0 -0
  135. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/dtmf/utils.py +0 -0
  136. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/filters/__init__.py +0 -0
  137. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/filters/aic_filter.py +0 -0
  138. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
  139. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/filters/koala_filter.py +0 -0
  140. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/filters/krisp_filter.py +0 -0
  141. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
  142. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
  143. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/interruptions/__init__.py +0 -0
  144. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
  145. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
  146. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/mixers/__init__.py +0 -0
  147. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
  148. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
  149. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/resamplers/__init__.py +0 -0
  150. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
  151. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
  152. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
  153. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
  154. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/__init__.py +0 -0
  155. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
  156. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
  157. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
  158. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
  159. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
  160. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
  161. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
  162. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
  163. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/utils.py +0 -0
  164. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/vad/__init__.py +0 -0
  165. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/vad/data/__init__.py +0 -0
  166. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
  167. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
  168. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/clocks/__init__.py +0 -0
  169. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/clocks/base_clock.py +0 -0
  170. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/clocks/system_clock.py +0 -0
  171. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/extensions/__init__.py +0 -0
  172. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/extensions/ivr/__init__.py +0 -0
  173. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
  174. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/extensions/voicemail/__init__.py +0 -0
  175. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
  176. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/frames/__init__.py +0 -0
  177. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/frames/frames.proto +0 -0
  178. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
  179. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/metrics/__init__.py +0 -0
  180. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/metrics/metrics.py +0 -0
  181. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/observers/__init__.py +0 -0
  182. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/observers/base_observer.py +0 -0
  183. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/observers/loggers/__init__.py +0 -0
  184. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
  185. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
  186. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
  187. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
  188. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/observers/turn_tracking_observer.py +0 -0
  189. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/__init__.py +0 -0
  190. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/base_pipeline.py +0 -0
  191. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/base_task.py +0 -0
  192. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/llm_switcher.py +0 -0
  193. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
  194. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/pipeline.py +0 -0
  195. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/runner.py +0 -0
  196. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/service_switcher.py +0 -0
  197. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
  198. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/task.py +0 -0
  199. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/task_observer.py +0 -0
  200. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
  201. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/__init__.py +0 -0
  202. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/__init__.py +0 -0
  203. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/gated.py +0 -0
  204. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/gated_openai_llm_context.py +0 -0
  205. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/llm_context.py +0 -0
  206. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
  207. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
  208. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/sentence.py +0 -0
  209. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/user_response.py +0 -0
  210. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
  211. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/async_generator.py +0 -0
  212. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/audio/__init__.py +0 -0
  213. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
  214. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/consumer_processor.py +0 -0
  215. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/filters/__init__.py +0 -0
  216. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/filters/frame_filter.py +0 -0
  217. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/filters/function_filter.py +0 -0
  218. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/filters/identity_filter.py +0 -0
  219. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/filters/null_filter.py +0 -0
  220. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
  221. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
  222. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/frame_processor.py +0 -0
  223. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/frameworks/__init__.py +0 -0
  224. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/frameworks/langchain.py +0 -0
  225. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/frameworks/rtvi.py +0 -0
  226. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/gstreamer/__init__.py +0 -0
  227. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
  228. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/idle_frame_processor.py +0 -0
  229. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/logger.py +0 -0
  230. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/metrics/__init__.py +0 -0
  231. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
  232. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/metrics/sentry.py +0 -0
  233. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/producer_processor.py +0 -0
  234. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/text_transformer.py +0 -0
  235. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/transcript_processor.py +0 -0
  236. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
  237. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/py.typed +0 -0
  238. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/runner/__init__.py +0 -0
  239. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/runner/daily.py +0 -0
  240. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/runner/livekit.py +0 -0
  241. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/runner/run.py +0 -0
  242. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/runner/types.py +0 -0
  243. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/runner/utils.py +0 -0
  244. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/asterisk.py +0 -0
  245. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/base_serializer.py +0 -0
  246. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/exotel.py +0 -0
  247. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/livekit.py +0 -0
  248. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/protobuf.py +0 -0
  249. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/telnyx.py +0 -0
  250. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/serializers/twilio.py +0 -0
  251. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/__init__.py +0 -0
  252. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/ai_service.py +0 -0
  253. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/ai_services.py +0 -0
  254. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/anthropic/__init__.py +0 -0
  255. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/anthropic/llm.py +0 -0
  256. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/assemblyai/__init__.py +0 -0
  257. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/assemblyai/models.py +0 -0
  258. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/assemblyai/stt.py +0 -0
  259. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/asyncai/__init__.py +0 -0
  260. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/asyncai/tts.py +0 -0
  261. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws/__init__.py +0 -0
  262. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws/llm.py +0 -0
  263. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws/stt.py +0 -0
  264. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws/tts.py +0 -0
  265. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws/utils.py +0 -0
  266. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
  267. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
  268. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
  269. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
  270. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/aws_nova_sonic/ready.wav +0 -0
  271. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/azure/__init__.py +0 -0
  272. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/azure/common.py +0 -0
  273. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/azure/image.py +0 -0
  274. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/azure/llm.py +0 -0
  275. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/azure/stt.py +0 -0
  276. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/azure/tts.py +0 -0
  277. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/cartesia/__init__.py +0 -0
  278. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/cartesia/stt.py +0 -0
  279. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/cartesia/tts.py +0 -0
  280. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/cerebras/__init__.py +0 -0
  281. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/cerebras/llm.py +0 -0
  282. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/deepgram/__init__.py +0 -0
  283. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/deepgram/stt.py +0 -0
  284. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/deepgram/tts.py +0 -0
  285. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/deepseek/__init__.py +0 -0
  286. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/deepseek/llm.py +0 -0
  287. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/elevenlabs/__init__.py +0 -0
  288. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/elevenlabs/tts.py +0 -0
  289. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/fal/__init__.py +0 -0
  290. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/fal/image.py +0 -0
  291. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/fal/stt.py +0 -0
  292. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/fireworks/__init__.py +0 -0
  293. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/fireworks/llm.py +0 -0
  294. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/fish/__init__.py +0 -0
  295. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/fish/tts.py +0 -0
  296. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
  297. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
  298. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
  299. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
  300. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/gladia/__init__.py +0 -0
  301. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/gladia/config.py +0 -0
  302. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/gladia/stt.py +0 -0
  303. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/__init__.py +0 -0
  304. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/frames.py +0 -0
  305. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/google.py +0 -0
  306. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/image.py +0 -0
  307. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/llm.py +0 -0
  308. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/llm_openai.py +0 -0
  309. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/llm_vertex.py +0 -0
  310. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/rtvi.py +0 -0
  311. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/stt.py +0 -0
  312. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/google/tts.py +0 -0
  313. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/grok/__init__.py +0 -0
  314. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/grok/llm.py +0 -0
  315. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/groq/__init__.py +0 -0
  316. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/groq/llm.py +0 -0
  317. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/groq/stt.py +0 -0
  318. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/groq/tts.py +0 -0
  319. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/hamsa/__init__.py +0 -0
  320. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/hamsa/stt.py +0 -0
  321. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/heygen/__init__.py +0 -0
  322. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/heygen/api.py +0 -0
  323. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/heygen/client.py +0 -0
  324. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/heygen/video.py +0 -0
  325. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/image_service.py +0 -0
  326. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/inworld/__init__.py +0 -0
  327. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/inworld/tts.py +0 -0
  328. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/llm_service.py +0 -0
  329. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/lmnt/__init__.py +0 -0
  330. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/lmnt/tts.py +0 -0
  331. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/mcp_service.py +0 -0
  332. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/mem0/__init__.py +0 -0
  333. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/mem0/memory.py +0 -0
  334. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/minimax/__init__.py +0 -0
  335. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/minimax/tts.py +0 -0
  336. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/mistral/__init__.py +0 -0
  337. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/mistral/llm.py +0 -0
  338. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/moondream/__init__.py +0 -0
  339. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/moondream/vision.py +0 -0
  340. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/neuphonic/__init__.py +0 -0
  341. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/neuphonic/tts.py +0 -0
  342. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/nim/__init__.py +0 -0
  343. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/nim/llm.py +0 -0
  344. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/ollama/__init__.py +0 -0
  345. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/ollama/llm.py +0 -0
  346. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai/__init__.py +0 -0
  347. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai/base_llm.py +0 -0
  348. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai/image.py +0 -0
  349. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai/llm.py +0 -0
  350. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai/stt.py +0 -0
  351. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai/tts.py +0 -0
  352. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
  353. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
  354. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
  355. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
  356. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
  357. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
  358. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openpipe/__init__.py +0 -0
  359. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openpipe/llm.py +0 -0
  360. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openrouter/__init__.py +0 -0
  361. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/openrouter/llm.py +0 -0
  362. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/perplexity/__init__.py +0 -0
  363. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/perplexity/llm.py +0 -0
  364. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/piper/__init__.py +0 -0
  365. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/piper/tts.py +0 -0
  366. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/playht/__init__.py +0 -0
  367. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/playht/tts.py +0 -0
  368. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/qwen/__init__.py +0 -0
  369. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/qwen/llm.py +0 -0
  370. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/rime/__init__.py +0 -0
  371. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/rime/tts.py +0 -0
  372. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/riva/__init__.py +0 -0
  373. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/riva/stt.py +0 -0
  374. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/riva/tts.py +0 -0
  375. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/sambanova/__init__.py +0 -0
  376. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/sambanova/llm.py +0 -0
  377. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/sambanova/stt.py +0 -0
  378. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/simli/__init__.py +0 -0
  379. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/simli/video.py +0 -0
  380. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/soniox/__init__.py +0 -0
  381. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/soniox/stt.py +0 -0
  382. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/speechmatics/__init__.py +0 -0
  383. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/stt_service.py +0 -0
  384. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/tavus/__init__.py +0 -0
  385. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/tavus/video.py +0 -0
  386. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/together/__init__.py +0 -0
  387. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/together/llm.py +0 -0
  388. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/tts_service.py +0 -0
  389. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/ultravox/__init__.py +0 -0
  390. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/ultravox/stt.py +0 -0
  391. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/vision_service.py +0 -0
  392. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/vistaar/__init__.py +0 -0
  393. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/websocket_service.py +0 -0
  394. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/whisper/__init__.py +0 -0
  395. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/whisper/base_stt.py +0 -0
  396. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/whisper/stt.py +0 -0
  397. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/xtts/__init__.py +0 -0
  398. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/services/xtts/tts.py +0 -0
  399. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/sync/__init__.py +0 -0
  400. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/sync/base_notifier.py +0 -0
  401. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/sync/event_notifier.py +0 -0
  402. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/tests/__init__.py +0 -0
  403. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/tests/utils.py +0 -0
  404. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transcriptions/__init__.py +0 -0
  405. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transcriptions/language.py +0 -0
  406. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/__init__.py +0 -0
  407. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/base_input.py +0 -0
  408. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/base_output.py +0 -0
  409. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/base_transport.py +0 -0
  410. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/daily/__init__.py +0 -0
  411. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/daily/transport.py +0 -0
  412. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/daily/utils.py +0 -0
  413. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/livekit/__init__.py +0 -0
  414. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/livekit/transport.py +0 -0
  415. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/local/__init__.py +0 -0
  416. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/local/audio.py +0 -0
  417. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/local/tk.py +0 -0
  418. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/network/__init__.py +0 -0
  419. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
  420. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/network/small_webrtc.py +0 -0
  421. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/network/webrtc_connection.py +0 -0
  422. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/network/websocket_client.py +0 -0
  423. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/network/websocket_server.py +0 -0
  424. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/services/__init__.py +0 -0
  425. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/services/daily.py +0 -0
  426. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/services/helpers/__init__.py +0 -0
  427. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
  428. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/services/livekit.py +0 -0
  429. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/services/tavus.py +0 -0
  430. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
  431. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
  432. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
  433. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/tavus/__init__.py +0 -0
  434. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/tavus/transport.py +0 -0
  435. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/websocket/__init__.py +0 -0
  436. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/websocket/client.py +0 -0
  437. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/websocket/fastapi.py +0 -0
  438. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/websocket/server.py +0 -0
  439. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/whatsapp/__init__.py +0 -0
  440. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/whatsapp/api.py +0 -0
  441. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/transports/whatsapp/client.py +0 -0
  442. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/__init__.py +0 -0
  443. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/asyncio/__init__.py +0 -0
  444. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/asyncio/task_manager.py +0 -0
  445. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/base_object.py +0 -0
  446. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/logger_config.py +0 -0
  447. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/network.py +0 -0
  448. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/string.py +0 -0
  449. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/text/__init__.py +0 -0
  450. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
  451. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/text/base_text_filter.py +0 -0
  452. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
  453. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
  454. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
  455. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
  456. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/time.py +0 -0
  457. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/tracing/__init__.py +0 -0
  458. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/tracing/class_decorators.py +0 -0
  459. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
  460. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/tracing/service_attributes.py +0 -0
  461. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/tracing/service_decorators.py +0 -0
  462. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/tracing/setup.py +0 -0
  463. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
  464. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
  465. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/src/pipecat/utils/utils.py +0 -0
  466. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/stop_container.yml +0 -0
  467. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/test_elevenlabs_stt_segmented.py +0 -0
  468. {dv_pipecat_ai-0.0.82.dev881 → dv_pipecat_ai-0.0.85.dev1}/uv.lock +0 -0
@@ -0,0 +1,414 @@
1
+ name: Build and Deploy to Kubernetes
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - dv-stage # Trigger only on pushes to this specific branch.
7
+ - dv-main
8
+ - test/deployment_cache
9
+
10
+ env:
11
+ PROJECT_ID: desivocalprod01
12
+ REGION: asia-south1
13
+ REPOSITORY: ${{ github.ref == 'refs/heads/dv-main' && 'ringg-registry-prod' || 'ringg-registry-stage' }}
14
+ IMAGE_NAME: dv-pipecat
15
+ # Determine cluster and secrets based on the target branch (dv-main for prod, others for stage)
16
+ CLUSTER: ${{ github.ref == 'refs/heads/dv-main' && 'desivocal-prod-us-e1-cluster' || 'desivocal-staging-cluster' }}
17
+ CLUSTER_ZONE: ${{ github.ref == 'refs/heads/dv-main' && 'us-east1' || 'asia-south1-a' }}
18
+ GITHUB_SHA: ${{ github.sha }}
19
+ # Assuming secrets are named like PROD_SECRETS_JSON / STAGE_SECRETS_JSON etc.
20
+ # SECRETS_JSON should contain a JSON object like {"VAR1": "value1", "VAR2": "value2"}
21
+ SECRETS_JSON: ${{ github.ref == 'refs/heads/dv-main' && secrets.PROD_SECRETS_JSON || secrets.STAGE_SECRETS_JSON }}
22
+ # CREDS_JSON should contain the raw content of the creds.json file
23
+ CREDS_JSON: ${{ github.ref == 'refs/heads/dv-main' && secrets.PROD_CREDS_JSON || secrets.STAGE_CREDS_JSON }}
24
+ # Helm release name
25
+ HELM_RELEASE_NAME: dv-pipecat
26
+
27
+ jobs:
28
+ build-and-deploy:
29
+ # Skip dv-stage runs that are only the auto-bump commit we just pushed
30
+ if: github.ref != 'refs/heads/dv-stage' || !contains(github.event.head_commit.message, 'Auto-bump dv-pipecat-ai')
31
+ runs-on: ubuntu-latest
32
+ permissions:
33
+ contents: write
34
+ id-token: write # Required for Workload Identity Federation
35
+
36
+ steps:
37
+ - name: Checkout code
38
+ uses: actions/checkout@v4
39
+ with:
40
+ ref: ${{ github.ref }}
41
+ fetch-depth: 0
42
+
43
+ # Integrated smart auto-release logic (moved from smart-auto-release.yml)
44
+ - name: Set up Python
45
+ uses: actions/setup-python@v4
46
+ with:
47
+ python-version: '3.10'
48
+
49
+ - name: Install build tooling
50
+ if: github.ref == 'refs/heads/dv-stage'
51
+ run: |
52
+ python -m pip install --upgrade pip
53
+ pip install build requests packaging
54
+
55
+ - name: Check for src/pipecat changes (push diff)
56
+ if: github.ref == 'refs/heads/dv-stage'
57
+ id: check_changes
58
+ run: |
59
+ echo "Checking for changes in src/pipecat between ${{ github.event.before }} and ${{ github.sha }}..."
60
+ if git diff --name-only ${{ github.event.before }}..${{ github.sha }} | grep -q "^src/pipecat"; then
61
+ echo "has_pipecat_changes=true" >> $GITHUB_OUTPUT
62
+ echo "✅ Found changes in src/pipecat"
63
+ else
64
+ echo "has_pipecat_changes=false" >> $GITHUB_OUTPUT
65
+ echo "ℹ️ No changes in src/pipecat detected"
66
+ fi
67
+
68
+ - name: Get dv-pipecat-ai versions (before vs after)
69
+ if: github.ref == 'refs/heads/dv-stage' && steps.check_changes.outputs.has_pipecat_changes == 'true'
70
+ id: versions
71
+ env:
72
+ REQUIREMENTS_FILE: examples/ringg-chatbot/remote-requirements.txt
73
+ PACKAGE_NAME: dv-pipecat-ai
74
+ run: |
75
+ echo "Getting current and previous ${PACKAGE_NAME} versions from ${REQUIREMENTS_FILE}..."
76
+
77
+ # Current merged version (after)
78
+ if [ -f "$REQUIREMENTS_FILE" ]; then
79
+ MERGED_REQUIREMENTS_VERSION=$(grep "${PACKAGE_NAME}" "$REQUIREMENTS_FILE" | sed -n 's/.*==\([^]]*\).*/\1/p')
80
+ fi
81
+ if [ -z "$MERGED_REQUIREMENTS_VERSION" ]; then
82
+ MERGED_REQUIREMENTS_VERSION="0.0.0.dev0"
83
+ fi
84
+ echo "merged_requirements_version=$MERGED_REQUIREMENTS_VERSION" >> $GITHUB_OUTPUT
85
+
86
+ # Previous version (before)
87
+ git show ${{ github.event.before }}:"$REQUIREMENTS_FILE" > before_requirements.txt 2>/dev/null || echo "${PACKAGE_NAME}==0.0.0.dev0" > before_requirements.txt
88
+ BASE_REQUIREMENTS_VERSION=$(grep "${PACKAGE_NAME}" before_requirements.txt | sed -n 's/.*==\([^]]*\).*/\1/p')
89
+ if [ -z "$BASE_REQUIREMENTS_VERSION" ]; then
90
+ BASE_REQUIREMENTS_VERSION="0.0.0.dev0"
91
+ fi
92
+ echo "base_requirements_version=$BASE_REQUIREMENTS_VERSION" >> $GITHUB_OUTPUT
93
+
94
+ echo "📊 Version Status:"
95
+ echo " Base (before) requirements version: $BASE_REQUIREMENTS_VERSION"
96
+ echo " Merged (after) requirements version: $MERGED_REQUIREMENTS_VERSION"
97
+
98
+ - name: Decide auto-release action
99
+ if: github.ref == 'refs/heads/dv-stage' && steps.check_changes.outputs.has_pipecat_changes == 'true'
100
+ id: decision
101
+ run: |
102
+ BASE_VERSION="${{ steps.versions.outputs.base_requirements_version }}"
103
+ MERGED_VERSION="${{ steps.versions.outputs.merged_requirements_version }}"
104
+
105
+ echo "🤔 Decision Logic:"
106
+ echo " Base version: $BASE_VERSION"
107
+ echo " Merged version: $MERGED_VERSION"
108
+
109
+ if [ "$BASE_VERSION" = "$MERGED_VERSION" ]; then
110
+ echo "should_release=true" >> $GITHUB_OUTPUT
111
+ echo "reason=Versions match between before/after - auto-bump needed" >> $GITHUB_OUTPUT
112
+ echo "✅ Decision: AUTO-RELEASE"
113
+ else
114
+ echo "should_release=false" >> $GITHUB_OUTPUT
115
+ echo "reason=Version already changed in the merge" >> $GITHUB_OUTPUT
116
+ echo "⏭️ Decision: SKIP (developer updated version)"
117
+ fi
118
+
119
+ - name: Build package (setuptools_scm)
120
+ if: github.ref == 'refs/heads/dv-stage' && steps.decision.outputs.should_release == 'true'
121
+ run: |
122
+ echo "🔨 Building package..."
123
+ python -m build
124
+ ls -la dist/
125
+
126
+ - name: Extract built version
127
+ if: github.ref == 'refs/heads/dv-stage' && steps.decision.outputs.should_release == 'true'
128
+ id: extract_version
129
+ run: |
130
+ WHEEL_FILE=$(ls dist/*.whl | head -1)
131
+ BUILT_VERSION=$(echo "$WHEEL_FILE" | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+\.dev[0-9]+)-.*/\1/')
132
+ echo "built_version=$BUILT_VERSION" >> $GITHUB_OUTPUT
133
+ echo "🔍 Built version: $BUILT_VERSION"
134
+ # Verify tar.gz matches
135
+ TAR_FILE=$(ls dist/*.tar.gz | head -1)
136
+ TAR_VERSION=$(echo "$TAR_FILE" | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+\.dev[0-9]+)\.tar\.gz/\1/')
137
+ [ "$BUILT_VERSION" = "$TAR_VERSION" ] || { echo "❌ Version mismatch"; exit 1; }
138
+
139
+ - name: Publish to PyPI
140
+ if: github.ref == 'refs/heads/dv-stage' && steps.decision.outputs.should_release == 'true'
141
+ uses: pypa/gh-action-pypi-publish@release/v1
142
+ with:
143
+ password: ${{ secrets.PYPI_API_TOKEN }}
144
+ print-hash: true
145
+ verbose: true
146
+
147
+ # - name: Update remote-requirements.txt with built version and push
148
+ # if: github.ref == 'refs/heads/dv-stage' && steps.decision.outputs.should_release == 'true'
149
+ # env:
150
+ # REQUIREMENTS_FILE: examples/ringg-chatbot/remote-requirements.txt
151
+ # PACKAGE_NAME: dv-pipecat-ai
152
+ # run: |
153
+ # BUILT_VERSION="${{ steps.extract_version.outputs.built_version }}"
154
+ # echo "📝 Updating ${REQUIREMENTS_FILE} to ${PACKAGE_NAME}==${BUILT_VERSION} (preserve extras)"
155
+ # CURRENT_DEPS=$(grep "${PACKAGE_NAME}" "$REQUIREMENTS_FILE" | sed -n 's/.*\[\([^]]*\)\].*/\1/p')
156
+ # if [ -z "$CURRENT_DEPS" ]; then
157
+ # # No extras bracket found; keep line format simple
158
+ # sed -i.bak "s/${PACKAGE_NAME}==.*/${PACKAGE_NAME}==${BUILT_VERSION}/" "$REQUIREMENTS_FILE"
159
+ # else
160
+ # sed -i.bak "s/${PACKAGE_NAME}\[.*\]==.*/${PACKAGE_NAME}[$CURRENT_DEPS]==${BUILT_VERSION}/" "$REQUIREMENTS_FILE"
161
+ # fi
162
+ # grep "${PACKAGE_NAME}" "$REQUIREMENTS_FILE"
163
+
164
+ # git config --local user.email "action@github.com"
165
+ # git config --local user.name "GitHub Action"
166
+ # git add "$REQUIREMENTS_FILE"
167
+ # git commit -m "🤖 Auto-bump ${PACKAGE_NAME} to ${BUILT_VERSION}"
168
+ # git push origin HEAD:dv-stage
169
+
170
+ # - name: Log auto-release skip reason
171
+ # if: github.ref == 'refs/heads/dv-stage' && (steps.check_changes.outputs.has_pipecat_changes == 'false' || steps.decision.outputs.should_release == 'false')
172
+ # run: |
173
+ # if [ "${{ steps.check_changes.outputs.has_pipecat_changes }}" = "false" ]; then
174
+ # echo "⏭️ SKIPPING auto-release: No src/pipecat changes detected"
175
+ # else
176
+ # echo "⏭️ SKIPPING auto-release: ${{ steps.decision.outputs.reason }}"
177
+ # fi
178
+
179
+ # # Python already set up above
180
+
181
+ # - name: Install Python dependencies
182
+ # run: |
183
+ # python -m pip install --upgrade pip
184
+ # pip install requests packaging
185
+
186
+ # - name: Verify PyPI package availability
187
+ # run: |
188
+ # echo "🔍 Verifying PyPI package availability..."
189
+
190
+ # # Get version from remote-requirements.txt
191
+ # PIPECAT_VERSION=$(grep "dv-pipecat-ai" examples/ringg-chatbot/remote-requirements.txt | sed -n 's/.*==\([^]]*\).*/\1/p')
192
+ # echo "📦 Required pipecat version: $PIPECAT_VERSION"
193
+
194
+ # # Verify package is available on PyPI with retry logic
195
+ # MAX_ATTEMPTS=12
196
+ # ATTEMPT=1
197
+ # WAIT_TIME=5
198
+ # PACKAGE_AVAILABLE=false
199
+
200
+ # while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
201
+ # echo "🔍 Attempt $ATTEMPT/$MAX_ATTEMPTS: Checking PyPI for dv-pipecat-ai==$PIPECAT_VERSION"
202
+
203
+ # if python scripts/check-pypi-package.py dv-pipecat-ai "$PIPECAT_VERSION"; then
204
+ # PACKAGE_AVAILABLE=true
205
+ # echo "✅ PyPI package verification successful!"
206
+ # break
207
+ # else
208
+ # if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
209
+ # echo "❌ FAILED: Package dv-pipecat-ai==$PIPECAT_VERSION not available on PyPI after $MAX_ATTEMPTS attempts"
210
+ # echo "🚨 This usually means:"
211
+ # echo " 1. The auto-release workflow failed to publish"
212
+ # echo " 2. PyPI is experiencing delays"
213
+ # echo " 3. Version mismatch between requirements.txt and PyPI"
214
+ # exit 1
215
+ # else
216
+ # echo "⏳ Package not yet available, waiting ${WAIT_TIME}s before retry..."
217
+ # sleep $WAIT_TIME
218
+ # # Exponential backoff with cap at 30s
219
+ # if [ $WAIT_TIME -lt 30 ]; then
220
+ # WAIT_TIME=$((WAIT_TIME * 2))
221
+ # if [ $WAIT_TIME -gt 30 ]; then WAIT_TIME=30; fi
222
+ # fi
223
+ # fi
224
+ # fi
225
+ # ATTEMPT=$((ATTEMPT + 1))
226
+ # done
227
+
228
+ # echo "PIPECAT_VERSION=$PIPECAT_VERSION" >> $GITHUB_ENV
229
+
230
+ # - name: Authenticate to GCP using Workload Identity Federation
231
+ # id: auth
232
+ # uses: google-github-actions/auth@v2
233
+ # with:
234
+ # workload_identity_provider: projects/623676891410/locations/global/workloadIdentityPools/desivocal-staging-pool/providers/github # TODO: Update for production if needed
235
+ # service_account: gke-githubactions-svc-stage@desivocalprod01.iam.gserviceaccount.com # TODO: Update for production if needed
236
+
237
+ # - name: Configure gcloud
238
+ # run: |
239
+ # gcloud config set project $PROJECT_ID
240
+ # gcloud auth configure-docker $REGION-docker.pkg.dev --quiet
241
+
242
+ # - name: Set up Docker Buildx
243
+ # uses: docker/setup-buildx-action@v3
244
+
245
+ # - name: Build & push image (with GHA cache)
246
+ # uses: docker/build-push-action@v6
247
+ # with:
248
+ # context: ./examples/ringg-chatbot
249
+ # file: ./examples/ringg-chatbot/remote-Dockerfile
250
+ # platforms: linux/${{ github.ref == 'refs/heads/dv-main' && 'arm64' || 'amd64' }}
251
+ # push: true
252
+ # tags: ${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPOSITORY }}/${{ env.IMAGE_NAME }}:${{ env.GITHUB_SHA }}
253
+ # cache-from: type=gha,scope=${{ github.ref == 'refs/heads/dv-main' && 'arm64' || 'amd64' }}
254
+ # cache-to: type=gha,mode=max,scope=${{ github.ref == 'refs/heads/dv-main' && 'arm64' || 'amd64' }}
255
+ # provenance: 'false'
256
+
257
+ # # - name: Build Docker image
258
+ # # run: |
259
+ # # cd examples/ringg-chatbot
260
+ # # docker build -t $REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE_NAME:$GITHUB_SHA -f remote-Dockerfile .
261
+
262
+ # # - name: Push Docker image to Artifact Registry
263
+ # # run: |
264
+ # # docker push $REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE_NAME:$GITHUB_SHA
265
+
266
+ # - name: Install Helm
267
+ # uses: azure/setup-helm@v4
268
+ # with:
269
+ # version: v3.13.3 # Specify Helm version if needed
270
+
271
+ # - name: Connect to GKE
272
+ # uses: google-github-actions/get-gke-credentials@v2
273
+ # with:
274
+ # cluster_name: ${{ env.CLUSTER }}
275
+ # location: ${{ env.CLUSTER_ZONE }}
276
+
277
+ # - name: Install KEDA (if not already installed)
278
+ # run: |
279
+ # echo "🔍 Checking if KEDA is already installed..."
280
+
281
+ # # Ensure KEDA Helm repository exists and is up-to-date for both install and upgrade paths
282
+ # if ! helm repo list | grep -q '^kedacore\s'; then
283
+ # helm repo add kedacore https://kedacore.github.io/charts
284
+ # else
285
+ # # Force update in case URL changed or local cache is stale
286
+ # helm repo add kedacore https://kedacore.github.io/charts --force-update
287
+ # fi
288
+ # helm repo update
289
+
290
+ # # Install KEDA if needed
291
+ # if ! kubectl get deployment -n keda keda-operator >/dev/null 2>&1; then
292
+ # echo "🚀 Installing KEDA core..."
293
+
294
+ # # Install KEDA core (required before HTTP add-on) with 30s HTTP timeout
295
+ # helm install keda kedacore/keda --namespace keda --create-namespace --wait --timeout=5m \
296
+ # --set operator.extraEnvs[0].name=KEDA_HTTP_DEFAULT_TIMEOUT \
297
+ # --set operator.extraEnvs[0].value="30000"
298
+
299
+ # echo "✅ KEDA core installation completed with 30s HTTP timeout"
300
+ # else
301
+ # echo "✅ KEDA core already installed"
302
+
303
+ # # Update existing KEDA installation to ensure HTTP timeout is set
304
+ # echo "🔄 Updating KEDA configuration to ensure 30s HTTP timeout..."
305
+ # helm upgrade keda kedacore/keda --namespace keda --reuse-values \
306
+ # --set operator.extraEnvs[0].name=KEDA_HTTP_DEFAULT_TIMEOUT \
307
+ # --set operator.extraEnvs[0].value="30000" \
308
+ # --wait --timeout=5m
309
+
310
+ # echo "✅ KEDA configuration updated with 30s HTTP timeout"
311
+ # fi
312
+
313
+ # # Verify KEDA CRDs are available
314
+ # echo "🔍 Verifying KEDA CRDs..."
315
+ # kubectl get crd | grep keda || {
316
+ # echo "❌ KEDA CRDs not found, waiting for them to be ready..."
317
+ # sleep 30
318
+ # kubectl get crd | grep keda || {
319
+ # echo "❌ KEDA CRDs still not available after waiting"
320
+ # exit 1
321
+ # }
322
+ # }
323
+
324
+ # echo "✅ KEDA is ready"
325
+
326
+ # - name: Install jq (for parsing JSON secrets)
327
+ # run: sudo apt-get update && sudo apt-get install -y jq
328
+
329
+ # - name: Create/Update GCP Credentials Secret
330
+ # run: |
331
+ # echo "Creating/Updating Kubernetes secret for GCP credentials..."
332
+ # # Create secret with creds.json key from CREDS_JSON content
333
+ # echo "$CREDS_JSON" | kubectl create secret generic ${{ env.HELM_RELEASE_NAME }}-gcp-creds --from-file=creds.json=/dev/stdin --dry-run=client -o yaml | kubectl apply -f - --overwrite
334
+ # env:
335
+ # CREDS_JSON: ${{ env.CREDS_JSON }}
336
+
337
+ # - name: Create/Update Application Secrets
338
+ # run: |
339
+ # echo "Creating/Updating Kubernetes secret for application environment variables..."
340
+ # # Build the --from-literal arguments dynamically from the JSON object stored in SECRETS_JSON
341
+ # # This creates one key in the secret for each key in the JSON, matching the file structure expected by read_secret
342
+ # LITERAL_ARGS=$(echo "$SECRETS_JSON" | jq -r 'to_entries | .[] | "--from-literal=\(.key)=\(.value)"' | tr '\n' ' ')
343
+ # if [ -z "$LITERAL_ARGS" ]; then
344
+ # echo "SECRETS_JSON is empty or not valid JSON. Skipping secret creation."
345
+ # # Handle error or create empty secret if absolutely required by envFrom (though optional should be fine)
346
+ # # kubectl create secret generic ${{ env.HELM_RELEASE_NAME }}-app-secrets --dry-run=client -o yaml | kubectl apply -f - --overwrite
347
+ # else
348
+ # kubectl create secret generic ${{ env.HELM_RELEASE_NAME }}-app-secrets $LITERAL_ARGS --dry-run=client -o yaml | kubectl apply -f - --overwrite
349
+ # fi
350
+ # env:
351
+ # SECRETS_JSON: ${{ env.SECRETS_JSON }}
352
+
353
+ # # Old code
354
+ # # - name: Deploy to GKE using Helm
355
+ # # run: |
356
+ # # if [ "${{ github.ref }}" == "refs/heads/dv-main" ]; then
357
+ # # VALUES_FILE="values-prod.yaml"
358
+ # # echo "Using production values: $VALUES_FILE"
359
+ # # else
360
+ # # VALUES_FILE="values-stage.yaml"
361
+ # # echo "Using staging values: $VALUES_FILE"
362
+ # # fi
363
+
364
+ # # helm upgrade --install ${{ env.HELM_RELEASE_NAME }} ./k8s/dv-pipecat \
365
+ # # --set image.repository=$REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE_NAME \
366
+ # # --set image.tag=$GITHUB_SHA \
367
+ # # --namespace default \
368
+ # # -f ./k8s/dv-pipecat/$VALUES_FILE
369
+ # # ---------- DEPLOY ----------
370
+ # # 1) Deploy stage
371
+ # - name: Deploy stage service
372
+ # if: github.ref == 'refs/heads/dv-stage'
373
+ # run: |
374
+ # STAGE_ADMIN_API_KEY=$(echo "$SECRETS_JSON" | jq -r '.ADMIN_API_KEY // empty')
375
+ # if [ -z "$STAGE_ADMIN_API_KEY" ]; then
376
+ # echo "❌ ADMIN_API_KEY not found in SECRETS_JSON"
377
+ # exit 1
378
+ # fi
379
+ # STAGE_CALLING_BACKEND_URL=$(echo "$SECRETS_JSON" | jq -r '.CALLING_BACKEND_URL // empty')
380
+ # if [ -z "$STAGE_CALLING_BACKEND_URL" ]; then
381
+ # echo "❌ CALLING_BACKEND_URL not found in SECRETS_JSON"
382
+ # exit 1
383
+ # fi
384
+ # helm upgrade --install $HELM_RELEASE_NAME ./k8s/dv-pipecat \
385
+ # -f ./k8s/dv-pipecat/values-stage.yaml \
386
+ # --set image.repository=$REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE_NAME \
387
+ # --set image.tag=$GITHUB_SHA \
388
+ # --set ADMIN_API_KEY="${STAGE_ADMIN_API_KEY}" \
389
+ # --set CALLING_BACKEND_URL="${STAGE_CALLING_BACKEND_URL}" \
390
+ # --namespace default
391
+
392
+ # # 2) **ONLY** when branch is dv-main: deploy/update the CANARY release
393
+ # - name: Deploy canary service
394
+ # if: github.ref == 'refs/heads/dv-main'
395
+ # run: |
396
+ # PROD_ADMIN_API_KEY=$(echo "$SECRETS_JSON" | jq -r '.ADMIN_API_KEY // empty')
397
+ # if [ -z "$PROD_ADMIN_API_KEY" ]; then
398
+ # echo "❌ ADMIN_API_KEY not found in SECRETS_JSON"
399
+ # exit 1
400
+ # fi
401
+ # PROD_CALLING_BACKEND_URL=$(echo "$SECRETS_JSON" | jq -r '.CALLING_BACKEND_URL // empty')
402
+ # if [ -z "$PROD_CALLING_BACKEND_URL" ]; then
403
+ # echo "❌ CALLING_BACKEND_URL not found in SECRETS_JSON"
404
+ # exit 1
405
+ # fi
406
+ # echo "🚀 Deploying canary service..."
407
+ # helm upgrade --install ${HELM_RELEASE_NAME}-canary ./k8s/dv-pipecat \
408
+ # -f ./k8s/dv-pipecat/values-prod.yaml \
409
+ # -f ./k8s/dv-pipecat/values-canary.yaml \
410
+ # --set image.repository=$REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE_NAME \
411
+ # --set image.tag=$GITHUB_SHA \
412
+ # --set ADMIN_API_KEY="${PROD_ADMIN_API_KEY}" \
413
+ # --set CALLING_BACKEND_URL="${PROD_CALLING_BACKEND_URL}" \
414
+ # --namespace default
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-ai
3
- Version: 0.0.82.dev881
3
+ Version: 0.0.85.dev1
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
@@ -134,6 +134,7 @@ Requires-Dist: fastapi<0.117.0,>=0.115.6; extra == "runner"
134
134
  Requires-Dist: pipecat-ai-small-webrtc-prebuilt>=1.0.0; extra == "runner"
135
135
  Provides-Extra: sambanova
136
136
  Provides-Extra: sarvam
137
+ Requires-Dist: sarvamai<1,>=0.1.19; extra == "sarvam"
137
138
  Requires-Dist: websockets<15.0,>=13.1; extra == "sarvam"
138
139
  Provides-Extra: sentry
139
140
  Requires-Dist: sentry-sdk~=2.23.1; extra == "sentry"
@@ -92,7 +92,7 @@ rime = [ "websockets>=13.1,<15.0" ]
92
92
  riva = [ "nvidia-riva-client~=2.21.1" ]
93
93
  runner = [ "python-dotenv>=1.0.0,<2.0.0", "uvicorn>=0.32.0,<1.0.0", "fastapi>=0.115.6,<0.117.0", "pipecat-ai-small-webrtc-prebuilt>=1.0.0"]
94
94
  sambanova = []
95
- sarvam = [ "websockets>=13.1,<15.0" ]
95
+ sarvam = [ "sarvamai>=0.1.19,<1", "websockets>=13.1,<15.0" ]
96
96
  sentry = [ "sentry-sdk~=2.23.1" ]
97
97
  local-smart-turn = [ "coremltools>=8.0", "transformers", "torch>=2.5.0,<3", "torchaudio>=2.5.0,<3" ]
98
98
  remote-smart-turn = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-ai
3
- Version: 0.0.82.dev881
3
+ Version: 0.0.85.dev1
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
@@ -134,6 +134,7 @@ Requires-Dist: fastapi<0.117.0,>=0.115.6; extra == "runner"
134
134
  Requires-Dist: pipecat-ai-small-webrtc-prebuilt>=1.0.0; extra == "runner"
135
135
  Provides-Extra: sambanova
136
136
  Provides-Extra: sarvam
137
+ Requires-Dist: sarvamai<1,>=0.1.19; extra == "sarvam"
137
138
  Requires-Dist: websockets<15.0,>=13.1; extra == "sarvam"
138
139
  Provides-Extra: sentry
139
140
  Requires-Dist: sentry-sdk~=2.23.1; extra == "sentry"
@@ -49,7 +49,6 @@ uv.lock
49
49
  .github/workflows/publish_test.yaml
50
50
  .github/workflows/python-compatibility.yaml
51
51
  .github/workflows/set-traffic-split.yml
52
- .github/workflows/smart-auto-release.yml
53
52
  .github/workflows/sync-quickstart.yaml
54
53
  .github/workflows/tests.yaml
55
54
  create-new-machine/ansible.cfg
@@ -144,6 +143,7 @@ src/pipecat/audio/vad/silero.py
144
143
  src/pipecat/audio/vad/vad_analyzer.py
145
144
  src/pipecat/audio/vad/data/__init__.py
146
145
  src/pipecat/audio/vad/data/silero_vad.onnx
146
+ src/pipecat/audio/vad/data/silero_vad_v2.onnx
147
147
  src/pipecat/clocks/__init__.py
148
148
  src/pipecat/clocks/base_clock.py
149
149
  src/pipecat/clocks/system_clock.py
@@ -177,6 +177,7 @@ src/pipecat/pipeline/service_switcher.py
177
177
  src/pipecat/pipeline/sync_parallel_pipeline.py
178
178
  src/pipecat/pipeline/task.py
179
179
  src/pipecat/pipeline/task_observer.py
180
+ src/pipecat/pipeline/tts_switcher.py
180
181
  src/pipecat/pipeline/to_be_updated/merge_pipeline.py
181
182
  src/pipecat/processors/__init__.py
182
183
  src/pipecat/processors/async_generator.py
@@ -229,8 +230,8 @@ src/pipecat/serializers/__init__.py
229
230
  src/pipecat/serializers/asterisk.py
230
231
  src/pipecat/serializers/base_serializer.py
231
232
  src/pipecat/serializers/convox.py
233
+ src/pipecat/serializers/custom.py
232
234
  src/pipecat/serializers/exotel.py
233
- src/pipecat/serializers/genesys.py
234
235
  src/pipecat/serializers/livekit.py
235
236
  src/pipecat/serializers/plivo.py
236
237
  src/pipecat/serializers/protobuf.py
@@ -305,7 +306,6 @@ src/pipecat/services/google/llm_openai.py
305
306
  src/pipecat/services/google/llm_vertex.py
306
307
  src/pipecat/services/google/rtvi.py
307
308
  src/pipecat/services/google/stt.py
308
- src/pipecat/services/google/test-google-chirp.py
309
309
  src/pipecat/services/google/tts.py
310
310
  src/pipecat/services/grok/__init__.py
311
311
  src/pipecat/services/grok/llm.py
@@ -370,6 +370,7 @@ src/pipecat/services/sambanova/__init__.py
370
370
  src/pipecat/services/sambanova/llm.py
371
371
  src/pipecat/services/sambanova/stt.py
372
372
  src/pipecat/services/sarvam/__init__.py
373
+ src/pipecat/services/sarvam/stt.py
373
374
  src/pipecat/services/sarvam/tts.py
374
375
  src/pipecat/services/simli/__init__.py
375
376
  src/pipecat/services/simli/video.py
@@ -179,6 +179,7 @@ pipecat-ai-small-webrtc-prebuilt>=1.0.0
179
179
  [sambanova]
180
180
 
181
181
  [sarvam]
182
+ sarvamai<1,>=0.1.19
182
183
  websockets<15.0,>=13.1
183
184
 
184
185
  [sentry]
@@ -135,7 +135,13 @@ class SileroVADAnalyzer(VADAnalyzer):
135
135
  with automatic model state management and periodic resets.
136
136
  """
137
137
 
138
- def __init__(self, *, sample_rate: Optional[int] = None, params: Optional[VADParams] = None):
138
+ def __init__(
139
+ self,
140
+ *,
141
+ sample_rate: Optional[int] = None,
142
+ params: Optional[VADParams] = None,
143
+ model_name: Optional[str] = None,
144
+ ):
139
145
  """Initialize the Silero VAD analyzer.
140
146
 
141
147
  Args:
@@ -146,7 +152,7 @@ class SileroVADAnalyzer(VADAnalyzer):
146
152
 
147
153
  logger.debug("Loading Silero VAD model...")
148
154
 
149
- model_name = "silero_vad.onnx"
155
+ model_name = model_name or "silero_vad.onnx"
150
156
  package_path = "pipecat.audio.vad.data"
151
157
 
152
158
  try:
@@ -166,7 +172,7 @@ class SileroVADAnalyzer(VADAnalyzer):
166
172
 
167
173
  self._last_reset_time = 0
168
174
 
169
- logger.debug("Loaded Silero VAD")
175
+ logger.debug(f"Loaded Silero VAD {model_file_path}")
170
176
 
171
177
  #
172
178
  # VADAnalyzer
@@ -1306,6 +1306,20 @@ class SpeechControlParamsFrame(SystemFrame):
1306
1306
  turn_params: Optional[SmartTurnParams] = None
1307
1307
 
1308
1308
 
1309
+ @dataclass
1310
+ class StartDTMFCaptureFrame(SystemFrame):
1311
+ """System frame indicating the bot is actively collecting DTMF input."""
1312
+
1313
+ pass
1314
+
1315
+
1316
+ @dataclass
1317
+ class EndDTMFCaptureFrame(SystemFrame):
1318
+ """System frame indicating DTMF collection has finished."""
1319
+
1320
+ pass
1321
+
1322
+
1309
1323
  #
1310
1324
  # Control frames
1311
1325
  #
@@ -1473,6 +1487,17 @@ class STTUpdateSettingsFrame(ServiceUpdateSettingsFrame):
1473
1487
  pass
1474
1488
 
1475
1489
 
1490
+ @dataclass
1491
+ class DTMFUpdateSettingsFrame(ServiceUpdateSettingsFrame):
1492
+ """Frame for updating DTMF aggregator settings.
1493
+
1494
+ Updates DTMF configuration dynamically during conversation flow.
1495
+ Settings can include: timeout, digits, end, reset parameters.
1496
+ """
1497
+
1498
+ pass
1499
+
1500
+
1476
1501
  @dataclass
1477
1502
  class VADParamsUpdateFrame(SystemFrame):
1478
1503
  """Frame for updating VAD parameters.
@@ -1564,6 +1589,19 @@ class StopUserIdleProcessorFrame(SystemFrame):
1564
1589
  pass
1565
1590
 
1566
1591
 
1592
+ @dataclass
1593
+ class ResetUserIdleProcessorFrame(SystemFrame):
1594
+ """Frame signalling the UserIdleProcessor to treat the user as active again.
1595
+
1596
+ Parameters:
1597
+ text: Optional transcription text that triggered the reset.
1598
+ is_final: Whether the transcription was marked final by STT.
1599
+ """
1600
+
1601
+ text: str = ""
1602
+ is_final: bool = False
1603
+
1604
+
1567
1605
  @dataclass
1568
1606
  class WaitForDTMFFrame(ControlFrame):
1569
1607
  """Frame to stop the UserIdleProcessor monitoring."""
@@ -1571,6 +1609,17 @@ class WaitForDTMFFrame(ControlFrame):
1571
1609
  pass
1572
1610
 
1573
1611
 
1612
+ @dataclass
1613
+ class CallTransferFrame(ControlFrame):
1614
+ """Frame to request call transfer to another number/destination.
1615
+
1616
+ Parameters:
1617
+ target: The phone number or destination to transfer the call to.
1618
+ """
1619
+
1620
+ target: str
1621
+
1622
+
1574
1623
  @dataclass
1575
1624
  class ManuallySwitchServiceFrame(ServiceSwitcherFrame):
1576
1625
  """A frame to request a manual switch in the active service in a ServiceSwitcher.
@@ -0,0 +1,30 @@
1
+ #
2
+ # Copyright (c) 2025, Daily
3
+ #
4
+ # SPDX-License-Identifier: BSD 2-Clause License
5
+ #
6
+
7
+ """TTS switcher for switching between different TTS services at runtime, with different switching strategies."""
8
+
9
+ from typing import List, Optional, Type
10
+
11
+ from pipecat.pipeline.service_switcher import ServiceSwitcher, StrategyType
12
+ from pipecat.services.tts_service import TTSService
13
+
14
+
15
+ class TTSSwitcher(ServiceSwitcher[StrategyType]):
16
+ """A pipeline that switches between different TTS services at runtime."""
17
+
18
+ def __init__(self, tts_services: List[TTSService], strategy_type: Type[StrategyType]):
19
+ """Initialize the TTS switcher with a list of TTS services and a switching strategy."""
20
+ super().__init__(tts_services, strategy_type)
21
+
22
+ @property
23
+ def tts_services(self) -> List[TTSService]:
24
+ """Get the list of TTS services managed by this switcher."""
25
+ return self.services
26
+
27
+ @property
28
+ def active_tts(self) -> Optional[TTSService]:
29
+ """Get the currently active TTS service, if any."""
30
+ return self.strategy.active_service