rasa-pro 3.10.16__py3-none-any.whl → 3.11.0__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 (240) hide show
  1. rasa/__main__.py +31 -15
  2. rasa/api.py +12 -2
  3. rasa/cli/arguments/default_arguments.py +24 -4
  4. rasa/cli/arguments/run.py +15 -0
  5. rasa/cli/arguments/shell.py +5 -1
  6. rasa/cli/arguments/train.py +17 -9
  7. rasa/cli/evaluate.py +7 -7
  8. rasa/cli/inspect.py +19 -7
  9. rasa/cli/interactive.py +1 -0
  10. rasa/cli/llm_fine_tuning.py +11 -14
  11. rasa/cli/project_templates/calm/config.yml +5 -7
  12. rasa/cli/project_templates/calm/endpoints.yml +15 -2
  13. rasa/cli/project_templates/tutorial/config.yml +8 -5
  14. rasa/cli/project_templates/tutorial/data/flows.yml +1 -1
  15. rasa/cli/project_templates/tutorial/data/patterns.yml +5 -0
  16. rasa/cli/project_templates/tutorial/domain.yml +14 -0
  17. rasa/cli/project_templates/tutorial/endpoints.yml +5 -0
  18. rasa/cli/run.py +7 -0
  19. rasa/cli/scaffold.py +4 -2
  20. rasa/cli/studio/upload.py +0 -15
  21. rasa/cli/train.py +14 -53
  22. rasa/cli/utils.py +14 -11
  23. rasa/cli/x.py +7 -7
  24. rasa/constants.py +3 -1
  25. rasa/core/actions/action.py +77 -33
  26. rasa/core/actions/action_hangup.py +29 -0
  27. rasa/core/actions/action_repeat_bot_messages.py +89 -0
  28. rasa/core/actions/e2e_stub_custom_action_executor.py +5 -1
  29. rasa/core/actions/http_custom_action_executor.py +4 -0
  30. rasa/core/agent.py +2 -2
  31. rasa/core/brokers/kafka.py +3 -1
  32. rasa/core/brokers/pika.py +3 -1
  33. rasa/core/channels/__init__.py +10 -6
  34. rasa/core/channels/channel.py +41 -4
  35. rasa/core/channels/development_inspector.py +150 -46
  36. rasa/core/channels/inspector/README.md +1 -1
  37. rasa/core/channels/inspector/dist/assets/{arc-b6e548fe.js → arc-bc141fb2.js} +1 -1
  38. rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-fa03ac9e.js → c4Diagram-d0fbc5ce-be2db283.js} +1 -1
  39. rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-ee67392a.js → classDiagram-936ed81e-55366915.js} +1 -1
  40. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-9b283fae.js → classDiagram-v2-c3cb15f1-bb529518.js} +1 -1
  41. rasa/core/channels/inspector/dist/assets/{createText-62fc7601-8b6fcc2a.js → createText-62fc7601-b0ec81d6.js} +1 -1
  42. rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-22e77f4f.js → edges-f2ad444c-6166330c.js} +1 -1
  43. rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-60ffc87f.js → erDiagram-9d236eb7-5ccc6a8e.js} +1 -1
  44. rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-9dd802e4.js → flowDb-1972c806-fca3bfe4.js} +1 -1
  45. rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-5fa1912f.js → flowDiagram-7ea5b25a-4739080f.js} +1 -1
  46. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-736177bf.js +1 -0
  47. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-622a1fd2.js → flowchart-elk-definition-abe16c3d-7c1b0e0f.js} +1 -1
  48. rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-e285a63a.js → ganttDiagram-9b5ea136-772fd050.js} +1 -1
  49. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-f237bdca.js → gitGraphDiagram-99d0ae7c-8eae1dc9.js} +1 -1
  50. rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-4b03d70e.js → index-2c4b9a3b-f55afcdf.js} +1 -1
  51. rasa/core/channels/inspector/dist/assets/index-e7cef9de.js +1317 -0
  52. rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-72a0fa5f.js → infoDiagram-736b4530-124d4a14.js} +1 -1
  53. rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-82218c41.js → journeyDiagram-df861f2b-7c4fae44.js} +1 -1
  54. rasa/core/channels/inspector/dist/assets/{layout-78cff630.js → layout-b9885fb6.js} +1 -1
  55. rasa/core/channels/inspector/dist/assets/{line-5038b469.js → line-7c59abb6.js} +1 -1
  56. rasa/core/channels/inspector/dist/assets/{linear-c4fc4098.js → linear-4776f780.js} +1 -1
  57. rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-c33c8ea6.js → mindmap-definition-beec6740-2332c46c.js} +1 -1
  58. rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-a8d03059.js → pieDiagram-dbbf0591-8fb39303.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-6a0e56b2.js → quadrantDiagram-4d7f4fd6-3c7180a2.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-2dc7c7bd.js → requirementDiagram-6fc4c22a-e910bcb8.js} +1 -1
  61. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-2360fe39.js → sankeyDiagram-8f13d901-ead16c89.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-41b9f9ad.js → sequenceDiagram-b655622a-29a02a19.js} +1 -1
  63. rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-0aad326f.js → stateDiagram-59f0c015-042b3137.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-9847d984.js → stateDiagram-v2-2b26beab-2178c0f3.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/{styles-080da4f6-564d890e.js → styles-080da4f6-23ffa4fc.js} +1 -1
  66. rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-38957613.js → styles-3dcbcfbf-94f59763.js} +1 -1
  67. rasa/core/channels/inspector/dist/assets/{styles-9c745c82-f0fc6921.js → styles-9c745c82-78a6bebc.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-ef3c5a77.js → svgDrawCommon-4835440b-eae2a6f6.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-bf3e91c1.js → timeline-definition-5b62e21b-5c968d92.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-4d4026c0.js → xychartDiagram-2b33534f-fd3db0d5.js} +1 -1
  71. rasa/core/channels/inspector/dist/index.html +18 -17
  72. rasa/core/channels/inspector/index.html +17 -16
  73. rasa/core/channels/inspector/package.json +5 -1
  74. rasa/core/channels/inspector/src/App.tsx +118 -68
  75. rasa/core/channels/inspector/src/components/Chat.tsx +95 -0
  76. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +11 -10
  77. rasa/core/channels/inspector/src/components/DialogueStack.tsx +10 -25
  78. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +6 -3
  79. rasa/core/channels/inspector/src/helpers/audiostream.ts +165 -0
  80. rasa/core/channels/inspector/src/helpers/formatters.test.ts +10 -0
  81. rasa/core/channels/inspector/src/helpers/formatters.ts +107 -41
  82. rasa/core/channels/inspector/src/helpers/utils.ts +92 -7
  83. rasa/core/channels/inspector/src/types.ts +21 -1
  84. rasa/core/channels/inspector/yarn.lock +94 -1
  85. rasa/core/channels/rest.py +51 -46
  86. rasa/core/channels/socketio.py +28 -1
  87. rasa/core/channels/telegram.py +1 -1
  88. rasa/core/channels/twilio.py +1 -1
  89. rasa/core/channels/{audiocodes.py → voice_ready/audiocodes.py} +122 -69
  90. rasa/core/channels/{voice_aware → voice_ready}/jambonz.py +26 -8
  91. rasa/core/channels/{voice_aware → voice_ready}/jambonz_protocol.py +57 -5
  92. rasa/core/channels/{twilio_voice.py → voice_ready/twilio_voice.py} +64 -28
  93. rasa/core/channels/voice_ready/utils.py +37 -0
  94. rasa/core/channels/voice_stream/asr/__init__.py +0 -0
  95. rasa/core/channels/voice_stream/asr/asr_engine.py +89 -0
  96. rasa/core/channels/voice_stream/asr/asr_event.py +18 -0
  97. rasa/core/channels/voice_stream/asr/azure.py +129 -0
  98. rasa/core/channels/voice_stream/asr/deepgram.py +90 -0
  99. rasa/core/channels/voice_stream/audio_bytes.py +8 -0
  100. rasa/core/channels/voice_stream/browser_audio.py +107 -0
  101. rasa/core/channels/voice_stream/call_state.py +23 -0
  102. rasa/core/channels/voice_stream/tts/__init__.py +0 -0
  103. rasa/core/channels/voice_stream/tts/azure.py +106 -0
  104. rasa/core/channels/voice_stream/tts/cartesia.py +118 -0
  105. rasa/core/channels/voice_stream/tts/tts_cache.py +27 -0
  106. rasa/core/channels/voice_stream/tts/tts_engine.py +58 -0
  107. rasa/core/channels/voice_stream/twilio_media_streams.py +173 -0
  108. rasa/core/channels/voice_stream/util.py +57 -0
  109. rasa/core/channels/voice_stream/voice_channel.py +427 -0
  110. rasa/core/information_retrieval/qdrant.py +1 -0
  111. rasa/core/nlg/contextual_response_rephraser.py +45 -17
  112. rasa/{nlu → core}/persistor.py +203 -68
  113. rasa/core/policies/enterprise_search_policy.py +119 -63
  114. rasa/core/policies/flows/flow_executor.py +15 -22
  115. rasa/core/policies/intentless_policy.py +83 -28
  116. rasa/core/processor.py +25 -0
  117. rasa/core/run.py +12 -2
  118. rasa/core/secrets_manager/constants.py +4 -0
  119. rasa/core/secrets_manager/factory.py +8 -0
  120. rasa/core/secrets_manager/vault.py +11 -1
  121. rasa/core/training/interactive.py +33 -34
  122. rasa/core/utils.py +47 -21
  123. rasa/dialogue_understanding/coexistence/llm_based_router.py +41 -14
  124. rasa/dialogue_understanding/commands/__init__.py +6 -0
  125. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +60 -0
  126. rasa/dialogue_understanding/commands/session_end_command.py +61 -0
  127. rasa/dialogue_understanding/commands/user_silence_command.py +59 -0
  128. rasa/dialogue_understanding/commands/utils.py +5 -0
  129. rasa/dialogue_understanding/generator/constants.py +2 -0
  130. rasa/dialogue_understanding/generator/flow_retrieval.py +47 -9
  131. rasa/dialogue_understanding/generator/llm_based_command_generator.py +38 -15
  132. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  133. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +35 -13
  134. rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +3 -0
  135. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +60 -13
  136. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +53 -0
  137. rasa/dialogue_understanding/patterns/repeat.py +37 -0
  138. rasa/dialogue_understanding/patterns/user_silence.py +37 -0
  139. rasa/dialogue_understanding/processor/command_processor.py +21 -1
  140. rasa/e2e_test/aggregate_test_stats_calculator.py +1 -11
  141. rasa/e2e_test/assertions.py +136 -61
  142. rasa/e2e_test/assertions_schema.yml +23 -0
  143. rasa/e2e_test/e2e_test_case.py +85 -6
  144. rasa/e2e_test/e2e_test_runner.py +2 -3
  145. rasa/e2e_test/utils/e2e_yaml_utils.py +1 -1
  146. rasa/engine/graph.py +3 -10
  147. rasa/engine/loader.py +12 -0
  148. rasa/engine/recipes/config_files/default_config.yml +0 -3
  149. rasa/engine/recipes/default_recipe.py +0 -1
  150. rasa/engine/recipes/graph_recipe.py +0 -1
  151. rasa/engine/runner/dask.py +2 -2
  152. rasa/engine/storage/local_model_storage.py +12 -42
  153. rasa/engine/storage/storage.py +1 -5
  154. rasa/engine/validation.py +527 -74
  155. rasa/model_manager/__init__.py +0 -0
  156. rasa/model_manager/config.py +40 -0
  157. rasa/model_manager/model_api.py +559 -0
  158. rasa/model_manager/runner_service.py +286 -0
  159. rasa/model_manager/socket_bridge.py +146 -0
  160. rasa/model_manager/studio_jwt_auth.py +86 -0
  161. rasa/model_manager/trainer_service.py +325 -0
  162. rasa/model_manager/utils.py +87 -0
  163. rasa/model_manager/warm_rasa_process.py +187 -0
  164. rasa/model_service.py +112 -0
  165. rasa/model_training.py +42 -23
  166. rasa/nlu/tokenizers/whitespace_tokenizer.py +3 -14
  167. rasa/server.py +4 -2
  168. rasa/shared/constants.py +60 -8
  169. rasa/shared/core/constants.py +13 -0
  170. rasa/shared/core/domain.py +107 -50
  171. rasa/shared/core/events.py +29 -0
  172. rasa/shared/core/flows/flow.py +5 -0
  173. rasa/shared/core/flows/flows_list.py +19 -6
  174. rasa/shared/core/flows/flows_yaml_schema.json +10 -0
  175. rasa/shared/core/flows/utils.py +39 -0
  176. rasa/shared/core/flows/validation.py +121 -0
  177. rasa/shared/core/flows/yaml_flows_io.py +15 -27
  178. rasa/shared/core/slots.py +5 -0
  179. rasa/shared/importers/importer.py +59 -41
  180. rasa/shared/importers/multi_project.py +23 -11
  181. rasa/shared/importers/rasa.py +12 -3
  182. rasa/shared/importers/remote_importer.py +196 -0
  183. rasa/shared/importers/utils.py +3 -1
  184. rasa/shared/nlu/training_data/formats/rasa_yaml.py +18 -3
  185. rasa/shared/nlu/training_data/training_data.py +18 -19
  186. rasa/shared/providers/_configs/litellm_router_client_config.py +220 -0
  187. rasa/shared/providers/_configs/model_group_config.py +167 -0
  188. rasa/shared/providers/_configs/openai_client_config.py +1 -1
  189. rasa/shared/providers/_configs/rasa_llm_client_config.py +73 -0
  190. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -0
  191. rasa/shared/providers/_configs/utils.py +16 -0
  192. rasa/shared/providers/_utils.py +79 -0
  193. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +13 -29
  194. rasa/shared/providers/embedding/azure_openai_embedding_client.py +54 -21
  195. rasa/shared/providers/embedding/default_litellm_embedding_client.py +24 -0
  196. rasa/shared/providers/embedding/litellm_router_embedding_client.py +135 -0
  197. rasa/shared/providers/llm/_base_litellm_client.py +34 -22
  198. rasa/shared/providers/llm/azure_openai_llm_client.py +50 -29
  199. rasa/shared/providers/llm/default_litellm_llm_client.py +24 -0
  200. rasa/shared/providers/llm/litellm_router_llm_client.py +182 -0
  201. rasa/shared/providers/llm/rasa_llm_client.py +112 -0
  202. rasa/shared/providers/llm/self_hosted_llm_client.py +5 -29
  203. rasa/shared/providers/mappings.py +19 -0
  204. rasa/shared/providers/router/__init__.py +0 -0
  205. rasa/shared/providers/router/_base_litellm_router_client.py +183 -0
  206. rasa/shared/providers/router/router_client.py +73 -0
  207. rasa/shared/utils/common.py +40 -24
  208. rasa/shared/utils/health_check/__init__.py +0 -0
  209. rasa/shared/utils/health_check/embeddings_health_check_mixin.py +31 -0
  210. rasa/shared/utils/health_check/health_check.py +258 -0
  211. rasa/shared/utils/health_check/llm_health_check_mixin.py +31 -0
  212. rasa/shared/utils/io.py +27 -6
  213. rasa/shared/utils/llm.py +354 -44
  214. rasa/shared/utils/schemas/events.py +2 -0
  215. rasa/shared/utils/schemas/model_config.yml +0 -10
  216. rasa/shared/utils/yaml.py +181 -38
  217. rasa/studio/data_handler.py +3 -1
  218. rasa/studio/upload.py +160 -74
  219. rasa/telemetry.py +94 -17
  220. rasa/tracing/config.py +3 -1
  221. rasa/tracing/instrumentation/attribute_extractors.py +95 -18
  222. rasa/tracing/instrumentation/instrumentation.py +121 -0
  223. rasa/utils/common.py +5 -0
  224. rasa/utils/endpoints.py +27 -1
  225. rasa/utils/io.py +8 -16
  226. rasa/utils/log_utils.py +9 -2
  227. rasa/utils/sanic_error_handler.py +32 -0
  228. rasa/validator.py +110 -16
  229. rasa/version.py +1 -1
  230. {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/METADATA +16 -14
  231. {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/RECORD +236 -185
  232. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-1844e5a5.js +0 -1
  233. rasa/core/channels/inspector/dist/assets/index-a5d3e69d.js +0 -1040
  234. rasa/core/channels/voice_aware/utils.py +0 -20
  235. rasa/llm_fine_tuning/notebooks/unsloth_finetuning.ipynb +0 -407
  236. /rasa/core/channels/{voice_aware → voice_ready}/__init__.py +0 -0
  237. /rasa/core/channels/{voice_native → voice_stream}/__init__.py +0 -0
  238. {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/NOTICE +0 -0
  239. {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/WHEEL +0 -0
  240. {rasa_pro-3.10.16.dist-info → rasa_pro-3.11.0.dist-info}/entry_points.txt +0 -0
rasa/validator.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import logging
2
2
  import re
3
3
  import string
4
+ import sys
4
5
  from collections import defaultdict
5
6
  from typing import Set, Text, Optional, Dict, Any, List, Tuple
6
7
 
@@ -22,6 +23,11 @@ from rasa.shared.core.flows.steps.collect import CollectInformationFlowStep
22
23
  from rasa.shared.core.flows.steps.action import ActionFlowStep
23
24
  from rasa.shared.core.flows.steps.link import LinkFlowStep
24
25
  from rasa.shared.core.flows import FlowsList
26
+ from rasa.shared.core.flows.utils import (
27
+ warn_deprecated_collect_step_config,
28
+ get_duplicate_slot_persistence_config_error_message,
29
+ get_invalid_slot_persistence_config_error_message,
30
+ )
25
31
  import rasa.shared.nlu.constants
26
32
  from rasa.shared.constants import (
27
33
  ASSISTANT_ID_DEFAULT_VALUE,
@@ -55,6 +61,7 @@ from rasa.shared.importers.importer import TrainingDataImporter
55
61
  from rasa.shared.nlu.constants import COMMANDS
56
62
  from rasa.shared.nlu.training_data.message import Message
57
63
  from rasa.shared.nlu.training_data.training_data import TrainingData
64
+
58
65
  import rasa.shared.utils.cli
59
66
  import rasa.shared.utils.io
60
67
 
@@ -298,35 +305,23 @@ class Validator:
298
305
  return any(cls.check_for_placeholder(i) for i in value)
299
306
  return False
300
307
 
301
- def check_for_no_empty_paranthesis_in_responses(self) -> bool:
308
+ def check_for_no_empty_parenthesis_in_responses(self) -> bool:
302
309
  """Checks if there are no empty parenthesis in utterances."""
303
310
  everything_is_alright = True
304
311
 
305
312
  for response_text, response_variations in self.domain.responses.items():
306
- if not response_variations:
307
- structlogger.error(
308
- "validator.empty_response",
309
- response=response_text,
310
- event_info=(
311
- f"The response '{response_text}' in the domain file "
312
- f"does not have any variations. Please add at least one "
313
- f"variation to the response."
314
- ),
315
- )
316
- everything_is_alright = False
317
-
318
313
  for response in response_variations:
319
314
  if any(
320
315
  self.check_for_placeholder(response.get(key))
321
316
  for key in RESPONSE_KEYS_TO_INTERPOLATE
322
317
  ):
323
318
  structlogger.error(
324
- "validator.empty_paranthesis_in_utterances",
319
+ "validator.empty_parenthesis_in_utterances",
325
320
  response=response_text,
326
321
  event_info=(
327
322
  f"The response '{response_text}' in the domain file "
328
- f"contains empty parenthesis, which is not permitted."
329
- f" Please remove the empty parenthesis."
323
+ f"contains empty parenthesis, which is not permitted. "
324
+ f"Please remove the empty parenthesis."
330
325
  ),
331
326
  )
332
327
  everything_is_alright = False
@@ -1249,6 +1244,7 @@ class Validator:
1249
1244
  self.verify_flows_steps_against_domain(),
1250
1245
  self.verify_unique_flows(),
1251
1246
  self.verify_predicates(),
1247
+ self.verify_slot_persistence_configuration(),
1252
1248
  ]
1253
1249
 
1254
1250
  all_good = all(flow_validation_conditions)
@@ -1545,3 +1541,101 @@ class Validator:
1545
1541
  ),
1546
1542
  )
1547
1543
  return False
1544
+
1545
+ def verify_slot_persistence_configuration(self) -> bool:
1546
+ """Verifies the validity of slot persistence after flow ends configuration.
1547
+
1548
+ Only slots used in either a collect step or a set_slot step can be persisted and
1549
+ the configuration can either set at the flow level or the collect step level,
1550
+ but not both.
1551
+
1552
+ Returns:
1553
+ bool: True if all slot persistence configuration is valid, False otherwise.
1554
+
1555
+ Raises:
1556
+ DeprecationWarning: If reset_after_flow_ends is used in collect steps.
1557
+ """
1558
+ all_good = True
1559
+
1560
+ for flow in self.flows.underlying_flows:
1561
+ flow_id = flow.id
1562
+ persist_slots = flow.persisted_slots
1563
+ has_flow_level_persistence = True if persist_slots else False
1564
+ flow_slots = set()
1565
+
1566
+ for step in flow.steps_with_calls_resolved:
1567
+ if isinstance(step, SetSlotsFlowStep):
1568
+ flow_slots.update([slot["key"] for slot in step.slots])
1569
+
1570
+ elif isinstance(step, CollectInformationFlowStep):
1571
+ collect_step = step.collect
1572
+ flow_slots.add(collect_step)
1573
+ if not step.reset_after_flow_ends:
1574
+ warn_deprecated_collect_step_config(flow_id, collect_step)
1575
+
1576
+ if has_flow_level_persistence:
1577
+ structlogger.error(
1578
+ "validator.verify_slot_persistence_configuration.duplicate_config",
1579
+ flow=flow_id,
1580
+ collect_step=collect_step,
1581
+ event_info=get_duplicate_slot_persistence_config_error_message(
1582
+ flow_id, collect_step
1583
+ ),
1584
+ )
1585
+ all_good = False
1586
+
1587
+ if has_flow_level_persistence:
1588
+ if not self._is_persist_slots_valid(persist_slots, flow_slots, flow_id):
1589
+ all_good = False
1590
+ return all_good
1591
+
1592
+ def _is_persist_slots_valid(
1593
+ self, persist_slots: List[str], flow_slots: Set[str], flow_id: str
1594
+ ) -> bool:
1595
+ invalid_slots = set(persist_slots) - flow_slots
1596
+ is_valid = False if invalid_slots else True
1597
+
1598
+ if invalid_slots:
1599
+ structlogger.error(
1600
+ "validator.verify_slot_persistence_configuration.invalid_persist_slot",
1601
+ flow=flow_id,
1602
+ event_info=get_invalid_slot_persistence_config_error_message(
1603
+ flow_id, invalid_slots
1604
+ ),
1605
+ )
1606
+ return is_valid
1607
+
1608
+ def verify_studio_supported_validations(self) -> bool:
1609
+ """Validates the assistant project for Rasa Studio supported features.
1610
+
1611
+ Ensure to add new validations here if they are required for
1612
+ Rasa Studio Upload CLI.
1613
+ """
1614
+ if self.domain.is_empty():
1615
+ structlogger.error(
1616
+ "rasa.validator.verify_studio_supported_validations.empty_domain",
1617
+ event_info="Encountered empty domain during validation.",
1618
+ )
1619
+ sys.exit(1)
1620
+
1621
+ self.warn_if_config_mandatory_keys_are_not_set()
1622
+
1623
+ valid_responses = (
1624
+ self.check_for_no_empty_parenthesis_in_responses()
1625
+ and self.validate_button_payloads()
1626
+ )
1627
+ valid_nlu = self.verify_nlu()
1628
+ valid_flows = all(
1629
+ [
1630
+ self.verify_flows_steps_against_domain(),
1631
+ self.verify_unique_flows(),
1632
+ self.verify_predicates(),
1633
+ ]
1634
+ )
1635
+ valid_calm_slot_mappings = self.validate_CALM_slot_mappings()
1636
+
1637
+ all_good = (
1638
+ valid_responses and valid_nlu and valid_flows and valid_calm_slot_mappings
1639
+ )
1640
+
1641
+ return all_good
rasa/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  # this file will automatically be changed,
2
2
  # do not add anything but the version number here!
3
- __version__ = "3.10.16"
3
+ __version__ = "3.11.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rasa-pro
3
- Version: 3.10.16
3
+ Version: 3.11.0
4
4
  Summary: State-of-the-art open-core Conversational AI framework for Enterprises that natively leverages generative AI for effortless assistant development.
5
5
  Home-page: https://rasa.com
6
6
  Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
@@ -8,12 +8,13 @@ Author: Rasa Technologies GmbH
8
8
  Author-email: hi@rasa.com
9
9
  Maintainer: Tom Bocklisch
10
10
  Maintainer-email: tom@rasa.com
11
- Requires-Python: >=3.9,<3.11
11
+ Requires-Python: >=3.9,<3.12
12
12
  Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
17
18
  Classifier: Topic :: Software Development :: Libraries
18
19
  Provides-Extra: full
19
20
  Provides-Extra: gh-release-notes
@@ -22,17 +23,17 @@ Provides-Extra: metal
22
23
  Provides-Extra: mlflow
23
24
  Provides-Extra: spacy
24
25
  Provides-Extra: transformers
25
- Requires-Dist: CacheControl (>=0.12.14,<0.13.0)
26
+ Requires-Dist: CacheControl (>=0.14.0,<0.15.0)
26
27
  Requires-Dist: PyJWT[crypto] (>=2.8.0,<3.0.0)
27
28
  Requires-Dist: SQLAlchemy (>=2.0.22,<2.1.0)
28
29
  Requires-Dist: absl-py (>=2.0,<2.1)
29
- Requires-Dist: aio-pika (>=8.2.3,<8.2.4)
30
+ Requires-Dist: aio-pika (>=8.2.3,<9.4.4)
30
31
  Requires-Dist: aiogram (>=2.15,<2.26)
31
32
  Requires-Dist: aiohttp (>=3.9.4,<3.10)
32
33
  Requires-Dist: apscheduler (>=3.10,<3.11)
33
34
  Requires-Dist: attrs (>=23.1,<23.2)
34
35
  Requires-Dist: azure-storage-blob (>=12.16.0,<12.17.0)
35
- Requires-Dist: boto3 (>=1.35.5,<1.36.0)
36
+ Requires-Dist: boto3 (>=1.35.15,<1.36.0)
36
37
  Requires-Dist: certifi (>=2024.07.04)
37
38
  Requires-Dist: colorama (>=0.4.6,<0.5.0) ; sys_platform == "win32"
38
39
  Requires-Dist: colorclass (>=2.2,<2.3)
@@ -41,7 +42,8 @@ Requires-Dist: colorhash (>=2.0,<2.1.0)
41
42
  Requires-Dist: confluent-kafka (>=2.3.0,<3.0.0)
42
43
  Requires-Dist: cryptography (>=42.0.5)
43
44
  Requires-Dist: cvg-python-sdk (>=0.5.1,<0.6.0)
44
- Requires-Dist: dask (==2022.10.2) ; python_version >= "3.9" and python_version < "3.11"
45
+ Requires-Dist: dask (>=2024.7.0,<2024.8.0)
46
+ Requires-Dist: demoji (>=1.1.0,<2.0.0)
45
47
  Requires-Dist: diskcache (>=5.6.3,<5.7.0)
46
48
  Requires-Dist: dnspython (==2.6.1)
47
49
  Requires-Dist: faiss-cpu (>=1.7.4,<2.0.0)
@@ -57,7 +59,7 @@ Requires-Dist: importlib-resources (==6.1.3)
57
59
  Requires-Dist: jieba (>=0.42.1,<0.43) ; extra == "jieba" or extra == "full"
58
60
  Requires-Dist: jinja2 (>=3.1.4,<4.0.0)
59
61
  Requires-Dist: jsonpatch (>=1.33,<2.0)
60
- Requires-Dist: jsonpickle (>=3.3.0,<3.4)
62
+ Requires-Dist: jsonpickle (>=3.0,<3.1)
61
63
  Requires-Dist: jsonschema (>=4.22)
62
64
  Requires-Dist: keras (==2.14.0)
63
65
  Requires-Dist: langchain (>=0.2.0,<0.3.0)
@@ -67,7 +69,7 @@ Requires-Dist: matplotlib (>=3.7,<3.8)
67
69
  Requires-Dist: mattermostwrapper (>=2.2,<2.3)
68
70
  Requires-Dist: mlflow (>=2.15.1,<3.0.0) ; extra == "mlflow"
69
71
  Requires-Dist: networkx (>=3.1,<3.2)
70
- Requires-Dist: numpy (>=1.23.5,<1.25.0) ; python_version >= "3.9" and python_version < "3.11"
72
+ Requires-Dist: numpy (>=1.26.4,<1.27.0)
71
73
  Requires-Dist: openai (>=1.55.3,<1.56.0)
72
74
  Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
73
75
  Requires-Dist: opentelemetry-api (>=1.16.0,<1.17.0)
@@ -88,8 +90,8 @@ Requires-Dist: pycountry (>=22.3.5,<23.0.0)
88
90
  Requires-Dist: pydantic (>=2.0,<3.0)
89
91
  Requires-Dist: pydot (>=1.4,<1.5)
90
92
  Requires-Dist: pykwalify (>=1.8,<1.9)
91
- Requires-Dist: pymilvus (>=2.4.0,<2.4.2)
92
- Requires-Dist: pymongo[srv,tls] (>=4.6.3,<4.7)
93
+ Requires-Dist: pymilvus (<2.4.2)
94
+ Requires-Dist: pymongo (>=4.10.1,<4.11.0)
93
95
  Requires-Dist: pypred (>=0.4.0,<0.5.0)
94
96
  Requires-Dist: python-dateutil (>=2.8.2,<2.9.0)
95
97
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
@@ -101,7 +103,7 @@ Requires-Dist: pyyaml (>=6.0)
101
103
  Requires-Dist: qdrant-client (>=1.9.0,<2.0.0)
102
104
  Requires-Dist: questionary (>=1.10.0,<2.1.0)
103
105
  Requires-Dist: randomname (>=0.2.1,<0.3.0)
104
- Requires-Dist: rasa-sdk (>=3.10.0,<3.11.0)
106
+ Requires-Dist: rasa-sdk (==3.11.0)
105
107
  Requires-Dist: redis (>=4.6.0,<6.0)
106
108
  Requires-Dist: regex (>=2022.10.31,<2022.11)
107
109
  Requires-Dist: requests (>=2.31.0,<2.32.0)
@@ -113,14 +115,14 @@ Requires-Dist: sanic (>=22.12,<22.13)
113
115
  Requires-Dist: sanic-cors (>=2.2.0,<2.3.0)
114
116
  Requires-Dist: sanic-jwt (>=1.8.0,<2.0.0)
115
117
  Requires-Dist: sanic-routing (>=22.8.0,<23.0.0)
116
- Requires-Dist: scikit-learn (>=1.1.3,<1.2) ; python_version >= "3.9" and python_version < "3.11"
117
- Requires-Dist: scipy (>=1.10.1,<1.11.0) ; python_version >= "3.9" and python_version < "3.11"
118
+ Requires-Dist: scikit-learn (>=1.5.1,<1.6.0)
119
+ Requires-Dist: scipy (>=1.13.1,<1.14.0)
118
120
  Requires-Dist: sentencepiece[sentencepiece] (>=0.1.99,<0.2.0) ; extra == "transformers" or extra == "full"
119
121
  Requires-Dist: sentry-sdk (>=1.14.0,<1.15.0)
120
122
  Requires-Dist: setuptools (>=70.0.0,<70.1.0)
121
123
  Requires-Dist: sklearn-crfsuite (>=0.3.6,<0.4.0)
122
124
  Requires-Dist: skops (>=0.10.0,<0.11.0)
123
- Requires-Dist: slack-sdk (>=3.27.1,<4.0.0)
125
+ Requires-Dist: slack-sdk (>=3.27.1,<3.28.0)
124
126
  Requires-Dist: spacy (>=3.5.4,<4.0.0) ; extra == "spacy" or extra == "full"
125
127
  Requires-Dist: structlog (>=23.1.0,<23.2.0)
126
128
  Requires-Dist: structlog-sentry (>=2.0.3,<3.0.0)