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,66 @@
1
+ ## Task Description
2
+ Your task is to analyze the current conversation context and generate a list of actions to start new business processes that we call flows, to extract slots, or respond to small talk and knowledge requests.
3
+
4
+ ---
5
+
6
+ ## Available Flows and Slots
7
+ Use the following structured data:
8
+ ```json
9
+ {"flows":[{% for flow in available_flows %}{"name":"{{ flow.name }}","description":{{ flow.description | to_json_escaped_string }}{% if flow.agent_info %},"sub-agents":[{% for agent in flow.agent_info %}{"name":"{{ agent.name }}","description":{{ agent.description | to_json_escaped_string }}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}{% if flow.slots %},"slots":[{% for slot in flow.slots %}{"name":"{{ slot.name }}"{% if slot.description %},"description":{{ slot.description | to_json_escaped_string }}{% endif %}{% if slot.allowed_values %},"allowed_values":{{ slot.allowed_values }}{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]}
10
+ ```
11
+
12
+ ---
13
+
14
+ ## Available Actions:
15
+ * `start flow flow_name`: Starting a flow. For example, `start flow transfer_money` or `start flow list_contacts`.
16
+ * `set slot slot_name slot_value`: Slot setting. For example, `set slot transfer_money_recipient Freddy`. Can be used to correct and change previously set values. ONLY use slots that are explicitly defined in the flow's slot list.
17
+ * `cancel flow`: Cancelling the current flow.
18
+ * `disambiguate flows flow_name1 flow_name2 ... flow_name_n`: Disambiguate which flow should be started when user input is ambiguous by listing the potential flows as options. For example, `disambiguate flows list_contacts add_contact remove_contact ...` if the user just wrote "contacts".
19
+ * `provide info`: Responding to the user's questions by supplying relevant information, such as answering FAQs or explaining services.
20
+ * `offtopic reply`: Responding to casual or social user messages that are unrelated to any flows, engaging in friendly conversation and addressing off-topic remarks.
21
+ * `hand over`: Handing over to a human, in case the user seems frustrated or explicitly asks to speak to one.
22
+ * `repeat message`: Repeating the last bot message.{% if active_agent %}
23
+ * `continue agent`: Continue the currently active agent {{ active_agent.name }}. This has HIGHEST PRIORITY when an agent is active and the user is responding to agent questions.{% endif %}{% if completed_agents %}
24
+ * `restart agent agent_name`: Restart the agent with the given name, in case the user wants to change some answer to a previous question asked by the agent. For example, `restart agent car_research_agent` if the user changed his mind about the car he wants to buy. ONLY use agents that are listed in the `completed_agents` section.{% endif %}
25
+
26
+ ---
27
+
28
+ ## General Tips
29
+ * Do not fill slots with abstract values or placeholders.
30
+ * For categorical slots try to match the user message with allowed slot values. Use "other" if you cannot match it.
31
+ * Set the boolean slots based on the user response. Map positive responses to `True`, and negative to `False`.
32
+ * Extract text slot values exactly as provided by the user. Avoid assumptions, format changes, or partial extractions.
33
+ * ONLY use `set slot` with slots that are explicitly defined in the current flow's slot list. Do NOT create or assume slots that don't exist.
34
+ * Only use information provided by the user.
35
+ * Use clarification in ambiguous cases.
36
+ * Multiple flows can be started. If a user wants to digress into a second flow, you do not need to cancel the current flow.
37
+ * Do not cancel the flow unless the user explicitly requests it.
38
+ * Strictly adhere to the provided action format.
39
+ * ONLY use the exact actions listed above. Do NOT invent new actions like "respond <message>" or any other variations.
40
+ * Focus on the last message and take it one step at a time.
41
+ * Use the previous conversation steps only to aid understanding.{% if active_agent %}
42
+ * When an agent is active, ALWAYS prioritize `continue agent` over `provide info` or `offtopic reply` unless the user is clearly asking something unrelated to the agent's task.{% endif %}{% if completed_agents %}
43
+ * ONLY use `restart agent` with agents that are listed in the `completed_agents` section. Do NOT restart non-existent agents.{% endif %}{% if active_agent or completed_agents %}
44
+ * If you're unsure about agent names, refer to the structured data provided in the `Current State` section.{% endif %}
45
+
46
+ ---
47
+
48
+ ## Current State
49
+ {% if current_flow != None %}
50
+ Use the following structured data:
51
+ ```json
52
+ {"active_flow":{"name":"{{ current_flow }}","current_step":{"requested_slot":"{{ current_slot }}","requested_slot_description":{{ current_slot_description | to_json_escaped_string }}},"slots":[{% for slot in flow_slots %}{"name":"{{ slot.name }}","value":"{{ slot.value }}","type":"{{ slot.type }}"{% if slot.description %},"description":{{ slot.description | to_json_escaped_string }}{% endif %}{% if slot.allowed_values %},"allowed_values":"{{ slot.allowed_values }}"{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]}{% if active_agent %},"active_agent":{"name":"{{ active_agent.name }}","description":{{ active_agent.description | to_json_escaped_string }}}{% endif %}{% if completed_agents %},"completed_agents":[{% for agent in completed_agents %}{"name":"{{ agent.name }}","description":{{ agent.description | to_json_escaped_string }}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}}
53
+ ```{% else %}
54
+ You are currently not inside any flow.{% endif %}
55
+
56
+ ---
57
+
58
+ ## Conversation History
59
+ {{ current_conversation }}
60
+
61
+ ---
62
+
63
+ ## Task
64
+ Create an action list with one action per line in response to the user's last message: """{{ user_message }}""".
65
+
66
+ Your action list:
@@ -0,0 +1,89 @@
1
+ ## Task Description
2
+ Your task is to analyze the current conversation context and generate a list of actions to start new business processes that we call flows, to extract slots, or respond to off-topic and knowledge requests.
3
+
4
+ ---
5
+
6
+ ## Available Actions:
7
+ * `start flow flow_name`: Start a flow. For example, `start flow transfer_money` or `start flow list_contacts`.
8
+ * `set slot slot_name slot_value`: Set a slot for the active flow. For example, `set slot transfer_money_recipient Freddy`. Can be used to correct and change previously set values. ONLY use slots that are explicitly defined in the flow's slot list.
9
+ * `disambiguate flows flow_name1 flow_name2 ... flow_name_n`: When a message could refer to multiple flows, list the possible flows as options to clarify. Example: `disambiguate flows list_contacts add_contact remove_contact`.
10
+ * `search and reply`: Provide a response from the knowledge base to address the user's inquiry when no flows fit, including domain knowledge, FAQs, and all off-topic or social messages.
11
+ * `cancel flow`: Cancel the current flow if the user requests it.
12
+ * `repeat message`: Repeat the last bot message.{% if active_agent %}
13
+ * `continue agent`: Continue the currently active agent {{ active_agent.name }}. This has HIGHEST PRIORITY when an agent is active and the user is responding to agent questions.{% endif %}{% if completed_agents %}
14
+ * `restart agent agent_name`: Restart the agent with the given name, in case the user wants to change some answer to a previous question asked by the agent. For example, `restart agent car_research_agent` if the user changed his mind about the car he wants to buy. ONLY use agents that are listed in the `completed_agents` section.{% endif %}
15
+
16
+ ---
17
+
18
+ ## General Instructions
19
+ ### Start Flow
20
+ * Only start a flow if the user's message is clear and fully addressed by that flow's description and purpose.
21
+ * Pay close attention to exact wording and scope in the flow description — do not assume or “stretch” the intended use of a flow.
22
+ ### Set Slot
23
+ * Do not fill slots with abstract values or placeholders.
24
+ * For categorical slots, try to match the user message with allowed slot values. Use "other" if you cannot match it.
25
+ * Set the boolean slots based on the user's response. Map positive responses to `True`, and negative to `False`.
26
+ * Extract text slot values exactly as provided by the user. Avoid assumptions, format changes, or partial extractions.
27
+ * ONLY use `set slot` with slots that are explicitly defined in the current flow's slot list. Do NOT create or assume slots that don't exist.
28
+ ### Disambiguate Flows
29
+ * Use `disambiguate flows` when the user's message matches multiple flows and you cannot decide which flow is most appropriate.
30
+ * If the user message is short and not precise enough to start a flow or `search and reply`, disambiguate.
31
+ * If a single flow is a strong/plausible fit, prefer starting that flow directly.
32
+ * If a user's message unambiguously and distinctly matches multiple flows, start all relevant flows at once (rather than disambiguating).
33
+ ### Search and Reply
34
+ * Only start `search and reply` if the user intent is clear.
35
+ * Flow Priority: If you are unsure between starting a flow or `search and reply`, always prioritize starting a flow.
36
+ ### Cancel Flow
37
+ * Do not cancel any flow unless the user explicitly requests it.
38
+ * Multiple flows can be started without cancelling the previous, if the user wants to pursue multiple processes.{% if active_agent or completed_agents %}
39
+ ### Agents{% if active_agent %}
40
+ * When an agent is active, ALWAYS prioritize `continue agent` over `search and reply` unless the user is clearly asking something unrelated to the agent's task.{% endif %}{% if completed_agents %}
41
+ * ONLY use `restart agent` with agents that are listed in the `completed_agents` section. Do NOT restart non-existent agents.{% endif %}
42
+ * If you're unsure about agent names, refer to the structured data provided in the `Current State` section.
43
+ {% endif %}### General Tips
44
+ * Only use information provided by the user.
45
+ * Strictly adhere to the provided action format.
46
+ * ONLY use the exact actions listed above. Do NOT invent new actions like "respond <message>" or any other variations.
47
+ * Focus on the last message and take it one step at a time.
48
+ * Use the previous conversation steps only to aid understanding.
49
+
50
+
51
+ ---
52
+
53
+ ## Decision Rule Table
54
+ | Condition | Action |
55
+ |---------------------------------------------------------------|--------------------|{% if active_agent %}
56
+ | Agent is active and the user is responding to agent questions | continue agent |{% endif %}
57
+ | Flow perfectly matches user's message | start flow |
58
+ | Multiple flows are equally strong, relevant matches | disambiguate flows |
59
+ | User's message is unclear or imprecise | disambiguate flows |
60
+ | No flow fits at all, but knowledge base may help | search and reply |
61
+
62
+ ---
63
+
64
+ ## Available Flows and Slots
65
+ Use the following structured data:
66
+ ```json
67
+ {"flows":[{% for flow in available_flows %}{"name":"{{ flow.name }}","description":{{ flow.description | to_json_escaped_string }}{% if flow.agent_info %},"sub-agents":[{% for agent in flow.agent_info %}{"name":"{{ agent.name }}","description":{{ agent.description | to_json_escaped_string }}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}{% if flow.slots %},"slots":[{% for slot in flow.slots %}{"name":"{{ slot.name }}"{% if slot.description %},"description":{{ slot.description | to_json_escaped_string }}{% endif %}{% if slot.allowed_values %},"allowed_values":{{ slot.allowed_values }}{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]}
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Current State
73
+ {% if current_flow != None %}Use the following structured data:
74
+ ```json
75
+ {"active_flow":{"name":"{{ current_flow }}","current_step":{"requested_slot":"{{ current_slot }}","requested_slot_description":{{ current_slot_description | to_json_escaped_string }}},"slots":[{% for slot in flow_slots %}{"name":"{{ slot.name }}","value":"{{ slot.value }}","type":"{{ slot.type }}"{% if slot.description %},"description":{{ slot.description | to_json_escaped_string }}{% endif %}{% if slot.allowed_values %},"allowed_values":"{{ slot.allowed_values }}"{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]}{% if active_agent %},"active_agent":{"name":"{{ active_agent.name }}","description":{{ active_agent.description | to_json_escaped_string }}}{% endif %}{% if completed_agents %},"completed_agents":[{% for agent in completed_agents %}{"name":"{{ agent.name }}","description":{{ agent.description | to_json_escaped_string }}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}}
76
+ ```{% else %}
77
+ You are currently not inside any flow.{% endif %}
78
+
79
+ ---
80
+
81
+ ## Conversation History
82
+ {{ current_conversation }}
83
+
84
+ ---
85
+
86
+ ## Task
87
+ Create an action list with one action per line in response to the user's last message: """{{ user_message }}""".
88
+
89
+ Your action list:
@@ -0,0 +1,88 @@
1
+ ## Task Description
2
+ Your task is to analyze the current conversation context and generate a list of actions to start new business processes that we call flows, to extract slots, or respond to off-topic and knowledge requests.
3
+
4
+ ---
5
+
6
+ ## Available Flows and Slots
7
+ Use the following structured data:
8
+ ```json
9
+ {"flows":[{% for flow in available_flows %}{"name":"{{ flow.name }}","description":{{ flow.description | to_json_escaped_string }}{% if flow.agent_info %},"sub-agents":[{% for agent in flow.agent_info %}{"name":"{{ agent.name }}","description":{{ agent.description | to_json_escaped_string }}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}{% if flow.slots %},"slots":[{% for slot in flow.slots %}{"name":"{{ slot.name }}"{% if slot.description %},"description":{{ slot.description | to_json_escaped_string }}{% endif %}{% if slot.allowed_values %},"allowed_values":{{ slot.allowed_values }}{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]}
10
+ ```
11
+
12
+ ---
13
+
14
+ ## Available Actions:
15
+ * `start flow flow_name`: Start a flow. For example, `start flow transfer_money` or `start flow list_contacts`.
16
+ * `set slot slot_name slot_value`: Set a slot for the active flow. For example, `set slot transfer_money_recipient Freddy`. Can be used to correct and change previously set values. ONLY use slots that are explicitly defined in the flow's slot list.
17
+ * `disambiguate flows flow_name1 flow_name2 ... flow_name_n`: When a message could refer to multiple flows, list the possible flows as options to clarify. Example: `disambiguate flows list_contacts add_contact remove_contact`.
18
+ * `search and reply`: Provide a response from the knowledge base to address the user’s inquiry when no flows fit, including domain knowledge, FAQs, and all off-topic or social messages.
19
+ * `cancel flow`: Cancel the current flow if the user requests it.
20
+ * `repeat message`: Repeat the last bot message.{% if active_agent %}
21
+ * `continue agent`: Continue the currently active agent {{ active_agent.name }}. This has HIGHEST PRIORITY when an agent is active and the user is responding to agent questions.{% endif %}{% if completed_agents %}
22
+ * `restart agent agent_name`: Restart the agent with the given name, in case the user wants to change some answer to a previous question asked by the agent. For example, `restart agent car_research_agent` if the user changed his mind about the car he wants to buy. ONLY use agents that are listed in the `completed_agents` section.{% endif %}
23
+
24
+ ---
25
+
26
+ ## General Instructions
27
+ ### Start Flow
28
+ * Only start a flow if the user's message is clear and fully addressed by that flow's description and purpose.
29
+ * Pay close attention to exact wording and scope in the flow description — do not assume or “stretch” the intended use of a flow.
30
+ ### Set Slot
31
+ * Do not fill slots with abstract values or placeholders.
32
+ * For categorical slots try to match the user message with allowed slot values. Use "other" if you cannot match it.
33
+ * Set the boolean slots based on the user response. Map positive responses to `True`, and negative to `False`.
34
+ * Extract text slot values exactly as provided by the user. Avoid assumptions, format changes, or partial extractions.
35
+ * ONLY use `set slot` with slots that are explicitly defined in the current flow's slot list. Do NOT create or assume slots that don't exist.
36
+ ### Disambiguate Flows
37
+ * Use `disambiguate flows` when the user's message matches multiple flows and you cannot decide which flow is most appropriate.
38
+ * If the user message is short and not precise enough to start a flow or `search and reply`, disambiguate.
39
+ * If a single flow is a strong/plausible fit, prefer starting that flow directly.
40
+ * If a user's message unambiguously and distinctly matches multiple flows, start all relevant flows at once (rather than disambiguating).
41
+ ### Search and Reply
42
+ * Only start `search and reply` if the user intent is clear.
43
+ * Flow Priority: If you are unsure between starting a flow or `search and reply`, always prioritize starting a flow.
44
+ ### Cancel Flow
45
+ * Do not cancel any flow unless the user explicitly requests it.
46
+ * Multiple flows can be started without cancelling the previous, if the user wants to pursue multiple processes.{% if active_agent or completed_agents %}
47
+ ### Agents{% if active_agent %}
48
+ * When an agent is active, ALWAYS prioritize `continue agent` over `search and reply` unless the user is clearly asking something unrelated to the agent's task.{% endif %}{% if completed_agents %}
49
+ * ONLY use `restart agent` with agents that are listed in the `completed_agents` section. Do NOT restart non-existent agents.{% endif %}
50
+ * If you're unsure about agent names, refer to the structured data provided in the `Current State` section.
51
+ {% endif %}### General Tips
52
+ * Only use information provided by the user.
53
+ * Strictly adhere to the provided action format.
54
+ * ONLY use the exact actions listed above. Do NOT invent new actions like "respond <message>" or any other variations.
55
+ * Focus on the last message and take it one step at a time.
56
+ * Use the previous conversation steps only to aid understanding.
57
+
58
+ ---
59
+
60
+ ## Decision Rule Table
61
+ | Condition | Action |
62
+ |---------------------------------------------------------------|--------------------|{% if active_agent %}
63
+ | Agent is active and the user is responding to agent questions | continue agent |{% endif %}
64
+ | Flow perfectly matches user's message | start flow |
65
+ | Multiple flows are equally strong, relevant matches | disambiguate flows |
66
+ | User's message is unclear or imprecise | disambiguate flows |
67
+ | No flow fits at all, but knowledge base may help | search and reply |
68
+
69
+ ---
70
+
71
+ ## Current State
72
+ {% if current_flow != None %}Use the following structured data:
73
+ ```json
74
+ {"active_flow":{"name":"{{ current_flow }}","current_step":{"requested_slot":"{{ current_slot }}","requested_slot_description":{{ current_slot_description | to_json_escaped_string }}},"slots":[{% for slot in flow_slots %}{"name":"{{ slot.name }}","value":"{{ slot.value }}","type":"{{ slot.type }}"{% if slot.description %},"description":{{ slot.description | to_json_escaped_string }}{% endif %}{% if slot.allowed_values %},"allowed_values":"{{ slot.allowed_values }}"{% endif %}}{% if not loop.last %},{% endif %}{% endfor %}]}{% if active_agent %},"active_agent":{"name":"{{ active_agent.name }}","description":{{ active_agent.description | to_json_escaped_string }}}{% endif %}{% if completed_agents %},"completed_agents":[{% for agent in completed_agents %}{"name":"{{ agent.name }}","description":{{ agent.description | to_json_escaped_string }}}{% if not loop.last %},{% endif %}{% endfor %}]{% endif %}}
75
+ ```{% else %}
76
+ You are currently not inside any flow.{% endif %}
77
+
78
+ ---
79
+
80
+ ## Conversation History
81
+ {{ current_conversation }}
82
+
83
+ ---
84
+
85
+ ## Task
86
+ Create an action list with one action per line in response to the user's last message: """{{ user_message }}""".
87
+
88
+ Your action list:
@@ -2,6 +2,7 @@ from typing import Any, Dict, Literal, Optional, Text
2
2
 
3
3
  import structlog
4
4
 
5
+ from rasa.core.available_agents import AvailableAgents
5
6
  from rasa.dialogue_understanding.commands.command_syntax_manager import (
6
7
  CommandSyntaxVersion,
7
8
  )
@@ -45,6 +46,7 @@ DEFAULT_LLM_CONFIG = {
45
46
  TIMEOUT_CONFIG_KEY: 7,
46
47
  }
47
48
 
49
+ # Non-agent default prompt mapping (used by default)
48
50
  MODEL_PROMPT_MAPPER = {
49
51
  f"{OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
50
52
  "command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
@@ -60,16 +62,38 @@ MODEL_PROMPT_MAPPER = {
60
62
  ),
61
63
  }
62
64
 
63
- # When model is not configured, then we use the default prompt template
65
+ # Agentic prompt mapping (used only when agents are configured)
66
+ AGENT_MODEL_PROMPT_MAPPER = {
67
+ f"{OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
68
+ "agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
69
+ ),
70
+ f"{AZURE_OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
71
+ "agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
72
+ ),
73
+ f"{AWS_BEDROCK_PROVIDER}/anthropic.{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}-v1:0": (
74
+ "agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2"
75
+ ),
76
+ f"{ANTHROPIC_PROVIDER}/{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}": (
77
+ "agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2"
78
+ ),
79
+ }
80
+
81
+ # Defaults for non-agent prompts
64
82
  DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
65
83
  "command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
66
84
  )
67
- # When the configured model is not found in the model prompt mapper, then we use the
68
- # fallback prompt template
69
85
  FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
70
86
  "command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
71
87
  )
72
88
 
89
+ # Defaults for agentic prompts
90
+ AGENT_DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
91
+ "agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
92
+ )
93
+ AGENT_FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
94
+ "agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
95
+ )
96
+
73
97
 
74
98
  @DefaultV1Recipe.register(
75
99
  [
@@ -99,17 +123,29 @@ class CompactLLMCommandGenerator(SingleStepBasedLLMCommandGenerator):
99
123
  @staticmethod
100
124
  def get_default_prompt_template_file_name() -> str:
101
125
  """Get the default prompt template file name for the command generator."""
102
- return DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME
126
+ return (
127
+ AGENT_DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME
128
+ if AvailableAgents.has_agents()
129
+ else DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME
130
+ )
103
131
 
104
132
  @staticmethod
105
133
  def get_fallback_prompt_template_file_name() -> str:
106
134
  """Get the fallback prompt template file name for the command generator."""
107
- return FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME
135
+ return (
136
+ AGENT_FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME
137
+ if AvailableAgents.has_agents()
138
+ else FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME
139
+ )
108
140
 
109
141
  @staticmethod
110
142
  def get_model_prompt_mapper() -> Dict[str, str]:
111
143
  """Get the model prompt mapper for the command generator."""
112
- return MODEL_PROMPT_MAPPER
144
+ return (
145
+ AGENT_MODEL_PROMPT_MAPPER
146
+ if AvailableAgents.has_agents()
147
+ else MODEL_PROMPT_MAPPER
148
+ )
113
149
 
114
150
  @staticmethod
115
151
  def get_default_llm_config() -> Dict[str, Any]:
@@ -132,7 +168,6 @@ class CompactLLMCommandGenerator(SingleStepBasedLLMCommandGenerator):
132
168
  if prompt_template is not None:
133
169
  return prompt_template
134
170
 
135
- # Get the default prompt template based on the model name.
136
171
  default_command_prompt_template = get_default_prompt_template_based_on_model(
137
172
  llm_config=config.get(LLM_CONFIG_KEY, {}) or {},
138
173
  model_prompt_mapping=cls.get_model_prompt_mapper(),
@@ -2,6 +2,7 @@ from typing import Any, Dict, Literal, Optional, Text
2
2
 
3
3
  import structlog
4
4
 
5
+ from rasa.core.available_agents import AvailableAgents
5
6
  from rasa.dialogue_understanding.commands.command_syntax_manager import (
6
7
  CommandSyntaxVersion,
7
8
  )
@@ -44,6 +45,7 @@ DEFAULT_LLM_CONFIG = {
44
45
  TIMEOUT_CONFIG_KEY: 7,
45
46
  }
46
47
 
48
+ # Non-agent defaults
47
49
  DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
48
50
  "command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
49
51
  )
@@ -66,6 +68,29 @@ MODEL_PROMPT_MAPPER = {
66
68
  ),
67
69
  }
68
70
 
71
+ # Agentic mapping and defaults (used only when agents exist)
72
+ AGENT_DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
73
+ "agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
74
+ )
75
+ AGENT_FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
76
+ "agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
77
+ )
78
+ AGENT_MODEL_PROMPT_MAPPER = {
79
+ f"{OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
80
+ "agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
81
+ ),
82
+ f"{AZURE_OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
83
+ "agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
84
+ ),
85
+ f"{AWS_BEDROCK_PROVIDER}/anthropic."
86
+ f"{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}-v1:0": (
87
+ "agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2"
88
+ ),
89
+ f"{ANTHROPIC_PROVIDER}/{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}": (
90
+ "agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2"
91
+ ),
92
+ }
93
+
69
94
 
70
95
  @DefaultV1Recipe.register(
71
96
  [
@@ -100,17 +125,29 @@ class SearchReadyLLMCommandGenerator(SingleStepBasedLLMCommandGenerator):
100
125
  @staticmethod
101
126
  def get_default_prompt_template_file_name() -> str:
102
127
  """Get the default prompt template file name for the command generator."""
103
- return DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME
128
+ return (
129
+ AGENT_DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME
130
+ if AvailableAgents.has_agents()
131
+ else DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME
132
+ )
104
133
 
105
134
  @staticmethod
106
135
  def get_fallback_prompt_template_file_name() -> str:
107
136
  """Get the fallback prompt template file name for the command generator."""
108
- return FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME
137
+ return (
138
+ AGENT_FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME
139
+ if AvailableAgents.has_agents()
140
+ else FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME
141
+ )
109
142
 
110
143
  @staticmethod
111
144
  def get_model_prompt_mapper() -> Dict[str, str]:
112
145
  """Get the model prompt mapper for the command generator."""
113
- return MODEL_PROMPT_MAPPER
146
+ return (
147
+ AGENT_MODEL_PROMPT_MAPPER
148
+ if AvailableAgents.has_agents()
149
+ else MODEL_PROMPT_MAPPER
150
+ )
114
151
 
115
152
  @staticmethod
116
153
  def get_component_command_syntax_version() -> CommandSyntaxVersion:
@@ -5,6 +5,11 @@ from typing import Any, Dict, List, Literal, Optional, Text
5
5
  import structlog
6
6
 
7
7
  import rasa.shared.utils.io
8
+ from rasa.agents.utils import (
9
+ get_active_agent_info,
10
+ get_completed_agents_info,
11
+ )
12
+ from rasa.core.available_agents import AvailableAgents
8
13
  from rasa.dialogue_understanding.commands import (
9
14
  CannotHandleCommand,
10
15
  Command,
@@ -232,6 +237,8 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
232
237
  log_module=self.__class__.__name__,
233
238
  log_event="llm_command_generator.predict_commands.finished",
234
239
  commands=commands,
240
+ event_info="Commands predictd by the Command Generator",
241
+ highlight=True,
235
242
  )
236
243
 
237
244
  domain = kwargs.get("domain")
@@ -396,13 +403,18 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
396
403
  current_slot_allowed_values = allowed_values_for_slot(
397
404
  tracker.slots.get(current_slot)
398
405
  )
399
- current_conversation = tracker_as_readable_transcript(tracker)
406
+ has_agents = AvailableAgents.has_agents()
407
+ current_conversation = tracker_as_readable_transcript(
408
+ tracker, highlight_agent_turns=has_agents
409
+ )
400
410
  latest_user_message = sanitize_message_for_prompt(message.get(TEXT))
401
411
  current_conversation += f"\nUSER: {latest_user_message}"
402
412
 
403
- inputs = {
413
+ inputs: Dict[str, Any] = {
404
414
  "available_flows": self.prepare_flows_for_template(
405
- startable_flows, tracker
415
+ startable_flows,
416
+ tracker,
417
+ add_agent_info=has_agents,
406
418
  ),
407
419
  "current_conversation": current_conversation,
408
420
  "flow_slots": flow_slots,
@@ -413,6 +425,11 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
413
425
  "current_slot_allowed_values": current_slot_allowed_values,
414
426
  "user_message": latest_user_message,
415
427
  }
428
+ if has_agents:
429
+ inputs["active_agent"] = (
430
+ get_active_agent_info(tracker, top_flow.id) if top_flow else None
431
+ )
432
+ inputs["completed_agents"] = get_completed_agents_info(tracker)
416
433
 
417
434
  return self.compile_template(self.prompt_template).render(**inputs)
418
435
 
@@ -8,10 +8,12 @@ import structlog
8
8
  from rasa.core.actions import action
9
9
  from rasa.core.channels.channel import OutputChannel
10
10
  from rasa.core.nlg.generator import NaturalLanguageGenerator
11
+ from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
11
12
  from rasa.dialogue_understanding.stack.frames import (
12
13
  BaseFlowStackFrame,
13
14
  PatternFlowStackFrame,
14
15
  )
16
+ from rasa.dialogue_understanding.stack.frames.flow_stack_frame import AgentStackFrame
15
17
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
16
18
  from rasa.shared.core.constants import ACTION_CANCEL_FLOW
17
19
  from rasa.shared.core.domain import Domain
@@ -30,7 +32,8 @@ class CancelPatternFlowStackFrame(PatternFlowStackFrame):
30
32
  """A pattern flow stack frame which cancels a flow.
31
33
 
32
34
  The frame contains the information about the stack frames that should
33
- be canceled."""
35
+ be canceled.
36
+ """
34
37
 
35
38
  flow_id: str = FLOW_PATTERN_CANCEL
36
39
  """The ID of the flow."""
@@ -93,19 +96,37 @@ class ActionCancelFlow(action.Action):
93
96
  structlogger.warning("action.cancel_flow.no_cancel_frame")
94
97
  return []
95
98
 
99
+ agent_frame_ids_to_cancel = []
96
100
  for canceled_frame_id in top.canceled_frames:
97
101
  for frame in stack.frames:
98
102
  if frame.frame_id == canceled_frame_id and isinstance(
99
103
  frame, BaseFlowStackFrame
100
104
  ):
101
- # Setting the stack frame to the end step so it is properly
102
- # wrapped up by the flow policy
103
- frame.step_id = ContinueFlowStep.continue_step_for_id(END_STEP)
104
- break
105
+ if isinstance(frame, AgentStackFrame):
106
+ # When an AgentStackFrame needs to be canceled, we can
107
+ # remove it directly from the stack. No extra logic is
108
+ # required in the flow executor, since
109
+ # the AgentCanceled event has already been created by
110
+ # ActionCancelInterruptedFlows or CancelFlowCommand, and the
111
+ # steps following the agentic call step should not be executed.
112
+ agent_frame_ids_to_cancel.append(frame.frame_id)
113
+ break
114
+ else:
115
+ # Setting the stack frame to the end step so it is
116
+ # properly wrapped up by the flow policy
117
+ frame.step_id = ContinueFlowStep.continue_step_for_id(END_STEP)
118
+ break
105
119
  else:
106
120
  structlogger.warning(
107
121
  "action.cancel_flow.frame_not_found",
108
122
  frame_id=canceled_frame_id,
109
123
  )
110
124
 
111
- return tracker.create_stack_updated_events(stack)
125
+ # Create a copy of the stack without the agentic frames that should
126
+ # be canceled
127
+ new_stack = DialogueStack.empty()
128
+ for frame in stack.frames:
129
+ if frame.frame_id not in agent_frame_ids_to_cancel:
130
+ new_stack.push(frame)
131
+
132
+ return tracker.create_stack_updated_events(new_stack)
@@ -61,19 +61,6 @@ class ActionClarifyFlows(action.Action):
61
61
  """Return the flow name."""
62
62
  return ACTION_CLARIFY_FLOWS
63
63
 
64
- @staticmethod
65
- def assemble_options_string(names: List[str]) -> str:
66
- """Concatenate options to a human-readable string."""
67
- clarification_message = ""
68
- for i, name in enumerate(names):
69
- if i == 0:
70
- clarification_message += name
71
- elif i == len(names) - 1:
72
- clarification_message += f" or {name}"
73
- else:
74
- clarification_message += f", {name}"
75
- return clarification_message
76
-
77
64
  async def run(
78
65
  self,
79
66
  output_channel: "OutputChannel",
@@ -83,6 +70,8 @@ class ActionClarifyFlows(action.Action):
83
70
  metadata: Optional[Dict[str, Any]] = None,
84
71
  ) -> List[Event]:
85
72
  """Correct the slots."""
73
+ from rasa.dialogue_understanding.utils import assemble_options_string
74
+
86
75
  stack = tracker.stack
87
76
  if not (top := stack.top()):
88
77
  structlogger.warning("action.clarify_flows.no_active_flow")
@@ -92,7 +81,7 @@ class ActionClarifyFlows(action.Action):
92
81
  structlogger.warning("action.clarify_flows.no_clarification_frame")
93
82
  return []
94
83
 
95
- options_string = self.assemble_options_string(top.names)
84
+ options_string = assemble_options_string(top.names, conjunction="or")
96
85
  top.clarification_options = options_string
97
86
  # since we modified the stack frame, we need to update the stack
98
87
  return tracker.create_stack_updated_events(stack)