rasa-pro 3.14.0.dev4__py3-none-any.whl → 3.14.0.dev5__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 (463) hide show
  1. rasa/api.py +0 -5
  2. rasa/builder/README.md +120 -0
  3. rasa/builder/auth.py +176 -0
  4. rasa/builder/config.py +115 -0
  5. rasa/builder/copilot/constants.py +25 -0
  6. rasa/builder/copilot/copilot.py +372 -0
  7. rasa/builder/copilot/copilot_response_handler.py +487 -0
  8. rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
  9. rasa/builder/copilot/exceptions.py +20 -0
  10. rasa/builder/copilot/models.py +431 -0
  11. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +726 -0
  12. rasa/builder/copilot/telemetry.py +195 -0
  13. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
  14. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +26 -0
  15. rasa/builder/document_retrieval/constants.py +15 -0
  16. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
  17. rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
  18. rasa/builder/document_retrieval/models.py +62 -0
  19. rasa/builder/download.py +140 -0
  20. rasa/builder/exceptions.py +55 -0
  21. rasa/builder/guardrails/__init__.py +1 -0
  22. rasa/builder/guardrails/constants.py +3 -0
  23. rasa/builder/guardrails/exceptions.py +4 -0
  24. rasa/builder/guardrails/lakera.py +206 -0
  25. rasa/builder/guardrails/models.py +199 -0
  26. rasa/builder/guardrails/utils.py +305 -0
  27. rasa/builder/job_manager.py +87 -0
  28. rasa/builder/jobs.py +234 -0
  29. rasa/builder/llm_service.py +246 -0
  30. rasa/builder/logging_utils.py +209 -0
  31. rasa/builder/main.py +174 -0
  32. rasa/builder/models.py +197 -0
  33. rasa/builder/project_generator.py +450 -0
  34. rasa/builder/project_info.py +72 -0
  35. rasa/builder/scrape_rasa_docs.py +97 -0
  36. rasa/builder/service.py +1142 -0
  37. rasa/builder/shared/tracker_context.py +212 -0
  38. rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
  39. rasa/builder/training_service.py +132 -0
  40. rasa/builder/validation_service.py +93 -0
  41. rasa/cli/arguments/default_arguments.py +0 -12
  42. rasa/cli/arguments/run.py +0 -2
  43. rasa/cli/dialogue_understanding_test.py +0 -4
  44. rasa/cli/e2e_test.py +0 -4
  45. rasa/cli/inspect.py +0 -3
  46. rasa/cli/llm_fine_tuning.py +0 -5
  47. rasa/cli/project_templates/basic/actions/action_api.py +15 -0
  48. rasa/cli/project_templates/basic/actions/action_human_handoff.py +44 -0
  49. rasa/cli/project_templates/basic/config.yml +23 -0
  50. rasa/cli/project_templates/basic/credentials.yml +34 -0
  51. rasa/cli/project_templates/basic/data/general/feedback.yml +20 -0
  52. rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
  53. rasa/cli/project_templates/basic/data/general/hello.yml +7 -0
  54. rasa/cli/project_templates/basic/data/general/help.yml +6 -0
  55. rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
  56. rasa/cli/project_templates/basic/data/general/welcome.yml +9 -0
  57. rasa/cli/project_templates/basic/data/system/pattern_completed.yml +7 -0
  58. rasa/cli/project_templates/basic/data/system/pattern_correction.yml +7 -0
  59. rasa/cli/project_templates/basic/data/system/pattern_search.yml +8 -0
  60. rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +8 -0
  61. rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +65 -0
  62. rasa/cli/project_templates/basic/docs/template.txt +7 -0
  63. rasa/cli/project_templates/basic/domain/general/assistant_details.yml +12 -0
  64. rasa/cli/project_templates/basic/domain/general/bot_identity.yml +5 -0
  65. rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +5 -0
  66. rasa/cli/project_templates/basic/domain/general/feedback.yml +28 -0
  67. rasa/cli/project_templates/basic/domain/general/goodbye.yml +7 -0
  68. rasa/cli/project_templates/basic/domain/general/help.yml +5 -0
  69. rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +35 -0
  70. rasa/cli/project_templates/basic/domain/general/utils.yml +13 -0
  71. rasa/cli/project_templates/basic/domain/general/welcome.yml +7 -0
  72. rasa/cli/project_templates/basic/endpoints.yml +73 -0
  73. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  74. rasa/cli/project_templates/finance/actions/__init__.py +46 -0
  75. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
  76. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
  77. rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
  78. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
  79. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
  80. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
  81. rasa/cli/project_templates/finance/actions/database.py +277 -0
  82. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  83. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
  84. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
  85. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
  86. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
  87. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
  88. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
  89. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
  90. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
  91. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
  92. rasa/cli/project_templates/finance/config.yml +21 -0
  93. rasa/cli/project_templates/finance/credentials.yml +32 -0
  94. rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
  95. rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
  96. rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
  97. rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
  98. rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
  99. rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
  100. rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
  101. rasa/cli/project_templates/finance/csvs/users.csv +4 -0
  102. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
  103. rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
  104. rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
  105. rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
  106. rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
  107. rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
  108. rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
  109. rasa/cli/project_templates/finance/data/general/help.yml +9 -0
  110. rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
  111. rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
  112. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +5 -0
  113. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
  114. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
  115. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
  116. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
  117. rasa/cli/project_templates/finance/data/system/source/accounts.json +51 -0
  118. rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
  119. rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
  120. rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
  121. rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
  122. rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
  123. rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
  124. rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
  125. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
  126. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
  127. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
  128. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
  129. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
  130. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
  131. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
  132. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
  133. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
  134. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
  135. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
  136. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
  137. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
  138. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
  139. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
  140. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
  141. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
  142. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
  143. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
  144. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
  145. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
  146. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
  147. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
  148. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
  149. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
  150. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
  151. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
  152. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
  153. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
  154. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
  155. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
  156. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
  157. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
  158. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
  159. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
  160. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
  161. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
  162. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
  163. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
  164. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
  165. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
  166. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
  167. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
  168. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
  169. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
  170. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
  171. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
  172. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
  173. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
  174. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
  175. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
  176. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
  177. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
  178. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
  179. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
  180. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
  181. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
  182. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
  183. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
  184. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
  185. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
  186. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
  187. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
  188. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
  189. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
  190. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
  191. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
  192. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
  193. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
  194. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
  195. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
  196. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
  197. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
  198. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
  199. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
  200. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
  201. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
  202. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
  203. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
  204. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
  205. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
  206. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
  207. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
  208. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
  209. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
  210. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
  211. rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
  212. rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
  213. rasa/cli/project_templates/finance/domain/general/assistant_details.yml +12 -0
  214. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
  215. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
  216. rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
  217. rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
  218. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  219. rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
  220. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
  221. rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
  222. rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
  223. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
  224. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
  225. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
  226. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
  227. rasa/cli/project_templates/finance/endpoints.yml +63 -0
  228. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  229. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  230. rasa/cli/project_templates/telco/actions/actions_billing.py +204 -0
  231. rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +48 -0
  232. rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +28 -0
  233. rasa/cli/project_templates/telco/actions/actions_session_start.py +18 -0
  234. rasa/cli/project_templates/telco/config.yml +25 -0
  235. rasa/cli/project_templates/telco/credentials.yml +33 -0
  236. rasa/cli/project_templates/telco/csvs/billing.csv +10 -0
  237. rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
  238. rasa/cli/project_templates/telco/data/flows/flow_global.yml +5 -0
  239. rasa/cli/project_templates/telco/data/flows/flow_reboot_router.yml +8 -0
  240. rasa/cli/project_templates/telco/data/flows/flow_reset_router.yml +7 -0
  241. rasa/cli/project_templates/telco/data/flows/flow_solve_internet_issue.yml +73 -0
  242. rasa/cli/project_templates/telco/data/flows/flow_undertand_bill.yml +45 -0
  243. rasa/cli/project_templates/telco/data/patterns/pattern_completed.yml +7 -0
  244. rasa/cli/project_templates/telco/data/patterns/pattern_human_handoff.yml +6 -0
  245. rasa/cli/project_templates/telco/data/patterns/pattern_search.yml +7 -0
  246. rasa/cli/project_templates/telco/data/patterns/pattern_session_start.yml +9 -0
  247. rasa/cli/project_templates/telco/docs/reset_vs_rboot_router.txt +1 -0
  248. rasa/cli/project_templates/telco/docs/restart_router.txt +6 -0
  249. rasa/cli/project_templates/telco/docs/run_speed_test.txt +6 -0
  250. rasa/cli/project_templates/telco/domain/domain_global.yml +29 -0
  251. rasa/cli/project_templates/telco/domain/domain_patterns.yml +17 -0
  252. rasa/cli/project_templates/telco/domain/domain_reboot_router.yml +20 -0
  253. rasa/cli/project_templates/telco/domain/domain_reset_router.yml +11 -0
  254. rasa/cli/project_templates/telco/domain/domain_run_speed_test.yml +24 -0
  255. rasa/cli/project_templates/telco/domain/domain_solve_internet_issue.yml +74 -0
  256. rasa/cli/project_templates/telco/domain/domain_undertand_bill.yml +102 -0
  257. rasa/cli/project_templates/telco/endpoints.yml +60 -0
  258. rasa/{dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 → cli/project_templates/telco/prompts/command-generator.jinja2} +3 -7
  259. rasa/cli/project_templates/telco/tests/e2e_results_failed.yml +62 -0
  260. rasa/cli/project_templates/telco/tests/e2e_results_passed.yml +130 -0
  261. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing_test_cases.yml +68 -0
  262. rasa/cli/project_templates/telco/tests/e2e_test_cases/global_test_cases.yml +13 -0
  263. rasa/cli/project_templates/telco/tests/e2e_test_cases/internet_slow_test_case.yml +47 -0
  264. rasa/cli/project_templates/telco/tests/e2e_test_cases/out_of_scope_test_case.yml +21 -0
  265. rasa/cli/project_templates/telco/tests/e2e_test_cases/patterns_test_cases.yml +15 -0
  266. rasa/cli/project_templates/tutorial/config.yml +2 -1
  267. rasa/cli/run.py +0 -4
  268. rasa/cli/scaffold.py +46 -2
  269. rasa/cli/shell.py +0 -3
  270. rasa/constants.py +0 -6
  271. rasa/core/actions/action.py +10 -56
  272. rasa/core/agent.py +0 -16
  273. rasa/core/available_endpoints.py +0 -30
  274. rasa/core/channels/channel.py +4 -3
  275. rasa/core/channels/constants.py +3 -0
  276. rasa/core/channels/development_inspector.py +4 -4
  277. rasa/core/channels/hangouts.py +2 -2
  278. rasa/core/channels/inspector/dist/assets/{arc-63212852.js → arc-18042c22.js} +1 -1
  279. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-eecf6b13.js → blockDiagram-38ab4fdb-fdd6bcfa.js} +1 -1
  280. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-8f798a9a.js → c4Diagram-3d4e48cf-f5ae6786.js} +1 -1
  281. rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +1 -0
  282. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-df71a04c.js → classDiagram-70f12bd4-81efba3e.js} +1 -1
  283. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-9b275968.js → classDiagram-v2-f2320105-3b6b6a92.js} +1 -1
  284. rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +1 -0
  285. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-1c669cad.js → createText-2e5e7dd3-31422447.js} +1 -1
  286. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b1553799.js → edges-e0da2a9e-518a90db.js} +1 -1
  287. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-112388d6.js → erDiagram-9861fffd-a6d3c25a.js} +1 -1
  288. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-fdebec47.js → flowDb-956e92f1-e048c2be.js} +1 -1
  289. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-6280ede1.js → flowDiagram-66a62f08-c7474c91.js} +1 -1
  290. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +1 -0
  291. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-e1dc03e5.js → flowchart-elk-definition-4a651766-cb4d8723.js} +1 -1
  292. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-83f68c51.js → ganttDiagram-c361ad54-346636a2.js} +1 -1
  293. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-22f8666f.js → gitGraphDiagram-72cf32ee-7c508874.js} +1 -1
  294. rasa/core/channels/inspector/dist/assets/{graph-ca9e6217.js → graph-14702d8a.js} +1 -1
  295. rasa/core/channels/inspector/dist/assets/{index-3862675e-c5ceb692.js → index-3862675e-f18b534b.js} +1 -1
  296. rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +1335 -0
  297. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-faa9999b.js → infoDiagram-f8f76790-64154b83.js} +1 -1
  298. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-c4dda8d9.js → journeyDiagram-49397b02-833a5f95.js} +1 -1
  299. rasa/core/channels/inspector/dist/assets/{layout-d4307784.js → layout-5a3b2123.js} +1 -1
  300. rasa/core/channels/inspector/dist/assets/{line-0567aaa7.js → line-2272a8c7.js} +1 -1
  301. rasa/core/channels/inspector/dist/assets/{linear-c11b95cf.js → linear-35bcf273.js} +1 -1
  302. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-0c7d3ca9.js → mindmap-definition-fc14e90a-92dcb0e9.js} +1 -1
  303. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-34b433fa.js → pieDiagram-8a3498a8-94dbc900.js} +1 -1
  304. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-4cab816e.js → quadrantDiagram-120e2f19-8b7a9c33.js} +1 -1
  305. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-8c22fa9e.js → requirementDiagram-deff3bca-6f7eab81.js} +1 -1
  306. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-70ce9e8e.js → sankeyDiagram-04a897e0-f43e581d.js} +1 -1
  307. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-fbcd7fc9.js → sequenceDiagram-704730f1-0bcbefc3.js} +1 -1
  308. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-45f05ea6.js → stateDiagram-587899a1-b8a74083.js} +1 -1
  309. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-beab1ea6.js → stateDiagram-v2-d93cdb3a-2070218f.js} +1 -1
  310. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-2f29dbd5.js → styles-6aaf32cf-f1d54e34.js} +1 -1
  311. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-951eac83.js → styles-9a916d00-980de489.js} +1 -1
  312. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-897fbfdd.js → styles-c10674c1-3c03abde.js} +1 -1
  313. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-d667fac1.js → svgDrawCommon-08f97a94-46ba068f.js} +1 -1
  314. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-e3205144.js → timeline-definition-85554ec2-901f5e3d.js} +1 -1
  315. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-4abeb0e2.js → xychartDiagram-e933f94c-acbc628a.js} +1 -1
  316. rasa/core/channels/inspector/dist/index.html +2 -2
  317. rasa/core/channels/inspector/index.html +1 -1
  318. rasa/core/channels/inspector/src/App.tsx +10 -11
  319. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +12 -3
  320. rasa/core/channels/inspector/src/components/DialogueStack.tsx +4 -6
  321. rasa/core/channels/inspector/src/helpers/formatters.ts +3 -24
  322. rasa/core/channels/inspector/src/theme/base/styles.ts +1 -19
  323. rasa/core/channels/inspector/src/types.ts +0 -4
  324. rasa/core/channels/socketio.py +212 -51
  325. rasa/core/channels/studio_chat.py +49 -29
  326. rasa/core/channels/voice_stream/genesys.py +1 -1
  327. rasa/core/channels/voice_stream/voice_channel.py +5 -3
  328. rasa/core/constants.py +0 -4
  329. rasa/core/policies/enterprise_search_policy.py +6 -11
  330. rasa/core/policies/flow_policy.py +4 -4
  331. rasa/core/policies/flows/flow_executor.py +45 -456
  332. rasa/core/policies/intentless_policy.py +1 -1
  333. rasa/core/policies/unexpected_intent_policy.py +0 -1
  334. rasa/core/processor.py +15 -18
  335. rasa/core/run.py +14 -11
  336. rasa/core/tracker_stores/tracker_store.py +7 -3
  337. rasa/core/train.py +1 -1
  338. rasa/core/training/interactive.py +16 -16
  339. rasa/core/training/story_conflict.py +5 -5
  340. rasa/core/utils.py +1 -21
  341. rasa/dialogue_understanding/commands/__init__.py +0 -8
  342. rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -97
  343. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +0 -11
  344. rasa/dialogue_understanding/commands/clarify_command.py +0 -10
  345. rasa/dialogue_understanding/commands/knowledge_answer_command.py +0 -11
  346. rasa/dialogue_understanding/commands/start_flow_command.py +8 -164
  347. rasa/dialogue_understanding/commands/utils.py +2 -6
  348. rasa/dialogue_understanding/generator/command_parser.py +0 -4
  349. rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
  350. rasa/dialogue_understanding/generator/llm_based_command_generator.py +12 -50
  351. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  352. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  353. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +6 -7
  354. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +6 -7
  355. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +2 -41
  356. rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -163
  357. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +8 -52
  358. rasa/dialogue_understanding/processor/command_processor.py +15 -31
  359. rasa/dialogue_understanding/stack/dialogue_stack.py +2 -123
  360. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +0 -57
  361. rasa/dialogue_understanding/stack/utils.py +2 -17
  362. rasa/dialogue_understanding_test/du_test_runner.py +2 -7
  363. rasa/e2e_test/e2e_test_runner.py +2 -12
  364. rasa/engine/caching.py +2 -2
  365. rasa/engine/recipes/default_components.py +18 -10
  366. rasa/engine/storage/local_model_storage.py +45 -2
  367. rasa/graph_components/validators/default_recipe_validator.py +134 -134
  368. rasa/hooks.py +5 -5
  369. rasa/llm_fine_tuning/utils.py +2 -2
  370. rasa/model_manager/model_api.py +4 -5
  371. rasa/model_manager/runner_service.py +1 -1
  372. rasa/model_manager/socket_bridge.py +20 -14
  373. rasa/model_manager/trainer_service.py +12 -9
  374. rasa/model_manager/utils.py +1 -29
  375. rasa/model_manager/warm_rasa_process.py +1 -1
  376. rasa/nlu/extractors/extractor.py +1 -2
  377. rasa/plugin.py +8 -8
  378. rasa/privacy/privacy_manager.py +2 -11
  379. rasa/server.py +2 -14
  380. rasa/shared/constants.py +0 -5
  381. rasa/shared/core/constants.py +1 -12
  382. rasa/shared/core/domain.py +58 -11
  383. rasa/shared/core/events.py +0 -327
  384. rasa/shared/core/flows/flow_step.py +7 -1
  385. rasa/shared/core/flows/flows_list.py +2 -2
  386. rasa/shared/core/flows/flows_yaml_schema.json +186 -112
  387. rasa/shared/core/flows/steps/call.py +5 -53
  388. rasa/shared/core/flows/validation.py +7 -46
  389. rasa/shared/core/flows/yaml_flows_io.py +17 -9
  390. rasa/shared/core/slots.py +6 -2
  391. rasa/shared/core/trackers.py +2 -5
  392. rasa/shared/exceptions.py +0 -4
  393. rasa/shared/importers/importer.py +6 -0
  394. rasa/shared/importers/utils.py +77 -1
  395. rasa/shared/providers/_utils.py +60 -44
  396. rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
  397. rasa/shared/providers/llm/_base_litellm_client.py +7 -39
  398. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
  399. rasa/shared/providers/llm/litellm_router_llm_client.py +4 -8
  400. rasa/shared/providers/llm/llm_client.py +3 -7
  401. rasa/shared/providers/llm/llm_response.py +0 -49
  402. rasa/shared/providers/llm/self_hosted_llm_client.py +4 -8
  403. rasa/shared/utils/llm.py +5 -28
  404. rasa/shared/utils/schemas/events.py +0 -42
  405. rasa/shared/utils/yaml.py +1 -3
  406. rasa/studio/upload.py +16 -47
  407. rasa/telemetry.py +97 -23
  408. rasa/tracing/instrumentation/instrumentation.py +10 -12
  409. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  410. rasa/utils/common.py +0 -79
  411. rasa/utils/io.py +27 -9
  412. rasa/utils/json_utils.py +6 -1
  413. rasa/utils/log_utils.py +6 -2
  414. rasa/utils/ml_utils.py +1 -1
  415. rasa/utils/openapi.py +144 -0
  416. rasa/utils/tensorflow/rasa_layers.py +1 -1
  417. rasa/utils/train_utils.py +15 -15
  418. rasa/validator.py +21 -19
  419. rasa/version.py +1 -1
  420. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/METADATA +17 -14
  421. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/RECORD +431 -200
  422. rasa/agents/agent_factory.py +0 -122
  423. rasa/agents/agent_manager.py +0 -162
  424. rasa/agents/constants.py +0 -40
  425. rasa/agents/core/agent_protocol.py +0 -107
  426. rasa/agents/core/types.py +0 -70
  427. rasa/agents/exceptions.py +0 -8
  428. rasa/agents/protocol/__init__.py +0 -5
  429. rasa/agents/protocol/a2a/a2a_agent.py +0 -662
  430. rasa/agents/protocol/mcp/mcp_base_agent.py +0 -676
  431. rasa/agents/protocol/mcp/mcp_open_agent.py +0 -276
  432. rasa/agents/protocol/mcp/mcp_task_agent.py +0 -469
  433. rasa/agents/schemas/__init__.py +0 -12
  434. rasa/agents/schemas/agent_input.py +0 -38
  435. rasa/agents/schemas/agent_output.py +0 -26
  436. rasa/agents/schemas/agent_tool_result.py +0 -51
  437. rasa/agents/schemas/agent_tool_schema.py +0 -134
  438. rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +0 -15
  439. rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +0 -17
  440. rasa/agents/utils.py +0 -72
  441. rasa/core/available_agents.py +0 -199
  442. rasa/core/channels/inspector/dist/assets/channel-0cd70adf.js +0 -1
  443. rasa/core/channels/inspector/dist/assets/clone-a0f9c4ed.js +0 -1
  444. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-de9cc4aa.js +0 -1
  445. rasa/core/channels/inspector/dist/assets/index-3e293924.js +0 -1353
  446. rasa/core/policies/flows/mcp_tool_executor.py +0 -277
  447. rasa/dialogue_understanding/commands/continue_agent_command.py +0 -91
  448. rasa/dialogue_understanding/commands/restart_agent_command.py +0 -162
  449. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +0 -61
  450. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +0 -81
  451. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +0 -81
  452. rasa/shared/agents/utils.py +0 -35
  453. rasa/shared/utils/mcp/server_connection.py +0 -157
  454. /rasa/{agents → builder}/__init__.py +0 -0
  455. /rasa/{agents/core → builder/copilot}/__init__.py +0 -0
  456. /rasa/{agents/protocol/a2a → builder/copilot/prompts}/__init__.py +0 -0
  457. /rasa/{agents/protocol/mcp → builder/copilot/templated_messages}/__init__.py +0 -0
  458. /rasa/{agents/templates → builder/document_retrieval}/__init__.py +0 -0
  459. /rasa/{shared/agents → cli/project_templates/finance/actions/accounts}/__init__.py +0 -0
  460. /rasa/{shared/utils/mcp → cli/project_templates/finance/actions/cards}/__init__.py +0 -0
  461. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/NOTICE +0 -0
  462. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/WHEEL +0 -0
  463. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/entry_points.txt +0 -0
@@ -1,25 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
- import asyncio
4
- from typing import Any, Dict, List, Optional, Text, cast
3
+ from typing import Any, Dict, List, Optional, Text
5
4
 
6
5
  import structlog
7
6
  from jinja2 import Template
8
7
  from pypred import Predicate
9
- from structlog.contextvars import bound_contextvars
10
-
11
- from rasa.agents.agent_manager import AgentManager
12
- from rasa.agents.constants import (
13
- A2A_AGENT_CONTEXT_ID_KEY,
14
- AGENT_METADATA_AGENT_RESPONSE_KEY,
15
- AGENT_METADATA_EXIT_IF_KEY,
16
- AGENT_METADATA_TOOL_RESULTS_KEY,
17
- MAX_AGENT_RETRY_DELAY_SECONDS,
8
+ from structlog.contextvars import (
9
+ bound_contextvars,
18
10
  )
19
- from rasa.agents.core.types import AgentStatus, ProtocolType
20
- from rasa.agents.schemas import AgentInput, AgentOutput
21
- from rasa.agents.schemas.agent_input import AgentInputSlot
22
- from rasa.core.available_agents import AvailableAgents
11
+
23
12
  from rasa.core.available_endpoints import AvailableEndpoints
24
13
  from rasa.core.constants import ACTIVE_FLOW_METADATA_KEY, STEP_ID_METADATA_KEY
25
14
  from rasa.core.policies.flows.flow_exceptions import (
@@ -33,8 +22,7 @@ from rasa.core.policies.flows.flow_step_result import (
33
22
  FlowStepResult,
34
23
  PauseFlowReturnPrediction,
35
24
  )
36
- from rasa.core.policies.flows.mcp_tool_executor import call_mcp_tool
37
- from rasa.core.utils import get_slot_names_from_exit_conditions
25
+ from rasa.dialogue_understanding.commands import CancelFlowCommand
38
26
  from rasa.dialogue_understanding.patterns.cancel import CancelPatternFlowStackFrame
39
27
  from rasa.dialogue_understanding.patterns.collect_information import (
40
28
  FLOW_PATTERN_COLLECT_INFORMATION,
@@ -61,27 +49,17 @@ from rasa.dialogue_understanding.stack.frames import (
61
49
  UserFlowStackFrame,
62
50
  )
63
51
  from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
64
- AgentStackFrame,
65
- AgentState,
66
52
  FlowStackFrameType,
67
53
  )
68
- from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
69
- from rasa.shared.agents.utils import get_protocol_type
54
+ from rasa.dialogue_understanding.stack.utils import (
55
+ top_user_flow_frame,
56
+ )
70
57
  from rasa.shared.constants import RASA_PATTERN_HUMAN_HANDOFF
71
58
  from rasa.shared.core.constants import (
72
- ACTION_AGENT_REQUEST_USER_INPUT_NAME,
73
59
  ACTION_LISTEN_NAME,
74
- ACTION_METADATA_MESSAGE_KEY,
75
- ACTION_METADATA_TEXT_KEY,
76
- ACTION_SEND_TEXT_NAME,
77
- FLOW_HASHES_SLOT,
78
60
  SILENCE_TIMEOUT_SLOT,
79
61
  )
80
62
  from rasa.shared.core.events import (
81
- AgentCancelled,
82
- AgentCompleted,
83
- AgentResumed,
84
- AgentStarted,
85
63
  Event,
86
64
  FlowCompleted,
87
65
  FlowResumed,
@@ -89,7 +67,11 @@ from rasa.shared.core.events import (
89
67
  SlotSet,
90
68
  )
91
69
  from rasa.shared.core.flows import FlowsList
92
- from rasa.shared.core.flows.flow import END_STEP, Flow, FlowStep
70
+ from rasa.shared.core.flows.flow import (
71
+ END_STEP,
72
+ Flow,
73
+ FlowStep,
74
+ )
93
75
  from rasa.shared.core.flows.flow_step_links import (
94
76
  ElseFlowStepLink,
95
77
  IfFlowStepLink,
@@ -106,19 +88,15 @@ from rasa.shared.core.flows.steps import (
106
88
  SetSlotsFlowStep,
107
89
  )
108
90
  from rasa.shared.core.flows.steps.constants import START_STEP
109
- from rasa.shared.core.slots import CategoricalSlot, Slot, SlotRejection
110
- from rasa.shared.core.trackers import DialogueStateTracker
111
- from rasa.shared.utils.llm import tracker_as_readable_transcript
91
+ from rasa.shared.core.slots import Slot, SlotRejection
92
+ from rasa.shared.core.trackers import (
93
+ DialogueStateTracker,
94
+ )
112
95
 
113
96
  structlogger = structlog.get_logger()
114
97
 
115
98
  MAX_NUMBER_OF_STEPS = 250
116
99
 
117
- MAX_AGENT_RETRIES = 3
118
-
119
- # Slots that should not be forwarded to sub-agents via AgentInput
120
- SLOTS_EXCLUDED_FOR_AGENT = [FLOW_HASHES_SLOT]
121
-
122
100
 
123
101
  def render_template_variables(text: str, context: Dict[Text, Any]) -> str:
124
102
  """Replace context variables in a text."""
@@ -170,13 +148,6 @@ def select_next_step_id(
170
148
  tracker: DialogueStateTracker,
171
149
  ) -> Optional[Text]:
172
150
  """Selects the next step id based on the current step."""
173
- # if the current step is a call step to an agent, and we already have an
174
- # AgentStackFrame on top of the stack, we need to return the current
175
- # step id again in order to loop back to the agent.
176
- agent_stack_frame = tracker.stack.top()
177
- if agent_stack_frame and isinstance(agent_stack_frame, AgentStackFrame):
178
- return current.id
179
-
180
151
  next_step = current.next
181
152
  if len(next_step.links) == 1 and isinstance(next_step.links[0], StaticFlowStepLink):
182
153
  return next_step.links[0].target
@@ -388,11 +359,8 @@ def reset_scoped_slots(
388
359
  return events
389
360
 
390
361
 
391
- async def advance_flows(
392
- tracker: DialogueStateTracker,
393
- available_actions: List[str],
394
- flows: FlowsList,
395
- slots: List[Slot],
362
+ def advance_flows(
363
+ tracker: DialogueStateTracker, available_actions: List[str], flows: FlowsList
396
364
  ) -> FlowActionPrediction:
397
365
  """Advance the current flows until the next action.
398
366
 
@@ -400,7 +368,6 @@ async def advance_flows(
400
368
  tracker: The tracker to get the next action for.
401
369
  available_actions: The actions that are available in the domain.
402
370
  flows: All flows.
403
- slots: The slots that are available in the domain.
404
371
 
405
372
  Returns:
406
373
  The predicted action and the events to run.
@@ -410,16 +377,13 @@ async def advance_flows(
410
377
  # if there are no flows, there is nothing to do
411
378
  return FlowActionPrediction(None, 0.0)
412
379
 
413
- return await advance_flows_until_next_action(
414
- tracker, available_actions, flows, slots
415
- )
380
+ return advance_flows_until_next_action(tracker, available_actions, flows)
416
381
 
417
382
 
418
- async def advance_flows_until_next_action(
383
+ def advance_flows_until_next_action(
419
384
  tracker: DialogueStateTracker,
420
385
  available_actions: List[str],
421
386
  flows: FlowsList,
422
- slots: List[Slot],
423
387
  ) -> FlowActionPrediction:
424
388
  """Advance the flow and select the next action to execute.
425
389
 
@@ -477,7 +441,7 @@ async def advance_flows_until_next_action(
477
441
 
478
442
  with bound_contextvars(step_id=next_step.id):
479
443
  step_stack = tracker.stack
480
- step_result = await run_step(
444
+ step_result = run_step(
481
445
  next_step,
482
446
  current_flow,
483
447
  step_stack,
@@ -485,7 +449,6 @@ async def advance_flows_until_next_action(
485
449
  available_actions,
486
450
  flows,
487
451
  previous_step_id,
488
- slots,
489
452
  )
490
453
  new_events = step_result.events
491
454
  if (
@@ -514,9 +477,10 @@ async def advance_flows_until_next_action(
514
477
  # make sure we really return all events that got created during the
515
478
  # step execution of all steps (not only the last one)
516
479
  prediction.events = gathered_events
517
- prediction.metadata = prediction.metadata or {}
518
- prediction.metadata[ACTIVE_FLOW_METADATA_KEY] = tracker.active_flow
519
- prediction.metadata[STEP_ID_METADATA_KEY] = tracker.current_step_id
480
+ prediction.metadata = {
481
+ ACTIVE_FLOW_METADATA_KEY: tracker.active_flow,
482
+ STEP_ID_METADATA_KEY: tracker.current_step_id,
483
+ }
520
484
  return prediction
521
485
  else:
522
486
  structlogger.warning("flow.step.execution.no_action")
@@ -558,8 +522,6 @@ def validate_collect_step(
558
522
 
559
523
  def cancel_flow_and_push_internal_error(stack: DialogueStack, flow_name: str) -> None:
560
524
  """Cancel the top user flow and push the internal error pattern."""
561
- from rasa.dialogue_understanding.commands import CancelFlowCommand
562
-
563
525
  top_frame = stack.top()
564
526
 
565
527
  if isinstance(top_frame, BaseFlowStackFrame):
@@ -588,7 +550,7 @@ def attach_stack_metadata_to_events(
588
550
  event.metadata[ACTIVE_FLOW_METADATA_KEY] = flow_id
589
551
 
590
552
 
591
- async def run_step(
553
+ def run_step(
592
554
  step: FlowStep,
593
555
  flow: Flow,
594
556
  stack: DialogueStack,
@@ -596,7 +558,6 @@ async def run_step(
596
558
  available_actions: List[str],
597
559
  flows: FlowsList,
598
560
  previous_step_id: str,
599
- slots: List[Slot],
600
561
  ) -> FlowStepResult:
601
562
  """Run a single step of a flow.
602
563
 
@@ -615,7 +576,6 @@ async def run_step(
615
576
  available_actions: The actions that are available in the domain.
616
577
  flows: All flows.
617
578
  previous_step_id: The ID of the previous step.
618
- slots: The slots that are available in the domain.
619
579
 
620
580
  Returns:
621
581
  A result of running the step describing where to transition to.
@@ -655,7 +615,7 @@ async def run_step(
655
615
  return _run_link_step(initial_events, stack, step)
656
616
 
657
617
  elif isinstance(step, CallFlowStep):
658
- return await _run_call_step(initial_events, stack, step, tracker, slots)
618
+ return _run_call_step(initial_events, stack, step)
659
619
 
660
620
  elif isinstance(step, SetSlotsFlowStep):
661
621
  return _run_set_slot_step(initial_events, step)
@@ -724,26 +684,17 @@ def _run_set_slot_step(
724
684
  return ContinueFlowWithNextStep(events=initial_events + slot_events)
725
685
 
726
686
 
727
- async def _run_call_step(
728
- initial_events: List[Event],
729
- stack: DialogueStack,
730
- step: CallFlowStep,
731
- tracker: DialogueStateTracker,
732
- slots: List[Slot],
687
+ def _run_call_step(
688
+ initial_events: List[Event], stack: DialogueStack, step: CallFlowStep
733
689
  ) -> FlowStepResult:
734
690
  structlogger.debug("flow.step.run.call")
735
- if step.is_calling_mcp_tool():
736
- return await call_mcp_tool(initial_events, stack, step, tracker)
737
- elif step.is_calling_agent():
738
- return await run_agent(initial_events, stack, step, tracker, slots)
739
- else:
740
- stack.push(
741
- UserFlowStackFrame(
742
- flow_id=step.call,
743
- frame_type=FlowStackFrameType.CALL,
744
- ),
745
- )
746
- return ContinueFlowWithNextStep(events=initial_events)
691
+ stack.push(
692
+ UserFlowStackFrame(
693
+ flow_id=step.call,
694
+ frame_type=FlowStackFrameType.CALL,
695
+ ),
696
+ )
697
+ return ContinueFlowWithNextStep(events=initial_events)
747
698
 
748
699
 
749
700
  def _run_link_step(
@@ -789,7 +740,14 @@ def _run_action_step(
789
740
  # do not log about non-existing validation actions of collect steps
790
741
  utter_action_name = render_template_variables("{{context.utter}}", context)
791
742
  if utter_action_name not in available_actions:
792
- structlogger.warning("flow.step.run.action.unknown", action=action_name)
743
+ structlogger.warning(
744
+ "flow.step.run.action.unknown",
745
+ action=action_name,
746
+ event_info=(
747
+ f"The action '{action_name}' is not defined in the domain but "
748
+ f"getting triggered by the flow '{step.flow_id}'."
749
+ ),
750
+ )
793
751
  return ContinueFlowWithNextStep(events=initial_events)
794
752
 
795
753
 
@@ -881,372 +839,3 @@ def _append_global_silence_timeout_event(
881
839
  AvailableEndpoints.get_instance().interaction_handling.global_silence_timeout,
882
840
  )
883
841
  )
884
-
885
-
886
- def _reset_slots_covered_by_exit_if(
887
- exit_conditions: List[str], tracker: DialogueStateTracker
888
- ) -> None:
889
- """Reset the slots covered by the exit_if condition."""
890
- reset_slot_names = get_slot_names_from_exit_conditions(exit_conditions)
891
- for slot_name in reset_slot_names:
892
- if tracker.slots.get(slot_name) is not None:
893
- tracker.update(SlotSet(slot_name, None))
894
-
895
-
896
- async def run_agent(
897
- initial_events: List[Event],
898
- stack: DialogueStack,
899
- step: CallFlowStep,
900
- tracker: DialogueStateTracker,
901
- slots: List[Slot],
902
- ) -> FlowStepResult:
903
- """Run an agent call step."""
904
- structlogger.debug(
905
- "flow.step.run_agent", agent_id=step.call, step_id=step.id, flow_id=step.flow_id
906
- )
907
-
908
- final_events = initial_events
909
- agent_stack_frame = tracker.stack.find_agent_stack_frame_by_agent(
910
- agent_id=step.call
911
- )
912
-
913
- if (
914
- agent_stack_frame
915
- and agent_stack_frame == stack.top()
916
- and agent_stack_frame.state == AgentState.INTERRUPTED
917
- ):
918
- structlogger.debug(
919
- "flow.step.run_agent.resume_interrupted_agent",
920
- agent_id=step.call,
921
- step_id=step.id,
922
- flow_id=step.flow_id,
923
- )
924
- # The agent was previously interrupted when waiting for user input.
925
- # Now we're back to the agent execution step and need to output the last message
926
- # from the agent (user input request) again and wait for user input
927
- cast(AgentStackFrame, stack.top()).state = AgentState.WAITING_FOR_INPUT
928
- tracker.update_stack(stack)
929
- utterance = (
930
- agent_stack_frame.metadata.get(AGENT_METADATA_AGENT_RESPONSE_KEY, "")
931
- if agent_stack_frame.metadata
932
- else ""
933
- )
934
- final_events.append(AgentResumed(agent_id=step.call, flow_id=step.flow_id))
935
- return PauseFlowReturnPrediction(
936
- _create_agent_request_user_input_prediction(utterance, final_events)
937
- )
938
-
939
- agent_input_metadata = (
940
- agent_stack_frame.metadata
941
- if agent_stack_frame and agent_stack_frame.metadata
942
- else {}
943
- )
944
- _update_agent_input_metadata_with_events(
945
- agent_input_metadata, step.call, step.flow_id, tracker
946
- )
947
- if step.exit_if:
948
- # TODO: this is a temporary fix to reset the slots covered by the exit_if
949
- if (
950
- agent_stack_frame
951
- and agent_stack_frame.frame_id == f"restart_agent_{step.call}"
952
- ):
953
- # when restarting an agent, we need to reset the slots covered by the
954
- # exit_if condition so that the agent can run again.
955
- _reset_slots_covered_by_exit_if(step.exit_if, tracker)
956
- agent_input_metadata[AGENT_METADATA_EXIT_IF_KEY] = step.exit_if
957
- agent_input = AgentInput(
958
- id=step.call,
959
- user_message=tracker.latest_message.text or ""
960
- if tracker.latest_message
961
- else "",
962
- slots=_prepare_slots_for_agent(tracker.current_slot_values(), slots),
963
- conversation_history=tracker_as_readable_transcript(tracker),
964
- events=tracker.current_state().get("events") or [],
965
- metadata=agent_input_metadata,
966
- )
967
-
968
- final_events.append(AgentStarted(step.call, step.flow_id))
969
-
970
- protocol_type = get_protocol_type(step, AvailableAgents.get_agent_config(step.call))
971
- # send the input to the agent and wait for a response
972
- structlogger.debug(
973
- "flow.step.run_agent.agent_input",
974
- agent_name=step.call,
975
- step_id=step.id,
976
- flow_id=step.flow_id,
977
- agent_input=agent_input,
978
- )
979
- output: AgentOutput = await _call_agent_with_retry(
980
- agent_name=step.call,
981
- protocol_type=protocol_type,
982
- agent_input=agent_input,
983
- max_retries=MAX_AGENT_RETRIES,
984
- )
985
- structlogger.debug(
986
- "flow.step.run_agent.agent_response",
987
- agent_name=step.call,
988
- step_id=step.id,
989
- flow_id=step.flow_id,
990
- agent_response=output,
991
- )
992
-
993
- # add the set slot events returned by the agent to the list of final events
994
- if output.events:
995
- final_events.extend(output.events)
996
-
997
- if output.status == AgentStatus.INPUT_REQUIRED:
998
- output.metadata = output.metadata or {}
999
- output.metadata[AGENT_METADATA_AGENT_RESPONSE_KEY] = (
1000
- output.response_message or ""
1001
- )
1002
- output.metadata[AGENT_METADATA_TOOL_RESULTS_KEY] = output.tool_results or []
1003
- _update_agent_events(final_events, output.metadata)
1004
-
1005
- top_stack_frame = stack.top()
1006
- # update the agent stack frame if it is already on the stack
1007
- # otherwise push a new one
1008
- if isinstance(top_stack_frame, AgentStackFrame):
1009
- top_stack_frame.state = AgentState.WAITING_FOR_INPUT
1010
- top_stack_frame.metadata = output.metadata
1011
- top_stack_frame.step_id = step.id
1012
- top_stack_frame.agent_id = step.call
1013
- top_stack_frame.flow_id = step.flow_id
1014
- else:
1015
- stack.push(
1016
- AgentStackFrame(
1017
- flow_id=step.flow_id,
1018
- agent_id=step.call,
1019
- state=AgentState.WAITING_FOR_INPUT,
1020
- step_id=step.id,
1021
- metadata=output.metadata,
1022
- )
1023
- )
1024
-
1025
- action_prediction = _create_agent_request_user_input_prediction(
1026
- output.response_message, final_events
1027
- )
1028
- return PauseFlowReturnPrediction(action_prediction)
1029
- elif output.status == AgentStatus.COMPLETED:
1030
- output.metadata = output.metadata or {}
1031
- _update_agent_events(final_events, output.metadata)
1032
- structlogger.debug(
1033
- "flow.step.run_agent.completed",
1034
- agent_name=step.call,
1035
- step_id=step.id,
1036
- flow_id=step.flow_id,
1037
- )
1038
- remove_agent_stack_frame(stack, step.call)
1039
- agent_completed_event = AgentCompleted(agent_id=step.call, flow_id=step.flow_id)
1040
- final_events.append(agent_completed_event)
1041
- if output.response_message:
1042
- # for open-ended agents we want to utter the last agent message
1043
-
1044
- return PauseFlowReturnPrediction(
1045
- _create_send_text_prediction(output.response_message, final_events)
1046
- )
1047
- else:
1048
- return ContinueFlowWithNextStep(events=final_events)
1049
- elif output.status == AgentStatus.FATAL_ERROR:
1050
- output.metadata = output.metadata or {}
1051
- _update_agent_events(final_events, output.metadata)
1052
- # the agent failed, trigger pattern_internal_error
1053
- structlogger.error(
1054
- "flow.step.run_agent.fatal_error",
1055
- agent_name=step.call,
1056
- step_id=step.id,
1057
- flow_id=step.flow_id,
1058
- error_message=output.error_message,
1059
- )
1060
- remove_agent_stack_frame(stack, step.call)
1061
- final_events.append(
1062
- AgentCancelled(
1063
- agent_id=step.call, flow_id=step.flow_id, reason=output.error_message
1064
- )
1065
- )
1066
- stack.push(InternalErrorPatternFlowStackFrame())
1067
- return ContinueFlowWithNextStep(events=final_events)
1068
- else:
1069
- output.metadata = output.metadata or {}
1070
- _update_agent_events(final_events, output.metadata)
1071
- structlogger.error(
1072
- "flow.step.run_agent.unknown_status",
1073
- agent_name=step.call,
1074
- step_id=step.id,
1075
- flow_id=step.flow_id,
1076
- status=output.status,
1077
- )
1078
- remove_agent_stack_frame(stack, step.call)
1079
- final_events.append(AgentCancelled(agent_id=step.call, flow_id=step.flow_id))
1080
- stack.push(InternalErrorPatternFlowStackFrame())
1081
- return ContinueFlowWithNextStep(events=final_events)
1082
-
1083
-
1084
- def remove_agent_stack_frame(stack: DialogueStack, agent_id: str) -> None:
1085
- """Finishes the agentic loop by popping the agent stack frame from the
1086
- provided `stack`. The `tracker.stack` is NOT modified.
1087
- """
1088
- agent_stack_frame = stack.find_agent_stack_frame_by_agent(agent_id)
1089
- if not agent_stack_frame:
1090
- return
1091
-
1092
- while removed_frame := stack.pop():
1093
- structlogger.debug(
1094
- "flow_executor.remove_agent_stack_frame",
1095
- removed_frame=removed_frame,
1096
- )
1097
- if removed_frame == agent_stack_frame:
1098
- break
1099
-
1100
-
1101
- def _create_action_prediction(
1102
- action_name: str, message: Optional[str], events: Optional[List[Event]]
1103
- ) -> FlowActionPrediction:
1104
- """Create a prediction for an action with a text message."""
1105
- action_metadata = {
1106
- ACTION_METADATA_MESSAGE_KEY: {
1107
- ACTION_METADATA_TEXT_KEY: message,
1108
- }
1109
- }
1110
- return FlowActionPrediction(
1111
- action_name,
1112
- 1.0,
1113
- events=events if events else [],
1114
- metadata=action_metadata,
1115
- )
1116
-
1117
-
1118
- def _create_agent_request_user_input_prediction(
1119
- message: Optional[str], events: Optional[List[Event]]
1120
- ) -> FlowActionPrediction:
1121
- """Create a prediction for requesting user input from the agent
1122
- and waiting for it.
1123
- """
1124
- return _create_action_prediction(
1125
- ACTION_AGENT_REQUEST_USER_INPUT_NAME, message, events
1126
- )
1127
-
1128
-
1129
- def _create_send_text_prediction(
1130
- message: Optional[str], events: Optional[List[Event]]
1131
- ) -> FlowActionPrediction:
1132
- """Create a prediction for sending a text message to the user."""
1133
- return _create_action_prediction(ACTION_SEND_TEXT_NAME, message, events)
1134
-
1135
-
1136
- async def _call_agent_with_retry(
1137
- agent_name: str,
1138
- protocol_type: ProtocolType,
1139
- agent_input: AgentInput,
1140
- max_retries: int,
1141
- ) -> AgentOutput:
1142
- """Call an agent with retries in case of recoverable errors."""
1143
- for attempt in range(max_retries):
1144
- if attempt > 0:
1145
- structlogger.debug(
1146
- "flow_executor.call_agent_with_retry.retrying",
1147
- agent_name=agent_name,
1148
- attempt=attempt + 1,
1149
- num_retries=max_retries,
1150
- )
1151
-
1152
- agent_response: AgentOutput = await AgentManager().run_agent(
1153
- agent_name=agent_name, protocol_type=protocol_type, context=agent_input
1154
- )
1155
- if agent_response.status != AgentStatus.RECOVERABLE_ERROR:
1156
- return agent_response
1157
-
1158
- structlogger.warning(
1159
- "flow_executor.call_agent_with_retry.recoverable_error",
1160
- agent_name=agent_name,
1161
- attempt=attempt + 1,
1162
- num_retries=max_retries,
1163
- error_message=agent_response.error_message,
1164
- )
1165
- if attempt < max_retries - 1:
1166
- # exponential backoff - wait longer with each retry
1167
- # 1 second, 2 seconds, 4 seconds, etc.
1168
- await asyncio.sleep(min(2**attempt, MAX_AGENT_RETRY_DELAY_SECONDS))
1169
-
1170
- # we exhausted all retries, return fatal error
1171
- structlogger.warning(
1172
- "flow_executor.call_agent_with_retry.exhausted_retries",
1173
- agent_name=agent_name,
1174
- num_retries=max_retries,
1175
- )
1176
- return AgentOutput(
1177
- id=agent_name,
1178
- status=AgentStatus.FATAL_ERROR,
1179
- error_message="Exhausted all retries for agent call.",
1180
- )
1181
-
1182
-
1183
- def _prepare_slots_for_agent(
1184
- slot_values: Dict[str, Any], slot_definitions: List[Slot]
1185
- ) -> List[AgentInputSlot]:
1186
- """Prepare the slots for the agent.
1187
-
1188
- Filter out slots that should not be forwarded to agents.
1189
- Add the slot type and allowed values to the slot dictionary.
1190
-
1191
- Args:
1192
- slot_values: The full slot dictionary from the tracker.
1193
- slot_definitions: The slot definitions from the domain.
1194
-
1195
- Returns:
1196
- A list of slots containing the name, current value, type, and allowed values.
1197
- """
1198
-
1199
- def _get_slot_definition(slot_name: str) -> Optional[Slot]:
1200
- for slot in slot_definitions:
1201
- if slot.name == slot_name:
1202
- return slot
1203
- return None
1204
-
1205
- filtered_slots: List[AgentInputSlot] = []
1206
- for key, value in slot_values.items():
1207
- if key in SLOTS_EXCLUDED_FOR_AGENT:
1208
- continue
1209
- slot_definition = _get_slot_definition(key)
1210
- if slot_definition:
1211
- filtered_slots.append(
1212
- AgentInputSlot(
1213
- name=key,
1214
- value=value,
1215
- type=slot_definition.type_name if slot_definition else "any",
1216
- allowed_values=slot_definition.values
1217
- if isinstance(slot_definition, CategoricalSlot)
1218
- else None,
1219
- )
1220
- )
1221
-
1222
- return filtered_slots
1223
-
1224
-
1225
- def _update_agent_events(events: List[Event], metadata: Dict[str, Any]) -> None:
1226
- """Update the agent events based on the agent output metadata if needed."""
1227
- if A2A_AGENT_CONTEXT_ID_KEY in metadata:
1228
- # If the context ID is present, we need to store it in the AgentStarted
1229
- # event, so that it can be re-used later in case the agent is restarted.
1230
- for event in events:
1231
- if isinstance(event, AgentStarted):
1232
- event.context_id = metadata[A2A_AGENT_CONTEXT_ID_KEY]
1233
-
1234
-
1235
- def _update_agent_input_metadata_with_events(
1236
- metadata: Dict[str, Any], agent_id: str, flow_id: str, tracker: DialogueStateTracker
1237
- ) -> None:
1238
- """Update the agent input metadata with the events."""
1239
- agent_started_events = [
1240
- event
1241
- for event in tracker.events
1242
- if type(event) == AgentStarted
1243
- and event.agent_id == agent_id
1244
- and event.flow_id == flow_id
1245
- ]
1246
- if agent_started_events:
1247
- # If we have context ID from the previous agent run, we want to
1248
- # include it in the metadata so that the agent can continue the same
1249
- # context.
1250
- agent_started_event = agent_started_events[-1]
1251
- if agent_started_event.context_id:
1252
- metadata[A2A_AGENT_CONTEXT_ID_KEY] = agent_started_event.context_id
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Tuple
5
5
 
6
6
  import structlog
7
7
  import tiktoken
8
- from deprecated import deprecated # type: ignore[import-untyped]
8
+ from deprecated import deprecated # type: ignore[import]
9
9
  from jinja2 import Template
10
10
  from langchain.docstore.document import Document
11
11
  from langchain.schema.embeddings import Embeddings
@@ -624,7 +624,6 @@ class UnexpecTEDIntentPolicy(TEDPolicy):
624
624
  query_intent = (
625
625
  last_user_uttered_event.intent_name
626
626
  if last_user_uttered_event is not None
627
- and isinstance(last_user_uttered_event, UserUttered)
628
627
  else ""
629
628
  )
630
629
  is_unlikely_intent = self._check_unlikely_intent(