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
@@ -237,7 +237,7 @@ class SelfHostedLLMClient(_BaseLiteLLMClient):
237
237
  raise ProviderClientAPIException(e)
238
238
 
239
239
  async def acompletion(
240
- self, messages: Union[List[dict], List[str], str], **kwargs: Any
240
+ self, messages: Union[List[dict], List[str], str]
241
241
  ) -> LLMResponse:
242
242
  """Asynchronous completion of the model with the given messages.
243
243
 
@@ -255,18 +255,15 @@ class SelfHostedLLMClient(_BaseLiteLLMClient):
255
255
  - a list of messages. Each message is a string and will be formatted
256
256
  as a user message.
257
257
  - a single message as a string which will be formatted as user message.
258
- **kwargs: Additional parameters to pass to the completion call.
259
258
 
260
259
  Returns:
261
260
  The completion response.
262
261
  """
263
262
  if self._use_chat_completions_endpoint:
264
- return await super().acompletion(messages, **kwargs)
263
+ return await super().acompletion(messages)
265
264
  return await self._atext_completion(messages)
266
265
 
267
- def completion(
268
- self, messages: Union[List[dict], List[str], str], **kwargs: Any
269
- ) -> LLMResponse:
266
+ def completion(self, messages: Union[List[dict], List[str], str]) -> LLMResponse:
270
267
  """Completion of the model with the given messages.
271
268
 
272
269
  Method overrides the base class method to call the appropriate
@@ -276,13 +273,12 @@ class SelfHostedLLMClient(_BaseLiteLLMClient):
276
273
 
277
274
  Args:
278
275
  messages: The messages to be used for completion.
279
- **kwargs: Additional parameters to pass to the completion call.
280
276
 
281
277
  Returns:
282
278
  The completion response.
283
279
  """
284
280
  if self._use_chat_completions_endpoint:
285
- return super().completion(messages, **kwargs)
281
+ return super().completion(messages)
286
282
  return self._text_completion(messages)
287
283
 
288
284
  @staticmethod
rasa/shared/utils/llm.py CHANGED
@@ -49,15 +49,7 @@ from rasa.shared.constants import (
49
49
  RASA_PATTERN_INTERNAL_ERROR_USER_INPUT_TOO_LONG,
50
50
  ROUTER_CONFIG_KEY,
51
51
  )
52
- from rasa.shared.core.events import (
53
- AgentCancelled,
54
- AgentCompleted,
55
- AgentInterrupted,
56
- AgentResumed,
57
- AgentStarted,
58
- BotUttered,
59
- UserUttered,
60
- )
52
+ from rasa.shared.core.events import BotUttered, UserUttered
61
53
  from rasa.shared.core.slots import BooleanSlot, CategoricalSlot, Slot
62
54
  from rasa.shared.engine.caching import get_local_cache_location
63
55
  from rasa.shared.exceptions import (
@@ -120,7 +112,7 @@ DEPLOYMENT_CENTRIC_PROVIDERS = [AZURE_OPENAI_PROVIDER]
120
112
 
121
113
  # Placeholder messages used in the transcript for
122
114
  # instances where user input results in an error
123
- ERROR_PLACEHOLDER: Dict[str, str] = {
115
+ ERROR_PLACEHOLDER = {
124
116
  RASA_PATTERN_INTERNAL_ERROR_USER_INPUT_TOO_LONG: "[User sent really long message]",
125
117
  RASA_PATTERN_INTERNAL_ERROR_USER_INPUT_EMPTY: "",
126
118
  "default": "[User input triggered an error]",
@@ -233,7 +225,6 @@ def tracker_as_readable_transcript(
233
225
  ai_prefix: str = AI,
234
226
  max_turns: Optional[int] = 20,
235
227
  turns_wrapper: Optional[Callable[[List[str]], List[str]]] = None,
236
- highlight_agent_turns: bool = False,
237
228
  ) -> str:
238
229
  """Creates a readable dialogue from a tracker.
239
230
 
@@ -243,7 +234,6 @@ def tracker_as_readable_transcript(
243
234
  ai_prefix: the prefix to use for ai utterances
244
235
  max_turns: the maximum number of turns to include in the transcript
245
236
  turns_wrapper: optional function to wrap the turns in a custom way
246
- highlight_agent_turns: whether to highlight agent turns in the transcript
247
237
 
248
238
  Example:
249
239
  >>> tracker = Tracker(
@@ -261,9 +251,7 @@ def tracker_as_readable_transcript(
261
251
  Returns:
262
252
  A string representing the transcript of the tracker
263
253
  """
264
- transcript: List[str] = []
265
-
266
- current_ai_prefix = ai_prefix
254
+ transcript = []
267
255
 
268
256
  # using `applied_events` rather than `events` means that only events after the
269
257
  # most recent `Restart` or `SessionStarted` are included in the transcript
@@ -278,20 +266,9 @@ def tracker_as_readable_transcript(
278
266
  else:
279
267
  message = sanitize_message_for_prompt(event.text)
280
268
  transcript.append(f"{human_prefix}: {message}")
281
- elif isinstance(event, BotUttered):
282
- transcript.append(
283
- f"{current_ai_prefix}: {sanitize_message_for_prompt(event.text)}"
284
- )
285
269
 
286
- if highlight_agent_turns:
287
- if isinstance(event, AgentStarted) or isinstance(event, AgentResumed):
288
- current_ai_prefix = event.agent_id
289
- elif (
290
- isinstance(event, AgentCompleted)
291
- or isinstance(event, AgentCancelled)
292
- or isinstance(event, AgentInterrupted)
293
- ):
294
- current_ai_prefix = ai_prefix
270
+ elif isinstance(event, BotUttered):
271
+ transcript.append(f"{ai_prefix}: {sanitize_message_for_prompt(event.text)}")
295
272
 
296
273
  # turns_wrapper to count multiple utterances by bot/user as single turn
297
274
  if turns_wrapper:
@@ -160,43 +160,6 @@ FLOW_CANCELLED = {
160
160
  "step_id": {"type": "string"},
161
161
  }
162
162
  }
163
- AGENT_STARTED = {
164
- "properties": {
165
- "event": {"const": "agent_started"},
166
- "agent_id": {"type": "string"},
167
- "flow_id": {"type": "string"},
168
- }
169
- }
170
- AGENT_COMPLETED = {
171
- "properties": {
172
- "event": {"const": "agent_completed"},
173
- "agent_id": {"type": "string"},
174
- "flow_id": {"type": "string"},
175
- "status": {"type": "string"},
176
- }
177
- }
178
- AGENT_INTERRUPTED = {
179
- "properties": {
180
- "event": {"const": "agent_interrupted"},
181
- "agent_id": {"type": "string"},
182
- "flow_id": {"type": "string"},
183
- }
184
- }
185
- AGENT_RESUMED = {
186
- "properties": {
187
- "event": {"const": "agent_resumed"},
188
- "agent_id": {"type": "string"},
189
- "flow_id": {"type": "string"},
190
- }
191
- }
192
- AGENT_CANCELLED = {
193
- "properties": {
194
- "event": {"const": "agent_cancelled"},
195
- "agent_id": {"type": "string"},
196
- "flow_id": {"type": "string"},
197
- "reason": {"type": "string"},
198
- }
199
- }
200
163
  DIALOGUE_STACK_UPDATED = {
201
164
  "properties": {"event": {"const": "stack"}, "update": {"type": "string"}}
202
165
  }
@@ -241,11 +204,6 @@ EVENT_SCHEMA = {
241
204
  FLOW_RESUMED,
242
205
  FLOW_COMPLETED,
243
206
  FLOW_CANCELLED,
244
- AGENT_STARTED,
245
- AGENT_COMPLETED,
246
- AGENT_INTERRUPTED,
247
- AGENT_RESUMED,
248
- AGENT_CANCELLED,
249
207
  DIALOGUE_STACK_UPDATED,
250
208
  ROUTING_SESSION_ENDED,
251
209
  SESSION_ENDED,
rasa/shared/utils/yaml.py CHANGED
@@ -335,9 +335,7 @@ class YamlValidationException(YamlException, ValueError):
335
335
  )
336
336
  if found_lc:
337
337
  return line_offset
338
- if this_line is not None:
339
- return this_line + line_offset
340
- return line_offset
338
+ return this_line + line_offset
341
339
  return line
342
340
  elif isinstance(current, list) and head.isdigit():
343
341
  return (
rasa/studio/upload.py CHANGED
@@ -7,7 +7,6 @@ from typing import Any, Dict, Iterable, List, Optional, Set, Text, Tuple, Union
7
7
  import questionary
8
8
  import requests
9
9
  import structlog
10
- from pydantic import BaseModel, Field
11
10
 
12
11
  import rasa.cli.telemetry
13
12
  import rasa.cli.utils
@@ -24,9 +23,13 @@ from rasa.shared.constants import (
24
23
  DEFAULT_DOMAIN_PATHS,
25
24
  )
26
25
  from rasa.shared.core.domain import Domain
27
- from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader, YamlFlowsWriter
26
+ from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
28
27
  from rasa.shared.exceptions import RasaException
29
- from rasa.shared.importers.importer import FlowSyncImporter, TrainingDataImporter
28
+ from rasa.shared.importers.importer import TrainingDataImporter
29
+ from rasa.shared.importers.utils import (
30
+ CALMUserData,
31
+ extract_calm_import_parts_from_importer,
32
+ )
30
33
  from rasa.shared.nlu.training_data.formats.rasa_yaml import (
31
34
  RasaYAMLReader,
32
35
  RasaYAMLWriter,
@@ -34,7 +37,6 @@ from rasa.shared.nlu.training_data.formats.rasa_yaml import (
34
37
  from rasa.shared.utils.llm import collect_custom_prompts
35
38
  from rasa.shared.utils.yaml import (
36
39
  dump_obj_as_yaml_to_string,
37
- read_yaml,
38
40
  read_yaml_file,
39
41
  )
40
42
  from rasa.studio import results_logger
@@ -43,6 +45,7 @@ from rasa.studio.config import StudioConfig
43
45
  from rasa.studio.results_logger import StudioResult, with_studio_error_handler
44
46
  from rasa.studio.utils import validate_argument_paths
45
47
  from rasa.telemetry import track_upload_to_studio_failed
48
+ from rasa.utils.json_utils import extract_values
46
49
 
47
50
  structlogger = structlog.get_logger()
48
51
 
@@ -68,16 +71,6 @@ DOMAIN_KEYS = [
68
71
  ]
69
72
 
70
73
 
71
- class CALMImportParts(BaseModel):
72
- """All pieces that will be uploaded to Rasa Studio."""
73
-
74
- flows: Dict[str, Any]
75
- domain: Dict[str, Any]
76
- config: Dict[str, Any]
77
- endpoints: Dict[str, Any]
78
- nlu: Dict[str, Any] = Field(default_factory=dict)
79
-
80
-
81
74
  def _get_selected_entities_and_intents(
82
75
  args: argparse.Namespace,
83
76
  intents_from_files: Set[Text],
@@ -115,9 +108,10 @@ def run_validation(args: argparse.Namespace) -> None:
115
108
  """
116
109
  from rasa.validator import Validator
117
110
 
111
+ training_data_paths = args.data if isinstance(args.data, list) else [args.data]
118
112
  training_data_importer = TrainingDataImporter.load_from_dict(
119
113
  domain_path=args.domain,
120
- training_data_paths=[args.data],
114
+ training_data_paths=training_data_paths,
121
115
  config_path=args.config,
122
116
  expand_env_vars=False,
123
117
  )
@@ -194,11 +188,6 @@ config_keys = [
194
188
  ]
195
189
 
196
190
 
197
- def extract_values(data: Dict, keys: List[Text]) -> Dict:
198
- """Extracts values for given keys from a dictionary."""
199
- return {key: data.get(key) for key in keys if data.get(key)}
200
-
201
-
202
191
  def _get_assistant_name(config: Dict[Text, Any]) -> str:
203
192
  config_assistant_id = config.get("assistant_id", "")
204
193
  assistant_name = questionary.text(
@@ -237,7 +226,7 @@ def build_calm_import_parts(
237
226
  config_path: Text,
238
227
  endpoints_path: Optional[Text] = None,
239
228
  assistant_name: Optional[Text] = None,
240
- ) -> Tuple[str, CALMImportParts]:
229
+ ) -> Tuple[str, CALMUserData]:
241
230
  """Builds the parts of the assistant to be uploaded to Studio.
242
231
 
243
232
  Args:
@@ -250,9 +239,11 @@ def build_calm_import_parts(
250
239
  Returns:
251
240
  The assistant name and the parts to be uploaded
252
241
  """
242
+ training_data_paths = data_path if isinstance(data_path, list) else [str(data_path)]
253
243
  importer = TrainingDataImporter.load_from_dict(
254
244
  domain_path=domain_path,
255
245
  config_path=config_path,
246
+ training_data_paths=training_data_paths,
256
247
  expand_env_vars=False,
257
248
  )
258
249
 
@@ -260,33 +251,10 @@ def build_calm_import_parts(
260
251
  endpoints = read_yaml_file(endpoints_path, expand_env_vars=False)
261
252
  assistant_name = assistant_name or _get_assistant_name(config)
262
253
 
263
- domain_from_files = importer.get_user_domain().as_dict()
264
- domain = extract_values(domain_from_files, DOMAIN_KEYS)
265
-
266
- flow_importer = FlowSyncImporter.load_from_dict(
267
- training_data_paths=[str(data_path)], expand_env_vars=False
268
- )
269
-
270
- flows = list(flow_importer.get_user_flows())
271
- flows_yaml = YamlFlowsWriter().dumps(flows)
272
- flows = read_yaml(flows_yaml, expand_env_vars=False)
273
-
274
- nlu_importer = TrainingDataImporter.load_from_dict(
275
- training_data_paths=[str(data_path)], expand_env_vars=False
276
- )
277
- nlu_data = nlu_importer.get_nlu_data()
278
- nlu_examples = nlu_data.filter_training_examples(
279
- lambda ex: ex.get("intent") in nlu_data.intents
280
- )
281
- nlu_examples_yaml = RasaYAMLWriter().dumps(nlu_examples)
282
- nlu = read_yaml(nlu_examples_yaml, expand_env_vars=False)
283
-
284
- parts = CALMImportParts(
285
- flows=flows,
286
- domain=domain,
254
+ parts = extract_calm_import_parts_from_importer(
255
+ importer=importer,
287
256
  config=config,
288
257
  endpoints=endpoints,
289
- nlu=nlu,
290
258
  )
291
259
 
292
260
  return assistant_name, parts
@@ -349,9 +317,10 @@ def upload_nlu_assistant(
349
317
  "rasa.studio.upload.nlu_data_read",
350
318
  event_info="Found DM1 assistant data, parsing...",
351
319
  )
320
+ training_data_paths = args.data if isinstance(args.data, list) else [args.data]
352
321
  importer = TrainingDataImporter.load_from_dict(
353
322
  domain_path=args.domain,
354
- training_data_paths=[args.data],
323
+ training_data_paths=training_data_paths,
355
324
  config_path=args.config,
356
325
  expand_env_vars=False,
357
326
  )
rasa/telemetry.py CHANGED
@@ -3,7 +3,6 @@ import contextlib
3
3
  import hashlib
4
4
  import inspect
5
5
  import json
6
- import logging
7
6
  import multiprocessing
8
7
  import os
9
8
  import platform
@@ -70,7 +69,7 @@ if typing.TYPE_CHECKING:
70
69
  from rasa.shared.importers.importer import TrainingDataImporter
71
70
  from rasa.shared.nlu.training_data.training_data import TrainingData
72
71
 
73
- logger = logging.getLogger(__name__)
72
+ structlogger = structlog.get_logger()
74
73
 
75
74
  SEGMENT_TRACK_ENDPOINT = "https://api.segment.io/v1/track"
76
75
  SEGMENT_IDENTIFY_ENDPOINT = "https://api.segment.io/v1/identify"
@@ -197,6 +196,10 @@ TELEMETRY_E2E_TEST_CONVERSION_EVENT = "E2E Test Conversion Completed"
197
196
  E2E_TEST_CONVERSION_FILE_TYPE = "file_type"
198
197
  E2E_TEST_CONVERSION_TEST_CASE_COUNT = "test_case_count"
199
198
 
199
+ # Copilot telemetry
200
+ TELEMETRY_COPILOT_USER_MESSAGE_EVENT = "copilot_user_message"
201
+ TELEMETRY_COPILOT_BOT_MESSAGE_EVENT = "copilot_bot_message"
202
+
200
203
 
201
204
  def print_telemetry_reporting_info() -> None:
202
205
  """Print telemetry information to std out."""
@@ -255,7 +258,11 @@ def _is_telemetry_enabled_in_configuration() -> bool:
255
258
 
256
259
  return stored_config[CONFIG_TELEMETRY_ENABLED]
257
260
  except ValueError as e:
258
- logger.debug(f"Could not read telemetry settings from configuration file: {e}")
261
+ structlogger.debug(
262
+ "telemetry.is_telemetry_enabled_in_configuration.error",
263
+ error=str(e),
264
+ event_info="Could not read telemetry settings from configuration file",
265
+ )
259
266
 
260
267
  # seems like there is no config, we'll create one and enable telemetry
261
268
  success = _write_default_telemetry_configuration()
@@ -272,7 +279,10 @@ def is_telemetry_enabled() -> bool:
272
279
  from rasa.utils import licensing
273
280
 
274
281
  if licensing.is_champion_server_license():
275
- logger.debug("Telemetry is enabled for developer licenses.")
282
+ structlogger.debug(
283
+ "telemetry.enabled.developer_license",
284
+ event_info="Telemetry is enabled for developer licenses.",
285
+ )
276
286
  return True
277
287
 
278
288
  telemetry_environ = os.environ.get(TELEMETRY_ENABLED_ENVIRONMENT_VARIABLE)
@@ -308,9 +318,13 @@ def initialize_telemetry() -> bool:
308
318
 
309
319
  return telemetry_environ.lower() == "true"
310
320
  except Exception as e: # skipcq:PYL-W0703
311
- logger.exception(
312
- f"Failed to initialize telemetry reporting: {e}."
313
- f"Telemetry reporting will be disabled."
321
+ structlogger.exception(
322
+ "telemetry.initialize_telemetry.error",
323
+ error=str(e),
324
+ event_info=(
325
+ "Failed to initialize telemetry reporting. "
326
+ "Telemetry reporting will be disabled."
327
+ ),
314
328
  )
315
329
  return False
316
330
 
@@ -481,7 +495,10 @@ def print_telemetry_payload(payload: Dict[Text, Any]) -> None:
481
495
  payload: payload to be delivered to segment.
482
496
  """
483
497
  payload_json = json.dumps(payload, indent=2)
484
- logger.debug(f"Telemetry payload: {payload_json}")
498
+ structlogger.debug(
499
+ "telemetry.print_telemetry_payload.debug",
500
+ event_info=f"Telemetry payload: {payload_json}",
501
+ )
485
502
 
486
503
 
487
504
  def _get_telemetry_write_key() -> Optional[Text]:
@@ -535,10 +552,24 @@ def _send_request(url: Text, payload: Dict[Text, Any]) -> None:
535
552
  if not write_key:
536
553
  # If RASA_TELEMETRY_WRITE_KEY is empty or `None`, telemetry has not
537
554
  # been enabled for this build (e.g. because it is running from source)
538
- logger.debug("Skipping request to external service: telemetry key not set.")
555
+ structlogger.debug(
556
+ "telemetry.send_request.no_telemetry_key",
557
+ event_info="Skipping request to external service: telemetry key not set.",
558
+ )
539
559
  return
540
560
 
541
- headers = rasa.telemetry.segment_request_header(write_key)
561
+ send_segment_request(url, payload, write_key)
562
+
563
+
564
+ def send_segment_request(url: Text, payload: Dict[Text, Any], write_key: Text) -> None:
565
+ """Send a request to the Segment API.
566
+
567
+ Args:
568
+ url: URL of the Segment API endpoint
569
+ payload: payload to send to the Segment API
570
+ write_key: write key for the Segment API
571
+ """
572
+ headers = segment_request_header(write_key)
542
573
 
543
574
  resp = requests.post(
544
575
  url=url,
@@ -548,15 +579,22 @@ def _send_request(url: Text, payload: Dict[Text, Any]) -> None:
548
579
  )
549
580
  # handle different failure cases
550
581
  if resp.status_code != 200:
551
- logger.debug(
552
- f"Segment telemetry request returned a {resp.status_code} response. "
553
- f"Body: {resp.text}"
582
+ structlogger.debug(
583
+ "telemetry.send_segment_request.error_response",
584
+ event_info=(
585
+ f"Segment telemetry request returned a {resp.status_code} "
586
+ f"response. Body: {resp.text}"
587
+ ),
554
588
  )
555
589
  else:
556
590
  data = resp.json()
557
591
  if not data.get("success"):
558
- logger.debug(
559
- f"Segment telemetry request returned a failure. Response: {data}"
592
+ structlogger.debug(
593
+ "telemetry.send_segment_request.failure",
594
+ event_info=(
595
+ f"Segment telemetry request returned a failure. "
596
+ f"Response: {data}"
597
+ ),
560
598
  )
561
599
 
562
600
 
@@ -609,6 +647,15 @@ def with_default_context_fields(
609
647
  return {**_default_context_fields(), **context}
610
648
 
611
649
 
650
+ def get_deployment_stack() -> Text:
651
+ """Return the deployment stack.
652
+
653
+ Returns:
654
+ The deployment stack.
655
+ """
656
+ return os.environ.get("DEPLOYMENT_STACK", "")
657
+
658
+
612
659
  def _default_context_fields() -> Dict[Text, Any]:
613
660
  """Return a dictionary that contains the default context values.
614
661
 
@@ -632,6 +679,7 @@ def _default_context_fields() -> Dict[Text, Any]:
632
679
  "cpu": multiprocessing.cpu_count(),
633
680
  "docker": _is_docker(),
634
681
  "license_hash": get_license_hash(),
682
+ "deployment_stack": get_deployment_stack(),
635
683
  "company": property_of_active_license(
636
684
  lambda active_license: active_license.company
637
685
  ),
@@ -663,7 +711,10 @@ def _track(
663
711
  telemetry_id = get_telemetry_id()
664
712
 
665
713
  if not telemetry_id:
666
- logger.debug("Will not report telemetry events as no ID was found.")
714
+ structlogger.debug(
715
+ "telemetry.track.no_id_found",
716
+ event_info="Will not report telemetry events as no ID was found.",
717
+ )
667
718
  return
668
719
 
669
720
  if not properties:
@@ -681,7 +732,11 @@ def _track(
681
732
  with_default_context_fields(context),
682
733
  )
683
734
  except Exception as e: # skipcq:PYL-W0703
684
- logger.debug(f"Skipping telemetry reporting: {e}")
735
+ structlogger.debug(
736
+ "telemetry.track.error",
737
+ error=str(e),
738
+ event_info="Skipping telemetry reporting",
739
+ )
685
740
 
686
741
 
687
742
  def _identify(
@@ -702,7 +757,10 @@ def _identify(
702
757
  telemetry_id = get_telemetry_id()
703
758
 
704
759
  if not telemetry_id:
705
- logger.debug("Will not report telemetry events as no ID was found.")
760
+ structlogger.debug(
761
+ "telemetry.identify.no_id_found",
762
+ event_info="Will not report telemetry events as no ID was found.",
763
+ )
706
764
  return
707
765
 
708
766
  if not traits:
@@ -710,7 +768,11 @@ def _identify(
710
768
 
711
769
  _send_traits(telemetry_id, traits, with_default_context_fields(context))
712
770
  except Exception as e:
713
- logger.debug(f"Skipping telemetry reporting: {e}")
771
+ structlogger.debug(
772
+ "telemetry.identify.error",
773
+ error=str(e),
774
+ event_info="Skipping telemetry reporting",
775
+ )
714
776
 
715
777
 
716
778
  def _send_traits(
@@ -868,13 +930,16 @@ def strip_sensitive_data_from_sentry_event(
868
930
 
869
931
 
870
932
  @ensure_telemetry_enabled
871
- def initialize_error_reporting() -> None:
933
+ def initialize_error_reporting(private_mode: bool = True) -> None:
872
934
  """Sets up automated error reporting.
873
935
 
874
936
  Exceptions are reported to sentry. We avoid sending any metadata (local
875
937
  variables, paths, ...) to make sure we don't compromise any data. Only the
876
938
  exception and its stacktrace is logged and only if the exception origins
877
939
  from the `rasa` package.
940
+
941
+ Args:
942
+ private_mode: If True, try to send as little data as possible.
878
943
  """
879
944
  import sentry_sdk
880
945
  from sentry_sdk import configure_scope
@@ -892,11 +957,18 @@ def initialize_error_reporting() -> None:
892
957
 
893
958
  telemetry_id = get_telemetry_id()
894
959
 
960
+ # in hello rasa we use a different project, so we need to be able
961
+ # to set the whole url. since we can't change the behavior of sentry in pro
962
+ # we have two kinds of keys, full urls and jsut the key within the fixed rasa
963
+ # pro project.
964
+ if not key.startswith("https://"):
965
+ key = f"https://{key}.ingest.sentry.io/2801673"
966
+
895
967
  # this is a very defensive configuration, avoiding as many integrations as
896
968
  # possible. it also submits very little data (exception with error message
897
969
  # and line numbers).
898
970
  sentry_sdk.init(
899
- f"https://{key}.ingest.sentry.io/2801673",
971
+ key,
900
972
  before_send=before_send,
901
973
  integrations=[
902
974
  ExcepthookIntegration(),
@@ -916,7 +988,7 @@ def initialize_error_reporting() -> None:
916
988
  OSError,
917
989
  ],
918
990
  in_app_include=["rasa"], # only submit errors in this package
919
- include_local_variables=False, # don't submit local variables
991
+ include_local_variables=not private_mode,
920
992
  release=f"rasa-{rasa.__version__}",
921
993
  default_integrations=False,
922
994
  environment="development" if in_continuous_integration() else "production",
@@ -937,6 +1009,7 @@ def initialize_error_reporting() -> None:
937
1009
  # os is a nested dict, hence we report it separately
938
1010
  scope.set_context("Operating System", default_context.pop("os"))
939
1011
  scope.set_context("Environment", default_context)
1012
+ structlogger.debug("telemetry.sentry.initialized")
940
1013
 
941
1014
 
942
1015
  @contextlib.contextmanager
@@ -1426,6 +1499,7 @@ def track_shell_started(model_type: Text, assistant_id: Text) -> None:
1426
1499
 
1427
1500
  Args:
1428
1501
  model_type: Type of the model, core / nlu or rasa.
1502
+ assistant_id: ID of the assistant being inspected.
1429
1503
  """
1430
1504
  _track(
1431
1505
  TELEMETRY_SHELL_STARTED_EVENT,
@@ -1997,7 +2071,7 @@ def _extract_stream_pii(event_broker: Optional["EventBroker"]) -> bool:
1997
2071
  def track_privacy_enabled(
1998
2072
  privacy_config: "PrivacyConfig", event_broker: Optional["EventBroker"]
1999
2073
  ) -> None:
2000
- """Track when PII management capability is enabled"""
2074
+ """Track when PII management capability is enabled."""
2001
2075
  stream_pii = _extract_stream_pii(event_broker)
2002
2076
  privacy_properties = _extract_privacy_enabled_event_properties(
2003
2077
  privacy_config, stream_pii