rasa-pro 3.14.0.dev6__py3-none-any.whl → 3.14.0.dev8__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 (491) hide show
  1. rasa/agents/agent_manager.py +1 -1
  2. rasa/agents/constants.py +2 -2
  3. rasa/agents/exceptions.py +31 -1
  4. rasa/agents/protocol/a2a/a2a_agent.py +385 -227
  5. rasa/agents/protocol/mcp/mcp_base_agent.py +37 -19
  6. rasa/agents/protocol/mcp/mcp_open_agent.py +31 -8
  7. rasa/agents/protocol/mcp/mcp_task_agent.py +33 -10
  8. rasa/agents/schemas/agent_output.py +1 -1
  9. rasa/agents/utils.py +95 -1
  10. rasa/agents/validation.py +484 -0
  11. rasa/api.py +9 -6
  12. rasa/builder/README.md +120 -0
  13. rasa/builder/__init__.py +0 -0
  14. rasa/builder/auth.py +176 -0
  15. rasa/builder/config.py +92 -0
  16. rasa/builder/copilot/__init__.py +0 -0
  17. rasa/builder/copilot/constants.py +31 -0
  18. rasa/builder/copilot/copilot.py +450 -0
  19. rasa/builder/copilot/copilot_response_handler.py +522 -0
  20. rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
  21. rasa/builder/copilot/exceptions.py +32 -0
  22. rasa/builder/copilot/models.py +500 -0
  23. rasa/builder/copilot/prompts/__init__.py +0 -0
  24. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +766 -0
  25. rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +61 -0
  26. rasa/builder/copilot/signing.py +305 -0
  27. rasa/builder/copilot/telemetry.py +210 -0
  28. rasa/builder/copilot/templated_messages/__init__.py +0 -0
  29. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
  30. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +38 -0
  31. rasa/builder/document_retrieval/__init__.py +0 -0
  32. rasa/builder/document_retrieval/constants.py +15 -0
  33. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
  34. rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
  35. rasa/builder/document_retrieval/models.py +62 -0
  36. rasa/builder/download.py +140 -0
  37. rasa/builder/exceptions.py +91 -0
  38. rasa/builder/guardrails/__init__.py +1 -0
  39. rasa/builder/guardrails/constants.py +9 -0
  40. rasa/builder/guardrails/exceptions.py +4 -0
  41. rasa/builder/guardrails/lakera.py +206 -0
  42. rasa/builder/guardrails/models.py +231 -0
  43. rasa/builder/guardrails/store.py +238 -0
  44. rasa/builder/guardrails/utils.py +328 -0
  45. rasa/builder/job_manager.py +87 -0
  46. rasa/builder/jobs.py +282 -0
  47. rasa/builder/llm_service.py +246 -0
  48. rasa/builder/logging_utils.py +265 -0
  49. rasa/builder/main.py +243 -0
  50. rasa/builder/models.py +216 -0
  51. rasa/builder/project_generator.py +458 -0
  52. rasa/builder/project_info.py +72 -0
  53. rasa/builder/scrape_rasa_docs.py +97 -0
  54. rasa/builder/service.py +1345 -0
  55. rasa/builder/shared/tracker_context.py +212 -0
  56. rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
  57. rasa/builder/template_cache.py +244 -0
  58. rasa/builder/training_service.py +194 -0
  59. rasa/builder/validation_service.py +97 -0
  60. rasa/cli/arguments/train.py +2 -0
  61. rasa/cli/interactive.py +2 -0
  62. rasa/cli/project_templates/basic/README.md +23 -0
  63. rasa/cli/project_templates/basic/actions/__init__ +0 -0
  64. rasa/cli/project_templates/basic/actions/action_human_handoff.py +40 -0
  65. rasa/cli/project_templates/basic/actions/actions.md +10 -0
  66. rasa/cli/project_templates/basic/config.yml +29 -0
  67. rasa/cli/project_templates/basic/credentials.yml +33 -0
  68. rasa/cli/project_templates/basic/data/data.md +9 -0
  69. rasa/cli/project_templates/basic/data/general/feedback.yml +21 -0
  70. rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
  71. rasa/cli/project_templates/basic/data/general/hello.yml +6 -0
  72. rasa/cli/project_templates/basic/data/general/help.yml +6 -0
  73. rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
  74. rasa/cli/project_templates/basic/data/general/show_faqs.yml +6 -0
  75. rasa/cli/project_templates/basic/data/system/patterns/pattern_cannot_handle.yml +7 -0
  76. rasa/cli/project_templates/basic/data/system/patterns/pattern_completed.yml +7 -0
  77. rasa/cli/project_templates/basic/data/system/patterns/pattern_correction.yml +7 -0
  78. rasa/cli/project_templates/basic/data/system/patterns/pattern_search.yml +8 -0
  79. rasa/cli/project_templates/basic/data/system/patterns/pattern_session_start.yml +8 -0
  80. rasa/cli/project_templates/basic/docs/docs.md +5 -0
  81. rasa/cli/project_templates/basic/docs/template.txt +28 -0
  82. rasa/cli/project_templates/basic/domain/domain.md +8 -0
  83. rasa/cli/project_templates/basic/domain/general/feedback.yml +25 -0
  84. rasa/cli/project_templates/basic/domain/general/goodbye.yml +9 -0
  85. rasa/cli/project_templates/basic/domain/general/hello.yml +7 -0
  86. rasa/cli/project_templates/basic/domain/general/help.yml +21 -0
  87. rasa/cli/project_templates/basic/domain/general/human_handoff.yml +32 -0
  88. rasa/cli/project_templates/basic/domain/general/show_faqs.yml +14 -0
  89. rasa/cli/project_templates/basic/domain/system/patterns/pattern_cannot_handle.yml +5 -0
  90. rasa/cli/project_templates/basic/domain/system/patterns/pattern_session_start.yml +19 -0
  91. rasa/cli/project_templates/basic/endpoints.yml +67 -0
  92. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
  93. rasa/cli/project_templates/default/config.yml +4 -0
  94. rasa/cli/project_templates/default/endpoints.yml +4 -0
  95. rasa/cli/project_templates/finance/README.md +25 -0
  96. rasa/cli/project_templates/finance/actions/__init__.py +46 -0
  97. rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -0
  98. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
  99. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
  100. rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
  101. rasa/cli/project_templates/finance/actions/actions.md +15 -0
  102. rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -0
  103. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
  104. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
  105. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
  106. rasa/cli/project_templates/finance/actions/database.py +277 -0
  107. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  108. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
  109. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
  110. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
  111. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
  112. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
  113. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
  114. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
  115. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
  116. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
  117. rasa/cli/project_templates/finance/config.yml +23 -0
  118. rasa/cli/project_templates/finance/credentials.yml +32 -0
  119. rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
  120. rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
  121. rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
  122. rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
  123. rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
  124. rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
  125. rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
  126. rasa/cli/project_templates/finance/csvs/users.csv +4 -0
  127. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
  128. rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
  129. rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
  130. rasa/cli/project_templates/finance/data/data.md +11 -0
  131. rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
  132. rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
  133. rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
  134. rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
  135. rasa/cli/project_templates/finance/data/general/help.yml +9 -0
  136. rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
  137. rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
  138. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +5 -0
  139. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
  140. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
  141. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
  142. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
  143. rasa/cli/project_templates/finance/data/system/source/accounts.json +51 -0
  144. rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
  145. rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
  146. rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
  147. rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
  148. rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
  149. rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
  150. rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
  151. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
  152. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
  153. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
  154. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
  155. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
  156. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
  157. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
  158. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
  159. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
  160. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
  161. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
  162. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
  163. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
  164. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
  165. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
  166. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
  167. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
  168. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
  169. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
  170. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
  171. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
  172. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
  173. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
  174. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
  175. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
  176. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
  177. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
  178. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
  179. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
  180. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
  181. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
  182. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
  183. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
  184. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
  185. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
  186. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
  187. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
  188. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
  189. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
  190. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
  191. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
  192. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
  193. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
  194. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
  195. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
  196. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
  197. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
  198. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
  199. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
  200. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
  201. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
  202. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
  203. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
  204. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
  205. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
  206. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
  207. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
  208. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
  209. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
  210. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
  211. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
  212. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
  213. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
  214. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
  215. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
  216. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
  217. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
  218. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
  219. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
  220. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
  221. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
  222. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
  223. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
  224. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
  225. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
  226. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
  227. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
  228. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
  229. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
  230. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
  231. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
  232. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
  233. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
  234. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
  235. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
  236. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
  237. rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
  238. rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
  239. rasa/cli/project_templates/finance/domain/domain.md +10 -0
  240. rasa/cli/project_templates/finance/domain/general/agent_details.yml +12 -0
  241. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
  242. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
  243. rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
  244. rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
  245. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  246. rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
  247. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
  248. rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
  249. rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
  250. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
  251. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
  252. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
  253. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
  254. rasa/cli/project_templates/finance/endpoints.yml +66 -0
  255. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  256. rasa/cli/project_templates/telco/README.md +25 -0
  257. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  258. rasa/cli/project_templates/telco/actions/actions.md +12 -0
  259. rasa/cli/project_templates/telco/actions/billing/__init__.py +0 -0
  260. rasa/cli/project_templates/telco/actions/billing/actions_billing.py +204 -0
  261. rasa/cli/project_templates/telco/actions/general/__init__.py +0 -0
  262. rasa/cli/project_templates/telco/actions/general/action_human_handoff.py +49 -0
  263. rasa/cli/project_templates/telco/actions/network/__init__.py +0 -0
  264. rasa/cli/project_templates/telco/actions/network/actions_get_data_from_db.py +48 -0
  265. rasa/cli/project_templates/telco/actions/network/actions_run_diagnostics.py +28 -0
  266. rasa/cli/project_templates/telco/actions/network/actions_session_start.py +18 -0
  267. rasa/cli/project_templates/telco/config.yml +29 -0
  268. rasa/cli/project_templates/telco/credentials.yml +33 -0
  269. rasa/cli/project_templates/telco/csvs/billing.csv +19 -0
  270. rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
  271. rasa/cli/project_templates/telco/data/billing/flow_understand_bill.yml +45 -0
  272. rasa/cli/project_templates/telco/data/data.md +11 -0
  273. rasa/cli/project_templates/telco/data/general/bot_challenge.yml +6 -0
  274. rasa/cli/project_templates/telco/data/general/feedback.yml +20 -0
  275. rasa/cli/project_templates/telco/data/general/goodbye.yml +6 -0
  276. rasa/cli/project_templates/telco/data/general/hello.yml +6 -0
  277. rasa/cli/project_templates/telco/data/general/human_handoff.yml +16 -0
  278. rasa/cli/project_templates/telco/data/general/patterns.yml +30 -0
  279. rasa/cli/project_templates/telco/data/network/flow_reboot_router.yml +8 -0
  280. rasa/cli/project_templates/telco/data/network/flow_reset_router.yml +7 -0
  281. rasa/cli/project_templates/telco/data/network/flow_solve_internet_issue.yml +73 -0
  282. rasa/cli/project_templates/telco/docs/docs.md +5 -0
  283. rasa/cli/project_templates/telco/docs/network/reset_vs_rboot_router.txt +1 -0
  284. rasa/cli/project_templates/telco/docs/network/restart_router.txt +6 -0
  285. rasa/cli/project_templates/telco/docs/network/run_speed_test.txt +6 -0
  286. rasa/cli/project_templates/telco/domain/billing/understand_bill.yml +102 -0
  287. rasa/cli/project_templates/telco/domain/domain.md +14 -0
  288. rasa/cli/project_templates/telco/domain/general/bot_challenge.yml +4 -0
  289. rasa/cli/project_templates/telco/domain/general/feedback.yml +25 -0
  290. rasa/cli/project_templates/telco/domain/general/goodbye.yml +7 -0
  291. rasa/cli/project_templates/telco/domain/general/hello.yml +5 -0
  292. rasa/cli/project_templates/telco/domain/general/human_handoff.yml +26 -0
  293. rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
  294. rasa/cli/project_templates/telco/domain/network/reboot_router.yml +21 -0
  295. rasa/cli/project_templates/telco/domain/network/reset_router.yml +12 -0
  296. rasa/cli/project_templates/telco/domain/network/run_speed_test.yml +25 -0
  297. rasa/cli/project_templates/telco/domain/network/solve_internet_issue.yml +75 -0
  298. rasa/cli/project_templates/telco/domain/shared.yml +129 -0
  299. rasa/cli/project_templates/telco/endpoints.yml +67 -0
  300. rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
  301. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing/understand_bill.yml +67 -0
  302. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
  303. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/feedback.yml +46 -0
  304. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/goodbye.yml +9 -0
  305. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +8 -0
  306. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +35 -0
  307. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +23 -0
  308. rasa/cli/project_templates/telco/tests/e2e_test_cases/network/solve_internet_issue.yml +57 -0
  309. rasa/cli/project_templates/tutorial/config.yml +2 -1
  310. rasa/cli/scaffold.py +46 -2
  311. rasa/cli/train.py +2 -0
  312. rasa/cli/utils.py +85 -1
  313. rasa/core/actions/action.py +2 -7
  314. rasa/core/available_agents.py +49 -26
  315. rasa/core/available_endpoints.py +17 -2
  316. rasa/core/channels/channel.py +4 -3
  317. rasa/core/channels/constants.py +3 -0
  318. rasa/core/channels/development_inspector.py +2 -22
  319. rasa/core/channels/inspector/README.md +26 -14
  320. rasa/core/channels/inspector/dist/assets/{arc-63212852.js → arc-edef10dd.js} +1 -1
  321. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-eecf6b13.js → blockDiagram-38ab4fdb-49f6762b.js} +1 -1
  322. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-8f798a9a.js → c4Diagram-3d4e48cf-313c08e6.js} +1 -1
  323. rasa/core/channels/inspector/dist/assets/channel-63aa27d1.js +1 -0
  324. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-df71a04c.js → classDiagram-70f12bd4-35e41ce9.js} +1 -1
  325. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-9b275968.js → classDiagram-v2-f2320105-f346068d.js} +1 -1
  326. rasa/core/channels/inspector/dist/assets/clone-5566bae8.js +1 -0
  327. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-1c669cad.js → createText-2e5e7dd3-7a44bce8.js} +1 -1
  328. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b1553799.js → edges-e0da2a9e-d7cf78c7.js} +1 -1
  329. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-112388d6.js → erDiagram-9861fffd-9813e81c.js} +1 -1
  330. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-fdebec47.js → flowDb-956e92f1-d8ba0870.js} +1 -1
  331. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-6280ede1.js → flowDiagram-66a62f08-51f0db4d.js} +1 -1
  332. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-32936074.js +1 -0
  333. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-e1dc03e5.js → flowchart-elk-definition-4a651766-ff9ea384.js} +1 -1
  334. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-83f68c51.js → ganttDiagram-c361ad54-a8e13b6b.js} +1 -1
  335. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-22f8666f.js → gitGraphDiagram-72cf32ee-3b171c6d.js} +1 -1
  336. rasa/core/channels/inspector/dist/assets/{graph-ca9e6217.js → graph-790ef78b.js} +1 -1
  337. rasa/core/channels/inspector/dist/assets/{index-3862675e-c5ceb692.js → index-3862675e-ecdce073.js} +1 -1
  338. rasa/core/channels/inspector/dist/assets/index-d705da80.js +1352 -0
  339. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-faa9999b.js → infoDiagram-f8f76790-f5a422fe.js} +1 -1
  340. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-c4dda8d9.js → journeyDiagram-49397b02-3185b7ac.js} +1 -1
  341. rasa/core/channels/inspector/dist/assets/{layout-d4307784.js → layout-837fd3aa.js} +1 -1
  342. rasa/core/channels/inspector/dist/assets/{line-0567aaa7.js → line-7e05afcb.js} +1 -1
  343. rasa/core/channels/inspector/dist/assets/{linear-c11b95cf.js → linear-162eb295.js} +1 -1
  344. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-0c7d3ca9.js → mindmap-definition-fc14e90a-f4978aee.js} +1 -1
  345. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-34b433fa.js → pieDiagram-8a3498a8-b25d0a52.js} +1 -1
  346. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-4cab816e.js → quadrantDiagram-120e2f19-63db1afa.js} +1 -1
  347. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-8c22fa9e.js → requirementDiagram-deff3bca-1b486cc9.js} +1 -1
  348. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-70ce9e8e.js → sankeyDiagram-04a897e0-7e795291.js} +1 -1
  349. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-fbcd7fc9.js → sequenceDiagram-704730f1-b8aba159.js} +1 -1
  350. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-45f05ea6.js → stateDiagram-587899a1-41529fd5.js} +1 -1
  351. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-beab1ea6.js → stateDiagram-v2-d93cdb3a-b241043c.js} +1 -1
  352. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-2f29dbd5.js → styles-6aaf32cf-b5b53234.js} +1 -1
  353. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-951eac83.js → styles-9a916d00-13d138e5.js} +1 -1
  354. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-897fbfdd.js → styles-c10674c1-94cbde3f.js} +1 -1
  355. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-d667fac1.js → svgDrawCommon-08f97a94-453ae764.js} +1 -1
  356. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-e3205144.js → timeline-definition-85554ec2-8dcb88a4.js} +1 -1
  357. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-4abeb0e2.js → xychartDiagram-e933f94c-376af5f0.js} +1 -1
  358. rasa/core/channels/inspector/dist/index.html +2 -2
  359. rasa/core/channels/inspector/index.html +1 -1
  360. rasa/core/channels/inspector/src/App.tsx +42 -44
  361. rasa/core/channels/inspector/src/components/Chat.tsx +2 -3
  362. rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
  363. rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +8 -8
  364. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +20 -3
  365. rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +63 -35
  366. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +14 -0
  367. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
  368. rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
  369. rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
  370. rasa/core/channels/inspector/src/types.ts +49 -7
  371. rasa/core/channels/socketio.py +212 -51
  372. rasa/core/channels/studio_chat.py +59 -57
  373. rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
  374. rasa/core/channels/voice_stream/asr/azure.py +6 -3
  375. rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
  376. rasa/core/channels/voice_stream/audiocodes.py +3 -0
  377. rasa/core/channels/voice_stream/browser_audio.py +53 -3
  378. rasa/core/channels/voice_stream/genesys.py +2 -1
  379. rasa/core/channels/voice_stream/jambonz.py +9 -1
  380. rasa/core/channels/voice_stream/twilio_media_streams.py +16 -0
  381. rasa/core/channels/voice_stream/voice_channel.py +66 -3
  382. rasa/core/constants.py +6 -0
  383. rasa/core/iam_credentials_providers/__init__.py +0 -0
  384. rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +66 -0
  385. rasa/core/iam_credentials_providers/credentials_provider_protocol.py +89 -0
  386. rasa/core/policies/enterprise_search_policy.py +4 -7
  387. rasa/core/policies/flows/flow_executor.py +66 -36
  388. rasa/core/policies/ted_policy.py +7 -5
  389. rasa/core/processor.py +32 -0
  390. rasa/core/redis_connection_factory.py +411 -0
  391. rasa/core/run.py +13 -3
  392. rasa/core/tracker_stores/redis_tracker_store.py +32 -14
  393. rasa/core/tracker_stores/sql_tracker_store.py +57 -1
  394. rasa/dialogue_understanding/commands/cancel_flow_command.py +2 -81
  395. rasa/dialogue_understanding/commands/start_flow_command.py +18 -113
  396. rasa/dialogue_understanding/commands/utils.py +118 -0
  397. rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
  398. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +10 -5
  399. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +10 -5
  400. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +20 -12
  401. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +19 -12
  402. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +6 -35
  403. rasa/dialogue_understanding/patterns/cancel.py +27 -6
  404. rasa/dialogue_understanding/patterns/clarify.py +3 -14
  405. rasa/dialogue_understanding/patterns/continue_interrupted.py +185 -114
  406. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +18 -24
  407. rasa/dialogue_understanding/processor/command_processor.py +35 -0
  408. rasa/dialogue_understanding/stack/utils.py +43 -4
  409. rasa/dialogue_understanding/utils.py +24 -4
  410. rasa/engine/graph.py +5 -1
  411. rasa/engine/recipes/default_components.py +78 -10
  412. rasa/engine/recipes/default_recipe.py +41 -1
  413. rasa/engine/storage/local_model_storage.py +83 -3
  414. rasa/graph_components/validators/default_recipe_validator.py +153 -135
  415. rasa/model_manager/model_api.py +4 -5
  416. rasa/model_manager/runner_service.py +1 -1
  417. rasa/model_manager/socket_bridge.py +20 -15
  418. rasa/model_manager/trainer_service.py +12 -9
  419. rasa/model_manager/utils.py +1 -29
  420. rasa/model_manager/warm_rasa_process.py +1 -1
  421. rasa/model_training.py +22 -6
  422. rasa/nlu/classifiers/diet_classifier.py +22 -6
  423. rasa/nlu/classifiers/logistic_regression_classifier.py +18 -0
  424. rasa/nlu/extractors/extractor.py +1 -2
  425. rasa/shared/agents/auth/__init__.py +0 -0
  426. rasa/shared/agents/auth/agent_auth_factory.py +74 -0
  427. rasa/shared/agents/auth/agent_auth_manager.py +86 -0
  428. rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
  429. rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
  430. rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
  431. rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
  432. rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +159 -0
  433. rasa/shared/agents/auth/constants.py +11 -0
  434. rasa/shared/agents/auth/types.py +11 -0
  435. rasa/shared/constants.py +3 -0
  436. rasa/shared/core/constants.py +6 -6
  437. rasa/shared/core/domain.py +58 -11
  438. rasa/shared/core/events.py +2 -0
  439. rasa/shared/core/flows/constants.py +5 -0
  440. rasa/shared/core/flows/flow_step.py +7 -1
  441. rasa/shared/core/flows/flows_list.py +6 -0
  442. rasa/shared/core/flows/steps/call.py +15 -12
  443. rasa/shared/core/flows/validation.py +238 -44
  444. rasa/shared/core/flows/yaml_flows_io.py +15 -6
  445. rasa/shared/core/slots.py +4 -0
  446. rasa/shared/exceptions.py +12 -0
  447. rasa/shared/importers/importer.py +6 -0
  448. rasa/shared/importers/utils.py +77 -1
  449. rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
  450. rasa/shared/providers/_utils.py +60 -44
  451. rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
  452. rasa/shared/providers/llm/_base_litellm_client.py +2 -2
  453. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
  454. rasa/shared/providers/llm/llm_response.py +4 -4
  455. rasa/shared/utils/common.py +24 -0
  456. rasa/shared/utils/health_check/health_check.py +7 -3
  457. rasa/shared/utils/llm.py +2 -1
  458. rasa/shared/utils/mcp/server_connection.py +108 -27
  459. rasa/shared/utils/mcp/utils.py +20 -0
  460. rasa/studio/upload.py +16 -47
  461. rasa/telemetry.py +97 -23
  462. rasa/tracing/config.py +38 -12
  463. rasa/tracing/instrumentation/attribute_extractors.py +5 -1
  464. rasa/tracing/instrumentation/instrumentation.py +85 -8
  465. rasa/utils/common.py +1 -1
  466. rasa/utils/io.py +27 -9
  467. rasa/utils/json_utils.py +6 -1
  468. rasa/utils/log_utils.py +5 -1
  469. rasa/utils/openapi.py +144 -0
  470. rasa/utils/tensorflow/__init__.py +29 -0
  471. rasa/utils/tensorflow/callback.py +1 -1
  472. rasa/utils/tensorflow/crf.py +1 -1
  473. rasa/utils/tensorflow/data_generator.py +21 -8
  474. rasa/utils/tensorflow/layers.py +11 -4
  475. rasa/utils/tensorflow/metrics.py +7 -3
  476. rasa/utils/tensorflow/models.py +41 -6
  477. rasa/utils/tensorflow/rasa_layers.py +6 -4
  478. rasa/utils/tensorflow/transformer.py +2 -3
  479. rasa/utils/train_utils.py +68 -38
  480. rasa/validator.py +18 -16
  481. rasa/version.py +1 -1
  482. rasa_pro-3.14.0.dev8.dist-info/METADATA +199 -0
  483. {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/RECORD +486 -173
  484. rasa/core/channels/inspector/dist/assets/channel-0cd70adf.js +0 -1
  485. rasa/core/channels/inspector/dist/assets/clone-a0f9c4ed.js +0 -1
  486. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-de9cc4aa.js +0 -1
  487. rasa/core/channels/inspector/dist/assets/index-3e293924.js +0 -1353
  488. rasa_pro-3.14.0.dev6.dist-info/METADATA +0 -190
  489. {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/NOTICE +0 -0
  490. {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/WHEEL +0 -0
  491. {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/entry_points.txt +0 -0
@@ -5,32 +5,34 @@ import {
5
5
  useColorModeValue,
6
6
  useToast,
7
7
  } from '@chakra-ui/react'
8
- import { useEffect, useState, useCallback } 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 { DialogueHistoryStack } from './components/DialogueHistoryStack'
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
- flowStepTrail,
22
+ flowStepTrail, updateAgentsStatus,
22
23
  updatedActiveFrame,
23
24
  } from './helpers/utils'
24
- import queryString from 'query-string'
25
- import { Chat } from './components/Chat'
26
- import { LatencyDisplay } from './components/LatencyDisplay'
27
- import useWebSocket, { ReadyState } from 'react-use-websocket'
25
+ import { useOurTheme } from './theme'
26
+ import { Event, Flow, SelectedStack, Slot, Stack, Tracker, Agent } from './types'
27
+ import {DialogueAgentStack} from "./components/DialogueAgentStack.tsx";
28
+
28
29
 
29
30
  export function App() {
30
31
  const toast = useToast()
31
32
  const { rasaSpace, rasaRadii } = useOurTheme()
32
33
  const [rasaChatSessionId, setRasaChatSessionId] = useState<string>('')
33
34
  const [flows, setFlows] = useState<Flow[]>([])
35
+ const [agents, setAgents] = useState<Agent[]>([])
34
36
  const [slots, setSlots] = useState<Slot[]>([])
35
37
  const [events, setEvents] = useState<Event[]>([])
36
38
  const [story, setStory] = useState<string>('')
@@ -102,6 +104,23 @@ export function App() {
102
104
  })
103
105
  }, [toast])
104
106
 
107
+ useEffect(() => {
108
+ axios
109
+ .get('/sub-agents', { params: { token } })
110
+ .then((response) => setAgents((response.data)))
111
+ .catch((error) => {
112
+ if (toast.isActive('agents')) return
113
+ toast({
114
+ id: 'agents',
115
+ title: 'Agents could not be retrieved',
116
+ description: error?.message || 'An unknown error happened.',
117
+ status: 'error',
118
+ duration: 4000,
119
+ isClosable: true,
120
+ })
121
+ })
122
+ }, [toast])
123
+
105
124
  function fetchStory() {
106
125
  axios
107
126
  .get(`/conversations/${rasaChatSessionId}/story`, { params: { token } })
@@ -129,19 +148,13 @@ export function App() {
129
148
  !rasaChatSessionId ||
130
149
  lastJsonMessage?.sender_id === rasaChatSessionId
131
150
  ) {
132
- if (lastJsonMessage.latency) {
133
- console.log('Latency update:', lastJsonMessage.latency)
134
- setLatency((prevLatency: any) => ({
135
- ...prevLatency,
136
- ...lastJsonMessage.latency,
137
- }))
138
- }
139
151
  setSlots(formatSlots(lastJsonMessage.slots))
140
152
  setEvents(lastJsonMessage.events)
141
153
  const updatedStack = createHistoricalStack(
142
154
  lastJsonMessage.stack,
143
155
  lastJsonMessage.events,
144
156
  )
157
+ setAgents(prevAgents => updateAgentsStatus(prevAgents, lastJsonMessage.events))
145
158
  setStack(updatedStack)
146
159
  setFrame(updatedActiveFrame(frame, updatedStack, lastJsonMessage.events))
147
160
  setRasaChatSessionId(lastJsonMessage.sender_id)
@@ -184,21 +197,6 @@ export function App() {
184
197
  : 'max-content minmax(10rem, 17.5rem) minmax(10rem, auto)',
185
198
  gridRowGap: rasaSpace[1],
186
199
  }
187
- const rightColumnSx = {
188
- height: '100%',
189
- overflow: 'hidden',
190
- gridTemplateColumns: '1fr',
191
- gridTemplateRows: 'max-content 1fr',
192
- gridRowGap: rasaSpace[1],
193
- }
194
-
195
- const chatContainerSx = {
196
- ...borderRadiusSx,
197
- padding: rasaSpace[1],
198
- bg: useColorModeValue('neutral.50', 'neutral.50'),
199
- overflow: 'auto', // Allow scrolling for chat
200
- height: '100%',
201
- }
202
200
 
203
201
  const onFrameSelected = (stack: Stack) => {
204
202
  setFrame({
@@ -240,18 +238,23 @@ export function App() {
240
238
  {showRecruitmentPanel && (
241
239
  <RecruitmentPanel onClose={handleCloseRecruitmentPanel} />
242
240
  )}
243
- <DialogueStack
241
+ <DialogueHistoryStack
244
242
  sx={boxSx}
245
243
  stack={stack}
246
244
  active={frame?.stack}
247
245
  onItemClick={onFrameSelected}
248
246
  />
247
+ {agents.length > 0 ? (<DialogueAgentStack
248
+ sx={boxSx}
249
+ agents={agents}
250
+ />):null}
249
251
  <DialougeInformation
250
252
  sx={boxSx}
251
253
  rasaChatSessionId={rasaChatSessionId}
252
254
  slots={slots}
253
255
  events={events}
254
256
  story={story}
257
+ latency={latency}
255
258
  />
256
259
  </Grid>
257
260
  </GridItem>
@@ -263,16 +266,11 @@ export function App() {
263
266
  slots={slots}
264
267
  />
265
268
  </GridItem>
266
- <GridItem overflow="hidden">
267
- <Grid sx={rightColumnSx}>
268
- <LatencyDisplay latency={latency} sx={boxSx} />
269
- {shouldShowTranscript && (
270
- <GridItem sx={chatContainerSx}>
271
- <Chat events={events || []} />
272
- </GridItem>
273
- )}
274
- </Grid>
275
- </GridItem>
269
+ {shouldShowTranscript && (
270
+ <GridItem>
271
+ <Chat events={events || []} />
272
+ </GridItem>
273
+ )}
276
274
  </Grid>
277
275
  )
278
276
  }
@@ -5,7 +5,6 @@ import { Command, Event } from '../types'
5
5
 
6
6
  interface Props extends FlexProps {
7
7
  events: Event[]
8
- hasLatencyDisplay?: boolean
9
8
  }
10
9
 
11
10
  export const Chat = ({ sx, events, ...props }: Props) => {
@@ -13,9 +12,9 @@ export const Chat = ({ sx, events, ...props }: Props) => {
13
12
  ...sx,
14
13
  p: 0,
15
14
  flexDirection: 'column',
16
- height: '100%',
17
15
  }
18
16
 
17
+ const maxHeight = document.documentElement.scrollHeight - 64
19
18
  // 21 and 25 are the rem number we're using for the columns. We add 0.75rem for the padding
20
19
  // A potential improvement would be to add a onresize event for both width and height
21
20
  let remReference = 21.75
@@ -111,7 +110,7 @@ export const Chat = ({ sx, events, ...props }: Props) => {
111
110
  borderRadius: '10px',
112
111
  border: 'none',
113
112
  width: columnWidth,
114
- height: '100%',
113
+ height: maxHeight,
115
114
  }}
116
115
  history={messages}
117
116
  demo={true}
@@ -0,0 +1,108 @@
1
+ import {
2
+ Box,
3
+ FlexProps,
4
+ Heading,
5
+ Table,
6
+ Thead,
7
+ Tbody,
8
+ Tr,
9
+ Th,
10
+ Td,
11
+ Text,
12
+ Flex,
13
+ } from '@chakra-ui/react'
14
+ import { useOurTheme } from '../theme'
15
+ import {Agent, Stack} from '../types'
16
+
17
+ function mapStatusToHumanReadableName(status: Agent['status']) {
18
+ switch (status) {
19
+ case 'running':
20
+ return 'Running'
21
+ case 'completed':
22
+ return 'Completed'
23
+ case 'interrupted':
24
+ return 'Interrupted'
25
+ case 'cancelled':
26
+ return 'Cancelled'
27
+ default:
28
+ return '-'
29
+ }
30
+ }
31
+
32
+ interface Props extends FlexProps {
33
+ agents: Agent[]
34
+ active?: Stack
35
+ onItemClick?: (stack: Stack) => void
36
+ }
37
+
38
+ function AgentRow({
39
+ agent,
40
+ }: {
41
+ agent: Agent
42
+ }) {
43
+
44
+ return (
45
+ <Tr>
46
+ <Td>
47
+ <Text noOfLines={1}>{agent.name}</Text>
48
+ </Td>
49
+ <Td>
50
+ <Text noOfLines={1}>{mapStatusToHumanReadableName(agent.status)}</Text>
51
+ </Td>
52
+ </Tr>
53
+ )
54
+ }
55
+
56
+ export const DialogueAgentStack = ({
57
+ sx,
58
+ agents,
59
+ active,
60
+ onItemClick,
61
+ ...props
62
+ }: Props) => {
63
+ const { rasaSpace } = useOurTheme()
64
+
65
+ const containerSx = {
66
+ ...sx,
67
+ pr: 0,
68
+ pb: 0,
69
+ flexDirection: 'column',
70
+ }
71
+ const overflowBox = {
72
+ height: '100%',
73
+ overflow: 'auto',
74
+ pr: rasaSpace[1],
75
+ pb: rasaSpace[0.5],
76
+ }
77
+
78
+ return (
79
+ <Flex sx={containerSx} {...props}>
80
+ <Flex>
81
+ <Heading size="lg" mb={rasaSpace[0.5]}>
82
+ Agents
83
+ </Heading>
84
+ <Text ml={rasaSpace[0.25]}>({agents.length} {agents.length === 1 ? 'agent' : 'agents'})</Text>
85
+ </Flex>
86
+ <Box sx={overflowBox}>
87
+ <Table width="100%" layout="fixed">
88
+ <Thead>
89
+ <Tr>
90
+ <Th>Name</Th>
91
+ <Th width="40%">Status</Th>
92
+ </Tr>
93
+ </Thead>
94
+ <Tbody>
95
+ {agents.length > 0 &&
96
+ [...agents]
97
+ .reverse()
98
+ .map((agent) => (
99
+ <AgentRow
100
+ agent={agent}
101
+ />
102
+ ))}
103
+ </Tbody>
104
+ </Table>
105
+ </Box>
106
+ </Flex>
107
+ )
108
+ }
@@ -52,8 +52,6 @@ function StackRow({
52
52
  },
53
53
  }
54
54
 
55
- const agentOrStep = stack.agent_id ?? stack.step_id;
56
-
57
55
  return (
58
56
  <Tr
59
57
  sx={
@@ -67,19 +65,19 @@ function StackRow({
67
65
  </Tooltip>
68
66
  </Td>
69
67
  <Td>
70
- {shouldShowTooltip(agentOrStep) ? (
71
- <Tooltip label={`${agentOrStep} ${stack.agent_id && `(${stack.step_id})`}`} hasArrow>
72
- <Text noOfLines={1}>{agentOrStep}</Text>
68
+ {shouldShowTooltip(stack.step_id) ? (
69
+ <Tooltip label={stack.step_id} hasArrow>
70
+ <Text noOfLines={1}>{stack.step_id}</Text>
73
71
  </Tooltip>
74
72
  ) : (
75
- <Text noOfLines={1}>{agentOrStep}</Text>
73
+ <Text noOfLines={1}>{stack.step_id}</Text>
76
74
  )}
77
75
  </Td>
78
76
  </Tr>
79
77
  )
80
78
  }
81
79
 
82
- export const DialogueStack = ({
80
+ export const DialogueHistoryStack = ({
83
81
  sx,
84
82
  stack,
85
83
  active,
@@ -107,7 +105,7 @@ export const DialogueStack = ({
107
105
  <Heading size="lg" mb={rasaSpace[0.5]}>
108
106
  History
109
107
  </Heading>
110
- <Text ml={rasaSpace[0.25]}>({stack.length} flows)</Text>
108
+ <Text ml={rasaSpace[0.25]}>({stack.length} {stack.length === 1 ? 'flow' : 'flows'})</Text>
111
109
  </Flex>
112
110
  <Box sx={overflowBox}>
113
111
  <Table width="100%" layout="fixed">
@@ -120,6 +118,7 @@ export const DialogueStack = ({
120
118
  <Tbody>
121
119
  {stack.length > 0 &&
122
120
  [...stack]
121
+ .filter(frame => !frame.agent_id)
123
122
  .reverse()
124
123
  .map((stack) => (
125
124
  <StackRow
@@ -136,6 +135,7 @@ export const DialogueStack = ({
136
135
  flow_id: '-',
137
136
  step_id: '-',
138
137
  ended: false,
138
+ type: "flow"
139
139
  }}
140
140
  />
141
141
  )}
@@ -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()
@@ -92,6 +95,7 @@ export const DialougeInformation = ({
92
95
  }, [copiedText, toast])
93
96
 
94
97
  const testCases = formatTestCases(events, rasaChatSessionId)
98
+ const rasaLatency = getLastActionListenEvent(events)?.metadata?.execution_times
95
99
 
96
100
  return (
97
101
  <Flex sx={containerSx} {...props}>
@@ -105,6 +109,7 @@ export const DialougeInformation = ({
105
109
  <CustomTab>Slots</CustomTab>
106
110
  <CustomTab>End-2-end test</CustomTab>
107
111
  <CustomTab>Tracker state</CustomTab>
112
+ <CustomTab>Latency</CustomTab>
108
113
  </TabList>
109
114
  <TabPanels height="100%" overflow="hidden">
110
115
  <TabPanel sx={tabPanelSx}>
@@ -160,6 +165,14 @@ export const DialougeInformation = ({
160
165
  </FullscreenButton>
161
166
  </HStack>
162
167
  </TabPanel>
168
+ <TabPanel sx={tabPanelSx}>
169
+ <Box sx={overflowBox}>
170
+ <LatencyDisplay
171
+ voiceLatency={latency}
172
+ rasaLatency={rasaLatency}
173
+ />
174
+ </Box>
175
+ </TabPanel>
163
176
  </TabPanels>
164
177
  </Tabs>
165
178
  </Flex>
@@ -185,3 +198,7 @@ const CustomTab = (props: TabProps) => {
185
198
  </Button>
186
199
  )
187
200
  }
201
+
202
+ const getLastActionListenEvent = (events: Event[]): Event | undefined => {
203
+ return [...events].reverse().find((event) => event.name === 'action_listen')
204
+ }
@@ -2,40 +2,47 @@ import {
2
2
  Box,
3
3
  Flex,
4
4
  FlexProps,
5
- Text,
6
- useColorModeValue,
7
- Tooltip,
8
5
  Table,
9
6
  Tbody,
10
- Tr,
11
7
  Td,
8
+ Text,
9
+ Tooltip,
10
+ Tr,
11
+ useColorModeValue,
12
12
  } from '@chakra-ui/react'
13
13
  import { useOurTheme } from '../theme'
14
- import { LatencyData } from '../types'
14
+ import {
15
+ isRasaLatency,
16
+ isVoiceLatency,
17
+ RasaLatency,
18
+ VoiceLatency,
19
+ } from '../types'
15
20
 
16
- interface Props extends FlexProps {
17
- latency: LatencyData
21
+ interface MinimalDisplayProps extends FlexProps {
22
+ latency: RasaLatency
18
23
  }
19
24
 
20
25
  /**
21
26
  * Simple latency display for text-only conversations.
22
27
  * Shows a single response time value.
23
28
  */
24
- const MinimalDisplay = ({ latency, sx, ...props }: Props) => {
29
+ const MinimalDisplay = ({ latency, sx, ...props }: MinimalDisplayProps) => {
25
30
  const containerSx = {
26
31
  ...sx,
27
32
  display: 'flex',
28
33
  alignItems: 'center',
29
34
  }
30
-
35
+
31
36
  const getLatencyColor = (latency: number) => {
32
37
  if (latency < 1500) return 'green.500'
33
38
  if (latency < 2500) return 'orange.500'
34
39
  return 'red.500'
35
40
  }
36
-
37
- const value = Math.round(latency.rasa_processing_latency_ms || 0);
38
- const color = getLatencyColor(value);
41
+
42
+ const value = Math.round(
43
+ (latency.command_processor || 0) + (latency.prediction_loop || 0),
44
+ )
45
+ const color = getLatencyColor(value)
39
46
 
40
47
  return (
41
48
  <Flex sx={containerSx} {...props}>
@@ -49,11 +56,15 @@ const MinimalDisplay = ({ latency, sx, ...props }: Props) => {
49
56
  )
50
57
  }
51
58
 
59
+ interface WaterfallDisplayProps extends FlexProps {
60
+ latency: VoiceLatency
61
+ }
62
+
52
63
  /**
53
64
  * Detailed latency waterfall chart for voice conversations.
54
65
  * Displays processing times for ASR, Rasa, and TTS components.
55
66
  */
56
- const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
67
+ const WaterfallDisplay = ({ latency, sx, ...props }: WaterfallDisplayProps) => {
57
68
  const { rasaSpace } = useOurTheme()
58
69
 
59
70
  const containerSx = {
@@ -61,13 +72,13 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
61
72
  flexDirection: 'column',
62
73
  gap: rasaSpace[1],
63
74
  }
64
-
75
+
65
76
  const headerSx = {
66
77
  fontSize: 'sm',
67
78
  fontWeight: 'bold',
68
79
  color: useColorModeValue('gray.700', 'gray.300'),
69
80
  }
70
-
81
+
71
82
  const waterfallBarSx = {
72
83
  height: '24px',
73
84
  borderRadius: '4px',
@@ -75,10 +86,10 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
75
86
  border: '1px solid',
76
87
  borderColor: useColorModeValue('gray.200', 'gray.600'),
77
88
  }
78
-
89
+
79
90
  const legendTableSx = {
80
91
  size: 'sm',
81
- mt: rasaSpace[0.5]
92
+ mt: rasaSpace[0.5],
82
93
  }
83
94
 
84
95
  const getLatencyColor = (type: string) => {
@@ -95,8 +106,10 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
95
106
  const descriptions: { [key: string]: string } = {
96
107
  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
108
  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.'
109
+ tts_first:
110
+ 'Time between the request sent to Text-to-Speech processing and the first byte of audio received by Rasa.',
111
+ tts_complete:
112
+ '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
113
  }
101
114
  return descriptions[type] || ''
102
115
  }
@@ -151,10 +164,10 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
151
164
  )
152
165
 
153
166
  // 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
-
167
+ const totalDisplayLatency =
168
+ (latency.rasa_processing_latency_ms || 0) +
169
+ (latency.tts_first_byte_latency_ms || 0)
170
+
158
171
  return (
159
172
  <Flex sx={containerSx} {...props}>
160
173
  <Text sx={headerSx}>
@@ -241,28 +254,43 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
241
254
  )
242
255
  }
243
256
 
257
+ interface LatencyDisplayProps extends FlexProps {
258
+ voiceLatency?: any
259
+ rasaLatency?: any
260
+ }
261
+
244
262
  /**
245
263
  * Displays processing latency information for the conversation.
246
- * Shows either a detailed waterfall chart for voice conversations or
264
+ * Shows either a detailed waterfall chart for voice conversations or
247
265
  * a simpler display for text-only conversations.
248
266
  */
249
267
  export const LatencyDisplay = ({
250
268
  sx,
251
- latency,
269
+ voiceLatency,
270
+ rasaLatency,
252
271
  ...props
253
- }: Props) => {
254
- if (!latency) {
255
- console.warn('Latency data is not available')
256
- return null
272
+ }: LatencyDisplayProps) => {
273
+ // We give priority to voice latency as most comprehensive.
274
+ if (isVoiceLatency(voiceLatency)) {
275
+ return <WaterfallDisplay latency={voiceLatency} sx={sx} {...props} />
257
276
  }
258
277
 
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
278
+ // If voice latency is not available, we use rasa latency.
279
+ if (isRasaLatency(rasaLatency)) {
280
+ return <MinimalDisplay latency={rasaLatency} sx={sx} {...props} />
281
+ }
262
282
 
263
- if (isVoiceMetricsAvailable) {
264
- return <WaterfallDisplay latency={latency} sx={sx} {...props} />
283
+ // If rasa latency is not available, we are either waiting for first data from voice stream or the conversation is not started yet.
284
+ if (!rasaLatency) {
285
+ return <Text>Rasa latency data is not available yet</Text>
265
286
  }
266
287
 
267
- return <MinimalDisplay latency={latency} sx={sx} {...props} />
288
+ // If rasa latency is available but did not pass type guard, we are in an unexpected state
289
+ // and we should log an error but gracefully fallback to showing no data.
290
+ console.warn(
291
+ `Latency data has unexpected format. Raw data of rasaLatency: ${rasaLatency},
292
+ raw data of voice latency: ${voiceLatency}`,
293
+ )
294
+
295
+ return <Text>Latency data is not available yet</Text>
268
296
  }
@@ -52,6 +52,7 @@ interface AudioQueue {
52
52
  addMarker: (id: string) => void
53
53
  reduceMarkers: (bytesRead: number) => void
54
54
  popMarkers: () => void
55
+ clear: () => void
55
56
  }
56
57
 
57
58
  const createAudioQueue = (socket: WebSocket): AudioQueue => {
@@ -108,6 +109,14 @@ const createAudioQueue = (socket: WebSocket): AudioQueue => {
108
109
  }
109
110
  })
110
111
  },
112
+
113
+ /**
114
+ * Clears the audio queue, removing all buffered audio and markers.
115
+ */
116
+ clear: function () {
117
+ this.buffer = new Float32Array(0)
118
+ this.marks = []
119
+ },
111
120
  }
112
121
  }
113
122
 
@@ -204,7 +213,12 @@ const addDataToAudioQueue =
204
213
  }
205
214
  console.log('Voice Latency Metrics:', data['latency'])
206
215
  audioQueue.addMarker(data['marker'])
216
+ } else if (data['interruptPlayback']) {
217
+ // User interrupted the bot, immediately clear the audio queue
218
+ audioQueue.clear()
219
+ console.log('Audio queue cleared due to user interruption.')
207
220
  }
221
+
208
222
  } catch (error) {
209
223
  console.error('Error processing server incoming audio data:', error)
210
224
  }
@@ -294,6 +294,7 @@ describe('helpers', () => {
294
294
  step_id: 'step_id',
295
295
  collect: fieldValue,
296
296
  ended: false,
297
+ type: 'flow',
297
298
  }),
298
299
  ).toEqual(fieldValue)
299
300
  })
@@ -307,6 +308,7 @@ describe('helpers', () => {
307
308
  flow_id: 'flow_id',
308
309
  step_id: 'step_id',
309
310
  ended: false,
311
+ type: 'flow',
310
312
  }),
311
313
  ).toEqual(fieldValue)
312
314
  })
@@ -321,6 +323,7 @@ describe('helpers', () => {
321
323
  step_id: 'step_id',
322
324
  collect: fieldValue,
323
325
  ended: false,
326
+ type: 'flow',
324
327
  }),
325
328
  ).toEqual(`${fieldValue} is not null`)
326
329
  })
@@ -335,6 +338,7 @@ describe('helpers', () => {
335
338
  step_id: 'step_id',
336
339
  collect: fieldValue,
337
340
  ended: false,
341
+ type: 'flow',
338
342
  }),
339
343
  ).toEqual(`not ${fieldValue}`)
340
344
  })