dv-pipecat-ai 0.0.85.dev817__tar.gz → 0.0.85.dev819__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of dv-pipecat-ai might be problematic. Click here for more details.
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/PKG-INFO +3 -2
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/pyproject.toml +1 -1
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/dv_pipecat_ai.egg-info/PKG-INFO +3 -2
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/dv_pipecat_ai.egg-info/SOURCES.txt +1 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/dv_pipecat_ai.egg-info/requires.txt +2 -1
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/salesforce/llm.py +148 -26
- dv_pipecat_ai-0.0.85.dev819/src/pipecat/utils/redis.py +58 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.dockerignore +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/build.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/coverage.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/force_push_to_pypi.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/format.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/github.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/promote-prod.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/publish.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/publish_test.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/python-compatibility.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/set-traffic-split.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/sync-quickstart.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/tests.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.gitignore +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.readthedocs.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/CHANGELOG.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/CHANGELOG.md.template +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/CLAUDE.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/COMMUNITY_INTEGRATIONS.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/CONTRIBUTING.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/LICENSE +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/MANIFEST.in +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/README.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/SECURITY.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/ansible_deployment.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/cleanup_old_containers.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/codecov.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/ansible_setup.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/replace_env.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/setup_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create_inventory.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/delete_old_dockers.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/deploy.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/deploy_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/docker-compose.dev.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/dump_logs.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/env.example +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/fetch_logs.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/.helmignore +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/Chart.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/service.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/values-canary.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/values-prod.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/values-stage.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/values.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/istio/destination-virtualservice.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/merge-code-into-single-file.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/pipecat.png +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/restart.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/restart_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/setup.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/base_llm_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/schemas/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/schemas/direct_function.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/schemas/function_schema.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/types.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/dtmf/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/filters/aic_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/filters/koala_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/filters/krisp_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/filters/krisp_viva_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/interruptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/mixers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/resamplers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v3.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/vad/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/vad/data/README.md +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/vad/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/vad/silero.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/clocks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/clocks/base_clock.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/clocks/system_clock.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/extensions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/extensions/ivr/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/extensions/voicemail/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/frames/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/frames/frames.proto +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/frames/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/metrics/metrics.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/observers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/observers/base_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/observers/loggers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/observers/turn_tracking_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/base_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/base_task.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/llm_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/runner.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/service_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/task.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/task_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/pipeline/tts_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/gated.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/gated_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/gated_open_ai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/llm_response.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/sentence.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/user_response.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/async_generator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/consumer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/filters/frame_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/filters/function_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/filters/identity_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/filters/null_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/frameworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/frameworks/langchain.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/frameworks/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/frameworks/strands_agents.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/gstreamer/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/idle_frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/logger.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/metrics/sentry.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/producer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/text_transformer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/transcript_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/processors/user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/py.typed +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/runner/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/runner/daily.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/runner/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/runner/run.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/runner/types.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/runner/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/asterisk.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/base_serializer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/convox.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/custom.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/exotel.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/plivo.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/protobuf.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/telnyx.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/serializers/twilio.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/ai_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/ai_services.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/anthropic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/anthropic/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/assemblyai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/assemblyai/models.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/assemblyai/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/asyncai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/asyncai/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/nova_sonic/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/nova_sonic/ready.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/azure/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/azure/common.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/azure/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/azure/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/azure/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/azure/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/azure/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/azure/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/cartesia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/cartesia/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/cartesia/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/cerebras/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/cerebras/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/deepgram/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/deepgram/flux/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/deepgram/flux/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/deepgram/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/deepgram/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/deepseek/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/deepseek/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/elevenlabs/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/elevenlabs/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/elevenlabs/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/fal/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/fal/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/fal/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/fireworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/fireworks/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/fish/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/fish/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/gladia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/gladia/config.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/gladia/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/gemini_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/gemini_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/gemini_live/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/gemini_live/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/google.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/llm_openai.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/google/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/grok/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/grok/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/groq/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/groq/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/groq/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/groq/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/hamsa/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/hamsa/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/heygen/api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/heygen/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/heygen/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/hume/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/hume/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/image_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/inworld/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/inworld/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/llm_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/lmnt/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/lmnt/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/mcp_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/mem0/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/mem0/memory.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/minimax/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/minimax/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/mistral/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/mistral/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/moondream/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/moondream/vision.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/neuphonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/neuphonic/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/nim/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/nim/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/ollama/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/ollama/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/base_llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime/azure.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openpipe/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openpipe/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openrouter/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/openrouter/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/perplexity/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/perplexity/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/piper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/piper/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/playht/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/playht/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/qwen/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/rime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/rime/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/riva/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/riva/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/riva/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/salesforce/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/sambanova/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/sambanova/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/sambanova/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/sarvam/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/sarvam/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/sarvam/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/simli/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/simli/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/soniox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/soniox/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/speechmatics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/speechmatics/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/stt_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/tavus/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/together/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/together/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/tts_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/ultravox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/ultravox/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/vision_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/vistaar/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/vistaar/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/websocket_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/whisper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/whisper/base_stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/whisper/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/xtts/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/xtts/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/sync/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/sync/base_notifier.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/sync/event_notifier.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/tests/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/tests/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transcriptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transcriptions/language.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/base_input.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/base_output.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/base_transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/daily/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/daily/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/daily/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/heygen/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/livekit/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/livekit/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/local/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/local/audio.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/local/tk.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/network/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/network/small_webrtc.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/network/webrtc_connection.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/network/websocket_client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/network/websocket_server.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/services/daily.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/services/helpers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/services/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/services/tavus.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/smallwebrtc/request_handler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/tavus/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/websocket/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/websocket/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/websocket/fastapi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/websocket/server.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/whatsapp/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/whatsapp/api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/transports/whatsapp/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/asyncio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/asyncio/task_manager.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/base_object.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/logger_config.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/network.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/string.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/text/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/text/base_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/time.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/tracing/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/tracing/class_decorators.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/tracing/service_attributes.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/tracing/service_decorators.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/tracing/setup.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/utils/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/stop_container.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/test_elevenlabs_stt_segmented.py +0 -0
- {dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dv-pipecat-ai
|
|
3
|
-
Version: 0.0.85.
|
|
3
|
+
Version: 0.0.85.dev819
|
|
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
|
|
@@ -136,7 +136,8 @@ Requires-Dist: fastapi<0.117.0,>=0.115.6; extra == "runner"
|
|
|
136
136
|
Requires-Dist: pipecat-ai-small-webrtc-prebuilt>=1.0.0; extra == "runner"
|
|
137
137
|
Provides-Extra: sambanova
|
|
138
138
|
Provides-Extra: sarvam
|
|
139
|
-
Requires-Dist:
|
|
139
|
+
Requires-Dist: sarvamai<1,>=0.1.19; extra == "sarvam"
|
|
140
|
+
Requires-Dist: websockets<15.0,>=13.1; extra == "sarvam"
|
|
140
141
|
Provides-Extra: sentry
|
|
141
142
|
Requires-Dist: sentry-sdk<3,>=2.28.0; extra == "sentry"
|
|
142
143
|
Provides-Extra: local-smart-turn
|
|
@@ -93,7 +93,7 @@ rime = [ "pipecat-ai[websockets-base]" ]
|
|
|
93
93
|
riva = [ "nvidia-riva-client~=2.21.1" ]
|
|
94
94
|
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"]
|
|
95
95
|
sambanova = []
|
|
96
|
-
sarvam = [ "
|
|
96
|
+
sarvam = [ "sarvamai>=0.1.19,<1", "websockets>=13.1,<15.0" ]
|
|
97
97
|
sentry = [ "sentry-sdk>=2.28.0,<3" ]
|
|
98
98
|
local-smart-turn = [ "coremltools>=8.0", "transformers", "torch>=2.5.0,<3", "torchaudio>=2.5.0,<3" ]
|
|
99
99
|
local-smart-turn-v3 = [ "transformers", "onnxruntime>=1.20.1,<2" ]
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/dv_pipecat_ai.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dv-pipecat-ai
|
|
3
|
-
Version: 0.0.85.
|
|
3
|
+
Version: 0.0.85.dev819
|
|
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
|
|
@@ -136,7 +136,8 @@ Requires-Dist: fastapi<0.117.0,>=0.115.6; extra == "runner"
|
|
|
136
136
|
Requires-Dist: pipecat-ai-small-webrtc-prebuilt>=1.0.0; extra == "runner"
|
|
137
137
|
Provides-Extra: sambanova
|
|
138
138
|
Provides-Extra: sarvam
|
|
139
|
-
Requires-Dist:
|
|
139
|
+
Requires-Dist: sarvamai<1,>=0.1.19; extra == "sarvam"
|
|
140
|
+
Requires-Dist: websockets<15.0,>=13.1; extra == "sarvam"
|
|
140
141
|
Provides-Extra: sentry
|
|
141
142
|
Requires-Dist: sentry-sdk<3,>=2.28.0; extra == "sentry"
|
|
142
143
|
Provides-Extra: local-smart-turn
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/dv_pipecat_ai.egg-info/SOURCES.txt
RENAMED
|
@@ -477,6 +477,7 @@ src/pipecat/utils/__init__.py
|
|
|
477
477
|
src/pipecat/utils/base_object.py
|
|
478
478
|
src/pipecat/utils/logger_config.py
|
|
479
479
|
src/pipecat/utils/network.py
|
|
480
|
+
src/pipecat/utils/redis.py
|
|
480
481
|
src/pipecat/utils/string.py
|
|
481
482
|
src/pipecat/utils/time.py
|
|
482
483
|
src/pipecat/utils/utils.py
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/pipecat/services/salesforce/llm.py
RENAMED
|
@@ -8,10 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
import asyncio
|
|
10
10
|
import json
|
|
11
|
-
import os
|
|
12
11
|
import time
|
|
13
|
-
from typing import Any, Dict, List, Optional, AsyncGenerator
|
|
14
12
|
from dataclasses import dataclass
|
|
13
|
+
from typing import AsyncGenerator, Dict, Optional
|
|
15
14
|
|
|
16
15
|
import httpx
|
|
17
16
|
from loguru import logger
|
|
@@ -40,6 +39,7 @@ from pipecat.processors.aggregators.llm_response import (
|
|
|
40
39
|
LLMUserAggregatorParams,
|
|
41
40
|
)
|
|
42
41
|
from env_config import api_config
|
|
42
|
+
from pipecat.utils.redis import create_async_redis_client
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
@dataclass
|
|
@@ -56,8 +56,8 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
56
56
|
"""Salesforce Agent API LLM service implementation.
|
|
57
57
|
|
|
58
58
|
This service integrates with Salesforce Agent API to provide conversational
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
|
|
60
|
+
AI capabilities using Salesforce's Agentforce platform.
|
|
61
61
|
"""
|
|
62
62
|
|
|
63
63
|
def __init__(
|
|
@@ -65,38 +65,48 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
65
65
|
*,
|
|
66
66
|
model: str = "salesforce-agent",
|
|
67
67
|
session_timeout_secs: float = 3600.0,
|
|
68
|
+
agent_id: str = api_config.SALESFORCE_AGENT_ID,
|
|
69
|
+
org_domain: str = api_config.SALESFORCE_ORG_DOMAIN,
|
|
70
|
+
client_id: str = api_config.SALESFORCE_CLIENT_ID,
|
|
71
|
+
client_secret: str = api_config.SALESFORCE_CLIENT_SECRET,
|
|
72
|
+
api_host: str = api_config.SALESFORCE_API_HOST,
|
|
73
|
+
redis_url: Optional[str] = None,
|
|
68
74
|
**kwargs,
|
|
69
75
|
):
|
|
70
76
|
"""Initialize Salesforce Agent LLM service.
|
|
71
77
|
|
|
72
78
|
Reads configuration from environment variables:
|
|
73
79
|
- SALESFORCE_AGENT_ID: The Salesforce agent ID to interact with
|
|
74
|
-
- SALESFORCE_API_KEY: OAuth access token (optional, will use client credentials if not provided)
|
|
75
80
|
- SALESFORCE_ORG_DOMAIN: Salesforce org domain (e.g., https://myorg.my.salesforce.com)
|
|
76
81
|
- SALESFORCE_CLIENT_ID: Connected app client ID for OAuth
|
|
77
82
|
- SALESFORCE_CLIENT_SECRET: Connected app client secret for OAuth
|
|
78
|
-
- SALESFORCE_API_HOST: Salesforce API host (
|
|
83
|
+
- SALESFORCE_API_HOST: Salesforce API host base URL (e.g., https://api.salesforce.com)
|
|
79
84
|
|
|
80
85
|
Args:
|
|
81
86
|
model: The model name (defaults to "salesforce-agent").
|
|
82
87
|
session_timeout_secs: Session timeout in seconds (default: 1 hour).
|
|
88
|
+
agent_id: Salesforce agent ID. Defaults to SALESFORCE_AGENT_ID.
|
|
89
|
+
org_domain: Salesforce org domain. Defaults to SALESFORCE_ORG_DOMAIN.
|
|
90
|
+
client_id: Salesforce connected app client ID. Defaults to SALESFORCE_CLIENT_ID.
|
|
91
|
+
client_secret: Salesforce connected app client secret. Defaults to SALESFORCE_CLIENT_SECRET.
|
|
92
|
+
api_host: Salesforce API host base URL. Defaults to SALESFORCE_API_HOST.
|
|
93
|
+
redis_url: Optional Redis URL override for token caching.
|
|
83
94
|
**kwargs: Additional arguments passed to parent LLMService.
|
|
84
95
|
"""
|
|
85
96
|
# Initialize parent LLM service
|
|
86
97
|
super().__init__(**kwargs)
|
|
87
|
-
|
|
88
|
-
self.
|
|
89
|
-
self.
|
|
90
|
-
self.
|
|
91
|
-
self.
|
|
92
|
-
self._client_secret = api_config.SALESFORCE_CLIENT_SECRET
|
|
93
|
-
self._api_host = api_config.SALESFORCE_API_HOST
|
|
98
|
+
self._agent_id = agent_id
|
|
99
|
+
self._org_domain = org_domain
|
|
100
|
+
self._client_id = client_id
|
|
101
|
+
self._client_secret = client_secret
|
|
102
|
+
self._api_host = api_host
|
|
94
103
|
|
|
95
104
|
|
|
96
105
|
# Validate required environment variables
|
|
97
106
|
required_vars = {
|
|
98
107
|
"SALESFORCE_AGENT_ID": self._agent_id,
|
|
99
108
|
"SALESFORCE_ORG_DOMAIN": self._org_domain,
|
|
109
|
+
"SALESFORCE_API_HOST": self._api_host,
|
|
100
110
|
"SALESFORCE_CLIENT_ID": self._client_id,
|
|
101
111
|
"SALESFORCE_CLIENT_SECRET": self._client_secret,
|
|
102
112
|
}
|
|
@@ -109,31 +119,140 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
109
119
|
|
|
110
120
|
self._session_timeout_secs = session_timeout_secs
|
|
111
121
|
|
|
122
|
+
if redis_url is not None:
|
|
123
|
+
self._redis_url = redis_url
|
|
124
|
+
else:
|
|
125
|
+
self._redis_url = getattr(api_config, "REDIS_URL", None)
|
|
126
|
+
self._redis_client = None
|
|
127
|
+
self._redis_client_init_attempted = False
|
|
128
|
+
self._token_cache_key = f"salesforce_agent_access_token:{self._agent_id}"
|
|
129
|
+
self._token_cache_leeway_secs = 300
|
|
130
|
+
self._sequence_counter = 0
|
|
131
|
+
self._warmup_task: Optional[asyncio.Task] = None
|
|
132
|
+
|
|
112
133
|
# Session management
|
|
113
134
|
self._sessions: Dict[str, SalesforceSessionInfo] = {}
|
|
114
135
|
self._current_session_id: Optional[str] = None
|
|
115
136
|
|
|
116
137
|
# HTTP client for API calls
|
|
117
|
-
self._http_client = httpx.AsyncClient(
|
|
138
|
+
self._http_client = httpx.AsyncClient(
|
|
139
|
+
timeout=30.0,
|
|
140
|
+
limits=httpx.Limits(
|
|
141
|
+
max_keepalive_connections=10,
|
|
142
|
+
max_connections=100,
|
|
143
|
+
keepalive_expiry=None,
|
|
144
|
+
),
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
self._schedule_session_warmup()
|
|
118
148
|
|
|
119
149
|
|
|
120
150
|
async def __aenter__(self):
|
|
121
151
|
"""Async context manager entry."""
|
|
152
|
+
await self.ensure_session_ready()
|
|
122
153
|
return self
|
|
123
154
|
|
|
124
155
|
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
|
125
156
|
"""Async context manager exit."""
|
|
157
|
+
if self._warmup_task:
|
|
158
|
+
try:
|
|
159
|
+
await asyncio.shield(self._warmup_task)
|
|
160
|
+
except Exception as exc: # pragma: no cover - warmup best effort
|
|
161
|
+
logger.debug(f"Salesforce warmup task failed during exit: {exc}")
|
|
162
|
+
finally:
|
|
163
|
+
self._warmup_task = None
|
|
164
|
+
|
|
126
165
|
await self._cleanup_sessions()
|
|
127
166
|
await self._http_client.aclose()
|
|
128
167
|
|
|
168
|
+
if self._redis_client:
|
|
169
|
+
close_coro = getattr(self._redis_client, "close", None)
|
|
170
|
+
if callable(close_coro):
|
|
171
|
+
try:
|
|
172
|
+
await close_coro()
|
|
173
|
+
except Exception as exc: # pragma: no cover - best effort cleanup
|
|
174
|
+
logger.debug(f"Failed to close Redis client cleanly: {exc}")
|
|
175
|
+
self._redis_client = None
|
|
176
|
+
self._redis_client_init_attempted = False
|
|
177
|
+
|
|
129
178
|
def can_generate_metrics(self) -> bool:
|
|
130
179
|
"""Check if this service can generate processing metrics."""
|
|
131
180
|
return True
|
|
132
181
|
|
|
182
|
+
def _schedule_session_warmup(self):
|
|
183
|
+
"""Kick off background warm-up if an event loop is running."""
|
|
184
|
+
try:
|
|
185
|
+
loop = asyncio.get_running_loop()
|
|
186
|
+
except RuntimeError:
|
|
187
|
+
return
|
|
188
|
+
|
|
189
|
+
if loop.is_closed():
|
|
190
|
+
return
|
|
191
|
+
|
|
192
|
+
async def _warmup():
|
|
193
|
+
try:
|
|
194
|
+
await self.ensure_session_ready()
|
|
195
|
+
except Exception as exc: # pragma: no cover - warmup best effort
|
|
196
|
+
logger.warning(f"Salesforce warmup failed: {exc}")
|
|
197
|
+
raise
|
|
198
|
+
|
|
199
|
+
task = loop.create_task(_warmup())
|
|
200
|
+
|
|
201
|
+
def _on_done(warmup_task: asyncio.Task):
|
|
202
|
+
if warmup_task.cancelled():
|
|
203
|
+
logger.debug("Salesforce warmup task cancelled")
|
|
204
|
+
elif warmup_task.exception():
|
|
205
|
+
logger.warning(f"Salesforce warmup task error: {warmup_task.exception()}")
|
|
206
|
+
self._warmup_task = None
|
|
207
|
+
|
|
208
|
+
task.add_done_callback(_on_done)
|
|
209
|
+
self._warmup_task = task
|
|
210
|
+
|
|
211
|
+
def _get_redis_client(self):
|
|
212
|
+
"""Return a Redis client for token caching if configured."""
|
|
213
|
+
if self._redis_client is None and not self._redis_client_init_attempted:
|
|
214
|
+
self._redis_client_init_attempted = True
|
|
215
|
+
self._redis_client = create_async_redis_client(
|
|
216
|
+
self._redis_url, decode_responses=True, encoding="utf-8", logger=logger
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
return self._redis_client
|
|
220
|
+
|
|
221
|
+
async def _get_cached_access_token(self) -> Optional[str]:
|
|
222
|
+
"""Return cached access token from Redis."""
|
|
223
|
+
redis_client = self._get_redis_client()
|
|
224
|
+
if not redis_client:
|
|
225
|
+
return None
|
|
226
|
+
|
|
227
|
+
try:
|
|
228
|
+
return await redis_client.get(self._token_cache_key)
|
|
229
|
+
except Exception as exc: # pragma: no cover - cache failures shouldn't break flow
|
|
230
|
+
logger.warning(f"Failed to read Salesforce token from Redis: {exc}")
|
|
231
|
+
return None
|
|
232
|
+
|
|
233
|
+
async def _set_cached_access_token(self, token: str, expires_in: Optional[int]):
|
|
234
|
+
"""Persist access token in Redis with TTL matching Salesforce expiry."""
|
|
235
|
+
redis_client = self._get_redis_client()
|
|
236
|
+
if not redis_client:
|
|
237
|
+
return
|
|
238
|
+
|
|
239
|
+
ttl_seconds = 3600
|
|
240
|
+
if expires_in is not None:
|
|
241
|
+
try:
|
|
242
|
+
ttl_seconds = max(int(expires_in) - self._token_cache_leeway_secs, 30)
|
|
243
|
+
except (TypeError, ValueError):
|
|
244
|
+
logger.debug("Unable to parse Salesforce token expiry; falling back to default TTL")
|
|
245
|
+
|
|
246
|
+
try:
|
|
247
|
+
await redis_client.set(self._token_cache_key, token, ex=ttl_seconds)
|
|
248
|
+
except Exception as exc: # pragma: no cover - cache failures shouldn't break flow
|
|
249
|
+
logger.warning(f"Failed to store Salesforce token in Redis: {exc}")
|
|
250
|
+
|
|
133
251
|
async def _get_access_token(self) -> str:
|
|
134
252
|
"""Get OAuth access token using client credentials."""
|
|
135
|
-
|
|
136
|
-
|
|
253
|
+
cached_token = await self._get_cached_access_token()
|
|
254
|
+
if cached_token:
|
|
255
|
+
return cached_token
|
|
137
256
|
|
|
138
257
|
token_url = f"{self._org_domain}/services/oauth2/token"
|
|
139
258
|
data = {
|
|
@@ -146,7 +265,9 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
146
265
|
response = await self._http_client.post(token_url, data=data)
|
|
147
266
|
response.raise_for_status()
|
|
148
267
|
token_data = response.json()
|
|
149
|
-
|
|
268
|
+
access_token = token_data["access_token"]
|
|
269
|
+
await self._set_cached_access_token(access_token, token_data.get("expires_in"))
|
|
270
|
+
return access_token
|
|
150
271
|
except Exception as e:
|
|
151
272
|
logger.error(f"Failed to get access token: {e}")
|
|
152
273
|
raise
|
|
@@ -207,13 +328,17 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
207
328
|
return self._current_session_id
|
|
208
329
|
else:
|
|
209
330
|
# Session expired, remove it
|
|
210
|
-
|
|
331
|
+
self._sessions.pop(self._current_session_id, None)
|
|
211
332
|
self._current_session_id = None
|
|
212
333
|
|
|
213
334
|
# Create new session
|
|
214
335
|
self._current_session_id = await self._create_session()
|
|
215
336
|
return self._current_session_id
|
|
216
337
|
|
|
338
|
+
async def ensure_session_ready(self) -> str:
|
|
339
|
+
"""Ensure a Salesforce session is ready for use."""
|
|
340
|
+
return await self._get_or_create_session()
|
|
341
|
+
|
|
217
342
|
async def _cleanup_sessions(self):
|
|
218
343
|
"""Clean up expired sessions."""
|
|
219
344
|
current_time = time.time()
|
|
@@ -236,7 +361,7 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
236
361
|
except Exception as e:
|
|
237
362
|
logger.warning(f"Failed to end session {session_id}: {e}")
|
|
238
363
|
finally:
|
|
239
|
-
|
|
364
|
+
self._sessions.pop(session_id, None)
|
|
240
365
|
if self._current_session_id == session_id:
|
|
241
366
|
self._current_session_id = None
|
|
242
367
|
|
|
@@ -272,7 +397,8 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
272
397
|
|
|
273
398
|
def _generate_sequence_id(self) -> int:
|
|
274
399
|
"""Generate a sequence ID for the message."""
|
|
275
|
-
|
|
400
|
+
self._sequence_counter += 1
|
|
401
|
+
return self._sequence_counter
|
|
276
402
|
|
|
277
403
|
async def _stream_salesforce_response(self, session_id: str, user_message: str) -> AsyncGenerator[str, None]:
|
|
278
404
|
"""Stream response from Salesforce Agent API."""
|
|
@@ -337,8 +463,6 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
337
463
|
|
|
338
464
|
async def _process_context(self, context: OpenAILLMContext):
|
|
339
465
|
"""Process the LLM context and generate streaming response.
|
|
340
|
-
|
|
341
|
-
Following Vistaar pattern for simple, direct processing.
|
|
342
466
|
|
|
343
467
|
Args:
|
|
344
468
|
context: The OpenAI LLM context containing messages to process.
|
|
@@ -387,8 +511,6 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
387
511
|
|
|
388
512
|
async def process_frame(self, frame: Frame, direction: FrameDirection):
|
|
389
513
|
"""Process frames for LLM completion requests.
|
|
390
|
-
|
|
391
|
-
Following the exact Vistaar pattern - call super() for non-context frames only.
|
|
392
514
|
|
|
393
515
|
Args:
|
|
394
516
|
frame: The frame to process.
|
|
@@ -431,7 +553,7 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
431
553
|
"""Create context aggregators for Salesforce LLM.
|
|
432
554
|
|
|
433
555
|
Since Salesforce uses OpenAI-compatible message format, we reuse OpenAI's
|
|
434
|
-
context aggregators directly
|
|
556
|
+
context aggregators directly
|
|
435
557
|
|
|
436
558
|
Args:
|
|
437
559
|
context: The LLM context to create aggregators for.
|
|
@@ -462,4 +584,4 @@ class SalesforceAgentLLMService(LLMService):
|
|
|
462
584
|
try:
|
|
463
585
|
asyncio.create_task(self._http_client.aclose())
|
|
464
586
|
except:
|
|
465
|
-
pass
|
|
587
|
+
pass
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Async Redis helper utilities."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any, Optional, TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from urllib.parse import urlparse
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
import redis.asyncio as redis
|
|
11
|
+
except ImportError: # pragma: no cover - Redis is optional
|
|
12
|
+
redis = None
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING: # pragma: no cover - typing aid
|
|
16
|
+
from redis.asyncio import Redis
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def create_async_redis_client(
|
|
20
|
+
url: Optional[str],
|
|
21
|
+
*,
|
|
22
|
+
decode_responses: bool = True,
|
|
23
|
+
encoding: str = "utf-8",
|
|
24
|
+
logger: Optional[Any] = None,
|
|
25
|
+
**kwargs,
|
|
26
|
+
) -> Optional["Redis"]:
|
|
27
|
+
"""Return a configured async Redis client or None if unavailable.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
url: Redis connection URL.
|
|
31
|
+
decode_responses: Whether to decode responses to str.
|
|
32
|
+
encoding: Character encoding to use with decoded responses.
|
|
33
|
+
logger: Optional logger supporting .warning() for diagnostics.
|
|
34
|
+
**kwargs: Additional keyword arguments forwarded to Redis.from_url.
|
|
35
|
+
"""
|
|
36
|
+
if redis is None:
|
|
37
|
+
return None
|
|
38
|
+
|
|
39
|
+
if not url or url in {"redis_url", "REDIS_URL"}:
|
|
40
|
+
return None
|
|
41
|
+
|
|
42
|
+
parsed = urlparse(url)
|
|
43
|
+
connection_kwargs = {
|
|
44
|
+
"decode_responses": decode_responses,
|
|
45
|
+
"encoding": encoding,
|
|
46
|
+
}
|
|
47
|
+
connection_kwargs.update(kwargs)
|
|
48
|
+
|
|
49
|
+
if parsed.scheme == "rediss":
|
|
50
|
+
connection_kwargs.setdefault("ssl_cert_reqs", "none")
|
|
51
|
+
connection_kwargs.setdefault("ssl_check_hostname", False)
|
|
52
|
+
|
|
53
|
+
try:
|
|
54
|
+
return redis.Redis.from_url(url, **connection_kwargs)
|
|
55
|
+
except Exception as exc: # pragma: no cover - best effort logging
|
|
56
|
+
if logger is not None:
|
|
57
|
+
logger.warning(f"Failed to create Redis client: {exc}")
|
|
58
|
+
return None
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/1-bug_report.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/2-question.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/5-new-service.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/6-dependency.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/ISSUE_TEMPLATE/config.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/PULL_REQUEST_TEMPLATE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/force_push_to_pypi.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/promote-prod.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/publish_test.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/set-traffic-split.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/.github/workflows/sync-quickstart.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/ansible_setup.sh
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/inventory.ini
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/replace_env.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/create-new-machine/setup_playbook.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/_helpers.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/deployment.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/hpa.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/ingress.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/pdb.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/templates/service.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/values-canary.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/k8s/dv-pipecat/values-stage.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev817 → dv_pipecat_ai-0.0.85.dev819}/src/dv_pipecat_ai.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|