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
@@ -35,8 +35,6 @@ class DirectCustomActionExecutor(CustomActionExecutor):
35
35
  self.action_name = action_name
36
36
  self.action_endpoint = action_endpoint
37
37
  self.action_executor = self._create_action_executor()
38
- self.register_actions_from_a_module()
39
- self.action_executor.reload()
40
38
 
41
39
  @staticmethod
42
40
  @lru_cache(maxsize=1)
@@ -88,12 +86,21 @@ class DirectCustomActionExecutor(CustomActionExecutor):
88
86
 
89
87
  Returns:
90
88
  The response from the execution of the custom action.
89
+
90
+ Raises:
91
+ RasaException: If the actions module specified does not exist.
91
92
  """
92
93
  structlogger.debug(
93
94
  "action.direct_custom_action_executor.run",
94
95
  action_name=self.action_name,
95
96
  )
96
97
 
98
+ # Register actions module if not already registered.
99
+ # This is done here instead of __init__ to allow proper
100
+ # exception handling and avoid hanging conversations.
101
+ self.register_actions_from_a_module()
102
+ self.action_executor.reload()
103
+
97
104
  tracker_state = tracker.current_state(EventVerbosity.ALL)
98
105
  action_call = {
99
106
  "next_action": self.action_name,
@@ -152,7 +152,7 @@ class GRPCCustomActionExecutor(CustomActionExecutor):
152
152
  structlogger.error(
153
153
  "rasa.core.actions.grpc_custom_action_executor.domain_not_found",
154
154
  event_info=(
155
- f"Failed to execute custom action '{self.action_endpoint}'. "
155
+ f"Failed to execute custom action '{self.action_name}'. "
156
156
  f"Could not find domain. {resource_not_found_error.message}"
157
157
  ),
158
158
  )
rasa/core/agent.py CHANGED
@@ -12,9 +12,11 @@ import aiohttp
12
12
  from aiohttp import ClientError
13
13
 
14
14
  import rasa.shared.utils.io
15
+ from rasa.agents.utils import initialize_agents
15
16
  from rasa.core import jobs
16
- from rasa.core.available_endpoints import AvailableEndpoints
17
+ from rasa.core.available_agents import AvailableAgents
17
18
  from rasa.core.channels.channel import OutputChannel, UserMessage
19
+ from rasa.core.config.available_endpoints import AvailableEndpoints
18
20
  from rasa.core.constants import DEFAULT_REQUEST_TIMEOUT
19
21
  from rasa.core.exceptions import AgentNotReady
20
22
  from rasa.core.http_interpreter import RasaNLUHttpInterpreter
@@ -34,7 +36,7 @@ from rasa.privacy.privacy_manager import BackgroundPrivacyManager
34
36
  from rasa.shared.constants import DEFAULT_SENDER_ID
35
37
  from rasa.shared.core.domain import Domain
36
38
  from rasa.shared.core.trackers import DialogueStateTracker, EventVerbosity
37
- from rasa.shared.exceptions import RasaException
39
+ from rasa.shared.exceptions import AgentInitializationException, RasaException
38
40
  from rasa.telemetry import track_privacy_enabled
39
41
  from rasa.utils.common import TempDirectoryPath, get_temp_dir_name
40
42
  from rasa.utils.endpoints import EndpointConfig
@@ -202,6 +204,7 @@ async def load_agent(
202
204
  model_server: Optional[EndpointConfig] = None,
203
205
  remote_storage: Optional[StorageType] = None,
204
206
  endpoints: Optional[AvailableEndpoints] = None,
207
+ sub_agents: Optional[AvailableAgents] = None,
205
208
  loop: Optional[AbstractEventLoop] = None,
206
209
  ) -> Agent:
207
210
  """Loads agent from server, remote storage or disk.
@@ -211,6 +214,7 @@ async def load_agent(
211
214
  model_server: Configuration for a potential server which serves the model.
212
215
  remote_storage: Remote storage to use for loading the model.
213
216
  endpoints: Endpoint configuration.
217
+ sub_agents: Sub-agents configuration.
214
218
  loop: Optional async loop to pass to broker creation.
215
219
 
216
220
  Returns:
@@ -281,8 +285,19 @@ async def load_agent(
281
285
  "No valid configuration given to load agent. "
282
286
  "Agent loaded with no model!"
283
287
  )
288
+
289
+ if agent.processor and sub_agents:
290
+ flows = await agent.processor.get_flows()
291
+ # CLI commands that accept --sub-agents
292
+ # all route through this entry point.
293
+ # With all required data available,
294
+ # this is the best spot to initialize the subagents.
295
+ await initialize_agents(flows, sub_agents)
296
+
284
297
  return agent
285
298
 
299
+ except AgentInitializationException as e:
300
+ raise e
286
301
  except Exception as e:
287
302
  logger.error(f"Could not load model due to {e}.", exc_info=True)
288
303
  return agent
@@ -322,6 +337,7 @@ class Agent:
322
337
  remote_storage: Optional[StorageType] = None,
323
338
  http_interpreter: Optional[RasaNLUHttpInterpreter] = None,
324
339
  endpoints: Optional[AvailableEndpoints] = None,
340
+ sub_agents: Optional[AvailableAgents] = None,
325
341
  privacy_manager: Optional[BackgroundPrivacyManager] = None,
326
342
  ):
327
343
  """Initializes an `Agent`."""
@@ -334,6 +350,7 @@ class Agent:
334
350
  self.action_endpoint = action_endpoint
335
351
  self.http_interpreter = http_interpreter
336
352
  self.endpoints = endpoints
353
+ self.sub_agents = sub_agents
337
354
 
338
355
  self._set_fingerprint(fingerprint)
339
356
  self.model_server = model_server
@@ -0,0 +1,229 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ from enum import Enum
5
+ from typing import Any, Dict, List, Optional
6
+
7
+ import structlog
8
+ from pydantic import BaseModel, Field, model_validator
9
+ from ruamel import yaml as yaml
10
+
11
+ from rasa.exceptions import ValidationError
12
+ from rasa.utils.singleton import Singleton
13
+
14
+ DEFAULT_AGENTS_CONFIG_FOLDER = "sub_agents"
15
+
16
+ structlogger = structlog.get_logger()
17
+
18
+
19
+ class ProtocolConfig(str, Enum):
20
+ """Supported protocols for agents."""
21
+
22
+ RASA = "RASA"
23
+ A2A = "A2A"
24
+
25
+
26
+ class AgentInfo(BaseModel):
27
+ """Configuration for an agent."""
28
+
29
+ name: str = Field(..., description="Agent name")
30
+ protocol: ProtocolConfig = Field(
31
+ default=ProtocolConfig.RASA,
32
+ description="Protocol used to communicate with the agent.",
33
+ )
34
+ description: str = Field(..., description="Agent description")
35
+
36
+ @model_validator(mode="before")
37
+ @classmethod
38
+ def validate_protocol(cls, values: Any) -> Any:
39
+ """Validate and normalize protocol values to support lowercase input."""
40
+ if isinstance(values, dict) and "protocol" in values:
41
+ protocol_value = values["protocol"]
42
+ if isinstance(protocol_value, str):
43
+ # Map lowercase protocol names to uppercase enum values
44
+ protocol_mapping = {
45
+ "rasa": ProtocolConfig.RASA,
46
+ "a2a": ProtocolConfig.A2A,
47
+ "RASA": ProtocolConfig.RASA,
48
+ "A2A": ProtocolConfig.A2A,
49
+ }
50
+
51
+ if protocol_value.lower() in protocol_mapping:
52
+ values["protocol"] = protocol_mapping[protocol_value.lower()]
53
+ else:
54
+ # If it's not a recognized protocol, let Pydantic handle the
55
+ # validation
56
+ # This will raise a proper validation error
57
+ pass
58
+
59
+ return values
60
+
61
+
62
+ class AgentConfiguration(BaseModel):
63
+ llm: Optional[Dict[str, Any]] = None
64
+ prompt_template: Optional[str] = None
65
+ module: Optional[str] = None
66
+ timeout: Optional[int] = None # timeout in seconds
67
+ max_retries: Optional[int] = None
68
+ agent_card: Optional[str] = None
69
+ auth: Optional[Dict[str, Any]] = None
70
+
71
+
72
+ class AgentConnections(BaseModel):
73
+ mcp_servers: Optional[List[AgentMCPServerConfig]] = None
74
+
75
+
76
+ class AgentMCPServerConfig(BaseModel):
77
+ name: str # Reference to MCPServerConfig
78
+ url: Optional[str] = None
79
+ type: Optional[str] = None
80
+ include_tools: Optional[List[str]] = None
81
+ exclude_tools: Optional[List[str]] = None
82
+ # Additional parameters for the MCP server
83
+ additional_params: Optional[Dict[str, Any]] = None
84
+
85
+
86
+ class AgentConfig(BaseModel):
87
+ agent: AgentInfo
88
+ configuration: Optional[AgentConfiguration] = None
89
+ connections: Optional[AgentConnections] = None
90
+
91
+
92
+ class AvailableAgents(metaclass=Singleton):
93
+ """Collection of configured agents."""
94
+
95
+ _instance = None
96
+
97
+ def __init__(self, agents: Optional[Dict[str, AgentConfig]] = None) -> None:
98
+ """Create an `AvailableAgents` object."""
99
+ self.agents = agents or {}
100
+
101
+ @classmethod
102
+ def _read_agent_folder(cls, agent_folder: str) -> AvailableAgents:
103
+ """Read the different agents from the given folder."""
104
+ agents: Dict[str, AgentConfig] = {}
105
+
106
+ if not os.path.isdir(agent_folder):
107
+ if agent_folder != DEFAULT_AGENTS_CONFIG_FOLDER:
108
+ # User explicitly specified a folder, it should exist
109
+ structlogger.error(
110
+ f"The specified agents config folder '{agent_folder}' does not "
111
+ f"exist or is not a directory."
112
+ )
113
+ raise ValueError(
114
+ f"The specified agents config folder '{agent_folder}' does not "
115
+ f"exist or is not a directory."
116
+ )
117
+ else:
118
+ # We are using the default folder, it may not be created yet
119
+ # Init with an empty agents in this case
120
+ structlogger.info(
121
+ f"Default agents config folder '{agent_folder}' does not exist. "
122
+ f"Agent configurations won't be loaded."
123
+ )
124
+ return cls(agents)
125
+
126
+ # First, load all agent configs into a temporary list for validation
127
+ agent_configs: List[AgentConfig] = []
128
+ for agent_name in os.listdir(agent_folder):
129
+ config_path = os.path.join(agent_folder, agent_name, "config.yml")
130
+ if not os.path.isfile(config_path):
131
+ continue
132
+ try:
133
+ agent_config = cls._read_agent_config(config_path)
134
+ if not isinstance(agent_config, AgentConfig):
135
+ raise ValueError(f"Invalid agent config type for {agent_name}")
136
+ agent_configs.append(agent_config)
137
+ except Exception as e:
138
+ raise ValidationError(
139
+ code="agent.load_failed",
140
+ event_info=f"Failed to load agent '{agent_name}': {e}",
141
+ details={
142
+ "agent_name": agent_name,
143
+ "agent_folder": agent_folder,
144
+ "error": str(e),
145
+ },
146
+ )
147
+
148
+ # Validate agent names are unique before adding to dictionary
149
+ from rasa.agents.validation import validate_agent_names_unique
150
+
151
+ validate_agent_names_unique(agent_configs)
152
+
153
+ for agent_config in agent_configs:
154
+ agents[agent_config.agent.name] = agent_config
155
+
156
+ return cls(agents)
157
+
158
+ @staticmethod
159
+ def _read_agent_config(config_path: str) -> AgentConfig:
160
+ """Read the agent config from a yaml file into Pydantic models.
161
+
162
+ Args:
163
+ config_path: Path to the config file.
164
+
165
+ Returns:
166
+ The parsed AgentConfig.
167
+
168
+ Raises:
169
+ yaml.YAMLError: If the YAML file is invalid.
170
+ ValueError: If the data structure is invalid for Pydantic models.
171
+ """
172
+ with open(config_path, "r") as f:
173
+ data = yaml.safe_load(f)
174
+
175
+ # Create the agent config (this will trigger Pydantic validation)
176
+ agent_config = AgentConfig(
177
+ agent=AgentInfo(**data.get("agent", {})),
178
+ configuration=AgentConfiguration(**data.get("configuration", {}))
179
+ if data.get("configuration")
180
+ else None,
181
+ connections=AgentConnections(**data.get("connections", {}))
182
+ if data.get("connections")
183
+ else None,
184
+ )
185
+
186
+ return agent_config
187
+
188
+ @classmethod
189
+ def get_instance(
190
+ cls, agent_folder: Optional[str] = DEFAULT_AGENTS_CONFIG_FOLDER
191
+ ) -> AvailableAgents:
192
+ """Get the singleton instance of `AvailableAgents`."""
193
+ if cls._instance is None:
194
+ cls._instance = cls._read_agent_folder(agent_folder)
195
+
196
+ return cls._instance
197
+
198
+ @classmethod
199
+ def reset_instance(cls) -> None:
200
+ cls._instance = None
201
+ # Also clear the metaclass singleton instances
202
+ if hasattr(type(cls), "_instances"):
203
+ type(cls)._instances.clear()
204
+
205
+ def as_json_list(self) -> List[Dict[str, Any]]:
206
+ """Convert the available agents to a JSON-serializable list."""
207
+ return [
208
+ {
209
+ "name": agent_name,
210
+ "agent": agent_config.agent.model_dump(),
211
+ "configuration": agent_config.configuration.model_dump()
212
+ if agent_config.configuration
213
+ else None,
214
+ "connections": agent_config.connections.model_dump()
215
+ if agent_config.connections
216
+ else None,
217
+ }
218
+ for agent_name, agent_config in self.agents.items()
219
+ ]
220
+
221
+ @classmethod
222
+ def get_agent_config(cls, agent_id: str) -> Optional[AgentConfig]:
223
+ instance = cls.get_instance()
224
+ return instance.agents.get(agent_id)
225
+
226
+ @classmethod
227
+ def has_agents(cls) -> bool:
228
+ instance = cls.get_instance()
229
+ return len(instance.agents) > 0
@@ -66,7 +66,7 @@ class EventBroker:
66
66
  raise NotImplementedError("Event broker must implement the `publish` method.")
67
67
 
68
68
  def is_ready(self) -> bool:
69
- """Determine whether or not the event broker is ready.
69
+ """Determine whether the event broker is ready.
70
70
 
71
71
  Returns:
72
72
  `True` by default, but this may be overridden by subclasses.
@@ -6,13 +6,18 @@ import threading
6
6
  import time
7
7
  from asyncio import AbstractEventLoop
8
8
  from functools import cached_property
9
- from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Union
9
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple, Union
10
10
 
11
11
  import structlog
12
12
 
13
13
  import rasa.shared.utils.common
14
14
  from rasa.core.brokers.broker import EventBroker
15
15
  from rasa.core.exceptions import KafkaProducerInitializationError
16
+ from rasa.core.iam_credentials_providers.credentials_provider_protocol import (
17
+ IAMCredentialsProviderInput,
18
+ SupportedServiceType,
19
+ create_iam_credentials_provider,
20
+ )
16
21
  from rasa.shared.core.events import ErrorHandled
17
22
  from rasa.shared.utils.io import DEFAULT_ENCODING
18
23
  from rasa.utils.endpoints import EndpointConfig
@@ -93,6 +98,9 @@ class KafkaEventBroker(EventBroker):
93
98
  self.ssl_keyfile = ssl_keyfile
94
99
  self.queue_size = kwargs.get("queue_size")
95
100
  self.ssl_check_hostname = "https" if ssl_check_hostname else None
101
+ self.iam_credentials_provider = create_iam_credentials_provider(
102
+ IAMCredentialsProviderInput(service_name=SupportedServiceType.EVENT_BROKER)
103
+ )
96
104
 
97
105
  # PII management attributes
98
106
  self.stream_pii = kwargs.get("stream_pii", True)
@@ -134,8 +142,8 @@ class KafkaEventBroker(EventBroker):
134
142
  try:
135
143
  self._check_kafka_connection()
136
144
  logger.debug("Connection to kafka successful.")
137
- except KafkaException:
138
- logger.debug("Failed to connect kafka.")
145
+ except KafkaException as exc:
146
+ logger.debug(f"Failed to connect to kafka: {exc}")
139
147
  return
140
148
  while retries:
141
149
  try:
@@ -215,7 +223,31 @@ class KafkaEventBroker(EventBroker):
215
223
  KafkaException: if Kafka is disconnected.
216
224
  """
217
225
  if self.producer is not None:
218
- self.producer.list_topics(timeout=5)
226
+ structlogger.debug(
227
+ "rasa.core.brokers.kafka.KafkaEventBroker.check_kafka_connection",
228
+ )
229
+ # we have to poll to trigger the oauth_cb if using IAM authentication
230
+ self.producer.poll(0)
231
+ self.producer.list_topics(self.topic, timeout=5)
232
+
233
+ def get_aws_iam_token(
234
+ self, oauth_config: Any
235
+ ) -> Tuple[Optional[str], Optional[float]]:
236
+ """Callback function to fetch AWS IAM token for MSK authentication.
237
+
238
+ The callback function requires this specific signature to work correctly.
239
+
240
+ Args:
241
+ oauth_config: OAuth configuration.
242
+
243
+ Returns:
244
+ A tuple of auth token and expiry time in seconds.
245
+ """
246
+ if self.iam_credentials_provider is None:
247
+ return None, None
248
+
249
+ temp_credentials = self.iam_credentials_provider.get_temporary_credentials()
250
+ return temp_credentials.auth_token, temp_credentials.expiration
219
251
 
220
252
  def _get_kafka_config(self) -> Dict[Text, Any]:
221
253
  config = {
@@ -246,15 +278,27 @@ class KafkaEventBroker(EventBroker):
246
278
  }
247
279
  elif self.security_protocol == "SASL_SSL":
248
280
  authentication_params = {
249
- "sasl.username": self.sasl_username,
250
- "sasl.password": self.sasl_password,
251
281
  "ssl.ca.location": self.ssl_cafile,
252
- "ssl.certificate.location": self.ssl_certfile,
253
- "ssl.key.location": self.ssl_keyfile,
254
282
  "ssl.endpoint.identification.algorithm": self.ssl_check_hostname,
255
283
  "security.protocol": self.security_protocol,
256
284
  "sasl.mechanism": self.sasl_mechanism,
257
285
  }
286
+
287
+ if self.iam_credentials_provider is not None:
288
+ authentication_params.update(
289
+ {
290
+ "oauth_cb": self.get_aws_iam_token,
291
+ }
292
+ )
293
+ else:
294
+ authentication_params.update(
295
+ {
296
+ "sasl.username": self.sasl_username,
297
+ "sasl.password": self.sasl_password,
298
+ "ssl.certificate.location": self.ssl_certfile,
299
+ "ssl.key.location": self.ssl_keyfile,
300
+ }
301
+ )
258
302
  else:
259
303
  raise ValueError(
260
304
  f"Cannot initialise `KafkaEventBroker`: "
@@ -1,5 +1,5 @@
1
1
  # ruff: noqa: I001
2
- from typing import Text, Dict, List, Type
2
+ from typing import Text, Dict, List, Type, Optional
3
3
 
4
4
  from rasa.core.channels.channel import ( # noqa: F401
5
5
  InputChannel,
@@ -15,54 +15,101 @@ from rasa.core.channels.socketio import SocketIOInput
15
15
  from rasa.core.channels.botframework import BotFrameworkInput
16
16
  from rasa.core.channels.callback import CallbackInput
17
17
  from rasa.core.channels.console import CmdlineInput
18
- from rasa.core.channels.facebook import FacebookInput
19
18
  from rasa.core.channels.mattermost import MattermostInput
20
19
  from rasa.core.channels.rasa_chat import RasaChatInput
21
20
  from rasa.core.channels.rest import RestInput
22
21
  from rasa.core.channels.rocketchat import RocketChatInput
23
- from rasa.core.channels.slack import SlackInput
24
- from rasa.core.channels.telegram import TelegramInput
25
- from rasa.core.channels.twilio import TwilioInput
26
- from rasa.core.channels.voice_ready.twilio_voice import TwilioVoiceInput
27
22
  from rasa.core.channels.voice_ready.jambonz import JambonzVoiceReadyInput
28
23
  from rasa.core.channels.voice_ready.audiocodes import AudiocodesInput
29
24
  from rasa.core.channels.voice_stream.browser_audio import BrowserAudioInputChannel
30
- from rasa.core.channels.webexteams import WebexTeamsInput
31
25
  from rasa.core.channels.hangouts import HangoutsInput
32
- from rasa.core.channels.vier_cvg import CVGInput
33
- from rasa.core.channels.voice_stream.twilio_media_streams import (
34
- TwilioMediaStreamsInputChannel,
35
- )
36
26
  from rasa.core.channels.voice_stream.genesys import GenesysInputChannel
37
27
  from rasa.core.channels.studio_chat import StudioChatInput
38
28
  from rasa.core.channels.voice_stream.audiocodes import AudiocodesVoiceInputChannel
39
29
  from rasa.core.channels.voice_stream.jambonz import JambonzStreamInputChannel
40
30
 
31
+ # Type annotations for channels with optional dependencies
32
+ FacebookInput: Optional[Type[InputChannel]]
33
+ SlackInput: Optional[Type[InputChannel]]
34
+ TelegramInput: Optional[Type[InputChannel]]
35
+ TwilioInput: Optional[Type[InputChannel]]
36
+ TwilioVoiceInput: Optional[Type[InputChannel]]
37
+ TwilioMediaStreamsInputChannel: Optional[Type[InputChannel]]
38
+ WebexTeamsInput: Optional[Type[InputChannel]]
39
+ CVGInput: Optional[Type[InputChannel]]
40
+
41
+ # Channels with optional dependencies - import with try-except
42
+ try:
43
+ from rasa.core.channels.facebook import FacebookInput
44
+ except ImportError:
45
+ FacebookInput = None
46
+
47
+ try:
48
+ from rasa.core.channels.slack import SlackInput
49
+ except ImportError:
50
+ SlackInput = None
51
+
52
+ try:
53
+ from rasa.core.channels.telegram import TelegramInput
54
+ except ImportError:
55
+ TelegramInput = None
56
+
57
+ try:
58
+ from rasa.core.channels.twilio import TwilioInput
59
+ except ImportError:
60
+ TwilioInput = None
61
+
62
+ try:
63
+ from rasa.core.channels.voice_ready.twilio_voice import TwilioVoiceInput
64
+ except ImportError:
65
+ TwilioVoiceInput = None
66
+
67
+ try:
68
+ from rasa.core.channels.voice_stream.twilio_media_streams import (
69
+ TwilioMediaStreamsInputChannel,
70
+ )
71
+ except ImportError:
72
+ TwilioMediaStreamsInputChannel = None
73
+
74
+ try:
75
+ from rasa.core.channels.webexteams import WebexTeamsInput
76
+ except ImportError:
77
+ WebexTeamsInput = None
78
+
79
+ try:
80
+ from rasa.core.channels.vier_cvg import CVGInput
81
+ except ImportError:
82
+ CVGInput = None
83
+
41
84
  input_channel_classes: List[Type[InputChannel]] = [
42
- CmdlineInput,
43
- FacebookInput,
44
- SlackInput,
45
- TelegramInput,
46
- MattermostInput,
47
- TwilioInput,
48
- TwilioVoiceInput,
49
- RasaChatInput,
50
- BotFrameworkInput,
51
- RocketChatInput,
52
- CallbackInput,
53
- RestInput,
54
- SocketIOInput,
55
- WebexTeamsInput,
56
- HangoutsInput,
57
- AudiocodesInput,
58
- CVGInput,
59
- JambonzVoiceReadyInput,
60
- TwilioMediaStreamsInputChannel,
61
- BrowserAudioInputChannel,
62
- GenesysInputChannel,
63
- StudioChatInput,
64
- AudiocodesVoiceInputChannel,
65
- JambonzStreamInputChannel,
85
+ c
86
+ for c in [
87
+ CmdlineInput,
88
+ FacebookInput,
89
+ SlackInput,
90
+ TelegramInput,
91
+ MattermostInput,
92
+ TwilioInput,
93
+ TwilioVoiceInput,
94
+ RasaChatInput,
95
+ BotFrameworkInput,
96
+ RocketChatInput,
97
+ CallbackInput,
98
+ RestInput,
99
+ SocketIOInput,
100
+ WebexTeamsInput,
101
+ HangoutsInput,
102
+ AudiocodesInput,
103
+ CVGInput,
104
+ JambonzVoiceReadyInput,
105
+ TwilioMediaStreamsInputChannel,
106
+ BrowserAudioInputChannel,
107
+ GenesysInputChannel,
108
+ StudioChatInput,
109
+ AudiocodesVoiceInputChannel,
110
+ JambonzStreamInputChannel,
111
+ ]
112
+ if c is not None
66
113
  ]
67
114
 
68
115
  # Mapping from an input channel name to its class to allow name based lookup.
@@ -70,17 +70,17 @@ class DevelopmentInspectorPlugin:
70
70
  self.tasks.append(task)
71
71
  self._cleanup_completed_tasks()
72
72
 
73
- @hookimpl # type: ignore[misc]
73
+ @hookimpl
74
74
  def after_new_user_message(self, tracker: DialogueStateTracker) -> None:
75
75
  """Broadcasts tracker updates after a new user message."""
76
76
  self._create_broadcast_task(tracker)
77
77
 
78
- @hookimpl # type: ignore[misc]
78
+ @hookimpl
79
79
  def after_action_executed(self, tracker: DialogueStateTracker) -> None:
80
80
  """Broadcasts tracker updates after an action is executed."""
81
81
  self._create_broadcast_task(tracker)
82
82
 
83
- @hookimpl # type: ignore[misc]
83
+ @hookimpl
84
84
  def after_server_stop(self) -> None:
85
85
  """Cancels all remaining tasks when the server stops."""
86
86
  self._cancel_tasks()
@@ -145,15 +145,10 @@ class DevelopmentInspectProxy(InputChannel):
145
145
  state = tracker.current_state(EventVerbosity.AFTER_RESTART)
146
146
  return orjson.dumps(state, option=orjson.OPT_SERIALIZE_NUMPY).decode("utf-8")
147
147
 
148
- async def on_tracker_updated(
149
- self, tracker: DialogueStateTracker, latency: Optional[float] = None
150
- ) -> None:
148
+ async def on_tracker_updated(self, tracker: DialogueStateTracker) -> None:
151
149
  """Notifies all clients about tracker updates in real-time."""
152
150
  if self.tracker_stream and tracker.sender_id:
153
151
  state = tracker.current_state(EventVerbosity.AFTER_RESTART)
154
- if latency is not None:
155
- state["latency"] = {"rasa_processing_latency_ms": latency}
156
-
157
152
  tracker_dump = orjson.dumps(
158
153
  state, option=orjson.OPT_SERIALIZE_NUMPY
159
154
  ).decode("utf-8")
@@ -163,28 +158,13 @@ class DevelopmentInspectProxy(InputChannel):
163
158
  """Records the start time of a new turn."""
164
159
  self._turn_start_times[sender_id] = time.time()
165
160
 
166
- async def _broadcast_latency(self, sender_id: Text) -> None:
167
- """Broadcasts the tracker with latency of the current turn to all clients."""
168
- if sender_id not in self._turn_start_times:
169
- return None
170
-
171
- latency = (time.time() - self._turn_start_times[sender_id]) * 1000
172
- # The turn is over, so we can remove the start time
173
- del self._turn_start_times[sender_id]
174
-
175
- # broadcast tracker update with latency
176
- tracker = await self._get_tracker(sender_id)
177
- await self.on_tracker_updated(tracker, latency)
178
-
179
161
  async def on_message_proxy(
180
162
  self,
181
163
  on_new_message: Callable[["UserMessage"], Awaitable[Any]],
182
164
  message: "UserMessage",
183
165
  ) -> None:
184
166
  """Proxies the on_new_message call to the underlying channel."""
185
- self._record_turn_start_time(message.sender_id)
186
167
  await on_new_message(message)
187
- await self._broadcast_latency(message.sender_id)
188
168
 
189
169
  @classmethod
190
170
  async def serve_inspect_html(cls) -> HTTPResponse:
@@ -213,7 +213,7 @@ class HangoutsInput(InputChannel):
213
213
  # every message. Actual caching depends on response headers.
214
214
  # see: https://github.com/googleapis/google-auth-library-python/blob/main/google/oauth2/id_token.py#L15 # noqa: E501
215
215
  cached_session = cachecontrol.CacheControl(requests.session())
216
- self.google_request = google.auth.transport.requests.Request(
216
+ self.google_request = google.auth.transport.requests.Request( # type: ignore[no-untyped-call]
217
217
  session=cached_session
218
218
  )
219
219
 
@@ -267,7 +267,7 @@ class HangoutsInput(InputChannel):
267
267
  # see https://developers.google.com/chat/how-tos/bots-develop#verifying_bot_authenticity # noqa: E501
268
268
  # and https://google-auth.readthedocs.io/en/latest/user-guide.html#identity-tokens # noqa: E501
269
269
  try:
270
- decoded_token = id_token.verify_token(
270
+ decoded_token = id_token.verify_token( # type: ignore[no-untyped-call]
271
271
  bot_token,
272
272
  self.google_request,
273
273
  audience=self.project_id,