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
rasa/core/run.py CHANGED
@@ -30,7 +30,6 @@ from rasa import server, telemetry
30
30
  from rasa.constants import ENV_SANIC_BACKLOG
31
31
  from rasa.core import agent, channels, constants
32
32
  from rasa.core.agent import Agent
33
- from rasa.core.available_agents import AvailableAgents
34
33
  from rasa.core.available_endpoints import AvailableEndpoints
35
34
  from rasa.core.channels import console
36
35
  from rasa.core.channels.channel import InputChannel
@@ -43,10 +42,20 @@ from rasa.utils import licensing
43
42
  logger = logging.getLogger() # get the root logger
44
43
 
45
44
 
46
- def create_http_input_channels(
45
+ def create_input_channels(
47
46
  channel: Optional[Text], credentials_file: Optional[Text]
48
47
  ) -> List[InputChannel]:
49
- """Instantiate the chosen input channel."""
48
+ """Instantiate the chosen input channel.
49
+
50
+ Args:
51
+ channel (optional): The name of the specific input channel to create.
52
+ credentials_file: Path to the credentials file containing channel credentials.
53
+
54
+ Returns:
55
+ A list of instantiated input channels. If a specific channel is provided,
56
+ it returns a list with that single channel. If no channel is specified,
57
+ it returns a list of all channels defined in the credentials file.
58
+ """
50
59
  if credentials_file:
51
60
  all_credentials = read_config_file(credentials_file)
52
61
  else:
@@ -142,7 +151,6 @@ def configure_app(
142
151
  route: Optional[Text] = "/webhooks/",
143
152
  port: int = constants.DEFAULT_SERVER_PORT,
144
153
  endpoints: Optional[AvailableEndpoints] = None,
145
- sub_agents: Optional[AvailableAgents] = None,
146
154
  log_file: Optional[Text] = None,
147
155
  conversation_id: Optional[Text] = uuid.uuid4().hex,
148
156
  use_syslog: bool = False,
@@ -171,7 +179,6 @@ def configure_app(
171
179
  jwt_private_key=jwt_private_key,
172
180
  jwt_method=jwt_method,
173
181
  endpoints=endpoints,
174
- sub_agents=sub_agents,
175
182
  is_inspector_enabled=is_inspector_enabled,
176
183
  )
177
184
  )
@@ -236,7 +243,6 @@ def serve_application(
236
243
  jwt_private_key: Optional[Text] = None,
237
244
  jwt_method: Optional[Text] = None,
238
245
  endpoints: Optional[AvailableEndpoints] = None,
239
- sub_agents: Optional[AvailableAgents] = None,
240
246
  remote_storage: Optional[StorageType] = None,
241
247
  log_file: Optional[Text] = None,
242
248
  ssl_certificate: Optional[Text] = None,
@@ -257,7 +263,7 @@ def serve_application(
257
263
  if not channel and not credentials:
258
264
  channel = "cmdline"
259
265
 
260
- input_channels = create_http_input_channels(channel, credentials)
266
+ input_channels = create_input_channels(channel, credentials)
261
267
 
262
268
  if inspect:
263
269
  logger.info("Starting development inspector.")
@@ -277,7 +283,6 @@ def serve_application(
277
283
  jwt_method,
278
284
  port=port,
279
285
  endpoints=endpoints,
280
- sub_agents=sub_agents,
281
286
  log_file=log_file,
282
287
  conversation_id=conversation_id,
283
288
  use_syslog=use_syslog,
@@ -297,7 +302,7 @@ def serve_application(
297
302
  logger.info(f"Starting Rasa server on {protocol}://{interface}:{port}")
298
303
 
299
304
  app.register_listener(
300
- partial(load_agent_on_start, model_path, endpoints, remote_storage, sub_agents),
305
+ partial(load_agent_on_start, model_path, endpoints, remote_storage),
301
306
  "before_server_start",
302
307
  )
303
308
 
@@ -335,7 +340,6 @@ async def load_agent_on_start(
335
340
  model_path: Text,
336
341
  endpoints: AvailableEndpoints,
337
342
  remote_storage: Optional[StorageType],
338
- sub_agents: Optional[AvailableAgents],
339
343
  app: Sanic,
340
344
  loop: AbstractEventLoop,
341
345
  ) -> Agent:
@@ -348,7 +352,6 @@ async def load_agent_on_start(
348
352
  model_path=model_path,
349
353
  remote_storage=remote_storage,
350
354
  endpoints=endpoints,
351
- sub_agents=sub_agents,
352
355
  loop=loop,
353
356
  )
354
357
 
rasa/core/utils.py CHANGED
@@ -1,9 +1,8 @@
1
1
  import logging
2
2
  import os
3
- import re
4
3
  from pathlib import Path
5
4
  from socket import SOCK_DGRAM, SOCK_STREAM
6
- from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Text, Tuple, Union
5
+ from typing import TYPE_CHECKING, Any, Dict, Optional, Set, Text, Tuple, Union
7
6
 
8
7
  import numpy as np
9
8
  import structlog
@@ -360,22 +359,3 @@ def should_force_slot_filling(
360
359
  return True, slot_name
361
360
 
362
361
  return False, None
363
-
364
-
365
- def get_slot_names_from_exit_conditions(exit_conditions: List[str]) -> List[str]:
366
- """Extract slot names from exit conditions.
367
-
368
- Args:
369
- exit_conditions: The exit conditions to extract slot names from.
370
-
371
- Returns:
372
- A list of slot names.
373
- """
374
- # Find all unique names matching "slots.<name>"
375
- return list(
376
- {
377
- name
378
- for condition in exit_conditions
379
- for name in re.findall(r"\bslots\.(\w+)", condition)
380
- }
381
- )
@@ -8,9 +8,6 @@ from rasa.dialogue_understanding.commands.chit_chat_answer_command import (
8
8
  )
9
9
  from rasa.dialogue_understanding.commands.clarify_command import ClarifyCommand
10
10
  from rasa.dialogue_understanding.commands.command import Command
11
- from rasa.dialogue_understanding.commands.continue_agent_command import (
12
- ContinueAgentCommand,
13
- )
14
11
  from rasa.dialogue_understanding.commands.correct_slots_command import (
15
12
  CorrectedSlot,
16
13
  CorrectSlotsCommand,
@@ -32,9 +29,6 @@ from rasa.dialogue_understanding.commands.noop_command import NoopCommand
32
29
  from rasa.dialogue_understanding.commands.repeat_bot_messages_command import (
33
30
  RepeatBotMessagesCommand,
34
31
  )
35
- from rasa.dialogue_understanding.commands.restart_agent_command import (
36
- RestartAgentCommand,
37
- )
38
32
  from rasa.dialogue_understanding.commands.restart_command import RestartCommand
39
33
  from rasa.dialogue_understanding.commands.session_end_command import SessionEndCommand
40
34
  from rasa.dialogue_understanding.commands.session_start_command import (
@@ -68,6 +62,4 @@ __all__ = [
68
62
  "SessionEndCommand",
69
63
  "RepeatBotMessagesCommand",
70
64
  "RestartCommand",
71
- "ContinueAgentCommand",
72
- "RestartAgentCommand",
73
65
  ]
@@ -2,13 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  import re
4
4
  from dataclasses import dataclass
5
- from typing import Any, Dict, List, Optional, Tuple
5
+ from typing import Any, Dict, List
6
6
 
7
7
  import structlog
8
8
 
9
- from rasa.core.policies.flows.flow_executor import (
10
- remove_agent_stack_frame,
11
- )
12
9
  from rasa.dialogue_understanding.commands.command import Command
13
10
  from rasa.dialogue_understanding.commands.command_syntax_manager import (
14
11
  CommandSyntaxManager,
@@ -16,13 +13,12 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
16
13
  )
17
14
  from rasa.dialogue_understanding.patterns.cancel import CancelPatternFlowStackFrame
18
15
  from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
19
- from rasa.dialogue_understanding.stack.frames import DialogueStackFrame
20
16
  from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
21
17
  FlowStackFrameType,
22
18
  UserFlowStackFrame,
23
19
  )
24
20
  from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
25
- from rasa.shared.core.events import AgentCancelled, Event, FlowCancelled
21
+ from rasa.shared.core.events import Event, FlowCancelled
26
22
  from rasa.shared.core.flows import FlowsList
27
23
  from rasa.shared.core.trackers import DialogueStateTracker
28
24
 
@@ -52,7 +48,8 @@ class CancelFlowCommand(Command):
52
48
  """Selects the frames that were canceled.
53
49
 
54
50
  Args:
55
- stack: The dialogue stack.
51
+ dialogue_stack: The dialogue stack.
52
+ current_flow: The current flow.
56
53
 
57
54
  Returns:
58
55
  The frames that were canceled.
@@ -109,19 +106,6 @@ class CancelFlowCommand(Command):
109
106
  )
110
107
  return []
111
108
 
112
- if agent_frame := original_tracker.stack.find_active_agent_stack_frame_for_flow(
113
- current_flow.id
114
- ):
115
- structlogger.debug(
116
- "cancel_command.remove_agent_stack_frame",
117
- command=self,
118
- frame=agent_frame,
119
- )
120
- remove_agent_stack_frame(stack, agent_frame.agent_id)
121
- applied_events.append(
122
- AgentCancelled(agent_id=agent_frame.agent_id, flow_id=current_flow.id)
123
- )
124
-
125
109
  # we pass in the original dialogue stack (before any of the currently
126
110
  # predicted commands were applied) to make sure we don't cancel any
127
111
  # frames that were added by the currently predicted commands.
@@ -175,80 +159,3 @@ class CancelFlowCommand(Command):
175
159
  CommandSyntaxManager.get_syntax_version(),
176
160
  mapper[CommandSyntaxManager.get_default_syntax_version()],
177
161
  )
178
-
179
- def cancel_flow(
180
- self,
181
- tracker: DialogueStateTracker,
182
- stack: DialogueStack,
183
- flow_id: str,
184
- ) -> List[Event]:
185
- """Cancels a flow by flow id."""
186
- applied_events: List[Event] = []
187
-
188
- frames_to_cancel, user_frame_to_cancel = self._collect_frames_to_cancel(
189
- stack, flow_id
190
- )
191
-
192
- # if the flow is not on the stack, do nothing
193
- if user_frame_to_cancel is None:
194
- structlogger.error(
195
- "cancel_flow_command.cancel_flow.no_user_frame_to_cancel",
196
- command=self,
197
- )
198
- return []
199
-
200
- frames_ids_to_cancel = [frame.frame_id for frame in frames_to_cancel]
201
-
202
- stack.push(
203
- CancelPatternFlowStackFrame(
204
- canceled_name=flow_id,
205
- canceled_frames=frames_ids_to_cancel,
206
- )
207
- )
208
-
209
- # create flow cancelled event
210
- applied_events.extend(
211
- [
212
- FlowCancelled(
213
- user_frame_to_cancel.flow_id, user_frame_to_cancel.step_id
214
- ),
215
- ]
216
- )
217
-
218
- update_stack_events = tracker.create_stack_updated_events(stack)
219
-
220
- return applied_events + update_stack_events
221
-
222
- def _collect_frames_to_cancel(
223
- self, stack: DialogueStack, target_flow_id: str
224
- ) -> Tuple[List[DialogueStackFrame], Optional[UserFlowStackFrame]]:
225
- """Collect frames that need to be cancelled.
226
-
227
- Args:
228
- stack: The stack to collect frames from.
229
- target_flow_id: The ID of the flow to cancel.
230
-
231
- Returns:
232
- A tuple containing (frames_to_cancel, frame_to_cancel).
233
- """
234
- frames_to_cancel: List[DialogueStackFrame] = []
235
- frame_found = False
236
- frame_to_cancel = None
237
-
238
- for frame in stack.frames:
239
- if isinstance(frame, UserFlowStackFrame) and (
240
- frame.frame_type == FlowStackFrameType.REGULAR
241
- or frame.frame_type == FlowStackFrameType.INTERRUPT
242
- ):
243
- if frame.flow_id == target_flow_id:
244
- frames_to_cancel.append(frame)
245
- frame_to_cancel = frame
246
- frame_found = True
247
- continue
248
- elif frame_found:
249
- break
250
-
251
- if frame_found:
252
- frames_to_cancel.append(frame)
253
-
254
- return list(frames_to_cancel), frame_to_cancel
@@ -12,10 +12,6 @@ from rasa.dialogue_understanding.commands.free_form_answer_command import (
12
12
  FreeFormAnswerCommand,
13
13
  )
14
14
  from rasa.dialogue_understanding.patterns.chitchat import ChitchatPatternFlowStackFrame
15
- from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
16
- AgentStackFrame,
17
- AgentState,
18
- )
19
15
  from rasa.shared.core.events import Event
20
16
  from rasa.shared.core.flows import FlowsList
21
17
  from rasa.shared.core.trackers import DialogueStateTracker
@@ -56,13 +52,6 @@ class ChitChatAnswerCommand(FreeFormAnswerCommand):
56
52
  The events to apply to the tracker.
57
53
  """
58
54
  stack = tracker.stack
59
-
60
- # if the top stack frame is an agent stack frame, we need to
61
- # update the state to INTERRUPTED
62
- if top_stack_frame := stack.top():
63
- if isinstance(top_stack_frame, AgentStackFrame):
64
- top_stack_frame.state = AgentState.INTERRUPTED
65
-
66
55
  stack.push(ChitchatPatternFlowStackFrame())
67
56
  return tracker.create_stack_updated_events(stack)
68
57
 
@@ -13,10 +13,6 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
13
13
  )
14
14
  from rasa.dialogue_understanding.commands.utils import extract_cleaned_options
15
15
  from rasa.dialogue_understanding.patterns.clarify import ClarifyPatternFlowStackFrame
16
- from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
17
- AgentStackFrame,
18
- AgentState,
19
- )
20
16
  from rasa.shared.core.events import Event
21
17
  from rasa.shared.core.flows import FlowsList
22
18
  from rasa.shared.core.trackers import DialogueStateTracker
@@ -89,12 +85,6 @@ class ClarifyCommand(Command):
89
85
  if flow is not None
90
86
  ]
91
87
 
92
- # if the top stack frame is an agent stack frame, we need to
93
- # update the state to INTERRUPTED
94
- if top_stack_frame := stack.top():
95
- if isinstance(top_stack_frame, AgentStackFrame):
96
- top_stack_frame.state = AgentState.INTERRUPTED
97
-
98
88
  stack.push(ClarifyPatternFlowStackFrame(names=names))
99
89
  return tracker.create_stack_updated_events(stack)
100
90
 
@@ -12,10 +12,6 @@ from rasa.dialogue_understanding.commands.free_form_answer_command import (
12
12
  FreeFormAnswerCommand,
13
13
  )
14
14
  from rasa.dialogue_understanding.patterns.search import SearchPatternFlowStackFrame
15
- from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
16
- AgentStackFrame,
17
- AgentState,
18
- )
19
15
  from rasa.shared.core.events import Event
20
16
  from rasa.shared.core.flows import FlowsList
21
17
  from rasa.shared.core.trackers import DialogueStateTracker
@@ -56,13 +52,6 @@ class KnowledgeAnswerCommand(FreeFormAnswerCommand):
56
52
  The events to apply to the tracker.
57
53
  """
58
54
  stack = tracker.stack
59
-
60
- # if the top stack frame is an agent stack frame, we need to
61
- # update the state to INTERRUPTED
62
- if top_stack_frame := stack.top():
63
- if isinstance(top_stack_frame, AgentStackFrame):
64
- top_stack_frame.state = AgentState.INTERRUPTED
65
-
66
55
  stack.push(SearchPatternFlowStackFrame())
67
56
  return tracker.create_stack_updated_events(stack)
68
57
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import re
4
4
  from dataclasses import dataclass
5
- from typing import Any, Dict, List, Optional, Tuple
5
+ from typing import Any, Dict, List, Optional
6
6
 
7
7
  import structlog
8
8
 
@@ -11,29 +11,15 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
11
11
  CommandSyntaxManager,
12
12
  CommandSyntaxVersion,
13
13
  )
14
- from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
15
- from rasa.dialogue_understanding.stack.frames.dialogue_stack_frame import (
16
- DialogueStackFrame,
17
- )
18
14
  from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
19
- AgentStackFrame,
20
- AgentState,
21
15
  FlowStackFrameType,
22
16
  UserFlowStackFrame,
23
17
  )
24
- from rasa.dialogue_understanding.stack.frames.pattern_frame import PatternFlowStackFrame
25
18
  from rasa.dialogue_understanding.stack.utils import (
26
- is_continue_interrupted_flow_active,
27
19
  top_user_flow_frame,
28
20
  user_flows_on_the_stack,
29
21
  )
30
- from rasa.shared.core.events import (
31
- AgentInterrupted,
32
- AgentResumed,
33
- Event,
34
- FlowInterrupted,
35
- FlowResumed,
36
- )
22
+ from rasa.shared.core.events import Event, FlowInterrupted
37
23
  from rasa.shared.core.flows import FlowsList
38
24
  from rasa.shared.core.trackers import DialogueStateTracker
39
25
 
@@ -85,7 +71,12 @@ class StartFlowCommand(Command):
85
71
  original_stack = original_tracker.stack
86
72
  applied_events: List[Event] = []
87
73
 
88
- if self.flow not in all_flows.flow_ids:
74
+ if self.flow in user_flows_on_the_stack(stack):
75
+ structlogger.debug(
76
+ "start_flow_command.skip_command.already_started_flow", command=self
77
+ )
78
+ return []
79
+ elif self.flow not in all_flows.flow_ids:
89
80
  structlogger.debug(
90
81
  "start_flow_command.skip_command.start_invalid_flow_id", command=self
91
82
  )
@@ -96,36 +87,9 @@ class StartFlowCommand(Command):
96
87
  original_user_frame.flow(all_flows) if original_user_frame else None
97
88
  )
98
89
 
99
- # if the original top flow is the same as the flow to start, the flow is
100
- # already active, do nothing
101
- if original_top_flow is not None and original_top_flow.id == self.flow:
102
- # in case continue_interrupted is not active, skip the already active start
103
- # flow command
104
- if not is_continue_interrupted_flow_active(stack):
105
- return []
106
-
107
- # if the continue interrupted flow is active, and the command generator
108
- # predicted a start flow command for the flow which is on top of the stack,
109
- # we just need to remove the pattern_continue_interrupted frame(s) from the
110
- # stack
111
- stack = _remove_pattern_continue_interrupted_frames(stack)
112
- return applied_events + tracker.create_stack_updated_events(stack)
113
-
114
- # if the flow is already on the stack, resume it
115
- if (
116
- self.flow in user_flows_on_the_stack(stack)
117
- and original_user_frame is not None
118
- ):
119
- # if pattern_continue_interrupted is active, we need to remove it
120
- # from the stack before resuming the flow
121
- stack = _remove_pattern_continue_interrupted_frames(stack)
122
- return self.resume_flow(tracker, stack, original_user_frame)
123
-
124
90
  frame_type = FlowStackFrameType.REGULAR
125
91
 
126
92
  if original_top_flow:
127
- # if the original top flow is not the same as the flow to start,
128
- # interrupt the current active flow
129
93
  frame_type = FlowStackFrameType.INTERRUPT
130
94
 
131
95
  if original_user_frame is not None:
@@ -135,24 +99,6 @@ class StartFlowCommand(Command):
135
99
  )
136
100
  )
137
101
 
138
- # If there is an active agent frame, interrupt it
139
- active_agent_stack_frame = stack.find_active_agent_frame()
140
- if active_agent_stack_frame:
141
- structlogger.debug(
142
- "start_flow_command.interrupt_agent",
143
- command=self,
144
- agent_id=active_agent_stack_frame.agent_id,
145
- frame_id=active_agent_stack_frame.frame_id,
146
- flow_id=active_agent_stack_frame.flow_id,
147
- )
148
- active_agent_stack_frame.state = AgentState.INTERRUPTED
149
- applied_events.append(
150
- AgentInterrupted(
151
- active_agent_stack_frame.agent_id,
152
- active_agent_stack_frame.flow_id,
153
- )
154
- )
155
-
156
102
  structlogger.debug("start_flow_command.start_flow", command=self)
157
103
  stack.push(UserFlowStackFrame(flow_id=self.flow, frame_type=frame_type))
158
104
  return applied_events + tracker.create_stack_updated_events(stack)
@@ -198,105 +144,3 @@ class StartFlowCommand(Command):
198
144
  CommandSyntaxManager.get_syntax_version(),
199
145
  mapper[CommandSyntaxManager.get_default_syntax_version()],
200
146
  )
201
-
202
- def resume_flow(
203
- self,
204
- tracker: DialogueStateTracker,
205
- stack: DialogueStack,
206
- original_user_frame: UserFlowStackFrame,
207
- ) -> List[Event]:
208
- """Resumes a flow by reordering frames."""
209
- applied_events: List[Event] = []
210
-
211
- # Resume existing flow by reordering frames
212
- frames_to_resume, user_frame_to_resume = self._collect_frames_to_resume(
213
- stack, self.flow
214
- )
215
-
216
- # if the flow is not on the stack, do nothing
217
- # this should not happen, but just in case
218
- if user_frame_to_resume is None:
219
- structlogger.error(
220
- "start_flow_command.resume_flow.no_user_frame_to_resume",
221
- command=self,
222
- )
223
- return []
224
-
225
- # move the frames to the top of the stack, e.g. reorder the frames
226
- # on the stack
227
- stack.move_frames_to_top(frames_to_resume)
228
- agent_stack_frame = next(
229
- (frame for frame in frames_to_resume if isinstance(frame, AgentStackFrame)),
230
- None,
231
- )
232
- if agent_stack_frame:
233
- agent_id = agent_stack_frame.agent_id
234
- applied_events.append(AgentResumed(agent_id, agent_stack_frame.flow_id))
235
-
236
- # Create flow interruption and resumption events
237
- applied_events.extend(
238
- [
239
- # the current active flow is interrupted
240
- FlowInterrupted(
241
- original_user_frame.flow_id, original_user_frame.step_id
242
- ),
243
- # the flow, which was on the stack, is resumed
244
- FlowResumed(user_frame_to_resume.flow_id, user_frame_to_resume.step_id),
245
- ]
246
- )
247
-
248
- return applied_events + tracker.create_stack_updated_events(stack)
249
-
250
- def _collect_frames_to_resume(
251
- self, stack: DialogueStack, target_flow_id: str
252
- ) -> Tuple[List[DialogueStackFrame], Optional[UserFlowStackFrame]]:
253
- """Collect frames that need to be resumed for the target flow.
254
-
255
- Args:
256
- stack: The stack to collect frames from.
257
- target_flow_id: The ID of the flow to resume.
258
-
259
- Returns:
260
- A tuple containing (frames_to_resume, frame_to_resume).
261
- """
262
- frames_to_resume: List[DialogueStackFrame] = []
263
- frame_found = False
264
- frame_to_resume = None
265
-
266
- for frame in stack.frames:
267
- if isinstance(frame, UserFlowStackFrame) and (
268
- frame.frame_type == FlowStackFrameType.REGULAR
269
- or frame.frame_type == FlowStackFrameType.INTERRUPT
270
- ):
271
- if frame.flow_id == target_flow_id:
272
- frames_to_resume.append(frame)
273
- frame_to_resume = frame
274
- frame_found = True
275
- continue
276
- elif frame_found:
277
- break
278
-
279
- if frame_found:
280
- frames_to_resume.append(frame)
281
-
282
- return list(frames_to_resume), frame_to_resume
283
-
284
-
285
- def _remove_pattern_continue_interrupted_frames(stack: DialogueStack) -> DialogueStack:
286
- """Remove pattern_continue_interrupted frames from the stack."""
287
- if not is_continue_interrupted_flow_active(stack):
288
- return stack
289
-
290
- # remove pattern_continue_interrupted from the stack
291
- top_frame = stack.top()
292
- while isinstance(top_frame, PatternFlowStackFrame):
293
- # If the top frame is a pattern frame, we need to remove it
294
- # before continuing with the active user flow frame.
295
- # This prevents the pattern frame
296
- # from being left on the stack when the flow is started
297
- # which would prevent pattern_completed to be triggered
298
- # once the user flow is completed.
299
- stack.pop()
300
- top_frame = stack.top()
301
-
302
- return stack
@@ -6,10 +6,7 @@ from rasa.dialogue_understanding.patterns.validate_slot import (
6
6
  ValidateSlotPatternFlowStackFrame,
7
7
  )
8
8
  from rasa.shared.constants import ACTION_ASK_PREFIX, UTTER_ASK_PREFIX
9
- from rasa.shared.core.events import (
10
- Event,
11
- SlotSet,
12
- )
9
+ from rasa.shared.core.events import Event, SlotSet
13
10
  from rasa.shared.core.flows import FlowsList
14
11
  from rasa.shared.core.slots import Slot
15
12
  from rasa.shared.core.trackers import DialogueStateTracker
@@ -106,8 +103,7 @@ def create_validate_frames_from_slot_set_events(
106
103
  Args:
107
104
  tracker: The dialogue state tracker.
108
105
  events: List of events to process.
109
- validate_frames: List to collect validation frames.
110
- should_break: whether to break after the first non-SlotSet event.
106
+ should_break: whether or not to break after the first non-SlotSet event.
111
107
  if True, break out of the event loop as soon as the first non-SlotSet
112
108
  event is encountered.
113
109
  if False, continue processing the events until the end.
@@ -9,11 +9,9 @@ from rasa.dialogue_understanding.commands import (
9
9
  ChitChatAnswerCommand,
10
10
  ClarifyCommand,
11
11
  Command,
12
- ContinueAgentCommand,
13
12
  HumanHandoffCommand,
14
13
  KnowledgeAnswerCommand,
15
14
  RepeatBotMessagesCommand,
16
- RestartAgentCommand,
17
15
  SetSlotCommand,
18
16
  SkipQuestionCommand,
19
17
  StartFlowCommand,
@@ -36,8 +34,6 @@ DEFAULT_COMMANDS = [
36
34
  HumanHandoffCommand,
37
35
  ClarifyCommand,
38
36
  RepeatBotMessagesCommand,
39
- ContinueAgentCommand,
40
- RestartAgentCommand,
41
37
  ]
42
38
 
43
39
 
@@ -219,11 +219,6 @@ class FlowRetrieval(EmbeddingsHealthCheckMixin):
219
219
  if self.vector_store is not None:
220
220
  with self._model_storage.write_to(self._resource) as model_path:
221
221
  self.vector_store.save_local(model_path)
222
- else:
223
- structlogger.warning(
224
- "flow_retrieval.persist_vector_store.not_initialized",
225
- event_info="Vector store is None, not persisted.",
226
- )
227
222
 
228
223
  def _persist_config(self) -> None:
229
224
  with self._model_storage.write_to(self._resource) as path:
@@ -249,6 +244,16 @@ class FlowRetrieval(EmbeddingsHealthCheckMixin):
249
244
  )
250
245
 
251
246
  flows_to_embedd = flows.exclude_link_only_flows()
247
+
248
+ if not flows_to_embedd:
249
+ structlogger.debug(
250
+ "flow_retrieval.populate_vector_store.no_flows_to_embed",
251
+ event_info=(
252
+ "No flows to embed in the vector store, skipping population."
253
+ ),
254
+ )
255
+ return
256
+
252
257
  embeddings = self._create_embedder(self.config)
253
258
  documents = self._generate_flow_documents(flows_to_embedd, domain)
254
259
  try:
@@ -420,10 +425,6 @@ class FlowRetrieval(EmbeddingsHealthCheckMixin):
420
425
  The top k documents with similarity scores.
421
426
  """
422
427
  if self.vector_store is None:
423
- structlogger.error(
424
- "flow_retrieval.query_vector_store.vector_store_not_configured",
425
- event_info="Vector store is not configured",
426
- )
427
428
  return []
428
429
  try:
429
430
  documents_with_scores = (