rasa-pro 3.14.0.dev4__py3-none-any.whl → 3.14.0.dev5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rasa-pro might be problematic. Click here for more details.

Files changed (463) hide show
  1. rasa/api.py +0 -5
  2. rasa/builder/README.md +120 -0
  3. rasa/builder/auth.py +176 -0
  4. rasa/builder/config.py +115 -0
  5. rasa/builder/copilot/constants.py +25 -0
  6. rasa/builder/copilot/copilot.py +372 -0
  7. rasa/builder/copilot/copilot_response_handler.py +487 -0
  8. rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
  9. rasa/builder/copilot/exceptions.py +20 -0
  10. rasa/builder/copilot/models.py +431 -0
  11. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +726 -0
  12. rasa/builder/copilot/telemetry.py +195 -0
  13. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
  14. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +26 -0
  15. rasa/builder/document_retrieval/constants.py +15 -0
  16. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
  17. rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
  18. rasa/builder/document_retrieval/models.py +62 -0
  19. rasa/builder/download.py +140 -0
  20. rasa/builder/exceptions.py +55 -0
  21. rasa/builder/guardrails/__init__.py +1 -0
  22. rasa/builder/guardrails/constants.py +3 -0
  23. rasa/builder/guardrails/exceptions.py +4 -0
  24. rasa/builder/guardrails/lakera.py +206 -0
  25. rasa/builder/guardrails/models.py +199 -0
  26. rasa/builder/guardrails/utils.py +305 -0
  27. rasa/builder/job_manager.py +87 -0
  28. rasa/builder/jobs.py +234 -0
  29. rasa/builder/llm_service.py +246 -0
  30. rasa/builder/logging_utils.py +209 -0
  31. rasa/builder/main.py +174 -0
  32. rasa/builder/models.py +197 -0
  33. rasa/builder/project_generator.py +450 -0
  34. rasa/builder/project_info.py +72 -0
  35. rasa/builder/scrape_rasa_docs.py +97 -0
  36. rasa/builder/service.py +1142 -0
  37. rasa/builder/shared/tracker_context.py +212 -0
  38. rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
  39. rasa/builder/training_service.py +132 -0
  40. rasa/builder/validation_service.py +93 -0
  41. rasa/cli/arguments/default_arguments.py +0 -12
  42. rasa/cli/arguments/run.py +0 -2
  43. rasa/cli/dialogue_understanding_test.py +0 -4
  44. rasa/cli/e2e_test.py +0 -4
  45. rasa/cli/inspect.py +0 -3
  46. rasa/cli/llm_fine_tuning.py +0 -5
  47. rasa/cli/project_templates/basic/actions/action_api.py +15 -0
  48. rasa/cli/project_templates/basic/actions/action_human_handoff.py +44 -0
  49. rasa/cli/project_templates/basic/config.yml +23 -0
  50. rasa/cli/project_templates/basic/credentials.yml +34 -0
  51. rasa/cli/project_templates/basic/data/general/feedback.yml +20 -0
  52. rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
  53. rasa/cli/project_templates/basic/data/general/hello.yml +7 -0
  54. rasa/cli/project_templates/basic/data/general/help.yml +6 -0
  55. rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
  56. rasa/cli/project_templates/basic/data/general/welcome.yml +9 -0
  57. rasa/cli/project_templates/basic/data/system/pattern_completed.yml +7 -0
  58. rasa/cli/project_templates/basic/data/system/pattern_correction.yml +7 -0
  59. rasa/cli/project_templates/basic/data/system/pattern_search.yml +8 -0
  60. rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +8 -0
  61. rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +65 -0
  62. rasa/cli/project_templates/basic/docs/template.txt +7 -0
  63. rasa/cli/project_templates/basic/domain/general/assistant_details.yml +12 -0
  64. rasa/cli/project_templates/basic/domain/general/bot_identity.yml +5 -0
  65. rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +5 -0
  66. rasa/cli/project_templates/basic/domain/general/feedback.yml +28 -0
  67. rasa/cli/project_templates/basic/domain/general/goodbye.yml +7 -0
  68. rasa/cli/project_templates/basic/domain/general/help.yml +5 -0
  69. rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +35 -0
  70. rasa/cli/project_templates/basic/domain/general/utils.yml +13 -0
  71. rasa/cli/project_templates/basic/domain/general/welcome.yml +7 -0
  72. rasa/cli/project_templates/basic/endpoints.yml +73 -0
  73. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  74. rasa/cli/project_templates/finance/actions/__init__.py +46 -0
  75. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
  76. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
  77. rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
  78. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
  79. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
  80. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
  81. rasa/cli/project_templates/finance/actions/database.py +277 -0
  82. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  83. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
  84. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
  85. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
  86. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
  87. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
  88. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
  89. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
  90. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
  91. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
  92. rasa/cli/project_templates/finance/config.yml +21 -0
  93. rasa/cli/project_templates/finance/credentials.yml +32 -0
  94. rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
  95. rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
  96. rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
  97. rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
  98. rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
  99. rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
  100. rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
  101. rasa/cli/project_templates/finance/csvs/users.csv +4 -0
  102. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
  103. rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
  104. rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
  105. rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
  106. rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
  107. rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
  108. rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
  109. rasa/cli/project_templates/finance/data/general/help.yml +9 -0
  110. rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
  111. rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
  112. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +5 -0
  113. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
  114. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
  115. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
  116. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
  117. rasa/cli/project_templates/finance/data/system/source/accounts.json +51 -0
  118. rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
  119. rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
  120. rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
  121. rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
  122. rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
  123. rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
  124. rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
  125. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
  126. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
  127. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
  128. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
  129. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
  130. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
  131. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
  132. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
  133. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
  134. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
  135. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
  136. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
  137. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
  138. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
  139. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
  140. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
  141. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
  142. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
  143. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
  144. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
  145. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
  146. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
  147. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
  148. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
  149. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
  150. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
  151. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
  152. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
  153. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
  154. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
  155. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
  156. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
  157. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
  158. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
  159. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
  160. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
  161. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
  162. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
  163. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
  164. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
  165. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
  166. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
  167. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
  168. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
  169. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
  170. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
  171. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
  172. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
  173. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
  174. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
  175. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
  176. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
  177. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
  178. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
  179. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
  180. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
  181. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
  182. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
  183. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
  184. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
  185. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
  186. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
  187. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
  188. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
  189. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
  190. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
  191. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
  192. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
  193. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
  194. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
  195. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
  196. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
  197. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
  198. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
  199. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
  200. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
  201. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
  202. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
  203. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
  204. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
  205. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
  206. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
  207. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
  208. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
  209. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
  210. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
  211. rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
  212. rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
  213. rasa/cli/project_templates/finance/domain/general/assistant_details.yml +12 -0
  214. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
  215. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
  216. rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
  217. rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
  218. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  219. rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
  220. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
  221. rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
  222. rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
  223. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
  224. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
  225. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
  226. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
  227. rasa/cli/project_templates/finance/endpoints.yml +63 -0
  228. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
  229. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  230. rasa/cli/project_templates/telco/actions/actions_billing.py +204 -0
  231. rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +48 -0
  232. rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +28 -0
  233. rasa/cli/project_templates/telco/actions/actions_session_start.py +18 -0
  234. rasa/cli/project_templates/telco/config.yml +25 -0
  235. rasa/cli/project_templates/telco/credentials.yml +33 -0
  236. rasa/cli/project_templates/telco/csvs/billing.csv +10 -0
  237. rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
  238. rasa/cli/project_templates/telco/data/flows/flow_global.yml +5 -0
  239. rasa/cli/project_templates/telco/data/flows/flow_reboot_router.yml +8 -0
  240. rasa/cli/project_templates/telco/data/flows/flow_reset_router.yml +7 -0
  241. rasa/cli/project_templates/telco/data/flows/flow_solve_internet_issue.yml +73 -0
  242. rasa/cli/project_templates/telco/data/flows/flow_undertand_bill.yml +45 -0
  243. rasa/cli/project_templates/telco/data/patterns/pattern_completed.yml +7 -0
  244. rasa/cli/project_templates/telco/data/patterns/pattern_human_handoff.yml +6 -0
  245. rasa/cli/project_templates/telco/data/patterns/pattern_search.yml +7 -0
  246. rasa/cli/project_templates/telco/data/patterns/pattern_session_start.yml +9 -0
  247. rasa/cli/project_templates/telco/docs/reset_vs_rboot_router.txt +1 -0
  248. rasa/cli/project_templates/telco/docs/restart_router.txt +6 -0
  249. rasa/cli/project_templates/telco/docs/run_speed_test.txt +6 -0
  250. rasa/cli/project_templates/telco/domain/domain_global.yml +29 -0
  251. rasa/cli/project_templates/telco/domain/domain_patterns.yml +17 -0
  252. rasa/cli/project_templates/telco/domain/domain_reboot_router.yml +20 -0
  253. rasa/cli/project_templates/telco/domain/domain_reset_router.yml +11 -0
  254. rasa/cli/project_templates/telco/domain/domain_run_speed_test.yml +24 -0
  255. rasa/cli/project_templates/telco/domain/domain_solve_internet_issue.yml +74 -0
  256. rasa/cli/project_templates/telco/domain/domain_undertand_bill.yml +102 -0
  257. rasa/cli/project_templates/telco/endpoints.yml +60 -0
  258. rasa/{dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 → cli/project_templates/telco/prompts/command-generator.jinja2} +3 -7
  259. rasa/cli/project_templates/telco/tests/e2e_results_failed.yml +62 -0
  260. rasa/cli/project_templates/telco/tests/e2e_results_passed.yml +130 -0
  261. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing_test_cases.yml +68 -0
  262. rasa/cli/project_templates/telco/tests/e2e_test_cases/global_test_cases.yml +13 -0
  263. rasa/cli/project_templates/telco/tests/e2e_test_cases/internet_slow_test_case.yml +47 -0
  264. rasa/cli/project_templates/telco/tests/e2e_test_cases/out_of_scope_test_case.yml +21 -0
  265. rasa/cli/project_templates/telco/tests/e2e_test_cases/patterns_test_cases.yml +15 -0
  266. rasa/cli/project_templates/tutorial/config.yml +2 -1
  267. rasa/cli/run.py +0 -4
  268. rasa/cli/scaffold.py +46 -2
  269. rasa/cli/shell.py +0 -3
  270. rasa/constants.py +0 -6
  271. rasa/core/actions/action.py +10 -56
  272. rasa/core/agent.py +0 -16
  273. rasa/core/available_endpoints.py +0 -30
  274. rasa/core/channels/channel.py +4 -3
  275. rasa/core/channels/constants.py +3 -0
  276. rasa/core/channels/development_inspector.py +4 -4
  277. rasa/core/channels/hangouts.py +2 -2
  278. rasa/core/channels/inspector/dist/assets/{arc-63212852.js → arc-18042c22.js} +1 -1
  279. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-eecf6b13.js → blockDiagram-38ab4fdb-fdd6bcfa.js} +1 -1
  280. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-8f798a9a.js → c4Diagram-3d4e48cf-f5ae6786.js} +1 -1
  281. rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +1 -0
  282. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-df71a04c.js → classDiagram-70f12bd4-81efba3e.js} +1 -1
  283. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-9b275968.js → classDiagram-v2-f2320105-3b6b6a92.js} +1 -1
  284. rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +1 -0
  285. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-1c669cad.js → createText-2e5e7dd3-31422447.js} +1 -1
  286. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b1553799.js → edges-e0da2a9e-518a90db.js} +1 -1
  287. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-112388d6.js → erDiagram-9861fffd-a6d3c25a.js} +1 -1
  288. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-fdebec47.js → flowDb-956e92f1-e048c2be.js} +1 -1
  289. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-6280ede1.js → flowDiagram-66a62f08-c7474c91.js} +1 -1
  290. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +1 -0
  291. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-e1dc03e5.js → flowchart-elk-definition-4a651766-cb4d8723.js} +1 -1
  292. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-83f68c51.js → ganttDiagram-c361ad54-346636a2.js} +1 -1
  293. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-22f8666f.js → gitGraphDiagram-72cf32ee-7c508874.js} +1 -1
  294. rasa/core/channels/inspector/dist/assets/{graph-ca9e6217.js → graph-14702d8a.js} +1 -1
  295. rasa/core/channels/inspector/dist/assets/{index-3862675e-c5ceb692.js → index-3862675e-f18b534b.js} +1 -1
  296. rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +1335 -0
  297. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-faa9999b.js → infoDiagram-f8f76790-64154b83.js} +1 -1
  298. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-c4dda8d9.js → journeyDiagram-49397b02-833a5f95.js} +1 -1
  299. rasa/core/channels/inspector/dist/assets/{layout-d4307784.js → layout-5a3b2123.js} +1 -1
  300. rasa/core/channels/inspector/dist/assets/{line-0567aaa7.js → line-2272a8c7.js} +1 -1
  301. rasa/core/channels/inspector/dist/assets/{linear-c11b95cf.js → linear-35bcf273.js} +1 -1
  302. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-0c7d3ca9.js → mindmap-definition-fc14e90a-92dcb0e9.js} +1 -1
  303. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-34b433fa.js → pieDiagram-8a3498a8-94dbc900.js} +1 -1
  304. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-4cab816e.js → quadrantDiagram-120e2f19-8b7a9c33.js} +1 -1
  305. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-8c22fa9e.js → requirementDiagram-deff3bca-6f7eab81.js} +1 -1
  306. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-70ce9e8e.js → sankeyDiagram-04a897e0-f43e581d.js} +1 -1
  307. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-fbcd7fc9.js → sequenceDiagram-704730f1-0bcbefc3.js} +1 -1
  308. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-45f05ea6.js → stateDiagram-587899a1-b8a74083.js} +1 -1
  309. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-beab1ea6.js → stateDiagram-v2-d93cdb3a-2070218f.js} +1 -1
  310. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-2f29dbd5.js → styles-6aaf32cf-f1d54e34.js} +1 -1
  311. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-951eac83.js → styles-9a916d00-980de489.js} +1 -1
  312. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-897fbfdd.js → styles-c10674c1-3c03abde.js} +1 -1
  313. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-d667fac1.js → svgDrawCommon-08f97a94-46ba068f.js} +1 -1
  314. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-e3205144.js → timeline-definition-85554ec2-901f5e3d.js} +1 -1
  315. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-4abeb0e2.js → xychartDiagram-e933f94c-acbc628a.js} +1 -1
  316. rasa/core/channels/inspector/dist/index.html +2 -2
  317. rasa/core/channels/inspector/index.html +1 -1
  318. rasa/core/channels/inspector/src/App.tsx +10 -11
  319. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +12 -3
  320. rasa/core/channels/inspector/src/components/DialogueStack.tsx +4 -6
  321. rasa/core/channels/inspector/src/helpers/formatters.ts +3 -24
  322. rasa/core/channels/inspector/src/theme/base/styles.ts +1 -19
  323. rasa/core/channels/inspector/src/types.ts +0 -4
  324. rasa/core/channels/socketio.py +212 -51
  325. rasa/core/channels/studio_chat.py +49 -29
  326. rasa/core/channels/voice_stream/genesys.py +1 -1
  327. rasa/core/channels/voice_stream/voice_channel.py +5 -3
  328. rasa/core/constants.py +0 -4
  329. rasa/core/policies/enterprise_search_policy.py +6 -11
  330. rasa/core/policies/flow_policy.py +4 -4
  331. rasa/core/policies/flows/flow_executor.py +45 -456
  332. rasa/core/policies/intentless_policy.py +1 -1
  333. rasa/core/policies/unexpected_intent_policy.py +0 -1
  334. rasa/core/processor.py +15 -18
  335. rasa/core/run.py +14 -11
  336. rasa/core/tracker_stores/tracker_store.py +7 -3
  337. rasa/core/train.py +1 -1
  338. rasa/core/training/interactive.py +16 -16
  339. rasa/core/training/story_conflict.py +5 -5
  340. rasa/core/utils.py +1 -21
  341. rasa/dialogue_understanding/commands/__init__.py +0 -8
  342. rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -97
  343. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +0 -11
  344. rasa/dialogue_understanding/commands/clarify_command.py +0 -10
  345. rasa/dialogue_understanding/commands/knowledge_answer_command.py +0 -11
  346. rasa/dialogue_understanding/commands/start_flow_command.py +8 -164
  347. rasa/dialogue_understanding/commands/utils.py +2 -6
  348. rasa/dialogue_understanding/generator/command_parser.py +0 -4
  349. rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
  350. rasa/dialogue_understanding/generator/llm_based_command_generator.py +12 -50
  351. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  352. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  353. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +6 -7
  354. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +6 -7
  355. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +2 -41
  356. rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -163
  357. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +8 -52
  358. rasa/dialogue_understanding/processor/command_processor.py +15 -31
  359. rasa/dialogue_understanding/stack/dialogue_stack.py +2 -123
  360. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +0 -57
  361. rasa/dialogue_understanding/stack/utils.py +2 -17
  362. rasa/dialogue_understanding_test/du_test_runner.py +2 -7
  363. rasa/e2e_test/e2e_test_runner.py +2 -12
  364. rasa/engine/caching.py +2 -2
  365. rasa/engine/recipes/default_components.py +18 -10
  366. rasa/engine/storage/local_model_storage.py +45 -2
  367. rasa/graph_components/validators/default_recipe_validator.py +134 -134
  368. rasa/hooks.py +5 -5
  369. rasa/llm_fine_tuning/utils.py +2 -2
  370. rasa/model_manager/model_api.py +4 -5
  371. rasa/model_manager/runner_service.py +1 -1
  372. rasa/model_manager/socket_bridge.py +20 -14
  373. rasa/model_manager/trainer_service.py +12 -9
  374. rasa/model_manager/utils.py +1 -29
  375. rasa/model_manager/warm_rasa_process.py +1 -1
  376. rasa/nlu/extractors/extractor.py +1 -2
  377. rasa/plugin.py +8 -8
  378. rasa/privacy/privacy_manager.py +2 -11
  379. rasa/server.py +2 -14
  380. rasa/shared/constants.py +0 -5
  381. rasa/shared/core/constants.py +1 -12
  382. rasa/shared/core/domain.py +58 -11
  383. rasa/shared/core/events.py +0 -327
  384. rasa/shared/core/flows/flow_step.py +7 -1
  385. rasa/shared/core/flows/flows_list.py +2 -2
  386. rasa/shared/core/flows/flows_yaml_schema.json +186 -112
  387. rasa/shared/core/flows/steps/call.py +5 -53
  388. rasa/shared/core/flows/validation.py +7 -46
  389. rasa/shared/core/flows/yaml_flows_io.py +17 -9
  390. rasa/shared/core/slots.py +6 -2
  391. rasa/shared/core/trackers.py +2 -5
  392. rasa/shared/exceptions.py +0 -4
  393. rasa/shared/importers/importer.py +6 -0
  394. rasa/shared/importers/utils.py +77 -1
  395. rasa/shared/providers/_utils.py +60 -44
  396. rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
  397. rasa/shared/providers/llm/_base_litellm_client.py +7 -39
  398. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
  399. rasa/shared/providers/llm/litellm_router_llm_client.py +4 -8
  400. rasa/shared/providers/llm/llm_client.py +3 -7
  401. rasa/shared/providers/llm/llm_response.py +0 -49
  402. rasa/shared/providers/llm/self_hosted_llm_client.py +4 -8
  403. rasa/shared/utils/llm.py +5 -28
  404. rasa/shared/utils/schemas/events.py +0 -42
  405. rasa/shared/utils/yaml.py +1 -3
  406. rasa/studio/upload.py +16 -47
  407. rasa/telemetry.py +97 -23
  408. rasa/tracing/instrumentation/instrumentation.py +10 -12
  409. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  410. rasa/utils/common.py +0 -79
  411. rasa/utils/io.py +27 -9
  412. rasa/utils/json_utils.py +6 -1
  413. rasa/utils/log_utils.py +6 -2
  414. rasa/utils/ml_utils.py +1 -1
  415. rasa/utils/openapi.py +144 -0
  416. rasa/utils/tensorflow/rasa_layers.py +1 -1
  417. rasa/utils/train_utils.py +15 -15
  418. rasa/validator.py +21 -19
  419. rasa/version.py +1 -1
  420. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/METADATA +17 -14
  421. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/RECORD +431 -200
  422. rasa/agents/agent_factory.py +0 -122
  423. rasa/agents/agent_manager.py +0 -162
  424. rasa/agents/constants.py +0 -40
  425. rasa/agents/core/agent_protocol.py +0 -107
  426. rasa/agents/core/types.py +0 -70
  427. rasa/agents/exceptions.py +0 -8
  428. rasa/agents/protocol/__init__.py +0 -5
  429. rasa/agents/protocol/a2a/a2a_agent.py +0 -662
  430. rasa/agents/protocol/mcp/mcp_base_agent.py +0 -676
  431. rasa/agents/protocol/mcp/mcp_open_agent.py +0 -276
  432. rasa/agents/protocol/mcp/mcp_task_agent.py +0 -469
  433. rasa/agents/schemas/__init__.py +0 -12
  434. rasa/agents/schemas/agent_input.py +0 -38
  435. rasa/agents/schemas/agent_output.py +0 -26
  436. rasa/agents/schemas/agent_tool_result.py +0 -51
  437. rasa/agents/schemas/agent_tool_schema.py +0 -134
  438. rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +0 -15
  439. rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +0 -17
  440. rasa/agents/utils.py +0 -72
  441. rasa/core/available_agents.py +0 -199
  442. rasa/core/channels/inspector/dist/assets/channel-0cd70adf.js +0 -1
  443. rasa/core/channels/inspector/dist/assets/clone-a0f9c4ed.js +0 -1
  444. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-de9cc4aa.js +0 -1
  445. rasa/core/channels/inspector/dist/assets/index-3e293924.js +0 -1353
  446. rasa/core/policies/flows/mcp_tool_executor.py +0 -277
  447. rasa/dialogue_understanding/commands/continue_agent_command.py +0 -91
  448. rasa/dialogue_understanding/commands/restart_agent_command.py +0 -162
  449. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +0 -61
  450. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +0 -81
  451. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +0 -81
  452. rasa/shared/agents/utils.py +0 -35
  453. rasa/shared/utils/mcp/server_connection.py +0 -157
  454. /rasa/{agents → builder}/__init__.py +0 -0
  455. /rasa/{agents/core → builder/copilot}/__init__.py +0 -0
  456. /rasa/{agents/protocol/a2a → builder/copilot/prompts}/__init__.py +0 -0
  457. /rasa/{agents/protocol/mcp → builder/copilot/templated_messages}/__init__.py +0 -0
  458. /rasa/{agents/templates → builder/document_retrieval}/__init__.py +0 -0
  459. /rasa/{shared/agents → cli/project_templates/finance/actions/accounts}/__init__.py +0 -0
  460. /rasa/{shared/utils/mcp → cli/project_templates/finance/actions/cards}/__init__.py +0 -0
  461. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/NOTICE +0 -0
  462. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/WHEEL +0 -0
  463. {rasa_pro-3.14.0.dev4.dist-info → rasa_pro-3.14.0.dev5.dist-info}/entry_points.txt +0 -0
@@ -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 = (
@@ -7,7 +7,6 @@ from jinja2 import Environment, Template, select_autoescape
7
7
 
8
8
  import rasa.dialogue_understanding.generator.utils
9
9
  import rasa.shared.utils.io
10
- from rasa.core.available_agents import AvailableAgents
11
10
  from rasa.dialogue_understanding.commands import (
12
11
  Command,
13
12
  SetSlotCommand,
@@ -32,7 +31,6 @@ from rasa.engine.storage.resource import Resource
32
31
  from rasa.engine.storage.storage import ModelStorage
33
32
  from rasa.shared.core.constants import SetSlotExtractor
34
33
  from rasa.shared.core.domain import Domain
35
- from rasa.shared.core.events import AgentStarted
36
34
  from rasa.shared.core.flows import Flow, FlowsList, FlowStep
37
35
  from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
38
36
  from rasa.shared.core.slot_mappings import SlotFillingManager
@@ -227,7 +225,8 @@ class LLMBasedCommandGenerator(
227
225
 
228
226
  @lru_cache
229
227
  def compile_template(self, template: str) -> Template:
230
- """Compile the prompt template and register custom filters.
228
+ """
229
+ Compile the prompt template and register custom filters.
231
230
 
232
231
  Compiling the template is an expensive operation,
233
232
  so we cache the result.
@@ -362,24 +361,20 @@ class LLMBasedCommandGenerator(
362
361
  )
363
362
 
364
363
  def prepare_flows_for_template(
365
- self,
366
- flows: FlowsList,
367
- tracker: DialogueStateTracker,
368
- add_agent_info: bool = False,
364
+ self, flows: FlowsList, tracker: DialogueStateTracker
369
365
  ) -> List[Dict[str, Any]]:
370
366
  """Format data on available flows for insertion into the prompt template.
371
367
 
372
368
  Args:
373
369
  flows: The flows available to the user.
374
370
  tracker: The tracker containing the current state of the conversation.
375
- add_agent_info: Whether to add agent info to flows or not.
376
371
 
377
372
  Returns:
378
373
  The inputs for the prompt template.
379
374
  """
380
- result: List[Dict[str, Any]] = []
375
+ result = []
381
376
  for flow in flows.user_flows:
382
- slots_with_info: List[Dict[str, Any]] = [
377
+ slots_with_info = [
383
378
  {
384
379
  "name": q.collect,
385
380
  "description": q.description,
@@ -388,46 +383,13 @@ class LLMBasedCommandGenerator(
388
383
  for q in flow.get_collect_steps()
389
384
  if self.is_extractable(q, tracker)
390
385
  ]
391
-
392
- agent_info: List[Dict[str, Any]] = []
393
- if add_agent_info:
394
- # add information about agents that have been started for this flow
395
- agent_events = [
396
- event
397
- for event in tracker.events
398
- if isinstance(event, AgentStarted) and event.flow_id == flow.id
399
- ]
400
- available_agents = [
401
- AvailableAgents.get_agent_config(event.agent_id)
402
- for event in agent_events
403
- ]
404
- if available_agents:
405
- agent_info = [
406
- {
407
- "name": available_agent.agent.name,
408
- "description": available_agent.agent.description,
409
- }
410
- for available_agent in available_agents
411
- if available_agent is not None
412
- ]
413
-
414
- if agent_info:
415
- result.append(
416
- {
417
- "name": flow.id,
418
- "description": flow.description,
419
- "slots": slots_with_info,
420
- "agent_info": agent_info,
421
- }
422
- )
423
- else:
424
- result.append(
425
- {
426
- "name": flow.id,
427
- "description": flow.description,
428
- "slots": slots_with_info,
429
- }
430
- )
386
+ result.append(
387
+ {
388
+ "name": flow.id,
389
+ "description": flow.description,
390
+ "slots": slots_with_info,
391
+ }
392
+ )
431
393
  return result
432
394
 
433
395
  @staticmethod
@@ -1,7 +1,7 @@
1
1
  from typing import Any, Dict, List, Optional, Text, Union
2
2
 
3
3
  import structlog
4
- from deprecated import deprecated # type: ignore[import-untyped]
4
+ from deprecated import deprecated # type: ignore[import]
5
5
 
6
6
  from rasa.dialogue_understanding.generator.single_step.single_step_llm_command_generator import ( # noqa: E501
7
7
  SingleStepLLMCommandGenerator,
@@ -2,7 +2,7 @@ import importlib.resources
2
2
  from typing import Any, Dict, List, Optional, Text, Tuple, Union
3
3
 
4
4
  import structlog
5
- from deprecated import deprecated # type: ignore[import-untyped]
5
+ from deprecated import deprecated # type: ignore[import]
6
6
  from jinja2 import Template
7
7
 
8
8
  import rasa.shared.utils.io
@@ -45,30 +45,29 @@ DEFAULT_LLM_CONFIG = {
45
45
  TIMEOUT_CONFIG_KEY: 7,
46
46
  }
47
47
 
48
- # TODO: only load the agent prompt template in cases where agents are actually used
49
48
  MODEL_PROMPT_MAPPER = {
50
49
  f"{OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
51
- "agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
50
+ "command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
52
51
  ),
53
52
  f"{AZURE_OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
54
- "agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
53
+ "command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
55
54
  ),
56
55
  f"{AWS_BEDROCK_PROVIDER}/anthropic.{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}-v1:0": (
57
- "agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2"
56
+ "command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2"
58
57
  ),
59
58
  f"{ANTHROPIC_PROVIDER}/{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}": (
60
- "agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2"
59
+ "command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2"
61
60
  ),
62
61
  }
63
62
 
64
63
  # When model is not configured, then we use the default prompt template
65
64
  DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
66
- "agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
65
+ "command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
67
66
  )
68
67
  # When the configured model is not found in the model prompt mapper, then we use the
69
68
  # fallback prompt template
70
69
  FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
71
- "agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
70
+ "command_prompt_v2_gpt_4o_2024_11_20_template.jinja2"
72
71
  )
73
72
 
74
73
 
@@ -44,26 +44,25 @@ DEFAULT_LLM_CONFIG = {
44
44
  TIMEOUT_CONFIG_KEY: 7,
45
45
  }
46
46
 
47
- # TODO: only load the agent prompt template in cases where agents are actually used
48
47
  DEFAULT_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
49
- "agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
48
+ "command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
50
49
  )
51
50
  FALLBACK_COMMAND_PROMPT_TEMPLATE_FILE_NAME = (
52
- "agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
51
+ "command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
53
52
  )
54
53
  MODEL_PROMPT_MAPPER = {
55
54
  f"{OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
56
- "agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
55
+ "command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
57
56
  ),
58
57
  f"{AZURE_OPENAI_PROVIDER}/{MODEL_NAME_GPT_4O_2024_11_20}": (
59
- "agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
58
+ "command_prompt_v3_gpt_4o_2024_11_20_template.jinja2"
60
59
  ),
61
60
  f"{AWS_BEDROCK_PROVIDER}/anthropic."
62
61
  f"{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}-v1:0": (
63
- "agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2"
62
+ "command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2"
64
63
  ),
65
64
  f"{ANTHROPIC_PROVIDER}/{MODEL_NAME_CLAUDE_3_5_SONNET_20240620}": (
66
- "agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2"
65
+ "command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2"
67
66
  ),
68
67
  }
69
68
 
@@ -5,7 +5,6 @@ from typing import Any, Dict, List, Literal, Optional, Text
5
5
  import structlog
6
6
 
7
7
  import rasa.shared.utils.io
8
- from rasa.core.available_agents import AvailableAgents
9
8
  from rasa.dialogue_understanding.commands import (
10
9
  CannotHandleCommand,
11
10
  Command,
@@ -45,7 +44,6 @@ from rasa.shared.constants import (
45
44
  PROMPT_TEMPLATE_CONFIG_KEY,
46
45
  ROUTE_TO_CALM_SLOT,
47
46
  )
48
- from rasa.shared.core.events import AgentCompleted
49
47
  from rasa.shared.core.flows import FlowsList
50
48
  from rasa.shared.core.trackers import DialogueStateTracker
51
49
  from rasa.shared.exceptions import ProviderClientAPIException
@@ -398,15 +396,13 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
398
396
  current_slot_allowed_values = allowed_values_for_slot(
399
397
  tracker.slots.get(current_slot)
400
398
  )
401
- current_conversation = tracker_as_readable_transcript(
402
- tracker, highlight_agent_turns=True
403
- )
399
+ current_conversation = tracker_as_readable_transcript(tracker)
404
400
  latest_user_message = sanitize_message_for_prompt(message.get(TEXT))
405
401
  current_conversation += f"\nUSER: {latest_user_message}"
406
402
 
407
403
  inputs = {
408
404
  "available_flows": self.prepare_flows_for_template(
409
- startable_flows, tracker, add_agent_info=True
405
+ startable_flows, tracker
410
406
  ),
411
407
  "current_conversation": current_conversation,
412
408
  "flow_slots": flow_slots,
@@ -416,10 +412,6 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
416
412
  "current_slot_type": current_slot_type,
417
413
  "current_slot_allowed_values": current_slot_allowed_values,
418
414
  "user_message": latest_user_message,
419
- "active_agent": self._get_active_agent(tracker, top_flow.id)
420
- if top_flow
421
- else None,
422
- "completed_agents": self._get_completed_agents(tracker),
423
415
  }
424
416
 
425
417
  return self.compile_template(self.prompt_template).render(**inputs)
@@ -467,34 +459,3 @@ class SingleStepBasedLLMCommandGenerator(LLMBasedCommandGenerator, ABC):
467
459
  ) -> Optional[str]:
468
460
  """Get the prompt template from the config or the default prompt template."""
469
461
  pass
470
-
471
- def _get_active_agent(
472
- self, tracker: DialogueStateTracker, active_flow_id: str
473
- ) -> Optional[Dict[str, Any]]:
474
- agent_frame = tracker.stack.find_active_agent_stack_frame_for_flow(
475
- active_flow_id
476
- )
477
- if agent_frame:
478
- return self._get_agent_info(agent_frame.agent_id)
479
- return None
480
-
481
- def _get_completed_agents(
482
- self, tracker: DialogueStateTracker
483
- ) -> List[Dict[str, Any]]:
484
- completed_agents: List[Dict[str, Any]] = []
485
- for event in reversed(tracker.events):
486
- if isinstance(event, AgentCompleted):
487
- agent_info = self._get_agent_info(event.agent_id)
488
- if agent_info:
489
- completed_agents.append(agent_info)
490
- return completed_agents
491
-
492
- def _get_agent_info(self, agent_id: str) -> Optional[Dict[str, Any]]:
493
- agent_config = AvailableAgents.get_agent_config(agent_id)
494
- if agent_config is None:
495
- return None
496
-
497
- return {
498
- "name": agent_config.agent.name,
499
- "description": agent_config.agent.description,
500
- }