dv-pipecat-ai 0.0.82.dev807__tar.gz → 0.0.82.dev816__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 (421) hide show
  1. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/github.yml +24 -8
  2. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/promote-prod.yml +17 -0
  3. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/PKG-INFO +1 -1
  4. dv_pipecat_ai-0.0.82.dev816/k8s/dv-pipecat/values-canary.yaml +13 -0
  5. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/values-prod.yaml +3 -3
  6. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/dv_pipecat_ai.egg-info/PKG-INFO +1 -1
  7. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/dv_pipecat_ai.egg-info/SOURCES.txt +1 -0
  8. dv_pipecat_ai-0.0.82.dev816/src/pipecat/serializers/asterisk.py +130 -0
  9. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/tts_service.py +3 -0
  10. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/vistaar/llm.py +56 -4
  11. dv_pipecat_ai-0.0.82.dev807/k8s/dv-pipecat/values-canary.yaml +0 -9
  12. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.dockerignore +0 -0
  13. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
  14. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
  15. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
  16. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
  17. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
  18. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
  19. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
  20. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  21. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  22. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/build.yaml +0 -0
  23. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/coverage.yaml +0 -0
  24. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/format.yaml +0 -0
  25. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/publish.yaml +0 -0
  26. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/publish_test.yaml +0 -0
  27. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/python-compatibility.yaml +0 -0
  28. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/set-traffic-split.yml +0 -0
  29. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/smart-auto-release.yml +0 -0
  30. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/sync-quickstart.yaml +0 -0
  31. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.github/workflows/tests.yaml +0 -0
  32. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.gitignore +0 -0
  33. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.pre-commit-config.yaml +0 -0
  34. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/.readthedocs.yaml +0 -0
  35. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/CHANGELOG.md +0 -0
  36. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/CHANGELOG.md.template +0 -0
  37. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/CLAUDE.md +0 -0
  38. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/CONTRIBUTING.md +0 -0
  39. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
  40. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/LICENSE +0 -0
  41. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/MANIFEST.in +0 -0
  42. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/README.md +0 -0
  43. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/ansible.cfg +0 -0
  44. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/ansible_deployment.sh +0 -0
  45. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/cleanup_old_containers.yml +0 -0
  46. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/codecov.yml +0 -0
  47. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/create-new-machine/ansible.cfg +0 -0
  48. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/create-new-machine/ansible_setup.sh +0 -0
  49. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/create-new-machine/inventory.ini +0 -0
  50. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/create-new-machine/replace_env.yml +0 -0
  51. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/create-new-machine/setup_playbook.yml +0 -0
  52. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/create_inventory.py +0 -0
  53. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/delete_old_dockers.sh +0 -0
  54. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/deploy.sh +0 -0
  55. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/deploy_playbook.yml +0 -0
  56. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/docker-compose.dev.yml +0 -0
  57. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/dump_logs.yml +0 -0
  58. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/env.example +0 -0
  59. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/fetch_logs.yml +0 -0
  60. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/inventory.ini +0 -0
  61. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/.helmignore +0 -0
  62. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/Chart.yaml +0 -0
  63. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
  64. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
  65. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
  66. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
  67. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
  68. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
  69. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
  70. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
  71. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
  72. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/templates/service.yaml +0 -0
  73. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/values-stage.yaml +0 -0
  74. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/dv-pipecat/values.yaml +0 -0
  75. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/k8s/istio/destination-virtualservice.yaml +0 -0
  76. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/merge-code-into-single-file.sh +0 -0
  77. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/pipecat.png +0 -0
  78. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/pyproject.toml +0 -0
  79. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/restart.sh +0 -0
  80. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/restart_playbook.yml +0 -0
  81. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/setup.cfg +0 -0
  82. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
  83. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/dv_pipecat_ai.egg-info/requires.txt +0 -0
  84. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
  85. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/__init__.py +0 -0
  86. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/__init__.py +0 -0
  87. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/base_llm_adapter.py +0 -0
  88. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/schemas/__init__.py +0 -0
  89. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/schemas/direct_function.py +0 -0
  90. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/schemas/function_schema.py +0 -0
  91. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
  92. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/services/__init__.py +0 -0
  93. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
  94. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
  95. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
  96. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
  97. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
  98. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
  99. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/__init__.py +0 -0
  100. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/filters/__init__.py +0 -0
  101. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
  102. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/filters/koala_filter.py +0 -0
  103. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/filters/krisp_filter.py +0 -0
  104. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
  105. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
  106. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/interruptions/__init__.py +0 -0
  107. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
  108. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
  109. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/mixers/__init__.py +0 -0
  110. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
  111. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
  112. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/resamplers/__init__.py +0 -0
  113. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
  114. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
  115. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
  116. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
  117. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/__init__.py +0 -0
  118. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
  119. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
  120. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
  121. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
  122. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
  123. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
  124. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
  125. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
  126. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/utils.py +0 -0
  127. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/vad/__init__.py +0 -0
  128. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/vad/data/__init__.py +0 -0
  129. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
  130. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/vad/silero.py +0 -0
  131. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
  132. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/clocks/__init__.py +0 -0
  133. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/clocks/base_clock.py +0 -0
  134. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/clocks/system_clock.py +0 -0
  135. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/extensions/__init__.py +0 -0
  136. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/extensions/voicemail/__init__.py +0 -0
  137. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
  138. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/frames/__init__.py +0 -0
  139. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/frames/frames.proto +0 -0
  140. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/frames/frames.py +0 -0
  141. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
  142. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/metrics/__init__.py +0 -0
  143. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/metrics/metrics.py +0 -0
  144. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/observers/__init__.py +0 -0
  145. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/observers/base_observer.py +0 -0
  146. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/observers/loggers/__init__.py +0 -0
  147. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
  148. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
  149. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
  150. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
  151. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/observers/turn_tracking_observer.py +0 -0
  152. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/__init__.py +0 -0
  153. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/base_pipeline.py +0 -0
  154. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/base_task.py +0 -0
  155. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
  156. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/pipeline.py +0 -0
  157. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/runner.py +0 -0
  158. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
  159. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/task.py +0 -0
  160. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/task_observer.py +0 -0
  161. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
  162. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/__init__.py +0 -0
  163. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/__init__.py +0 -0
  164. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
  165. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/gated.py +0 -0
  166. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/gated_openai_llm_context.py +0 -0
  167. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/llm_response.py +0 -0
  168. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
  169. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/sentence.py +0 -0
  170. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/user_response.py +0 -0
  171. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
  172. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/async_generator.py +0 -0
  173. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/audio/__init__.py +0 -0
  174. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
  175. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/consumer_processor.py +0 -0
  176. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/dtmf_aggregator.py +0 -0
  177. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/filters/__init__.py +0 -0
  178. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/filters/frame_filter.py +0 -0
  179. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/filters/function_filter.py +0 -0
  180. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/filters/identity_filter.py +0 -0
  181. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/filters/null_filter.py +0 -0
  182. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
  183. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
  184. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
  185. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/frame_processor.py +0 -0
  186. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/frameworks/__init__.py +0 -0
  187. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/frameworks/langchain.py +0 -0
  188. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/frameworks/rtvi.py +0 -0
  189. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/gstreamer/__init__.py +0 -0
  190. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
  191. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/idle_frame_processor.py +0 -0
  192. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/logger.py +0 -0
  193. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/metrics/__init__.py +0 -0
  194. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
  195. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/metrics/sentry.py +0 -0
  196. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/producer_processor.py +0 -0
  197. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/text_transformer.py +0 -0
  198. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/transcript_processor.py +0 -0
  199. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
  200. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/processors/user_idle_processor.py +0 -0
  201. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/py.typed +0 -0
  202. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/runner/__init__.py +0 -0
  203. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/runner/daily.py +0 -0
  204. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/runner/livekit.py +0 -0
  205. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/runner/run.py +0 -0
  206. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/runner/types.py +0 -0
  207. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/runner/utils.py +0 -0
  208. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/__init__.py +0 -0
  209. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/base_serializer.py +0 -0
  210. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/convox.py +0 -0
  211. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/exotel.py +0 -0
  212. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/genesys.py +0 -0
  213. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/livekit.py +0 -0
  214. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/plivo.py +0 -0
  215. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/protobuf.py +0 -0
  216. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/telnyx.py +0 -0
  217. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/serializers/twilio.py +0 -0
  218. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/__init__.py +0 -0
  219. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/ai_service.py +0 -0
  220. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/ai_services.py +0 -0
  221. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/anthropic/__init__.py +0 -0
  222. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/anthropic/llm.py +0 -0
  223. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/assemblyai/__init__.py +0 -0
  224. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/assemblyai/models.py +0 -0
  225. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/assemblyai/stt.py +0 -0
  226. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/asyncai/__init__.py +0 -0
  227. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/asyncai/tts.py +0 -0
  228. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws/__init__.py +0 -0
  229. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws/llm.py +0 -0
  230. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws/stt.py +0 -0
  231. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws/tts.py +0 -0
  232. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws/utils.py +0 -0
  233. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
  234. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
  235. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
  236. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
  237. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/aws_nova_sonic/ready.wav +0 -0
  238. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/azure/__init__.py +0 -0
  239. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/azure/common.py +0 -0
  240. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/azure/image.py +0 -0
  241. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/azure/llm.py +0 -0
  242. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/azure/stt.py +0 -0
  243. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/azure/tts.py +0 -0
  244. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/cartesia/__init__.py +0 -0
  245. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/cartesia/stt.py +0 -0
  246. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/cartesia/tts.py +0 -0
  247. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/cerebras/__init__.py +0 -0
  248. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/cerebras/llm.py +0 -0
  249. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/deepgram/__init__.py +0 -0
  250. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/deepgram/stt.py +0 -0
  251. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/deepgram/tts.py +0 -0
  252. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/deepseek/__init__.py +0 -0
  253. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/deepseek/llm.py +0 -0
  254. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/elevenlabs/__init__.py +0 -0
  255. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/elevenlabs/tts.py +0 -0
  256. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/fal/__init__.py +0 -0
  257. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/fal/image.py +0 -0
  258. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/fal/stt.py +0 -0
  259. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/fireworks/__init__.py +0 -0
  260. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/fireworks/llm.py +0 -0
  261. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/fish/__init__.py +0 -0
  262. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/fish/tts.py +0 -0
  263. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
  264. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
  265. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
  266. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
  267. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/gladia/__init__.py +0 -0
  268. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/gladia/config.py +0 -0
  269. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/gladia/stt.py +0 -0
  270. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/__init__.py +0 -0
  271. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/frames.py +0 -0
  272. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/google.py +0 -0
  273. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/image.py +0 -0
  274. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/llm.py +0 -0
  275. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/llm_openai.py +0 -0
  276. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/llm_vertex.py +0 -0
  277. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/rtvi.py +0 -0
  278. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/stt.py +0 -0
  279. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/test-google-chirp.py +0 -0
  280. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/google/tts.py +0 -0
  281. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/grok/__init__.py +0 -0
  282. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/grok/llm.py +0 -0
  283. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/groq/__init__.py +0 -0
  284. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/groq/llm.py +0 -0
  285. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/groq/stt.py +0 -0
  286. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/groq/tts.py +0 -0
  287. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/hamsa/__init__.py +0 -0
  288. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/hamsa/stt.py +0 -0
  289. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/heygen/__init__.py +0 -0
  290. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/heygen/api.py +0 -0
  291. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/heygen/client.py +0 -0
  292. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/heygen/video.py +0 -0
  293. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/image_service.py +0 -0
  294. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/inworld/__init__.py +0 -0
  295. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/inworld/tts.py +0 -0
  296. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/llm_service.py +0 -0
  297. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/lmnt/__init__.py +0 -0
  298. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/lmnt/tts.py +0 -0
  299. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/mcp_service.py +0 -0
  300. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/mem0/__init__.py +0 -0
  301. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/mem0/memory.py +0 -0
  302. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/minimax/__init__.py +0 -0
  303. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/minimax/tts.py +0 -0
  304. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/mistral/__init__.py +0 -0
  305. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/mistral/llm.py +0 -0
  306. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/moondream/__init__.py +0 -0
  307. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/moondream/vision.py +0 -0
  308. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/neuphonic/__init__.py +0 -0
  309. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/neuphonic/tts.py +0 -0
  310. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/nim/__init__.py +0 -0
  311. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/nim/llm.py +0 -0
  312. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/ollama/__init__.py +0 -0
  313. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/ollama/llm.py +0 -0
  314. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai/__init__.py +0 -0
  315. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai/base_llm.py +0 -0
  316. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai/image.py +0 -0
  317. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai/llm.py +0 -0
  318. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai/stt.py +0 -0
  319. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai/tts.py +0 -0
  320. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai.py +0 -0
  321. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
  322. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
  323. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
  324. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
  325. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
  326. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
  327. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openpipe/__init__.py +0 -0
  328. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openpipe/llm.py +0 -0
  329. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openrouter/__init__.py +0 -0
  330. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/openrouter/llm.py +0 -0
  331. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/perplexity/__init__.py +0 -0
  332. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/perplexity/llm.py +0 -0
  333. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/piper/__init__.py +0 -0
  334. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/piper/tts.py +0 -0
  335. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/playht/__init__.py +0 -0
  336. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/playht/tts.py +0 -0
  337. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/qwen/__init__.py +0 -0
  338. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/qwen/llm.py +0 -0
  339. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/rime/__init__.py +0 -0
  340. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/rime/tts.py +0 -0
  341. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/riva/__init__.py +0 -0
  342. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/riva/stt.py +0 -0
  343. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/riva/tts.py +0 -0
  344. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/sambanova/__init__.py +0 -0
  345. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/sambanova/llm.py +0 -0
  346. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/sambanova/stt.py +0 -0
  347. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/sarvam/__init__.py +0 -0
  348. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/sarvam/tts.py +0 -0
  349. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/simli/__init__.py +0 -0
  350. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/simli/video.py +0 -0
  351. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/soniox/__init__.py +0 -0
  352. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/soniox/stt.py +0 -0
  353. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/speechmatics/__init__.py +0 -0
  354. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/speechmatics/stt.py +0 -0
  355. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/stt_service.py +0 -0
  356. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/tavus/__init__.py +0 -0
  357. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/tavus/video.py +0 -0
  358. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/together/__init__.py +0 -0
  359. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/together/llm.py +0 -0
  360. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/ultravox/__init__.py +0 -0
  361. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/ultravox/stt.py +0 -0
  362. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/vision_service.py +0 -0
  363. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/vistaar/__init__.py +0 -0
  364. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/websocket_service.py +0 -0
  365. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/whisper/__init__.py +0 -0
  366. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/whisper/base_stt.py +0 -0
  367. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/whisper/stt.py +0 -0
  368. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/xtts/__init__.py +0 -0
  369. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/services/xtts/tts.py +0 -0
  370. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/sync/__init__.py +0 -0
  371. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/sync/base_notifier.py +0 -0
  372. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/sync/event_notifier.py +0 -0
  373. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/tests/__init__.py +0 -0
  374. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/tests/utils.py +0 -0
  375. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transcriptions/__init__.py +0 -0
  376. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transcriptions/language.py +0 -0
  377. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/__init__.py +0 -0
  378. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/base_input.py +0 -0
  379. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/base_output.py +0 -0
  380. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/base_transport.py +0 -0
  381. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/local/__init__.py +0 -0
  382. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/local/audio.py +0 -0
  383. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/local/tk.py +0 -0
  384. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/network/__init__.py +0 -0
  385. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
  386. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/network/small_webrtc.py +0 -0
  387. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/network/webrtc_connection.py +0 -0
  388. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/network/websocket_client.py +0 -0
  389. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/network/websocket_server.py +0 -0
  390. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/services/__init__.py +0 -0
  391. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/services/daily.py +0 -0
  392. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/services/helpers/__init__.py +0 -0
  393. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
  394. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/services/livekit.py +0 -0
  395. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/transports/services/tavus.py +0 -0
  396. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/__init__.py +0 -0
  397. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/asyncio/__init__.py +0 -0
  398. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/asyncio/task_manager.py +0 -0
  399. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/base_object.py +0 -0
  400. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/logger_config.py +0 -0
  401. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/network.py +0 -0
  402. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/string.py +0 -0
  403. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/text/__init__.py +0 -0
  404. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
  405. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/text/base_text_filter.py +0 -0
  406. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
  407. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
  408. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
  409. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
  410. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/time.py +0 -0
  411. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/tracing/__init__.py +0 -0
  412. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/tracing/class_decorators.py +0 -0
  413. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
  414. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/tracing/service_attributes.py +0 -0
  415. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/tracing/service_decorators.py +0 -0
  416. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/tracing/setup.py +0 -0
  417. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
  418. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
  419. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/src/pipecat/utils/utils.py +0 -0
  420. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/stop_container.yml +0 -0
  421. {dv_pipecat_ai-0.0.82.dev807 → dv_pipecat_ai-0.0.82.dev816}/uv.lock +0 -0
@@ -88,7 +88,7 @@ jobs:
88
88
  echo "📦 Required pipecat version: $PIPECAT_VERSION"
89
89
 
90
90
  # Verify package is available on PyPI with retry logic
91
- MAX_ATTEMPTS=30
91
+ MAX_ATTEMPTS=2
92
92
  ATTEMPT=1
93
93
  PACKAGE_AVAILABLE=false
94
94
 
@@ -169,20 +169,36 @@ jobs:
169
169
  run: |
170
170
  echo "🔍 Checking if KEDA is already installed..."
171
171
 
172
+ # Ensure KEDA Helm repository exists and is up-to-date for both install and upgrade paths
173
+ if ! helm repo list | grep -q '^kedacore\s'; then
174
+ helm repo add kedacore https://kedacore.github.io/charts
175
+ else
176
+ # Force update in case URL changed or local cache is stale
177
+ helm repo add kedacore https://kedacore.github.io/charts --force-update
178
+ fi
179
+ helm repo update
180
+
172
181
  # Install KEDA if needed
173
182
  if ! kubectl get deployment -n keda keda-operator >/dev/null 2>&1; then
174
183
  echo "🚀 Installing KEDA core..."
175
184
 
176
- # Add KEDA Helm repository
177
- helm repo add kedacore https://kedacore.github.io/charts
178
- helm repo update
179
-
180
- # Install KEDA core (required before HTTP add-on)
181
- helm install keda kedacore/keda --namespace keda --create-namespace --wait --timeout=5m
185
+ # Install KEDA core (required before HTTP add-on) with 30s HTTP timeout
186
+ helm install keda kedacore/keda --namespace keda --create-namespace --wait --timeout=5m \
187
+ --set operator.extraEnvs[0].name=KEDA_HTTP_DEFAULT_TIMEOUT \
188
+ --set operator.extraEnvs[0].value="30000"
182
189
 
183
- echo "✅ KEDA core installation completed"
190
+ echo "✅ KEDA core installation completed with 30s HTTP timeout"
184
191
  else
185
192
  echo "✅ KEDA core already installed"
193
+
194
+ # Update existing KEDA installation to ensure HTTP timeout is set
195
+ echo "🔄 Updating KEDA configuration to ensure 30s HTTP timeout..."
196
+ helm upgrade keda kedacore/keda --namespace keda --reuse-values \
197
+ --set operator.extraEnvs[0].name=KEDA_HTTP_DEFAULT_TIMEOUT \
198
+ --set operator.extraEnvs[0].value="30000" \
199
+ --wait --timeout=5m
200
+
201
+ echo "✅ KEDA configuration updated with 30s HTTP timeout"
186
202
  fi
187
203
 
188
204
  # Verify KEDA CRDs are available
@@ -15,6 +15,7 @@ env:
15
15
  HELM_RELEASE_NAME: dv-pipecat
16
16
  CLUSTER: desivocal-prod-us-e1-cluster
17
17
  CLUSTER_ZONE: us-east1
18
+ SECRETS_JSON: ${{ secrets.PROD_SECRETS_JSON }}
18
19
 
19
20
  jobs:
20
21
  promote:
@@ -25,6 +26,9 @@ jobs:
25
26
  steps:
26
27
  - uses: actions/checkout@v4
27
28
 
29
+ - name: Install jq
30
+ run: sudo apt-get update && sudo apt-get install -y jq
31
+
28
32
  - uses: google-github-actions/auth@v2
29
33
  with:
30
34
  workload_identity_provider: projects/623676891410/locations/global/workloadIdentityPools/desivocal-staging-pool/providers/github
@@ -51,8 +55,21 @@ jobs:
51
55
  # 1 roll stable Deployment to desired image
52
56
  - name: Upgrade stable release
53
57
  run: |
58
+ PROD_ADMIN_API_KEY=$(echo "$SECRETS_JSON" | jq -r '.ADMIN_API_KEY // empty')
59
+ if [ -z "$PROD_ADMIN_API_KEY" ]; then
60
+ echo "❌ ADMIN_API_KEY not found in SECRETS_JSON"
61
+ exit 1
62
+ fi
63
+ PROD_CALLING_BACKEND_URL=$(echo "$SECRETS_JSON" | jq -r '.CALLING_BACKEND_URL // empty')
64
+ if [ -z "$PROD_CALLING_BACKEND_URL" ]; then
65
+ echo "❌ CALLING_BACKEND_URL not found in SECRETS_JSON"
66
+ exit 1
67
+ fi
68
+ echo "🚀 Promoting to stable production..."
54
69
  helm upgrade $HELM_RELEASE_NAME ./k8s/dv-pipecat \
55
70
  -f ./k8s/dv-pipecat/values-prod.yaml \
56
71
  --set image.repository=$REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/$IMAGE_NAME \
57
72
  --set image.tag=${{ steps.tag.outputs.TAG }} \
73
+ --set ADMIN_API_KEY="${PROD_ADMIN_API_KEY}" \
74
+ --set CALLING_BACKEND_URL="${PROD_CALLING_BACKEND_URL}" \
58
75
  --namespace default
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-ai
3
- Version: 0.0.82.dev807
3
+ Version: 0.0.82.dev816
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
@@ -0,0 +1,13 @@
1
+ releaseTrack: canary
2
+ replicaCount: 2
3
+
4
+ env:
5
+ - name: LOGGER_NAME
6
+ value: "pipecat-canary"
7
+
8
+ service:
9
+ create: false # So that canary will not create new service
10
+
11
+ # Disable KEDA for canary - we only want production to be scaled
12
+ keda:
13
+ enabled: false
@@ -76,11 +76,11 @@ keda:
76
76
 
77
77
  # Production-optimized scaling behavior to prevent fluctuations
78
78
  # Longer scale down stabilization to prevent rapid fluctuations
79
- scaleDownStabilizationWindow: 900 # 15 minutes for production
79
+ scaleDownStabilizationWindow: 1800 # 30 minutes for production
80
80
  # Conservative scale down - only 25% at a time
81
81
  scaleDownPercent: 25
82
- # Scale down every 2 minutes
83
- scaleDownPeriod: 120
82
+ # Scale down every 10 minutes
83
+ scaleDownPeriod: 600
84
84
  # Faster scale up for production responsiveness
85
85
  scaleUpStabilizationWindow: 30
86
86
  # Aggressive scale up - 100% at a time
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-ai
3
- Version: 0.0.82.dev807
3
+ Version: 0.0.82.dev816
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
@@ -202,6 +202,7 @@ src/pipecat/runner/run.py
202
202
  src/pipecat/runner/types.py
203
203
  src/pipecat/runner/utils.py
204
204
  src/pipecat/serializers/__init__.py
205
+ src/pipecat/serializers/asterisk.py
205
206
  src/pipecat/serializers/base_serializer.py
206
207
  src/pipecat/serializers/convox.py
207
208
  src/pipecat/serializers/exotel.py
@@ -0,0 +1,130 @@
1
+ # asterisk_ws_serializer.py
2
+ import base64
3
+ import json
4
+ from typing import Literal, Optional
5
+
6
+ from pydantic import BaseModel
7
+
8
+ from pipecat.audio.utils import create_stream_resampler, pcm_to_ulaw, ulaw_to_pcm
9
+ from pipecat.frames.frames import (
10
+ AudioRawFrame,
11
+ CancelFrame,
12
+ EndFrame,
13
+ Frame,
14
+ InputAudioRawFrame,
15
+ StartFrame,
16
+ StartInterruptionFrame,
17
+ TransportMessageFrame,
18
+ TransportMessageUrgentFrame,
19
+ )
20
+ from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializerType
21
+
22
+
23
+ class AsteriskFrameSerializer(FrameSerializer):
24
+ class InputParams(BaseModel):
25
+ """Configuration parameters for AsteriskFrameSerializer.
26
+
27
+ Parameters:
28
+ telephony_encoding: The encoding used by the telephony system (e.g., "pcmu" for μ-law).
29
+ telephony_sample_rate: The sample rate used by the telephony system (e.g., 8000 Hz).
30
+ sample_rate: Optional override for pipeline input sample rate.
31
+ auto_hang_up: Whether to automatically terminate call on EndFrame.
32
+ """
33
+
34
+ # What the ADAPTER/Asterisk is sending/expecting on the wire:
35
+ # "pcmu" -> μ-law @ 8k; "pcm16" -> signed 16-bit @ 8k
36
+ telephony_encoding: Literal["pcmu", "pcm16"] = "pcmu"
37
+ telephony_sample_rate: int = 8000
38
+ sample_rate: Optional[int] = None # pipeline input rate
39
+ auto_hang_up: bool = False # no-op here; adapter handles hangup
40
+
41
+ def __init__(self, stream_id: str, params: Optional[InputParams] = None):
42
+ self._stream_id = stream_id
43
+ self._params = params or AsteriskFrameSerializer.InputParams()
44
+ self._tel_rate = self._params.telephony_sample_rate
45
+ self._sample_rate = 0
46
+ self._in_resampler = create_stream_resampler()
47
+ self._out_resampler = create_stream_resampler()
48
+ self._hangup_sent = False
49
+
50
+ @property
51
+ def type(self) -> FrameSerializerType:
52
+ return FrameSerializerType.TEXT # we send/recv JSON strings
53
+
54
+ async def setup(self, frame: StartFrame):
55
+ self._sample_rate = self._params.sample_rate or frame.audio_in_sample_rate
56
+
57
+ # Pipecat -> Adapter (play to caller)
58
+ async def serialize(self, frame: Frame) -> str | bytes | None:
59
+ # On pipeline end, ask bridge to hang up
60
+ if (
61
+ self._params.auto_hang_up
62
+ and not self._hangup_sent
63
+ and isinstance(frame, (EndFrame, CancelFrame))
64
+ ):
65
+ self._hangup_sent = True
66
+ return json.dumps({"event": "hangup"})
67
+ if isinstance(frame, StartInterruptionFrame):
68
+ return json.dumps({"event": "clear", "streamId": self._stream_id})
69
+ if isinstance(frame, AudioRawFrame):
70
+ pcm = frame.audio
71
+ if self._params.telephony_encoding == "pcmu":
72
+ ul = await pcm_to_ulaw(pcm, frame.sample_rate, self._tel_rate, self._out_resampler)
73
+ if not ul:
74
+ return None
75
+ payload = base64.b64encode(ul).decode("utf-8")
76
+ return json.dumps(
77
+ {
78
+ "event": "media",
79
+ "encoding": "pcmu",
80
+ "sampleRate": self._tel_rate,
81
+ "payload": payload,
82
+ }
83
+ )
84
+ else: # "pcm16"
85
+ # resample to 8k if needed, but data stays PCM16 bytes
86
+ pcm8 = await self._out_resampler.resample(pcm, frame.sample_rate, self._tel_rate)
87
+ if not pcm8:
88
+ return None
89
+ payload = base64.b64encode(pcm8).decode("utf-8")
90
+ return json.dumps(
91
+ {
92
+ "event": "media",
93
+ "encoding": "pcm16",
94
+ "sampleRate": self._tel_rate,
95
+ "payload": payload,
96
+ }
97
+ )
98
+ if isinstance(frame, (TransportMessageFrame, TransportMessageUrgentFrame)):
99
+ return json.dumps(frame.message)
100
+ return None
101
+
102
+ # Adapter -> Pipecat (audio from caller)
103
+ async def deserialize(self, data: str | bytes) -> Frame | None:
104
+ try:
105
+ msg = json.loads(data)
106
+ except Exception:
107
+ return None
108
+ if msg.get("event") == "media":
109
+ enc = msg.get("encoding")
110
+ sr = int(msg.get("sampleRate", self._tel_rate))
111
+ raw = base64.b64decode(msg.get("payload", ""))
112
+ if not raw:
113
+ return None
114
+ if enc == "pcmu":
115
+ pcm = await ulaw_to_pcm(raw, sr, self._sample_rate, self._in_resampler)
116
+ elif enc == "pcm16":
117
+ # resample if pipeline rate != 8k
118
+ pcm = await self._in_resampler.resample(raw, sr, self._sample_rate)
119
+ else:
120
+ return None
121
+ if not pcm:
122
+ return None
123
+ return InputAudioRawFrame(audio=pcm, num_channels=1, sample_rate=self._sample_rate)
124
+ elif msg.get("event") == "dtmf":
125
+ # optional: map to InputDTMFFrame if you want
126
+ return None
127
+ elif msg.get("event") == "hangup":
128
+ # Bridge is hanging up; you can treat as EndFrame if you want.
129
+ return CancelFrame()
130
+ return None
@@ -122,6 +122,9 @@ class TTSService(AIService):
122
122
  self._voice = None
123
123
  self._voice_clone_params = None
124
124
 
125
+ self._tracing_enabled: bool = False
126
+
127
+
125
128
  if text_filter:
126
129
  import warnings
127
130
 
@@ -30,13 +30,13 @@ from pipecat.processors.aggregators.openai_llm_context import (
30
30
  OpenAILLMContext,
31
31
  OpenAILLMContextFrame,
32
32
  )
33
+ from pipecat.processors.frame_processor import FrameDirection
34
+ from pipecat.services.llm_service import LLMService
33
35
  from pipecat.services.openai.llm import (
34
36
  OpenAIAssistantContextAggregator,
35
37
  OpenAIContextAggregatorPair,
36
38
  OpenAIUserContextAggregator,
37
39
  )
38
- from pipecat.processors.frame_processor import FrameDirection
39
- from pipecat.services.llm_service import LLMService
40
40
 
41
41
 
42
42
  class VistaarLLMService(LLMService):
@@ -68,6 +68,8 @@ class VistaarLLMService(LLMService):
68
68
  base_url: str = "https://vistaar.kenpath.ai/api",
69
69
  params: Optional[InputParams] = None,
70
70
  timeout: float = 30.0,
71
+ interim_timeout: float = 5.0,
72
+ interim_message: str = "एक क्षण थांबा, मी बघतो. ",
71
73
  **kwargs,
72
74
  ):
73
75
  """Initialize Vistaar LLM service.
@@ -76,6 +78,8 @@ class VistaarLLMService(LLMService):
76
78
  base_url: The base URL for Vistaar API. Defaults to "https://vistaar.kenpath.ai/api".
77
79
  params: Input parameters for model configuration and behavior.
78
80
  timeout: Request timeout in seconds. Defaults to 30.0 seconds.
81
+ interim_timeout: Time in seconds before sending interim message. Defaults to 3.0 seconds.
82
+ interim_message: Message to send if API takes longer than interim_timeout. Defaults to "एक क्षण थांबा, मी बघतो. ".
79
83
  **kwargs: Additional arguments passed to the parent LLMService.
80
84
  """
81
85
  super().__init__(**kwargs)
@@ -88,14 +92,18 @@ class VistaarLLMService(LLMService):
88
92
  self._session_id = params.session_id or str(uuid.uuid4())
89
93
  self._extra = params.extra if isinstance(params.extra, dict) else {}
90
94
  self._timeout = timeout
95
+ self._interim_timeout = interim_timeout
96
+ self._interim_message = interim_message
91
97
 
92
98
  # Create an async HTTP client
93
- self._client = httpx.AsyncClient(timeout=httpx.Timeout(self._timeout))
99
+ self._client = httpx.AsyncClient(timeout=httpx.Timeout(self._timeout), verify=False)
94
100
 
95
101
  # Interruption handling state
96
102
  self._current_response = None # Track current HTTP response stream
97
103
  self._is_interrupted = False # Track if current generation was interrupted
98
104
  self._partial_response = [] # Track what was actually sent before interruption
105
+ self._interim_sent = False # Track if interim message was sent
106
+ self._interim_task = None # Track interim message task
99
107
 
100
108
  logger.info(
101
109
  f"Vistaar LLM initialized - Base URL: {self._base_url}, Session ID: {self._session_id}, Source Lang: {self._source_lang}, Target Lang: {self._target_lang}, Timeout: {self._timeout}s"
@@ -154,6 +162,11 @@ class VistaarLLMService(LLMService):
154
162
  # Set interruption flag
155
163
  self._is_interrupted = True
156
164
 
165
+ # Cancel interim message task if active
166
+ await self._cancel_interim_message_task(
167
+ "Cancelled interim message task - handling interruption"
168
+ )
169
+
157
170
  # Cancel ongoing HTTP response stream if active
158
171
  if self._current_response:
159
172
  try:
@@ -174,6 +187,19 @@ class VistaarLLMService(LLMService):
174
187
  # Clear current partial response
175
188
  self._partial_response = []
176
189
 
190
+ async def _send_interim_message(self):
191
+ """Send interim message after timeout."""
192
+ try:
193
+ await asyncio.sleep(self._interim_timeout)
194
+ if not self._is_interrupted and not self._interim_sent:
195
+ logger.info(f"Sending interim message after {self._interim_timeout}s timeout")
196
+ self._interim_sent = True
197
+ await self.push_frame(LLMTextFrame(text=self._interim_message))
198
+ except asyncio.CancelledError:
199
+ logger.debug("Interim message task cancelled")
200
+ except Exception as e:
201
+ logger.error(f"Error sending interim message: {e}")
202
+
177
203
  async def _stream_response(self, query: str) -> AsyncGenerator[str, None]:
178
204
  """Stream response from Vistaar API using Server-Sent Events.
179
205
 
@@ -205,6 +231,7 @@ class VistaarLLMService(LLMService):
205
231
  # Reset interruption state and partial response for new request
206
232
  self._is_interrupted = False
207
233
  self._partial_response = []
234
+ self._interim_sent = False
208
235
 
209
236
  try:
210
237
  # Use httpx to handle SSE streaming
@@ -268,6 +295,11 @@ class VistaarLLMService(LLMService):
268
295
  await self.start_processing_metrics()
269
296
  await self.start_ttfb_metrics()
270
297
 
298
+ # Start interim message task
299
+ self._interim_task = self.create_task(
300
+ self._send_interim_message(), "Vistaar LLM - _send_interim_message"
301
+ )
302
+
271
303
  first_chunk = True
272
304
  full_response = []
273
305
 
@@ -276,6 +308,10 @@ class VistaarLLMService(LLMService):
276
308
  if first_chunk:
277
309
  await self.stop_ttfb_metrics()
278
310
  first_chunk = False
311
+ # Cancel interim message task since we got first response
312
+ await self._cancel_interim_message_task(
313
+ "Cancelled interim message task - got first response"
314
+ )
279
315
 
280
316
  # Push each text chunk as it arrives
281
317
  await self.push_frame(LLMTextFrame(text=text_chunk))
@@ -293,6 +329,10 @@ class VistaarLLMService(LLMService):
293
329
  logger.error(f"Vistaar traceback: {traceback.format_exc()}")
294
330
  raise
295
331
  finally:
332
+ # Clean up interim message task
333
+ await self._cancel_interim_message_task(
334
+ "Cancelled interim message task in finally block"
335
+ )
296
336
  await self.stop_processing_metrics()
297
337
  await self.push_frame(LLMFullResponseEndFrame())
298
338
 
@@ -308,7 +348,13 @@ class VistaarLLMService(LLMService):
308
348
  """
309
349
  await super().process_frame(frame, direction)
310
350
  context = None
311
- if isinstance(frame, StartInterruptionFrame):
351
+ if isinstance(frame, (EndFrame, CancelFrame)):
352
+ await self._cancel_interim_message_task(
353
+ f"Cancelled interim message task - received {type(frame).__name__}"
354
+ )
355
+ await self.push_frame(frame, direction)
356
+ return
357
+ elif isinstance(frame, StartInterruptionFrame):
312
358
  await self._handle_interruption()
313
359
  await self.push_frame(frame, direction)
314
360
  return
@@ -375,3 +421,9 @@ class VistaarLLMService(LLMService):
375
421
  asyncio.create_task(self._client.aclose())
376
422
  except:
377
423
  pass
424
+
425
+ async def _cancel_interim_message_task(self, message: str = "Cancelled interim message task"):
426
+ if self._interim_task and not self._interim_task.done():
427
+ await self.cancel_task(self._interim_task)
428
+ self._interim_task = None
429
+ logger.debug(message)
@@ -1,9 +0,0 @@
1
- releaseTrack: canary
2
- replicaCount: 2
3
-
4
- env:
5
- - name: LOGGER_NAME
6
- value: "pipecat-canary"
7
-
8
- service:
9
- create: false # So that canary will not create new service