rasa-pro 3.12.0.dev2__py3-none-any.whl → 3.12.0.dev4__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 (502) hide show
  1. rasa/__main__.py +7 -7
  2. rasa/anonymization/anonymisation_rule_yaml_reader.py +1 -1
  3. rasa/anonymization/anonymization_pipeline.py +3 -3
  4. rasa/anonymization/anonymization_rule_executor.py +1 -1
  5. rasa/anonymization/anonymization_rule_orchestrator.py +2 -3
  6. rasa/cli/arguments/data.py +2 -2
  7. rasa/cli/arguments/evaluate.py +2 -1
  8. rasa/cli/arguments/interactive.py +1 -1
  9. rasa/cli/arguments/run.py +1 -1
  10. rasa/cli/arguments/test.py +7 -5
  11. rasa/cli/arguments/train.py +3 -3
  12. rasa/cli/arguments/visualize.py +2 -2
  13. rasa/cli/arguments/x.py +1 -0
  14. rasa/cli/data.py +4 -3
  15. rasa/cli/dialogue_understanding_test.py +121 -18
  16. rasa/cli/evaluate.py +1 -1
  17. rasa/cli/export.py +6 -6
  18. rasa/cli/interactive.py +4 -5
  19. rasa/cli/llm_fine_tuning.py +5 -5
  20. rasa/cli/markers.py +1 -2
  21. rasa/cli/project_templates/calm/actions/add_contact.py +1 -1
  22. rasa/cli/project_templates/tutorial/actions/actions.py +3 -2
  23. rasa/cli/shell.py +2 -3
  24. rasa/cli/studio/download.py +1 -2
  25. rasa/cli/studio/studio.py +2 -3
  26. rasa/cli/studio/train.py +0 -1
  27. rasa/cli/telemetry.py +2 -2
  28. rasa/cli/test.py +11 -11
  29. rasa/cli/utils.py +7 -5
  30. rasa/core/__init__.py +0 -1
  31. rasa/core/actions/action.py +42 -21
  32. rasa/core/actions/action_hangup.py +1 -1
  33. rasa/core/actions/action_repeat_bot_messages.py +2 -2
  34. rasa/core/actions/action_run_slot_rejections.py +2 -2
  35. rasa/core/actions/action_trigger_chitchat.py +1 -1
  36. rasa/core/actions/action_trigger_flow.py +5 -5
  37. rasa/core/actions/action_trigger_search.py +1 -1
  38. rasa/core/actions/forms.py +14 -12
  39. rasa/core/actions/http_custom_action_executor.py +8 -1
  40. rasa/core/actions/loops.py +3 -3
  41. rasa/core/actions/two_stage_fallback.py +13 -13
  42. rasa/core/auth_retry_tracker_store.py +1 -2
  43. rasa/core/brokers/broker.py +2 -1
  44. rasa/core/brokers/file.py +1 -1
  45. rasa/core/brokers/kafka.py +8 -8
  46. rasa/core/brokers/pika.py +8 -9
  47. rasa/core/brokers/sql.py +4 -3
  48. rasa/core/channels/__init__.py +3 -0
  49. rasa/core/channels/botframework.py +2 -2
  50. rasa/core/channels/callback.py +4 -4
  51. rasa/core/channels/channel.py +11 -11
  52. rasa/core/channels/console.py +0 -1
  53. rasa/core/channels/development_inspector.py +6 -6
  54. rasa/core/channels/facebook.py +5 -5
  55. rasa/core/channels/hangouts.py +7 -8
  56. rasa/core/channels/inspector/dist/assets/{arc-861ddd57.js → arc-632a63ec.js} +1 -1
  57. rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-921f02db.js → c4Diagram-d0fbc5ce-081e0df4.js} +1 -1
  58. rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-b436c4f8.js → classDiagram-936ed81e-3df0afc2.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-511a23cb.js → classDiagram-v2-c3cb15f1-8c5ed31e.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/{createText-62fc7601-ef476ecd.js → createText-62fc7601-89c73b31.js} +1 -1
  61. rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-f1878e0a.js → edges-f2ad444c-4fc48c3e.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-fac75185.js → erDiagram-9d236eb7-907e0440.js} +1 -1
  63. rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-201c5bbc.js → flowDb-1972c806-9ec53a3c.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-f904ae41.js → flowDiagram-7ea5b25a-41da787a.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-8bea338b.js +1 -0
  66. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-1813da66.js → flowchart-elk-definition-abe16c3d-ce370633.js} +1 -1
  67. rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-872af172.js → ganttDiagram-9b5ea136-90a36523.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-34a0af5a.js → gitGraphDiagram-99d0ae7c-41e1aa3f.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-42ba3e3d.js → index-2c4b9a3b-e6f2af62.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{index-37817b51.js → index-e793d777.js} +3 -3
  71. rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-6b731386.js → infoDiagram-736b4530-8ceba4db.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-e8579ac6.js → journeyDiagram-df861f2b-960d3809.js} +1 -1
  73. rasa/core/channels/inspector/dist/assets/{layout-89e6403a.js → layout-498807d8.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{line-dc73d3fc.js → line-eeccc4e2.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{linear-f5b1d2bc.js → linear-8a078617.js} +1 -1
  76. rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-82cb74fa.js → mindmap-definition-beec6740-396d17dd.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-bdf5f29b.js → pieDiagram-dbbf0591-dc9b5e1b.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-c7a0cbe4.js → quadrantDiagram-4d7f4fd6-a08cba6d.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-7ec5410f.js → requirementDiagram-6fc4c22a-87242b9e.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-caee5554.js → sankeyDiagram-8f13d901-53f6f391.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-2935f8db.js → sequenceDiagram-b655622a-715c9c20.js} +1 -1
  82. rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-8f5d9693.js → stateDiagram-59f0c015-2e8fb31f.js} +1 -1
  83. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-d565d1de.js → stateDiagram-v2-2b26beab-7e2d2aa0.js} +1 -1
  84. rasa/core/channels/inspector/dist/assets/{styles-080da4f6-75ad421d.js → styles-080da4f6-4420cea6.js} +1 -1
  85. rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-7e764226.js → styles-3dcbcfbf-28676cf4.js} +1 -1
  86. rasa/core/channels/inspector/dist/assets/{styles-9c745c82-7a4e0e61.js → styles-9c745c82-cef936a6.js} +1 -1
  87. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-4019d1bf.js → svgDrawCommon-4835440b-151251e9.js} +1 -1
  88. rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-01ea12df.js → timeline-definition-5b62e21b-0d39bdb2.js} +1 -1
  89. rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-89407137.js → xychartDiagram-2b33534f-a03fa445.js} +1 -1
  90. rasa/core/channels/inspector/dist/index.html +3 -1
  91. rasa/core/channels/inspector/index.html +2 -0
  92. rasa/core/channels/inspector/src/App.tsx +1 -4
  93. rasa/core/channels/mattermost.py +4 -4
  94. rasa/core/channels/rasa_chat.py +4 -4
  95. rasa/core/channels/rest.py +11 -12
  96. rasa/core/channels/rocketchat.py +4 -3
  97. rasa/core/channels/slack.py +6 -5
  98. rasa/core/channels/socketio.py +7 -28
  99. rasa/core/channels/studio_chat.py +193 -0
  100. rasa/core/channels/telegram.py +73 -41
  101. rasa/core/channels/twilio.py +3 -3
  102. rasa/core/channels/vier_cvg.py +2 -2
  103. rasa/core/channels/voice_ready/audiocodes.py +8 -8
  104. rasa/core/channels/voice_ready/jambonz.py +5 -5
  105. rasa/core/channels/voice_ready/jambonz_protocol.py +3 -4
  106. rasa/core/channels/voice_ready/twilio_voice.py +9 -8
  107. rasa/core/channels/voice_ready/utils.py +1 -1
  108. rasa/core/channels/voice_stream/asr/asr_engine.py +2 -2
  109. rasa/core/channels/voice_stream/asr/azure.py +2 -2
  110. rasa/core/channels/voice_stream/asr/deepgram.py +57 -16
  111. rasa/core/channels/voice_stream/browser_audio.py +9 -6
  112. rasa/core/channels/voice_stream/call_state.py +2 -1
  113. rasa/core/channels/voice_stream/tts/azure.py +1 -2
  114. rasa/core/channels/voice_stream/tts/cartesia.py +5 -4
  115. rasa/core/channels/voice_stream/tts/tts_cache.py +3 -2
  116. rasa/core/channels/voice_stream/tts/tts_engine.py +1 -1
  117. rasa/core/channels/voice_stream/twilio_media_streams.py +10 -7
  118. rasa/core/channels/voice_stream/util.py +1 -1
  119. rasa/core/channels/voice_stream/voice_channel.py +15 -15
  120. rasa/core/channels/webexteams.py +3 -4
  121. rasa/core/evaluation/marker.py +7 -6
  122. rasa/core/evaluation/marker_base.py +15 -16
  123. rasa/core/evaluation/marker_stats.py +3 -4
  124. rasa/core/evaluation/marker_tracker_loader.py +5 -4
  125. rasa/core/exporter.py +4 -4
  126. rasa/core/featurizers/precomputation.py +8 -8
  127. rasa/core/featurizers/single_state_featurizer.py +7 -7
  128. rasa/core/featurizers/tracker_featurizers.py +13 -13
  129. rasa/core/http_interpreter.py +3 -4
  130. rasa/core/information_retrieval/__init__.py +1 -1
  131. rasa/core/information_retrieval/faiss.py +4 -4
  132. rasa/core/information_retrieval/information_retrieval.py +2 -2
  133. rasa/core/information_retrieval/milvus.py +3 -3
  134. rasa/core/information_retrieval/qdrant.py +3 -3
  135. rasa/core/jobs.py +1 -0
  136. rasa/core/lock.py +2 -3
  137. rasa/core/lock_store.py +3 -3
  138. rasa/core/migrate.py +11 -8
  139. rasa/core/nlg/__init__.py +1 -1
  140. rasa/core/nlg/callback.py +2 -3
  141. rasa/core/nlg/contextual_response_rephraser.py +63 -13
  142. rasa/core/nlg/generator.py +2 -2
  143. rasa/core/nlg/interpolator.py +4 -3
  144. rasa/core/nlg/response.py +3 -4
  145. rasa/core/nlg/summarize.py +1 -0
  146. rasa/core/persistor.py +3 -3
  147. rasa/core/policies/ensemble.py +10 -9
  148. rasa/core/policies/enterprise_search_policy.py +86 -21
  149. rasa/core/policies/flow_policy.py +13 -14
  150. rasa/core/policies/flows/flow_executor.py +35 -11
  151. rasa/core/policies/intentless_policy.py +6 -7
  152. rasa/core/policies/memoization.py +22 -20
  153. rasa/core/policies/policy.py +24 -22
  154. rasa/core/policies/rule_policy.py +37 -36
  155. rasa/core/policies/ted_policy.py +87 -85
  156. rasa/core/policies/unexpected_intent_policy.py +77 -75
  157. rasa/core/processor.py +96 -65
  158. rasa/core/run.py +1 -1
  159. rasa/core/secrets_manager/endpoints.py +2 -3
  160. rasa/core/secrets_manager/factory.py +2 -3
  161. rasa/core/secrets_manager/secret_manager.py +2 -3
  162. rasa/core/secrets_manager/vault.py +2 -2
  163. rasa/core/test.py +30 -30
  164. rasa/core/tracker_store.py +15 -15
  165. rasa/core/train.py +1 -1
  166. rasa/core/training/__init__.py +2 -2
  167. rasa/core/training/converters/responses_prefix_converter.py +1 -2
  168. rasa/core/training/interactive.py +13 -13
  169. rasa/core/training/story_conflict.py +4 -5
  170. rasa/core/training/training.py +3 -5
  171. rasa/core/utils.py +5 -5
  172. rasa/core/visualize.py +1 -1
  173. rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -2
  174. rasa/dialogue_understanding/coexistence/llm_based_router.py +5 -5
  175. rasa/dialogue_understanding/commands/__init__.py +22 -22
  176. rasa/dialogue_understanding/commands/can_not_handle_command.py +20 -1
  177. rasa/dialogue_understanding/commands/cancel_flow_command.py +18 -7
  178. rasa/dialogue_understanding/commands/change_flow_command.py +18 -2
  179. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +18 -4
  180. rasa/dialogue_understanding/commands/clarify_command.py +19 -3
  181. rasa/dialogue_understanding/commands/command.py +19 -3
  182. rasa/dialogue_understanding/commands/correct_slots_command.py +3 -3
  183. rasa/dialogue_understanding/commands/error_command.py +1 -1
  184. rasa/dialogue_understanding/commands/free_form_answer_command.py +2 -1
  185. rasa/dialogue_understanding/commands/handle_code_change_command.py +2 -2
  186. rasa/dialogue_understanding/commands/human_handoff_command.py +16 -4
  187. rasa/dialogue_understanding/commands/knowledge_answer_command.py +18 -4
  188. rasa/dialogue_understanding/commands/noop_command.py +2 -1
  189. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +16 -4
  190. rasa/dialogue_understanding/commands/restart_command.py +2 -5
  191. rasa/dialogue_understanding/commands/session_end_command.py +3 -5
  192. rasa/dialogue_understanding/commands/session_start_command.py +3 -5
  193. rasa/dialogue_understanding/commands/set_slot_command.py +27 -3
  194. rasa/dialogue_understanding/commands/skip_question_command.py +16 -4
  195. rasa/dialogue_understanding/commands/start_flow_command.py +17 -2
  196. rasa/dialogue_understanding/commands/user_silence_command.py +3 -5
  197. rasa/dialogue_understanding/commands/utils.py +64 -45
  198. rasa/dialogue_understanding/constants.py +1 -0
  199. rasa/dialogue_understanding/generator/command_generator.py +2 -119
  200. rasa/dialogue_understanding/generator/command_parser.py +201 -0
  201. rasa/dialogue_understanding/generator/constants.py +2 -2
  202. rasa/dialogue_understanding/generator/flow_retrieval.py +7 -7
  203. rasa/dialogue_understanding/generator/llm_based_command_generator.py +11 -57
  204. rasa/dialogue_understanding/generator/llm_command_generator.py +2 -1
  205. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +67 -120
  206. rasa/dialogue_understanding/generator/nlu_command_adapter.py +8 -10
  207. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +32 -93
  208. rasa/dialogue_understanding/generator/utils.py +45 -0
  209. rasa/dialogue_understanding/patterns/cancel.py +2 -1
  210. rasa/dialogue_understanding/patterns/cannot_handle.py +1 -0
  211. rasa/dialogue_understanding/patterns/chitchat.py +1 -1
  212. rasa/dialogue_understanding/patterns/clarify.py +2 -1
  213. rasa/dialogue_understanding/patterns/code_change.py +2 -0
  214. rasa/dialogue_understanding/patterns/collect_information.py +6 -3
  215. rasa/dialogue_understanding/patterns/completed.py +1 -1
  216. rasa/dialogue_understanding/patterns/continue_interrupted.py +10 -1
  217. rasa/dialogue_understanding/patterns/correction.py +4 -2
  218. rasa/dialogue_understanding/patterns/human_handoff.py +1 -1
  219. rasa/dialogue_understanding/patterns/internal_error.py +1 -0
  220. rasa/dialogue_understanding/patterns/search.py +1 -1
  221. rasa/dialogue_understanding/patterns/session_start.py +1 -1
  222. rasa/dialogue_understanding/patterns/skip_question.py +1 -0
  223. rasa/dialogue_understanding/patterns/user_silence.py +1 -1
  224. rasa/dialogue_understanding/processor/command_processor.py +13 -9
  225. rasa/dialogue_understanding/processor/command_processor_component.py +1 -1
  226. rasa/dialogue_understanding/stack/dialogue_stack.py +4 -3
  227. rasa/dialogue_understanding/stack/frames/__init__.py +2 -2
  228. rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +4 -1
  229. rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +2 -3
  230. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +5 -2
  231. rasa/dialogue_understanding/stack/frames/search_frame.py +4 -1
  232. rasa/dialogue_understanding/stack/utils.py +8 -4
  233. rasa/dialogue_understanding/utils.py +121 -2
  234. rasa/dialogue_understanding_test/README.md +379 -0
  235. rasa/dialogue_understanding_test/command_comparison.py +60 -0
  236. rasa/dialogue_understanding_test/command_metric_calculation.py +110 -4
  237. rasa/dialogue_understanding_test/constants.py +6 -1
  238. rasa/dialogue_understanding_test/du_test_case.py +252 -38
  239. rasa/dialogue_understanding_test/du_test_result.py +291 -2
  240. rasa/dialogue_understanding_test/du_test_runner.py +239 -10
  241. rasa/dialogue_understanding_test/du_test_schema.yml +161 -0
  242. rasa/dialogue_understanding_test/io.py +338 -20
  243. rasa/dialogue_understanding_test/test_case_simulation/__init__.py +0 -0
  244. rasa/dialogue_understanding_test/test_case_simulation/exception.py +28 -0
  245. rasa/dialogue_understanding_test/test_case_simulation/test_case_tracker_simulator.py +336 -0
  246. rasa/dialogue_understanding_test/utils.py +70 -0
  247. rasa/dialogue_understanding_test/validation.py +59 -4
  248. rasa/e2e_test/aggregate_test_stats_calculator.py +1 -1
  249. rasa/e2e_test/assertions.py +1 -1
  250. rasa/e2e_test/e2e_config.py +1 -1
  251. rasa/e2e_test/e2e_test_case.py +3 -4
  252. rasa/e2e_test/e2e_test_converter.py +2 -3
  253. rasa/e2e_test/e2e_test_coverage_report.py +6 -6
  254. rasa/e2e_test/e2e_test_result.py +1 -1
  255. rasa/e2e_test/e2e_test_runner.py +134 -31
  256. rasa/e2e_test/stub_custom_action.py +1 -1
  257. rasa/e2e_test/utils/e2e_yaml_utils.py +1 -1
  258. rasa/e2e_test/utils/io.py +132 -65
  259. rasa/e2e_test/utils/validation.py +1 -1
  260. rasa/engine/caching.py +5 -7
  261. rasa/engine/constants.py +1 -1
  262. rasa/engine/graph.py +2 -2
  263. rasa/engine/recipes/default_components.py +13 -15
  264. rasa/engine/recipes/recipe.py +2 -2
  265. rasa/engine/runner/dask.py +2 -2
  266. rasa/engine/runner/interface.py +1 -0
  267. rasa/engine/storage/local_model_storage.py +5 -4
  268. rasa/engine/storage/resource.py +2 -1
  269. rasa/engine/storage/storage.py +5 -3
  270. rasa/engine/training/components.py +2 -1
  271. rasa/engine/training/fingerprinting.py +4 -2
  272. rasa/engine/training/graph_trainer.py +4 -4
  273. rasa/engine/training/hooks.py +2 -2
  274. rasa/engine/validation.py +34 -33
  275. rasa/exceptions.py +3 -2
  276. rasa/graph_components/converters/nlu_message_converter.py +3 -3
  277. rasa/graph_components/providers/domain_for_core_training_provider.py +3 -3
  278. rasa/graph_components/providers/domain_provider.py +3 -2
  279. rasa/graph_components/providers/flows_provider.py +2 -3
  280. rasa/graph_components/providers/forms_provider.py +4 -4
  281. rasa/graph_components/providers/nlu_training_data_provider.py +5 -3
  282. rasa/graph_components/providers/responses_provider.py +4 -4
  283. rasa/graph_components/providers/rule_only_provider.py +3 -2
  284. rasa/graph_components/providers/story_graph_provider.py +8 -8
  285. rasa/graph_components/providers/training_tracker_provider.py +3 -2
  286. rasa/graph_components/validators/default_recipe_validator.py +16 -16
  287. rasa/graph_components/validators/finetuning_validator.py +10 -8
  288. rasa/hooks.py +18 -12
  289. rasa/jupyter.py +2 -2
  290. rasa/llm_fine_tuning/annotation_module.py +4 -4
  291. rasa/llm_fine_tuning/conversations.py +6 -6
  292. rasa/llm_fine_tuning/llm_data_preparation_module.py +1 -1
  293. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -4
  294. rasa/llm_fine_tuning/paraphrasing/rephrase_validator.py +1 -1
  295. rasa/llm_fine_tuning/paraphrasing_module.py +1 -1
  296. rasa/llm_fine_tuning/storage.py +3 -3
  297. rasa/markers/marker.py +2 -3
  298. rasa/markers/marker_base.py +1 -2
  299. rasa/markers/upload.py +2 -2
  300. rasa/markers/validate.py +2 -3
  301. rasa/model.py +3 -5
  302. rasa/model_manager/config.py +1 -1
  303. rasa/model_manager/model_api.py +5 -4
  304. rasa/model_manager/runner_service.py +6 -6
  305. rasa/model_manager/socket_bridge.py +8 -3
  306. rasa/model_manager/studio_jwt_auth.py +1 -0
  307. rasa/model_manager/trainer_service.py +9 -7
  308. rasa/model_manager/utils.py +1 -1
  309. rasa/model_manager/warm_rasa_process.py +14 -8
  310. rasa/model_service.py +5 -6
  311. rasa/model_testing.py +13 -15
  312. rasa/nlu/classifiers/diet_classifier.py +72 -73
  313. rasa/nlu/classifiers/fallback_classifier.py +9 -11
  314. rasa/nlu/classifiers/keyword_intent_classifier.py +7 -6
  315. rasa/nlu/classifiers/logistic_regression_classifier.py +3 -3
  316. rasa/nlu/classifiers/mitie_intent_classifier.py +5 -4
  317. rasa/nlu/classifiers/regex_message_handler.py +3 -2
  318. rasa/nlu/classifiers/sklearn_intent_classifier.py +2 -2
  319. rasa/nlu/convert.py +2 -2
  320. rasa/nlu/emulators/dialogflow.py +3 -3
  321. rasa/nlu/emulators/luis.py +5 -5
  322. rasa/nlu/emulators/no_emulator.py +1 -0
  323. rasa/nlu/emulators/wit.py +4 -4
  324. rasa/nlu/extractors/crf_entity_extractor.py +11 -11
  325. rasa/nlu/extractors/duckling_entity_extractor.py +7 -6
  326. rasa/nlu/extractors/entity_synonyms.py +10 -9
  327. rasa/nlu/extractors/extractor.py +16 -16
  328. rasa/nlu/extractors/mitie_entity_extractor.py +10 -9
  329. rasa/nlu/extractors/regex_entity_extractor.py +11 -10
  330. rasa/nlu/extractors/spacy_entity_extractor.py +2 -2
  331. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +15 -14
  332. rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +2 -1
  333. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +10 -9
  334. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +9 -7
  335. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +13 -12
  336. rasa/nlu/featurizers/featurizer.py +5 -4
  337. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +6 -6
  338. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -4
  339. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +4 -4
  340. rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +2 -0
  341. rasa/nlu/model.py +0 -1
  342. rasa/nlu/selectors/response_selector.py +67 -68
  343. rasa/nlu/test.py +38 -38
  344. rasa/nlu/tokenizers/jieba_tokenizer.py +1 -2
  345. rasa/nlu/tokenizers/mitie_tokenizer.py +2 -2
  346. rasa/nlu/tokenizers/spacy_tokenizer.py +3 -3
  347. rasa/nlu/tokenizers/tokenizer.py +6 -7
  348. rasa/nlu/tokenizers/whitespace_tokenizer.py +1 -1
  349. rasa/nlu/utils/bilou_utils.py +7 -7
  350. rasa/nlu/utils/hugging_face/registry.py +22 -22
  351. rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +2 -1
  352. rasa/nlu/utils/mitie_utils.py +2 -1
  353. rasa/nlu/utils/pattern_utils.py +1 -1
  354. rasa/nlu/utils/spacy_utils.py +3 -3
  355. rasa/plugin.py +12 -1
  356. rasa/server.py +37 -1
  357. rasa/shared/constants.py +22 -2
  358. rasa/shared/core/command_payload_reader.py +15 -7
  359. rasa/shared/core/constants.py +4 -1
  360. rasa/shared/core/conversation.py +1 -2
  361. rasa/shared/core/events.py +47 -37
  362. rasa/shared/core/flows/__init__.py +0 -1
  363. rasa/shared/core/flows/flow.py +11 -11
  364. rasa/shared/core/flows/flow_step.py +19 -13
  365. rasa/shared/core/flows/flow_step_links.py +21 -14
  366. rasa/shared/core/flows/flow_step_sequence.py +6 -4
  367. rasa/shared/core/flows/flows_list.py +3 -3
  368. rasa/shared/core/flows/nlu_trigger.py +1 -1
  369. rasa/shared/core/flows/steps/__init__.py +2 -2
  370. rasa/shared/core/flows/steps/action.py +4 -3
  371. rasa/shared/core/flows/steps/call.py +4 -4
  372. rasa/shared/core/flows/steps/collect.py +7 -4
  373. rasa/shared/core/flows/steps/continuation.py +3 -1
  374. rasa/shared/core/flows/steps/end.py +3 -1
  375. rasa/shared/core/flows/steps/internal.py +3 -2
  376. rasa/shared/core/flows/steps/link.py +6 -4
  377. rasa/shared/core/flows/steps/no_operation.py +7 -5
  378. rasa/shared/core/flows/steps/set_slots.py +4 -3
  379. rasa/shared/core/flows/steps/start.py +3 -1
  380. rasa/shared/core/flows/utils.py +1 -0
  381. rasa/shared/core/flows/validation.py +3 -5
  382. rasa/shared/core/generator.py +20 -21
  383. rasa/shared/core/slot_mappings.py +15 -15
  384. rasa/shared/core/slots.py +3 -3
  385. rasa/shared/core/trackers.py +31 -31
  386. rasa/shared/core/training_data/loading.py +1 -1
  387. rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
  388. rasa/shared/core/training_data/story_reader/story_step_builder.py +4 -4
  389. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +29 -31
  390. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +22 -24
  391. rasa/shared/core/training_data/structures.py +11 -12
  392. rasa/shared/core/training_data/visualization.py +10 -10
  393. rasa/shared/data.py +6 -6
  394. rasa/shared/engine/caching.py +0 -1
  395. rasa/shared/exceptions.py +2 -2
  396. rasa/shared/importers/rasa.py +5 -6
  397. rasa/shared/importers/utils.py +1 -1
  398. rasa/shared/nlu/constants.py +3 -0
  399. rasa/shared/nlu/training_data/entities_parser.py +6 -6
  400. rasa/shared/nlu/training_data/features.py +3 -3
  401. rasa/shared/nlu/training_data/formats/__init__.py +1 -1
  402. rasa/shared/nlu/training_data/formats/dialogflow.py +4 -5
  403. rasa/shared/nlu/training_data/formats/luis.py +7 -8
  404. rasa/shared/nlu/training_data/formats/rasa.py +4 -5
  405. rasa/shared/nlu/training_data/formats/rasa_yaml.py +17 -16
  406. rasa/shared/nlu/training_data/formats/readerwriter.py +8 -11
  407. rasa/shared/nlu/training_data/formats/wit.py +3 -4
  408. rasa/shared/nlu/training_data/loading.py +4 -4
  409. rasa/shared/nlu/training_data/lookup_tables_parser.py +1 -1
  410. rasa/shared/nlu/training_data/message.py +13 -14
  411. rasa/shared/nlu/training_data/schemas/data_schema.py +1 -1
  412. rasa/shared/nlu/training_data/schemas/responses.yml +1 -0
  413. rasa/shared/nlu/training_data/synonyms_parser.py +3 -3
  414. rasa/shared/nlu/training_data/training_data.py +12 -13
  415. rasa/shared/nlu/training_data/util.py +11 -10
  416. rasa/shared/providers/_configs/azure_openai_client_config.py +3 -119
  417. rasa/shared/providers/_configs/client_config.py +1 -3
  418. rasa/shared/providers/_configs/default_litellm_client_config.py +1 -3
  419. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +1 -3
  420. rasa/shared/providers/_configs/litellm_router_client_config.py +1 -3
  421. rasa/shared/providers/_configs/model_group_config.py +2 -7
  422. rasa/shared/providers/_configs/openai_client_config.py +1 -3
  423. rasa/shared/providers/_configs/rasa_llm_client_config.py +1 -3
  424. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -3
  425. rasa/shared/providers/_configs/utils.py +1 -0
  426. rasa/shared/providers/_ssl_verification_utils.py +5 -6
  427. rasa/shared/providers/_utils.py +5 -5
  428. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +1 -1
  429. rasa/shared/providers/embedding/azure_openai_embedding_client.py +3 -26
  430. rasa/shared/providers/embedding/embedding_client.py +1 -1
  431. rasa/shared/providers/embedding/litellm_router_embedding_client.py +1 -3
  432. rasa/shared/providers/llm/_base_litellm_client.py +1 -3
  433. rasa/shared/providers/llm/azure_openai_llm_client.py +25 -79
  434. rasa/shared/providers/llm/default_litellm_llm_client.py +1 -3
  435. rasa/shared/providers/llm/litellm_router_llm_client.py +2 -21
  436. rasa/shared/providers/llm/llm_client.py +1 -3
  437. rasa/shared/providers/llm/llm_response.py +41 -2
  438. rasa/shared/providers/llm/openai_llm_client.py +3 -9
  439. rasa/shared/providers/llm/rasa_llm_client.py +6 -20
  440. rasa/shared/providers/llm/self_hosted_llm_client.py +3 -9
  441. rasa/shared/providers/mappings.py +18 -19
  442. rasa/shared/providers/router/_base_litellm_router_client.py +1 -3
  443. rasa/shared/providers/router/router_client.py +1 -3
  444. rasa/shared/utils/cli.py +1 -1
  445. rasa/shared/utils/common.py +1 -1
  446. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +1 -1
  447. rasa/shared/utils/health_check/health_check.py +3 -3
  448. rasa/shared/utils/health_check/llm_health_check_mixin.py +1 -1
  449. rasa/shared/utils/io.py +1 -1
  450. rasa/shared/utils/llm.py +5 -9
  451. rasa/shared/utils/pykwalify_extensions.py +1 -1
  452. rasa/shared/utils/schemas/events.py +1 -1
  453. rasa/shared/utils/yaml.py +29 -26
  454. rasa/studio/auth.py +3 -3
  455. rasa/studio/config.py +1 -2
  456. rasa/studio/data_handler.py +3 -3
  457. rasa/studio/download.py +1 -1
  458. rasa/studio/results_logger.py +3 -3
  459. rasa/studio/upload.py +2 -0
  460. rasa/telemetry.py +31 -0
  461. rasa/tracing/config.py +3 -3
  462. rasa/tracing/instrumentation/attribute_extractors.py +54 -0
  463. rasa/tracing/instrumentation/instrumentation.py +25 -5
  464. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +1 -1
  465. rasa/tracing/instrumentation/metrics.py +11 -11
  466. rasa/tracing/metric_instrument_provider.py +14 -14
  467. rasa/utils/common.py +12 -9
  468. rasa/utils/endpoints.py +1 -1
  469. rasa/utils/io.py +7 -7
  470. rasa/utils/licensing.py +3 -4
  471. rasa/utils/log_utils.py +7 -6
  472. rasa/utils/ml_utils.py +1 -0
  473. rasa/utils/plotting.py +3 -3
  474. rasa/utils/sanic_error_handler.py +1 -1
  475. rasa/utils/tensorflow/callback.py +2 -2
  476. rasa/utils/tensorflow/crf.py +2 -2
  477. rasa/utils/tensorflow/data_generator.py +5 -5
  478. rasa/utils/tensorflow/environment.py +3 -3
  479. rasa/utils/tensorflow/feature_array.py +2 -3
  480. rasa/utils/tensorflow/layers.py +18 -12
  481. rasa/utils/tensorflow/layers_utils.py +2 -1
  482. rasa/utils/tensorflow/metrics.py +2 -2
  483. rasa/utils/tensorflow/model_data.py +7 -7
  484. rasa/utils/tensorflow/model_data_utils.py +10 -9
  485. rasa/utils/tensorflow/models.py +31 -32
  486. rasa/utils/tensorflow/rasa_layers.py +20 -19
  487. rasa/utils/tensorflow/types.py +2 -1
  488. rasa/utils/train_utils.py +23 -21
  489. rasa/utils/url_tools.py +1 -1
  490. rasa/validator.py +17 -1
  491. rasa/version.py +1 -1
  492. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev4.dist-info}/METADATA +9 -10
  493. rasa_pro-3.12.0.dev4.dist-info/RECORD +800 -0
  494. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-b080d6f2.js +0 -1
  495. rasa/shared/providers/_configs/azure_entra_id_client_creds.py +0 -40
  496. rasa/shared/providers/_configs/azure_entra_id_config.py +0 -533
  497. rasa/shared/providers/_configs/oauth_config.py +0 -33
  498. rasa/shared/providers/constants.py +0 -6
  499. rasa_pro-3.12.0.dev2.dist-info/RECORD +0 -793
  500. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev4.dist-info}/NOTICE +0 -0
  501. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev4.dist-info}/WHEEL +0 -0
  502. {rasa_pro-3.12.0.dev2.dist-info → rasa_pro-3.12.0.dev4.dist-info}/entry_points.txt +0 -0
rasa/cli/telemetry.py CHANGED
@@ -2,11 +2,11 @@ import argparse
2
2
  import textwrap
3
3
  from typing import List
4
4
 
5
+ import rasa.cli.utils
6
+ import rasa.shared.utils.cli
5
7
  from rasa import telemetry
6
8
  from rasa.cli import SubParsersAction
7
- import rasa.cli.utils
8
9
  from rasa.shared.constants import DOCS_URL_TELEMETRY
9
- import rasa.shared.utils.cli
10
10
  from rasa.utils import licensing
11
11
 
12
12
 
rasa/cli/test.py CHANGED
@@ -2,31 +2,31 @@ import argparse
2
2
  import asyncio
3
3
  import logging
4
4
  import os
5
- from typing import List, Optional, Text, Dict, Union, Any
5
+ from typing import Any, Dict, List, Optional, Text, Union
6
6
 
7
- from rasa.cli import SubParsersAction
7
+ import rasa.cli.utils
8
8
  import rasa.shared.data
9
- from rasa.shared.exceptions import YamlException
10
- import rasa.shared.utils.io
11
9
  import rasa.shared.utils.cli
10
+ import rasa.shared.utils.io
11
+ import rasa.utils.common
12
+ from rasa.cli import SubParsersAction
12
13
  from rasa.cli.arguments import test as arguments
13
14
  from rasa.core.constants import (
14
15
  FAILED_STORIES_FILE,
15
- SUCCESSFUL_STORIES_FILE,
16
16
  STORIES_WITH_WARNINGS_FILE,
17
+ SUCCESSFUL_STORIES_FILE,
17
18
  )
18
19
  from rasa.shared.constants import (
19
20
  CONFIG_SCHEMA_FILE,
20
- DEFAULT_E2E_TESTS_PATH,
21
21
  DEFAULT_CONFIG_PATH,
22
- DEFAULT_MODELS_PATH,
23
22
  DEFAULT_DATA_PATH,
23
+ DEFAULT_E2E_TESTS_PATH,
24
+ DEFAULT_MODELS_PATH,
24
25
  DEFAULT_RESULTS_PATH,
25
26
  )
26
- from rasa.shared.utils.yaml import validate_raw_yaml_using_schema_file
27
- import rasa.cli.utils
28
- import rasa.utils.common
27
+ from rasa.shared.exceptions import YamlException
29
28
  from rasa.shared.importers.importer import TrainingDataImporter
29
+ from rasa.shared.utils.yaml import validate_raw_yaml_using_schema_file
30
30
 
31
31
  logger = logging.getLogger(__name__)
32
32
 
@@ -95,9 +95,9 @@ def _print_core_test_execution_info(args: argparse.Namespace) -> None:
95
95
  async def run_core_test_async(args: argparse.Namespace) -> None:
96
96
  """Run core tests."""
97
97
  from rasa.model_testing import (
98
- test_core_models_in_directory,
99
98
  test_core,
100
99
  test_core_models,
100
+ test_core_models_in_directory,
101
101
  )
102
102
 
103
103
  stories = rasa.cli.utils.get_validated_path(
rasa/cli/utils.py CHANGED
@@ -1,30 +1,32 @@
1
- import json
2
1
  import argparse
3
- import structlog
4
2
  import importlib
3
+ import json
5
4
  import os
6
5
  import sys
7
6
  import time
8
7
  from pathlib import Path
9
8
  from types import FrameType
10
- from typing import Any, Dict, List, Optional, TYPE_CHECKING, Text, Union, overload
9
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Union, overload
10
+
11
11
  import randomname
12
+ import structlog
12
13
 
13
14
  import rasa.shared.utils.cli
14
15
  import rasa.shared.utils.io
15
- from rasa.shared.importers.importer import TrainingDataImporter
16
+ from rasa import telemetry
16
17
  from rasa.shared.constants import (
17
18
  ASSISTANT_ID_DEFAULT_VALUE,
18
19
  ASSISTANT_ID_KEY,
19
20
  DEFAULT_CONFIG_PATH,
20
21
  )
21
- from rasa import telemetry
22
+ from rasa.shared.importers.importer import TrainingDataImporter
22
23
  from rasa.shared.utils.yaml import read_config_file
23
24
  from rasa.utils.io import write_yaml
24
25
 
25
26
  if TYPE_CHECKING:
26
27
  from questionary import Question
27
28
  from typing_extensions import Literal
29
+
28
30
  from rasa.validator import Validator
29
31
 
30
32
  structlogger = structlog.get_logger()
rasa/core/__init__.py CHANGED
@@ -1,7 +1,6 @@
1
1
  import logging
2
2
 
3
3
  import rasa
4
-
5
4
  from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephraser
6
5
  from rasa.core.policies.enterprise_search_policy import EnterpriseSearchPolicy
7
6
  from rasa.core.policies.intentless_policy import IntentlessPolicy
@@ -41,10 +41,17 @@ from rasa.nlu.constants import (
41
41
  RESPONSE_SELECTOR_UTTER_ACTION_KEY,
42
42
  )
43
43
  from rasa.shared.constants import (
44
+ ATTACHMENT,
45
+ BUTTONS,
46
+ CUSTOM,
44
47
  DEFAULT_NLU_FALLBACK_INTENT_NAME,
45
48
  DOCS_BASE_URL,
49
+ ELEMENTS,
46
50
  FLOW_PREFIX,
51
+ IMAGE,
52
+ QUICK_REPLIES,
47
53
  ROUTE_TO_CALM_SLOT,
54
+ TEXT,
48
55
  UTTER_PREFIX,
49
56
  )
50
57
  from rasa.shared.core.constants import (
@@ -55,6 +62,8 @@ from rasa.shared.core.constants import (
55
62
  ACTION_DEFAULT_FALLBACK_NAME,
56
63
  ACTION_EXTRACT_SLOTS,
57
64
  ACTION_LISTEN_NAME,
65
+ ACTION_METADATA_EXECUTION_ERROR_MESSAGE,
66
+ ACTION_METADATA_EXECUTION_SUCCESS,
58
67
  ACTION_RESET_ROUTING,
59
68
  ACTION_RESTART_NAME,
60
69
  ACTION_REVERT_FALLBACK_EVENTS_NAME,
@@ -109,12 +118,12 @@ logger = logging.getLogger(__name__)
109
118
  def default_actions(action_endpoint: Optional[EndpointConfig] = None) -> List["Action"]:
110
119
  """List default actions."""
111
120
  from rasa.core.actions.action_clean_stack import ActionCleanStack
121
+ from rasa.core.actions.action_hangup import ActionHangup
122
+ from rasa.core.actions.action_repeat_bot_messages import ActionRepeatBotMessages
112
123
  from rasa.core.actions.action_run_slot_rejections import ActionRunSlotRejections
113
124
  from rasa.core.actions.action_trigger_chitchat import ActionTriggerChitchat
114
125
  from rasa.core.actions.action_trigger_search import ActionTriggerSearch
115
126
  from rasa.core.actions.two_stage_fallback import TwoStageFallbackAction
116
- from rasa.core.actions.action_hangup import ActionHangup
117
- from rasa.core.actions.action_repeat_bot_messages import ActionRepeatBotMessages
118
127
  from rasa.dialogue_understanding.patterns.cancel import ActionCancelFlow
119
128
  from rasa.dialogue_understanding.patterns.clarify import ActionClarifyFlows
120
129
  from rasa.dialogue_understanding.patterns.correction import ActionCorrectFlowSlot
@@ -255,18 +264,18 @@ def action_for_name_or_text(
255
264
  def create_bot_utterance(message: Dict[Text, Any]) -> BotUttered:
256
265
  """Create BotUttered event from message."""
257
266
  bot_message = BotUttered(
258
- text=message.pop("text", None),
267
+ text=message.pop(TEXT, None),
259
268
  data={
260
- "elements": message.pop("elements", None),
261
- "quick_replies": message.pop("quick_replies", None),
262
- "buttons": message.pop("buttons", None),
269
+ ELEMENTS: message.pop(ELEMENTS, None),
270
+ QUICK_REPLIES: message.pop(QUICK_REPLIES, None),
271
+ BUTTONS: message.pop(BUTTONS, None),
263
272
  # for legacy / compatibility reasons we need to set the image
264
273
  # to be the attachment if there is no other attachment (the
265
274
  # `.get` is intentional - no `pop` as we still need the image`
266
275
  # property to set it in the following line)
267
- "attachment": message.pop("attachment", None) or message.get("image", None),
268
- "image": message.pop("image", None),
269
- "custom": message.pop("custom", None),
276
+ ATTACHMENT: message.pop(ATTACHMENT, None) or message.get(IMAGE, None),
277
+ IMAGE: message.pop(IMAGE, None),
278
+ CUSTOM: message.pop(CUSTOM, None),
270
279
  },
271
280
  metadata=message,
272
281
  )
@@ -310,22 +319,30 @@ class Action:
310
319
  return f"{self.__class__.__name__}('{self.name()}')"
311
320
 
312
321
  def event_for_successful_execution(
313
- self, prediction: PolicyPrediction
322
+ self,
323
+ prediction: PolicyPrediction,
324
+ was_successful: bool,
325
+ error_message: Optional[str],
314
326
  ) -> ActionExecuted:
315
327
  """Event which should be logged for the successful execution of this action.
316
328
 
317
329
  Args:
318
330
  prediction: Prediction which led to the execution of this event.
331
+ was_successful: Whether the action was executed successfully.
332
+ error_message: Error message if the action was not executed successfully.
319
333
 
320
334
  Returns:
321
335
  Event which should be logged onto the tracker.
322
336
  """
337
+ metadata = prediction.action_metadata or {}
338
+ metadata[ACTION_METADATA_EXECUTION_SUCCESS] = was_successful
339
+ metadata[ACTION_METADATA_EXECUTION_ERROR_MESSAGE] = error_message
323
340
  return ActionExecuted(
324
341
  self.name(),
325
342
  prediction.policy_name,
326
343
  prediction.max_confidence,
327
344
  hide_rule_turn=prediction.hide_rule_turn,
328
- metadata=prediction.action_metadata,
345
+ metadata=metadata,
329
346
  )
330
347
 
331
348
 
@@ -412,22 +429,31 @@ class ActionEndToEndResponse(Action):
412
429
  return [create_bot_utterance(message)]
413
430
 
414
431
  def event_for_successful_execution(
415
- self, prediction: PolicyPrediction
432
+ self,
433
+ prediction: PolicyPrediction,
434
+ was_successful: bool,
435
+ error_message: Optional[str],
416
436
  ) -> ActionExecuted:
417
437
  """Event which should be logged for the successful execution of this action.
418
438
 
419
439
  Args:
420
440
  prediction: Prediction which led to the execution of this event.
441
+ was_successful: Whether the action was executed successfully.
442
+ error_message: Error message if the action was not executed successfully.
421
443
 
422
444
  Returns:
423
445
  Event which should be logged onto the tracker.
424
446
  """
447
+ metadata = prediction.action_metadata or {}
448
+ metadata[ACTION_METADATA_EXECUTION_SUCCESS] = was_successful
449
+ metadata[ACTION_METADATA_EXECUTION_ERROR_MESSAGE] = error_message
450
+
425
451
  return ActionExecuted(
426
452
  policy=prediction.policy_name,
427
453
  confidence=prediction.max_confidence,
428
454
  action_text=self.action_text,
429
455
  hide_rule_turn=prediction.hide_rule_turn,
430
- metadata=prediction.action_metadata,
456
+ metadata=metadata,
431
457
  )
432
458
 
433
459
 
@@ -727,10 +753,7 @@ class ActionDeactivateLoop(Action):
727
753
 
728
754
 
729
755
  class RemoteActionJSONValidator:
730
- """
731
- A validator class for ensuring that the JSON response from a custom action executor
732
- adheres to the expected schema.
733
- """
756
+ """Check action responses for JSON schema validation."""
734
757
 
735
758
  @staticmethod
736
759
  def action_response_format_spec() -> Dict[Text, Any]:
@@ -753,8 +776,7 @@ class RemoteActionJSONValidator:
753
776
 
754
777
  @classmethod
755
778
  def validate(cls, result: Dict[Text, Any]) -> bool:
756
- """
757
- Validate the given JSON result against the expected Action response schema.
779
+ """Validate the given JSON result against the expected Action response schema.
758
780
 
759
781
  This method uses a cached JSON schema validator to check if the provided result
760
782
  conforms to the predefined schema.
@@ -788,8 +810,7 @@ class RemoteActionJSONValidator:
788
810
  @classmethod
789
811
  @lru_cache(maxsize=1)
790
812
  def get_action_response_validator(cls) -> Draft202012Validator:
791
- """
792
- Retrieve a cached JSON schema validator for the Action response schema.
813
+ """Retrieve a cached JSON schema validator for the Action response schema.
793
814
 
794
815
  Returns:
795
816
  Draft202012Validator: An instance of the JSON schema validator.
@@ -1,4 +1,4 @@
1
- from typing import Optional, Dict, Any, List
1
+ from typing import Any, Dict, List, Optional
2
2
 
3
3
  from rasa.core.actions.action import Action
4
4
  from rasa.core.channels import OutputChannel
@@ -1,4 +1,4 @@
1
- from typing import Optional, Dict, Any, List
1
+ from typing import Any, Dict, List, Optional
2
2
 
3
3
  from rasa.core.actions.action import Action
4
4
  from rasa.core.channels import OutputChannel
@@ -14,7 +14,7 @@ from rasa.dialogue_understanding.patterns.user_silence import (
14
14
  )
15
15
  from rasa.shared.core.constants import ACTION_REPEAT_BOT_MESSAGES
16
16
  from rasa.shared.core.domain import Domain
17
- from rasa.shared.core.events import Event, BotUttered, UserUttered
17
+ from rasa.shared.core.events import BotUttered, Event, UserUttered
18
18
  from rasa.shared.core.trackers import DialogueStateTracker
19
19
 
20
20
 
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict, List, Optional, TYPE_CHECKING, Text, Union
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Union
2
2
 
3
3
  import structlog
4
4
  from jinja2 import Template
@@ -20,8 +20,8 @@ from rasa.shared.core.slots import (
20
20
  )
21
21
 
22
22
  if TYPE_CHECKING:
23
- from rasa.core.nlg import NaturalLanguageGenerator
24
23
  from rasa.core.channels.channel import OutputChannel
24
+ from rasa.core.nlg import NaturalLanguageGenerator
25
25
  from rasa.shared.core.domain import Domain
26
26
  from rasa.shared.core.trackers import DialogueStateTracker
27
27
 
@@ -1,4 +1,4 @@
1
- from typing import Optional, Dict, Any, List
1
+ from typing import Any, Dict, List, Optional
2
2
 
3
3
  from rasa.core.actions.action import Action
4
4
  from rasa.core.channels import OutputChannel
@@ -1,15 +1,16 @@
1
- from typing import Any, Dict, Optional, Text, List
1
+ from typing import Any, Dict, List, Optional, Text
2
2
 
3
3
  import structlog
4
+
5
+ from rasa.core.actions import action
6
+ from rasa.core.channels import OutputChannel
7
+ from rasa.core.nlg import NaturalLanguageGenerator
4
8
  from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
5
9
  FlowStackFrameType,
6
10
  UserFlowStackFrame,
7
11
  )
8
12
  from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
9
- from rasa.core.actions import action
10
- from rasa.core.channels import OutputChannel
11
13
  from rasa.shared.constants import FLOW_PREFIX
12
-
13
14
  from rasa.shared.core.domain import Domain
14
15
  from rasa.shared.core.events import (
15
16
  ActiveLoop,
@@ -17,7 +18,6 @@ from rasa.shared.core.events import (
17
18
  FlowInterrupted,
18
19
  SlotSet,
19
20
  )
20
- from rasa.core.nlg import NaturalLanguageGenerator
21
21
  from rasa.shared.core.trackers import DialogueStateTracker
22
22
 
23
23
  structlogger = structlog.get_logger(__name__)
@@ -1,4 +1,4 @@
1
- from typing import Optional, Dict, Any, List
1
+ from typing import Any, Dict, List, Optional
2
2
 
3
3
  from rasa.core.actions.action import Action
4
4
  from rasa.core.channels import OutputChannel
@@ -1,33 +1,35 @@
1
1
  import copy
2
- from typing import Text, List, Optional, Union, Any, Dict, Set
3
2
  import itertools
3
+ import json
4
4
  import logging
5
+ from typing import Any, Dict, List, Optional, Set, Text, Union
6
+
5
7
  import structlog
6
- import json
7
8
 
8
9
  from rasa.core.actions import action
9
- from rasa.core.actions.loops import LoopAction
10
- from rasa.core.channels import OutputChannel
11
- from rasa.shared.core.domain import Domain, KEY_SLOTS
12
- from rasa.shared.core.constants import SlotMappingType, SLOT_MAPPINGS, MAPPING_TYPE
13
-
14
10
  from rasa.core.actions.action import RemoteAction
15
11
  from rasa.core.actions.action_exceptions import ActionExecutionRejection
12
+ from rasa.core.actions.loops import LoopAction
13
+ from rasa.core.channels import OutputChannel
14
+ from rasa.core.nlg import NaturalLanguageGenerator
15
+ from rasa.shared.constants import UTTER_PREFIX
16
16
  from rasa.shared.core.constants import (
17
17
  ACTION_EXTRACT_SLOTS,
18
18
  ACTION_LISTEN_NAME,
19
+ MAPPING_TYPE,
19
20
  REQUESTED_SLOT,
21
+ SLOT_MAPPINGS,
22
+ SlotMappingType,
20
23
  )
21
- from rasa.shared.constants import UTTER_PREFIX
24
+ from rasa.shared.core.domain import KEY_SLOTS, Domain
22
25
  from rasa.shared.core.events import (
23
- Event,
24
- SlotSet,
25
26
  ActionExecuted,
26
- ActiveLoop,
27
27
  ActionExecutionRejected,
28
+ ActiveLoop,
29
+ Event,
28
30
  Restarted,
31
+ SlotSet,
29
32
  )
30
- from rasa.core.nlg import NaturalLanguageGenerator
31
33
  from rasa.shared.core.slot_mappings import SlotMapping
32
34
  from rasa.shared.core.slots import ListSlot
33
35
  from rasa.shared.core.trackers import DialogueStateTracker
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import logging
3
- from typing import Any, Dict, Optional, TYPE_CHECKING
3
+ from typing import TYPE_CHECKING, Any, Dict, Optional
4
4
 
5
5
  import aiohttp
6
6
 
@@ -94,6 +94,13 @@ class HTTPCustomActionExecutor(CustomActionExecutor):
94
94
  )
95
95
  logger.error(exception.message)
96
96
  raise exception
97
+ elif e.status == 404:
98
+ message = (
99
+ f"Custom action implementation with name '{self.action_name}' "
100
+ f"not found."
101
+ )
102
+ logger.error(message)
103
+ raise RasaException(message) from e
97
104
  else:
98
105
  raise RasaException(
99
106
  f"Failed to execute custom action '{self.action_name}'"
@@ -1,13 +1,13 @@
1
1
  from abc import ABC
2
- from typing import Any, Dict, List, TYPE_CHECKING, Optional, Text
2
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text
3
3
 
4
4
  from rasa.core.actions.action import Action
5
- from rasa.shared.core.events import Event, ActiveLoop
5
+ from rasa.shared.core.events import ActiveLoop, Event
6
6
 
7
7
  if TYPE_CHECKING:
8
8
  from rasa.core.channels import OutputChannel
9
- from rasa.shared.core.domain import Domain
10
9
  from rasa.core.nlg import NaturalLanguageGenerator
10
+ from rasa.shared.core.domain import Domain
11
11
  from rasa.shared.core.trackers import DialogueStateTracker
12
12
 
13
13
 
@@ -1,29 +1,29 @@
1
1
  import copy
2
2
  import time
3
- from typing import List, Text, Optional
3
+ from typing import List, Optional, Text
4
4
 
5
5
  from rasa.core.actions import action
6
6
  from rasa.core.actions.loops import LoopAction
7
7
  from rasa.core.channels import OutputChannel
8
- from rasa.shared.core.domain import Domain
9
- from rasa.shared.core.events import (
10
- Event,
11
- UserUtteranceReverted,
12
- ActionExecuted,
13
- UserUttered,
14
- ActiveLoop,
15
- )
16
8
  from rasa.core.nlg import NaturalLanguageGenerator
17
- from rasa.shared.core.trackers import DialogueStateTracker, EventVerbosity
18
9
  from rasa.shared.constants import DEFAULT_NLU_FALLBACK_INTENT_NAME
19
10
  from rasa.shared.core.constants import (
20
- USER_INTENT_OUT_OF_SCOPE,
21
- ACTION_LISTEN_NAME,
22
- ACTION_DEFAULT_FALLBACK_NAME,
23
11
  ACTION_DEFAULT_ASK_AFFIRMATION_NAME,
24
12
  ACTION_DEFAULT_ASK_REPHRASE_NAME,
13
+ ACTION_DEFAULT_FALLBACK_NAME,
14
+ ACTION_LISTEN_NAME,
25
15
  ACTION_TWO_STAGE_FALLBACK_NAME,
16
+ USER_INTENT_OUT_OF_SCOPE,
17
+ )
18
+ from rasa.shared.core.domain import Domain
19
+ from rasa.shared.core.events import (
20
+ ActionExecuted,
21
+ ActiveLoop,
22
+ Event,
23
+ UserUtteranceReverted,
24
+ UserUttered,
26
25
  )
26
+ from rasa.shared.core.trackers import DialogueStateTracker, EventVerbosity
27
27
  from rasa.shared.nlu.constants import INTENT, PREDICTED_CONFIDENCE_KEY
28
28
  from rasa.utils.endpoints import EndpointConfig
29
29
 
@@ -2,13 +2,12 @@ import logging
2
2
  from typing import Iterable, Optional, Text
3
3
 
4
4
  from rasa.core.brokers.broker import EventBroker
5
+ from rasa.core.secrets_manager.secret_manager import EndpointResolver
5
6
  from rasa.core.tracker_store import TrackerStore, create_tracker_store
6
7
  from rasa.shared.core.domain import Domain
7
8
  from rasa.shared.core.trackers import DialogueStateTracker
8
9
  from rasa.utils.endpoints import EndpointConfig
9
10
 
10
- from rasa.core.secrets_manager.secret_manager import EndpointResolver
11
-
12
11
  logger = logging.getLogger(__name__)
13
12
 
14
13
  DEFAULT_RETRIES = 3
@@ -1,7 +1,8 @@
1
1
  from __future__ import annotations
2
+
2
3
  import logging
3
4
  from asyncio import AbstractEventLoop
4
- from typing import Any, Dict, Text, Optional, Union, TypeVar, Type
5
+ from typing import Any, Dict, Optional, Text, Type, TypeVar, Union
5
6
 
6
7
  import aiormq
7
8
 
rasa/core/brokers/file.py CHANGED
@@ -2,7 +2,7 @@ import json
2
2
  import logging
3
3
  import typing
4
4
  from asyncio import AbstractEventLoop
5
- from typing import Optional, Text, Dict
5
+ from typing import Dict, Optional, Text
6
6
 
7
7
  from rasa.core.brokers.broker import EventBroker
8
8
 
@@ -1,23 +1,23 @@
1
1
  import asyncio
2
- import os
3
2
  import json
4
3
  import logging
4
+ import os
5
+ import threading
6
+ import time
7
+ from asyncio import AbstractEventLoop
5
8
  from functools import cached_property
9
+ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Union
6
10
 
7
11
  import structlog
8
- import threading
9
- from asyncio import AbstractEventLoop
10
- from typing import Any, Text, List, Optional, Union, Dict, TYPE_CHECKING
11
- import time
12
12
 
13
+ import rasa.shared.utils.common
13
14
  from rasa.core.brokers.broker import EventBroker
14
15
  from rasa.core.exceptions import KafkaProducerInitializationError
15
16
  from rasa.shared.utils.io import DEFAULT_ENCODING
16
17
  from rasa.utils.endpoints import EndpointConfig
17
- import rasa.shared.utils.common
18
18
 
19
19
  if TYPE_CHECKING:
20
- from confluent_kafka import KafkaError, Producer, Message
20
+ from confluent_kafka import KafkaError, Message, Producer
21
21
 
22
22
  logger = logging.getLogger(__name__)
23
23
  structlogger = structlog.get_logger()
@@ -293,7 +293,7 @@ def kafka_error_callback(err: "KafkaError") -> None:
293
293
  Any exception raised from this callback will be re-raised from the
294
294
  triggering flush() call.
295
295
  """
296
- from confluent_kafka import KafkaException, KafkaError
296
+ from confluent_kafka import KafkaError, KafkaException
297
297
 
298
298
  # handle authentication / connection related issues, likely pointing
299
299
  # to a configuration error
rasa/core/brokers/pika.py CHANGED
@@ -1,25 +1,24 @@
1
1
  import asyncio
2
2
  import json
3
3
  import logging
4
- from functools import cached_property
5
-
6
- import structlog
7
4
  import os
8
5
  import ssl
9
6
  from asyncio import AbstractEventLoop
10
7
  from collections import deque
11
- from typing import Deque, Dict, Optional, Text, Union, Any, List, Set, Tuple, cast
8
+ from functools import cached_property
9
+ from typing import Any, Deque, Dict, List, Optional, Set, Text, Tuple, Union, cast
12
10
  from urllib.parse import urlparse
13
11
 
14
12
  import aio_pika
13
+ import structlog
15
14
 
16
- from rasa.shared.exceptions import RasaException
17
- from rasa.shared.constants import DOCS_URL_PIKA_EVENT_BROKER
18
- from rasa.core.brokers.broker import EventBroker
15
+ import rasa.shared.utils.common
19
16
  import rasa.shared.utils.io
20
- from rasa.utils.endpoints import EndpointConfig
17
+ from rasa.core.brokers.broker import EventBroker
18
+ from rasa.shared.constants import DOCS_URL_PIKA_EVENT_BROKER
19
+ from rasa.shared.exceptions import RasaException
21
20
  from rasa.shared.utils.io import DEFAULT_ENCODING
22
- import rasa.shared.utils.common
21
+ from rasa.utils.endpoints import EndpointConfig
23
22
 
24
23
  logger = logging.getLogger(__name__)
25
24
  structlogger = structlog.get_logger()
rasa/core/brokers/sql.py CHANGED
@@ -2,11 +2,11 @@ import contextlib
2
2
  import json
3
3
  import logging
4
4
  from asyncio import AbstractEventLoop
5
- from typing import Any, Dict, Optional, Text, Generator
5
+ from typing import Any, Dict, Generator, Optional, Text
6
6
 
7
- from sqlalchemy.orm import Session
8
7
  from sqlalchemy import Column, Integer, String
9
8
  from sqlalchemy import Text as SqlAlchemyText # to avoid name clash with typing.Text
9
+ from sqlalchemy.orm import Session
10
10
 
11
11
  from rasa.core.brokers.broker import EventBroker
12
12
  from rasa.utils.endpoints import EndpointConfig
@@ -44,9 +44,10 @@ class SQLEventBroker(EventBroker):
44
44
  password: Optional[Text] = None,
45
45
  ) -> None:
46
46
  """Initializes `SQLBrokerEvent`."""
47
- from rasa.core.tracker_store import SQLTrackerStore
48
47
  import sqlalchemy.orm
49
48
 
49
+ from rasa.core.tracker_store import SQLTrackerStore
50
+
50
51
  engine_url = SQLTrackerStore.get_db_url(
51
52
  dialect, host, port, db, username, password
52
53
  )
@@ -1,3 +1,4 @@
1
+ # ruff: noqa: I001
1
2
  from typing import Text, Dict, List, Type
2
3
 
3
4
  from rasa.core.channels.channel import ( # noqa: F401
@@ -31,6 +32,7 @@ from rasa.core.channels.vier_cvg import CVGInput
31
32
  from rasa.core.channels.voice_stream.twilio_media_streams import (
32
33
  TwilioMediaStreamsInputChannel,
33
34
  )
35
+ from rasa.core.channels.studio_chat import StudioChatInput
34
36
 
35
37
  input_channel_classes: List[Type[InputChannel]] = [
36
38
  CmdlineInput,
@@ -53,6 +55,7 @@ input_channel_classes: List[Type[InputChannel]] = [
53
55
  JambonzVoiceReadyInput,
54
56
  TwilioMediaStreamsInputChannel,
55
57
  BrowserAudioInputChannel,
58
+ StudioChatInput,
56
59
  ]
57
60
 
58
61
  # Mapping from an input channel name to its class to allow name based lookup.
@@ -3,7 +3,7 @@ import json
3
3
  import logging
4
4
  import re
5
5
  from http import HTTPStatus
6
- from typing import Text, Dict, Any, List, Iterable, Callable, Awaitable, Optional
6
+ from typing import Any, Awaitable, Callable, Dict, Iterable, List, Optional, Text
7
7
 
8
8
  import jwt
9
9
  import requests
@@ -14,7 +14,7 @@ from sanic import Blueprint, response
14
14
  from sanic.request import Request
15
15
  from sanic.response import HTTPResponse
16
16
 
17
- from rasa.core.channels.channel import UserMessage, OutputChannel, InputChannel
17
+ from rasa.core.channels.channel import InputChannel, OutputChannel, UserMessage
18
18
 
19
19
  MICROSOFT_OPEN_ID_URI = (
20
20
  "https://login.botframework.com/v1/.well-known/openidconfiguration"