rasa-pro 3.12.21__py3-none-any.whl → 3.13.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 (354) hide show
  1. rasa/__main__.py +3 -4
  2. rasa/api.py +1 -1
  3. rasa/cli/dialogue_understanding_test.py +1 -1
  4. rasa/cli/e2e_test.py +1 -8
  5. rasa/cli/evaluate.py +2 -2
  6. rasa/cli/export.py +5 -3
  7. rasa/cli/inspect.py +7 -0
  8. rasa/cli/llm_fine_tuning.py +1 -1
  9. rasa/cli/project_templates/default/config.yml +5 -32
  10. rasa/cli/project_templates/{calm → default}/e2e_tests/cancelations/user_cancels_during_a_correction.yml +1 -1
  11. rasa/cli/project_templates/{calm → default}/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +1 -1
  12. rasa/cli/project_templates/{calm → default}/e2e_tests/corrections/user_corrects_contact_handle.yml +1 -1
  13. rasa/cli/project_templates/{calm → default}/e2e_tests/corrections/user_corrects_contact_name.yml +1 -1
  14. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +1 -1
  15. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_lists_contacts.yml +1 -1
  16. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_removes_contact.yml +1 -1
  17. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_removes_contact_from_list.yml +1 -1
  18. rasa/cli/project_templates/default/endpoints.yml +18 -2
  19. rasa/cli/project_templates/defaults.py +133 -0
  20. rasa/cli/project_templates/tutorial/config.yml +1 -1
  21. rasa/cli/project_templates/tutorial/endpoints.yml +1 -1
  22. rasa/cli/run.py +1 -1
  23. rasa/cli/scaffold.py +2 -3
  24. rasa/cli/shell.py +6 -1
  25. rasa/cli/studio/download.py +0 -22
  26. rasa/cli/studio/link.py +36 -0
  27. rasa/cli/studio/pull.py +79 -0
  28. rasa/cli/studio/push.py +78 -0
  29. rasa/cli/studio/studio.py +12 -0
  30. rasa/cli/studio/train.py +1 -5
  31. rasa/cli/studio/upload.py +6 -4
  32. rasa/cli/train.py +5 -1
  33. rasa/cli/utils.py +1 -1
  34. rasa/cli/x.py +1 -1
  35. rasa/constants.py +2 -0
  36. rasa/core/__init__.py +0 -16
  37. rasa/core/actions/action.py +43 -29
  38. rasa/core/actions/action_repeat_bot_messages.py +18 -22
  39. rasa/core/actions/action_run_slot_rejections.py +1 -2
  40. rasa/core/agent.py +24 -3
  41. rasa/core/available_endpoints.py +146 -0
  42. rasa/core/brokers/kafka.py +4 -0
  43. rasa/core/brokers/pika.py +5 -2
  44. rasa/core/brokers/sql.py +1 -1
  45. rasa/core/channels/__init__.py +3 -0
  46. rasa/core/channels/botframework.py +2 -2
  47. rasa/core/channels/channel.py +2 -2
  48. rasa/core/channels/development_inspector.py +1 -1
  49. rasa/core/channels/facebook.py +1 -4
  50. rasa/core/channels/hangouts.py +8 -5
  51. rasa/core/channels/inspector/.eslintrc.cjs +12 -6
  52. rasa/core/channels/inspector/.prettierrc +5 -0
  53. rasa/core/channels/inspector/README.md +11 -5
  54. rasa/core/channels/inspector/dist/assets/{arc-9f75cc3b.js → arc-371401b1.js} +1 -1
  55. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-7f34db23.js → blockDiagram-38ab4fdb-3f126156.js} +1 -1
  56. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-948bab2c.js → c4Diagram-3d4e48cf-12f22eb7.js} +1 -1
  57. rasa/core/channels/inspector/dist/assets/channel-f1efda17.js +1 -0
  58. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-53b0dd0e.js → classDiagram-70f12bd4-03b1d386.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-fdf789e7.js → classDiagram-v2-f2320105-84f69d63.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/clone-fdf164e2.js +1 -0
  61. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-87c4ece5.js → createText-2e5e7dd3-ca47fd38.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-5a8b0749.js → edges-e0da2a9e-f837ca8a.js} +1 -1
  63. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-66da90e2.js → erDiagram-9861fffd-8717ac54.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-10044f05.js → flowDb-956e92f1-94f38b83.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-f338f66a.js → flowDiagram-66a62f08-b616f9fb.js} +1 -1
  66. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-7d7a1629.js +1 -0
  67. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-b13140aa.js → flowchart-elk-definition-4a651766-f5d24bb8.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-f2b4a55a.js → ganttDiagram-c361ad54-b43ba8d9.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-dedc298d.js → gitGraphDiagram-72cf32ee-c3aafaa5.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{graph-4ede11ff.js → graph-0d0a2c10.js} +1 -1
  71. rasa/core/channels/inspector/dist/assets/{index-3862675e-65549d37.js → index-3862675e-58ea0305.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{index-3a23e736.js → index-cce6f8a1.js} +123 -123
  73. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-65439671.js → infoDiagram-f8f76790-b8f60461.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-56d03d98.js → journeyDiagram-49397b02-95be5545.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{layout-dd48f7f4.js → layout-da885b9b.js} +1 -1
  76. rasa/core/channels/inspector/dist/assets/{line-1569ad2c.js → line-f1c817d3.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{linear-48bf4935.js → linear-d42801e6.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-688504c1.js → mindmap-definition-fc14e90a-a38923a6.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-78b6d7e6.js → pieDiagram-8a3498a8-ca6e71e9.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-048b84b3.js → quadrantDiagram-120e2f19-b290dae9.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-dd67f107.js → requirementDiagram-deff3bca-03f02ceb.js} +1 -1
  82. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-8128436e.js → sankeyDiagram-04a897e0-c49eee40.js} +1 -1
  83. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-1a0d1461.js → sequenceDiagram-704730f1-b2cd6a3d.js} +1 -1
  84. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-46d388ed.js → stateDiagram-587899a1-e53a2028.js} +1 -1
  85. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-ea42951a.js → stateDiagram-v2-d93cdb3a-e1982a03.js} +1 -1
  86. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-7427ed0c.js → styles-6aaf32cf-d0226ca5.js} +1 -1
  87. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-ff5e5a16.js → styles-9a916d00-0e21dc00.js} +1 -1
  88. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-7b3680cf.js → styles-c10674c1-9588494e.js} +1 -1
  89. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-f860f2ad.js → svgDrawCommon-08f97a94-be478d4f.js} +1 -1
  90. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-2eebf0c8.js → timeline-definition-85554ec2-74631749.js} +1 -1
  91. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-5d7f4e96.js → xychartDiagram-e933f94c-a043552f.js} +1 -1
  92. rasa/core/channels/inspector/dist/index.html +1 -1
  93. rasa/core/channels/inspector/package.json +3 -1
  94. rasa/core/channels/inspector/src/App.tsx +91 -90
  95. rasa/core/channels/inspector/src/components/Chat.tsx +45 -41
  96. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +40 -40
  97. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +57 -57
  98. rasa/core/channels/inspector/src/components/DialogueStack.tsx +36 -27
  99. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +4 -4
  100. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +7 -7
  101. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +28 -12
  102. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +9 -9
  103. rasa/core/channels/inspector/src/components/RasaLogo.tsx +5 -5
  104. rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +55 -60
  105. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +5 -5
  106. rasa/core/channels/inspector/src/components/Slots.tsx +22 -22
  107. rasa/core/channels/inspector/src/components/Welcome.tsx +28 -31
  108. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +245 -0
  109. rasa/core/channels/inspector/src/helpers/audio/microphone-processor.js +12 -0
  110. rasa/core/channels/inspector/src/helpers/audio/playback-processor.js +36 -0
  111. rasa/core/channels/inspector/src/helpers/conversation.ts +7 -7
  112. rasa/core/channels/inspector/src/helpers/formatters.test.ts +181 -181
  113. rasa/core/channels/inspector/src/helpers/formatters.ts +111 -111
  114. rasa/core/channels/inspector/src/helpers/utils.ts +78 -61
  115. rasa/core/channels/inspector/src/main.tsx +8 -8
  116. rasa/core/channels/inspector/src/theme/Button/Button.ts +8 -8
  117. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +7 -7
  118. rasa/core/channels/inspector/src/theme/Input/Input.ts +9 -9
  119. rasa/core/channels/inspector/src/theme/Link/Link.ts +6 -6
  120. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +13 -13
  121. rasa/core/channels/inspector/src/theme/Table/Table.tsx +10 -10
  122. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +5 -5
  123. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +7 -7
  124. rasa/core/channels/inspector/src/theme/base/colors.ts +64 -64
  125. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +21 -18
  126. rasa/core/channels/inspector/src/theme/base/radii.ts +8 -8
  127. rasa/core/channels/inspector/src/theme/base/shadows.ts +5 -5
  128. rasa/core/channels/inspector/src/theme/base/sizes.ts +5 -5
  129. rasa/core/channels/inspector/src/theme/base/space.ts +12 -12
  130. rasa/core/channels/inspector/src/theme/base/styles.ts +5 -5
  131. rasa/core/channels/inspector/src/theme/base/typography.ts +12 -12
  132. rasa/core/channels/inspector/src/theme/base/zIndices.ts +3 -3
  133. rasa/core/channels/inspector/src/theme/index.ts +38 -38
  134. rasa/core/channels/inspector/src/types.ts +56 -50
  135. rasa/core/channels/inspector/yarn.lock +5 -0
  136. rasa/core/channels/mattermost.py +1 -1
  137. rasa/core/channels/rasa_chat.py +2 -4
  138. rasa/core/channels/rest.py +5 -4
  139. rasa/core/channels/socketio.py +56 -41
  140. rasa/core/channels/studio_chat.py +329 -68
  141. rasa/core/channels/vier_cvg.py +1 -2
  142. rasa/core/channels/voice_ready/audiocodes.py +4 -11
  143. rasa/core/channels/voice_ready/jambonz.py +5 -6
  144. rasa/core/channels/voice_ready/twilio_voice.py +13 -12
  145. rasa/core/channels/voice_ready/utils.py +22 -0
  146. rasa/core/channels/voice_stream/audiocodes.py +13 -16
  147. rasa/core/channels/voice_stream/browser_audio.py +1 -1
  148. rasa/core/channels/voice_stream/genesys.py +37 -18
  149. rasa/core/channels/voice_stream/jambonz.py +232 -0
  150. rasa/core/channels/voice_stream/tts/__init__.py +8 -0
  151. rasa/core/channels/voice_stream/twilio_media_streams.py +15 -12
  152. rasa/core/channels/voice_stream/voice_channel.py +71 -27
  153. rasa/core/concurrent_lock_store.py +24 -10
  154. rasa/core/evaluation/marker_tracker_loader.py +1 -1
  155. rasa/core/exporter.py +37 -1
  156. rasa/core/http_interpreter.py +3 -7
  157. rasa/core/information_retrieval/faiss.py +18 -11
  158. rasa/core/information_retrieval/ingestion/faq_parser.py +158 -0
  159. rasa/core/jobs.py +2 -1
  160. rasa/core/lock_store.py +151 -60
  161. rasa/core/nlg/contextual_response_rephraser.py +17 -7
  162. rasa/core/nlg/generator.py +5 -22
  163. rasa/core/nlg/interpolator.py +2 -3
  164. rasa/core/nlg/response.py +6 -43
  165. rasa/core/nlg/summarize.py +1 -1
  166. rasa/core/nlg/translate.py +0 -8
  167. rasa/core/policies/enterprise_search_policy.py +305 -189
  168. rasa/core/policies/enterprise_search_policy_config.py +241 -0
  169. rasa/core/policies/enterprise_search_prompt_with_relevancy_check_and_citation_template.jinja2 +67 -0
  170. rasa/core/policies/flow_policy.py +1 -1
  171. rasa/core/policies/flows/flow_executor.py +102 -17
  172. rasa/core/policies/intentless_policy.py +56 -17
  173. rasa/core/processor.py +70 -49
  174. rasa/core/run.py +33 -11
  175. rasa/core/tracker_stores/__init__.py +0 -0
  176. rasa/core/{auth_retry_tracker_store.py → tracker_stores/auth_retry_tracker_store.py} +66 -1
  177. rasa/core/tracker_stores/dynamo_tracker_store.py +256 -0
  178. rasa/core/tracker_stores/mongo_tracker_store.py +223 -0
  179. rasa/core/tracker_stores/redis_tracker_store.py +252 -0
  180. rasa/core/tracker_stores/sql_tracker_store.py +582 -0
  181. rasa/core/tracker_stores/tracker_store.py +839 -0
  182. rasa/core/training/interactive.py +1 -1
  183. rasa/core/utils.py +24 -95
  184. rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -1
  185. rasa/dialogue_understanding/coexistence/llm_based_router.py +13 -11
  186. rasa/dialogue_understanding/commands/can_not_handle_command.py +2 -0
  187. rasa/dialogue_understanding/commands/cancel_flow_command.py +3 -1
  188. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +2 -0
  189. rasa/dialogue_understanding/commands/clarify_command.py +6 -2
  190. rasa/dialogue_understanding/commands/command_syntax_manager.py +1 -0
  191. rasa/dialogue_understanding/commands/correct_slots_command.py +5 -6
  192. rasa/dialogue_understanding/commands/error_command.py +1 -1
  193. rasa/dialogue_understanding/commands/human_handoff_command.py +3 -3
  194. rasa/dialogue_understanding/commands/knowledge_answer_command.py +2 -0
  195. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +2 -0
  196. rasa/dialogue_understanding/commands/set_slot_command.py +8 -4
  197. rasa/dialogue_understanding/commands/skip_question_command.py +3 -3
  198. rasa/dialogue_understanding/commands/start_flow_command.py +7 -3
  199. rasa/dialogue_understanding/generator/__init__.py +7 -1
  200. rasa/dialogue_understanding/generator/command_generator.py +4 -2
  201. rasa/dialogue_understanding/generator/command_parser.py +2 -2
  202. rasa/dialogue_understanding/generator/command_parser_validator.py +63 -0
  203. rasa/dialogue_understanding/generator/llm_based_command_generator.py +1 -2
  204. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +3 -2
  205. rasa/dialogue_understanding/generator/nlu_command_adapter.py +2 -2
  206. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_template.jinja2 +0 -2
  207. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +1 -0
  208. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +1 -0
  209. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +79 -0
  210. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +79 -0
  211. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +26 -461
  212. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +147 -0
  213. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +461 -0
  214. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +20 -64
  215. rasa/dialogue_understanding/patterns/cancel.py +1 -2
  216. rasa/dialogue_understanding/patterns/clarify.py +1 -1
  217. rasa/dialogue_understanding/patterns/correction.py +2 -2
  218. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +42 -27
  219. rasa/dialogue_understanding/patterns/domain_for_patterns.py +190 -0
  220. rasa/dialogue_understanding/processor/command_processor.py +6 -7
  221. rasa/dialogue_understanding_test/command_metric_calculation.py +7 -40
  222. rasa/dialogue_understanding_test/command_metrics.py +38 -0
  223. rasa/dialogue_understanding_test/du_test_case.py +58 -25
  224. rasa/dialogue_understanding_test/du_test_result.py +228 -132
  225. rasa/dialogue_understanding_test/du_test_runner.py +11 -2
  226. rasa/dialogue_understanding_test/du_test_schema.yml +3 -3
  227. rasa/dialogue_understanding_test/io.py +35 -8
  228. rasa/e2e_test/constants.py +1 -1
  229. rasa/e2e_test/e2e_test_runner.py +1 -1
  230. rasa/e2e_test/e2e_test_schema.yml +3 -3
  231. rasa/engine/constants.py +1 -1
  232. rasa/engine/graph.py +2 -2
  233. rasa/engine/recipes/default_recipe.py +1 -1
  234. rasa/engine/validation.py +3 -2
  235. rasa/hooks.py +2 -30
  236. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +2 -6
  237. rasa/model_manager/model_api.py +89 -1
  238. rasa/model_manager/runner_service.py +20 -4
  239. rasa/model_manager/socket_bridge.py +0 -7
  240. rasa/model_manager/trainer_service.py +10 -4
  241. rasa/plugin.py +2 -15
  242. rasa/privacy/__init__.py +0 -0
  243. rasa/privacy/constants.py +83 -0
  244. rasa/privacy/event_broker_utils.py +77 -0
  245. rasa/privacy/privacy_config.py +281 -0
  246. rasa/privacy/privacy_config_schema.json +86 -0
  247. rasa/privacy/privacy_filter.py +393 -0
  248. rasa/privacy/privacy_manager.py +594 -0
  249. rasa/server.py +23 -2
  250. rasa/shared/constants.py +17 -0
  251. rasa/shared/core/command_payload_reader.py +1 -5
  252. rasa/shared/core/constants.py +4 -3
  253. rasa/shared/core/domain.py +172 -11
  254. rasa/shared/core/events.py +100 -6
  255. rasa/shared/core/flows/flow.py +30 -5
  256. rasa/shared/core/flows/flow_step.py +19 -3
  257. rasa/shared/core/flows/flow_step_links.py +15 -0
  258. rasa/shared/core/flows/flow_step_sequence.py +6 -0
  259. rasa/shared/core/flows/flows_yaml_schema.json +3 -0
  260. rasa/shared/core/flows/nlu_trigger.py +13 -0
  261. rasa/shared/core/flows/steps/action.py +7 -4
  262. rasa/shared/core/flows/steps/call.py +11 -4
  263. rasa/shared/core/flows/steps/collect.py +71 -6
  264. rasa/shared/core/flows/steps/internal.py +6 -1
  265. rasa/shared/core/flows/steps/link.py +7 -4
  266. rasa/shared/core/flows/steps/no_operation.py +7 -4
  267. rasa/shared/core/flows/steps/set_slots.py +8 -4
  268. rasa/shared/core/flows/validation.py +25 -5
  269. rasa/shared/core/flows/yaml_flows_io.py +106 -5
  270. rasa/shared/core/slots.py +29 -1
  271. rasa/shared/core/trackers.py +21 -10
  272. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +1 -4
  273. rasa/shared/importers/importer.py +8 -0
  274. rasa/shared/providers/_configs/azure_openai_client_config.py +2 -2
  275. rasa/shared/providers/_configs/default_litellm_client_config.py +1 -1
  276. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +1 -1
  277. rasa/shared/providers/_configs/openai_client_config.py +1 -1
  278. rasa/shared/providers/_configs/rasa_llm_client_config.py +1 -1
  279. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -1
  280. rasa/shared/providers/_configs/utils.py +0 -99
  281. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -2
  282. rasa/shared/utils/common.py +43 -1
  283. rasa/shared/utils/configs.py +110 -0
  284. rasa/shared/utils/constants.py +0 -3
  285. rasa/shared/utils/llm.py +245 -8
  286. rasa/shared/utils/pykwalify_extensions.py +0 -9
  287. rasa/shared/utils/yaml.py +32 -0
  288. rasa/studio/constants.py +1 -0
  289. rasa/studio/data_handler.py +33 -12
  290. rasa/studio/download.py +117 -435
  291. rasa/studio/link.py +211 -0
  292. rasa/studio/prompts.py +221 -0
  293. rasa/studio/pull/__init__.py +0 -0
  294. rasa/studio/pull/data.py +222 -0
  295. rasa/studio/pull/domains.py +60 -0
  296. rasa/studio/pull/pull.py +239 -0
  297. rasa/studio/push.py +138 -0
  298. rasa/studio/results_logger.py +6 -1
  299. rasa/studio/train.py +1 -1
  300. rasa/studio/upload.py +243 -72
  301. rasa/studio/utils.py +33 -0
  302. rasa/telemetry.py +83 -26
  303. rasa/tracing/config.py +4 -5
  304. rasa/tracing/constants.py +19 -1
  305. rasa/tracing/instrumentation/attribute_extractors.py +68 -16
  306. rasa/tracing/instrumentation/instrumentation.py +54 -3
  307. rasa/tracing/instrumentation/metrics.py +98 -15
  308. rasa/tracing/metric_instrument_provider.py +75 -3
  309. rasa/utils/common.py +43 -22
  310. rasa/utils/endpoints.py +22 -1
  311. rasa/utils/licensing.py +2 -3
  312. rasa/utils/log_utils.py +1 -45
  313. rasa/validator.py +2 -8
  314. rasa/version.py +1 -1
  315. {rasa_pro-3.12.21.dist-info → rasa_pro-3.13.0.dist-info}/METADATA +13 -14
  316. {rasa_pro-3.12.21.dist-info → rasa_pro-3.13.0.dist-info}/RECORD +333 -309
  317. rasa/anonymization/__init__.py +0 -2
  318. rasa/anonymization/anonymisation_rule_yaml_reader.py +0 -91
  319. rasa/anonymization/anonymization_pipeline.py +0 -286
  320. rasa/anonymization/anonymization_rule_executor.py +0 -266
  321. rasa/anonymization/anonymization_rule_orchestrator.py +0 -119
  322. rasa/anonymization/schemas/config.yml +0 -47
  323. rasa/anonymization/utils.py +0 -118
  324. rasa/cli/project_templates/calm/config.yml +0 -10
  325. rasa/cli/project_templates/calm/credentials.yml +0 -33
  326. rasa/cli/project_templates/calm/endpoints.yml +0 -58
  327. rasa/cli/project_templates/default/actions/actions.py +0 -27
  328. rasa/cli/project_templates/default/data/nlu.yml +0 -91
  329. rasa/cli/project_templates/default/data/rules.yml +0 -13
  330. rasa/cli/project_templates/default/data/stories.yml +0 -30
  331. rasa/cli/project_templates/default/domain.yml +0 -34
  332. rasa/cli/project_templates/default/tests/test_stories.yml +0 -91
  333. rasa/core/channels/inspector/dist/assets/channel-dfa68278.js +0 -1
  334. rasa/core/channels/inspector/dist/assets/clone-edb7f119.js +0 -1
  335. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-65e7c670.js +0 -1
  336. rasa/core/channels/inspector/src/helpers/audiostream.ts +0 -191
  337. rasa/core/tracker_store.py +0 -1792
  338. /rasa/cli/project_templates/{calm → default}/actions/action_template.py +0 -0
  339. /rasa/cli/project_templates/{calm → default}/actions/add_contact.py +0 -0
  340. /rasa/cli/project_templates/{calm → default}/actions/db.py +0 -0
  341. /rasa/cli/project_templates/{calm → default}/actions/list_contacts.py +0 -0
  342. /rasa/cli/project_templates/{calm → default}/actions/remove_contact.py +0 -0
  343. /rasa/cli/project_templates/{calm → default}/data/flows/add_contact.yml +0 -0
  344. /rasa/cli/project_templates/{calm → default}/data/flows/list_contacts.yml +0 -0
  345. /rasa/cli/project_templates/{calm → default}/data/flows/remove_contact.yml +0 -0
  346. /rasa/cli/project_templates/{calm → default}/db/contacts.json +0 -0
  347. /rasa/cli/project_templates/{calm → default}/domain/add_contact.yml +0 -0
  348. /rasa/cli/project_templates/{calm → default}/domain/list_contacts.yml +0 -0
  349. /rasa/cli/project_templates/{calm → default}/domain/remove_contact.yml +0 -0
  350. /rasa/cli/project_templates/{calm → default}/domain/shared.yml +0 -0
  351. /rasa/{cli/project_templates/calm/actions → core/information_retrieval/ingestion}/__init__.py +0 -0
  352. {rasa_pro-3.12.21.dist-info → rasa_pro-3.13.0.dist-info}/NOTICE +0 -0
  353. {rasa_pro-3.12.21.dist-info → rasa_pro-3.13.0.dist-info}/WHEEL +0 -0
  354. {rasa_pro-3.12.21.dist-info → rasa_pro-3.13.0.dist-info}/entry_points.txt +0 -0
rasa/__main__.py CHANGED
@@ -9,6 +9,7 @@ from rasa_sdk import __version__ as rasa_sdk_version
9
9
 
10
10
  import rasa.telemetry
11
11
  import rasa.utils.io
12
+ import rasa.utils.licensing
12
13
  import rasa.utils.tensorflow.environment as tf_env
13
14
  from rasa import version
14
15
  from rasa.cli import (
@@ -105,11 +106,12 @@ def main(raw_arguments: Optional[List[str]] = None) -> None:
105
106
  raw_arguments: Arguments to parse. If not provided,
106
107
  arguments will be taken from the command line.
107
108
  """
109
+ rasa.utils.licensing.validate_license_from_env()
110
+
108
111
  warn_if_rasa_plus_package_installed()
109
112
  parse_last_positional_argument_as_model_path()
110
113
  arg_parser = create_argument_parser()
111
114
  cmdline_arguments = arg_parser.parse_args(raw_arguments)
112
-
113
115
  log_level = getattr(cmdline_arguments, "loglevel", None)
114
116
  logging_config_file = getattr(cmdline_arguments, "logging_config_file", None)
115
117
  configure_logging_and_warnings(
@@ -141,9 +143,6 @@ def main(raw_arguments: Optional[List[str]] = None) -> None:
141
143
  if not is_studio_command:
142
144
  plugin_manager().hook.init_telemetry(endpoints_file=endpoints_file)
143
145
  plugin_manager().hook.init_managers(endpoints_file=endpoints_file)
144
- plugin_manager().hook.init_anonymization_pipeline(
145
- endpoints_file=endpoints_file
146
- )
147
146
 
148
147
  cmdline_arguments.func(cmdline_arguments)
149
148
  elif hasattr(cmdline_arguments, "version"):
rasa/api.py CHANGED
@@ -38,7 +38,7 @@ def run(
38
38
  """
39
39
  import rasa.core.run
40
40
  import rasa.shared.utils.common
41
- from rasa.core.utils import AvailableEndpoints
41
+ from rasa.core.available_endpoints import AvailableEndpoints
42
42
  from rasa.shared.constants import DOCS_BASE_URL
43
43
  from rasa.shared.utils.cli import print_warning
44
44
 
@@ -16,9 +16,9 @@ from rasa.cli.arguments.default_arguments import (
16
16
  add_remote_storage_param,
17
17
  )
18
18
  from rasa.core.agent import Agent
19
+ from rasa.core.available_endpoints import AvailableEndpoints
19
20
  from rasa.core.exceptions import AgentNotReady
20
21
  from rasa.core.processor import MessageProcessor
21
- from rasa.core.utils import AvailableEndpoints
22
22
  from rasa.dialogue_understanding.commands import Command
23
23
  from rasa.dialogue_understanding.generator import LLMBasedCommandGenerator
24
24
  from rasa.dialogue_understanding.generator.command_parser import DEFAULT_COMMANDS
rasa/cli/e2e_test.py CHANGED
@@ -18,8 +18,8 @@ from rasa.cli.arguments.default_arguments import (
18
18
  add_model_param,
19
19
  add_remote_storage_param,
20
20
  )
21
+ from rasa.core.available_endpoints import AvailableEndpoints
21
22
  from rasa.core.exceptions import AgentNotReady
22
- from rasa.core.utils import AvailableEndpoints
23
23
  from rasa.e2e_test.aggregate_test_stats_calculator import (
24
24
  AggregateTestStatsCalculator,
25
25
  )
@@ -51,7 +51,6 @@ from rasa.e2e_test.utils.io import (
51
51
  from rasa.e2e_test.utils.validation import validate_model_path
52
52
  from rasa.exceptions import RasaException
53
53
  from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH, DEFAULT_MODELS_PATH
54
- from rasa.utils.beta import ensure_beta_feature_is_enabled
55
54
  from rasa.utils.endpoints import EndpointConfig
56
55
 
57
56
  RASA_PRO_BETA_FINE_TUNING_RECIPE_ENV_VAR_NAME = "RASA_PRO_BETA_FINE_TUNING_RECIPE"
@@ -155,12 +154,6 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
155
154
  Args:
156
155
  args: Commandline arguments.
157
156
  """
158
- if args.coverage_report:
159
- ensure_beta_feature_is_enabled(
160
- "LLM fine-tuning recipe",
161
- env_flag=RASA_PRO_BETA_FINE_TUNING_RECIPE_ENV_VAR_NAME,
162
- )
163
-
164
157
  args.endpoints = rasa.cli.utils.get_validated_path(
165
158
  args.endpoints, "endpoints", DEFAULT_ENDPOINTS_PATH, True
166
159
  )
rasa/cli/evaluate.py CHANGED
@@ -6,10 +6,10 @@ import rasa.cli.arguments.evaluate as arguments
6
6
  import rasa.shared.utils.cli
7
7
  from rasa import telemetry
8
8
  from rasa.cli import SubParsersAction
9
+ from rasa.core.available_endpoints import AvailableEndpoints
9
10
  from rasa.core.evaluation.marker_base import Marker, OperatorMarker
10
11
  from rasa.core.evaluation.marker_tracker_loader import MarkerTrackerLoader
11
- from rasa.core.tracker_store import TrackerStore
12
- from rasa.core.utils import AvailableEndpoints
12
+ from rasa.core.tracker_stores.tracker_store import TrackerStore
13
13
  from rasa.shared.core.domain import Domain
14
14
 
15
15
  STATS_OVERALL_SUFFIX = "-overall.csv"
rasa/cli/export.py CHANGED
@@ -16,10 +16,10 @@ from rasa.shared.constants import DOCS_URL_EVENT_BROKERS, DOCS_URL_TRACKER_STORE
16
16
  from rasa.shared.exceptions import RasaException
17
17
 
18
18
  if typing.TYPE_CHECKING:
19
+ from rasa.core.available_endpoints import AvailableEndpoints
19
20
  from rasa.core.brokers.broker import EventBroker
20
21
  from rasa.core.exporter import Exporter
21
- from rasa.core.tracker_store import TrackerStore
22
- from rasa.core.utils import AvailableEndpoints
22
+ from rasa.core.tracker_stores.tracker_store import TrackerStore
23
23
 
24
24
  logger = logging.getLogger(__name__)
25
25
 
@@ -67,7 +67,7 @@ def _get_tracker_store(endpoints: "AvailableEndpoints") -> "TrackerStore":
67
67
  f"Exiting. "
68
68
  )
69
69
 
70
- from rasa.core.tracker_store import TrackerStore
70
+ from rasa.core.tracker_stores.tracker_store import TrackerStore
71
71
 
72
72
  return TrackerStore.create(endpoints.tracker_store)
73
73
 
@@ -184,6 +184,7 @@ async def _export_trackers(args: argparse.Namespace) -> None:
184
184
  event_broker = await _get_event_broker(endpoints)
185
185
  _prepare_event_broker(event_broker)
186
186
  requested_conversation_ids = _get_requested_conversation_ids(args.conversation_ids)
187
+ is_pii_enabled = True if endpoints.privacy else False
187
188
 
188
189
  from rasa.core.exporter import Exporter
189
190
 
@@ -191,6 +192,7 @@ async def _export_trackers(args: argparse.Namespace) -> None:
191
192
  tracker_store,
192
193
  event_broker,
193
194
  args.endpoints,
195
+ is_pii_enabled,
194
196
  requested_conversation_ids,
195
197
  args.minimum_timestamp,
196
198
  args.maximum_timestamp,
rasa/cli/inspect.py CHANGED
@@ -9,6 +9,7 @@ from rasa import telemetry
9
9
  from rasa.cli import SubParsersAction
10
10
  from rasa.cli.arguments import shell as arguments
11
11
  from rasa.core import constants
12
+ from rasa.core.available_endpoints import AvailableEndpoints
12
13
  from rasa.engine.storage.local_model_storage import LocalModelStorage
13
14
  from rasa.exceptions import ModelNotFound
14
15
  from rasa.model import get_local_model
@@ -83,6 +84,12 @@ def inspect(args: argparse.Namespace) -> None:
83
84
 
84
85
  model = get_validated_path(args.model, "model", DEFAULT_MODELS_PATH)
85
86
 
87
+ # Load endpoints with proper endpoint file location
88
+ # This will initialise the endpoints singleton properly so that
89
+ # it can be used safely throughout the codebase with
90
+ # `AvailableEndpoints.get_instance()`
91
+ AvailableEndpoints.get_instance(args.endpoints)
92
+
86
93
  try:
87
94
  model = get_local_model(model)
88
95
  except ModelNotFound:
@@ -20,8 +20,8 @@ from rasa.cli.e2e_test import (
20
20
  read_test_cases,
21
21
  validate_model_path,
22
22
  )
23
+ from rasa.core.available_endpoints import AvailableEndpoints
23
24
  from rasa.core.exceptions import AgentNotReady
24
- from rasa.core.utils import AvailableEndpoints
25
25
  from rasa.dialogue_understanding.generator.llm_based_command_generator import (
26
26
  LLMBasedCommandGenerator,
27
27
  )
@@ -1,44 +1,17 @@
1
1
  # The config recipe.
2
- # https://rasa.com/docs/rasa-pro/nlu-based-assistants/model-configuration/
3
2
  recipe: default.v1
4
3
 
5
4
  # The assistant project unique identifier
6
5
  # This default value must be replaced with a unique assistant name within your deployment
7
6
  assistant_id: placeholder_default
8
7
 
9
- # Configuration for Rasa NLU.
10
- # https://rasa.com/docs/rasa-pro/nlu-based-assistants/components/
11
8
  language: en
12
-
13
9
  pipeline:
14
- # # No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model.
15
- # # If you'd like to customize it, uncomment and adjust the pipeline.
16
- # # See https://rasa.com/docs/rasa-pro/nlu-based-assistants/tuning-your-model for more information.
17
- # - name: WhitespaceTokenizer
18
- # - name: RegexFeaturizer
19
- # - name: LexicalSyntacticFeaturizer
20
- # - name: CountVectorsFeaturizer
21
- # - name: CountVectorsFeaturizer
22
- # analyzer: char_wb
23
- # min_ngram: 1
24
- # max_ngram: 4
25
- # - name: DIETClassifier
26
- # epochs: 100
27
- # - name: EntitySynonymMapper
28
- # - name: ResponseSelector
29
- # epochs: 100
30
- # - name: FallbackClassifier
31
- # threshold: 0.3
32
- # ambiguity_threshold: 0.1
10
+ - name: CompactLLMCommandGenerator
11
+ llm:
12
+ model_group: openai-gpt-4o
33
13
 
34
14
  # Configuration for Rasa Core.
35
- # https://rasa.com/docs/rasa-pro/concepts/policies/policy-overview/
36
15
  policies:
37
- # # No configuration for policies was provided. The following default policies were used to train your model.
38
- # # If you'd like to customize them, uncomment and adjust the policies.
39
- # # See https://rasa.com/docs/rasa-pro/concepts/policies/policy-overview/ for more information.
40
- # - name: MemoizationPolicy
41
- # - name: TEDPolicy
42
- # max_history: 5
43
- # epochs: 100
44
- # - name: RulePolicy
16
+ - name: FlowPolicy
17
+ - name: IntentlessPolicy
@@ -13,4 +13,4 @@ test_cases:
13
13
  - utter: utter_corrected_previous_input
14
14
  - utter: utter_ask_add_contact_name
15
15
  - user: I changed my mind, stop.
16
- - utter: utter_flow_cancelled_rasa
16
+ - utter: utter_flow_cancelled_rasa
@@ -4,4 +4,4 @@ test_cases:
4
4
  - user: I want to add contact
5
5
  - utter: utter_ask_add_contact_handle
6
6
  - user: Stop
7
- - utter: utter_flow_cancelled_rasa
7
+ - utter: utter_flow_cancelled_rasa
@@ -17,4 +17,4 @@ test_cases:
17
17
  - add_contact_name: "Barbar"
18
18
  - utter: utter_ask_add_contact_confirmation
19
19
  - user: Yes
20
- - utter: utter_contact_added
20
+ - utter: utter_contact_added
@@ -16,4 +16,4 @@ test_cases:
16
16
  - utter: utter_corrected_previous_input
17
17
  - utter: utter_ask_add_contact_confirmation
18
18
  - user: Yes
19
- - utter: utter_contact_added
19
+ - utter: utter_contact_added
@@ -12,4 +12,4 @@ test_cases:
12
12
  - add_contact_name: Bart
13
13
  - utter: utter_ask_add_contact_confirmation
14
14
  - user: Yes
15
- - utter: utter_contact_added
15
+ - utter: utter_contact_added
@@ -2,4 +2,4 @@ test_cases:
2
2
  - test_case: user lists their contacts
3
3
  steps:
4
4
  - user: Please show me my contacts
5
- - utter: utter_list_contacts
5
+ - utter: utter_list_contacts
@@ -8,4 +8,4 @@ test_cases:
8
8
  - remove_contact_handle: "@MaryLu"
9
9
  - utter: utter_ask_remove_contact_confirmation
10
10
  - user: Yes
11
- - utter: utter_remove_contact_success
11
+ - utter: utter_remove_contact_success
@@ -9,4 +9,4 @@ test_cases:
9
9
  - remove_contact_handle: "@MaryLu"
10
10
  - utter: utter_ask_remove_contact_confirmation
11
11
  - user: yes
12
- - utter: utter_remove_contact_success
12
+ - utter: utter_remove_contact_success
@@ -10,8 +10,8 @@
10
10
  # Server which runs your custom actions.
11
11
  # https://rasa.com/docs/rasa-pro/concepts/custom-actions
12
12
 
13
- #action_endpoint:
14
- # url: "http://localhost:5055/webhook"
13
+ action_endpoint:
14
+ actions_module: "actions"
15
15
 
16
16
  # Tracker store which is used to store the conversations.
17
17
  # By default the conversations are stored in memory.
@@ -40,3 +40,19 @@
40
40
  # username: username
41
41
  # password: password
42
42
  # queue: queue
43
+
44
+ # The lines below activate contextual rephrasing, using the default OpenAI language model.
45
+ # Ensure the OPENAI_API_KEY is set to prevent any missing API key errors.
46
+ # For more details, refer to the documentation:
47
+ # https://rasa.com/docs/rasa-pro/concepts/contextual-response-rephraser
48
+ # To enable the rephraser, remove the comment symbols in the lines below.
49
+ #nlg:
50
+ # type: rephrase
51
+
52
+ model_groups:
53
+ - id: openai-gpt-4o
54
+ models:
55
+ - provider: openai
56
+ model: gpt-4o-2024-11-20
57
+ request_timeout: 7
58
+ max_tokens: 256
@@ -0,0 +1,133 @@
1
+ from __future__ import annotations
2
+
3
+ import tempfile
4
+ from typing import Any, Dict, List, Optional, Text
5
+
6
+ from pydantic import BaseModel, ConfigDict, Field
7
+
8
+ from rasa.dialogue_understanding.patterns.domain_for_patterns import (
9
+ ContextField,
10
+ generate_domain_for_default_patterns,
11
+ )
12
+ from rasa.shared.core.domain import Domain
13
+ from rasa.shared.importers.importer import FlowSyncImporter, TrainingDataImporter
14
+ from rasa.shared.utils.llm import SystemPrompts, get_system_default_prompts
15
+ from rasa.shared.utils.yaml import read_yaml, write_yaml
16
+
17
+
18
+ class Response(BaseModel):
19
+ text: str = Field(..., description="The human-readable response string.")
20
+ metadata: Optional[Dict[str, Any]] = Field(
21
+ None, description="Optional metadata used by Rasa at runtime."
22
+ )
23
+
24
+
25
+ class Slot(BaseModel):
26
+ name: Text = Field(..., description="Name of the slot.")
27
+ type: Text = Field(..., description="Type of the slot.")
28
+ mappings: Optional[List[Dict[str, Any]]] = Field(
29
+ None, description="Mappings for the slot."
30
+ )
31
+ model_config = ConfigDict(extra="allow")
32
+
33
+
34
+ class PatternFlow(BaseModel):
35
+ description: str = Field(..., description="Description of the flow.")
36
+ name: Text = Field(..., description="Name of the flow.")
37
+ steps: List[Any] = Field(..., description="List of steps in the flow.")
38
+ nlu_trigger: Optional[Any] = Field(None, description="NLU trigger for the flow.")
39
+ persisted_slots: Optional[List[Text]] = Field(None, description="Slots to persist.")
40
+
41
+
42
+ class PatternDefaults(BaseModel):
43
+ """Content of `default_flows_for_patterns.yml` after it is loaded from disk."""
44
+
45
+ responses: Dict[Text, List[Response]] = Field(
46
+ default_factory=dict,
47
+ description="Response templates available out-of-the-box.",
48
+ )
49
+ slots: Dict[Text, Slot] = Field(
50
+ default_factory=dict, description="Slot definitions used by the default flows."
51
+ )
52
+ flows: Dict[Text, PatternFlow] = Field(
53
+ default_factory=dict, description="Default flows (conversation patterns)."
54
+ )
55
+
56
+
57
+ class RasaDefaults(PatternDefaults):
58
+ """Full set of defaults that Rasa injects when a project is created."""
59
+
60
+ prompts: SystemPrompts = Field(..., description="Built-in system prompts.")
61
+ actions: List[Text] = Field(..., description="Default actions shipped by Rasa.")
62
+ intents: List[Text] = Field(..., description="Default intents shipped by Rasa.")
63
+ contexts: Dict[Text, ContextField] = Field(
64
+ ..., description="Context fields that can appear on the conversation stack."
65
+ )
66
+
67
+ class Config:
68
+ extra = "forbid"
69
+ validate_assignment = True
70
+
71
+
72
+ def _get_domain_from_importer(config: Dict[Text, Any]) -> Domain:
73
+ """Get the domain from the TrainingDataImporter.
74
+
75
+ Args:
76
+ config: The config.yml file data.
77
+
78
+ Returns:
79
+ A Domain object .
80
+ """
81
+ with tempfile.NamedTemporaryFile("w+", suffix=".yml") as tmp:
82
+ write_yaml(config, tmp.name)
83
+ importer = TrainingDataImporter.load_from_config(
84
+ domain_path=FlowSyncImporter.default_pattern_path(),
85
+ config_path=tmp.name,
86
+ )
87
+ return importer.get_domain()
88
+
89
+
90
+ def get_pattern_defaults(config: Dict[Text, Any]) -> PatternDefaults:
91
+ """Get the default flows, responses and slots for patterns.
92
+
93
+ Args:
94
+ config: The config.yml file data.
95
+
96
+ Returns:
97
+ A PatternDefaults object containing the defaults.
98
+ """
99
+ domain = _get_domain_from_importer(config)
100
+ domain_dict = domain.as_dict()
101
+
102
+ # Make sure all the slots are exported, including the builtin slots
103
+ domain_dict["slots"] = {slot.name: slot.to_dict() for slot in domain.slots}
104
+
105
+ return PatternDefaults(**domain_dict)
106
+
107
+
108
+ def get_rasa_defaults(config_yaml: Text, endpoints_yaml: Text) -> RasaDefaults:
109
+ """Get the default values for a Rasa project.
110
+
111
+ Args:
112
+ config_yaml: The content of the config.yml file.
113
+ endpoints_yaml: The content of the endpoints.yml file.
114
+
115
+ Returns:
116
+ A RasaDefaults object containing the default values for the project.
117
+ """
118
+ config = read_yaml(config_yaml)
119
+ endpoints = read_yaml(endpoints_yaml)
120
+
121
+ prompts = get_system_default_prompts(config, endpoints)
122
+ pattern_domain = generate_domain_for_default_patterns()
123
+ pattern_defaults = get_pattern_defaults(config)
124
+
125
+ return RasaDefaults(
126
+ prompts=prompts,
127
+ actions=pattern_domain.actions,
128
+ intents=pattern_domain.intents,
129
+ contexts=pattern_domain.contexts,
130
+ responses=pattern_defaults.responses,
131
+ slots=pattern_defaults.slots,
132
+ flows=pattern_defaults.flows,
133
+ )
@@ -1,7 +1,7 @@
1
1
  recipe: default.v1
2
2
  language: en
3
3
  pipeline:
4
- - name: SingleStepLLMCommandGenerator
4
+ - name: CompactLLMCommandGenerator
5
5
  llm:
6
6
  model_group: rasa_command_generation_model
7
7
  flow_retrieval:
@@ -51,5 +51,5 @@ model_groups:
51
51
  - id: rasa_command_generation_model
52
52
  models:
53
53
  - provider: rasa
54
- model: rasa/cmd_gen_codellama_13b_calm_demo
54
+ model: rasa/command-generator-llama-3.1-8b-instruct
55
55
  api_base: "https://tutorial-llm.rasa.ai"
rasa/cli/run.py CHANGED
@@ -109,7 +109,7 @@ def run(args: argparse.Namespace) -> None:
109
109
  # configured
110
110
 
111
111
  import rasa.model
112
- from rasa.core.utils import AvailableEndpoints
112
+ from rasa.core.available_endpoints import AvailableEndpoints
113
113
 
114
114
  # start server if remote storage is configured
115
115
  if args.remote_storage is not None:
rasa/cli/scaffold.py CHANGED
@@ -20,18 +20,17 @@ from rasa.shared.utils.cli import print_error_and_exit, print_success
20
20
 
21
21
 
22
22
  class ProjectTemplateName(Enum):
23
- """Enum of the different project templates."""
23
+ """Enum of CALM project templates."""
24
24
 
25
25
  DEFAULT = "default"
26
26
  TUTORIAL = "tutorial"
27
- CALM = "calm"
28
27
 
29
28
  def __str__(self) -> str:
30
29
  return self.value
31
30
 
32
31
 
33
32
  template_domain_path = defaultdict(lambda: DEFAULT_DOMAIN_PATH)
34
- template_domain_path[ProjectTemplateName.CALM] = "domain"
33
+ template_domain_path[ProjectTemplateName.DEFAULT] = "domain"
35
34
 
36
35
 
37
36
  def add_subparser(
rasa/cli/shell.py CHANGED
@@ -6,6 +6,7 @@ from typing import List
6
6
  from rasa import telemetry
7
7
  from rasa.cli import SubParsersAction
8
8
  from rasa.cli.arguments import shell as arguments
9
+ from rasa.core.available_endpoints import AvailableEndpoints
9
10
  from rasa.engine.storage.local_model_storage import LocalModelStorage
10
11
  from rasa.exceptions import ModelNotFound
11
12
  from rasa.model import get_local_model
@@ -105,7 +106,11 @@ def shell(args: argparse.Namespace) -> None:
105
106
  from rasa.shared.constants import DEFAULT_MODELS_PATH
106
107
 
107
108
  args.connector = "cmdline"
108
-
109
+ # Load endpoints with proper endpoint file location
110
+ # This will initialise the endpoints singleton properly so that
111
+ # it can be used safely throughout the codebase with
112
+ # `AvailableEndpoints.get_instance()`
113
+ AvailableEndpoints.get_instance(args.endpoints)
109
114
  model = get_validated_path(args.model, "model", DEFAULT_MODELS_PATH)
110
115
 
111
116
  try:
@@ -2,12 +2,6 @@ import argparse
2
2
  from typing import List
3
3
 
4
4
  from rasa.cli import SubParsersAction
5
- from rasa.cli.arguments.default_arguments import (
6
- add_config_param,
7
- add_endpoint_param,
8
- )
9
- from rasa.cli.arguments.train import add_data_param, add_domain_param
10
- from rasa.shared.constants import DEFAULT_CONFIG_PATH, DEFAULT_ENDPOINTS_PATH
11
5
  from rasa.studio.download import handle_download
12
6
 
13
7
 
@@ -37,25 +31,9 @@ def add_subparser(
37
31
 
38
32
  def set_studio_download_arguments(parser: argparse.ArgumentParser) -> None:
39
33
  """Add arguments for running `rasa studio download`."""
40
- add_domain_param(parser)
41
- add_data_param(parser)
42
- add_config_param(parser, default=DEFAULT_CONFIG_PATH)
43
- add_endpoint_param(
44
- parser,
45
- "Configuration file for the model endpoints.",
46
- default=DEFAULT_ENDPOINTS_PATH,
47
- )
48
-
49
34
  parser.add_argument(
50
35
  "assistant_name",
51
36
  default=None,
52
- nargs=1,
53
37
  type=str,
54
38
  help="Name of the assistant on Rasa Studio",
55
39
  )
56
-
57
- parser.add_argument(
58
- "--overwrite",
59
- action="store_true",
60
- help="Overwrite local data with data from Rasa Studio",
61
- )
@@ -0,0 +1,36 @@
1
+ import argparse
2
+ from typing import List, Text
3
+
4
+ from rasa.cli import SubParsersAction
5
+ from rasa.shared.constants import (
6
+ DEFAULT_DOMAIN_PATH,
7
+ )
8
+ from rasa.studio.link import handle_link
9
+
10
+
11
+ def add_subparser(
12
+ subparsers: SubParsersAction,
13
+ parents: List[argparse.ArgumentParser],
14
+ domain: Text = DEFAULT_DOMAIN_PATH,
15
+ ) -> None:
16
+ """Register the `rasa studio link` command with the main CLI.
17
+
18
+ Args:
19
+ subparsers: subparser we are going to attach to
20
+ parents: Parent parsers, needed to ensure tree structure in argparse
21
+ domain: Path to the assistant's domain file.
22
+ """
23
+ link_parser = subparsers.add_parser(
24
+ "link",
25
+ parents=parents,
26
+ conflict_handler="resolve",
27
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
28
+ help="Link the current project to an existing Rasa Studio assistant.",
29
+ )
30
+
31
+ link_parser.add_argument(
32
+ "assistant_name",
33
+ type=str,
34
+ help="Name of the assistant in Rasa Studio.",
35
+ )
36
+ link_parser.set_defaults(func=handle_link)
@@ -0,0 +1,79 @@
1
+ import argparse
2
+ from typing import List, Text
3
+
4
+ from rasa.cli import SubParsersAction
5
+ from rasa.cli.arguments.default_arguments import (
6
+ add_config_param,
7
+ add_data_param,
8
+ add_domain_param,
9
+ add_endpoint_param,
10
+ )
11
+ from rasa.shared.constants import (
12
+ DEFAULT_CONFIG_PATH,
13
+ DEFAULT_DOMAIN_PATH,
14
+ DEFAULT_ENDPOINTS_PATH,
15
+ )
16
+ from rasa.studio.pull.pull import (
17
+ handle_pull,
18
+ handle_pull_config,
19
+ handle_pull_endpoints,
20
+ )
21
+
22
+
23
+ def add_subparser(
24
+ subparsers: SubParsersAction,
25
+ parents: List[argparse.ArgumentParser],
26
+ domain: Text = DEFAULT_DOMAIN_PATH,
27
+ ) -> None:
28
+ """Register `rasa studio pull` and its sub-commands.
29
+
30
+ Args:
31
+ subparsers: subparser we are going to attach to
32
+ parents: Parent parsers, needed to ensure tree structure in argparse
33
+ domain: Path to the assistant's domain file.
34
+ """
35
+ pull_parser = subparsers.add_parser(
36
+ "pull",
37
+ parents=parents,
38
+ conflict_handler="resolve",
39
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
40
+ help="Pull assistant data from Rasa Studio.",
41
+ )
42
+ pull_subparsers = pull_parser.add_subparsers()
43
+
44
+ # Arguments for pulling configuration only
45
+ config_parser = pull_subparsers.add_parser(
46
+ "config",
47
+ parents=parents,
48
+ conflict_handler="resolve",
49
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
50
+ help="Pull only the assistant configuration file.",
51
+ )
52
+ add_config_param(config_parser, default=DEFAULT_CONFIG_PATH)
53
+ config_parser.set_defaults(func=handle_pull_config)
54
+
55
+ # Arguments for pulling endpoints only
56
+ endpoints_parser = pull_subparsers.add_parser(
57
+ "endpoints",
58
+ parents=parents,
59
+ conflict_handler="resolve",
60
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
61
+ help="Pull only the endpoints configuration file.",
62
+ )
63
+ add_endpoint_param(
64
+ endpoints_parser,
65
+ "Configuration file for the model endpoints.",
66
+ default=DEFAULT_ENDPOINTS_PATH,
67
+ )
68
+ endpoints_parser.set_defaults(func=handle_pull_endpoints)
69
+
70
+ # Arguments for pulling the whole assistant data
71
+ add_domain_param(pull_parser, domain)
72
+ add_data_param(pull_parser)
73
+ add_config_param(pull_parser, default=DEFAULT_CONFIG_PATH)
74
+ add_endpoint_param(
75
+ pull_parser,
76
+ "Configuration file for the model endpoints.",
77
+ default=DEFAULT_ENDPOINTS_PATH,
78
+ )
79
+ pull_parser.set_defaults(func=handle_pull)