rasa-pro 3.14.0.dev3__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 (437) 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 +2 -43
  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 +1 -1
  277. rasa/core/channels/inspector/dist/assets/{arc-2e78c586.js → arc-18042c22.js} +1 -1
  278. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-806b712e.js → blockDiagram-38ab4fdb-fdd6bcfa.js} +1 -1
  279. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-0745efa9.js → c4Diagram-3d4e48cf-f5ae6786.js} +1 -1
  280. rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +1 -0
  281. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-7bd1082b.js → classDiagram-70f12bd4-81efba3e.js} +1 -1
  282. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-d937ba49.js → classDiagram-v2-f2320105-3b6b6a92.js} +1 -1
  283. rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +1 -0
  284. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-a2a564ca.js → createText-2e5e7dd3-31422447.js} +1 -1
  285. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b5256940.js → edges-e0da2a9e-518a90db.js} +1 -1
  286. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-e6883ad2.js → erDiagram-9861fffd-a6d3c25a.js} +1 -1
  287. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e576fc02.js → flowDb-956e92f1-e048c2be.js} +1 -1
  288. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-2e298d01.js → flowDiagram-66a62f08-c7474c91.js} +1 -1
  289. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +1 -0
  290. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-dd7b150a.js → flowchart-elk-definition-4a651766-cb4d8723.js} +1 -1
  291. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-5b79575c.js → ganttDiagram-c361ad54-346636a2.js} +1 -1
  292. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-3016f40a.js → gitGraphDiagram-72cf32ee-7c508874.js} +1 -1
  293. rasa/core/channels/inspector/dist/assets/{graph-3e19170f.js → graph-14702d8a.js} +1 -1
  294. rasa/core/channels/inspector/dist/assets/{index-3862675e-eb9c86de.js → index-3862675e-f18b534b.js} +1 -1
  295. rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +1335 -0
  296. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-b4280e4d.js → infoDiagram-f8f76790-64154b83.js} +1 -1
  297. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-556091f8.js → journeyDiagram-49397b02-833a5f95.js} +1 -1
  298. rasa/core/channels/inspector/dist/assets/{layout-08436411.js → layout-5a3b2123.js} +1 -1
  299. rasa/core/channels/inspector/dist/assets/{line-683c4f3b.js → line-2272a8c7.js} +1 -1
  300. rasa/core/channels/inspector/dist/assets/{linear-cee6d791.js → linear-35bcf273.js} +1 -1
  301. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-a0bf0b1a.js → mindmap-definition-fc14e90a-92dcb0e9.js} +1 -1
  302. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-3730d5c4.js → pieDiagram-8a3498a8-94dbc900.js} +1 -1
  303. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-12a20fed.js → quadrantDiagram-120e2f19-8b7a9c33.js} +1 -1
  304. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-b9732102.js → requirementDiagram-deff3bca-6f7eab81.js} +1 -1
  305. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-a2e72776.js → sankeyDiagram-04a897e0-f43e581d.js} +1 -1
  306. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-8b7a76bb.js → sequenceDiagram-704730f1-0bcbefc3.js} +1 -1
  307. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-e65853ac.js → stateDiagram-587899a1-b8a74083.js} +1 -1
  308. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-6f58a44b.js → stateDiagram-v2-d93cdb3a-2070218f.js} +1 -1
  309. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-df25b934.js → styles-6aaf32cf-f1d54e34.js} +1 -1
  310. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-88357141.js → styles-9a916d00-980de489.js} +1 -1
  311. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-d600174d.js → styles-c10674c1-3c03abde.js} +1 -1
  312. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-4adc3e0b.js → svgDrawCommon-08f97a94-46ba068f.js} +1 -1
  313. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-42816fa1.js → timeline-definition-85554ec2-901f5e3d.js} +1 -1
  314. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-621eb66a.js → xychartDiagram-e933f94c-acbc628a.js} +1 -1
  315. rasa/core/channels/inspector/dist/index.html +2 -2
  316. rasa/core/channels/inspector/index.html +1 -1
  317. rasa/core/channels/inspector/src/App.tsx +10 -11
  318. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +12 -3
  319. rasa/core/channels/inspector/src/components/DialogueStack.tsx +5 -7
  320. rasa/core/channels/inspector/src/helpers/formatters.ts +3 -24
  321. rasa/core/channels/inspector/src/theme/base/styles.ts +1 -19
  322. rasa/core/channels/inspector/src/types.ts +0 -4
  323. rasa/core/channels/socketio.py +212 -51
  324. rasa/core/channels/studio_chat.py +43 -23
  325. rasa/core/channels/voice_stream/voice_channel.py +5 -3
  326. rasa/core/constants.py +0 -4
  327. rasa/core/policies/enterprise_search_policy.py +6 -11
  328. rasa/core/policies/flow_policy.py +4 -4
  329. rasa/core/policies/flows/flow_executor.py +45 -415
  330. rasa/core/processor.py +1 -6
  331. rasa/core/run.py +14 -11
  332. rasa/core/utils.py +1 -21
  333. rasa/dialogue_understanding/commands/__init__.py +0 -8
  334. rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -97
  335. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +0 -11
  336. rasa/dialogue_understanding/commands/clarify_command.py +0 -10
  337. rasa/dialogue_understanding/commands/knowledge_answer_command.py +0 -11
  338. rasa/dialogue_understanding/commands/start_flow_command.py +8 -164
  339. rasa/dialogue_understanding/commands/utils.py +2 -6
  340. rasa/dialogue_understanding/generator/command_parser.py +0 -4
  341. rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
  342. rasa/dialogue_understanding/generator/llm_based_command_generator.py +12 -50
  343. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +6 -7
  344. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +6 -7
  345. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +2 -41
  346. rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -163
  347. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +8 -52
  348. rasa/dialogue_understanding/processor/command_processor.py +15 -31
  349. rasa/dialogue_understanding/stack/dialogue_stack.py +2 -123
  350. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +0 -57
  351. rasa/dialogue_understanding/stack/utils.py +2 -17
  352. rasa/dialogue_understanding_test/du_test_runner.py +2 -7
  353. rasa/e2e_test/e2e_test_runner.py +0 -5
  354. rasa/engine/storage/local_model_storage.py +45 -2
  355. rasa/model_manager/model_api.py +4 -5
  356. rasa/model_manager/runner_service.py +1 -1
  357. rasa/model_manager/socket_bridge.py +20 -14
  358. rasa/model_manager/trainer_service.py +12 -9
  359. rasa/model_manager/utils.py +1 -29
  360. rasa/server.py +0 -10
  361. rasa/shared/constants.py +0 -5
  362. rasa/shared/core/constants.py +1 -12
  363. rasa/shared/core/domain.py +58 -11
  364. rasa/shared/core/events.py +0 -319
  365. rasa/shared/core/flows/flow_step.py +7 -1
  366. rasa/shared/core/flows/flows_list.py +2 -2
  367. rasa/shared/core/flows/flows_yaml_schema.json +186 -112
  368. rasa/shared/core/flows/steps/call.py +5 -53
  369. rasa/shared/core/flows/validation.py +7 -46
  370. rasa/shared/core/flows/yaml_flows_io.py +16 -8
  371. rasa/shared/core/slots.py +4 -0
  372. rasa/shared/importers/importer.py +6 -0
  373. rasa/shared/importers/utils.py +77 -1
  374. rasa/shared/providers/_utils.py +60 -44
  375. rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
  376. rasa/shared/providers/llm/_base_litellm_client.py +7 -39
  377. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
  378. rasa/shared/providers/llm/litellm_router_llm_client.py +4 -8
  379. rasa/shared/providers/llm/llm_client.py +3 -7
  380. rasa/shared/providers/llm/llm_response.py +0 -49
  381. rasa/shared/providers/llm/self_hosted_llm_client.py +4 -8
  382. rasa/shared/utils/llm.py +5 -28
  383. rasa/shared/utils/schemas/events.py +0 -42
  384. rasa/studio/upload.py +16 -47
  385. rasa/telemetry.py +97 -23
  386. rasa/tracing/instrumentation/instrumentation.py +2 -4
  387. rasa/utils/common.py +0 -79
  388. rasa/utils/io.py +27 -9
  389. rasa/utils/json_utils.py +6 -1
  390. rasa/utils/log_utils.py +5 -1
  391. rasa/utils/openapi.py +144 -0
  392. rasa/validator.py +7 -3
  393. rasa/version.py +1 -1
  394. {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/METADATA +3 -3
  395. {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/RECORD +405 -174
  396. rasa/agents/agent_factory.py +0 -122
  397. rasa/agents/agent_manager.py +0 -162
  398. rasa/agents/constants.py +0 -32
  399. rasa/agents/core/agent_protocol.py +0 -108
  400. rasa/agents/core/types.py +0 -70
  401. rasa/agents/exceptions.py +0 -8
  402. rasa/agents/protocol/__init__.py +0 -5
  403. rasa/agents/protocol/a2a/a2a_agent.py +0 -51
  404. rasa/agents/protocol/mcp/mcp_base_agent.py +0 -674
  405. rasa/agents/protocol/mcp/mcp_open_agent.py +0 -276
  406. rasa/agents/protocol/mcp/mcp_task_agent.py +0 -469
  407. rasa/agents/schemas/__init__.py +0 -12
  408. rasa/agents/schemas/agent_input.py +0 -38
  409. rasa/agents/schemas/agent_output.py +0 -26
  410. rasa/agents/schemas/agent_tool_result.py +0 -51
  411. rasa/agents/schemas/agent_tool_schema.py +0 -134
  412. rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +0 -15
  413. rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +0 -17
  414. rasa/agents/utils.py +0 -72
  415. rasa/core/available_agents.py +0 -196
  416. rasa/core/channels/inspector/dist/assets/channel-c436ca7c.js +0 -1
  417. rasa/core/channels/inspector/dist/assets/clone-50dd656b.js +0 -1
  418. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-2b2aeaf8.js +0 -1
  419. rasa/core/channels/inspector/dist/assets/index-1bd9135e.js +0 -1353
  420. rasa/core/policies/flows/mcp_tool_executor.py +0 -277
  421. rasa/dialogue_understanding/commands/continue_agent_command.py +0 -91
  422. rasa/dialogue_understanding/commands/restart_agent_command.py +0 -162
  423. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +0 -61
  424. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +0 -81
  425. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +0 -81
  426. rasa/shared/agents/utils.py +0 -35
  427. rasa/shared/utils/mcp/server_connection.py +0 -157
  428. /rasa/{agents → builder}/__init__.py +0 -0
  429. /rasa/{agents/core → builder/copilot}/__init__.py +0 -0
  430. /rasa/{agents/protocol/a2a → builder/copilot/prompts}/__init__.py +0 -0
  431. /rasa/{agents/protocol/mcp → builder/copilot/templated_messages}/__init__.py +0 -0
  432. /rasa/{agents/templates → builder/document_retrieval}/__init__.py +0 -0
  433. /rasa/{shared/agents → cli/project_templates/finance/actions/accounts}/__init__.py +0 -0
  434. /rasa/{shared/utils/mcp → cli/project_templates/finance/actions/cards}/__init__.py +0 -0
  435. {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/NOTICE +0 -0
  436. {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/WHEEL +0 -0
  437. {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/entry_points.txt +0 -0
@@ -1,23 +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
- AGENT_METADATA_AGENT_RESPONSE_KEY,
14
- AGENT_METADATA_EXIT_IF_KEY,
15
- AGENT_METADATA_TOOL_RESULTS_KEY,
8
+ from structlog.contextvars import (
9
+ bound_contextvars,
16
10
  )
17
- from rasa.agents.core.types import AgentStatus, ProtocolType
18
- from rasa.agents.schemas import AgentInput, AgentOutput
19
- from rasa.agents.schemas.agent_input import AgentInputSlot
20
- from rasa.core.available_agents import AvailableAgents
11
+
21
12
  from rasa.core.available_endpoints import AvailableEndpoints
22
13
  from rasa.core.constants import ACTIVE_FLOW_METADATA_KEY, STEP_ID_METADATA_KEY
23
14
  from rasa.core.policies.flows.flow_exceptions import (
@@ -31,8 +22,7 @@ from rasa.core.policies.flows.flow_step_result import (
31
22
  FlowStepResult,
32
23
  PauseFlowReturnPrediction,
33
24
  )
34
- from rasa.core.policies.flows.mcp_tool_executor import call_mcp_tool
35
- from rasa.core.utils import get_slot_names_from_exit_conditions
25
+ from rasa.dialogue_understanding.commands import CancelFlowCommand
36
26
  from rasa.dialogue_understanding.patterns.cancel import CancelPatternFlowStackFrame
37
27
  from rasa.dialogue_understanding.patterns.collect_information import (
38
28
  FLOW_PATTERN_COLLECT_INFORMATION,
@@ -59,27 +49,17 @@ from rasa.dialogue_understanding.stack.frames import (
59
49
  UserFlowStackFrame,
60
50
  )
61
51
  from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
62
- AgentStackFrame,
63
- AgentState,
64
52
  FlowStackFrameType,
65
53
  )
66
- from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
67
- from rasa.shared.agents.utils import get_protocol_type
54
+ from rasa.dialogue_understanding.stack.utils import (
55
+ top_user_flow_frame,
56
+ )
68
57
  from rasa.shared.constants import RASA_PATTERN_HUMAN_HANDOFF
69
58
  from rasa.shared.core.constants import (
70
- ACTION_AGENT_REQUEST_USER_INPUT_NAME,
71
59
  ACTION_LISTEN_NAME,
72
- ACTION_METADATA_MESSAGE_KEY,
73
- ACTION_METADATA_TEXT_KEY,
74
- ACTION_SEND_TEXT_NAME,
75
- FLOW_HASHES_SLOT,
76
60
  SILENCE_TIMEOUT_SLOT,
77
61
  )
78
62
  from rasa.shared.core.events import (
79
- AgentCancelled,
80
- AgentCompleted,
81
- AgentResumed,
82
- AgentStarted,
83
63
  Event,
84
64
  FlowCompleted,
85
65
  FlowResumed,
@@ -87,7 +67,11 @@ from rasa.shared.core.events import (
87
67
  SlotSet,
88
68
  )
89
69
  from rasa.shared.core.flows import FlowsList
90
- 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
+ )
91
75
  from rasa.shared.core.flows.flow_step_links import (
92
76
  ElseFlowStepLink,
93
77
  IfFlowStepLink,
@@ -104,20 +88,15 @@ from rasa.shared.core.flows.steps import (
104
88
  SetSlotsFlowStep,
105
89
  )
106
90
  from rasa.shared.core.flows.steps.constants import START_STEP
107
- from rasa.shared.core.slots import CategoricalSlot, Slot, SlotRejection
108
- from rasa.shared.core.trackers import DialogueStateTracker
109
- 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
+ )
110
95
 
111
96
  structlogger = structlog.get_logger()
112
97
 
113
98
  MAX_NUMBER_OF_STEPS = 250
114
99
 
115
- MAX_AGENT_RETRY_DELAY_SECONDS = 5
116
- MAX_AGENT_RETRIES = 3
117
-
118
- # Slots that should not be forwarded to sub-agents via AgentInput
119
- SLOTS_EXCLUDED_FOR_AGENT = [FLOW_HASHES_SLOT]
120
-
121
100
 
122
101
  def render_template_variables(text: str, context: Dict[Text, Any]) -> str:
123
102
  """Replace context variables in a text."""
@@ -169,13 +148,6 @@ def select_next_step_id(
169
148
  tracker: DialogueStateTracker,
170
149
  ) -> Optional[Text]:
171
150
  """Selects the next step id based on the current step."""
172
- # if the current step is a call step to an agent, and we already have an
173
- # AgentStackFrame on top of the stack, we need to return the current
174
- # step id again in order to loop back to the agent.
175
- agent_stack_frame = tracker.stack.top()
176
- if agent_stack_frame and isinstance(agent_stack_frame, AgentStackFrame):
177
- return current.id
178
-
179
151
  next_step = current.next
180
152
  if len(next_step.links) == 1 and isinstance(next_step.links[0], StaticFlowStepLink):
181
153
  return next_step.links[0].target
@@ -387,11 +359,8 @@ def reset_scoped_slots(
387
359
  return events
388
360
 
389
361
 
390
- async def advance_flows(
391
- tracker: DialogueStateTracker,
392
- available_actions: List[str],
393
- flows: FlowsList,
394
- slots: List[Slot],
362
+ def advance_flows(
363
+ tracker: DialogueStateTracker, available_actions: List[str], flows: FlowsList
395
364
  ) -> FlowActionPrediction:
396
365
  """Advance the current flows until the next action.
397
366
 
@@ -399,7 +368,6 @@ async def advance_flows(
399
368
  tracker: The tracker to get the next action for.
400
369
  available_actions: The actions that are available in the domain.
401
370
  flows: All flows.
402
- slots: The slots that are available in the domain.
403
371
 
404
372
  Returns:
405
373
  The predicted action and the events to run.
@@ -409,16 +377,13 @@ async def advance_flows(
409
377
  # if there are no flows, there is nothing to do
410
378
  return FlowActionPrediction(None, 0.0)
411
379
 
412
- return await advance_flows_until_next_action(
413
- tracker, available_actions, flows, slots
414
- )
380
+ return advance_flows_until_next_action(tracker, available_actions, flows)
415
381
 
416
382
 
417
- async def advance_flows_until_next_action(
383
+ def advance_flows_until_next_action(
418
384
  tracker: DialogueStateTracker,
419
385
  available_actions: List[str],
420
386
  flows: FlowsList,
421
- slots: List[Slot],
422
387
  ) -> FlowActionPrediction:
423
388
  """Advance the flow and select the next action to execute.
424
389
 
@@ -476,7 +441,7 @@ async def advance_flows_until_next_action(
476
441
 
477
442
  with bound_contextvars(step_id=next_step.id):
478
443
  step_stack = tracker.stack
479
- step_result = await run_step(
444
+ step_result = run_step(
480
445
  next_step,
481
446
  current_flow,
482
447
  step_stack,
@@ -484,7 +449,6 @@ async def advance_flows_until_next_action(
484
449
  available_actions,
485
450
  flows,
486
451
  previous_step_id,
487
- slots,
488
452
  )
489
453
  new_events = step_result.events
490
454
  if (
@@ -513,9 +477,10 @@ async def advance_flows_until_next_action(
513
477
  # make sure we really return all events that got created during the
514
478
  # step execution of all steps (not only the last one)
515
479
  prediction.events = gathered_events
516
- prediction.metadata = prediction.metadata or {}
517
- prediction.metadata[ACTIVE_FLOW_METADATA_KEY] = tracker.active_flow
518
- 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
+ }
519
484
  return prediction
520
485
  else:
521
486
  structlogger.warning("flow.step.execution.no_action")
@@ -557,8 +522,6 @@ def validate_collect_step(
557
522
 
558
523
  def cancel_flow_and_push_internal_error(stack: DialogueStack, flow_name: str) -> None:
559
524
  """Cancel the top user flow and push the internal error pattern."""
560
- from rasa.dialogue_understanding.commands import CancelFlowCommand
561
-
562
525
  top_frame = stack.top()
563
526
 
564
527
  if isinstance(top_frame, BaseFlowStackFrame):
@@ -587,7 +550,7 @@ def attach_stack_metadata_to_events(
587
550
  event.metadata[ACTIVE_FLOW_METADATA_KEY] = flow_id
588
551
 
589
552
 
590
- async def run_step(
553
+ def run_step(
591
554
  step: FlowStep,
592
555
  flow: Flow,
593
556
  stack: DialogueStack,
@@ -595,7 +558,6 @@ async def run_step(
595
558
  available_actions: List[str],
596
559
  flows: FlowsList,
597
560
  previous_step_id: str,
598
- slots: List[Slot],
599
561
  ) -> FlowStepResult:
600
562
  """Run a single step of a flow.
601
563
 
@@ -614,7 +576,6 @@ async def run_step(
614
576
  available_actions: The actions that are available in the domain.
615
577
  flows: All flows.
616
578
  previous_step_id: The ID of the previous step.
617
- slots: The slots that are available in the domain.
618
579
 
619
580
  Returns:
620
581
  A result of running the step describing where to transition to.
@@ -654,7 +615,7 @@ async def run_step(
654
615
  return _run_link_step(initial_events, stack, step)
655
616
 
656
617
  elif isinstance(step, CallFlowStep):
657
- return await _run_call_step(initial_events, stack, step, tracker, slots)
618
+ return _run_call_step(initial_events, stack, step)
658
619
 
659
620
  elif isinstance(step, SetSlotsFlowStep):
660
621
  return _run_set_slot_step(initial_events, step)
@@ -723,26 +684,17 @@ def _run_set_slot_step(
723
684
  return ContinueFlowWithNextStep(events=initial_events + slot_events)
724
685
 
725
686
 
726
- async def _run_call_step(
727
- initial_events: List[Event],
728
- stack: DialogueStack,
729
- step: CallFlowStep,
730
- tracker: DialogueStateTracker,
731
- slots: List[Slot],
687
+ def _run_call_step(
688
+ initial_events: List[Event], stack: DialogueStack, step: CallFlowStep
732
689
  ) -> FlowStepResult:
733
690
  structlogger.debug("flow.step.run.call")
734
- if step.is_calling_mcp_tool():
735
- return await call_mcp_tool(initial_events, stack, step, tracker)
736
- elif step.is_calling_agent():
737
- return await run_agent(initial_events, stack, step, tracker, slots)
738
- else:
739
- stack.push(
740
- UserFlowStackFrame(
741
- flow_id=step.call,
742
- frame_type=FlowStackFrameType.CALL,
743
- ),
744
- )
745
- 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)
746
698
 
747
699
 
748
700
  def _run_link_step(
@@ -788,7 +740,14 @@ def _run_action_step(
788
740
  # do not log about non-existing validation actions of collect steps
789
741
  utter_action_name = render_template_variables("{{context.utter}}", context)
790
742
  if utter_action_name not in available_actions:
791
- 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
+ )
792
751
  return ContinueFlowWithNextStep(events=initial_events)
793
752
 
794
753
 
@@ -880,332 +839,3 @@ def _append_global_silence_timeout_event(
880
839
  AvailableEndpoints.get_instance().interaction_handling.global_silence_timeout,
881
840
  )
882
841
  )
883
-
884
-
885
- def _reset_slots_covered_by_exit_if(
886
- exit_conditions: List[str], tracker: DialogueStateTracker
887
- ) -> None:
888
- """Reset the slots covered by the exit_if condition."""
889
- reset_slot_names = get_slot_names_from_exit_conditions(exit_conditions)
890
- for slot_name in reset_slot_names:
891
- if tracker.slots.get(slot_name) is not None:
892
- tracker.update(SlotSet(slot_name, None))
893
-
894
-
895
- async def run_agent(
896
- initial_events: List[Event],
897
- stack: DialogueStack,
898
- step: CallFlowStep,
899
- tracker: DialogueStateTracker,
900
- slots: List[Slot],
901
- ) -> FlowStepResult:
902
- """Run an agent call step."""
903
- structlogger.debug(
904
- "flow.step.run_agent", agent_id=step.call, step_id=step.id, flow_id=step.flow_id
905
- )
906
-
907
- final_events = initial_events
908
- agent_stack_frame = tracker.stack.find_agent_stack_frame_by_agent(
909
- agent_id=step.call
910
- )
911
-
912
- if (
913
- agent_stack_frame
914
- and agent_stack_frame == stack.top()
915
- and agent_stack_frame.state == AgentState.INTERRUPTED
916
- ):
917
- structlogger.debug(
918
- "flow.step.run_agent.resume_interrupted_agent",
919
- agent_id=step.call,
920
- step_id=step.id,
921
- flow_id=step.flow_id,
922
- )
923
- # The agent was previously interrupted when waiting for user input.
924
- # Now we're back to the agent execution step and need to output the last message
925
- # from the agent (user input request) again and wait for user input
926
- cast(AgentStackFrame, stack.top()).state = AgentState.WAITING_FOR_INPUT
927
- tracker.update_stack(stack)
928
- utterance = (
929
- agent_stack_frame.metadata.get(AGENT_METADATA_AGENT_RESPONSE_KEY, "")
930
- if agent_stack_frame.metadata
931
- else ""
932
- )
933
- final_events.append(AgentResumed(agent_id=step.call, flow_id=step.flow_id))
934
- return PauseFlowReturnPrediction(
935
- _create_agent_request_user_input_prediction(utterance, final_events)
936
- )
937
-
938
- agent_input_metadata = (
939
- agent_stack_frame.metadata
940
- if agent_stack_frame and agent_stack_frame.metadata
941
- else {}
942
- )
943
- if step.exit_if:
944
- # TODO: this is a temporary fix to reset the slots covered by the exit_if
945
- if (
946
- agent_stack_frame
947
- and agent_stack_frame.frame_id == f"restart_agent_{step.call}"
948
- ):
949
- # when restarting an agent, we need to reset the slots covered by the
950
- # exit_if condition so that the agent can run again.
951
- _reset_slots_covered_by_exit_if(step.exit_if, tracker)
952
- agent_input_metadata[AGENT_METADATA_EXIT_IF_KEY] = step.exit_if
953
- agent_input = AgentInput(
954
- id=step.call,
955
- user_message=tracker.latest_message.text or ""
956
- if tracker.latest_message
957
- else "",
958
- slots=_prepare_slots_for_agent(tracker.current_slot_values(), slots),
959
- conversation_history=tracker_as_readable_transcript(tracker),
960
- events=tracker.current_state().get("events") or [],
961
- metadata=agent_input_metadata,
962
- )
963
-
964
- final_events.append(AgentStarted(step.call, step.flow_id))
965
-
966
- protocol_type = get_protocol_type(step, AvailableAgents.get_agent_config(step.call))
967
- # send the input to the agent and wait for a response
968
- structlogger.debug(
969
- "flow.step.run_agent.agent_input",
970
- agent_name=step.call,
971
- step_id=step.id,
972
- flow_id=step.flow_id,
973
- agent_input=agent_input,
974
- )
975
- output: AgentOutput = await _call_agent_with_retry(
976
- agent_name=step.call,
977
- protocol_type=protocol_type,
978
- agent_input=agent_input,
979
- max_retries=MAX_AGENT_RETRIES,
980
- )
981
- structlogger.debug(
982
- "flow.step.run_agent.agent_response",
983
- agent_name=step.call,
984
- step_id=step.id,
985
- flow_id=step.flow_id,
986
- agent_response=output,
987
- )
988
-
989
- # add the set slot events returned by the agent to the list of final events
990
- if output.events:
991
- final_events.extend(output.events)
992
-
993
- if output.status == AgentStatus.INPUT_REQUIRED:
994
- output.metadata = output.metadata or {}
995
- output.metadata[AGENT_METADATA_AGENT_RESPONSE_KEY] = (
996
- output.response_message or ""
997
- )
998
- output.metadata[AGENT_METADATA_TOOL_RESULTS_KEY] = output.tool_results or []
999
-
1000
- top_stack_frame = stack.top()
1001
- # update the agent stack frame if it is already on the stack
1002
- # otherwise push a new one
1003
- if isinstance(top_stack_frame, AgentStackFrame):
1004
- top_stack_frame.state = AgentState.WAITING_FOR_INPUT
1005
- top_stack_frame.metadata = output.metadata
1006
- top_stack_frame.step_id = step.id
1007
- top_stack_frame.agent_id = step.call
1008
- top_stack_frame.flow_id = step.flow_id
1009
- else:
1010
- stack.push(
1011
- AgentStackFrame(
1012
- flow_id=step.flow_id,
1013
- agent_id=step.call,
1014
- state=AgentState.WAITING_FOR_INPUT,
1015
- step_id=step.id,
1016
- metadata=output.metadata,
1017
- )
1018
- )
1019
-
1020
- action_prediction = _create_agent_request_user_input_prediction(
1021
- output.response_message, final_events
1022
- )
1023
- return PauseFlowReturnPrediction(action_prediction)
1024
- elif output.status == AgentStatus.COMPLETED:
1025
- structlogger.debug(
1026
- "flow.step.run_agent.completed",
1027
- agent_name=step.call,
1028
- step_id=step.id,
1029
- flow_id=step.flow_id,
1030
- )
1031
- remove_agent_stack_frame(stack, step.call)
1032
- agent_completed_event = AgentCompleted(agent_id=step.call, flow_id=step.flow_id)
1033
- final_events.append(agent_completed_event)
1034
- if output.response_message:
1035
- # for open-ended agents we want to utter the last agent message
1036
-
1037
- return PauseFlowReturnPrediction(
1038
- _create_send_text_prediction(output.response_message, final_events)
1039
- )
1040
- else:
1041
- return ContinueFlowWithNextStep(events=final_events)
1042
- elif output.status == AgentStatus.FATAL_ERROR:
1043
- # the agent failed, trigger pattern_internal_error
1044
- structlogger.error(
1045
- "flow.step.run_agent.fatal_error",
1046
- agent_name=step.call,
1047
- step_id=step.id,
1048
- flow_id=step.flow_id,
1049
- error_message=output.error_message,
1050
- )
1051
- remove_agent_stack_frame(stack, step.call)
1052
- final_events.append(
1053
- AgentCancelled(
1054
- agent_id=step.call, flow_id=step.flow_id, reason=output.error_message
1055
- )
1056
- )
1057
- stack.push(InternalErrorPatternFlowStackFrame())
1058
- return ContinueFlowWithNextStep(events=final_events)
1059
- else:
1060
- structlogger.error(
1061
- "flow.step.run_agent.unknown_status",
1062
- agent_name=step.call,
1063
- step_id=step.id,
1064
- flow_id=step.flow_id,
1065
- status=output.status,
1066
- )
1067
- remove_agent_stack_frame(stack, step.call)
1068
- final_events.append(AgentCancelled(agent_id=step.call, flow_id=step.flow_id))
1069
- stack.push(InternalErrorPatternFlowStackFrame())
1070
- return ContinueFlowWithNextStep(events=final_events)
1071
-
1072
-
1073
- def remove_agent_stack_frame(stack: DialogueStack, agent_id: str) -> None:
1074
- """Finishes the agentic loop by popping the agent stack frame from the
1075
- provided `stack`. The `tracker.stack` is NOT modified.
1076
- """
1077
- agent_stack_frame = stack.find_agent_stack_frame_by_agent(agent_id)
1078
- if not agent_stack_frame:
1079
- return
1080
-
1081
- while removed_frame := stack.pop():
1082
- structlogger.debug(
1083
- "flow_executor.remove_agent_stack_frame",
1084
- removed_frame=removed_frame,
1085
- )
1086
- if removed_frame == agent_stack_frame:
1087
- break
1088
-
1089
-
1090
- def _create_action_prediction(
1091
- action_name: str, message: Optional[str], events: Optional[List[Event]]
1092
- ) -> FlowActionPrediction:
1093
- """Create a prediction for an action with a text message."""
1094
- action_metadata = {
1095
- ACTION_METADATA_MESSAGE_KEY: {
1096
- ACTION_METADATA_TEXT_KEY: message,
1097
- }
1098
- }
1099
- return FlowActionPrediction(
1100
- action_name,
1101
- 1.0,
1102
- events=events if events else [],
1103
- metadata=action_metadata,
1104
- )
1105
-
1106
-
1107
- def _create_agent_request_user_input_prediction(
1108
- message: Optional[str], events: Optional[List[Event]]
1109
- ) -> FlowActionPrediction:
1110
- """Create a prediction for requesting user input from the agent
1111
- and waiting for it.
1112
- """
1113
- return _create_action_prediction(
1114
- ACTION_AGENT_REQUEST_USER_INPUT_NAME, message, events
1115
- )
1116
-
1117
-
1118
- def _create_send_text_prediction(
1119
- message: Optional[str], events: Optional[List[Event]]
1120
- ) -> FlowActionPrediction:
1121
- """Create a prediction for sending a text message to the user."""
1122
- return _create_action_prediction(ACTION_SEND_TEXT_NAME, message, events)
1123
-
1124
-
1125
- async def _call_agent_with_retry(
1126
- agent_name: str,
1127
- protocol_type: ProtocolType,
1128
- agent_input: AgentInput,
1129
- max_retries: int,
1130
- ) -> AgentOutput:
1131
- """Call an agent with retries in case of recoverable errors."""
1132
- for attempt in range(max_retries):
1133
- if attempt > 0:
1134
- structlogger.debug(
1135
- "flow_executor.call_agent_with_retry.retrying",
1136
- agent_name=agent_name,
1137
- attempt=attempt + 1,
1138
- num_retries=max_retries,
1139
- )
1140
-
1141
- agent_response: AgentOutput = await AgentManager().run_agent(
1142
- agent_name=agent_name, protocol_type=protocol_type, context=agent_input
1143
- )
1144
- if agent_response.status != AgentStatus.RECOVERABLE_ERROR:
1145
- return agent_response
1146
-
1147
- structlogger.warning(
1148
- "flow_executor.call_agent_with_retry.recoverable_error",
1149
- agent_name=agent_name,
1150
- attempt=attempt + 1,
1151
- num_retries=max_retries,
1152
- error_message=agent_response.error_message,
1153
- )
1154
- if attempt < max_retries - 1:
1155
- # exponential backoff - wait longer with each retry
1156
- # 1 second, 2 seconds, 4 seconds, etc.
1157
- await asyncio.sleep(min(2**attempt, MAX_AGENT_RETRY_DELAY_SECONDS))
1158
-
1159
- # we exhausted all retries, return fatal error
1160
- structlogger.warning(
1161
- "flow_executor.call_agent_with_retry.exhausted_retries",
1162
- agent_name=agent_name,
1163
- num_retries=max_retries,
1164
- )
1165
- return AgentOutput(
1166
- id=agent_name,
1167
- status=AgentStatus.FATAL_ERROR,
1168
- error_message="Exhausted all retries for agent call.",
1169
- )
1170
-
1171
-
1172
- def _prepare_slots_for_agent(
1173
- slot_values: Dict[str, Any], slot_definitions: List[Slot]
1174
- ) -> List[AgentInputSlot]:
1175
- """Prepare the slots for the agent.
1176
-
1177
- Filter out slots that should not be forwarded to agents.
1178
- Add the slot type and allowed values to the slot dictionary.
1179
-
1180
- Args:
1181
- slot_values: The full slot dictionary from the tracker.
1182
- slot_definitions: The slot definitions from the domain.
1183
-
1184
- Returns:
1185
- A list of slots containing the name, current value, type, and allowed values.
1186
- """
1187
-
1188
- def _get_slot_definition(slot_name: str) -> Optional[Slot]:
1189
- for slot in slot_definitions:
1190
- if slot.name == slot_name:
1191
- return slot
1192
- return None
1193
-
1194
- filtered_slots: List[AgentInputSlot] = []
1195
- for key, value in slot_values.items():
1196
- if key in SLOTS_EXCLUDED_FOR_AGENT:
1197
- continue
1198
- slot_definition = _get_slot_definition(key)
1199
- if slot_definition:
1200
- filtered_slots.append(
1201
- AgentInputSlot(
1202
- name=key,
1203
- value=value,
1204
- type=slot_definition.type_name if slot_definition else "any",
1205
- allowed_values=slot_definition.values
1206
- if isinstance(slot_definition, CategoricalSlot)
1207
- else None,
1208
- )
1209
- )
1210
-
1211
- return filtered_slots
rasa/core/processor.py CHANGED
@@ -69,7 +69,6 @@ from rasa.shared.constants import (
69
69
  UTTER_PREFIX,
70
70
  )
71
71
  from rasa.shared.core.constants import (
72
- ACTION_AGENT_REQUEST_USER_INPUT_NAME,
73
72
  ACTION_CORRECT_FLOW_SLOT,
74
73
  ACTION_EXTRACT_SLOTS,
75
74
  ACTION_LISTEN_NAME,
@@ -1195,11 +1194,7 @@ class MessageProcessor:
1195
1194
  `False` if `action_name` is `ACTION_LISTEN_NAME` or
1196
1195
  `ACTION_SESSION_START_NAME`, otherwise `True`.
1197
1196
  """
1198
- return action_name not in (
1199
- ACTION_LISTEN_NAME,
1200
- ACTION_SESSION_START_NAME,
1201
- ACTION_AGENT_REQUEST_USER_INPUT_NAME,
1202
- )
1197
+ return action_name not in (ACTION_LISTEN_NAME, ACTION_SESSION_START_NAME)
1203
1198
 
1204
1199
  async def execute_side_effects(
1205
1200
  self,