rasa-pro 3.14.0.dev20250901__py3-none-any.whl → 3.14.0rc1__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 (584) hide show
  1. rasa/__main__.py +15 -3
  2. rasa/agents/__init__.py +0 -0
  3. rasa/agents/agent_factory.py +122 -0
  4. rasa/agents/agent_manager.py +211 -0
  5. rasa/agents/constants.py +43 -0
  6. rasa/agents/core/__init__.py +0 -0
  7. rasa/agents/core/agent_protocol.py +107 -0
  8. rasa/agents/core/types.py +81 -0
  9. rasa/agents/exceptions.py +38 -0
  10. rasa/agents/protocol/__init__.py +5 -0
  11. rasa/agents/protocol/a2a/__init__.py +0 -0
  12. rasa/agents/protocol/a2a/a2a_agent.py +879 -0
  13. rasa/agents/protocol/mcp/__init__.py +0 -0
  14. rasa/agents/protocol/mcp/mcp_base_agent.py +726 -0
  15. rasa/agents/protocol/mcp/mcp_open_agent.py +327 -0
  16. rasa/agents/protocol/mcp/mcp_task_agent.py +522 -0
  17. rasa/agents/schemas/__init__.py +13 -0
  18. rasa/agents/schemas/agent_input.py +38 -0
  19. rasa/agents/schemas/agent_output.py +26 -0
  20. rasa/agents/schemas/agent_tool_result.py +65 -0
  21. rasa/agents/schemas/agent_tool_schema.py +186 -0
  22. rasa/agents/templates/__init__.py +0 -0
  23. rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +20 -0
  24. rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +22 -0
  25. rasa/agents/utils.py +206 -0
  26. rasa/agents/validation.py +485 -0
  27. rasa/api.py +24 -9
  28. rasa/builder/config.py +7 -2
  29. rasa/builder/copilot/constants.py +3 -0
  30. rasa/builder/copilot/copilot.py +128 -54
  31. rasa/builder/copilot/models.py +39 -3
  32. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +183 -188
  33. rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +61 -0
  34. rasa/builder/copilot/telemetry.py +46 -20
  35. rasa/builder/document_retrieval/models.py +3 -3
  36. rasa/builder/download.py +1 -8
  37. rasa/builder/guardrails/{lakera.py → clients.py} +55 -5
  38. rasa/builder/guardrails/constants.py +3 -0
  39. rasa/builder/guardrails/models.py +45 -10
  40. rasa/builder/guardrails/policy_checker.py +324 -0
  41. rasa/builder/guardrails/utils.py +42 -276
  42. rasa/builder/jobs.py +33 -21
  43. rasa/builder/llm_service.py +32 -5
  44. rasa/builder/main.py +38 -62
  45. rasa/builder/models.py +8 -7
  46. rasa/builder/project_generator.py +149 -148
  47. rasa/builder/service.py +58 -40
  48. rasa/builder/template_cache.py +69 -0
  49. rasa/builder/training_service.py +84 -20
  50. rasa/builder/validation_service.py +1 -1
  51. rasa/cli/arguments/default_arguments.py +12 -0
  52. rasa/cli/arguments/run.py +2 -0
  53. rasa/cli/arguments/train.py +2 -0
  54. rasa/cli/data.py +10 -8
  55. rasa/cli/dialogue_understanding_test.py +10 -7
  56. rasa/cli/e2e_test.py +9 -6
  57. rasa/cli/evaluate.py +4 -2
  58. rasa/cli/export.py +5 -2
  59. rasa/cli/inspect.py +8 -4
  60. rasa/cli/interactive.py +5 -4
  61. rasa/cli/llm_fine_tuning.py +11 -6
  62. rasa/cli/project_templates/basic/README.md +23 -0
  63. rasa/cli/project_templates/basic/actions/actions.md +10 -0
  64. rasa/cli/project_templates/basic/config.yml +6 -4
  65. rasa/cli/project_templates/basic/data/data.md +5 -6
  66. rasa/cli/project_templates/basic/domain/domain.md +7 -5
  67. rasa/cli/project_templates/basic/domain/general/show_faqs.yml +1 -1
  68. rasa/cli/project_templates/basic/endpoints.yml +5 -1
  69. rasa/cli/project_templates/default/config.yml +4 -0
  70. rasa/cli/project_templates/default/endpoints.yml +4 -0
  71. rasa/cli/project_templates/finance/README.md +26 -0
  72. rasa/cli/project_templates/finance/actions/__init__.py +0 -46
  73. rasa/cli/project_templates/finance/actions/accounts/check_balance.py +18 -0
  74. rasa/cli/project_templates/finance/actions/actions.md +15 -0
  75. rasa/cli/project_templates/finance/actions/{transfers/action_process_immediate_payment.py → cards/check_that_card_exists.py} +6 -3
  76. rasa/cli/project_templates/finance/actions/cards/list_cards.py +22 -0
  77. rasa/cli/project_templates/finance/actions/contacts/__init__.py +0 -0
  78. rasa/cli/project_templates/finance/actions/contacts/add_contact.py +30 -0
  79. rasa/cli/project_templates/finance/actions/contacts/list_contacts.py +22 -0
  80. rasa/cli/project_templates/finance/actions/contacts/remove_contact.py +35 -0
  81. rasa/cli/project_templates/finance/actions/db.py +117 -0
  82. rasa/cli/project_templates/finance/actions/general/__init__.py +0 -0
  83. rasa/cli/project_templates/finance/actions/general/action_human_handoff.py +49 -0
  84. rasa/cli/project_templates/finance/actions/transfers/check_transfer_funds.py +27 -0
  85. rasa/cli/project_templates/finance/actions/transfers/check_transfer_limit.py +36 -0
  86. rasa/cli/project_templates/finance/actions/transfers/execute_recurrent_payment.py +20 -0
  87. rasa/cli/project_templates/finance/actions/transfers/execute_transfer.py +45 -0
  88. rasa/cli/project_templates/finance/actions/transfers/list_transactions.py +32 -0
  89. rasa/cli/project_templates/finance/config.yml +8 -0
  90. rasa/cli/project_templates/finance/credentials.yml +7 -6
  91. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +3 -4
  92. rasa/cli/project_templates/finance/data/accounts/download_statements.yml +26 -0
  93. rasa/cli/project_templates/finance/data/bills/bill_pay_reminder.yml +25 -0
  94. rasa/cli/project_templates/finance/data/cards/activate_card.yml +35 -0
  95. rasa/cli/project_templates/finance/data/cards/block_card.yml +37 -58
  96. rasa/cli/project_templates/finance/data/cards/list_cards.yml +14 -0
  97. rasa/cli/project_templates/finance/data/cards/replace_card.yml +16 -0
  98. rasa/cli/project_templates/finance/data/cards/replace_eligible_card.yml +29 -0
  99. rasa/cli/project_templates/finance/data/contacts/add_contact.yml +33 -0
  100. rasa/cli/project_templates/finance/data/contacts/list_contacts.yml +14 -0
  101. rasa/cli/project_templates/finance/data/contacts/remove_contact.yml +31 -0
  102. rasa/cli/project_templates/finance/data/data.md +14 -0
  103. rasa/cli/project_templates/finance/data/general/bot_challenge.yml +6 -0
  104. rasa/cli/project_templates/finance/data/general/goodbye.yml +1 -1
  105. rasa/cli/project_templates/finance/data/general/hello.yml +1 -2
  106. rasa/cli/project_templates/finance/data/general/help.yml +2 -2
  107. rasa/cli/project_templates/finance/data/general/human_handoff.yml +2 -2
  108. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +1 -1
  109. rasa/cli/project_templates/finance/data/transfers/check_transfer_limit.yml +18 -0
  110. rasa/cli/project_templates/finance/data/transfers/list_transactions.yml +46 -0
  111. rasa/cli/project_templates/finance/data/transfers/move_money_between_accounts.yml +51 -0
  112. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +29 -62
  113. rasa/cli/project_templates/finance/data/transfers/transfer_money_to_a_third_party.yml +175 -0
  114. rasa/cli/project_templates/finance/db/cards.json +18 -0
  115. rasa/cli/project_templates/finance/db/contacts.json +10 -0
  116. rasa/cli/project_templates/finance/db/my_account.json +6 -0
  117. rasa/cli/project_templates/finance/db/transactions.json +22 -0
  118. rasa/cli/project_templates/finance/docs/docs.md +8 -0
  119. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/budgeting_analytics.txt +22 -0
  120. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/multi_currency_accounts.txt +19 -0
  121. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/premium_benefits.txt +19 -0
  122. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/contactless_limits.txt +16 -0
  123. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/freeze_unfreeze_card.txt +16 -0
  124. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/lost_stolen_card.txt +19 -0
  125. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/money_transfers/instant_payments.txt +19 -0
  126. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/money_transfers/international_transfers.txt +19 -0
  127. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/security_fraud/fraud_protection.txt +22 -0
  128. rasa/cli/project_templates/finance/docs/fenlo_banking_faq/security_fraud/secure_payments.txt +22 -0
  129. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +9 -5
  130. rasa/cli/project_templates/finance/domain/accounts/download_statements.yml +40 -0
  131. rasa/cli/project_templates/finance/domain/bills/bill_pay_reminder.yml +49 -0
  132. rasa/cli/project_templates/finance/domain/cards/activate_card.yml +24 -0
  133. rasa/cli/project_templates/finance/domain/cards/block_card.yml +33 -90
  134. rasa/cli/project_templates/finance/domain/cards/list_cards.yml +16 -0
  135. rasa/cli/project_templates/finance/domain/cards/replace_card.yml +43 -0
  136. rasa/cli/project_templates/finance/domain/cards/shared.yml +15 -0
  137. rasa/cli/project_templates/finance/domain/contacts/add_contact.yml +37 -0
  138. rasa/cli/project_templates/finance/domain/contacts/list_contacts.yml +16 -0
  139. rasa/cli/project_templates/finance/domain/contacts/remove_contact.yml +32 -0
  140. rasa/cli/project_templates/finance/domain/domain.md +18 -0
  141. rasa/cli/project_templates/finance/domain/general/_shared.yml +39 -0
  142. rasa/cli/project_templates/finance/domain/general/bot_challenge.yml +4 -0
  143. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -2
  144. rasa/cli/project_templates/finance/domain/general/feedback.yml +0 -3
  145. rasa/cli/project_templates/finance/domain/general/goodbye.yml +6 -6
  146. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +10 -9
  147. rasa/cli/project_templates/finance/domain/general/welcome.yml +33 -2
  148. rasa/cli/project_templates/finance/domain/transfers/check_transfer_limit.yml +32 -0
  149. rasa/cli/project_templates/finance/domain/transfers/list_transactions.yml +44 -0
  150. rasa/cli/project_templates/finance/domain/transfers/shared.yml +17 -0
  151. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +203 -61
  152. rasa/cli/project_templates/finance/endpoints.yml +8 -4
  153. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +31 -12
  154. rasa/cli/project_templates/finance/tests/e2e_test_cases/accounts/check_balance.yml +9 -0
  155. rasa/cli/project_templates/finance/tests/e2e_test_cases/accounts/download_statements.yml +43 -0
  156. rasa/cli/project_templates/finance/tests/e2e_test_cases/cards/block_card.yml +55 -0
  157. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
  158. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/feedback.yml +46 -0
  159. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/goodbye.yml +9 -0
  160. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/hello.yml +8 -0
  161. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/human_handoff.yml +35 -0
  162. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/patterns.yml +22 -0
  163. rasa/cli/project_templates/finance/tests/e2e_test_cases/transfers/transfer_money.yml +56 -0
  164. rasa/cli/project_templates/telco/README.md +25 -0
  165. rasa/cli/project_templates/telco/actions/actions.md +12 -0
  166. rasa/cli/project_templates/telco/config.yml +6 -4
  167. rasa/cli/project_templates/telco/data/data.md +11 -0
  168. rasa/cli/project_templates/telco/data/general/human_handoff.yml +1 -1
  169. rasa/cli/project_templates/telco/docs/docs.md +3 -0
  170. rasa/cli/project_templates/telco/domain/domain.md +13 -0
  171. rasa/cli/project_templates/telco/domain/general/human_handoff.yml +3 -6
  172. rasa/cli/project_templates/telco/endpoints.yml +5 -1
  173. rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +1 -1
  174. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing/understand_bill.yml +67 -0
  175. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
  176. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/feedback.yml +46 -0
  177. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/goodbye.yml +9 -0
  178. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +8 -0
  179. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +35 -0
  180. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +23 -0
  181. rasa/cli/project_templates/telco/tests/e2e_test_cases/network/solve_internet_issue.yml +57 -0
  182. rasa/cli/project_templates/tutorial/credentials.yml +10 -0
  183. rasa/cli/run.py +12 -10
  184. rasa/cli/scaffold.py +4 -4
  185. rasa/cli/shell.py +9 -5
  186. rasa/cli/studio/studio.py +1 -1
  187. rasa/cli/test.py +34 -14
  188. rasa/cli/train.py +41 -28
  189. rasa/cli/utils.py +1 -393
  190. rasa/cli/validation/__init__.py +0 -0
  191. rasa/cli/validation/bot_config.py +223 -0
  192. rasa/cli/validation/config_path_validation.py +257 -0
  193. rasa/cli/x.py +8 -4
  194. rasa/constants.py +7 -1
  195. rasa/core/actions/action.py +51 -10
  196. rasa/core/actions/action_run_slot_rejections.py +1 -1
  197. rasa/core/actions/direct_custom_actions_executor.py +9 -2
  198. rasa/core/actions/grpc_custom_action_executor.py +1 -1
  199. rasa/core/agent.py +19 -2
  200. rasa/core/available_agents.py +229 -0
  201. rasa/core/brokers/broker.py +1 -1
  202. rasa/core/brokers/kafka.py +52 -8
  203. rasa/core/channels/__init__.py +82 -35
  204. rasa/core/channels/development_inspector.py +4 -24
  205. rasa/core/channels/hangouts.py +2 -2
  206. rasa/core/channels/inspector/README.md +25 -13
  207. rasa/core/channels/inspector/dist/assets/{arc-18042c22.js → arc-6177260a.js} +1 -1
  208. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-fdd6bcfa.js → blockDiagram-38ab4fdb-b054f038.js} +1 -1
  209. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-f5ae6786.js → c4Diagram-3d4e48cf-f25427d5.js} +1 -1
  210. rasa/core/channels/inspector/dist/assets/channel-bf9cbb34.js +1 -0
  211. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-81efba3e.js → classDiagram-70f12bd4-c7a2af53.js} +1 -1
  212. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-3b6b6a92.js → classDiagram-v2-f2320105-58db65c0.js} +1 -1
  213. rasa/core/channels/inspector/dist/assets/clone-8f9083bb.js +1 -0
  214. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-31422447.js → createText-2e5e7dd3-088372e2.js} +1 -1
  215. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-518a90db.js → edges-e0da2a9e-58676240.js} +1 -1
  216. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-a6d3c25a.js → erDiagram-9861fffd-0c14d7c6.js} +1 -1
  217. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e048c2be.js → flowDb-956e92f1-ea63f85c.js} +1 -1
  218. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-c7474c91.js → flowDiagram-66a62f08-a2af48cd.js} +1 -1
  219. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-9ecd5b59.js +1 -0
  220. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-cb4d8723.js → flowchart-elk-definition-4a651766-6937abe7.js} +1 -1
  221. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-346636a2.js → ganttDiagram-c361ad54-7473f357.js} +1 -1
  222. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-7c508874.js → gitGraphDiagram-72cf32ee-d0c9405e.js} +1 -1
  223. rasa/core/channels/inspector/dist/assets/{graph-14702d8a.js → graph-0a6f8466.js} +1 -1
  224. rasa/core/channels/inspector/dist/assets/{index-3862675e-f18b534b.js → index-3862675e-7610671a.js} +1 -1
  225. rasa/core/channels/inspector/dist/assets/index-74e01d94.js +1354 -0
  226. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-64154b83.js → infoDiagram-f8f76790-be397dc7.js} +1 -1
  227. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-833a5f95.js → journeyDiagram-49397b02-4cefbf62.js} +1 -1
  228. rasa/core/channels/inspector/dist/assets/{layout-5a3b2123.js → layout-e7fbc2bf.js} +1 -1
  229. rasa/core/channels/inspector/dist/assets/{line-2272a8c7.js → line-a8aa457c.js} +1 -1
  230. rasa/core/channels/inspector/dist/assets/{linear-35bcf273.js → linear-3351e0d2.js} +1 -1
  231. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-92dcb0e9.js → mindmap-definition-fc14e90a-b8cbf605.js} +1 -1
  232. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-94dbc900.js → pieDiagram-8a3498a8-f327f774.js} +1 -1
  233. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-8b7a9c33.js → quadrantDiagram-120e2f19-2854c591.js} +1 -1
  234. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-6f7eab81.js → requirementDiagram-deff3bca-964985d5.js} +1 -1
  235. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-f43e581d.js → sankeyDiagram-04a897e0-edeb4f33.js} +1 -1
  236. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-0bcbefc3.js → sequenceDiagram-704730f1-fcf70125.js} +1 -1
  237. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-b8a74083.js → stateDiagram-587899a1-0e770395.js} +1 -1
  238. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-2070218f.js → stateDiagram-v2-d93cdb3a-af8dcd22.js} +1 -1
  239. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-f1d54e34.js → styles-6aaf32cf-36a9e70d.js} +1 -1
  240. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-980de489.js → styles-9a916d00-884a8b5b.js} +1 -1
  241. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-3c03abde.js → styles-c10674c1-dc097813.js} +1 -1
  242. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-46ba068f.js → svgDrawCommon-08f97a94-5a2c7eed.js} +1 -1
  243. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-901f5e3d.js → timeline-definition-85554ec2-e89c4f6e.js} +1 -1
  244. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-acbc628a.js → xychartDiagram-e933f94c-afb6fe56.js} +1 -1
  245. rasa/core/channels/inspector/dist/index.html +1 -1
  246. rasa/core/channels/inspector/package.json +18 -18
  247. rasa/core/channels/inspector/src/App.tsx +34 -35
  248. rasa/core/channels/inspector/src/components/Chat.tsx +2 -3
  249. rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
  250. rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +4 -2
  251. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +9 -1
  252. rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +63 -35
  253. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +20 -3
  254. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
  255. rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
  256. rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
  257. rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
  258. rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
  259. rasa/core/channels/inspector/src/types.ts +53 -7
  260. rasa/core/channels/inspector/yarn.lock +336 -189
  261. rasa/core/channels/studio_chat.py +29 -47
  262. rasa/core/channels/telegram.py +4 -9
  263. rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
  264. rasa/core/channels/voice_stream/asr/azure.py +6 -3
  265. rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
  266. rasa/core/channels/voice_stream/audiocodes.py +3 -0
  267. rasa/core/channels/voice_stream/browser_audio.py +55 -3
  268. rasa/core/channels/voice_stream/genesys.py +3 -2
  269. rasa/core/channels/voice_stream/jambonz.py +9 -1
  270. rasa/core/channels/voice_stream/tts/deepgram.py +140 -0
  271. rasa/core/channels/voice_stream/twilio_media_streams.py +21 -1
  272. rasa/core/channels/voice_stream/voice_channel.py +64 -0
  273. rasa/core/concurrent_lock_store.py +66 -16
  274. rasa/core/config/__init__.py +0 -0
  275. rasa/core/{available_endpoints.py → config/available_endpoints.py} +51 -16
  276. rasa/core/config/configuration.py +260 -0
  277. rasa/core/config/credentials.py +19 -0
  278. rasa/core/config/message_procesing_config.py +34 -0
  279. rasa/core/constants.py +11 -0
  280. rasa/core/iam_credentials_providers/__init__.py +0 -0
  281. rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +226 -0
  282. rasa/core/iam_credentials_providers/credentials_provider_protocol.py +90 -0
  283. rasa/core/lock_store.py +46 -10
  284. rasa/core/nlg/generator.py +1 -1
  285. rasa/core/policies/enterprise_search_policy.py +5 -3
  286. rasa/core/policies/flow_policy.py +4 -4
  287. rasa/core/policies/flows/agent_executor.py +632 -0
  288. rasa/core/policies/flows/flow_executor.py +137 -76
  289. rasa/core/policies/flows/mcp_tool_executor.py +298 -0
  290. rasa/core/policies/intentless_policy.py +1 -1
  291. rasa/core/policies/ted_policy.py +20 -12
  292. rasa/core/policies/unexpected_intent_policy.py +6 -0
  293. rasa/core/processor.py +100 -44
  294. rasa/core/redis_connection_factory.py +469 -0
  295. rasa/core/run.py +37 -8
  296. rasa/core/test.py +4 -0
  297. rasa/core/tracker_stores/redis_tracker_store.py +32 -14
  298. rasa/core/tracker_stores/sql_tracker_store.py +57 -1
  299. rasa/core/tracker_stores/tracker_store.py +3 -7
  300. rasa/core/train.py +1 -1
  301. rasa/core/training/interactive.py +20 -18
  302. rasa/core/training/story_conflict.py +5 -5
  303. rasa/core/utils.py +22 -23
  304. rasa/dialogue_understanding/commands/__init__.py +8 -0
  305. rasa/dialogue_understanding/commands/cancel_flow_command.py +19 -5
  306. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +21 -2
  307. rasa/dialogue_understanding/commands/clarify_command.py +20 -2
  308. rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
  309. rasa/dialogue_understanding/commands/knowledge_answer_command.py +21 -2
  310. rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
  311. rasa/dialogue_understanding/commands/start_flow_command.py +68 -7
  312. rasa/dialogue_understanding/commands/utils.py +124 -2
  313. rasa/dialogue_understanding/generator/command_parser.py +4 -0
  314. rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
  315. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  316. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  317. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +66 -0
  318. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +66 -0
  319. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +89 -0
  320. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +88 -0
  321. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +42 -7
  322. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +40 -3
  323. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +20 -3
  324. rasa/dialogue_understanding/patterns/cancel.py +27 -6
  325. rasa/dialogue_understanding/patterns/clarify.py +3 -14
  326. rasa/dialogue_understanding/patterns/continue_interrupted.py +239 -6
  327. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +46 -8
  328. rasa/dialogue_understanding/processor/command_processor.py +136 -15
  329. rasa/dialogue_understanding/stack/dialogue_stack.py +98 -2
  330. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
  331. rasa/dialogue_understanding/stack/utils.py +57 -3
  332. rasa/dialogue_understanding/utils.py +24 -4
  333. rasa/dialogue_understanding_test/du_test_runner.py +8 -3
  334. rasa/e2e_test/e2e_test_runner.py +13 -3
  335. rasa/engine/caching.py +2 -2
  336. rasa/engine/constants.py +1 -1
  337. rasa/engine/graph.py +5 -1
  338. rasa/engine/loader.py +12 -0
  339. rasa/engine/recipes/default_components.py +138 -49
  340. rasa/engine/recipes/default_recipe.py +108 -11
  341. rasa/engine/runner/dask.py +8 -5
  342. rasa/engine/storage/local_model_storage.py +41 -4
  343. rasa/engine/validation.py +19 -6
  344. rasa/graph_components/validators/default_recipe_validator.py +86 -28
  345. rasa/hooks.py +5 -5
  346. rasa/llm_fine_tuning/utils.py +2 -2
  347. rasa/model_manager/socket_bridge.py +1 -2
  348. rasa/model_manager/warm_rasa_process.py +13 -3
  349. rasa/model_training.py +60 -47
  350. rasa/nlu/classifiers/diet_classifier.py +198 -98
  351. rasa/nlu/classifiers/logistic_regression_classifier.py +1 -4
  352. rasa/nlu/classifiers/mitie_intent_classifier.py +3 -0
  353. rasa/nlu/classifiers/sklearn_intent_classifier.py +1 -3
  354. rasa/nlu/extractors/crf_entity_extractor.py +9 -10
  355. rasa/nlu/extractors/mitie_entity_extractor.py +3 -0
  356. rasa/nlu/extractors/spacy_entity_extractor.py +3 -0
  357. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +4 -0
  358. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +5 -0
  359. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +2 -0
  360. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +3 -0
  361. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +4 -2
  362. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -0
  363. rasa/nlu/selectors/response_selector.py +10 -2
  364. rasa/nlu/tokenizers/jieba_tokenizer.py +3 -4
  365. rasa/nlu/tokenizers/mitie_tokenizer.py +3 -2
  366. rasa/nlu/tokenizers/spacy_tokenizer.py +3 -2
  367. rasa/nlu/utils/mitie_utils.py +3 -0
  368. rasa/nlu/utils/spacy_utils.py +3 -2
  369. rasa/plugin.py +8 -8
  370. rasa/privacy/privacy_manager.py +12 -3
  371. rasa/server.py +15 -3
  372. rasa/shared/agents/__init__.py +0 -0
  373. rasa/shared/agents/auth/__init__.py +0 -0
  374. rasa/shared/agents/auth/agent_auth_factory.py +105 -0
  375. rasa/shared/agents/auth/agent_auth_manager.py +92 -0
  376. rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
  377. rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
  378. rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
  379. rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
  380. rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +167 -0
  381. rasa/shared/agents/auth/constants.py +12 -0
  382. rasa/shared/agents/auth/types.py +12 -0
  383. rasa/shared/agents/utils.py +35 -0
  384. rasa/shared/constants.py +8 -0
  385. rasa/shared/core/constants.py +17 -1
  386. rasa/shared/core/domain.py +0 -7
  387. rasa/shared/core/events.py +329 -0
  388. rasa/shared/core/flows/constants.py +5 -0
  389. rasa/shared/core/flows/flow.py +1 -1
  390. rasa/shared/core/flows/flows_list.py +21 -5
  391. rasa/shared/core/flows/flows_yaml_schema.json +119 -184
  392. rasa/shared/core/flows/steps/call.py +49 -5
  393. rasa/shared/core/flows/steps/collect.py +98 -13
  394. rasa/shared/core/flows/validation.py +372 -8
  395. rasa/shared/core/flows/yaml_flows_io.py +3 -2
  396. rasa/shared/core/slots.py +2 -2
  397. rasa/shared/core/trackers.py +5 -2
  398. rasa/shared/exceptions.py +16 -0
  399. rasa/shared/importers/rasa.py +1 -1
  400. rasa/shared/importers/utils.py +9 -3
  401. rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
  402. rasa/shared/providers/llm/_base_litellm_client.py +41 -9
  403. rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
  404. rasa/shared/providers/llm/llm_client.py +7 -3
  405. rasa/shared/providers/llm/llm_response.py +66 -0
  406. rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
  407. rasa/shared/utils/common.py +24 -0
  408. rasa/shared/utils/health_check/health_check.py +7 -3
  409. rasa/shared/utils/llm.py +39 -16
  410. rasa/shared/utils/mcp/__init__.py +0 -0
  411. rasa/shared/utils/mcp/server_connection.py +247 -0
  412. rasa/shared/utils/mcp/utils.py +20 -0
  413. rasa/shared/utils/schemas/events.py +42 -0
  414. rasa/shared/utils/yaml.py +3 -1
  415. rasa/studio/pull/pull.py +3 -2
  416. rasa/studio/train.py +8 -7
  417. rasa/studio/upload.py +3 -6
  418. rasa/telemetry.py +69 -5
  419. rasa/tracing/config.py +45 -12
  420. rasa/tracing/constants.py +14 -0
  421. rasa/tracing/instrumentation/attribute_extractors.py +142 -9
  422. rasa/tracing/instrumentation/instrumentation.py +626 -21
  423. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  424. rasa/tracing/instrumentation/metrics.py +32 -0
  425. rasa/tracing/metric_instrument_provider.py +68 -0
  426. rasa/utils/common.py +92 -1
  427. rasa/utils/endpoints.py +11 -2
  428. rasa/utils/log_utils.py +96 -5
  429. rasa/utils/ml_utils.py +1 -1
  430. rasa/utils/pypred.py +38 -0
  431. rasa/utils/tensorflow/__init__.py +7 -0
  432. rasa/utils/tensorflow/callback.py +136 -101
  433. rasa/utils/tensorflow/crf.py +1 -1
  434. rasa/utils/tensorflow/data_generator.py +21 -8
  435. rasa/utils/tensorflow/layers.py +21 -11
  436. rasa/utils/tensorflow/metrics.py +7 -3
  437. rasa/utils/tensorflow/models.py +56 -8
  438. rasa/utils/tensorflow/rasa_layers.py +8 -6
  439. rasa/utils/tensorflow/transformer.py +2 -3
  440. rasa/utils/train_utils.py +54 -24
  441. rasa/validator.py +17 -13
  442. rasa/version.py +1 -1
  443. {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/METADATA +59 -51
  444. {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/RECORD +452 -428
  445. rasa/builder/scrape_rasa_docs.py +0 -97
  446. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +0 -47
  447. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +0 -40
  448. rasa/cli/project_templates/finance/actions/action_session_start.py +0 -74
  449. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +0 -48
  450. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +0 -36
  451. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +0 -54
  452. rasa/cli/project_templates/finance/actions/database.py +0 -277
  453. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +0 -52
  454. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +0 -51
  455. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +0 -40
  456. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +0 -40
  457. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +0 -46
  458. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +0 -49
  459. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +0 -19
  460. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +0 -36
  461. rasa/cli/project_templates/finance/csvs/accounts.csv +0 -8
  462. rasa/cli/project_templates/finance/csvs/advisors.csv +0 -7
  463. rasa/cli/project_templates/finance/csvs/appointments.csv +0 -211
  464. rasa/cli/project_templates/finance/csvs/branches.csv +0 -10
  465. rasa/cli/project_templates/finance/csvs/cards.csv +0 -11
  466. rasa/cli/project_templates/finance/csvs/payees.csv +0 -11
  467. rasa/cli/project_templates/finance/csvs/transactions.csv +0 -71
  468. rasa/cli/project_templates/finance/csvs/users.csv +0 -4
  469. rasa/cli/project_templates/finance/data/cards/select_card.yml +0 -12
  470. rasa/cli/project_templates/finance/data/general/bot_identity.yml +0 -6
  471. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +0 -5
  472. rasa/cli/project_templates/finance/data/system/source/accounts.json +0 -51
  473. rasa/cli/project_templates/finance/data/system/source/advisors.json +0 -44
  474. rasa/cli/project_templates/finance/data/system/source/appointments.json +0 -1474
  475. rasa/cli/project_templates/finance/data/system/source/branches.json +0 -47
  476. rasa/cli/project_templates/finance/data/system/source/cards.json +0 -72
  477. rasa/cli/project_templates/finance/data/system/source/payees.json +0 -74
  478. rasa/cli/project_templates/finance/data/system/source/transactions.json +0 -492
  479. rasa/cli/project_templates/finance/data/system/source/users.json +0 -29
  480. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +0 -29
  481. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +0 -5
  482. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +0 -21
  483. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +0 -8
  484. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +0 -8
  485. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +0 -8
  486. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +0 -8
  487. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +0 -8
  488. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +0 -7
  489. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +0 -8
  490. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +0 -8
  491. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +0 -8
  492. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +0 -8
  493. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +0 -8
  494. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +0 -8
  495. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +0 -8
  496. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +0 -8
  497. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +0 -8
  498. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +0 -8
  499. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +0 -8
  500. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +0 -8
  501. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +0 -8
  502. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +0 -8
  503. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +0 -50
  504. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +0 -50
  505. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +0 -48
  506. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +0 -50
  507. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +0 -50
  508. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +0 -47
  509. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +0 -50
  510. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +0 -50
  511. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +0 -47
  512. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +0 -50
  513. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +0 -50
  514. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +0 -50
  515. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +0 -47
  516. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +0 -50
  517. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +0 -50
  518. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +0 -47
  519. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +0 -50
  520. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +0 -50
  521. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +0 -47
  522. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +0 -50
  523. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +0 -50
  524. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +0 -47
  525. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +0 -47
  526. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +0 -50
  527. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +0 -50
  528. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +0 -47
  529. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +0 -50
  530. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +0 -50
  531. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +0 -47
  532. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +0 -50
  533. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +0 -50
  534. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +0 -47
  535. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +0 -50
  536. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +0 -50
  537. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +0 -50
  538. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +0 -47
  539. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +0 -50
  540. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +0 -50
  541. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +0 -47
  542. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +0 -50
  543. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +0 -50
  544. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +0 -47
  545. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +0 -50
  546. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +0 -50
  547. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +0 -50
  548. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +0 -47
  549. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +0 -50
  550. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +0 -50
  551. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +0 -47
  552. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +0 -50
  553. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +0 -50
  554. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +0 -47
  555. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +0 -50
  556. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +0 -50
  557. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +0 -47
  558. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +0 -47
  559. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +0 -50
  560. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +0 -50
  561. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +0 -50
  562. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +0 -50
  563. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +0 -47
  564. rasa/cli/project_templates/finance/domain/cards/select_card.yml +0 -12
  565. rasa/cli/project_templates/finance/domain/general/assistant_details.yml +0 -12
  566. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +0 -5
  567. rasa/cli/project_templates/finance/domain/general/defaults.yml +0 -24
  568. rasa/cli/project_templates/finance/domain/general/help.yml +0 -5
  569. rasa/cli/project_templates/finance/domain/general/utils.yml +0 -13
  570. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +0 -47
  571. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +0 -4
  572. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +0 -16
  573. rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +0 -1
  574. rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +0 -1
  575. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +0 -1
  576. rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +0 -1335
  577. /rasa/cli/project_templates/telco/domain/billing/{domain_undertand_bill.yml → understand_bill.yml} +0 -0
  578. /rasa/cli/project_templates/telco/domain/network/{domain_reboot_router.yml → reboot_router.yml} +0 -0
  579. /rasa/cli/project_templates/telco/domain/network/{domain_reset_router.yml → reset_router.yml} +0 -0
  580. /rasa/cli/project_templates/telco/domain/network/{domain_run_speed_test.yml → run_speed_test.yml} +0 -0
  581. /rasa/cli/project_templates/telco/domain/network/{domain_solve_internet_issue.yml → solve_internet_issue.yml} +0 -0
  582. {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/NOTICE +0 -0
  583. {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/WHEEL +0 -0
  584. {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/entry_points.txt +0 -0
@@ -16,48 +16,48 @@
16
16
  "dependencies": {
17
17
  "@chakra-ui/icons": "^2.2.4",
18
18
  "@chakra-ui/react": "2.8.1",
19
- "@emotion/react": "11.11.1",
20
- "@emotion/styled": "11.11.0",
21
- "axios": "1.8.2",
22
- "deep-chat-react": "2.0.1",
19
+ "@emotion/react": "11.14.0",
20
+ "@emotion/styled": "11.14.1",
21
+ "axios": "1.12.2",
22
+ "deep-chat-react": "2.2.2",
23
23
  "framer-motion": "10.16.4",
24
- "immutable-json-patch": "^6.0.1",
24
+ "immutable-json-patch": "^6.0.2",
25
25
  "mermaid": "10.9.3",
26
- "query-string": "^9.0.0",
26
+ "query-string": "^9.3.1",
27
27
  "react": "18.2.0",
28
28
  "react-dom": "18.2.0",
29
- "react-syntax-highlighter": "15.5.0",
30
- "react-use-websocket": "^4.8.1",
29
+ "react-syntax-highlighter": "15.6.6",
30
+ "react-use-websocket": "^4.13.0",
31
31
  "usehooks-ts": "2.9.1"
32
32
  },
33
33
  "devDependencies": {
34
- "@testing-library/jest-dom": "6.1.4",
34
+ "@testing-library/jest-dom": "6.8.0",
35
35
  "@testing-library/react": "14.0.0",
36
36
  "@types/jest": "29.5.6",
37
37
  "@types/node": "16",
38
38
  "@types/react": "^18.2.15",
39
39
  "@types/react-dom": "18.2.7",
40
- "@types/react-syntax-highlighter": "15.5.9",
40
+ "@types/react-syntax-highlighter": "15.5.13",
41
41
  "@typescript-eslint/eslint-plugin": "6.0.0",
42
42
  "@typescript-eslint/parser": "6.0.0",
43
43
  "@vitejs/plugin-react": "4.0.3",
44
44
  "eslint": "8.45.0",
45
45
  "eslint-plugin-react-hooks": "4.6.0",
46
- "eslint-plugin-react-refresh": "0.4.3",
46
+ "eslint-plugin-react-refresh": "0.4.21",
47
47
  "jest": "29.7.0",
48
48
  "jest-environment-jsdom": "29.7.0",
49
- "prettier": "^3.5.3",
50
- "ts-jest": "29.1.1",
51
- "ts-node": "10.9.1",
52
- "typescript": "5.0.2",
49
+ "prettier": "^3.6.2",
50
+ "ts-jest": "29.4.4",
51
+ "ts-node": "10.9.2",
52
+ "typescript": "5.9.2",
53
53
  "vite": "4.5.12"
54
54
  },
55
55
  "resolutions": {
56
- "cross-spawn": "7.0.5",
56
+ "cross-spawn": "7.0.6",
57
57
  "dompurify": "3.1.3",
58
58
  "braces": "3.0.3",
59
- "ws": "8.17.1",
59
+ "ws": "8.18.3",
60
60
  "rollup": "3.29.5",
61
- "@adobe/css-tools": "^4.3.2"
61
+ "@adobe/css-tools": "^4.4.4"
62
62
  }
63
63
  }
@@ -12,24 +12,27 @@ import useWebSocket, { ReadyState } from 'react-use-websocket'
12
12
  import { Chat } from './components/Chat'
13
13
  import { DiagramFlow } from './components/DiagramFlow'
14
14
  import { DialougeInformation } from './components/DialogueInformation'
15
- import { DialogueStack } from './components/DialogueStack'
15
+ import { DialogueHistoryStack } from './components/DialogueHistoryStack'
16
16
  import { LoadingSpinner } from './components/LoadingSpinner'
17
17
  import { RecruitmentPanel } from './components/RecruitmentPanel'
18
18
  import { Welcome } from './components/Welcome'
19
19
  import { formatSlots } from './helpers/formatters'
20
20
  import {
21
21
  createHistoricalStack,
22
- flowStepTrail,
22
+ flowStepTrail, updateAgentsStatus,
23
23
  updatedActiveFrame,
24
24
  } from './helpers/utils'
25
25
  import { useOurTheme } from './theme'
26
- import { Event, Flow, SelectedStack, Slot, Stack, Tracker } from './types'
26
+ import { Event, Flow, SelectedStack, Slot, Stack, Tracker, Agent } from './types'
27
+ import {DialogueAgentStack} from "./components/DialogueAgentStack.tsx";
28
+
27
29
 
28
30
  export function App() {
29
31
  const toast = useToast()
30
32
  const { rasaSpace, rasaRadii } = useOurTheme()
31
33
  const [rasaChatSessionId, setRasaChatSessionId] = useState<string>('')
32
34
  const [flows, setFlows] = useState<Flow[]>([])
35
+ const [agents, setAgents] = useState<Agent[]>([])
33
36
  const [slots, setSlots] = useState<Slot[]>([])
34
37
  const [events, setEvents] = useState<Event[]>([])
35
38
  const [story, setStory] = useState<string>('')
@@ -101,6 +104,23 @@ export function App() {
101
104
  })
102
105
  }, [toast])
103
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
+
104
124
  function fetchStory() {
105
125
  axios
106
126
  .get(`/conversations/${rasaChatSessionId}/story`, { params: { token } })
@@ -128,19 +148,13 @@ export function App() {
128
148
  !rasaChatSessionId ||
129
149
  lastJsonMessage?.sender_id === rasaChatSessionId
130
150
  ) {
131
- if (lastJsonMessage.latency) {
132
- console.log('Latency update:', lastJsonMessage.latency)
133
- setLatency((prevLatency: any) => ({
134
- ...prevLatency,
135
- ...lastJsonMessage.latency,
136
- }))
137
- }
138
151
  setSlots(formatSlots(lastJsonMessage.slots))
139
152
  setEvents(lastJsonMessage.events)
140
153
  const updatedStack = createHistoricalStack(
141
154
  lastJsonMessage.stack,
142
155
  lastJsonMessage.events,
143
156
  )
157
+ setAgents(prevAgents => updateAgentsStatus(prevAgents, lastJsonMessage.events))
144
158
  setStack(updatedStack)
145
159
  setFrame(updatedActiveFrame(frame, updatedStack, lastJsonMessage.events))
146
160
  setRasaChatSessionId(lastJsonMessage.sender_id)
@@ -183,21 +197,6 @@ export function App() {
183
197
  : 'max-content minmax(10rem, 17.5rem) minmax(10rem, auto)',
184
198
  gridRowGap: rasaSpace[1],
185
199
  }
186
- const rightColumnSx = {
187
- height: '100%',
188
- overflow: 'hidden',
189
- gridTemplateColumns: '1fr',
190
- gridTemplateRows: 'max-content 1fr',
191
- gridRowGap: rasaSpace[1],
192
- }
193
-
194
- const chatContainerSx = {
195
- ...borderRadiusSx,
196
- padding: rasaSpace[1],
197
- bg: useColorModeValue('neutral.50', 'neutral.50'),
198
- overflow: 'auto', // Allow scrolling for chat
199
- height: '100%',
200
- }
201
200
 
202
201
  const onFrameSelected = (stack: Stack) => {
203
202
  setFrame({
@@ -239,12 +238,16 @@ export function App() {
239
238
  {showRecruitmentPanel && (
240
239
  <RecruitmentPanel onClose={handleCloseRecruitmentPanel} />
241
240
  )}
242
- <DialogueStack
241
+ <DialogueHistoryStack
243
242
  sx={boxSx}
244
243
  stack={stack}
245
244
  active={frame?.stack}
246
245
  onItemClick={onFrameSelected}
247
246
  />
247
+ {agents.length > 0 ? (<DialogueAgentStack
248
+ sx={boxSx}
249
+ agents={agents}
250
+ />):null}
248
251
  <DialougeInformation
249
252
  sx={boxSx}
250
253
  rasaChatSessionId={rasaChatSessionId}
@@ -263,15 +266,11 @@ export function App() {
263
266
  slots={slots}
264
267
  />
265
268
  </GridItem>
266
- <GridItem overflow="hidden">
267
- <Grid sx={rightColumnSx}>
268
- {shouldShowTranscript && (
269
- <GridItem sx={chatContainerSx}>
270
- <Chat events={events || []} />
271
- </GridItem>
272
- )}
273
- </Grid>
274
- </GridItem>
269
+ {shouldShowTranscript && (
270
+ <GridItem>
271
+ <Chat events={events || []} />
272
+ </GridItem>
273
+ )}
275
274
  </Grid>
276
275
  )
277
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
+ }
@@ -77,7 +77,7 @@ function StackRow({
77
77
  )
78
78
  }
79
79
 
80
- export const DialogueStack = ({
80
+ export const DialogueHistoryStack = ({
81
81
  sx,
82
82
  stack,
83
83
  active,
@@ -105,7 +105,7 @@ export const DialogueStack = ({
105
105
  <Heading size="lg" mb={rasaSpace[0.5]}>
106
106
  History
107
107
  </Heading>
108
- <Text ml={rasaSpace[0.25]}>({stack.length} flows)</Text>
108
+ <Text ml={rasaSpace[0.25]}>({stack.length} {stack.length === 1 ? 'flow' : 'flows'})</Text>
109
109
  </Flex>
110
110
  <Box sx={overflowBox}>
111
111
  <Table width="100%" layout="fixed">
@@ -118,6 +118,7 @@ export const DialogueStack = ({
118
118
  <Tbody>
119
119
  {stack.length > 0 &&
120
120
  [...stack]
121
+ .filter(frame => !frame.agent_id)
121
122
  .reverse()
122
123
  .map((stack) => (
123
124
  <StackRow
@@ -134,6 +135,7 @@ export const DialogueStack = ({
134
135
  flow_id: '-',
135
136
  step_id: '-',
136
137
  ended: false,
138
+ type: "flow"
137
139
  }}
138
140
  />
139
141
  )}
@@ -95,6 +95,7 @@ export const DialougeInformation = ({
95
95
  }, [copiedText, toast])
96
96
 
97
97
  const testCases = formatTestCases(events, rasaChatSessionId)
98
+ const rasaLatency = getLastActionListenEvent(events)?.metadata?.execution_times
98
99
 
99
100
  return (
100
101
  <Flex sx={containerSx} {...props}>
@@ -166,7 +167,10 @@ export const DialougeInformation = ({
166
167
  </TabPanel>
167
168
  <TabPanel sx={tabPanelSx}>
168
169
  <Box sx={overflowBox}>
169
- <LatencyDisplay latency={latency} />
170
+ <LatencyDisplay
171
+ voiceLatency={latency}
172
+ rasaLatency={rasaLatency}
173
+ />
170
174
  </Box>
171
175
  </TabPanel>
172
176
  </TabPanels>
@@ -194,3 +198,7 @@ const CustomTab = (props: TabProps) => {
194
198
  </Button>
195
199
  )
196
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
  }
@@ -8,7 +8,7 @@ const audioOptions = {
8
8
  },
9
9
  }
10
10
 
11
- const arrayBufferToBase64 = (buffer: ArrayBuffer): string => {
11
+ const arrayBufferToBase64 = (buffer: ArrayBufferLike): string => {
12
12
  let binary = ''
13
13
  const bytes = new Uint8Array(buffer)
14
14
  const len = bytes.byteLength
@@ -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
 
@@ -187,7 +196,8 @@ const setupAudioPlayback = async (socket: WebSocket): Promise<AudioQueue> => {
187
196
  }
188
197
 
189
198
  const addDataToAudioQueue =
190
- (audioQueue: AudioQueue, onLatencyUpdate?: (latency: any) => void) => (message: MessageEvent<any>) => {
199
+ (audioQueue: AudioQueue, onLatencyUpdate?: (latency: any) => void) =>
200
+ (message: MessageEvent<any>) => {
191
201
  try {
192
202
  const data = JSON.parse(message.data.toString())
193
203
  if (data['error']) {
@@ -204,6 +214,10 @@ const addDataToAudioQueue =
204
214
  }
205
215
  console.log('Voice Latency Metrics:', data['latency'])
206
216
  audioQueue.addMarker(data['marker'])
217
+ } else if (data['interruptPlayback']) {
218
+ // User interrupted the bot, immediately clear the audio queue
219
+ audioQueue.clear()
220
+ console.log('Audio queue cleared due to user interruption.')
207
221
  }
208
222
  } catch (error) {
209
223
  console.error('Error processing server incoming audio data:', error)
@@ -237,7 +251,10 @@ function getWebSocketUrl(baseUrl: string) {
237
251
  * @param baseUrl - The base URL (e.g., "https://example.com" or "http://localhost:5005")
238
252
  * @param onLatencyUpdate - Optional callback function to receive latency updates
239
253
  */
240
- export async function createAudioConnection(baseUrl: string, onLatencyUpdate?: (latency: any) => void) {
254
+ export async function createAudioConnection(
255
+ baseUrl: string,
256
+ onLatencyUpdate?: (latency: any) => void,
257
+ ) {
241
258
  const websocketURL = getWebSocketUrl(baseUrl)
242
259
  const socket = new WebSocket(websocketURL)
243
260
 
@@ -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
  })