dv-pipecat-ai 0.0.82.dev884__tar.gz → 0.0.85.dev5__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 (469) hide show
  1. dv_pipecat_ai-0.0.85.dev5/.github/workflows/force_push_to_pypi.yml +72 -0
  2. dv_pipecat_ai-0.0.85.dev5/.github/workflows/github.yml +414 -0
  3. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/PKG-INFO +2 -1
  4. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/pyproject.toml +1 -1
  5. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/dv_pipecat_ai.egg-info/PKG-INFO +2 -1
  6. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/dv_pipecat_ai.egg-info/SOURCES.txt +4 -3
  7. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/dv_pipecat_ai.egg-info/requires.txt +1 -0
  8. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/vad/silero.py +1 -1
  9. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/frames/frames.py +49 -0
  10. dv_pipecat_ai-0.0.85.dev5/src/pipecat/pipeline/tts_switcher.py +30 -0
  11. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/dtmf_aggregator.py +22 -29
  12. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/llm_response.py +1 -4
  13. dv_pipecat_ai-0.0.85.dev5/src/pipecat/processors/dtmf_aggregator.py +255 -0
  14. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/filters/stt_mute_filter.py +15 -0
  15. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/user_idle_processor.py +32 -5
  16. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/__init__.py +3 -1
  17. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/convox.py +40 -3
  18. dv_pipecat_ai-0.0.85.dev5/src/pipecat/serializers/custom.py +257 -0
  19. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/plivo.py +4 -1
  20. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/elevenlabs/stt.py +18 -8
  21. dv_pipecat_ai-0.0.85.dev5/src/pipecat/services/sarvam/__init__.py +15 -0
  22. dv_pipecat_ai-0.0.85.dev5/src/pipecat/services/sarvam/stt.py +540 -0
  23. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/sarvam/tts.py +13 -1
  24. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/speechmatics/stt.py +16 -0
  25. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/vistaar/llm.py +45 -7
  26. dv_pipecat_ai-0.0.82.dev884/.github/workflows/github.yml +0 -402
  27. dv_pipecat_ai-0.0.82.dev884/.github/workflows/smart-auto-release.yml +0 -192
  28. dv_pipecat_ai-0.0.82.dev884/src/pipecat/processors/dtmf_aggregator.py +0 -154
  29. dv_pipecat_ai-0.0.82.dev884/src/pipecat/serializers/genesys.py +0 -95
  30. dv_pipecat_ai-0.0.82.dev884/src/pipecat/services/google/test-google-chirp.py +0 -45
  31. dv_pipecat_ai-0.0.82.dev884/src/pipecat/services/sarvam/__init__.py +0 -8
  32. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.dockerignore +0 -0
  33. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
  34. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
  35. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
  36. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
  37. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
  38. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
  39. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
  40. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  41. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  42. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/build.yaml +0 -0
  43. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/coverage.yaml +0 -0
  44. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/format.yaml +0 -0
  45. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/promote-prod.yml +0 -0
  46. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/publish.yaml +0 -0
  47. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/publish_test.yaml +0 -0
  48. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/python-compatibility.yaml +0 -0
  49. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/set-traffic-split.yml +0 -0
  50. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/sync-quickstart.yaml +0 -0
  51. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.github/workflows/tests.yaml +0 -0
  52. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.gitignore +0 -0
  53. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.pre-commit-config.yaml +0 -0
  54. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/.readthedocs.yaml +0 -0
  55. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/CHANGELOG.md +0 -0
  56. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/CHANGELOG.md.template +0 -0
  57. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/CLAUDE.md +0 -0
  58. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/CONTRIBUTING.md +0 -0
  59. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
  60. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/LICENSE +0 -0
  61. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/MANIFEST.in +0 -0
  62. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/README.md +0 -0
  63. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/ansible.cfg +0 -0
  64. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/ansible_deployment.sh +0 -0
  65. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/cleanup_old_containers.yml +0 -0
  66. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/codecov.yml +0 -0
  67. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/create-new-machine/ansible.cfg +0 -0
  68. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/create-new-machine/ansible_setup.sh +0 -0
  69. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/create-new-machine/inventory.ini +0 -0
  70. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/create-new-machine/replace_env.yml +0 -0
  71. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/create-new-machine/setup_playbook.yml +0 -0
  72. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/create_inventory.py +0 -0
  73. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/delete_old_dockers.sh +0 -0
  74. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/deploy.sh +0 -0
  75. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/deploy_playbook.yml +0 -0
  76. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/docker-compose.dev.yml +0 -0
  77. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/dump_logs.yml +0 -0
  78. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/env.example +0 -0
  79. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/fetch_logs.yml +0 -0
  80. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/inventory.ini +0 -0
  81. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/.helmignore +0 -0
  82. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/Chart.yaml +0 -0
  83. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
  84. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
  85. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
  86. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
  87. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
  88. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
  89. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
  90. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
  91. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
  92. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
  93. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/templates/service.yaml +0 -0
  94. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/values-canary.yaml +0 -0
  95. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/values-prod.yaml +0 -0
  96. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/values-stage.yaml +0 -0
  97. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/dv-pipecat/values.yaml +0 -0
  98. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/k8s/istio/destination-virtualservice.yaml +0 -0
  99. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/merge-code-into-single-file.sh +0 -0
  100. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/pipecat.png +0 -0
  101. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/restart.sh +0 -0
  102. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/restart_playbook.yml +0 -0
  103. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/setup.cfg +0 -0
  104. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
  105. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
  106. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/__init__.py +0 -0
  107. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/__init__.py +0 -0
  108. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/base_llm_adapter.py +0 -0
  109. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/schemas/__init__.py +0 -0
  110. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/schemas/direct_function.py +0 -0
  111. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/schemas/function_schema.py +0 -0
  112. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
  113. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/services/__init__.py +0 -0
  114. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
  115. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
  116. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
  117. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
  118. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
  119. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
  120. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/__init__.py +0 -0
  121. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/__init__.py +0 -0
  122. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
  123. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
  124. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
  125. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
  126. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
  127. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
  128. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
  129. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
  130. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
  131. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
  132. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
  133. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
  134. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/types.py +0 -0
  135. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/dtmf/utils.py +0 -0
  136. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/filters/__init__.py +0 -0
  137. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/filters/aic_filter.py +0 -0
  138. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
  139. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/filters/koala_filter.py +0 -0
  140. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/filters/krisp_filter.py +0 -0
  141. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
  142. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
  143. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/interruptions/__init__.py +0 -0
  144. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
  145. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
  146. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/mixers/__init__.py +0 -0
  147. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
  148. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
  149. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/resamplers/__init__.py +0 -0
  150. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
  151. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
  152. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
  153. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
  154. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/__init__.py +0 -0
  155. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
  156. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
  157. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
  158. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
  159. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
  160. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
  161. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
  162. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
  163. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/utils.py +0 -0
  164. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/vad/__init__.py +0 -0
  165. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/vad/data/__init__.py +0 -0
  166. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
  167. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
  168. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
  169. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/clocks/__init__.py +0 -0
  170. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/clocks/base_clock.py +0 -0
  171. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/clocks/system_clock.py +0 -0
  172. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/extensions/__init__.py +0 -0
  173. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/extensions/ivr/__init__.py +0 -0
  174. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
  175. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/extensions/voicemail/__init__.py +0 -0
  176. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
  177. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/frames/__init__.py +0 -0
  178. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/frames/frames.proto +0 -0
  179. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
  180. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/metrics/__init__.py +0 -0
  181. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/metrics/metrics.py +0 -0
  182. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/observers/__init__.py +0 -0
  183. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/observers/base_observer.py +0 -0
  184. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/observers/loggers/__init__.py +0 -0
  185. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
  186. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
  187. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
  188. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
  189. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/observers/turn_tracking_observer.py +0 -0
  190. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/__init__.py +0 -0
  191. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/base_pipeline.py +0 -0
  192. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/base_task.py +0 -0
  193. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/llm_switcher.py +0 -0
  194. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
  195. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/pipeline.py +0 -0
  196. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/runner.py +0 -0
  197. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/service_switcher.py +0 -0
  198. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
  199. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/task.py +0 -0
  200. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/task_observer.py +0 -0
  201. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
  202. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/__init__.py +0 -0
  203. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/__init__.py +0 -0
  204. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/gated.py +0 -0
  205. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/gated_openai_llm_context.py +0 -0
  206. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/llm_context.py +0 -0
  207. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
  208. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
  209. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/sentence.py +0 -0
  210. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/user_response.py +0 -0
  211. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
  212. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/async_generator.py +0 -0
  213. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/audio/__init__.py +0 -0
  214. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
  215. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/consumer_processor.py +0 -0
  216. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/filters/__init__.py +0 -0
  217. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/filters/frame_filter.py +0 -0
  218. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/filters/function_filter.py +0 -0
  219. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/filters/identity_filter.py +0 -0
  220. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/filters/null_filter.py +0 -0
  221. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
  222. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
  223. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/frame_processor.py +0 -0
  224. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/frameworks/__init__.py +0 -0
  225. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/frameworks/langchain.py +0 -0
  226. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/frameworks/rtvi.py +0 -0
  227. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/gstreamer/__init__.py +0 -0
  228. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
  229. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/idle_frame_processor.py +0 -0
  230. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/logger.py +0 -0
  231. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/metrics/__init__.py +0 -0
  232. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
  233. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/metrics/sentry.py +0 -0
  234. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/producer_processor.py +0 -0
  235. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/text_transformer.py +0 -0
  236. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/transcript_processor.py +0 -0
  237. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
  238. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/py.typed +0 -0
  239. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/runner/__init__.py +0 -0
  240. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/runner/daily.py +0 -0
  241. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/runner/livekit.py +0 -0
  242. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/runner/run.py +0 -0
  243. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/runner/types.py +0 -0
  244. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/runner/utils.py +0 -0
  245. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/asterisk.py +0 -0
  246. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/base_serializer.py +0 -0
  247. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/exotel.py +0 -0
  248. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/livekit.py +0 -0
  249. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/protobuf.py +0 -0
  250. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/telnyx.py +0 -0
  251. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/serializers/twilio.py +0 -0
  252. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/__init__.py +0 -0
  253. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/ai_service.py +0 -0
  254. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/ai_services.py +0 -0
  255. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/anthropic/__init__.py +0 -0
  256. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/anthropic/llm.py +0 -0
  257. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/assemblyai/__init__.py +0 -0
  258. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/assemblyai/models.py +0 -0
  259. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/assemblyai/stt.py +0 -0
  260. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/asyncai/__init__.py +0 -0
  261. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/asyncai/tts.py +0 -0
  262. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws/__init__.py +0 -0
  263. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws/llm.py +0 -0
  264. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws/stt.py +0 -0
  265. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws/tts.py +0 -0
  266. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws/utils.py +0 -0
  267. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
  268. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
  269. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
  270. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
  271. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/aws_nova_sonic/ready.wav +0 -0
  272. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/azure/__init__.py +0 -0
  273. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/azure/common.py +0 -0
  274. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/azure/image.py +0 -0
  275. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/azure/llm.py +0 -0
  276. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/azure/stt.py +0 -0
  277. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/azure/tts.py +0 -0
  278. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/cartesia/__init__.py +0 -0
  279. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/cartesia/stt.py +0 -0
  280. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/cartesia/tts.py +0 -0
  281. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/cerebras/__init__.py +0 -0
  282. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/cerebras/llm.py +0 -0
  283. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/deepgram/__init__.py +0 -0
  284. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/deepgram/stt.py +0 -0
  285. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/deepgram/tts.py +0 -0
  286. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/deepseek/__init__.py +0 -0
  287. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/deepseek/llm.py +0 -0
  288. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/elevenlabs/__init__.py +0 -0
  289. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/elevenlabs/tts.py +0 -0
  290. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/fal/__init__.py +0 -0
  291. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/fal/image.py +0 -0
  292. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/fal/stt.py +0 -0
  293. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/fireworks/__init__.py +0 -0
  294. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/fireworks/llm.py +0 -0
  295. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/fish/__init__.py +0 -0
  296. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/fish/tts.py +0 -0
  297. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
  298. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
  299. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
  300. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
  301. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/gladia/__init__.py +0 -0
  302. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/gladia/config.py +0 -0
  303. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/gladia/stt.py +0 -0
  304. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/__init__.py +0 -0
  305. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/frames.py +0 -0
  306. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/google.py +0 -0
  307. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/image.py +0 -0
  308. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/llm.py +0 -0
  309. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/llm_openai.py +0 -0
  310. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/llm_vertex.py +0 -0
  311. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/rtvi.py +0 -0
  312. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/stt.py +0 -0
  313. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/google/tts.py +0 -0
  314. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/grok/__init__.py +0 -0
  315. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/grok/llm.py +0 -0
  316. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/groq/__init__.py +0 -0
  317. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/groq/llm.py +0 -0
  318. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/groq/stt.py +0 -0
  319. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/groq/tts.py +0 -0
  320. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/hamsa/__init__.py +0 -0
  321. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/hamsa/stt.py +0 -0
  322. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/heygen/__init__.py +0 -0
  323. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/heygen/api.py +0 -0
  324. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/heygen/client.py +0 -0
  325. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/heygen/video.py +0 -0
  326. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/image_service.py +0 -0
  327. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/inworld/__init__.py +0 -0
  328. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/inworld/tts.py +0 -0
  329. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/llm_service.py +0 -0
  330. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/lmnt/__init__.py +0 -0
  331. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/lmnt/tts.py +0 -0
  332. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/mcp_service.py +0 -0
  333. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/mem0/__init__.py +0 -0
  334. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/mem0/memory.py +0 -0
  335. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/minimax/__init__.py +0 -0
  336. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/minimax/tts.py +0 -0
  337. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/mistral/__init__.py +0 -0
  338. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/mistral/llm.py +0 -0
  339. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/moondream/__init__.py +0 -0
  340. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/moondream/vision.py +0 -0
  341. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/neuphonic/__init__.py +0 -0
  342. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/neuphonic/tts.py +0 -0
  343. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/nim/__init__.py +0 -0
  344. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/nim/llm.py +0 -0
  345. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/ollama/__init__.py +0 -0
  346. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/ollama/llm.py +0 -0
  347. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai/__init__.py +0 -0
  348. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai/base_llm.py +0 -0
  349. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai/image.py +0 -0
  350. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai/llm.py +0 -0
  351. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai/stt.py +0 -0
  352. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai/tts.py +0 -0
  353. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
  354. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
  355. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
  356. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
  357. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
  358. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
  359. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openpipe/__init__.py +0 -0
  360. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openpipe/llm.py +0 -0
  361. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openrouter/__init__.py +0 -0
  362. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/openrouter/llm.py +0 -0
  363. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/perplexity/__init__.py +0 -0
  364. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/perplexity/llm.py +0 -0
  365. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/piper/__init__.py +0 -0
  366. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/piper/tts.py +0 -0
  367. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/playht/__init__.py +0 -0
  368. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/playht/tts.py +0 -0
  369. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/qwen/__init__.py +0 -0
  370. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/qwen/llm.py +0 -0
  371. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/rime/__init__.py +0 -0
  372. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/rime/tts.py +0 -0
  373. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/riva/__init__.py +0 -0
  374. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/riva/stt.py +0 -0
  375. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/riva/tts.py +0 -0
  376. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/sambanova/__init__.py +0 -0
  377. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/sambanova/llm.py +0 -0
  378. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/sambanova/stt.py +0 -0
  379. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/simli/__init__.py +0 -0
  380. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/simli/video.py +0 -0
  381. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/soniox/__init__.py +0 -0
  382. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/soniox/stt.py +0 -0
  383. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/speechmatics/__init__.py +0 -0
  384. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/stt_service.py +0 -0
  385. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/tavus/__init__.py +0 -0
  386. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/tavus/video.py +0 -0
  387. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/together/__init__.py +0 -0
  388. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/together/llm.py +0 -0
  389. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/tts_service.py +0 -0
  390. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/ultravox/__init__.py +0 -0
  391. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/ultravox/stt.py +0 -0
  392. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/vision_service.py +0 -0
  393. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/vistaar/__init__.py +0 -0
  394. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/websocket_service.py +0 -0
  395. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/whisper/__init__.py +0 -0
  396. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/whisper/base_stt.py +0 -0
  397. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/whisper/stt.py +0 -0
  398. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/xtts/__init__.py +0 -0
  399. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/services/xtts/tts.py +0 -0
  400. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/sync/__init__.py +0 -0
  401. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/sync/base_notifier.py +0 -0
  402. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/sync/event_notifier.py +0 -0
  403. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/tests/__init__.py +0 -0
  404. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/tests/utils.py +0 -0
  405. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transcriptions/__init__.py +0 -0
  406. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transcriptions/language.py +0 -0
  407. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/__init__.py +0 -0
  408. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/base_input.py +0 -0
  409. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/base_output.py +0 -0
  410. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/base_transport.py +0 -0
  411. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/daily/__init__.py +0 -0
  412. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/daily/transport.py +0 -0
  413. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/daily/utils.py +0 -0
  414. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/livekit/__init__.py +0 -0
  415. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/livekit/transport.py +0 -0
  416. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/local/__init__.py +0 -0
  417. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/local/audio.py +0 -0
  418. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/local/tk.py +0 -0
  419. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/network/__init__.py +0 -0
  420. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
  421. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/network/small_webrtc.py +0 -0
  422. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/network/webrtc_connection.py +0 -0
  423. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/network/websocket_client.py +0 -0
  424. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/network/websocket_server.py +0 -0
  425. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/services/__init__.py +0 -0
  426. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/services/daily.py +0 -0
  427. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/services/helpers/__init__.py +0 -0
  428. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
  429. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/services/livekit.py +0 -0
  430. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/services/tavus.py +0 -0
  431. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
  432. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
  433. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
  434. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/tavus/__init__.py +0 -0
  435. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/tavus/transport.py +0 -0
  436. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/websocket/__init__.py +0 -0
  437. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/websocket/client.py +0 -0
  438. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/websocket/fastapi.py +0 -0
  439. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/websocket/server.py +0 -0
  440. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/whatsapp/__init__.py +0 -0
  441. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/whatsapp/api.py +0 -0
  442. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/transports/whatsapp/client.py +0 -0
  443. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/__init__.py +0 -0
  444. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/asyncio/__init__.py +0 -0
  445. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/asyncio/task_manager.py +0 -0
  446. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/base_object.py +0 -0
  447. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/logger_config.py +0 -0
  448. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/network.py +0 -0
  449. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/string.py +0 -0
  450. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/text/__init__.py +0 -0
  451. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
  452. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/text/base_text_filter.py +0 -0
  453. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
  454. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
  455. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
  456. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
  457. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/time.py +0 -0
  458. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/tracing/__init__.py +0 -0
  459. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/tracing/class_decorators.py +0 -0
  460. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
  461. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/tracing/service_attributes.py +0 -0
  462. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/tracing/service_decorators.py +0 -0
  463. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/tracing/setup.py +0 -0
  464. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
  465. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
  466. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/src/pipecat/utils/utils.py +0 -0
  467. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/stop_container.yml +0 -0
  468. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/test_elevenlabs_stt_segmented.py +0 -0
  469. {dv_pipecat_ai-0.0.82.dev884 → dv_pipecat_ai-0.0.85.dev5}/uv.lock +0 -0
@@ -0,0 +1,72 @@
1
+ name: Force Push to PyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ branch:
7
+ description: "Branch to build and publish to PyPI"
8
+ required: true
9
+ default: "dv-stage"
10
+ type: string
11
+
12
+ jobs:
13
+ build-and-publish:
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ contents: read
17
+ id-token: write
18
+
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v4
22
+ with:
23
+ ref: ${{ github.event.inputs.branch }}
24
+ fetch-depth: 0
25
+
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v4
28
+ with:
29
+ python-version: "3.12"
30
+
31
+ - name: Install build tooling
32
+ run: |
33
+ python -m pip install --upgrade pip
34
+ pip install build requests packaging
35
+
36
+ - name: Build package (setuptools_scm)
37
+ run: |
38
+ echo "Building package from branch: ${{ github.event.inputs.branch }}"
39
+ python -m build
40
+ ls -la dist/
41
+
42
+ - name: Extract built version
43
+ id: extract_version
44
+ run: |
45
+ WHEEL_FILE=$(ls dist/*.whl | head -1)
46
+ BUILT_VERSION=$(echo "$WHEEL_FILE" | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+\.dev[0-9]+)-.*/\1/')
47
+ echo "built_version=$BUILT_VERSION" >> $GITHUB_OUTPUT
48
+ echo "Built version: $BUILT_VERSION"
49
+
50
+ # Verify tar.gz matches
51
+ TAR_FILE=$(ls dist/*.tar.gz | head -1)
52
+ TAR_VERSION=$(echo "$TAR_FILE" | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+\.dev[0-9]+)\.tar\.gz/\1/')
53
+
54
+ if [ "$BUILT_VERSION" != "$TAR_VERSION" ]; then
55
+ echo "Version mismatch between wheel and tar.gz"
56
+ exit 1
57
+ fi
58
+
59
+ echo "Package ready to publish: dv-pipecat-ai version $BUILT_VERSION"
60
+
61
+ - name: Publish to PyPI
62
+ uses: pypa/gh-action-pypi-publish@release/v1
63
+ with:
64
+ password: ${{ secrets.PYPI_API_TOKEN }}
65
+ print-hash: true
66
+ verbose: true
67
+
68
+ - name: Summary
69
+ run: |
70
+ echo "Successfully published dv-pipecat-ai version ${{ steps.extract_version.outputs.built_version }} to PyPI"
71
+ echo "Branch: ${{ github.event.inputs.branch }}"
72
+ echo "Commit: ${{ github.sha }}"
@@ -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.dev884
3
+ Version: 0.0.85.dev5
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.dev884
3
+ Version: 0.0.85.dev5
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"
@@ -42,6 +42,7 @@ uv.lock
42
42
  .github/ISSUE_TEMPLATE/config.yml
43
43
  .github/workflows/build.yaml
44
44
  .github/workflows/coverage.yaml
45
+ .github/workflows/force_push_to_pypi.yml
45
46
  .github/workflows/format.yaml
46
47
  .github/workflows/github.yml
47
48
  .github/workflows/promote-prod.yml
@@ -49,7 +50,6 @@ uv.lock
49
50
  .github/workflows/publish_test.yaml
50
51
  .github/workflows/python-compatibility.yaml
51
52
  .github/workflows/set-traffic-split.yml
52
- .github/workflows/smart-auto-release.yml
53
53
  .github/workflows/sync-quickstart.yaml
54
54
  .github/workflows/tests.yaml
55
55
  create-new-machine/ansible.cfg
@@ -178,6 +178,7 @@ src/pipecat/pipeline/service_switcher.py
178
178
  src/pipecat/pipeline/sync_parallel_pipeline.py
179
179
  src/pipecat/pipeline/task.py
180
180
  src/pipecat/pipeline/task_observer.py
181
+ src/pipecat/pipeline/tts_switcher.py
181
182
  src/pipecat/pipeline/to_be_updated/merge_pipeline.py
182
183
  src/pipecat/processors/__init__.py
183
184
  src/pipecat/processors/async_generator.py
@@ -230,8 +231,8 @@ src/pipecat/serializers/__init__.py
230
231
  src/pipecat/serializers/asterisk.py
231
232
  src/pipecat/serializers/base_serializer.py
232
233
  src/pipecat/serializers/convox.py
234
+ src/pipecat/serializers/custom.py
233
235
  src/pipecat/serializers/exotel.py
234
- src/pipecat/serializers/genesys.py
235
236
  src/pipecat/serializers/livekit.py
236
237
  src/pipecat/serializers/plivo.py
237
238
  src/pipecat/serializers/protobuf.py
@@ -306,7 +307,6 @@ src/pipecat/services/google/llm_openai.py
306
307
  src/pipecat/services/google/llm_vertex.py
307
308
  src/pipecat/services/google/rtvi.py
308
309
  src/pipecat/services/google/stt.py
309
- src/pipecat/services/google/test-google-chirp.py
310
310
  src/pipecat/services/google/tts.py
311
311
  src/pipecat/services/grok/__init__.py
312
312
  src/pipecat/services/grok/llm.py
@@ -371,6 +371,7 @@ src/pipecat/services/sambanova/__init__.py
371
371
  src/pipecat/services/sambanova/llm.py
372
372
  src/pipecat/services/sambanova/stt.py
373
373
  src/pipecat/services/sarvam/__init__.py
374
+ src/pipecat/services/sarvam/stt.py
374
375
  src/pipecat/services/sarvam/tts.py
375
376
  src/pipecat/services/simli/__init__.py
376
377
  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]
@@ -172,7 +172,7 @@ class SileroVADAnalyzer(VADAnalyzer):
172
172
 
173
173
  self._last_reset_time = 0
174
174
 
175
- logger.debug("Loaded Silero VAD")
175
+ logger.debug(f"Loaded Silero VAD {model_file_path}")
176
176
 
177
177
  #
178
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.