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
@@ -0,0 +1,469 @@
1
+ import os
2
+ from enum import Enum
3
+ from typing import Any, Dict, List, Optional, Text, Tuple, Union
4
+
5
+ import redis
6
+ import structlog
7
+ from pydantic import BaseModel, ConfigDict
8
+
9
+ from rasa.core.constants import AWS_ELASTICACHE_CLUSTER_NAME_ENV_VAR_NAME
10
+ from rasa.core.iam_credentials_providers.credentials_provider_protocol import (
11
+ IAMCredentialsProvider,
12
+ IAMCredentialsProviderInput,
13
+ SupportedServiceType,
14
+ create_iam_credentials_provider,
15
+ )
16
+ from rasa.shared.exceptions import ConnectionException, RasaException
17
+
18
+ structlogger = structlog.getLogger(__name__)
19
+
20
+ DEFAULT_SOCKET_TIMEOUT_IN_SECONDS = 10
21
+
22
+
23
+ class DeploymentMode(Enum):
24
+ """Supported Redis deployment modes."""
25
+
26
+ STANDARD = "standard"
27
+ CLUSTER = "cluster"
28
+ SENTINEL = "sentinel"
29
+
30
+
31
+ class StandardRedisConfig(BaseModel):
32
+ """Base configuration for Redis connections."""
33
+
34
+ model_config = ConfigDict(arbitrary_types_allowed=True)
35
+
36
+ host: Text = "localhost"
37
+ port: int = 6379
38
+ username: Optional[Text] = None
39
+ password: Optional[Text] = None
40
+ use_ssl: bool = False
41
+ ssl_keyfile: Optional[Text] = None
42
+ ssl_certfile: Optional[Text] = None
43
+ ssl_ca_certs: Optional[Text] = None
44
+ db: int = 0
45
+ socket_timeout: float = DEFAULT_SOCKET_TIMEOUT_IN_SECONDS
46
+ decode_responses: bool = False
47
+ iam_credentials_provider: Optional[IAMCredentialsProvider] = None
48
+
49
+
50
+ class ClusterRedisConfig(StandardRedisConfig):
51
+ """Configuration for Redis Cluster connections."""
52
+
53
+ endpoints: List[Tuple[Text, int]]
54
+
55
+
56
+ class SentinelRedisConfig(StandardRedisConfig):
57
+ """Configuration for Redis Sentinel connections."""
58
+
59
+ endpoints: List[Tuple[Text, int]]
60
+ sentinel_service: Optional[Text] = "mymaster"
61
+
62
+
63
+ class RedisConfig(BaseModel):
64
+ """Base configuration for Redis connections."""
65
+
66
+ host: Text = "localhost"
67
+ port: int = 6379
68
+ username: Optional[Text] = None
69
+ password: Optional[Text] = None
70
+ use_ssl: bool = False
71
+ ssl_keyfile: Optional[Text] = None
72
+ ssl_certfile: Optional[Text] = None
73
+ ssl_ca_certs: Optional[Text] = None
74
+ db: int = 0
75
+ socket_timeout: float = DEFAULT_SOCKET_TIMEOUT_IN_SECONDS
76
+ decode_responses: bool = False
77
+ deployment_mode: Text = DeploymentMode.STANDARD.value
78
+ endpoints: Optional[List[Text]] = None
79
+ sentinel_service: Optional[Text] = None
80
+
81
+
82
+ class RedisConnectionFactory:
83
+ """Factory class for creating Redis connections with different modes."""
84
+
85
+ @classmethod
86
+ def create_connection(
87
+ cls,
88
+ config: RedisConfig,
89
+ ) -> Union[redis.Redis, redis.RedisCluster]:
90
+ """Create a Redis connection based on the configuration.
91
+
92
+ Args:
93
+ config: Redis configuration object containing all connection parameters.
94
+
95
+ Returns:
96
+ A Redis connection - either a standard Redis connection, a RedisCluster
97
+ connection, or a Redis master connection managed by Sentinel.
98
+
99
+ Raises:
100
+ RasaException: If configuration is invalid.
101
+ """
102
+ if config.endpoints is None:
103
+ config.endpoints = []
104
+
105
+ try:
106
+ deployment_mode_enum = DeploymentMode(config.deployment_mode)
107
+ except ValueError:
108
+ valid_modes = [mode.value for mode in DeploymentMode]
109
+ raise RasaException(
110
+ f"Invalid deployment_mode '{config.deployment_mode}'. "
111
+ f"Must be one of: {', '.join(valid_modes)}"
112
+ )
113
+
114
+ parsed_endpoints = cls._parse_and_validate_endpoints(
115
+ deployment_mode_enum, config.endpoints, config.host, config.port
116
+ )
117
+
118
+ iam_credentials_provider = create_iam_credentials_provider(
119
+ IAMCredentialsProviderInput(
120
+ service_name=SupportedServiceType.LOCK_STORE,
121
+ username=config.username,
122
+ cluster_name=os.getenv(AWS_ELASTICACHE_CLUSTER_NAME_ENV_VAR_NAME),
123
+ )
124
+ )
125
+
126
+ if deployment_mode_enum == DeploymentMode.CLUSTER:
127
+ cls._log_cluster_db_warning(deployment_mode_enum, config.db)
128
+ cluster_config = ClusterRedisConfig(
129
+ username=config.username,
130
+ password=config.password,
131
+ use_ssl=config.use_ssl,
132
+ ssl_certfile=config.ssl_certfile,
133
+ ssl_keyfile=config.ssl_keyfile,
134
+ ssl_ca_certs=config.ssl_ca_certs,
135
+ db=config.db,
136
+ socket_timeout=config.socket_timeout,
137
+ decode_responses=config.decode_responses,
138
+ endpoints=parsed_endpoints,
139
+ iam_credentials_provider=iam_credentials_provider,
140
+ )
141
+ return cls._create_cluster_connection(cluster_config)
142
+ elif deployment_mode_enum == DeploymentMode.SENTINEL:
143
+ sentinel_kwargs = {
144
+ "username": config.username,
145
+ "password": config.password,
146
+ "use_ssl": config.use_ssl,
147
+ "ssl_certfile": config.ssl_certfile,
148
+ "ssl_keyfile": config.ssl_keyfile,
149
+ "ssl_ca_certs": config.ssl_ca_certs,
150
+ "db": config.db,
151
+ "socket_timeout": config.socket_timeout,
152
+ "decode_responses": config.decode_responses,
153
+ "endpoints": parsed_endpoints,
154
+ "iam_credentials_provider": iam_credentials_provider,
155
+ }
156
+
157
+ if config.sentinel_service is not None:
158
+ sentinel_kwargs["sentinel_service"] = config.sentinel_service
159
+
160
+ sentinel_config = SentinelRedisConfig(**sentinel_kwargs)
161
+ return cls._create_sentinel_connection(sentinel_config)
162
+ else:
163
+ standard_config = StandardRedisConfig(
164
+ host=config.host,
165
+ port=config.port,
166
+ username=config.username,
167
+ password=config.password,
168
+ use_ssl=config.use_ssl,
169
+ ssl_certfile=config.ssl_certfile,
170
+ ssl_keyfile=config.ssl_keyfile,
171
+ ssl_ca_certs=config.ssl_ca_certs,
172
+ db=config.db,
173
+ socket_timeout=config.socket_timeout,
174
+ decode_responses=config.decode_responses,
175
+ iam_credentials_provider=iam_credentials_provider,
176
+ )
177
+ return cls._create_standard_connection(standard_config)
178
+
179
+ @classmethod
180
+ def _parse_and_validate_endpoints(
181
+ cls,
182
+ deployment_mode: DeploymentMode,
183
+ endpoints: List[str],
184
+ host: Text,
185
+ port: int,
186
+ ) -> List[Union[Dict[str, Any], Tuple[str, int]]]:
187
+ """Parse and validate endpoints based on deployment mode."""
188
+ if deployment_mode == DeploymentMode.STANDARD:
189
+ if endpoints:
190
+ structlogger.warning(
191
+ "redis_connection_factory.standard_endpoints_ignored",
192
+ event_info="Parameter `endpoints` ignored in standard mode. "
193
+ "Only 'host' and 'port' are used for standard Redis connections.",
194
+ )
195
+ return []
196
+
197
+ if not endpoints:
198
+ endpoints = cls._get_default_endpoints(deployment_mode, host, port)
199
+
200
+ # Parse endpoints into appropriate format
201
+ parsed_endpoints = cls._parse_all_endpoints(endpoints, deployment_mode)
202
+
203
+ if not parsed_endpoints:
204
+ raise RasaException(
205
+ f"No valid '{deployment_mode.value}' endpoints provided"
206
+ )
207
+
208
+ return parsed_endpoints
209
+
210
+ @classmethod
211
+ def _get_default_endpoints(
212
+ cls,
213
+ deployment_mode: DeploymentMode,
214
+ host: Text,
215
+ port: int,
216
+ ) -> List[str]:
217
+ """Get default endpoints when none provided."""
218
+ if deployment_mode == DeploymentMode.CLUSTER:
219
+ structlogger.warning(
220
+ "redis_connection_factory.cluster_endpoints_not_provided",
221
+ event_info="No endpoints provided for cluster mode. "
222
+ "Using default 'host:port' configuration.",
223
+ )
224
+ return [f"{host}:{port}"]
225
+ elif deployment_mode == DeploymentMode.SENTINEL:
226
+ raise RasaException("Sentinel mode requires endpoints configuration")
227
+
228
+ return []
229
+
230
+ @classmethod
231
+ def _parse_single_endpoint(
232
+ cls, endpoint: str, deployment_mode: DeploymentMode
233
+ ) -> Optional[Union[Dict[str, Any], Tuple[str, int]]]:
234
+ """Parse a single endpoint string into the appropriate format."""
235
+ if not isinstance(endpoint, str):
236
+ structlogger.warning(
237
+ f"redis_connection_factory.invalid_{deployment_mode.value}_endpoint_type",
238
+ event_info=f"Invalid endpoint type for endpoint '{endpoint}'. "
239
+ "Expected string in 'host:port' format.",
240
+ )
241
+ return None
242
+
243
+ if ":" not in endpoint:
244
+ structlogger.warning(
245
+ f"redis_connection_factory.invalid_{deployment_mode.value}_endpoint_format",
246
+ event_info=f"Invalid format for endpoint '{endpoint}'. "
247
+ "Expected 'host:port'.",
248
+ )
249
+ return None
250
+
251
+ host, port_str = endpoint.rsplit(":", 1)
252
+ try:
253
+ port = int(port_str)
254
+ except ValueError:
255
+ structlogger.warning(
256
+ f"redis_connection_factory.invalid_{deployment_mode.value}_endpoint",
257
+ event_info=f"Invalid port in endpoint '{endpoint}'. "
258
+ "Expected format 'host:port'.",
259
+ )
260
+ return None
261
+
262
+ return (host, port)
263
+
264
+ @classmethod
265
+ def _parse_all_endpoints(
266
+ cls,
267
+ endpoints: List[str],
268
+ deployment_mode: DeploymentMode,
269
+ ) -> List[Union[Dict[str, Any], Tuple[str, int]]]:
270
+ """Parse a list of endpoint strings into appropriate format."""
271
+ parsed_endpoints = []
272
+ for endpoint in endpoints:
273
+ parsed = cls._parse_single_endpoint(endpoint, deployment_mode)
274
+ if parsed:
275
+ parsed_endpoints.append(parsed)
276
+ return parsed_endpoints
277
+
278
+ @classmethod
279
+ def _create_cluster_connection(
280
+ cls,
281
+ config: ClusterRedisConfig,
282
+ ) -> redis.RedisCluster:
283
+ """Create a Redis Cluster connection.
284
+
285
+ Note: Database parameter is ignored in cluster mode (always uses db=0).
286
+
287
+ Args:
288
+ config: Cluster configuration containing all connection parameters.
289
+
290
+ Returns:
291
+ redis.RedisCluster: Configured cluster connection.
292
+
293
+ Raises:
294
+ ConnectionException: If cluster initialization fails.
295
+ """
296
+ from redis.cluster import ClusterNode
297
+
298
+ structlogger.info(
299
+ "redis_connection_factory.cluster_mode",
300
+ event_info=f"Initializing Redis Cluster with {len(config.endpoints)} nodes",
301
+ )
302
+
303
+ cluster_nodes = [ClusterNode(host, port) for host, port in config.endpoints]
304
+
305
+ common_config_kwargs = {
306
+ "startup_nodes": cluster_nodes,
307
+ "ssl": config.use_ssl,
308
+ "ssl_certfile": config.ssl_certfile,
309
+ "ssl_keyfile": config.ssl_keyfile,
310
+ "ssl_ca_certs": config.ssl_ca_certs,
311
+ "socket_timeout": config.socket_timeout,
312
+ "decode_responses": config.decode_responses,
313
+ }
314
+
315
+ try:
316
+ if config.iam_credentials_provider is not None:
317
+ structlogger.debug("redis_connection_factory.cluster_iam_auth_enabled")
318
+
319
+ redis_cluster: redis.RedisCluster = redis.RedisCluster(
320
+ credential_provider=config.iam_credentials_provider,
321
+ **common_config_kwargs,
322
+ )
323
+ else:
324
+ redis_cluster = redis.RedisCluster(
325
+ username=config.username,
326
+ password=config.password,
327
+ **common_config_kwargs,
328
+ )
329
+ except Exception as e:
330
+ raise ConnectionException(f"Error initializing Redis Cluster: {e}")
331
+
332
+ return redis_cluster
333
+
334
+ @classmethod
335
+ def _create_sentinel_connection(
336
+ cls,
337
+ config: SentinelRedisConfig,
338
+ ) -> redis.Redis:
339
+ """Create a Sentinel-managed Redis connection.
340
+
341
+ Connects to Redis master through Sentinel service discovery.
342
+ Tests connection with ping() before returning.
343
+
344
+ Args:
345
+ config: Sentinel configuration containing all connection parameters.
346
+
347
+ Returns:
348
+ redis.Redis: Connection to the Redis master via sentinel.
349
+
350
+ Raises:
351
+ ConnectionException: If sentinel initialization or connection test fails.
352
+ """
353
+ from redis.sentinel import Sentinel
354
+
355
+ structlogger.info(
356
+ "redis_connection_factory.sentinel_mode",
357
+ event_info=f"Initializing Redis Sentinel with {len(config.endpoints)} "
358
+ f"sentinel endpoints and service: {config.sentinel_service}",
359
+ )
360
+
361
+ # Configuration for Sentinel connection
362
+ connection_kwargs: Dict[str, Any] = {
363
+ "socket_timeout": config.socket_timeout,
364
+ }
365
+
366
+ sentinel_kwargs: Optional[Dict] = None
367
+ if config.iam_credentials_provider is not None:
368
+ structlogger.debug("redis_connection_factory.sentinel_iam_auth_enabled")
369
+ sentinel_kwargs = {"credential_provider": config.iam_credentials_provider}
370
+ else:
371
+ connection_kwargs.update(
372
+ {
373
+ "username": config.username,
374
+ "password": config.password,
375
+ }
376
+ )
377
+
378
+ # SSL configuration
379
+ if config.use_ssl:
380
+ connection_kwargs.update(
381
+ {
382
+ "ssl": config.use_ssl,
383
+ "ssl_certfile": config.ssl_certfile,
384
+ "ssl_keyfile": config.ssl_keyfile,
385
+ "ssl_ca_certs": config.ssl_ca_certs,
386
+ }
387
+ )
388
+
389
+ # Configuration for Redis client (master/replica)
390
+ client_kwargs = {
391
+ "db": config.db,
392
+ "decode_responses": config.decode_responses,
393
+ "socket_timeout": config.socket_timeout,
394
+ }
395
+
396
+ # Create Sentinel instance
397
+ try:
398
+ sentinel = Sentinel(
399
+ config.endpoints, sentinel_kwargs=sentinel_kwargs, **connection_kwargs
400
+ )
401
+ master = sentinel.master_for(config.sentinel_service, **client_kwargs)
402
+
403
+ # Test the connection
404
+ master.ping()
405
+
406
+ except Exception as e:
407
+ raise ConnectionException(f"Error initializing Redis Sentinel: {e}")
408
+
409
+ return master
410
+
411
+ @classmethod
412
+ def _create_standard_connection(
413
+ cls,
414
+ config: StandardRedisConfig,
415
+ ) -> redis.Redis:
416
+ """Create a standard Redis connection.
417
+
418
+ Args:
419
+ config: Standard configuration containing all connection parameters.
420
+
421
+ Returns:
422
+ redis.Redis: Configured Redis connection.
423
+ """
424
+ structlogger.info(
425
+ "redis_connection_factory.standard_mode",
426
+ event_info="Initializing Redis connection",
427
+ )
428
+ # Build connection arguments
429
+ connection_args: Dict[str, Any] = {
430
+ "host": config.host,
431
+ "port": int(config.port),
432
+ "db": config.db,
433
+ "socket_timeout": float(config.socket_timeout),
434
+ "ssl": config.use_ssl,
435
+ "ssl_certfile": config.ssl_certfile,
436
+ "ssl_keyfile": config.ssl_keyfile,
437
+ "ssl_ca_certs": config.ssl_ca_certs,
438
+ "decode_responses": config.decode_responses,
439
+ }
440
+
441
+ if config.iam_credentials_provider is not None:
442
+ structlogger.debug("redis_connection_factory.standard_iam_auth_enabled")
443
+ connection_args.update(
444
+ {"credential_provider": config.iam_credentials_provider}
445
+ )
446
+ else:
447
+ connection_args.update(
448
+ {
449
+ "password": config.password,
450
+ "username": config.username,
451
+ }
452
+ )
453
+
454
+ try:
455
+ standard_redis = redis.StrictRedis(**connection_args)
456
+ except Exception as e:
457
+ raise ConnectionException(f"Error initializing Redis connection: {e}")
458
+
459
+ return standard_redis
460
+
461
+ @classmethod
462
+ def _log_cluster_db_warning(cls, deployment_mode: DeploymentMode, db: int) -> None:
463
+ """Log warning if db parameter is set in cluster mode."""
464
+ if deployment_mode == DeploymentMode.CLUSTER and db != 0:
465
+ structlogger.warning(
466
+ "redis_connection_factory.cluster_db_ignored",
467
+ event_info=f"Database parameter 'db={db}' ignored in cluster mode. "
468
+ "Redis Cluster only supports database 0.",
469
+ )
rasa/core/run.py CHANGED
@@ -30,34 +30,35 @@ from rasa import server, telemetry
30
30
  from rasa.constants import ENV_SANIC_BACKLOG
31
31
  from rasa.core import agent, channels, constants
32
32
  from rasa.core.agent import Agent
33
- from rasa.core.available_endpoints import AvailableEndpoints
33
+ from rasa.core.available_agents import AvailableAgents
34
34
  from rasa.core.channels import console
35
35
  from rasa.core.channels.channel import InputChannel
36
36
  from rasa.core.channels.development_inspector import DevelopmentInspectProxy
37
+ from rasa.core.config.available_endpoints import AvailableEndpoints
38
+ from rasa.core.config.credentials import CredentialsConfig
37
39
  from rasa.core.persistor import StorageType
38
40
  from rasa.shared.exceptions import RasaException
39
- from rasa.shared.utils.yaml import read_config_file
40
41
  from rasa.utils import licensing
41
42
 
42
43
  logger = logging.getLogger() # get the root logger
43
44
 
44
45
 
45
46
  def create_input_channels(
46
- channel: Optional[Text], credentials_file: Optional[Text]
47
+ channel: Optional[Text], credentials_config: Optional[CredentialsConfig]
47
48
  ) -> List[InputChannel]:
48
49
  """Instantiate the chosen input channel.
49
50
 
50
51
  Args:
51
52
  channel (optional): The name of the specific input channel to create.
52
- credentials_file: Path to the credentials file containing channel credentials.
53
+ credentials_config: CredentialsConfig object containing channel credentials.
53
54
 
54
55
  Returns:
55
56
  A list of instantiated input channels. If a specific channel is provided,
56
57
  it returns a list with that single channel. If no channel is specified,
57
58
  it returns a list of all channels defined in the credentials file.
58
59
  """
59
- if credentials_file:
60
- all_credentials = read_config_file(credentials_file)
60
+ if credentials_config:
61
+ all_credentials = credentials_config.channels
61
62
  else:
62
63
  all_credentials = {}
63
64
  if channel:
@@ -96,10 +97,32 @@ def _create_single_channel(
96
97
  """
97
98
  from rasa.core.channels import BUILTIN_CHANNELS
98
99
 
100
+ # Channels that have optional dependencies
101
+ channels_with_optional_deps = {
102
+ "facebook": "fbmessenger",
103
+ "slack": "slack-sdk",
104
+ "telegram": "aiogram",
105
+ "twilio": "twilio",
106
+ "twilio_voice": "twilio",
107
+ "twilio_media_streams": "twilio",
108
+ "webexteams": "webexteamssdk",
109
+ "vier_cvg": "cvg_sdk",
110
+ }
111
+
99
112
  if channel in BUILTIN_CHANNELS:
100
113
  channel_class = BUILTIN_CHANNELS[channel]
101
114
 
102
115
  return channel_class.from_credentials(credentials)
116
+ elif channel in channels_with_optional_deps:
117
+ # Channel is known but not available due to missing dependency
118
+ dependency = channels_with_optional_deps[channel]
119
+ raise RasaException(
120
+ f"Channel '{channel}' is not available "
121
+ f"due to missing '{dependency}' dependency. "
122
+ f"Please install the required extra by running: "
123
+ f"pip install 'rasa-pro[channels]' OR "
124
+ f"poetry add 'rasa-pro[channels]'"
125
+ )
103
126
  else:
104
127
  # try to load channel based on class name
105
128
  try:
@@ -151,6 +174,7 @@ def configure_app(
151
174
  route: Optional[Text] = "/webhooks/",
152
175
  port: int = constants.DEFAULT_SERVER_PORT,
153
176
  endpoints: Optional[AvailableEndpoints] = None,
177
+ sub_agents: Optional[AvailableAgents] = None,
154
178
  log_file: Optional[Text] = None,
155
179
  conversation_id: Optional[Text] = uuid.uuid4().hex,
156
180
  use_syslog: bool = False,
@@ -179,6 +203,7 @@ def configure_app(
179
203
  jwt_private_key=jwt_private_key,
180
204
  jwt_method=jwt_method,
181
205
  endpoints=endpoints,
206
+ sub_agents=sub_agents,
182
207
  is_inspector_enabled=is_inspector_enabled,
183
208
  )
184
209
  )
@@ -234,7 +259,7 @@ def serve_application(
234
259
  channel: Optional[Text] = None,
235
260
  interface: Optional[Text] = constants.DEFAULT_SERVER_INTERFACE,
236
261
  port: int = constants.DEFAULT_SERVER_PORT,
237
- credentials: Optional[Text] = None,
262
+ credentials: Optional[CredentialsConfig] = None,
238
263
  cors: Optional[Union[Text, List[Text]]] = None,
239
264
  auth_token: Optional[Text] = None,
240
265
  enable_api: bool = True,
@@ -243,6 +268,7 @@ def serve_application(
243
268
  jwt_private_key: Optional[Text] = None,
244
269
  jwt_method: Optional[Text] = None,
245
270
  endpoints: Optional[AvailableEndpoints] = None,
271
+ sub_agents: Optional[AvailableAgents] = None,
246
272
  remote_storage: Optional[StorageType] = None,
247
273
  log_file: Optional[Text] = None,
248
274
  ssl_certificate: Optional[Text] = None,
@@ -283,6 +309,7 @@ def serve_application(
283
309
  jwt_method,
284
310
  port=port,
285
311
  endpoints=endpoints,
312
+ sub_agents=sub_agents,
286
313
  log_file=log_file,
287
314
  conversation_id=conversation_id,
288
315
  use_syslog=use_syslog,
@@ -302,7 +329,7 @@ def serve_application(
302
329
  logger.info(f"Starting Rasa server on {protocol}://{interface}:{port}")
303
330
 
304
331
  app.register_listener(
305
- partial(load_agent_on_start, model_path, endpoints, remote_storage),
332
+ partial(load_agent_on_start, model_path, endpoints, remote_storage, sub_agents),
306
333
  "before_server_start",
307
334
  )
308
335
 
@@ -340,6 +367,7 @@ async def load_agent_on_start(
340
367
  model_path: Text,
341
368
  endpoints: AvailableEndpoints,
342
369
  remote_storage: Optional[StorageType],
370
+ sub_agents: Optional[AvailableAgents],
343
371
  app: Sanic,
344
372
  loop: AbstractEventLoop,
345
373
  ) -> Agent:
@@ -352,6 +380,7 @@ async def load_agent_on_start(
352
380
  model_path=model_path,
353
381
  remote_storage=remote_storage,
354
382
  endpoints=endpoints,
383
+ sub_agents=sub_agents,
355
384
  loop=loop,
356
385
  )
357
386
 
rasa/core/test.py CHANGED
@@ -1281,6 +1281,10 @@ async def compare_models_in_dir(
1281
1281
  for k, v in number_correct_in_run.items():
1282
1282
  number_correct[k].append(v)
1283
1283
 
1284
+ logger.info("current working directory: " + os.getcwd())
1285
+ logger.info(
1286
+ f"Writing model comparison results to '{os.path.join(output, RESULTS_FILE)}'"
1287
+ )
1284
1288
  rasa.shared.utils.io.dump_obj_as_json_to_file(
1285
1289
  os.path.join(output, RESULTS_FILE), number_correct
1286
1290
  )
@@ -4,12 +4,19 @@ from datetime import datetime
4
4
  from typing import Any, Dict, Iterable, Optional, Text
5
5
 
6
6
  import structlog
7
+ from pydantic import ValidationError
7
8
 
8
9
  import rasa.shared
9
10
  from rasa.core.brokers.broker import EventBroker
11
+ from rasa.core.redis_connection_factory import (
12
+ DeploymentMode,
13
+ RedisConfig,
14
+ RedisConnectionFactory,
15
+ )
10
16
  from rasa.core.tracker_stores.tracker_store import SerializedTrackerAsText, TrackerStore
11
17
  from rasa.shared.core.domain import Domain
12
18
  from rasa.shared.core.trackers import DialogueStateTracker
19
+ from rasa.shared.exceptions import RasaException
13
20
 
14
21
  structlogger = structlog.get_logger(__name__)
15
22
 
@@ -35,23 +42,34 @@ class RedisTrackerStore(TrackerStore, SerializedTrackerAsText):
35
42
  ssl_keyfile: Optional[Text] = None,
36
43
  ssl_certfile: Optional[Text] = None,
37
44
  ssl_ca_certs: Optional[Text] = None,
45
+ deployment_mode: Text = DeploymentMode.STANDARD.value,
46
+ endpoints: Optional[list] = None,
47
+ sentinel_service: Optional[Text] = None,
38
48
  **kwargs: Dict[Text, Any],
39
49
  ) -> None:
40
50
  """Initializes the tracker store."""
41
- import redis
42
-
43
- self.red = redis.StrictRedis(
44
- host=host,
45
- port=port,
46
- db=db,
47
- username=username,
48
- password=password,
49
- ssl=use_ssl,
50
- ssl_keyfile=ssl_keyfile,
51
- ssl_certfile=ssl_certfile,
52
- ssl_ca_certs=ssl_ca_certs,
53
- decode_responses=True,
54
- )
51
+
52
+ # Create Redis connection using the factory directly
53
+ try:
54
+ config = RedisConfig(
55
+ host=host,
56
+ port=port,
57
+ db=db,
58
+ username=username,
59
+ password=password,
60
+ use_ssl=use_ssl,
61
+ ssl_keyfile=ssl_keyfile,
62
+ ssl_certfile=ssl_certfile,
63
+ ssl_ca_certs=ssl_ca_certs,
64
+ deployment_mode=deployment_mode,
65
+ endpoints=endpoints,
66
+ sentinel_service=sentinel_service,
67
+ decode_responses=True,
68
+ )
69
+ self.red = RedisConnectionFactory.create_connection(config)
70
+ except ValidationError as e:
71
+ raise RasaException(f"Invalid Redis configuration: {e}")
72
+
55
73
  self.record_exp = record_exp
56
74
 
57
75
  self.key_prefix = DEFAULT_REDIS_TRACKER_STORE_KEY_PREFIX