rasa-pro 3.14.0.dev5__py3-none-any.whl → 3.14.0.dev7__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 (477) hide show
  1. rasa/agents/agent_factory.py +122 -0
  2. rasa/agents/agent_manager.py +163 -0
  3. rasa/agents/constants.py +40 -0
  4. rasa/agents/core/agent_protocol.py +107 -0
  5. rasa/agents/core/types.py +70 -0
  6. rasa/agents/exceptions.py +38 -0
  7. rasa/agents/protocol/__init__.py +5 -0
  8. rasa/agents/protocol/a2a/a2a_agent.py +662 -0
  9. rasa/agents/protocol/mcp/mcp_base_agent.py +685 -0
  10. rasa/agents/protocol/mcp/mcp_open_agent.py +290 -0
  11. rasa/agents/protocol/mcp/mcp_task_agent.py +484 -0
  12. rasa/agents/schemas/__init__.py +12 -0
  13. rasa/agents/schemas/agent_input.py +38 -0
  14. rasa/agents/schemas/agent_output.py +26 -0
  15. rasa/agents/schemas/agent_tool_result.py +67 -0
  16. rasa/agents/schemas/agent_tool_schema.py +134 -0
  17. rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +15 -0
  18. rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +17 -0
  19. rasa/agents/utils.py +77 -0
  20. rasa/agents/validation.py +484 -0
  21. rasa/api.py +14 -6
  22. rasa/cli/arguments/default_arguments.py +12 -0
  23. rasa/cli/arguments/run.py +2 -0
  24. rasa/cli/arguments/train.py +2 -0
  25. rasa/cli/dialogue_understanding_test.py +4 -0
  26. rasa/cli/e2e_test.py +4 -0
  27. rasa/cli/inspect.py +3 -0
  28. rasa/cli/interactive.py +2 -0
  29. rasa/cli/llm_fine_tuning.py +5 -0
  30. rasa/cli/project_templates/tutorial/config.yml +1 -2
  31. rasa/cli/run.py +4 -0
  32. rasa/cli/scaffold.py +2 -46
  33. rasa/cli/shell.py +3 -0
  34. rasa/cli/train.py +2 -0
  35. rasa/cli/utils.py +85 -1
  36. rasa/constants.py +6 -0
  37. rasa/core/actions/action.py +52 -10
  38. rasa/core/agent.py +19 -1
  39. rasa/core/available_agents.py +220 -0
  40. rasa/core/available_endpoints.py +30 -0
  41. rasa/core/channels/channel.py +3 -4
  42. rasa/core/channels/development_inspector.py +4 -4
  43. rasa/core/channels/hangouts.py +2 -2
  44. rasa/core/channels/inspector/dist/assets/{arc-18042c22.js → arc-cce7e0a8.js} +1 -1
  45. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-fdd6bcfa.js → blockDiagram-38ab4fdb-e2a49be7.js} +1 -1
  46. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-f5ae6786.js → c4Diagram-3d4e48cf-3def7895.js} +1 -1
  47. rasa/core/channels/inspector/dist/assets/channel-858c2c20.js +1 -0
  48. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-81efba3e.js → classDiagram-70f12bd4-e66fe4df.js} +1 -1
  49. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-3b6b6a92.js → classDiagram-v2-f2320105-eb874aaa.js} +1 -1
  50. rasa/core/channels/inspector/dist/assets/clone-4b80996c.js +1 -0
  51. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-31422447.js → createText-2e5e7dd3-cf934643.js} +1 -1
  52. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-518a90db.js → edges-e0da2a9e-8fdf9155.js} +1 -1
  53. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-a6d3c25a.js → erDiagram-9861fffd-6106fb96.js} +1 -1
  54. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e048c2be.js → flowDb-956e92f1-4c2bb040.js} +1 -1
  55. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-c7474c91.js → flowDiagram-66a62f08-f0ff96af.js} +1 -1
  56. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-16f09b7a.js +1 -0
  57. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-cb4d8723.js → flowchart-elk-definition-4a651766-a21707ec.js} +1 -1
  58. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-346636a2.js → ganttDiagram-c361ad54-c165acb1.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-7c508874.js → gitGraphDiagram-72cf32ee-b0564cf1.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/{graph-14702d8a.js → graph-e557e67a.js} +1 -1
  61. rasa/core/channels/inspector/dist/assets/{index-3862675e-f18b534b.js → index-3862675e-1ce60e9e.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/index-996fe816.js +1353 -0
  63. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-64154b83.js → infoDiagram-f8f76790-893569e2.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-833a5f95.js → journeyDiagram-49397b02-c29c864f.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/{layout-5a3b2123.js → layout-649a5eae.js} +1 -1
  66. rasa/core/channels/inspector/dist/assets/{line-2272a8c7.js → line-0e5685ed.js} +1 -1
  67. rasa/core/channels/inspector/dist/assets/{linear-35bcf273.js → linear-eaa320bd.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-92dcb0e9.js → mindmap-definition-fc14e90a-f35df9e6.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-94dbc900.js → pieDiagram-8a3498a8-78339e96.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-8b7a9c33.js → quadrantDiagram-120e2f19-9b5f2f14.js} +1 -1
  71. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-6f7eab81.js → requirementDiagram-deff3bca-d05ddb3a.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-f43e581d.js → sankeyDiagram-04a897e0-d9be5dfd.js} +1 -1
  73. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-0bcbefc3.js → sequenceDiagram-704730f1-0f1c4348.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-b8a74083.js → stateDiagram-587899a1-9ddf63b3.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-2070218f.js → stateDiagram-v2-d93cdb3a-bc2b81ed.js} +1 -1
  76. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-f1d54e34.js → styles-6aaf32cf-0a287936.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-980de489.js → styles-9a916d00-e3941990.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-3c03abde.js → styles-c10674c1-ce4eca24.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-46ba068f.js → svgDrawCommon-08f97a94-d822b1a8.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-901f5e3d.js → timeline-definition-85554ec2-e144c7a7.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-acbc628a.js → xychartDiagram-e933f94c-ab7f4e14.js} +1 -1
  82. rasa/core/channels/inspector/dist/index.html +2 -2
  83. rasa/core/channels/inspector/index.html +1 -1
  84. rasa/core/channels/inspector/src/App.tsx +37 -12
  85. rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
  86. rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +3 -2
  87. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +3 -12
  88. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
  89. rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
  90. rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
  91. rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
  92. rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
  93. rasa/core/channels/inspector/src/types.ts +21 -0
  94. rasa/core/channels/socketio.py +51 -212
  95. rasa/core/channels/studio_chat.py +29 -49
  96. rasa/core/channels/voice_stream/genesys.py +1 -1
  97. rasa/core/channels/voice_stream/voice_channel.py +3 -5
  98. rasa/core/constants.py +4 -0
  99. rasa/core/policies/enterprise_search_policy.py +11 -6
  100. rasa/core/policies/flow_policy.py +4 -4
  101. rasa/core/policies/flows/flow_executor.py +519 -73
  102. rasa/core/policies/flows/mcp_tool_executor.py +277 -0
  103. rasa/core/policies/intentless_policy.py +1 -1
  104. rasa/core/policies/unexpected_intent_policy.py +1 -0
  105. rasa/core/processor.py +18 -15
  106. rasa/core/run.py +11 -14
  107. rasa/core/tracker_stores/tracker_store.py +3 -7
  108. rasa/core/train.py +1 -1
  109. rasa/core/training/interactive.py +16 -16
  110. rasa/core/training/story_conflict.py +5 -5
  111. rasa/core/utils.py +21 -1
  112. rasa/dialogue_understanding/commands/__init__.py +8 -0
  113. rasa/dialogue_understanding/commands/cancel_flow_command.py +19 -5
  114. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +11 -0
  115. rasa/dialogue_understanding/commands/clarify_command.py +10 -0
  116. rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
  117. rasa/dialogue_understanding/commands/knowledge_answer_command.py +11 -0
  118. rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
  119. rasa/dialogue_understanding/commands/start_flow_command.py +68 -7
  120. rasa/dialogue_understanding/commands/utils.py +124 -2
  121. rasa/dialogue_understanding/generator/command_parser.py +4 -0
  122. rasa/dialogue_understanding/generator/flow_retrieval.py +9 -10
  123. rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
  124. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  125. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  126. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +61 -0
  127. rasa/{cli/project_templates/telco/prompts/command-generator.jinja2 → dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2} +7 -3
  128. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +81 -0
  129. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +81 -0
  130. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +7 -6
  131. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +7 -6
  132. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +41 -2
  133. rasa/dialogue_understanding/patterns/clarify.py +3 -14
  134. rasa/dialogue_understanding/patterns/continue_interrupted.py +239 -6
  135. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +46 -8
  136. rasa/dialogue_understanding/processor/command_processor.py +31 -15
  137. rasa/dialogue_understanding/stack/dialogue_stack.py +123 -2
  138. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
  139. rasa/dialogue_understanding/stack/utils.py +57 -3
  140. rasa/dialogue_understanding/utils.py +24 -4
  141. rasa/dialogue_understanding_test/du_test_runner.py +7 -2
  142. rasa/e2e_test/e2e_test_runner.py +12 -2
  143. rasa/engine/caching.py +2 -2
  144. rasa/engine/recipes/default_components.py +10 -18
  145. rasa/engine/storage/local_model_storage.py +2 -45
  146. rasa/graph_components/validators/default_recipe_validator.py +134 -134
  147. rasa/hooks.py +5 -5
  148. rasa/llm_fine_tuning/utils.py +2 -2
  149. rasa/model_manager/model_api.py +5 -4
  150. rasa/model_manager/runner_service.py +1 -1
  151. rasa/model_manager/socket_bridge.py +14 -20
  152. rasa/model_manager/trainer_service.py +9 -12
  153. rasa/model_manager/utils.py +29 -1
  154. rasa/model_manager/warm_rasa_process.py +1 -1
  155. rasa/model_training.py +8 -6
  156. rasa/nlu/extractors/extractor.py +2 -1
  157. rasa/plugin.py +8 -8
  158. rasa/privacy/privacy_manager.py +11 -2
  159. rasa/server.py +14 -2
  160. rasa/shared/agents/utils.py +35 -0
  161. rasa/shared/constants.py +8 -0
  162. rasa/shared/core/constants.py +11 -1
  163. rasa/shared/core/domain.py +11 -58
  164. rasa/shared/core/events.py +327 -0
  165. rasa/shared/core/flows/flow_step.py +1 -7
  166. rasa/shared/core/flows/flows_list.py +15 -5
  167. rasa/shared/core/flows/flows_yaml_schema.json +112 -186
  168. rasa/shared/core/flows/steps/call.py +53 -5
  169. rasa/shared/core/flows/validation.py +177 -7
  170. rasa/shared/core/flows/yaml_flows_io.py +9 -17
  171. rasa/shared/core/slots.py +2 -6
  172. rasa/shared/core/trackers.py +5 -2
  173. rasa/shared/exceptions.py +4 -0
  174. rasa/shared/importers/importer.py +0 -6
  175. rasa/shared/importers/rasa.py +1 -1
  176. rasa/shared/importers/utils.py +10 -80
  177. rasa/shared/providers/_utils.py +44 -60
  178. rasa/shared/providers/embedding/default_litellm_embedding_client.py +0 -2
  179. rasa/shared/providers/llm/_base_litellm_client.py +39 -7
  180. rasa/shared/providers/llm/default_litellm_llm_client.py +0 -2
  181. rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
  182. rasa/shared/providers/llm/llm_client.py +7 -3
  183. rasa/shared/providers/llm/llm_response.py +66 -0
  184. rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
  185. rasa/shared/utils/health_check/health_check.py +7 -3
  186. rasa/shared/utils/llm.py +28 -5
  187. rasa/shared/utils/mcp/server_connection.py +186 -0
  188. rasa/shared/utils/schemas/events.py +42 -0
  189. rasa/shared/utils/yaml.py +3 -1
  190. rasa/studio/upload.py +47 -16
  191. rasa/telemetry.py +23 -97
  192. rasa/tracing/instrumentation/instrumentation.py +14 -10
  193. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  194. rasa/utils/common.py +79 -0
  195. rasa/utils/io.py +9 -27
  196. rasa/utils/json_utils.py +1 -6
  197. rasa/utils/log_utils.py +2 -6
  198. rasa/utils/ml_utils.py +1 -1
  199. rasa/utils/tensorflow/rasa_layers.py +1 -1
  200. rasa/utils/train_utils.py +15 -15
  201. rasa/validator.py +19 -21
  202. rasa/version.py +1 -1
  203. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/METADATA +14 -17
  204. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/RECORD +214 -442
  205. rasa/builder/README.md +0 -120
  206. rasa/builder/auth.py +0 -176
  207. rasa/builder/config.py +0 -115
  208. rasa/builder/copilot/constants.py +0 -25
  209. rasa/builder/copilot/copilot.py +0 -372
  210. rasa/builder/copilot/copilot_response_handler.py +0 -487
  211. rasa/builder/copilot/copilot_templated_message_provider.py +0 -58
  212. rasa/builder/copilot/exceptions.py +0 -20
  213. rasa/builder/copilot/models.py +0 -431
  214. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +0 -726
  215. rasa/builder/copilot/telemetry.py +0 -195
  216. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +0 -16
  217. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +0 -26
  218. rasa/builder/document_retrieval/constants.py +0 -15
  219. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +0 -64
  220. rasa/builder/document_retrieval/inkeep_document_retrieval.py +0 -238
  221. rasa/builder/document_retrieval/models.py +0 -62
  222. rasa/builder/download.py +0 -140
  223. rasa/builder/exceptions.py +0 -55
  224. rasa/builder/guardrails/__init__.py +0 -1
  225. rasa/builder/guardrails/constants.py +0 -3
  226. rasa/builder/guardrails/exceptions.py +0 -4
  227. rasa/builder/guardrails/lakera.py +0 -206
  228. rasa/builder/guardrails/models.py +0 -199
  229. rasa/builder/guardrails/utils.py +0 -305
  230. rasa/builder/job_manager.py +0 -87
  231. rasa/builder/jobs.py +0 -234
  232. rasa/builder/llm_service.py +0 -246
  233. rasa/builder/logging_utils.py +0 -209
  234. rasa/builder/main.py +0 -174
  235. rasa/builder/models.py +0 -197
  236. rasa/builder/project_generator.py +0 -450
  237. rasa/builder/project_info.py +0 -72
  238. rasa/builder/scrape_rasa_docs.py +0 -97
  239. rasa/builder/service.py +0 -1142
  240. rasa/builder/shared/tracker_context.py +0 -212
  241. rasa/builder/skill_to_bot_prompt.jinja2 +0 -164
  242. rasa/builder/training_service.py +0 -132
  243. rasa/builder/validation_service.py +0 -93
  244. rasa/cli/project_templates/basic/actions/action_api.py +0 -15
  245. rasa/cli/project_templates/basic/actions/action_human_handoff.py +0 -44
  246. rasa/cli/project_templates/basic/config.yml +0 -23
  247. rasa/cli/project_templates/basic/credentials.yml +0 -34
  248. rasa/cli/project_templates/basic/data/general/feedback.yml +0 -20
  249. rasa/cli/project_templates/basic/data/general/goodbye.yml +0 -6
  250. rasa/cli/project_templates/basic/data/general/hello.yml +0 -7
  251. rasa/cli/project_templates/basic/data/general/help.yml +0 -6
  252. rasa/cli/project_templates/basic/data/general/human_handoff.yml +0 -16
  253. rasa/cli/project_templates/basic/data/general/welcome.yml +0 -9
  254. rasa/cli/project_templates/basic/data/system/pattern_completed.yml +0 -7
  255. rasa/cli/project_templates/basic/data/system/pattern_correction.yml +0 -7
  256. rasa/cli/project_templates/basic/data/system/pattern_search.yml +0 -8
  257. rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +0 -8
  258. rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +0 -65
  259. rasa/cli/project_templates/basic/docs/template.txt +0 -7
  260. rasa/cli/project_templates/basic/domain/general/assistant_details.yml +0 -12
  261. rasa/cli/project_templates/basic/domain/general/bot_identity.yml +0 -5
  262. rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +0 -5
  263. rasa/cli/project_templates/basic/domain/general/feedback.yml +0 -28
  264. rasa/cli/project_templates/basic/domain/general/goodbye.yml +0 -7
  265. rasa/cli/project_templates/basic/domain/general/help.yml +0 -5
  266. rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +0 -35
  267. rasa/cli/project_templates/basic/domain/general/utils.yml +0 -13
  268. rasa/cli/project_templates/basic/domain/general/welcome.yml +0 -7
  269. rasa/cli/project_templates/basic/endpoints.yml +0 -73
  270. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +0 -19
  271. rasa/cli/project_templates/finance/actions/__init__.py +0 -46
  272. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +0 -47
  273. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +0 -40
  274. rasa/cli/project_templates/finance/actions/action_session_start.py +0 -74
  275. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +0 -48
  276. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +0 -36
  277. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +0 -54
  278. rasa/cli/project_templates/finance/actions/database.py +0 -277
  279. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  280. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +0 -52
  281. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +0 -51
  282. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +0 -40
  283. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +0 -40
  284. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +0 -46
  285. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +0 -18
  286. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +0 -49
  287. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +0 -19
  288. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +0 -36
  289. rasa/cli/project_templates/finance/config.yml +0 -21
  290. rasa/cli/project_templates/finance/credentials.yml +0 -32
  291. rasa/cli/project_templates/finance/csvs/accounts.csv +0 -8
  292. rasa/cli/project_templates/finance/csvs/advisors.csv +0 -7
  293. rasa/cli/project_templates/finance/csvs/appointments.csv +0 -211
  294. rasa/cli/project_templates/finance/csvs/branches.csv +0 -10
  295. rasa/cli/project_templates/finance/csvs/cards.csv +0 -11
  296. rasa/cli/project_templates/finance/csvs/payees.csv +0 -11
  297. rasa/cli/project_templates/finance/csvs/transactions.csv +0 -71
  298. rasa/cli/project_templates/finance/csvs/users.csv +0 -4
  299. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +0 -10
  300. rasa/cli/project_templates/finance/data/cards/block_card.yml +0 -66
  301. rasa/cli/project_templates/finance/data/cards/select_card.yml +0 -12
  302. rasa/cli/project_templates/finance/data/general/bot_identity.yml +0 -6
  303. rasa/cli/project_templates/finance/data/general/feedback.yml +0 -20
  304. rasa/cli/project_templates/finance/data/general/goodbye.yml +0 -6
  305. rasa/cli/project_templates/finance/data/general/hello.yml +0 -7
  306. rasa/cli/project_templates/finance/data/general/help.yml +0 -9
  307. rasa/cli/project_templates/finance/data/general/human_handoff.yml +0 -16
  308. rasa/cli/project_templates/finance/data/general/welcome.yml +0 -9
  309. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +0 -5
  310. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +0 -7
  311. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +0 -7
  312. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +0 -8
  313. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +0 -8
  314. rasa/cli/project_templates/finance/data/system/source/accounts.json +0 -51
  315. rasa/cli/project_templates/finance/data/system/source/advisors.json +0 -44
  316. rasa/cli/project_templates/finance/data/system/source/appointments.json +0 -1474
  317. rasa/cli/project_templates/finance/data/system/source/branches.json +0 -47
  318. rasa/cli/project_templates/finance/data/system/source/cards.json +0 -72
  319. rasa/cli/project_templates/finance/data/system/source/payees.json +0 -74
  320. rasa/cli/project_templates/finance/data/system/source/transactions.json +0 -492
  321. rasa/cli/project_templates/finance/data/system/source/users.json +0 -29
  322. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +0 -29
  323. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +0 -5
  324. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +0 -21
  325. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +0 -67
  326. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +0 -8
  327. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +0 -8
  328. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +0 -8
  329. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +0 -8
  330. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +0 -8
  331. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +0 -7
  332. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +0 -8
  333. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +0 -8
  334. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +0 -8
  335. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +0 -8
  336. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +0 -8
  337. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +0 -8
  338. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +0 -8
  339. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +0 -8
  340. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +0 -8
  341. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +0 -8
  342. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +0 -8
  343. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +0 -8
  344. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +0 -8
  345. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +0 -8
  346. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +0 -50
  347. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +0 -50
  348. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +0 -48
  349. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +0 -50
  350. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +0 -50
  351. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +0 -47
  352. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +0 -50
  353. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +0 -50
  354. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +0 -47
  355. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +0 -50
  356. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +0 -50
  357. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +0 -50
  358. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +0 -47
  359. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +0 -50
  360. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +0 -50
  361. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +0 -47
  362. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +0 -50
  363. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +0 -50
  364. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +0 -47
  365. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +0 -50
  366. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +0 -50
  367. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +0 -47
  368. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +0 -47
  369. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +0 -50
  370. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +0 -50
  371. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +0 -47
  372. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +0 -50
  373. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +0 -50
  374. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +0 -47
  375. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +0 -50
  376. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +0 -50
  377. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +0 -47
  378. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +0 -50
  379. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +0 -50
  380. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +0 -50
  381. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +0 -47
  382. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +0 -50
  383. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +0 -50
  384. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +0 -47
  385. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +0 -50
  386. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +0 -50
  387. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +0 -47
  388. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +0 -50
  389. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +0 -50
  390. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +0 -50
  391. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +0 -47
  392. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +0 -50
  393. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +0 -50
  394. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +0 -47
  395. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +0 -50
  396. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +0 -50
  397. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +0 -47
  398. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +0 -50
  399. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +0 -50
  400. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +0 -47
  401. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +0 -47
  402. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +0 -50
  403. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +0 -50
  404. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +0 -50
  405. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +0 -50
  406. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +0 -47
  407. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +0 -11
  408. rasa/cli/project_templates/finance/domain/cards/block_card.yml +0 -101
  409. rasa/cli/project_templates/finance/domain/cards/select_card.yml +0 -12
  410. rasa/cli/project_templates/finance/domain/general/assistant_details.yml +0 -12
  411. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +0 -5
  412. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +0 -5
  413. rasa/cli/project_templates/finance/domain/general/defaults.yml +0 -24
  414. rasa/cli/project_templates/finance/domain/general/feedback.yml +0 -28
  415. rasa/cli/project_templates/finance/domain/general/goodbye.yml +0 -7
  416. rasa/cli/project_templates/finance/domain/general/help.yml +0 -5
  417. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +0 -30
  418. rasa/cli/project_templates/finance/domain/general/utils.yml +0 -13
  419. rasa/cli/project_templates/finance/domain/general/welcome.yml +0 -8
  420. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +0 -47
  421. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +0 -4
  422. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +0 -16
  423. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +0 -79
  424. rasa/cli/project_templates/finance/endpoints.yml +0 -63
  425. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +0 -19
  426. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  427. rasa/cli/project_templates/telco/actions/actions_billing.py +0 -204
  428. rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +0 -48
  429. rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +0 -28
  430. rasa/cli/project_templates/telco/actions/actions_session_start.py +0 -18
  431. rasa/cli/project_templates/telco/config.yml +0 -25
  432. rasa/cli/project_templates/telco/credentials.yml +0 -33
  433. rasa/cli/project_templates/telco/csvs/billing.csv +0 -10
  434. rasa/cli/project_templates/telco/csvs/customers.csv +0 -5
  435. rasa/cli/project_templates/telco/data/flows/flow_global.yml +0 -5
  436. rasa/cli/project_templates/telco/data/flows/flow_reboot_router.yml +0 -8
  437. rasa/cli/project_templates/telco/data/flows/flow_reset_router.yml +0 -7
  438. rasa/cli/project_templates/telco/data/flows/flow_solve_internet_issue.yml +0 -73
  439. rasa/cli/project_templates/telco/data/flows/flow_undertand_bill.yml +0 -45
  440. rasa/cli/project_templates/telco/data/patterns/pattern_completed.yml +0 -7
  441. rasa/cli/project_templates/telco/data/patterns/pattern_human_handoff.yml +0 -6
  442. rasa/cli/project_templates/telco/data/patterns/pattern_search.yml +0 -7
  443. rasa/cli/project_templates/telco/data/patterns/pattern_session_start.yml +0 -9
  444. rasa/cli/project_templates/telco/docs/reset_vs_rboot_router.txt +0 -1
  445. rasa/cli/project_templates/telco/docs/restart_router.txt +0 -6
  446. rasa/cli/project_templates/telco/docs/run_speed_test.txt +0 -6
  447. rasa/cli/project_templates/telco/domain/domain_global.yml +0 -29
  448. rasa/cli/project_templates/telco/domain/domain_patterns.yml +0 -17
  449. rasa/cli/project_templates/telco/domain/domain_reboot_router.yml +0 -20
  450. rasa/cli/project_templates/telco/domain/domain_reset_router.yml +0 -11
  451. rasa/cli/project_templates/telco/domain/domain_run_speed_test.yml +0 -24
  452. rasa/cli/project_templates/telco/domain/domain_solve_internet_issue.yml +0 -74
  453. rasa/cli/project_templates/telco/domain/domain_undertand_bill.yml +0 -102
  454. rasa/cli/project_templates/telco/endpoints.yml +0 -60
  455. rasa/cli/project_templates/telco/tests/e2e_results_failed.yml +0 -62
  456. rasa/cli/project_templates/telco/tests/e2e_results_passed.yml +0 -130
  457. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing_test_cases.yml +0 -68
  458. rasa/cli/project_templates/telco/tests/e2e_test_cases/global_test_cases.yml +0 -13
  459. rasa/cli/project_templates/telco/tests/e2e_test_cases/internet_slow_test_case.yml +0 -47
  460. rasa/cli/project_templates/telco/tests/e2e_test_cases/out_of_scope_test_case.yml +0 -21
  461. rasa/cli/project_templates/telco/tests/e2e_test_cases/patterns_test_cases.yml +0 -15
  462. rasa/core/channels/constants.py +0 -3
  463. rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +0 -1
  464. rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +0 -1
  465. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +0 -1
  466. rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +0 -1335
  467. rasa/utils/openapi.py +0 -144
  468. /rasa/{builder → agents}/__init__.py +0 -0
  469. /rasa/{builder/copilot → agents/core}/__init__.py +0 -0
  470. /rasa/{builder/copilot/prompts → agents/protocol/a2a}/__init__.py +0 -0
  471. /rasa/{builder/copilot/templated_messages → agents/protocol/mcp}/__init__.py +0 -0
  472. /rasa/{builder/document_retrieval → agents/templates}/__init__.py +0 -0
  473. /rasa/{cli/project_templates/finance/actions/accounts → shared/agents}/__init__.py +0 -0
  474. /rasa/{cli/project_templates/finance/actions/cards → shared/utils/mcp}/__init__.py +0 -0
  475. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/NOTICE +0 -0
  476. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/WHEEL +0 -0
  477. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/entry_points.txt +0 -0
@@ -160,6 +160,43 @@ FLOW_CANCELLED = {
160
160
  "step_id": {"type": "string"},
161
161
  }
162
162
  }
163
+ AGENT_STARTED = {
164
+ "properties": {
165
+ "event": {"const": "agent_started"},
166
+ "agent_id": {"type": "string"},
167
+ "flow_id": {"type": "string"},
168
+ }
169
+ }
170
+ AGENT_COMPLETED = {
171
+ "properties": {
172
+ "event": {"const": "agent_completed"},
173
+ "agent_id": {"type": "string"},
174
+ "flow_id": {"type": "string"},
175
+ "status": {"type": "string"},
176
+ }
177
+ }
178
+ AGENT_INTERRUPTED = {
179
+ "properties": {
180
+ "event": {"const": "agent_interrupted"},
181
+ "agent_id": {"type": "string"},
182
+ "flow_id": {"type": "string"},
183
+ }
184
+ }
185
+ AGENT_RESUMED = {
186
+ "properties": {
187
+ "event": {"const": "agent_resumed"},
188
+ "agent_id": {"type": "string"},
189
+ "flow_id": {"type": "string"},
190
+ }
191
+ }
192
+ AGENT_CANCELLED = {
193
+ "properties": {
194
+ "event": {"const": "agent_cancelled"},
195
+ "agent_id": {"type": "string"},
196
+ "flow_id": {"type": "string"},
197
+ "reason": {"type": "string"},
198
+ }
199
+ }
163
200
  DIALOGUE_STACK_UPDATED = {
164
201
  "properties": {"event": {"const": "stack"}, "update": {"type": "string"}}
165
202
  }
@@ -204,6 +241,11 @@ EVENT_SCHEMA = {
204
241
  FLOW_RESUMED,
205
242
  FLOW_COMPLETED,
206
243
  FLOW_CANCELLED,
244
+ AGENT_STARTED,
245
+ AGENT_COMPLETED,
246
+ AGENT_INTERRUPTED,
247
+ AGENT_RESUMED,
248
+ AGENT_CANCELLED,
207
249
  DIALOGUE_STACK_UPDATED,
208
250
  ROUTING_SESSION_ENDED,
209
251
  SESSION_ENDED,
rasa/shared/utils/yaml.py CHANGED
@@ -335,7 +335,9 @@ class YamlValidationException(YamlException, ValueError):
335
335
  )
336
336
  if found_lc:
337
337
  return line_offset
338
- return this_line + line_offset
338
+ if this_line is not None:
339
+ return this_line + line_offset
340
+ return line_offset
339
341
  return line
340
342
  elif isinstance(current, list) and head.isdigit():
341
343
  return (
rasa/studio/upload.py CHANGED
@@ -7,6 +7,7 @@ from typing import Any, Dict, Iterable, List, Optional, Set, Text, Tuple, Union
7
7
  import questionary
8
8
  import requests
9
9
  import structlog
10
+ from pydantic import BaseModel, Field
10
11
 
11
12
  import rasa.cli.telemetry
12
13
  import rasa.cli.utils
@@ -23,13 +24,9 @@ from rasa.shared.constants import (
23
24
  DEFAULT_DOMAIN_PATHS,
24
25
  )
25
26
  from rasa.shared.core.domain import Domain
26
- from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader
27
+ from rasa.shared.core.flows.yaml_flows_io import YAMLFlowsReader, YamlFlowsWriter
27
28
  from rasa.shared.exceptions import RasaException
28
- from rasa.shared.importers.importer import TrainingDataImporter
29
- from rasa.shared.importers.utils import (
30
- CALMUserData,
31
- extract_calm_import_parts_from_importer,
32
- )
29
+ from rasa.shared.importers.importer import FlowSyncImporter, TrainingDataImporter
33
30
  from rasa.shared.nlu.training_data.formats.rasa_yaml import (
34
31
  RasaYAMLReader,
35
32
  RasaYAMLWriter,
@@ -37,6 +34,7 @@ from rasa.shared.nlu.training_data.formats.rasa_yaml import (
37
34
  from rasa.shared.utils.llm import collect_custom_prompts
38
35
  from rasa.shared.utils.yaml import (
39
36
  dump_obj_as_yaml_to_string,
37
+ read_yaml,
40
38
  read_yaml_file,
41
39
  )
42
40
  from rasa.studio import results_logger
@@ -45,7 +43,6 @@ from rasa.studio.config import StudioConfig
45
43
  from rasa.studio.results_logger import StudioResult, with_studio_error_handler
46
44
  from rasa.studio.utils import validate_argument_paths
47
45
  from rasa.telemetry import track_upload_to_studio_failed
48
- from rasa.utils.json_utils import extract_values
49
46
 
50
47
  structlogger = structlog.get_logger()
51
48
 
@@ -71,6 +68,16 @@ DOMAIN_KEYS = [
71
68
  ]
72
69
 
73
70
 
71
+ class CALMImportParts(BaseModel):
72
+ """All pieces that will be uploaded to Rasa Studio."""
73
+
74
+ flows: Dict[str, Any]
75
+ domain: Dict[str, Any]
76
+ config: Dict[str, Any]
77
+ endpoints: Dict[str, Any]
78
+ nlu: Dict[str, Any] = Field(default_factory=dict)
79
+
80
+
74
81
  def _get_selected_entities_and_intents(
75
82
  args: argparse.Namespace,
76
83
  intents_from_files: Set[Text],
@@ -108,10 +115,9 @@ def run_validation(args: argparse.Namespace) -> None:
108
115
  """
109
116
  from rasa.validator import Validator
110
117
 
111
- training_data_paths = args.data if isinstance(args.data, list) else [args.data]
112
118
  training_data_importer = TrainingDataImporter.load_from_dict(
113
119
  domain_path=args.domain,
114
- training_data_paths=training_data_paths,
120
+ training_data_paths=[args.data],
115
121
  config_path=args.config,
116
122
  expand_env_vars=False,
117
123
  )
@@ -188,6 +194,11 @@ config_keys = [
188
194
  ]
189
195
 
190
196
 
197
+ def extract_values(data: Dict, keys: List[Text]) -> Dict:
198
+ """Extracts values for given keys from a dictionary."""
199
+ return {key: data.get(key) for key in keys if data.get(key)}
200
+
201
+
191
202
  def _get_assistant_name(config: Dict[Text, Any]) -> str:
192
203
  config_assistant_id = config.get("assistant_id", "")
193
204
  assistant_name = questionary.text(
@@ -226,7 +237,7 @@ def build_calm_import_parts(
226
237
  config_path: Text,
227
238
  endpoints_path: Optional[Text] = None,
228
239
  assistant_name: Optional[Text] = None,
229
- ) -> Tuple[str, CALMUserData]:
240
+ ) -> Tuple[str, CALMImportParts]:
230
241
  """Builds the parts of the assistant to be uploaded to Studio.
231
242
 
232
243
  Args:
@@ -239,11 +250,9 @@ def build_calm_import_parts(
239
250
  Returns:
240
251
  The assistant name and the parts to be uploaded
241
252
  """
242
- training_data_paths = data_path if isinstance(data_path, list) else [str(data_path)]
243
253
  importer = TrainingDataImporter.load_from_dict(
244
254
  domain_path=domain_path,
245
255
  config_path=config_path,
246
- training_data_paths=training_data_paths,
247
256
  expand_env_vars=False,
248
257
  )
249
258
 
@@ -251,10 +260,33 @@ def build_calm_import_parts(
251
260
  endpoints = read_yaml_file(endpoints_path, expand_env_vars=False)
252
261
  assistant_name = assistant_name or _get_assistant_name(config)
253
262
 
254
- parts = extract_calm_import_parts_from_importer(
255
- importer=importer,
263
+ domain_from_files = importer.get_user_domain().as_dict()
264
+ domain = extract_values(domain_from_files, DOMAIN_KEYS)
265
+
266
+ flow_importer = FlowSyncImporter.load_from_dict(
267
+ training_data_paths=[str(data_path)], expand_env_vars=False
268
+ )
269
+
270
+ flows = list(flow_importer.get_user_flows())
271
+ flows_yaml = YamlFlowsWriter().dumps(flows)
272
+ flows = read_yaml(flows_yaml, expand_env_vars=False)
273
+
274
+ nlu_importer = TrainingDataImporter.load_from_dict(
275
+ training_data_paths=[str(data_path)], expand_env_vars=False
276
+ )
277
+ nlu_data = nlu_importer.get_nlu_data()
278
+ nlu_examples = nlu_data.filter_training_examples(
279
+ lambda ex: ex.get("intent") in nlu_data.intents
280
+ )
281
+ nlu_examples_yaml = RasaYAMLWriter().dumps(nlu_examples)
282
+ nlu = read_yaml(nlu_examples_yaml, expand_env_vars=False)
283
+
284
+ parts = CALMImportParts(
285
+ flows=flows,
286
+ domain=domain,
256
287
  config=config,
257
288
  endpoints=endpoints,
289
+ nlu=nlu,
258
290
  )
259
291
 
260
292
  return assistant_name, parts
@@ -317,10 +349,9 @@ def upload_nlu_assistant(
317
349
  "rasa.studio.upload.nlu_data_read",
318
350
  event_info="Found DM1 assistant data, parsing...",
319
351
  )
320
- training_data_paths = args.data if isinstance(args.data, list) else [args.data]
321
352
  importer = TrainingDataImporter.load_from_dict(
322
353
  domain_path=args.domain,
323
- training_data_paths=training_data_paths,
354
+ training_data_paths=[args.data],
324
355
  config_path=args.config,
325
356
  expand_env_vars=False,
326
357
  )
rasa/telemetry.py CHANGED
@@ -3,6 +3,7 @@ import contextlib
3
3
  import hashlib
4
4
  import inspect
5
5
  import json
6
+ import logging
6
7
  import multiprocessing
7
8
  import os
8
9
  import platform
@@ -69,7 +70,7 @@ if typing.TYPE_CHECKING:
69
70
  from rasa.shared.importers.importer import TrainingDataImporter
70
71
  from rasa.shared.nlu.training_data.training_data import TrainingData
71
72
 
72
- structlogger = structlog.get_logger()
73
+ logger = logging.getLogger(__name__)
73
74
 
74
75
  SEGMENT_TRACK_ENDPOINT = "https://api.segment.io/v1/track"
75
76
  SEGMENT_IDENTIFY_ENDPOINT = "https://api.segment.io/v1/identify"
@@ -196,10 +197,6 @@ TELEMETRY_E2E_TEST_CONVERSION_EVENT = "E2E Test Conversion Completed"
196
197
  E2E_TEST_CONVERSION_FILE_TYPE = "file_type"
197
198
  E2E_TEST_CONVERSION_TEST_CASE_COUNT = "test_case_count"
198
199
 
199
- # Copilot telemetry
200
- TELEMETRY_COPILOT_USER_MESSAGE_EVENT = "copilot_user_message"
201
- TELEMETRY_COPILOT_BOT_MESSAGE_EVENT = "copilot_bot_message"
202
-
203
200
 
204
201
  def print_telemetry_reporting_info() -> None:
205
202
  """Print telemetry information to std out."""
@@ -258,11 +255,7 @@ def _is_telemetry_enabled_in_configuration() -> bool:
258
255
 
259
256
  return stored_config[CONFIG_TELEMETRY_ENABLED]
260
257
  except ValueError as e:
261
- structlogger.debug(
262
- "telemetry.is_telemetry_enabled_in_configuration.error",
263
- error=str(e),
264
- event_info="Could not read telemetry settings from configuration file",
265
- )
258
+ logger.debug(f"Could not read telemetry settings from configuration file: {e}")
266
259
 
267
260
  # seems like there is no config, we'll create one and enable telemetry
268
261
  success = _write_default_telemetry_configuration()
@@ -279,10 +272,7 @@ def is_telemetry_enabled() -> bool:
279
272
  from rasa.utils import licensing
280
273
 
281
274
  if licensing.is_champion_server_license():
282
- structlogger.debug(
283
- "telemetry.enabled.developer_license",
284
- event_info="Telemetry is enabled for developer licenses.",
285
- )
275
+ logger.debug("Telemetry is enabled for developer licenses.")
286
276
  return True
287
277
 
288
278
  telemetry_environ = os.environ.get(TELEMETRY_ENABLED_ENVIRONMENT_VARIABLE)
@@ -318,13 +308,9 @@ def initialize_telemetry() -> bool:
318
308
 
319
309
  return telemetry_environ.lower() == "true"
320
310
  except Exception as e: # skipcq:PYL-W0703
321
- structlogger.exception(
322
- "telemetry.initialize_telemetry.error",
323
- error=str(e),
324
- event_info=(
325
- "Failed to initialize telemetry reporting. "
326
- "Telemetry reporting will be disabled."
327
- ),
311
+ logger.exception(
312
+ f"Failed to initialize telemetry reporting: {e}."
313
+ f"Telemetry reporting will be disabled."
328
314
  )
329
315
  return False
330
316
 
@@ -495,10 +481,7 @@ def print_telemetry_payload(payload: Dict[Text, Any]) -> None:
495
481
  payload: payload to be delivered to segment.
496
482
  """
497
483
  payload_json = json.dumps(payload, indent=2)
498
- structlogger.debug(
499
- "telemetry.print_telemetry_payload.debug",
500
- event_info=f"Telemetry payload: {payload_json}",
501
- )
484
+ logger.debug(f"Telemetry payload: {payload_json}")
502
485
 
503
486
 
504
487
  def _get_telemetry_write_key() -> Optional[Text]:
@@ -552,24 +535,10 @@ def _send_request(url: Text, payload: Dict[Text, Any]) -> None:
552
535
  if not write_key:
553
536
  # If RASA_TELEMETRY_WRITE_KEY is empty or `None`, telemetry has not
554
537
  # been enabled for this build (e.g. because it is running from source)
555
- structlogger.debug(
556
- "telemetry.send_request.no_telemetry_key",
557
- event_info="Skipping request to external service: telemetry key not set.",
558
- )
538
+ logger.debug("Skipping request to external service: telemetry key not set.")
559
539
  return
560
540
 
561
- send_segment_request(url, payload, write_key)
562
-
563
-
564
- def send_segment_request(url: Text, payload: Dict[Text, Any], write_key: Text) -> None:
565
- """Send a request to the Segment API.
566
-
567
- Args:
568
- url: URL of the Segment API endpoint
569
- payload: payload to send to the Segment API
570
- write_key: write key for the Segment API
571
- """
572
- headers = segment_request_header(write_key)
541
+ headers = rasa.telemetry.segment_request_header(write_key)
573
542
 
574
543
  resp = requests.post(
575
544
  url=url,
@@ -579,22 +548,15 @@ def send_segment_request(url: Text, payload: Dict[Text, Any], write_key: Text) -
579
548
  )
580
549
  # handle different failure cases
581
550
  if resp.status_code != 200:
582
- structlogger.debug(
583
- "telemetry.send_segment_request.error_response",
584
- event_info=(
585
- f"Segment telemetry request returned a {resp.status_code} "
586
- f"response. Body: {resp.text}"
587
- ),
551
+ logger.debug(
552
+ f"Segment telemetry request returned a {resp.status_code} response. "
553
+ f"Body: {resp.text}"
588
554
  )
589
555
  else:
590
556
  data = resp.json()
591
557
  if not data.get("success"):
592
- structlogger.debug(
593
- "telemetry.send_segment_request.failure",
594
- event_info=(
595
- f"Segment telemetry request returned a failure. "
596
- f"Response: {data}"
597
- ),
558
+ logger.debug(
559
+ f"Segment telemetry request returned a failure. Response: {data}"
598
560
  )
599
561
 
600
562
 
@@ -647,15 +609,6 @@ def with_default_context_fields(
647
609
  return {**_default_context_fields(), **context}
648
610
 
649
611
 
650
- def get_deployment_stack() -> Text:
651
- """Return the deployment stack.
652
-
653
- Returns:
654
- The deployment stack.
655
- """
656
- return os.environ.get("DEPLOYMENT_STACK", "")
657
-
658
-
659
612
  def _default_context_fields() -> Dict[Text, Any]:
660
613
  """Return a dictionary that contains the default context values.
661
614
 
@@ -679,7 +632,6 @@ def _default_context_fields() -> Dict[Text, Any]:
679
632
  "cpu": multiprocessing.cpu_count(),
680
633
  "docker": _is_docker(),
681
634
  "license_hash": get_license_hash(),
682
- "deployment_stack": get_deployment_stack(),
683
635
  "company": property_of_active_license(
684
636
  lambda active_license: active_license.company
685
637
  ),
@@ -711,10 +663,7 @@ def _track(
711
663
  telemetry_id = get_telemetry_id()
712
664
 
713
665
  if not telemetry_id:
714
- structlogger.debug(
715
- "telemetry.track.no_id_found",
716
- event_info="Will not report telemetry events as no ID was found.",
717
- )
666
+ logger.debug("Will not report telemetry events as no ID was found.")
718
667
  return
719
668
 
720
669
  if not properties:
@@ -732,11 +681,7 @@ def _track(
732
681
  with_default_context_fields(context),
733
682
  )
734
683
  except Exception as e: # skipcq:PYL-W0703
735
- structlogger.debug(
736
- "telemetry.track.error",
737
- error=str(e),
738
- event_info="Skipping telemetry reporting",
739
- )
684
+ logger.debug(f"Skipping telemetry reporting: {e}")
740
685
 
741
686
 
742
687
  def _identify(
@@ -757,10 +702,7 @@ def _identify(
757
702
  telemetry_id = get_telemetry_id()
758
703
 
759
704
  if not telemetry_id:
760
- structlogger.debug(
761
- "telemetry.identify.no_id_found",
762
- event_info="Will not report telemetry events as no ID was found.",
763
- )
705
+ logger.debug("Will not report telemetry events as no ID was found.")
764
706
  return
765
707
 
766
708
  if not traits:
@@ -768,11 +710,7 @@ def _identify(
768
710
 
769
711
  _send_traits(telemetry_id, traits, with_default_context_fields(context))
770
712
  except Exception as e:
771
- structlogger.debug(
772
- "telemetry.identify.error",
773
- error=str(e),
774
- event_info="Skipping telemetry reporting",
775
- )
713
+ logger.debug(f"Skipping telemetry reporting: {e}")
776
714
 
777
715
 
778
716
  def _send_traits(
@@ -930,16 +868,13 @@ def strip_sensitive_data_from_sentry_event(
930
868
 
931
869
 
932
870
  @ensure_telemetry_enabled
933
- def initialize_error_reporting(private_mode: bool = True) -> None:
871
+ def initialize_error_reporting() -> None:
934
872
  """Sets up automated error reporting.
935
873
 
936
874
  Exceptions are reported to sentry. We avoid sending any metadata (local
937
875
  variables, paths, ...) to make sure we don't compromise any data. Only the
938
876
  exception and its stacktrace is logged and only if the exception origins
939
877
  from the `rasa` package.
940
-
941
- Args:
942
- private_mode: If True, try to send as little data as possible.
943
878
  """
944
879
  import sentry_sdk
945
880
  from sentry_sdk import configure_scope
@@ -957,18 +892,11 @@ def initialize_error_reporting(private_mode: bool = True) -> None:
957
892
 
958
893
  telemetry_id = get_telemetry_id()
959
894
 
960
- # in hello rasa we use a different project, so we need to be able
961
- # to set the whole url. since we can't change the behavior of sentry in pro
962
- # we have two kinds of keys, full urls and jsut the key within the fixed rasa
963
- # pro project.
964
- if not key.startswith("https://"):
965
- key = f"https://{key}.ingest.sentry.io/2801673"
966
-
967
895
  # this is a very defensive configuration, avoiding as many integrations as
968
896
  # possible. it also submits very little data (exception with error message
969
897
  # and line numbers).
970
898
  sentry_sdk.init(
971
- key,
899
+ f"https://{key}.ingest.sentry.io/2801673",
972
900
  before_send=before_send,
973
901
  integrations=[
974
902
  ExcepthookIntegration(),
@@ -988,7 +916,7 @@ def initialize_error_reporting(private_mode: bool = True) -> None:
988
916
  OSError,
989
917
  ],
990
918
  in_app_include=["rasa"], # only submit errors in this package
991
- include_local_variables=not private_mode,
919
+ include_local_variables=False, # don't submit local variables
992
920
  release=f"rasa-{rasa.__version__}",
993
921
  default_integrations=False,
994
922
  environment="development" if in_continuous_integration() else "production",
@@ -1009,7 +937,6 @@ def initialize_error_reporting(private_mode: bool = True) -> None:
1009
937
  # os is a nested dict, hence we report it separately
1010
938
  scope.set_context("Operating System", default_context.pop("os"))
1011
939
  scope.set_context("Environment", default_context)
1012
- structlogger.debug("telemetry.sentry.initialized")
1013
940
 
1014
941
 
1015
942
  @contextlib.contextmanager
@@ -1499,7 +1426,6 @@ def track_shell_started(model_type: Text, assistant_id: Text) -> None:
1499
1426
 
1500
1427
  Args:
1501
1428
  model_type: Type of the model, core / nlu or rasa.
1502
- assistant_id: ID of the assistant being inspected.
1503
1429
  """
1504
1430
  _track(
1505
1431
  TELEMETRY_SHELL_STARTED_EVENT,
@@ -2071,7 +1997,7 @@ def _extract_stream_pii(event_broker: Optional["EventBroker"]) -> bool:
2071
1997
  def track_privacy_enabled(
2072
1998
  privacy_config: "PrivacyConfig", event_broker: Optional["EventBroker"]
2073
1999
  ) -> None:
2074
- """Track when PII management capability is enabled."""
2000
+ """Track when PII management capability is enabled"""
2075
2001
  stream_pii = _extract_stream_pii(event_broker)
2076
2002
  privacy_properties = _extract_privacy_enabled_event_properties(
2077
2003
  privacy_config, stream_pii
@@ -53,6 +53,7 @@ from rasa.engine.graph import GraphNode
53
53
  from rasa.engine.training.graph_trainer import GraphTrainer
54
54
  from rasa.shared.core.domain import Domain
55
55
  from rasa.shared.core.flows import FlowsList
56
+ from rasa.shared.core.slots import Slot
56
57
  from rasa.shared.core.trackers import DialogueStateTracker
57
58
  from rasa.shared.nlu.constants import SET_SLOT_COMMAND
58
59
  from rasa.shared.nlu.training_data.message import Message
@@ -443,7 +444,7 @@ def instrument(
443
444
  tracer_provider.get_tracer(lock_store_class.__module__),
444
445
  attribute_extractors.extract_attrs_for_lock_store,
445
446
  )
446
- lock_store_class.lock = contextlib.asynccontextmanager(traced_lock_method) # type: ignore[assignment]
447
+ lock_store_class.lock = contextlib.asynccontextmanager(traced_lock_method) # type: ignore[method-assign]
447
448
 
448
449
  logger.debug(f"Instrumented '{lock_store_class.__name__}.lock'.")
449
450
 
@@ -790,7 +791,7 @@ def _instrument_nlu_command_adapter_predict_commands(
790
791
 
791
792
  return wrapper
792
793
 
793
- nlu_command_adapter_class.predict_commands = ( # type: ignore[assignment]
794
+ nlu_command_adapter_class.predict_commands = ( # type: ignore[method-assign]
794
795
  tracing_nlu_command_adapter_predict_commands_wrapper(
795
796
  nlu_command_adapter_class.predict_commands
796
797
  )
@@ -839,7 +840,7 @@ def _instrument_multi_step_llm_command_generator_parse_commands(
839
840
 
840
841
  return wrapper
841
842
 
842
- multi_step_llm_command_generator_class.parse_commands = ( # type: ignore[assignment]
843
+ multi_step_llm_command_generator_class.parse_commands = ( # type: ignore[method-assign]
843
844
  tracing_multi_step_llm_command_generator_parse_commands_wrapper(
844
845
  multi_step_llm_command_generator_class.parse_commands
845
846
  )
@@ -873,7 +874,7 @@ def _instrument_information_retrieval_search(
873
874
 
874
875
  return wrapper
875
876
 
876
- vector_store_class.search = tracing_information_retrieval_search_wrapper( # type: ignore[assignment]
877
+ vector_store_class.search = tracing_information_retrieval_search_wrapper( # type: ignore[method-assign]
877
878
  vector_store_class.search
878
879
  )
879
880
 
@@ -1013,7 +1014,7 @@ def _instrument_get_tracker(
1013
1014
 
1014
1015
  return wrapper
1015
1016
 
1016
- processor_class.get_tracker = tracing_get_tracker_wrapper( # type: ignore[assignment]
1017
+ processor_class.get_tracker = tracing_get_tracker_wrapper( # type: ignore[method-assign]
1017
1018
  processor_class.get_tracker
1018
1019
  )
1019
1020
 
@@ -1088,13 +1089,16 @@ def _instrument_advance_flows_until_next_action(
1088
1089
  ) -> None:
1089
1090
  def tracing_advance_flows_until_next_action_wrapper(fn: Callable) -> Callable:
1090
1091
  @functools.wraps(fn)
1091
- def wrapper(
1092
+ async def wrapper(
1092
1093
  tracker: DialogueStateTracker,
1093
1094
  available_actions: List[str],
1094
1095
  flows: FlowsList,
1096
+ slots: List[Slot],
1095
1097
  ) -> FlowActionPrediction:
1096
1098
  with tracer.start_as_current_span(f"{module_name}.{fn.__name__}") as span:
1097
- prediction: FlowActionPrediction = fn(tracker, available_actions, flows)
1099
+ prediction: FlowActionPrediction = await fn(
1100
+ tracker, available_actions, flows, slots
1101
+ )
1098
1102
 
1099
1103
  span.set_attributes(
1100
1104
  {
@@ -1223,7 +1227,7 @@ def _instrument_run_action(
1223
1227
 
1224
1228
  return wrapper
1225
1229
 
1226
- processor_class._run_action = tracing_run_action_wrapper( # type: ignore[assignment]
1230
+ processor_class._run_action = tracing_run_action_wrapper( # type: ignore[method-assign]
1227
1231
  processor_class._run_action
1228
1232
  )
1229
1233
 
@@ -1282,7 +1286,7 @@ def _instrument_endpoint_config(
1282
1286
 
1283
1287
  return wrapper
1284
1288
 
1285
- endpoint_config_class.request = tracing_endpoint_config_wrapper( # type: ignore[assignment]
1289
+ endpoint_config_class.request = tracing_endpoint_config_wrapper( # type: ignore[method-assign]
1286
1290
  endpoint_config_class.request
1287
1291
  )
1288
1292
 
@@ -1314,7 +1318,7 @@ def _instrument_grpc_custom_action_executor(
1314
1318
 
1315
1319
  return wrapper
1316
1320
 
1317
- grpc_custom_action_executor_class.run = tracing_grpc_custom_action_executor_wrapper( # type: ignore[assignment]
1321
+ grpc_custom_action_executor_class.run = tracing_grpc_custom_action_executor_wrapper( # type: ignore[method-assign]
1318
1322
  grpc_custom_action_executor_class.run
1319
1323
  )
1320
1324
 
@@ -37,7 +37,7 @@ def _instrument_select_response_examples(
37
37
 
38
38
  return wrapper
39
39
 
40
- policy_class.select_response_examples = tracing_select_response_examples_wrapper( # type: ignore[assignment]
40
+ policy_class.select_response_examples = tracing_select_response_examples_wrapper( # type: ignore[method-assign]
41
41
  policy_class.select_response_examples
42
42
  )
43
43
 
@@ -72,7 +72,7 @@ def _instrument_select_few_shot_conversations(
72
72
 
73
73
  return wrapper
74
74
 
75
- policy_class.select_few_shot_conversations = ( # type: ignore[assignment]
75
+ policy_class.select_few_shot_conversations = ( # type: ignore[method-assign]
76
76
  tracing_select_few_shot_conversations_wrapper(
77
77
  policy_class.select_few_shot_conversations
78
78
  )
@@ -104,7 +104,7 @@ def _instrument_extract_ai_responses(
104
104
 
105
105
  return wrapper
106
106
 
107
- policy_class.extract_ai_responses = tracing_extract_ai_responses_wrapper( # type: ignore[assignment]
107
+ policy_class.extract_ai_responses = tracing_extract_ai_responses_wrapper( # type: ignore[method-assign]
108
108
  policy_class.extract_ai_responses
109
109
  )
110
110
 
@@ -137,7 +137,7 @@ def _instrument_generate_answer(
137
137
 
138
138
  return wrapper
139
139
 
140
- policy_class.generate_answer = tracing_generate_answer_wrapper( # type: ignore[assignment]
140
+ policy_class.generate_answer = tracing_generate_answer_wrapper( # type: ignore[method-assign]
141
141
  policy_class.generate_answer
142
142
  )
143
143