rasa-pro 3.13.8__py3-none-any.whl → 3.14.0a2__py3-none-any.whl

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 rasa-pro might be problematic. Click here for more details.

Files changed (385) hide show
  1. rasa/builder/README.md +120 -0
  2. rasa/builder/__init__.py +0 -0
  3. rasa/builder/auth.py +176 -0
  4. rasa/builder/config.py +91 -0
  5. rasa/builder/copilot/__init__.py +0 -0
  6. rasa/builder/copilot/constants.py +28 -0
  7. rasa/builder/copilot/copilot.py +354 -0
  8. rasa/builder/copilot/copilot_response_handler.py +522 -0
  9. rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
  10. rasa/builder/copilot/exceptions.py +32 -0
  11. rasa/builder/copilot/models.py +464 -0
  12. rasa/builder/copilot/prompts/__init__.py +0 -0
  13. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +771 -0
  14. rasa/builder/copilot/signing.py +305 -0
  15. rasa/builder/copilot/telemetry.py +200 -0
  16. rasa/builder/copilot/templated_messages/__init__.py +0 -0
  17. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
  18. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +38 -0
  19. rasa/builder/document_retrieval/__init__.py +0 -0
  20. rasa/builder/document_retrieval/constants.py +15 -0
  21. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
  22. rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
  23. rasa/builder/document_retrieval/models.py +62 -0
  24. rasa/builder/download.py +142 -0
  25. rasa/builder/exceptions.py +91 -0
  26. rasa/builder/guardrails/__init__.py +1 -0
  27. rasa/builder/guardrails/constants.py +9 -0
  28. rasa/builder/guardrails/exceptions.py +4 -0
  29. rasa/builder/guardrails/lakera.py +206 -0
  30. rasa/builder/guardrails/models.py +231 -0
  31. rasa/builder/guardrails/store.py +238 -0
  32. rasa/builder/guardrails/utils.py +328 -0
  33. rasa/builder/job_manager.py +87 -0
  34. rasa/builder/jobs.py +276 -0
  35. rasa/builder/llm_service.py +246 -0
  36. rasa/builder/logging_utils.py +265 -0
  37. rasa/builder/main.py +242 -0
  38. rasa/builder/models.py +216 -0
  39. rasa/builder/project_generator.py +351 -0
  40. rasa/builder/project_info.py +72 -0
  41. rasa/builder/scrape_rasa_docs.py +97 -0
  42. rasa/builder/service.py +1335 -0
  43. rasa/builder/shared/tracker_context.py +212 -0
  44. rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
  45. rasa/builder/template_cache.py +244 -0
  46. rasa/builder/training_service.py +183 -0
  47. rasa/builder/validation_service.py +97 -0
  48. rasa/cli/project_templates/basic/actions/__init__ +0 -0
  49. rasa/cli/project_templates/basic/actions/action_human_handoff.py +40 -0
  50. rasa/cli/project_templates/basic/config.yml +29 -0
  51. rasa/cli/project_templates/basic/credentials.yml +33 -0
  52. rasa/cli/project_templates/basic/data/data.md +9 -0
  53. rasa/cli/project_templates/basic/data/general/feedback.yml +21 -0
  54. rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
  55. rasa/cli/project_templates/basic/data/general/hello.yml +6 -0
  56. rasa/cli/project_templates/basic/data/general/help.yml +6 -0
  57. rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
  58. rasa/cli/project_templates/basic/data/general/show_faqs.yml +6 -0
  59. rasa/cli/project_templates/basic/data/system/patterns/pattern_cannot_handle.yml +7 -0
  60. rasa/cli/project_templates/basic/data/system/patterns/pattern_completed.yml +7 -0
  61. rasa/cli/project_templates/basic/data/system/patterns/pattern_correction.yml +7 -0
  62. rasa/cli/project_templates/basic/data/system/patterns/pattern_search.yml +8 -0
  63. rasa/cli/project_templates/basic/data/system/patterns/pattern_session_start.yml +8 -0
  64. rasa/cli/project_templates/basic/docs/docs.md +5 -0
  65. rasa/cli/project_templates/basic/docs/template.txt +28 -0
  66. rasa/cli/project_templates/basic/domain/domain.md +9 -0
  67. rasa/cli/project_templates/basic/domain/general/feedback.yml +25 -0
  68. rasa/cli/project_templates/basic/domain/general/goodbye.yml +9 -0
  69. rasa/cli/project_templates/basic/domain/general/hello.yml +7 -0
  70. rasa/cli/project_templates/basic/domain/general/help.yml +21 -0
  71. rasa/cli/project_templates/basic/domain/general/human_handoff.yml +32 -0
  72. rasa/cli/project_templates/basic/domain/general/show_faqs.yml +14 -0
  73. rasa/cli/project_templates/basic/domain/system/patterns/pattern_cannot_handle.yml +5 -0
  74. rasa/cli/project_templates/basic/domain/system/patterns/pattern_session_start.yml +19 -0
  75. rasa/cli/project_templates/basic/endpoints.yml +67 -0
  76. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
  77. rasa/cli/project_templates/default/config.yml +4 -0
  78. rasa/cli/project_templates/default/endpoints.yml +4 -0
  79. rasa/cli/project_templates/finance/actions/__init__.py +46 -0
  80. rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -0
  81. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
  82. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
  83. rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
  84. rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -0
  85. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
  86. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
  87. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
  88. rasa/cli/project_templates/finance/actions/database.py +277 -0
  89. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  90. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
  91. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
  92. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
  93. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
  94. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
  95. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
  96. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
  97. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
  98. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
  99. rasa/cli/project_templates/finance/config.yml +23 -0
  100. rasa/cli/project_templates/finance/credentials.yml +32 -0
  101. rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
  102. rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
  103. rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
  104. rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
  105. rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
  106. rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
  107. rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
  108. rasa/cli/project_templates/finance/csvs/users.csv +4 -0
  109. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
  110. rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
  111. rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
  112. rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
  113. rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
  114. rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
  115. rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
  116. rasa/cli/project_templates/finance/data/general/help.yml +9 -0
  117. rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
  118. rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
  119. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +5 -0
  120. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
  121. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
  122. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
  123. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
  124. rasa/cli/project_templates/finance/data/system/source/accounts.json +51 -0
  125. rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
  126. rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
  127. rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
  128. rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
  129. rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
  130. rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
  131. rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
  132. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
  133. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
  134. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
  135. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
  136. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
  137. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
  138. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
  139. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
  140. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
  141. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
  142. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
  143. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
  144. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
  145. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
  146. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
  147. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
  148. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
  149. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
  150. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
  151. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
  152. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
  153. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
  154. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
  155. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
  156. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
  157. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
  158. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
  159. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
  160. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
  161. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
  162. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
  163. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
  164. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
  165. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
  166. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
  167. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
  168. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
  169. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
  170. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
  171. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
  172. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
  173. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
  174. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
  175. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
  176. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
  177. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
  178. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
  179. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
  180. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
  181. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
  182. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
  183. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
  184. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
  185. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
  186. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
  187. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
  188. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
  189. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
  190. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
  191. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
  192. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
  193. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
  194. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
  195. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
  196. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
  197. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
  198. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
  199. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
  200. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
  201. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
  202. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
  203. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
  204. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
  205. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
  206. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
  207. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
  208. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
  209. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
  210. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
  211. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
  212. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
  213. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
  214. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
  215. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
  216. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
  217. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
  218. rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
  219. rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
  220. rasa/cli/project_templates/finance/domain/general/assistant_details.yml +12 -0
  221. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
  222. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
  223. rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
  224. rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
  225. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  226. rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
  227. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
  228. rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
  229. rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
  230. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
  231. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
  232. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
  233. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
  234. rasa/cli/project_templates/finance/endpoints.yml +66 -0
  235. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  236. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  237. rasa/cli/project_templates/telco/actions/billing/__init__.py +0 -0
  238. rasa/cli/project_templates/telco/actions/billing/actions_billing.py +204 -0
  239. rasa/cli/project_templates/telco/actions/general/__init__.py +0 -0
  240. rasa/cli/project_templates/telco/actions/general/action_human_handoff.py +49 -0
  241. rasa/cli/project_templates/telco/actions/network/__init__.py +0 -0
  242. rasa/cli/project_templates/telco/actions/network/actions_get_data_from_db.py +48 -0
  243. rasa/cli/project_templates/telco/actions/network/actions_run_diagnostics.py +28 -0
  244. rasa/cli/project_templates/telco/actions/network/actions_session_start.py +18 -0
  245. rasa/cli/project_templates/telco/config.yml +29 -0
  246. rasa/cli/project_templates/telco/credentials.yml +33 -0
  247. rasa/cli/project_templates/telco/csvs/billing.csv +19 -0
  248. rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
  249. rasa/cli/project_templates/telco/data/billing/flow_understand_bill.yml +45 -0
  250. rasa/cli/project_templates/telco/data/general/bot_challenge.yml +6 -0
  251. rasa/cli/project_templates/telco/data/general/feedback.yml +20 -0
  252. rasa/cli/project_templates/telco/data/general/goodbye.yml +6 -0
  253. rasa/cli/project_templates/telco/data/general/hello.yml +6 -0
  254. rasa/cli/project_templates/telco/data/general/human_handoff.yml +16 -0
  255. rasa/cli/project_templates/telco/data/general/patterns.yml +30 -0
  256. rasa/cli/project_templates/telco/data/network/flow_reboot_router.yml +8 -0
  257. rasa/cli/project_templates/telco/data/network/flow_reset_router.yml +7 -0
  258. rasa/cli/project_templates/telco/data/network/flow_solve_internet_issue.yml +73 -0
  259. rasa/cli/project_templates/telco/docs/docs.md +5 -0
  260. rasa/cli/project_templates/telco/docs/network/reset_vs_rboot_router.txt +1 -0
  261. rasa/cli/project_templates/telco/docs/network/restart_router.txt +6 -0
  262. rasa/cli/project_templates/telco/docs/network/run_speed_test.txt +6 -0
  263. rasa/cli/project_templates/telco/domain/billing/domain_undertand_bill.yml +102 -0
  264. rasa/cli/project_templates/telco/domain/general/bot_challenge.yml +4 -0
  265. rasa/cli/project_templates/telco/domain/general/feedback.yml +25 -0
  266. rasa/cli/project_templates/telco/domain/general/goodbye.yml +7 -0
  267. rasa/cli/project_templates/telco/domain/general/hello.yml +5 -0
  268. rasa/cli/project_templates/telco/domain/general/human_handoff.yml +29 -0
  269. rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
  270. rasa/cli/project_templates/telco/domain/network/domain_reboot_router.yml +21 -0
  271. rasa/cli/project_templates/telco/domain/network/domain_reset_router.yml +12 -0
  272. rasa/cli/project_templates/telco/domain/network/domain_run_speed_test.yml +25 -0
  273. rasa/cli/project_templates/telco/domain/network/domain_solve_internet_issue.yml +75 -0
  274. rasa/cli/project_templates/telco/domain/shared.yml +129 -0
  275. rasa/cli/project_templates/telco/endpoints.yml +67 -0
  276. rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
  277. rasa/cli/project_templates/tutorial/config.yml +2 -1
  278. rasa/cli/scaffold.py +46 -2
  279. rasa/cli/train.py +2 -2
  280. rasa/core/actions/action.py +27 -38
  281. rasa/core/actions/action_run_slot_rejections.py +1 -1
  282. rasa/core/channels/channel.py +4 -3
  283. rasa/core/channels/constants.py +3 -0
  284. rasa/core/channels/development_inspector.py +48 -15
  285. rasa/core/channels/inspector/dist/assets/{arc-0b11fe30.js → arc-c24d8d79.js} +1 -1
  286. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-9eef30a7.js → blockDiagram-38ab4fdb-1b6b9f26.js} +1 -1
  287. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-03e94f28.js → c4Diagram-3d4e48cf-da91d0f9.js} +1 -1
  288. rasa/core/channels/inspector/dist/assets/channel-d2444dfd.js +1 -0
  289. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-95c09eba.js → classDiagram-70f12bd4-6067f302.js} +1 -1
  290. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-38e8446c.js → classDiagram-v2-f2320105-705d024a.js} +1 -1
  291. rasa/core/channels/inspector/dist/assets/clone-281a0990.js +1 -0
  292. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-57dc3038.js → createText-2e5e7dd3-3751dffe.js} +1 -1
  293. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-4bac0545.js → edges-e0da2a9e-7b25b4af.js} +1 -1
  294. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-81795c90.js → erDiagram-9861fffd-eb7deea8.js} +1 -1
  295. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-89489ae6.js → flowDb-956e92f1-67235ff6.js} +1 -1
  296. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-cd152627.js → flowDiagram-66a62f08-34c3a16a.js} +1 -1
  297. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-aa4cca3b.js +1 -0
  298. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-3da369bc.js → flowchart-elk-definition-4a651766-f1a93631.js} +1 -1
  299. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-85ec16f8.js → ganttDiagram-c361ad54-a68cbad1.js} +1 -1
  300. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-495bc140.js → gitGraphDiagram-72cf32ee-0b1e4a1d.js} +1 -1
  301. rasa/core/channels/inspector/dist/assets/{graph-1ec4d266.js → graph-f3c1d212.js} +1 -1
  302. rasa/core/channels/inspector/dist/assets/{index-c804b295.js → index-051c5a6e.js} +255 -255
  303. rasa/core/channels/inspector/dist/assets/{index-3862675e-0a0e97c9.js → index-3862675e-34cbca30.js} +1 -1
  304. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-4d54bcde.js → infoDiagram-f8f76790-e69960a1.js} +1 -1
  305. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-dc097114.js → journeyDiagram-49397b02-8dd3296a.js} +1 -1
  306. rasa/core/channels/inspector/dist/assets/{layout-1a08981e.js → layout-e93126bc.js} +1 -1
  307. rasa/core/channels/inspector/dist/assets/{line-95f7f1d3.js → line-15eb1e26.js} +1 -1
  308. rasa/core/channels/inspector/dist/assets/{linear-97e69543.js → linear-fec95d33.js} +1 -1
  309. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-8c71ff03.js → mindmap-definition-fc14e90a-2557813e.js} +1 -1
  310. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-f14c71c7.js → pieDiagram-8a3498a8-40d756b1.js} +1 -1
  311. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-f1d3c9ff.js → quadrantDiagram-120e2f19-a48cbdcd.js} +1 -1
  312. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-bfa2412f.js → requirementDiagram-deff3bca-dc778150.js} +1 -1
  313. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-53f2c97b.js → sankeyDiagram-04a897e0-10026b94.js} +1 -1
  314. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-319d7c0e.js → sequenceDiagram-704730f1-3b2ed10a.js} +1 -1
  315. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-76a09418.js → stateDiagram-587899a1-c5f3b3fb.js} +1 -1
  316. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-a67f15d4.js → stateDiagram-v2-d93cdb3a-e503656b.js} +1 -1
  317. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-0654e7c3.js → styles-6aaf32cf-a683ce56.js} +1 -1
  318. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-1394bb9d.js → styles-9a916d00-02bcdcee.js} +1 -1
  319. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-e4c5bdae.js → styles-c10674c1-8e90dbb9.js} +1 -1
  320. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-50957104.js → svgDrawCommon-08f97a94-7c23fc1e.js} +1 -1
  321. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-b0885a6a.js → timeline-definition-85554ec2-c42faec8.js} +1 -1
  322. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-79e6541a.js → xychartDiagram-e933f94c-5e3bb0ea.js} +1 -1
  323. rasa/core/channels/inspector/dist/index.html +1 -1
  324. rasa/core/channels/inspector/src/App.tsx +36 -10
  325. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +1 -1
  326. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +12 -3
  327. rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +268 -0
  328. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +6 -2
  329. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +8 -3
  330. rasa/core/channels/inspector/src/types.ts +8 -0
  331. rasa/core/channels/socketio.py +212 -51
  332. rasa/core/channels/studio_chat.py +161 -50
  333. rasa/core/channels/voice_ready/twilio_voice.py +1 -1
  334. rasa/core/channels/voice_stream/audiocodes.py +9 -6
  335. rasa/core/channels/voice_stream/browser_audio.py +39 -4
  336. rasa/core/channels/voice_stream/call_state.py +13 -2
  337. rasa/core/channels/voice_stream/genesys.py +16 -13
  338. rasa/core/channels/voice_stream/jambonz.py +13 -11
  339. rasa/core/channels/voice_stream/twilio_media_streams.py +14 -13
  340. rasa/core/channels/voice_stream/util.py +11 -1
  341. rasa/core/channels/voice_stream/voice_channel.py +106 -32
  342. rasa/core/nlg/contextual_response_rephraser.py +11 -7
  343. rasa/core/nlg/generator.py +21 -5
  344. rasa/core/nlg/response.py +43 -6
  345. rasa/core/nlg/translate.py +8 -0
  346. rasa/core/policies/enterprise_search_policy.py +4 -7
  347. rasa/core/policies/flows/flow_executor.py +8 -1
  348. rasa/core/run.py +13 -3
  349. rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
  350. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +1 -1
  351. rasa/dialogue_understanding_test/du_test_schema.yml +3 -3
  352. rasa/e2e_test/e2e_test_schema.yml +3 -3
  353. rasa/engine/graph.py +5 -1
  354. rasa/engine/storage/local_model_storage.py +41 -4
  355. rasa/model_manager/model_api.py +4 -5
  356. rasa/model_manager/runner_service.py +1 -1
  357. rasa/model_manager/socket_bridge.py +27 -15
  358. rasa/model_manager/trainer_service.py +12 -9
  359. rasa/model_manager/utils.py +1 -29
  360. rasa/shared/core/domain.py +62 -15
  361. rasa/shared/core/flows/flow_step.py +7 -1
  362. rasa/shared/core/flows/steps/call.py +8 -1
  363. rasa/shared/core/flows/yaml_flows_io.py +16 -8
  364. rasa/shared/core/slots.py +4 -0
  365. rasa/shared/importers/importer.py +6 -0
  366. rasa/shared/importers/utils.py +77 -1
  367. rasa/shared/utils/common.py +2 -1
  368. rasa/studio/upload.py +12 -46
  369. rasa/telemetry.py +97 -23
  370. rasa/utils/io.py +27 -9
  371. rasa/utils/json_utils.py +6 -1
  372. rasa/utils/licensing.py +21 -10
  373. rasa/utils/log_utils.py +5 -1
  374. rasa/utils/openapi.py +144 -0
  375. rasa/utils/plotting.py +1 -1
  376. rasa/validator.py +7 -3
  377. rasa/version.py +1 -1
  378. {rasa_pro-3.13.8.dist-info → rasa_pro-3.14.0a2.dist-info}/METADATA +23 -24
  379. {rasa_pro-3.13.8.dist-info → rasa_pro-3.14.0a2.dist-info}/RECORD +382 -105
  380. rasa/core/channels/inspector/dist/assets/channel-51d02e9e.js +0 -1
  381. rasa/core/channels/inspector/dist/assets/clone-cc738fa6.js +0 -1
  382. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-0c716443.js +0 -1
  383. {rasa_pro-3.13.8.dist-info → rasa_pro-3.14.0a2.dist-info}/NOTICE +0 -0
  384. {rasa_pro-3.13.8.dist-info → rasa_pro-3.14.0a2.dist-info}/WHEEL +0 -0
  385. {rasa_pro-3.13.8.dist-info → rasa_pro-3.14.0a2.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,4 @@
1
- import{Z as zt,_ as ot,X as wt,W as Ft,s as Nt,g as Xt,C as Yt,D as St,a as Ht,b as $t,E as Ut,l as Ct,U as qt,i as jt,d as Gt}from"./index-c804b295.js";import{c as Qt}from"./createText-2e5e7dd3-57dc3038.js";import{i as Kt}from"./init-77b53fdd.js";import{o as Zt}from"./ordinal-ba9b4969.js";import{l as ft}from"./linear-97e69543.js";import{l as pt}from"./line-95f7f1d3.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";function Jt(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function st(){var e=Zt().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,c,f=!1,d=0,R=0,_=.5;delete e.unknown;function A(){var m=t().length,T=n<s,S=T?n:s,P=T?s:n;o=(P-S)/Math.max(1,m-d+R*2),f&&(o=Math.floor(o)),S+=(P-S-o*(m-d))*_,c=o*(1-d),f&&(S=Math.round(S),c=Math.round(c));var p=Jt(m).map(function(C){return S+o*C});return i(T?p.reverse():p)}return e.domain=function(m){return arguments.length?(t(m),A()):t()},e.range=function(m){return arguments.length?([s,n]=m,s=+s,n=+n,A()):[s,n]},e.rangeRound=function(m){return[s,n]=m,s=+s,n=+n,f=!0,A()},e.bandwidth=function(){return c},e.step=function(){return o},e.round=function(m){return arguments.length?(f=!!m,A()):f},e.padding=function(m){return arguments.length?(d=Math.min(1,R=+m),A()):d},e.paddingInner=function(m){return arguments.length?(d=Math.min(1,m),A()):d},e.paddingOuter=function(m){return arguments.length?(R=+m,A()):R},e.align=function(m){return arguments.length?(_=Math.max(0,Math.min(1,m)),A()):_},e.copy=function(){return st(t(),[s,n]).round(f).paddingInner(d).paddingOuter(R).align(_)},Kt.apply(A(),arguments)}var nt=function(){var e=function(V,r,l,u){for(l=l||{},u=V.length;u--;l[V[u]]=r);return l},t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],c=[1,7],f=[1,5,10,12,14,16,18,19,21,23,34,35,36],d=[1,25],R=[1,26],_=[1,28],A=[1,29],m=[1,30],T=[1,31],S=[1,32],P=[1,33],p=[1,34],C=[1,35],h=[1,36],L=[1,37],z=[1,43],lt=[1,42],ct=[1,47],$=[1,50],w=[1,10,12,14,16,18,19,21,23,34,35,36],Q=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],E=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],ut=[1,64],K={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:function(r,l,u,g,b,a,F){var x=a.length-1;switch(b){case 5:g.setOrientation(a[x]);break;case 9:g.setDiagramTitle(a[x].text.trim());break;case 12:g.setLineData({text:"",type:"text"},a[x]);break;case 13:g.setLineData(a[x-1],a[x]);break;case 14:g.setBarData({text:"",type:"text"},a[x]);break;case 15:g.setBarData(a[x-1],a[x]);break;case 16:this.$=a[x].trim(),g.setAccTitle(this.$);break;case 17:case 18:this.$=a[x].trim(),g.setAccDescription(this.$);break;case 19:this.$=a[x-1];break;case 20:this.$=[Number(a[x-2]),...a[x]];break;case 21:this.$=[Number(a[x])];break;case 22:g.setXAxisTitle(a[x]);break;case 23:g.setXAxisTitle(a[x-1]);break;case 24:g.setXAxisTitle({type:"text",text:""});break;case 25:g.setXAxisBand(a[x]);break;case 26:g.setXAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 27:this.$=a[x-1];break;case 28:this.$=[a[x-2],...a[x]];break;case 29:this.$=[a[x]];break;case 30:g.setYAxisTitle(a[x]);break;case 31:g.setYAxisTitle(a[x-1]);break;case 32:g.setYAxisTitle({type:"text",text:""});break;case 33:g.setYAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 37:this.$={text:a[x],type:"text"};break;case 38:this.$={text:a[x],type:"text"};break;case 39:this.$={text:a[x],type:"markdown"};break;case 40:this.$=a[x];break;case 41:this.$=a[x-1]+""+a[x];break}},table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:c}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:c}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:c}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(f,[2,34]),e(f,[2,35]),e(f,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:c}),{1:[2,3]},e(f,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:c}),{11:23,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:39,13:38,24:z,27:lt,29:40,30:41,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:45,15:44,27:ct,33:46,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:49,17:48,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:52,17:51,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{20:[1,53]},{22:[1,54]},e(w,[2,18]),{1:[2,2]},e(w,[2,8]),e(w,[2,9]),e(Q,[2,37],{40:55,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L}),e(Q,[2,38]),e(Q,[2,39]),e(E,[2,40]),e(E,[2,42]),e(E,[2,43]),e(E,[2,44]),e(E,[2,45]),e(E,[2,46]),e(E,[2,47]),e(E,[2,48]),e(E,[2,49]),e(E,[2,50]),e(E,[2,51]),e(w,[2,10]),e(w,[2,22],{30:41,29:56,24:z,27:lt}),e(w,[2,24]),e(w,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,11]),e(w,[2,30],{33:60,27:ct}),e(w,[2,32]),{31:[1,61]},e(w,[2,12]),{17:62,24:$},{25:63,27:ut},e(w,[2,14]),{17:65,24:$},e(w,[2,16]),e(w,[2,17]),e(E,[2,41]),e(w,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(w,[2,31]),{27:[1,69]},e(w,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(w,[2,15]),e(w,[2,26]),e(w,[2,27]),{11:59,32:72,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,33]),e(w,[2,19]),{25:73,27:ut},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:function(r,l){if(l.recoverable)this.trace(r);else{var u=new Error(r);throw u.hash=l,u}},parse:function(r){var l=this,u=[0],g=[],b=[null],a=[],F=this.table,x="",U=0,gt=0,Vt=2,xt=1,Wt=a.slice.call(arguments,1),k=Object.create(this.lexer),W={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(W.yy[J]=this.yy[J]);k.setInput(r,W.yy),W.yy.lexer=k,W.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var tt=k.yylloc;a.push(tt);var Bt=k.options&&k.options.ranges;typeof W.yy.parseError=="function"?this.parseError=W.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var I;return I=g.pop()||k.lex()||xt,typeof I!="number"&&(I instanceof Array&&(g=I,I=g.pop()),I=l.symbols_[I]||I),I}for(var D,B,v,it,O={},q,M,dt,j;;){if(B=u[u.length-1],this.defaultActions[B]?v=this.defaultActions[B]:((D===null||typeof D>"u")&&(D=Ot()),v=F[B]&&F[B][D]),typeof v>"u"||!v.length||!v[0]){var et="";j=[];for(q in F[B])this.terminals_[q]&&q>Vt&&j.push("'"+this.terminals_[q]+"'");k.showPosition?et="Parse error on line "+(U+1)+`:
1
+ import{Z as zt,_ as ot,X as wt,W as Ft,s as Nt,g as Xt,C as Yt,D as St,a as Ht,b as $t,E as Ut,l as Ct,U as qt,i as jt,d as Gt}from"./index-051c5a6e.js";import{c as Qt}from"./createText-2e5e7dd3-3751dffe.js";import{i as Kt}from"./init-77b53fdd.js";import{o as Zt}from"./ordinal-ba9b4969.js";import{l as ft}from"./linear-fec95d33.js";import{l as pt}from"./line-15eb1e26.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";function Jt(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function st(){var e=Zt().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,c,f=!1,d=0,R=0,_=.5;delete e.unknown;function A(){var m=t().length,T=n<s,S=T?n:s,P=T?s:n;o=(P-S)/Math.max(1,m-d+R*2),f&&(o=Math.floor(o)),S+=(P-S-o*(m-d))*_,c=o*(1-d),f&&(S=Math.round(S),c=Math.round(c));var p=Jt(m).map(function(C){return S+o*C});return i(T?p.reverse():p)}return e.domain=function(m){return arguments.length?(t(m),A()):t()},e.range=function(m){return arguments.length?([s,n]=m,s=+s,n=+n,A()):[s,n]},e.rangeRound=function(m){return[s,n]=m,s=+s,n=+n,f=!0,A()},e.bandwidth=function(){return c},e.step=function(){return o},e.round=function(m){return arguments.length?(f=!!m,A()):f},e.padding=function(m){return arguments.length?(d=Math.min(1,R=+m),A()):d},e.paddingInner=function(m){return arguments.length?(d=Math.min(1,m),A()):d},e.paddingOuter=function(m){return arguments.length?(R=+m,A()):R},e.align=function(m){return arguments.length?(_=Math.max(0,Math.min(1,m)),A()):_},e.copy=function(){return st(t(),[s,n]).round(f).paddingInner(d).paddingOuter(R).align(_)},Kt.apply(A(),arguments)}var nt=function(){var e=function(V,r,l,u){for(l=l||{},u=V.length;u--;l[V[u]]=r);return l},t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],c=[1,7],f=[1,5,10,12,14,16,18,19,21,23,34,35,36],d=[1,25],R=[1,26],_=[1,28],A=[1,29],m=[1,30],T=[1,31],S=[1,32],P=[1,33],p=[1,34],C=[1,35],h=[1,36],L=[1,37],z=[1,43],lt=[1,42],ct=[1,47],$=[1,50],w=[1,10,12,14,16,18,19,21,23,34,35,36],Q=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],E=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],ut=[1,64],K={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:function(r,l,u,g,b,a,F){var x=a.length-1;switch(b){case 5:g.setOrientation(a[x]);break;case 9:g.setDiagramTitle(a[x].text.trim());break;case 12:g.setLineData({text:"",type:"text"},a[x]);break;case 13:g.setLineData(a[x-1],a[x]);break;case 14:g.setBarData({text:"",type:"text"},a[x]);break;case 15:g.setBarData(a[x-1],a[x]);break;case 16:this.$=a[x].trim(),g.setAccTitle(this.$);break;case 17:case 18:this.$=a[x].trim(),g.setAccDescription(this.$);break;case 19:this.$=a[x-1];break;case 20:this.$=[Number(a[x-2]),...a[x]];break;case 21:this.$=[Number(a[x])];break;case 22:g.setXAxisTitle(a[x]);break;case 23:g.setXAxisTitle(a[x-1]);break;case 24:g.setXAxisTitle({type:"text",text:""});break;case 25:g.setXAxisBand(a[x]);break;case 26:g.setXAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 27:this.$=a[x-1];break;case 28:this.$=[a[x-2],...a[x]];break;case 29:this.$=[a[x]];break;case 30:g.setYAxisTitle(a[x]);break;case 31:g.setYAxisTitle(a[x-1]);break;case 32:g.setYAxisTitle({type:"text",text:""});break;case 33:g.setYAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 37:this.$={text:a[x],type:"text"};break;case 38:this.$={text:a[x],type:"text"};break;case 39:this.$={text:a[x],type:"markdown"};break;case 40:this.$=a[x];break;case 41:this.$=a[x-1]+""+a[x];break}},table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:c}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:c}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:c}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(f,[2,34]),e(f,[2,35]),e(f,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:c}),{1:[2,3]},e(f,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:c}),{11:23,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:39,13:38,24:z,27:lt,29:40,30:41,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:45,15:44,27:ct,33:46,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:49,17:48,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:52,17:51,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{20:[1,53]},{22:[1,54]},e(w,[2,18]),{1:[2,2]},e(w,[2,8]),e(w,[2,9]),e(Q,[2,37],{40:55,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L}),e(Q,[2,38]),e(Q,[2,39]),e(E,[2,40]),e(E,[2,42]),e(E,[2,43]),e(E,[2,44]),e(E,[2,45]),e(E,[2,46]),e(E,[2,47]),e(E,[2,48]),e(E,[2,49]),e(E,[2,50]),e(E,[2,51]),e(w,[2,10]),e(w,[2,22],{30:41,29:56,24:z,27:lt}),e(w,[2,24]),e(w,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,11]),e(w,[2,30],{33:60,27:ct}),e(w,[2,32]),{31:[1,61]},e(w,[2,12]),{17:62,24:$},{25:63,27:ut},e(w,[2,14]),{17:65,24:$},e(w,[2,16]),e(w,[2,17]),e(E,[2,41]),e(w,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(w,[2,31]),{27:[1,69]},e(w,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(w,[2,15]),e(w,[2,26]),e(w,[2,27]),{11:59,32:72,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,33]),e(w,[2,19]),{25:73,27:ut},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:function(r,l){if(l.recoverable)this.trace(r);else{var u=new Error(r);throw u.hash=l,u}},parse:function(r){var l=this,u=[0],g=[],b=[null],a=[],F=this.table,x="",U=0,gt=0,Vt=2,xt=1,Wt=a.slice.call(arguments,1),k=Object.create(this.lexer),W={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(W.yy[J]=this.yy[J]);k.setInput(r,W.yy),W.yy.lexer=k,W.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var tt=k.yylloc;a.push(tt);var Bt=k.options&&k.options.ranges;typeof W.yy.parseError=="function"?this.parseError=W.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var I;return I=g.pop()||k.lex()||xt,typeof I!="number"&&(I instanceof Array&&(g=I,I=g.pop()),I=l.symbols_[I]||I),I}for(var D,B,v,it,O={},q,M,dt,j;;){if(B=u[u.length-1],this.defaultActions[B]?v=this.defaultActions[B]:((D===null||typeof D>"u")&&(D=Ot()),v=F[B]&&F[B][D]),typeof v>"u"||!v.length||!v[0]){var et="";j=[];for(q in F[B])this.terminals_[q]&&q>Vt&&j.push("'"+this.terminals_[q]+"'");k.showPosition?et="Parse error on line "+(U+1)+`:
2
2
  `+k.showPosition()+`
3
3
  Expecting `+j.join(", ")+", got '"+(this.terminals_[D]||D)+"'":et="Parse error on line "+(U+1)+": Unexpected "+(D==xt?"end of input":"'"+(this.terminals_[D]||D)+"'"),this.parseError(et,{text:k.match,token:this.terminals_[D]||D,line:k.yylineno,loc:tt,expected:j})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+B+", token: "+D);switch(v[0]){case 1:u.push(D),b.push(k.yytext),a.push(k.yylloc),u.push(v[1]),D=null,gt=k.yyleng,x=k.yytext,U=k.yylineno,tt=k.yylloc;break;case 2:if(M=this.productions_[v[1]][1],O.$=b[b.length-M],O._$={first_line:a[a.length-(M||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(M||1)].first_column,last_column:a[a.length-1].last_column},Bt&&(O._$.range=[a[a.length-(M||1)].range[0],a[a.length-1].range[1]]),it=this.performAction.apply(O,[x,gt,U,W.yy,v[1],b,a].concat(Wt)),typeof it<"u")return it;M&&(u=u.slice(0,-1*M*2),b=b.slice(0,-1*M),a=a.slice(0,-1*M)),u.push(this.productions_[v[1]][0]),b.push(O.$),a.push(O._$),dt=F[u[u.length-2]][u[u.length-1]],u.push(dt);break;case 3:return!0}}return!0}},It=function(){var V={EOF:1,parseError:function(l,u){if(this.yy.parser)this.yy.parser.parseError(l,u);else throw new Error(l)},setInput:function(r,l){return this.yy=l||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var l=r.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},unput:function(r){var l=r.length,u=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),u.length-1&&(this.yylineno-=u.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:u?(u.length===g.length?this.yylloc.first_column:0)+g[g.length-u.length].length-u[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(r){this.unput(this.match.slice(r))},pastInput:function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var r=this.pastInput(),l=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
@@ -6,7 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <link rel="icon" href="data:image/x-icon;base64,AAABAAEAICAQAAEABADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAOwAAADsAAAAEAAAABAAAABxaUwAwoyZAMOJmADBi5kAwoyZAMKMmQDCjJkAwoyZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAACV3AAAAAAAAAAAAAAAAAAYXdwAAAAAAAAAAAAAAAANHd3cAAAAAAAEREREREREXd3d3ERAAAAAHd3d3d3d3d3FXd3dwAAAAB3d3d3d3d3dDB3d3cAAAAAd3IiIiIiIiAAIid3AAAAAHdwAAAAAAAAAAAHdwAAAAB3cAAAAAAAAAAAB3cAAAAAd3AAd3AABnd0AAd3AAAAAHdwAHdwADF3QgAHdwAAAAB3cAB3dTMXcSAAB3cAAAAAd3AAd3dxdxMAAAd3AAAAAHdwAHd3d3dGAAAHdwAAAAB3cAB3dHd3dxUAB3cAAAAAd3AAd3A1F3d3AAd3AAAAAHdwAHdwAANXdwAHdwAAAAB3cAB3cAAAAXcAB3cAAAAAd3AAd3d3d3d3AAd3AAAAAHdwAHd3d3d3dwAHdwAAAAB3cAB3d3d3d3cAB3cAAAAAd3AAAAAAAAAAAAd3AAAAAHdwAAAAAAAAAAAHdwAAAAB3cAAAAAAAAAAAB3cAAAAAd3d3d3d3d3d3d3d3AAAAAHd3d3d3d3d3d3d3dwAAAAB3d3d3d3d3d3d3d3cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///5////4f///8H///8B/8AAAD/AAAA/wAAQP8AAcD/H//4/x//+P8ceDj/HHA4/xwAeP8cAPj/HAD4/xwAOP8cQDj/HHg4/xx+OP8cADj/HAA4/xwAOP8f//j/H//4/x//+P8AAAD/AAAA/wAAAP/////////////////////w==" sizes="32x32">
8
8
  <title>Rasa inspector</title>
9
- <script type="module" crossorigin src="./assets/index-c804b295.js"></script>
9
+ <script type="module" crossorigin src="./assets/index-051c5a6e.js"></script>
10
10
  <link rel="stylesheet" href="./assets/index-3ee28881.css">
11
11
  </head>
12
12
 
@@ -5,25 +5,25 @@ import {
5
5
  useColorModeValue,
6
6
  useToast,
7
7
  } from '@chakra-ui/react'
8
- import { useEffect, useState } from 'react'
9
8
  import axios from 'axios'
10
- import { useOurTheme } from './theme'
11
- import { Welcome } from './components/Welcome'
12
- import { DialogueStack } from './components/DialogueStack'
9
+ import queryString from 'query-string'
10
+ import { useCallback, useEffect, useState } from 'react'
11
+ import useWebSocket, { ReadyState } from 'react-use-websocket'
12
+ import { Chat } from './components/Chat'
13
+ import { DiagramFlow } from './components/DiagramFlow'
13
14
  import { DialougeInformation } from './components/DialogueInformation'
15
+ import { DialogueStack } from './components/DialogueStack'
14
16
  import { LoadingSpinner } from './components/LoadingSpinner'
15
- import { DiagramFlow } from './components/DiagramFlow'
16
17
  import { RecruitmentPanel } from './components/RecruitmentPanel'
18
+ import { Welcome } from './components/Welcome'
17
19
  import { formatSlots } from './helpers/formatters'
18
- import { Slot, Stack, Event, Flow, SelectedStack, Tracker } from './types'
19
20
  import {
20
21
  createHistoricalStack,
21
22
  flowStepTrail,
22
23
  updatedActiveFrame,
23
24
  } from './helpers/utils'
24
- import queryString from 'query-string'
25
- import { Chat } from './components/Chat'
26
- import useWebSocket, { ReadyState } from 'react-use-websocket'
25
+ import { useOurTheme } from './theme'
26
+ import { Event, Flow, SelectedStack, Slot, Stack, Tracker } from './types'
27
27
 
28
28
  export function App() {
29
29
  const toast = useToast()
@@ -35,6 +35,7 @@ export function App() {
35
35
  const [story, setStory] = useState<string>('')
36
36
  const [stack, setStack] = useState<Stack[]>([])
37
37
  const [frame, setFrame] = useState<SelectedStack | undefined>(undefined)
38
+ const [latency, setLatency] = useState<any>(null)
38
39
 
39
40
  // State to control the visibility of the RecruitmentPanel
40
41
  const [showRecruitmentPanel, setShowRecruitmentPanel] = useState(true)
@@ -127,6 +128,13 @@ export function App() {
127
128
  !rasaChatSessionId ||
128
129
  lastJsonMessage?.sender_id === rasaChatSessionId
129
130
  ) {
131
+ if (lastJsonMessage.latency) {
132
+ console.log('Latency update:', lastJsonMessage.latency)
133
+ setLatency((prevLatency: any) => ({
134
+ ...prevLatency,
135
+ ...lastJsonMessage.latency,
136
+ }))
137
+ }
130
138
  setSlots(formatSlots(lastJsonMessage.slots))
131
139
  setEvents(lastJsonMessage.events)
132
140
  const updatedStack = createHistoricalStack(
@@ -188,8 +196,25 @@ export function App() {
188
196
  setShowRecruitmentPanel(false)
189
197
  }
190
198
 
199
+ const onLatencyUpdate = useCallback((newLatency: any) => {
200
+ setLatency((prevLatency: any) => ({
201
+ ...prevLatency,
202
+ ...newLatency,
203
+ }))
204
+ }, [])
205
+
206
+ // Make latency update function available globally for audio stream
207
+ useEffect(() => {
208
+ if (window.location.href.includes('browser_audio')) {
209
+ ;(window as any).updateLatency = onLatencyUpdate
210
+ }
211
+ return () => {
212
+ delete (window as any).updateLatency
213
+ }
214
+ }, [onLatencyUpdate])
215
+
191
216
  if (!rasaChatSessionId && !window.location.href.includes('socketio'))
192
- return <LoadingSpinner />
217
+ return <LoadingSpinner onLatencyUpdate={onLatencyUpdate} />
193
218
 
194
219
  return (
195
220
  <Grid sx={gridSx}>
@@ -211,6 +236,7 @@ export function App() {
211
236
  slots={slots}
212
237
  events={events}
213
238
  story={story}
239
+ latency={latency}
214
240
  />
215
241
  </Grid>
216
242
  </GridItem>
@@ -22,7 +22,7 @@ export const DiagramFlow = ({ stackFrame, stepTrail, flows, slots }: Props) => {
22
22
 
23
23
  const config = {
24
24
  startOnLoad: true,
25
- logLevel: 'info',
25
+ logLevel: 'warning',
26
26
  flowchart: {
27
27
  useMaxWidth: false,
28
28
  },
@@ -13,13 +13,14 @@ import {
13
13
  useTab,
14
14
  useToast,
15
15
  } from '@chakra-ui/react'
16
+ import { useEffect } from 'react'
16
17
  import { Light as SyntaxHighlighter } from 'react-syntax-highlighter'
18
+ import { useCopyToClipboard } from 'usehooks-ts'
19
+ import { formatTestCases } from '../helpers/formatters'
17
20
  import { useOurTheme } from '../theme'
18
21
  import { Event, Slot } from '../types'
19
- import { formatTestCases } from '../helpers/formatters'
20
- import { useCopyToClipboard } from 'usehooks-ts'
21
- import { useEffect } from 'react'
22
22
  import { FullscreenButton } from './FullscreenButton'
23
+ import { LatencyDisplay } from './LatencyDisplay'
23
24
  import { SlotTable, Slots } from './Slots'
24
25
 
25
26
  interface Props extends FlexProps {
@@ -27,6 +28,7 @@ interface Props extends FlexProps {
27
28
  events: Event[]
28
29
  story: string
29
30
  slots: Slot[]
31
+ latency: any
30
32
  }
31
33
 
32
34
  export const DialougeInformation = ({
@@ -35,6 +37,7 @@ export const DialougeInformation = ({
35
37
  events,
36
38
  story,
37
39
  slots,
40
+ latency,
38
41
  ...props
39
42
  }: Props) => {
40
43
  const toast = useToast()
@@ -105,6 +108,7 @@ export const DialougeInformation = ({
105
108
  <CustomTab>Slots</CustomTab>
106
109
  <CustomTab>End-2-end test</CustomTab>
107
110
  <CustomTab>Tracker state</CustomTab>
111
+ <CustomTab>Latency</CustomTab>
108
112
  </TabList>
109
113
  <TabPanels height="100%" overflow="hidden">
110
114
  <TabPanel sx={tabPanelSx}>
@@ -160,6 +164,11 @@ export const DialougeInformation = ({
160
164
  </FullscreenButton>
161
165
  </HStack>
162
166
  </TabPanel>
167
+ <TabPanel sx={tabPanelSx}>
168
+ <Box sx={overflowBox}>
169
+ <LatencyDisplay latency={latency} />
170
+ </Box>
171
+ </TabPanel>
163
172
  </TabPanels>
164
173
  </Tabs>
165
174
  </Flex>
@@ -0,0 +1,268 @@
1
+ import {
2
+ Box,
3
+ Flex,
4
+ FlexProps,
5
+ Text,
6
+ useColorModeValue,
7
+ Tooltip,
8
+ Table,
9
+ Tbody,
10
+ Tr,
11
+ Td,
12
+ } from '@chakra-ui/react'
13
+ import { useOurTheme } from '../theme'
14
+ import { LatencyData } from '../types'
15
+
16
+ interface Props extends FlexProps {
17
+ latency: LatencyData
18
+ }
19
+
20
+ /**
21
+ * Simple latency display for text-only conversations.
22
+ * Shows a single response time value.
23
+ */
24
+ const MinimalDisplay = ({ latency, sx, ...props }: Props) => {
25
+ const containerSx = {
26
+ ...sx,
27
+ display: 'flex',
28
+ alignItems: 'center',
29
+ }
30
+
31
+ const getLatencyColor = (latency: number) => {
32
+ if (latency < 1500) return 'green.500'
33
+ if (latency < 2500) return 'orange.500'
34
+ return 'red.500'
35
+ }
36
+
37
+ const value = Math.round(latency.rasa_processing_latency_ms || 0);
38
+ const color = getLatencyColor(value);
39
+
40
+ return (
41
+ <Flex sx={containerSx} {...props}>
42
+ <Text fontSize="md" color={useColorModeValue('gray.700', 'gray.300')}>
43
+ Response latency:
44
+ <Text as="span" ml={2} fontWeight="bold" color={color}>
45
+ {value}ms
46
+ </Text>
47
+ </Text>
48
+ </Flex>
49
+ )
50
+ }
51
+
52
+ /**
53
+ * Detailed latency waterfall chart for voice conversations.
54
+ * Displays processing times for ASR, Rasa, and TTS components.
55
+ */
56
+ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
57
+ const { rasaSpace } = useOurTheme()
58
+
59
+ const containerSx = {
60
+ ...sx,
61
+ flexDirection: 'column',
62
+ gap: rasaSpace[1],
63
+ }
64
+
65
+ const headerSx = {
66
+ fontSize: 'sm',
67
+ fontWeight: 'bold',
68
+ color: useColorModeValue('gray.700', 'gray.300'),
69
+ }
70
+
71
+ const waterfallBarSx = {
72
+ height: '24px',
73
+ borderRadius: '4px',
74
+ overflow: 'hidden',
75
+ border: '1px solid',
76
+ borderColor: useColorModeValue('gray.200', 'gray.600'),
77
+ }
78
+
79
+ const legendTableSx = {
80
+ size: 'sm',
81
+ mt: rasaSpace[0.5]
82
+ }
83
+
84
+ const getLatencyColor = (type: string) => {
85
+ const colors: { [key: string]: string } = {
86
+ asr: 'blue.500',
87
+ rasa: 'purple.500',
88
+ tts_first: 'orange.500',
89
+ tts_complete: 'green.500',
90
+ }
91
+ return colors[type] || 'gray.500'
92
+ }
93
+
94
+ const getLatencyDescription = (type: string) => {
95
+ const descriptions: { [key: string]: string } = {
96
+ asr: 'Time from the first Partial Transcript event to the Final Transcript event from Speech Recognition. It also includes the time taken by the user to speak.',
97
+ rasa: 'Time taken by Rasa to process the text from the Final Transcript event from Speech Recognition until a text response is generated.',
98
+ tts_first: 'Time between the request sent to Text-to-Speech processing and the first byte of audio received by Rasa.',
99
+ tts_complete: 'Time taken by Text-to-Speech to complete audio generation. It depends on the length of the text and could overlap with the Bot speaking time.'
100
+ }
101
+ return descriptions[type] || ''
102
+ }
103
+
104
+ // Metrics for proportional display (only actual processing latencies)
105
+ const chartMetrics = [
106
+ latency.asr_latency_ms && {
107
+ type: 'asr',
108
+ label: 'ASR',
109
+ value: latency.asr_latency_ms,
110
+ },
111
+ latency.rasa_processing_latency_ms && {
112
+ type: 'rasa',
113
+ label: 'Rasa',
114
+ value: latency.rasa_processing_latency_ms,
115
+ },
116
+ latency.tts_complete_latency_ms && {
117
+ type: 'tts_complete',
118
+ label: 'TTS',
119
+ value: latency.tts_complete_latency_ms,
120
+ },
121
+ ].filter(Boolean)
122
+
123
+ // All metrics for legend display
124
+ const allMetrics = [
125
+ latency.asr_latency_ms && {
126
+ type: 'asr',
127
+ label: 'ASR',
128
+ value: latency.asr_latency_ms,
129
+ },
130
+ latency.rasa_processing_latency_ms && {
131
+ type: 'rasa',
132
+ label: 'Rasa',
133
+ value: latency.rasa_processing_latency_ms,
134
+ },
135
+ latency.tts_first_byte_latency_ms && {
136
+ type: 'tts_first',
137
+ label: 'TTS First Byte',
138
+ value: latency.tts_first_byte_latency_ms,
139
+ },
140
+ latency.tts_complete_latency_ms && {
141
+ type: 'tts_complete',
142
+ label: 'TTS Complete',
143
+ value: latency.tts_complete_latency_ms,
144
+ },
145
+ ].filter(Boolean)
146
+
147
+ // Calculate total for proportional sizing (only processing latencies)
148
+ const totalLatency = chartMetrics.reduce(
149
+ (sum: number, metric: any) => sum + metric.value,
150
+ 0,
151
+ )
152
+
153
+ // Calculate total latency for title (Rasa + TTS First Byte)
154
+ const totalDisplayLatency =
155
+ (latency.rasa_processing_latency_ms || 0) +
156
+ (latency.tts_first_byte_latency_ms || 0);
157
+
158
+ return (
159
+ <Flex sx={containerSx} {...props}>
160
+ <Text sx={headerSx}>
161
+ Response latency: ~{Math.round(totalDisplayLatency)}ms
162
+ </Text>
163
+
164
+ {/* Waterfall Bar */}
165
+ <Box>
166
+ <Flex sx={waterfallBarSx}>
167
+ {chartMetrics.map((metric: any) => {
168
+ const widthPercentage =
169
+ totalLatency > 0 ? (metric.value / totalLatency) * 100 : 0
170
+ return (
171
+ <Tooltip
172
+ key={metric.type}
173
+ label={
174
+ <Box>
175
+ <Text fontWeight="bold">
176
+ {metric.label}: {Math.round(metric.value)}ms
177
+ </Text>
178
+ <Text fontSize="xs" mt={1}>
179
+ {getLatencyDescription(metric.type)}
180
+ </Text>
181
+ </Box>
182
+ }
183
+ hasArrow
184
+ placement="top"
185
+ >
186
+ <Box
187
+ bg={getLatencyColor(metric.type)}
188
+ width={`${widthPercentage}%`}
189
+ height="100%"
190
+ minWidth="40px" // Increased minimum width for better visibility
191
+ cursor="pointer"
192
+ _hover={{ opacity: 0.8 }}
193
+ />
194
+ </Tooltip>
195
+ )
196
+ })}
197
+ </Flex>
198
+
199
+ {/* Legend */}
200
+ <Table sx={legendTableSx}>
201
+ <Tbody>
202
+ {/* Split metrics into pairs for 2x2 table */}
203
+ {Array.from(
204
+ { length: Math.ceil(allMetrics.length / 2) },
205
+ (_, rowIndex) => (
206
+ <Tr key={rowIndex}>
207
+ {allMetrics
208
+ .slice(rowIndex * 2, rowIndex * 2 + 2)
209
+ .map((metric: any) => (
210
+ <Td key={metric.type} p={rasaSpace[0.25]} border="none">
211
+ <Flex align="center" gap={rasaSpace[0.25]}>
212
+ <Box
213
+ width="8px"
214
+ height="8px"
215
+ bg={getLatencyColor(metric.type)}
216
+ borderRadius="2px"
217
+ flexShrink={0}
218
+ />
219
+ <Text
220
+ fontSize="xs"
221
+ color={useColorModeValue('gray.600', 'gray.400')}
222
+ noOfLines={1}
223
+ >
224
+ {metric.label}: {Math.round(metric.value)}ms
225
+ </Text>
226
+ </Flex>
227
+ </Td>
228
+ ))}
229
+ {/* Fill empty cell if odd number of metrics */}
230
+ {allMetrics.length % 2 !== 0 &&
231
+ rowIndex === Math.ceil(allMetrics.length / 2) - 1 && (
232
+ <Td p={rasaSpace[0.25]} border="none" />
233
+ )}
234
+ </Tr>
235
+ ),
236
+ )}
237
+ </Tbody>
238
+ </Table>
239
+ </Box>
240
+ </Flex>
241
+ )
242
+ }
243
+
244
+ /**
245
+ * Displays processing latency information for the conversation.
246
+ * Shows either a detailed waterfall chart for voice conversations or
247
+ * a simpler display for text-only conversations.
248
+ */
249
+ export const LatencyDisplay = ({
250
+ sx,
251
+ latency,
252
+ ...props
253
+ }: Props) => {
254
+ if (!latency) {
255
+ console.warn('Latency data is not available')
256
+ return null
257
+ }
258
+
259
+ // Show waterfall if voice metrics are available, otherwise show minimal display
260
+ const isVoiceMetricsAvailable =
261
+ latency.asr_latency_ms && latency.tts_complete_latency_ms
262
+
263
+ if (isVoiceMetricsAvailable) {
264
+ return <WaterfallDisplay latency={latency} sx={sx} {...props} />
265
+ }
266
+
267
+ return <MinimalDisplay latency={latency} sx={sx} {...props} />
268
+ }
@@ -8,7 +8,11 @@ import {
8
8
  import { useOurTheme } from '../theme'
9
9
  import { createAudioConnection } from '../helpers/audio/audiostream.ts'
10
10
 
11
- export const LoadingSpinner = () => {
11
+ interface LoadingSpinnerProps {
12
+ onLatencyUpdate?: (latency: any) => void
13
+ }
14
+
15
+ export const LoadingSpinner = ({ onLatencyUpdate }: LoadingSpinnerProps) => {
12
16
  const { rasaSpace } = useOurTheme()
13
17
  const isVoice = window.location.href.includes('browser_audio')
14
18
  const text = isVoice
@@ -27,7 +31,7 @@ export const LoadingSpinner = () => {
27
31
  {isVoice ? (
28
32
  <Button
29
33
  onClick={async () =>
30
- await createAudioConnection(window.location.href)
34
+ await createAudioConnection(window.location.href, onLatencyUpdate)
31
35
  }
32
36
  >
33
37
  Go
@@ -187,7 +187,7 @@ const setupAudioPlayback = async (socket: WebSocket): Promise<AudioQueue> => {
187
187
  }
188
188
 
189
189
  const addDataToAudioQueue =
190
- (audioQueue: AudioQueue) => (message: MessageEvent<any>) => {
190
+ (audioQueue: AudioQueue, onLatencyUpdate?: (latency: any) => void) => (message: MessageEvent<any>) => {
191
191
  try {
192
192
  const data = JSON.parse(message.data.toString())
193
193
  if (data['error']) {
@@ -199,6 +199,10 @@ const addDataToAudioQueue =
199
199
  const audioData = intToFloatArray(int32Data)
200
200
  audioQueue.write(audioData)
201
201
  } else if (data['marker']) {
202
+ if (data['latency'] && onLatencyUpdate) {
203
+ onLatencyUpdate(data['latency'])
204
+ }
205
+ console.log('Voice Latency Metrics:', data['latency'])
202
206
  audioQueue.addMarker(data['marker'])
203
207
  }
204
208
  } catch (error) {
@@ -231,8 +235,9 @@ function getWebSocketUrl(baseUrl: string) {
231
235
  * Creates a WebSocket connection for browser audio and streams microphone input to the server
232
236
  *
233
237
  * @param baseUrl - The base URL (e.g., "https://example.com" or "http://localhost:5005")
238
+ * @param onLatencyUpdate - Optional callback function to receive latency updates
234
239
  */
235
- export async function createAudioConnection(baseUrl: string) {
240
+ export async function createAudioConnection(baseUrl: string, onLatencyUpdate?: (latency: any) => void) {
236
241
  const websocketURL = getWebSocketUrl(baseUrl)
237
242
  const socket = new WebSocket(websocketURL)
238
243
 
@@ -241,5 +246,5 @@ export async function createAudioConnection(baseUrl: string) {
241
246
  }
242
247
 
243
248
  const audioQueue = await setupAudioPlayback(socket)
244
- socket.onmessage = addDataToAudioQueue(audioQueue)
249
+ socket.onmessage = addDataToAudioQueue(audioQueue, onLatencyUpdate)
245
250
  }
@@ -42,11 +42,19 @@ export interface Stack {
42
42
  ended: boolean
43
43
  }
44
44
 
45
+ export interface LatencyData {
46
+ rasa_processing_latency_ms?: number
47
+ asr_latency_ms?: number
48
+ tts_first_byte_latency_ms?: number
49
+ tts_complete_latency_ms?: number
50
+ }
51
+
45
52
  export interface Tracker {
46
53
  sender_id: string
47
54
  slots: { [key: string]: unknown }
48
55
  events: Event[]
49
56
  stack: Stack[]
57
+ latency?: LatencyData
50
58
  }
51
59
 
52
60
  export interface Flow {