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
@@ -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
@@ -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
- }
@@ -1,31 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import Any, Dict, List, Optional, Text
4
+ from typing import Any, Dict
5
5
 
6
- from rasa.core.actions.action import Action
7
- from rasa.core.channels import OutputChannel
8
- from rasa.core.nlg import NaturalLanguageGenerator
9
6
  from rasa.dialogue_understanding.stack.frames import PatternFlowStackFrame
10
- from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
11
7
  from rasa.shared.constants import RASA_DEFAULT_FLOW_PATTERN_PREFIX
12
- from rasa.shared.core.constants import (
13
- ACTION_ASK_INTERRUPTED_FLOW_TO_CONTINUE,
14
- ACTION_CANCEL_INTERRUPTED_FLOW,
15
- ACTION_CONTINUE_INTERRUPTED_FLOW,
16
- ACTION_SET_INTERRUPTED_FLOWS,
17
- )
18
- from rasa.shared.core.domain import Domain
19
- from rasa.shared.core.events import Event, SlotSet
20
- from rasa.shared.core.trackers import DialogueStateTracker
21
8
 
22
9
  FLOW_PATTERN_CONTINUE_INTERRUPTED = (
23
10
  RASA_DEFAULT_FLOW_PATTERN_PREFIX + "continue_interrupted"
24
11
  )
25
- INTERRUPTED_FLOWS_SLOT = "interrupted_flows"
26
- INTERRUPTED_FLOW_TO_CONTINUE_SLOT = "interrupted_flow_to_continue"
27
- MULTIPLE_FLOWS_INTERRUPTED_SLOT = "multiple_flows_interrupted"
28
- CONFIRMATION_CONTINUE_INTERRUPTED_FLOW_SLOT = "confirmation_continue_interrupted_flow"
29
12
 
30
13
 
31
14
  @dataclass
@@ -66,148 +49,3 @@ class ContinueInterruptedPatternFlowStackFrame(PatternFlowStackFrame):
66
49
  and self.step_id == other.step_id
67
50
  and self.previous_flow_name == other.previous_flow_name
68
51
  )
69
-
70
-
71
- class ActionSetInterruptedFlows(Action):
72
- def name(self) -> str:
73
- return ACTION_SET_INTERRUPTED_FLOWS
74
-
75
- async def run(
76
- self,
77
- output_channel: OutputChannel,
78
- nlg: NaturalLanguageGenerator,
79
- tracker: DialogueStateTracker,
80
- domain: Domain,
81
- metadata: Optional[Dict[Text, Any]] = None,
82
- ) -> list[Event]:
83
- interrupted_flows_set = set()
84
- interrupted_user_flow_stack_frames = tracker.stack.get_all_user_flow_frames()
85
-
86
- for frame in interrupted_user_flow_stack_frames:
87
- interrupted_flows_set.add(frame.flow_id)
88
-
89
- interrupted_flows = list(interrupted_flows_set)
90
- multiple_flows_interrupted = len(interrupted_flows) > 1
91
-
92
- return [
93
- SlotSet(INTERRUPTED_FLOWS_SLOT, interrupted_flows),
94
- SlotSet(MULTIPLE_FLOWS_INTERRUPTED_SLOT, multiple_flows_interrupted),
95
- ]
96
-
97
-
98
- class ActionAskInterruptedFlowToContinue(Action):
99
- def name(self) -> str:
100
- return ACTION_ASK_INTERRUPTED_FLOW_TO_CONTINUE
101
-
102
- async def run(
103
- self,
104
- output_channel: OutputChannel,
105
- nlg: NaturalLanguageGenerator,
106
- tracker: DialogueStateTracker,
107
- domain: Domain,
108
- metadata: Optional[Dict[Text, Any]] = None,
109
- ) -> List[Event]:
110
- interrupted_flows = tracker.get_slot(INTERRUPTED_FLOWS_SLOT) or []
111
-
112
- buttons = [
113
- {
114
- "title": flow_id,
115
- "payload": f'/SetSlots{{"{INTERRUPTED_FLOW_TO_CONTINUE_SLOT}": '
116
- f'"{flow_id}"}}',
117
- }
118
- for flow_id in interrupted_flows or []
119
- ]
120
- buttons.append(
121
- {
122
- "title": "None of them",
123
- "payload": f'/SetSlots{{"{INTERRUPTED_FLOW_TO_CONTINUE_SLOT}": '
124
- f'"none"}}',
125
- }
126
- )
127
-
128
- await output_channel.send_text_with_buttons(
129
- tracker.sender_id,
130
- "You previously started several other tasks. "
131
- "Would you like to resume any of them?",
132
- buttons=buttons,
133
- )
134
-
135
- return []
136
-
137
-
138
- class ActionContinueInterruptedFlow(Action):
139
- def name(self) -> str:
140
- return ACTION_CONTINUE_INTERRUPTED_FLOW
141
-
142
- async def run(
143
- self,
144
- output_channel: OutputChannel,
145
- nlg: NaturalLanguageGenerator,
146
- tracker: DialogueStateTracker,
147
- domain: Domain,
148
- metadata: Optional[Dict[Text, Any]] = None,
149
- ) -> List[Event]:
150
- from rasa.dialogue_understanding.commands import StartFlowCommand
151
-
152
- # get all necessary slot values
153
- multiple = tracker.get_slot(MULTIPLE_FLOWS_INTERRUPTED_SLOT)
154
- selected_flow = tracker.get_slot(INTERRUPTED_FLOW_TO_CONTINUE_SLOT)
155
- interrupted_flows = tracker.get_slot(INTERRUPTED_FLOWS_SLOT) or []
156
-
157
- original_user_frame = top_user_flow_frame(tracker.stack)
158
-
159
- # case of multiple interrupted flows, where the user selected a flow to continue
160
- if multiple:
161
- flow_id = selected_flow if selected_flow else None
162
- # case of single interrupted flow, so there is only one flow to continue
163
- else:
164
- flow_id = interrupted_flows[0] if interrupted_flows else None
165
-
166
- event_list = []
167
- if flow_id:
168
- # TODO: refactor to avoid creating a StartFlowCommand first
169
- # resume the flow with the provided flow id
170
- start_flow_command = StartFlowCommand(flow_id)
171
- event_list = start_flow_command.resume_flow(
172
- tracker, tracker.stack, original_user_frame
173
- )
174
- else:
175
- await output_channel.send_text_message(
176
- tracker.sender_id,
177
- "You haven't selected a valid task to resume. "
178
- "Please specify the task you would like to continue.",
179
- )
180
-
181
- return event_list
182
-
183
-
184
- class ActionCancelInterruptedFlow(Action):
185
- def name(self) -> str:
186
- return ACTION_CANCEL_INTERRUPTED_FLOW
187
-
188
- async def run(
189
- self,
190
- output_channel: OutputChannel,
191
- nlg: NaturalLanguageGenerator,
192
- tracker: DialogueStateTracker,
193
- domain: Domain,
194
- metadata: Optional[Dict[Text, Any]] = None,
195
- ) -> List[Event]:
196
- from rasa.dialogue_understanding.commands import CancelFlowCommand
197
-
198
- interrupted_flows = tracker.get_slot(INTERRUPTED_FLOWS_SLOT) or []
199
-
200
- event_list = []
201
- for flow_id in interrupted_flows:
202
- # TODO: refactor to avoid creating a CancelFlowCommand first
203
- cancel_flow_command = CancelFlowCommand()
204
- event_list.extend(
205
- cancel_flow_command.cancel_flow(tracker, tracker.stack, flow_id)
206
- )
207
-
208
- return event_list + [
209
- SlotSet(INTERRUPTED_FLOWS_SLOT, None),
210
- SlotSet(INTERRUPTED_FLOW_TO_CONTINUE_SLOT, None),
211
- SlotSet(MULTIPLE_FLOWS_INTERRUPTED_SLOT, None),
212
- SlotSet(CONFIRMATION_CONTINUE_INTERRUPTED_FLOW_SLOT, None),
213
- ]
@@ -1,17 +1,6 @@
1
1
  version: "3.1"
2
2
  responses:
3
3
 
4
- utter_ask_continue_interrupted_flow:
5
- - text: "Would you like to continue with {{ context.previous_flow_name }}?"
6
- metadata:
7
- rephrase: True
8
- template: jinja
9
- buttons:
10
- - title: "Yes"
11
- payload: "/SetSlots(confirmation_continue_interrupted_flow=true)"
12
- - title: "No"
13
- payload: "/SetSlots(confirmation_continue_interrupted_flow=false)"
14
-
15
4
  utter_ask_rephrase:
16
5
  - text: I’m sorry I am unable to understand you, could you please rephrase?
17
6
 
@@ -64,6 +53,12 @@ responses:
64
53
  rephrase: True
65
54
  template: jinja
66
55
 
56
+ utter_flow_continue_interrupted:
57
+ - text: "Let's continue with {{ context.previous_flow_name }}."
58
+ metadata:
59
+ rephrase: True
60
+ template: jinja
61
+
67
62
  utter_free_chitchat_response:
68
63
  - text: "Sorry, I'm not able to answer that right now."
69
64
  metadata:
@@ -86,7 +81,7 @@ responses:
86
81
  rephrase: True
87
82
 
88
83
  utter_inform_hangup:
89
- - text: It seems you are not there anymore. I will hang up shortly.
84
+ - text: I haven’t heard from you, so I’ll end our conversation shortly.
90
85
  metadata:
91
86
  rephrase: True
92
87
 
@@ -129,19 +124,6 @@ slots:
129
124
  type: float
130
125
  initial_value: 0.0
131
126
  max_value: 1000000
132
- interrupted_flows:
133
- type: list
134
- multiple_flows_interrupted:
135
- type: bool
136
- initial_value: false
137
- confirmation_continue_interrupted_flow:
138
- type: bool
139
- mappings:
140
- - type: from_llm
141
- interrupted_flow_to_continue:
142
- type: text
143
- mappings:
144
- - type: from_llm
145
127
 
146
128
  flows:
147
129
  pattern_cancel_flow:
@@ -228,33 +210,7 @@ flows:
228
210
  description: Conversation repair flow for managing when users switch between different flows
229
211
  name: pattern continue interrupted
230
212
  steps:
231
- - action: action_set_interrupted_flows
232
- - noop: true
233
- next:
234
- - if: slots.multiple_flows_interrupted
235
- then:
236
- - collect: interrupted_flow_to_continue
237
- description: "Fill this slot with the name of the flow the user wants to continue. If the user does not want to continue any of the interrupted flows, fill this slot with 'none'."
238
- next:
239
- - if: slots.interrupted_flow_to_continue != "none"
240
- then:
241
- - action: action_continue_interrupted_flow
242
- next: END
243
- - else:
244
- - action: action_cancel_interrupted_flow
245
- next: END
246
- - else:
247
- - collect: confirmation_continue_interrupted_flow
248
- description: "If the user wants to continue the interrupted flow, fill this slot with true. If the user does not want to continue the interrupted flow, fill this slot with false."
249
- utter: utter_ask_continue_interrupted_flow
250
- next:
251
- - if: slots.confirmation_continue_interrupted_flow
252
- then:
253
- - action: action_continue_interrupted_flow
254
- next: END
255
- - else:
256
- - action: action_cancel_interrupted_flow
257
- next: END
213
+ - action: utter_flow_continue_interrupted
258
214
 
259
215
  pattern_correction:
260
216
  description: Conversation repair flow for managing user input changes or error corrections
@@ -37,7 +37,6 @@ from rasa.dialogue_understanding.stack.frames import (
37
37
  BaseFlowStackFrame,
38
38
  )
39
39
  from rasa.dialogue_understanding.stack.utils import (
40
- is_continue_interrupted_flow_active,
41
40
  top_flow_frame,
42
41
  top_user_flow_frame,
43
42
  )
@@ -429,9 +428,22 @@ def clean_up_commands(
429
428
  )
430
429
 
431
430
  elif isinstance(command, StartFlowCommand):
432
- clean_commands = clean_up_start_flow_command(
433
- clean_commands, tracker, command
431
+ top_user_frame = top_user_flow_frame(
432
+ tracker.stack, ignore_call_and_link_frames=False
434
433
  )
434
+ top_flow_id = top_user_frame.flow_id if top_user_frame else ""
435
+
436
+ if top_flow_id == command.flow:
437
+ # drop a start flow command if the starting flow is equal
438
+ # to the currently active flow
439
+ structlogger.debug(
440
+ "command_processor.clean_up_commands."
441
+ "skip_command_flow_already_active",
442
+ command=command,
443
+ )
444
+ continue
445
+
446
+ clean_commands.append(command)
435
447
 
436
448
  # handle chitchat command differently from other free-form answer commands
437
449
  elif isinstance(command, ChitChatAnswerCommand):
@@ -517,34 +529,6 @@ def ensure_max_number_of_command_type(
517
529
  return filtered
518
530
 
519
531
 
520
- def clean_up_start_flow_command(
521
- clean_commands: List[Command],
522
- tracker: DialogueStateTracker,
523
- command: StartFlowCommand,
524
- ) -> List[Command]:
525
- """Clean up a start flow command."""
526
- continue_interrupted_flow_active = is_continue_interrupted_flow_active(
527
- tracker.stack
528
- )
529
-
530
- top_user_frame = top_user_flow_frame(
531
- tracker.stack, ignore_call_and_link_frames=False
532
- )
533
- top_flow_id = top_user_frame.flow_id if top_user_frame else ""
534
-
535
- if top_flow_id == command.flow and not continue_interrupted_flow_active:
536
- # drop a start flow command if the starting flow is equal
537
- # to the currently active flow
538
- structlogger.debug(
539
- "command_processor.clean_up_commands." "skip_command_flow_already_active",
540
- command=command,
541
- )
542
- return clean_commands
543
-
544
- clean_commands.append(command)
545
- return clean_commands
546
-
547
-
548
532
  def clean_up_clarify_command(
549
533
  commands_so_far: List[Command],
550
534
  all_commands: List[Command],