jaxl-python 0.0.37__tar.gz → 0.0.38__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.
Files changed (267) hide show
  1. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/PKG-INFO +1 -1
  2. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/_scm_version.py +2 -2
  3. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/apps.py +2 -2
  4. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/silence.py +1 -1
  5. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl_python.egg-info/PKG-INFO +1 -1
  6. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl_python.egg-info/SOURCES.txt +2 -1
  7. jaxl_python-0.0.38/tests/test_streaming_vad.py +113 -0
  8. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/.github/workflows/sdk.yml +0 -0
  9. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/.gitignore +0 -0
  10. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/.isort.cfg +0 -0
  11. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/.pylintrc +0 -0
  12. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/.vscode/settings.json +0 -0
  13. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/LICENSE.md +0 -0
  14. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/README.md +0 -0
  15. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/SPECIFICATION.md +0 -0
  16. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/docs.sh +0 -0
  17. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/README.md +0 -0
  18. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/__init__.py +0 -0
  19. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/prompts/example.txt +0 -0
  20. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/py.typed +0 -0
  21. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/request_and_confirm_code_then_send_to_phone.py +0 -0
  22. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/request_code_and_send_to_phone.py +0 -0
  23. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/send_to_phone.py +0 -0
  24. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/streaming_aiagent.py +0 -0
  25. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/streaming_audio_chunks.py +0 -0
  26. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/streaming_speech_segments.py +0 -0
  27. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/examples/streaming_transcriptions.py +0 -0
  28. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/index.md +0 -0
  29. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/__init__.py +0 -0
  30. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/_client.py +0 -0
  31. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/_sdk.py +0 -0
  32. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/base.py +0 -0
  33. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/cli.py +0 -0
  34. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/__init__.py +0 -0
  35. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/__init__.py +0 -0
  36. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/__init__.py +0 -0
  37. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_app_organizations_list.py +0 -0
  38. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_app_organizations_providers_list.py +0 -0
  39. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_appusers_me_retrieve.py +0 -0
  40. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_add_create.py +0 -0
  41. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_audio_retrieve.py +0 -0
  42. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_hangup_retrieve.py +0 -0
  43. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_list.py +0 -0
  44. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_messages_create.py +0 -0
  45. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_report_retrieve.py +0 -0
  46. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_retrieve.py +0 -0
  47. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_tags_create.py +0 -0
  48. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_token_create.py +0 -0
  49. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_transfer_create.py +0 -0
  50. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_tts_create.py +0 -0
  51. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_calls_usage_retrieve.py +0 -0
  52. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_campaign_list.py +0 -0
  53. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_campaign_upload_create.py +0 -0
  54. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_customer_consumables_retrieve.py +0 -0
  55. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_devices_attest_create.py +0 -0
  56. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_devices_list.py +0 -0
  57. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_integrations_create.py +0 -0
  58. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_ivr_create.py +0 -0
  59. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_ivr_list.py +0 -0
  60. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_ivr_options_create.py +0 -0
  61. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_ivr_options_list.py +0 -0
  62. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_ivr_options_partial_update.py +0 -0
  63. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_kyc_list.py +0 -0
  64. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_messages_list.py +0 -0
  65. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_phonenumbers_list.py +0 -0
  66. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_phonenumbers_partial_update.py +0 -0
  67. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v1/v1_phonenumbers_search_retrieve.py +0 -0
  68. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v2/__init__.py +0 -0
  69. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v2/v2_app_organizations_employees_list.py +0 -0
  70. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v2/v2_app_organizations_groups_list.py +0 -0
  71. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v3/__init__.py +0 -0
  72. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/api/v3/v3_orders_subscriptions_list.py +0 -0
  73. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/client.py +0 -0
  74. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/errors.py +0 -0
  75. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/__init__.py +0 -0
  76. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/address_provider.py +0 -0
  77. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/address_provider_status_enum.py +0 -0
  78. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/analytic.py +0 -0
  79. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/app_price.py +0 -0
  80. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/app_user.py +0 -0
  81. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/available_phone_number.py +0 -0
  82. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/available_phone_number_capabilities.py +0 -0
  83. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/available_phone_number_provider_enum.py +0 -0
  84. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call.py +0 -0
  85. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_add_request_request.py +0 -0
  86. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_audio_reason.py +0 -0
  87. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_cost.py +0 -0
  88. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_location_epoch.py +0 -0
  89. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_message_request_request.py +0 -0
  90. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_message_request_type_enum.py +0 -0
  91. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_metadata.py +0 -0
  92. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_report.py +0 -0
  93. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_report_reason.py +0 -0
  94. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_report_status_enum.py +0 -0
  95. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_tag_request.py +0 -0
  96. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_tag_response.py +0 -0
  97. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_token_request.py +0 -0
  98. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_token_response.py +0 -0
  99. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_transfer_request_request.py +0 -0
  100. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_tts_request_request.py +0 -0
  101. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_type_enum.py +0 -0
  102. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_usage_by_currency_response.py +0 -0
  103. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_usage_response.py +0 -0
  104. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/call_usage_stats_response.py +0 -0
  105. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign.py +0 -0
  106. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_metadata.py +0 -0
  107. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_metadata_metadata.py +0 -0
  108. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_response.py +0 -0
  109. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_response_status_enum.py +0 -0
  110. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_stats.py +0 -0
  111. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_tag.py +0 -0
  112. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_upload_request.py +0 -0
  113. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_upload_request_options.py +0 -0
  114. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_upload_type_enum.py +0 -0
  115. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/campaign_window_request.py +0 -0
  116. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/can_user_resubscribe_plan.py +0 -0
  117. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/canceled_by_enum.py +0 -0
  118. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/capabilities.py +0 -0
  119. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/connection.py +0 -0
  120. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/content_type_enum.py +0 -0
  121. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/country.py +0 -0
  122. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/cta.py +0 -0
  123. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/cta_request.py +0 -0
  124. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/cta_type_enum.py +0 -0
  125. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/currency_enum.py +0 -0
  126. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/customer_consumable_total.py +0 -0
  127. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/customer_order_subscriptions_serializer_v2.py +0 -0
  128. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/customer_order_subscriptions_serializer_v2_status_enum.py +0 -0
  129. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/customer_provider_serializer_v2.py +0 -0
  130. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/device.py +0 -0
  131. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/device_attestation_error.py +0 -0
  132. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/device_attestation_error_reason_enum.py +0 -0
  133. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/device_attestation_response.py +0 -0
  134. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/dh_message.py +0 -0
  135. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/dh_message_attachment.py +0 -0
  136. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/dh_message_reaction.py +0 -0
  137. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/dh_message_type_enum.py +0 -0
  138. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/direction_enum.py +0 -0
  139. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/emoji.py +0 -0
  140. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/emoji_reaction.py +0 -0
  141. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/exotel_auth_request_request.py +0 -0
  142. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/id_enum.py +0 -0
  143. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/integrations_error_response.py +0 -0
  144. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/integrations_properties_request.py +0 -0
  145. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/integrations_request_provider_enum.py +0 -0
  146. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/integrations_request_request.py +0 -0
  147. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/integrations_response.py +0 -0
  148. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/intent_enum.py +0 -0
  149. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/invalid_provider_request.py +0 -0
  150. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/iso_country_enum.py +0 -0
  151. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/item.py +0 -0
  152. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/ivr_collection.py +0 -0
  153. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/ivr_collection_request.py +0 -0
  154. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/ivr_menu_request.py +0 -0
  155. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/ivr_menu_response.py +0 -0
  156. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/ivr_menu_response_status_enum.py +0 -0
  157. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/ivr_options_invalid_response.py +0 -0
  158. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/ivr_options_request.py +0 -0
  159. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/ivr_options_response.py +0 -0
  160. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/kyc.py +0 -0
  161. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/kyc_status_enum.py +0 -0
  162. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/kyc_upload_metadata.py +0 -0
  163. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/location.py +0 -0
  164. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/next_or_cta_request.py +0 -0
  165. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/order_status_enum.py +0 -0
  166. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/organization.py +0 -0
  167. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/organization_employee.py +0 -0
  168. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/organization_employee_preferences.py +0 -0
  169. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/organization_employee_status_enum.py +0 -0
  170. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/organization_group_inline.py +0 -0
  171. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/organization_group_response.py +0 -0
  172. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/organization_preferences.py +0 -0
  173. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/organization_provider.py +0 -0
  174. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_call_list.py +0 -0
  175. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_campaign_response_list.py +0 -0
  176. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_customer_order_subscriptions_serializer_v2_list.py +0 -0
  177. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_device_list.py +0 -0
  178. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_dh_message_list.py +0 -0
  179. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_ivr_menu_response_list.py +0 -0
  180. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_ivr_options_response_list.py +0 -0
  181. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_kyc_list.py +0 -0
  182. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_organization_employee_list.py +0 -0
  183. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_organization_group_response_list.py +0 -0
  184. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_organization_list.py +0 -0
  185. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_organization_provider_list.py +0 -0
  186. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/paginated_phone_number_list.py +0 -0
  187. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/patched_ivr_options_update_request.py +0 -0
  188. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/patched_phone_number_request.py +0 -0
  189. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/payment_gateway_fees_info.py +0 -0
  190. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/period_enum.py +0 -0
  191. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/phone_number.py +0 -0
  192. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/phone_number_attributes.py +0 -0
  193. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/phone_number_capabilities.py +0 -0
  194. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/phone_number_provider_enum.py +0 -0
  195. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/phone_number_search_response.py +0 -0
  196. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/phone_number_status_enum.py +0 -0
  197. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/plan.py +0 -0
  198. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/plan_cancel_info.py +0 -0
  199. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/plan_expiry_timestamp.py +0 -0
  200. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/plan_expiry_timestamp_type_enum.py +0 -0
  201. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/plan_extra_details.py +0 -0
  202. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/plan_item.py +0 -0
  203. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/plan_type.py +0 -0
  204. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/plan_type_cycle.py +0 -0
  205. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/platform_enum.py +0 -0
  206. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/product_group.py +0 -0
  207. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/proof.py +0 -0
  208. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/proof_status_enum.py +0 -0
  209. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/provider_status_enum.py +0 -0
  210. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/reaction_by.py +0 -0
  211. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/rental_currency_enum.py +0 -0
  212. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/resource_enum.py +0 -0
  213. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/shopify_auth_request_request.py +0 -0
  214. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/stripe_auth_request_request.py +0 -0
  215. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/user_agent.py +0 -0
  216. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/user_agent_browser.py +0 -0
  217. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/user_agent_device.py +0 -0
  218. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/user_agent_operating_system.py +0 -0
  219. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/user_agent_platform.py +0 -0
  220. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/user_identity.py +0 -0
  221. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_app_organizations_list_status_item.py +0 -0
  222. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_calls_list_direction.py +0 -0
  223. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_calls_report_retrieve_date_range.py +0 -0
  224. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_calls_report_retrieve_fields_item.py +0 -0
  225. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_campaign_list_status_item.py +0 -0
  226. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_customer_consumables_retrieve_currency.py +0 -0
  227. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_ivr_list_duration.py +0 -0
  228. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_kyc_list_iso_country.py +0 -0
  229. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_kyc_list_provider_status_item.py +0 -0
  230. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_kyc_list_resource.py +0 -0
  231. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_kyc_list_status.py +0 -0
  232. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_phonenumbers_list_additional_status_item.py +0 -0
  233. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_phonenumbers_list_provider.py +0 -0
  234. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_phonenumbers_list_status.py +0 -0
  235. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_phonenumbers_search_retrieve_intent.py +0 -0
  236. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_phonenumbers_search_retrieve_iso_country_code.py +0 -0
  237. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v1_phonenumbers_search_retrieve_resource.py +0 -0
  238. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v2_app_organizations_employees_list_status_item.py +0 -0
  239. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v3_orders_subscriptions_list_currency.py +0 -0
  240. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/v3_orders_subscriptions_list_status_item.py +0 -0
  241. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/models/why_enum.py +0 -0
  242. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/client/types.py +0 -0
  243. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/py.typed +0 -0
  244. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/__init__.py +0 -0
  245. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/_constants.py +0 -0
  246. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/accounts.py +0 -0
  247. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/calls.py +0 -0
  248. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/campaigns.py +0 -0
  249. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/devices.py +0 -0
  250. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/ivrs.py +0 -0
  251. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/kycs.py +0 -0
  252. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/members.py +0 -0
  253. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/messages.py +0 -0
  254. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/notifications.py +0 -0
  255. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/orgs.py +0 -0
  256. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/payments.py +0 -0
  257. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/phones.py +0 -0
  258. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl/api/resources/teams.py +0 -0
  259. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl_python.egg-info/dependency_links.txt +0 -0
  260. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl_python.egg-info/entry_points.txt +0 -0
  261. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl_python.egg-info/not-zip-safe +0 -0
  262. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl_python.egg-info/requires.txt +0 -0
  263. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/jaxl_python.egg-info/top_level.txt +0 -0
  264. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/mkdocs.yml +0 -0
  265. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/pyproject.toml +0 -0
  266. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/setup.cfg +0 -0
  267. {jaxl_python-0.0.37 → jaxl_python-0.0.38}/setup.gif +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaxl-python
3
- Version: 0.0.37
3
+ Version: 0.0.38
4
4
  Summary: Official Python SDK and CLI for interfacing with the Jaxl API. Manage calls, messages, IVRs, devices, teams, payments, campaigns, streaming transcriptions and AI Agents. Built on OpenAPI, it offers both generated API clients and Pythonic wrappers for ease of use.
5
5
  Home-page: https://github.com/jaxl-innovations-private-limited/jaxl-python
6
6
  Download-URL: https://github.com/jaxl-innovations-private-limited/jaxl-python/archive/main.zip
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.0.37'
21
- __version_tuple__ = version_tuple = (0, 0, 37)
20
+ __version__ = version = '0.0.38'
21
+ __version_tuple__ = version_tuple = (0, 0, 38)
@@ -68,7 +68,7 @@ def _start_server(
68
68
  transcribe_temperature: float = 0.3,
69
69
  vad_aggressiveness: int = 2,
70
70
  vad_silence_frame_threshold: int = 12,
71
- vad_speech_frame_threshold: int = 8,
71
+ vad_speech_frame_threshold: int = 5,
72
72
  ) -> "FastAPI":
73
73
  from fastapi import FastAPI, Request, WebSocket
74
74
 
@@ -433,7 +433,7 @@ def _subparser(parser: argparse.ArgumentParser) -> None:
433
433
  apps_run_parser.add_argument(
434
434
  "--vad-speech-frame-threshold",
435
435
  type=int,
436
- default=8,
436
+ default=5,
437
437
  help="Number of 20ms frames of speech before speech detection is triggered",
438
438
  )
439
439
  apps_run_parser.set_defaults(
@@ -21,7 +21,7 @@ class SilenceDetector:
21
21
  frame_duration_ms: int = 20,
22
22
  aggressiveness: int = 2,
23
23
  silence_frame_threshold: int = 12, # ~240ms
24
- speech_frame_threshold: int = 8, # ~160ms
24
+ speech_frame_threshold: int = 5, # ~100ms
25
25
  ):
26
26
  import webrtcvad
27
27
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaxl-python
3
- Version: 0.0.37
3
+ Version: 0.0.38
4
4
  Summary: Official Python SDK and CLI for interfacing with the Jaxl API. Manage calls, messages, IVRs, devices, teams, payments, campaigns, streaming transcriptions and AI Agents. Built on OpenAPI, it offers both generated API clients and Pythonic wrappers for ease of use.
5
5
  Home-page: https://github.com/jaxl-innovations-private-limited/jaxl-python
6
6
  Download-URL: https://github.com/jaxl-innovations-private-limited/jaxl-python/archive/main.zip
@@ -262,4 +262,5 @@ jaxl_python.egg-info/dependency_links.txt
262
262
  jaxl_python.egg-info/entry_points.txt
263
263
  jaxl_python.egg-info/not-zip-safe
264
264
  jaxl_python.egg-info/requires.txt
265
- jaxl_python.egg-info/top_level.txt
265
+ jaxl_python.egg-info/top_level.txt
266
+ tests/test_streaming_vad.py
@@ -0,0 +1,113 @@
1
+ """
2
+ Copyright (c) 2010-present by Jaxl Innovations Private Limited.
3
+
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms,
7
+ with or without modification, is strictly prohibited.
8
+ """
9
+
10
+ import base64
11
+ import json
12
+ import sys
13
+ import types
14
+ from typing import List
15
+
16
+ import unittest
17
+
18
+ from fastapi.testclient import TestClient
19
+
20
+ from jaxl.api.base import BaseJaxlApp, JaxlStreamRequest
21
+ from jaxl.api.resources.apps import _start_server
22
+ from jaxl.api.resources.silence import SilenceDetector
23
+
24
+
25
+ class _FakeVad:
26
+ def __init__(self, aggressiveness: int):
27
+ self._aggressiveness = aggressiveness
28
+
29
+ def is_speech(self, frame: bytes, sample_rate: int) -> bool:
30
+ return frame.startswith(b"\x01")
31
+
32
+
33
+ class _StreamingCaptureApp(BaseJaxlApp):
34
+ def __init__(self) -> None:
35
+ self.speech_detection_events: List[bool] = []
36
+ self.speech_chunk_batches: List[List[bytes]] = []
37
+
38
+ async def handle_speech_detection(self, call_id: int, speaking: bool) -> None:
39
+ self.speech_detection_events.append(speaking)
40
+
41
+ async def handle_speech_chunks(
42
+ self,
43
+ req: JaxlStreamRequest,
44
+ slin16s: List[bytes],
45
+ ) -> None:
46
+ self.speech_chunk_batches.append(list(slin16s))
47
+
48
+
49
+ def _install_fake_webrtcvad() -> None:
50
+ sys.modules["webrtcvad"] = types.SimpleNamespace(Vad=_FakeVad)
51
+
52
+
53
+ def _media_event(payload: bytes) -> dict:
54
+ return {
55
+ "event": "media",
56
+ "media": {
57
+ "payload": base64.b64encode(payload).decode("ascii"),
58
+ },
59
+ }
60
+
61
+
62
+ class StreamingVadTest(unittest.TestCase):
63
+ def setUp(self) -> None:
64
+ _install_fake_webrtcvad()
65
+
66
+ def test_silence_detector_uses_faster_speech_start_threshold(self) -> None:
67
+ detector = SilenceDetector()
68
+
69
+ changes = [detector.process(b"\x01" * 320) for _ in range(4)]
70
+ self.assertEqual(changes, [None, None, None, None])
71
+
72
+ change = detector.process(b"\x01" * 320)
73
+ self.assertTrue(change)
74
+
75
+ def test_streaming_vad_preserves_preroll_with_earlier_speech_start(self) -> None:
76
+ app = _StreamingCaptureApp()
77
+ server = _start_server(app, vad_speech_frame_threshold=5)
78
+ state = {
79
+ "call_id": 99,
80
+ "from_number": "+911111111111",
81
+ "to_number": "+922222222222",
82
+ "direction": 1,
83
+ "org": None,
84
+ "metadata": None,
85
+ "greeting_message": None,
86
+ "options": None,
87
+ "voice": None,
88
+ "campaign_id": None,
89
+ "campaign_type": None,
90
+ }
91
+ encoded_state = base64.urlsafe_b64encode(
92
+ json.dumps(state).encode("utf-8")
93
+ ).decode("ascii")
94
+
95
+ with TestClient(server) as client:
96
+ with client.websocket_connect(
97
+ f"/stream/?ivr_id=1&state={encoded_state}"
98
+ ) as websocket:
99
+ for _ in range(5):
100
+ websocket.send_text(json.dumps(_media_event(b"\x01" * 320)))
101
+ for _ in range(12):
102
+ websocket.send_text(json.dumps(_media_event(b"\x00" * 320)))
103
+
104
+ self.assertEqual(app.speech_detection_events[:2], [True, False])
105
+ self.assertGreaterEqual(len(app.speech_chunk_batches), 1)
106
+ self.assertEqual(len(app.speech_chunk_batches[0]), 4)
107
+ self.assertTrue(
108
+ all(chunk == b"\x01" * 320 for chunk in app.speech_chunk_batches[0])
109
+ )
110
+
111
+
112
+ if __name__ == "__main__":
113
+ unittest.main()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes