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
rasa/cli/interactive.py CHANGED
@@ -11,6 +11,7 @@ import rasa.utils.common
11
11
  from rasa import model
12
12
  from rasa.cli import SubParsersAction
13
13
  from rasa.cli.arguments import interactive as arguments
14
+ from rasa.core.constants import DEFAULT_SUB_AGENTS
14
15
  from rasa.engine.storage.local_model_storage import LocalModelStorage
15
16
  from rasa.shared.constants import (
16
17
  ASSISTANT_ID_DEFAULT_VALUE,
@@ -109,6 +110,7 @@ def _set_not_required_args(args: argparse.Namespace) -> None:
109
110
  args.validation_max_history = None
110
111
  args.remote_storage = None
111
112
  args.keep_local_model_copy = False
113
+ args.sub_agents = DEFAULT_SUB_AGENTS # Default value for sub-agents
112
114
 
113
115
 
114
116
  def perform_interactive_learning(
@@ -14,6 +14,7 @@ from rasa.cli.arguments.default_arguments import (
14
14
  add_endpoint_param,
15
15
  add_model_param,
16
16
  add_remote_storage_param,
17
+ add_sub_agents_param,
17
18
  )
18
19
  from rasa.cli.e2e_test import (
19
20
  RASA_PRO_BETA_FINE_TUNING_RECIPE_ENV_VAR_NAME,
@@ -137,6 +138,8 @@ def add_data_preparation_arguments(parser: argparse.ArgumentParser) -> None:
137
138
  default=DEFAULT_INPUT_E2E_TEST_PATH,
138
139
  )
139
140
 
141
+ add_sub_agents_param(parser)
142
+
140
143
  add_remote_storage_param(parser)
141
144
 
142
145
  rephrasing_arguments = parser.add_argument_group("Rephrasing Module")
@@ -376,6 +379,7 @@ def write_params(
376
379
  "rephrase_config": rephrase_config,
377
380
  "model": args.model,
378
381
  "endpoints": args.endpoints,
382
+ "sub-agents": args.sub_agents,
379
383
  "remote-storage": args.remote_storage,
380
384
  "train_frac": args.train_frac,
381
385
  "output_format": args.output_format,
@@ -420,6 +424,7 @@ def set_up_e2e_test_runner(args: argparse.Namespace) -> E2ETestRunner:
420
424
  model_path=args.model,
421
425
  model_server=endpoints.model,
422
426
  endpoints=endpoints,
427
+ sub_agents_path=args.sub_agents,
423
428
  )
424
429
  except AgentNotReady as error:
425
430
  structlogger.error(
@@ -1,6 +1,5 @@
1
1
  recipe: default.v1
2
2
  language: en
3
- assistant_id: placeholder_default
4
3
  pipeline:
5
4
  - name: CompactLLMCommandGenerator
6
5
  llm:
@@ -10,4 +9,4 @@ pipeline:
10
9
 
11
10
  policies:
12
11
  - name: FlowPolicy
13
- # - name: EnterpriseSearchPolicy
12
+ # - name: EnterpriseSearchPolicy
rasa/cli/run.py CHANGED
@@ -109,6 +109,7 @@ def run(args: argparse.Namespace) -> None:
109
109
  # configured
110
110
 
111
111
  import rasa.model
112
+ from rasa.core.available_agents import AvailableAgents
112
113
  from rasa.core.available_endpoints import AvailableEndpoints
113
114
 
114
115
  # start server if remote storage is configured
@@ -123,6 +124,9 @@ def run(args: argparse.Namespace) -> None:
123
124
  rasa_run(**vars(args))
124
125
  return
125
126
 
127
+ # load sub-agents
128
+ AvailableAgents.get_instance(args.sub_agents)
129
+
126
130
  # start server if local model found
127
131
  args.model = _validate_model_path(args.model, "model", DEFAULT_MODELS_PATH)
128
132
  local_model_set = True
rasa/cli/scaffold.py CHANGED
@@ -5,9 +5,6 @@ from collections import defaultdict
5
5
  from enum import Enum
6
6
  from typing import List, Text
7
7
 
8
- import randomname
9
- import structlog
10
-
11
8
  from rasa import telemetry
12
9
  from rasa.api import train
13
10
  from rasa.cli import SubParsersAction
@@ -19,38 +16,21 @@ from rasa.shared.constants import (
19
16
  DEFAULT_MODELS_PATH,
20
17
  DOCS_BASE_URL,
21
18
  )
22
- from rasa.shared.utils import yaml
23
19
  from rasa.shared.utils.cli import print_error_and_exit, print_success
24
20
 
25
- structlogger = structlog.get_logger(__name__)
26
-
27
21
 
28
22
  class ProjectTemplateName(Enum):
29
23
  """Enum of CALM project templates."""
30
24
 
31
25
  DEFAULT = "default"
32
26
  TUTORIAL = "tutorial"
33
- BASIC = "basic"
34
- FINANCE = "finance"
35
- TELCO = "telco"
36
27
 
37
28
  def __str__(self) -> str:
38
29
  return self.value
39
30
 
40
- @classmethod
41
- def get_all_values(cls) -> List[str]:
42
- return [name.value for name in cls]
43
-
44
- @classmethod
45
- def supported_values(cls) -> str:
46
- return ", ".join(cls.get_all_values())
47
-
48
31
 
49
32
  template_domain_path = defaultdict(lambda: DEFAULT_DOMAIN_PATH)
50
33
  template_domain_path[ProjectTemplateName.DEFAULT] = "domain"
51
- template_domain_path[ProjectTemplateName.BASIC] = "domain"
52
- template_domain_path[ProjectTemplateName.FINANCE] = "domain"
53
- template_domain_path[ProjectTemplateName.TELCO] = "domain"
54
34
 
55
35
 
56
36
  def add_subparser(
@@ -179,33 +159,9 @@ def create_initial_project(
179
159
  path: Text, template: ProjectTemplateName = ProjectTemplateName.DEFAULT
180
160
  ) -> None:
181
161
  """Creates directory structure and templates for initial project."""
182
- import distutils.dir_util as dir_util
183
-
184
- # clear the cache of the copy_tree function, this avoids issues if
185
- # a project directory existed before and we removed folders in it
186
- # with shutil.rmtree. see
187
- # https://stackoverflow.com/questions/9160227/dir-util-copy-tree-fails-after-shutil-rmtree
188
- if hasattr(dir_util, "_path_created"):
189
- dir_util._path_created.clear()
190
- else:
191
- dir_util.SkipRepeatAbsolutePaths.clear() # type: ignore[attr-defined]
192
- dir_util.copy_tree(scaffold_path(template), path)
162
+ from distutils.dir_util import copy_tree
193
163
 
194
- create_random_assistant_id(path)
195
-
196
-
197
- def create_random_assistant_id(path: Text) -> None:
198
- """Create a random assistant id."""
199
- assistant_id = f"{randomname.get_name()}"
200
- config = yaml.read_yaml_file(os.path.join(path, "config.yml"))
201
-
202
- if isinstance(config, dict):
203
- config["assistant_id"] = assistant_id
204
- yaml.write_yaml(config, os.path.join(path, "config.yml"))
205
- else:
206
- structlogger.warning(
207
- "cli.scaffold.create_random_assistant_id.invalid_config", config=config
208
- )
164
+ copy_tree(scaffold_path(template), path)
209
165
 
210
166
 
211
167
  def scaffold_path(template: ProjectTemplateName) -> Text:
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.cli.arguments.default_arguments import add_sub_agents_param
9
10
  from rasa.core.available_endpoints import AvailableEndpoints
10
11
  from rasa.engine.storage.local_model_storage import LocalModelStorage
11
12
  from rasa.exceptions import ModelNotFound
@@ -45,6 +46,8 @@ def add_subparser(
45
46
  help="Set the conversation ID.",
46
47
  )
47
48
 
49
+ add_sub_agents_param(shell_parser)
50
+
48
51
  run_subparsers = shell_parser.add_subparsers()
49
52
 
50
53
  shell_nlu_subparser = run_subparsers.add_parser(
rasa/cli/train.py CHANGED
@@ -147,6 +147,7 @@ def run_training(args: argparse.Namespace, can_exit: bool = False) -> Optional[T
147
147
  args.fail_on_validation_warnings,
148
148
  args.validation_max_history,
149
149
  training_data_importer,
150
+ sub_agents=args.sub_agents,
150
151
  )
151
152
 
152
153
  training_result = train_all(
@@ -168,6 +169,7 @@ def run_training(args: argparse.Namespace, can_exit: bool = False) -> Optional[T
168
169
  file_importer=training_data_importer,
169
170
  keep_local_model_copy=args.keep_local_model_copy,
170
171
  remote_root_only=args.remote_root_only,
172
+ sub_agents=args.sub_agents,
171
173
  )
172
174
  if training_result.code != 0 and can_exit:
173
175
  display_research_study_prompt()
rasa/cli/utils.py CHANGED
@@ -11,9 +11,9 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Text, Union, overlo
11
11
  import randomname
12
12
  import structlog
13
13
 
14
- import rasa.shared.utils.cli
15
14
  import rasa.shared.utils.io
16
15
  from rasa import telemetry
16
+ from rasa.agents.validation import validate_agent_folder
17
17
  from rasa.exceptions import ModelNotFound, ValidationError
18
18
  from rasa.shared.constants import (
19
19
  ASSISTANT_ID_DEFAULT_VALUE,
@@ -257,6 +257,7 @@ def validate_files(
257
257
  stories_only: bool = False,
258
258
  flows_only: bool = False,
259
259
  translations_only: bool = False,
260
+ sub_agents: Optional[str] = None,
260
261
  ) -> None:
261
262
  """Validates either the story structure or the entire project.
262
263
 
@@ -267,6 +268,7 @@ def validate_files(
267
268
  stories_only: If `True`, only the story structure is validated.
268
269
  flows_only: If `True`, only the flows are validated.
269
270
  translations_only: If `True`, only the translations data is validated.
271
+ sub_agents: Path to sub-agents directory for validation.
270
272
  """
271
273
  from rasa.validator import Validator
272
274
 
@@ -302,6 +304,9 @@ def validate_files(
302
304
  valid_translations = True
303
305
  valid_CALM_slot_mappings = validator.validate_CALM_slot_mappings()
304
306
 
307
+ # Validate sub-agents if specified
308
+ valid_sub_agents = _validate_sub_agents(sub_agents) if sub_agents else True
309
+
305
310
  all_good = (
306
311
  valid_domain
307
312
  and valid_nlu
@@ -309,6 +314,7 @@ def validate_files(
309
314
  and valid_flows
310
315
  and valid_translations
311
316
  and valid_CALM_slot_mappings
317
+ and valid_sub_agents
312
318
  )
313
319
 
314
320
  if validator.config:
@@ -352,6 +358,84 @@ def _validate_domain(validator: "Validator") -> bool:
352
358
  )
353
359
 
354
360
 
361
+ def _validate_sub_agents(sub_agents_path: str) -> bool:
362
+ """Validates sub-agents configuration.
363
+
364
+ Args:
365
+ sub_agents_path: Path to the sub-agents directory.
366
+
367
+ Returns:
368
+ True if validation passes, False otherwise.
369
+ """
370
+ try:
371
+ # Check if the sub-agents directory exists
372
+ if not os.path.isdir(sub_agents_path):
373
+ # If the sub-agents-path points to the default folder and it doesn't exist,
374
+ # no agents are available.
375
+ # AvailableAgents will handle the non-existing folder gracefully.
376
+ from rasa.core.constants import DEFAULT_SUB_AGENTS
377
+
378
+ if sub_agents_path == DEFAULT_SUB_AGENTS:
379
+ structlogger.info(
380
+ "cli.validate_files.sub_agents_validation",
381
+ sub_agents_path=sub_agents_path,
382
+ event_info="Default sub-agents directory does not exist, "
383
+ "no sub-agents will be available.",
384
+ )
385
+ return True
386
+ else:
387
+ # For user-specified paths, the directory must exist
388
+ structlogger.error(
389
+ "cli.validate_files.sub_agents_validation_error",
390
+ sub_agents_path=sub_agents_path,
391
+ event_info=f"Sub-agents directory '{sub_agents_path}' "
392
+ "does not exist.",
393
+ )
394
+ return False
395
+
396
+ # Validate the actual config content using AvailableAgents
397
+ # This will validate file existence, structure, mandatory keys, etc.
398
+ try:
399
+ validate_agent_folder(sub_agents_path)
400
+
401
+ except ValidationError as e:
402
+ # This is a validation error - log it and return False
403
+ structlogger.error(
404
+ "cli.validate_files.sub_agents_validation_error",
405
+ sub_agents_path=sub_agents_path,
406
+ validation_error=str(e),
407
+ event_info=f"Sub-agents configuration validation failed: {e}",
408
+ )
409
+ return False
410
+
411
+ except Exception as e:
412
+ # This is an unexpected error
413
+ structlogger.error(
414
+ "cli.validate_files.sub_agents_validation_error",
415
+ sub_agents_path=sub_agents_path,
416
+ error=str(e),
417
+ event_info=f"Unexpected error during sub-agents validation: {e}",
418
+ )
419
+ return False
420
+
421
+ structlogger.info(
422
+ "cli.validate_files.sub_agents_validation_success",
423
+ sub_agents_path=sub_agents_path,
424
+ event_info="Sub-agents validation passed successfully.",
425
+ )
426
+ return True
427
+
428
+ except Exception as e:
429
+ # This is an unexpected error
430
+ structlogger.error(
431
+ "cli.validate_files.sub_agents_validation_error",
432
+ sub_agents_path=sub_agents_path,
433
+ error=str(e),
434
+ event_info="Sub-agents validation failed.",
435
+ )
436
+ return False
437
+
438
+
355
439
  def _validate_nlu(validator: "Validator", fail_on_warnings: bool) -> bool:
356
440
  return validator.verify_nlu(not fail_on_warnings)
357
441
 
rasa/constants.py CHANGED
@@ -22,8 +22,14 @@ MINIMUM_COMPATIBLE_VERSION = "3.11.0rc1"
22
22
 
23
23
  GLOBAL_USER_CONFIG_PATH = os.path.expanduser("~/.config/rasa/global.yml")
24
24
 
25
+ # Logging level for external libraries (default: ERROR to reduce noise)
25
26
  DEFAULT_LOG_LEVEL_LIBRARIES = "ERROR"
26
27
  ENV_LOG_LEVEL_LIBRARIES = "LOG_LEVEL_LIBRARIES"
28
+
29
+ # MCP (Model Context Protocol) logging configuration
30
+ ENV_LOG_LEVEL_MCP = "LOG_LEVEL_MCP"
31
+ ENV_MCP_LOGGING_ENABLED = "MCP_LOGGING_ENABLED"
32
+
27
33
  ENV_LOG_LEVEL_MATPLOTLIB = "LOG_LEVEL_MATPLOTLIB"
28
34
  ENV_LOG_LEVEL_RABBITMQ = "LOG_LEVEL_RABBITMQ"
29
35
  ENV_LOG_LEVEL_KAFKA = "LOG_LEVEL_KAFKA"
@@ -47,6 +47,7 @@ from rasa.shared.constants import (
47
47
  UTTER_PREFIX,
48
48
  )
49
49
  from rasa.shared.core.constants import (
50
+ ACTION_AGENT_REQUEST_USER_INPUT_NAME,
50
51
  ACTION_BACK_NAME,
51
52
  ACTION_DEACTIVATE_LOOP_NAME,
52
53
  ACTION_DEFAULT_ASK_AFFIRMATION_NAME,
@@ -56,6 +57,8 @@ from rasa.shared.core.constants import (
56
57
  ACTION_LISTEN_NAME,
57
58
  ACTION_METADATA_EXECUTION_ERROR_MESSAGE,
58
59
  ACTION_METADATA_EXECUTION_SUCCESS,
60
+ ACTION_METADATA_MESSAGE_KEY,
61
+ ACTION_METADATA_TEXT_KEY,
59
62
  ACTION_RESET_ROUTING,
60
63
  ACTION_RESTART_NAME,
61
64
  ACTION_REVERT_FALLBACK_EVENTS_NAME,
@@ -88,7 +91,12 @@ from rasa.shared.core.slot_mappings import (
88
91
  )
89
92
  from rasa.shared.core.trackers import DialogueStateTracker
90
93
  from rasa.shared.exceptions import RasaException
91
- from rasa.shared.nlu.constants import INTENT_NAME_KEY, INTENT_RANKING_KEY
94
+ from rasa.shared.nlu.constants import (
95
+ INTENT,
96
+ INTENT_NAME_KEY,
97
+ INTENT_RANKING_KEY,
98
+ PREDICTED_CONFIDENCE_KEY,
99
+ )
92
100
  from rasa.shared.utils.io import raise_warning
93
101
  from rasa.shared.utils.schemas.events import EVENTS_SCHEMA
94
102
  from rasa.utils.endpoints import EndpointConfig
@@ -113,6 +121,10 @@ def default_actions(action_endpoint: Optional[EndpointConfig] = None) -> List["A
113
121
  from rasa.core.actions.two_stage_fallback import TwoStageFallbackAction
114
122
  from rasa.dialogue_understanding.patterns.cancel import ActionCancelFlow
115
123
  from rasa.dialogue_understanding.patterns.clarify import ActionClarifyFlows
124
+ from rasa.dialogue_understanding.patterns.continue_interrupted import (
125
+ ActionCancelInterruptedFlows,
126
+ ActionContinueInterruptedFlow,
127
+ )
116
128
  from rasa.dialogue_understanding.patterns.correction import ActionCorrectFlowSlot
117
129
 
118
130
  return [
@@ -127,6 +139,7 @@ def default_actions(action_endpoint: Optional[EndpointConfig] = None) -> List["A
127
139
  TwoStageFallbackAction(action_endpoint),
128
140
  ActionUnlikelyIntent(),
129
141
  ActionSendText(),
142
+ ActionAgentRequestUserInfo(),
130
143
  ActionBack(),
131
144
  ActionExtractSlots(action_endpoint),
132
145
  ActionCancelFlow(),
@@ -139,6 +152,8 @@ def default_actions(action_endpoint: Optional[EndpointConfig] = None) -> List["A
139
152
  ActionResetRouting(),
140
153
  ActionHangup(),
141
154
  ActionRepeatBotMessages(),
155
+ ActionContinueInterruptedFlow(),
156
+ ActionCancelInterruptedFlows(),
142
157
  ]
143
158
 
144
159
 
@@ -873,8 +888,8 @@ class RemoteAction(Action):
873
888
  ) -> List[BotUttered]:
874
889
  """Use the responses generated by the action endpoint and utter them."""
875
890
  bot_messages = []
876
- domain: Domain = kwargs.get("domain", None)
877
- action_name: str = kwargs.get("action_name", None)
891
+ domain: Optional[Domain] = kwargs.get("domain", None)
892
+ action_name: Optional[str] = kwargs.get("action_name", None)
878
893
  for response in responses:
879
894
  generated_response = response.pop("response", None)
880
895
  if generated_response is not None:
@@ -897,6 +912,7 @@ class RemoteAction(Action):
897
912
  draft.setdefault("buttons", [])
898
913
  draft["buttons"].extend(buttons)
899
914
 
915
+ # Avoid overwriting `draft` values with empty values
900
916
  response = {k: v for k, v in response.items() if v}
901
917
  response.update(draft)
902
918
  bot_messages.append(create_bot_utterance(response))
@@ -1014,13 +1030,13 @@ def _revert_affirmation_events(tracker: "DialogueStateTracker") -> List[Event]:
1014
1030
  revert_events += _revert_rephrasing_events()
1015
1031
 
1016
1032
  last_user_event = tracker.get_last_event_for(UserUttered)
1017
- if not last_user_event:
1018
- raise TypeError("Cannot find last event to revert to.")
1033
+ if not last_user_event or not isinstance(last_user_event, UserUttered):
1034
+ raise TypeError("Cannot find last user uttered event to revert to.")
1019
1035
 
1020
1036
  last_user_event = copy.deepcopy(last_user_event)
1021
1037
  # FIXME: better type annotation for `parse_data` would require
1022
1038
  # a larger refactoring (e.g. switch to dataclass)
1023
- last_user_event.parse_data["intent"]["confidence"] = 1.0 # type: ignore[typeddict-item]
1039
+ last_user_event.parse_data[INTENT][PREDICTED_CONFIDENCE_KEY] = 1.0 # type: ignore[literal-required]
1024
1040
 
1025
1041
  return revert_events + [last_user_event]
1026
1042
 
@@ -1037,8 +1053,8 @@ def _revert_single_affirmation_events() -> List[Event]:
1037
1053
 
1038
1054
  def _revert_successful_rephrasing(tracker: "DialogueStateTracker") -> List[Event]:
1039
1055
  last_user_event = tracker.get_last_event_for(UserUttered)
1040
- if not last_user_event:
1041
- raise TypeError("Cannot find last event to revert to.")
1056
+ if not last_user_event or not isinstance(last_user_event, UserUttered):
1057
+ raise TypeError("Cannot find last user uttered event to revert to.")
1042
1058
 
1043
1059
  last_user_event = copy.deepcopy(last_user_event)
1044
1060
  return _revert_rephrasing_events() + [last_user_event]
@@ -1138,9 +1154,9 @@ class ActionSendText(Action):
1138
1154
  metadata: Optional[Dict[Text, Any]] = None,
1139
1155
  ) -> List[Event]:
1140
1156
  """Runs action. Please see parent class for the full docstring."""
1141
- fallback = {"text": ""}
1157
+ fallback = {ACTION_METADATA_TEXT_KEY: ""}
1142
1158
  metadata_copy = copy.deepcopy(metadata) if metadata else {}
1143
- message = metadata_copy.get("message", fallback)
1159
+ message = metadata_copy.get(ACTION_METADATA_MESSAGE_KEY, fallback)
1144
1160
 
1145
1161
  should_send_text = metadata_copy.get("should_send_text", True)
1146
1162
  if should_send_text:
@@ -1148,6 +1164,32 @@ class ActionSendText(Action):
1148
1164
  return []
1149
1165
 
1150
1166
 
1167
+ class ActionAgentRequestUserInfo(Action):
1168
+ """Sends a text message to the output channel that requests some user information.
1169
+
1170
+ The difference to `ActionSendText` is that this action will pause the main advancing
1171
+ flow loop until the user responds to the request
1172
+ (`should_predict_another_action` will return False for this action).
1173
+ """
1174
+
1175
+ def name(self) -> Text:
1176
+ return ACTION_AGENT_REQUEST_USER_INPUT_NAME
1177
+
1178
+ async def run(
1179
+ self,
1180
+ output_channel: "OutputChannel",
1181
+ nlg: "NaturalLanguageGenerator",
1182
+ tracker: "DialogueStateTracker",
1183
+ domain: "Domain",
1184
+ metadata: Optional[Dict[Text, Any]] = None,
1185
+ ) -> List[Event]:
1186
+ """Runs action. Please see parent class for the full docstring."""
1187
+ fallback = {ACTION_METADATA_TEXT_KEY: ""}
1188
+ metadata_copy = copy.deepcopy(metadata) if metadata else {}
1189
+ message = metadata_copy.get(ACTION_METADATA_MESSAGE_KEY, fallback)
1190
+ return [create_bot_utterance(message)]
1191
+
1192
+
1151
1193
  class ActionExtractSlots(Action):
1152
1194
  """Default action that runs after each user turn.
1153
1195
 
rasa/core/agent.py CHANGED
@@ -12,7 +12,9 @@ import aiohttp
12
12
  from aiohttp import ClientError
13
13
 
14
14
  import rasa.shared.utils.io
15
+ from rasa.agents.utils import initialize_agents
15
16
  from rasa.core import jobs
17
+ from rasa.core.available_agents import AvailableAgents
16
18
  from rasa.core.available_endpoints import AvailableEndpoints
17
19
  from rasa.core.channels.channel import OutputChannel, UserMessage
18
20
  from rasa.core.constants import DEFAULT_REQUEST_TIMEOUT
@@ -34,7 +36,7 @@ from rasa.privacy.privacy_manager import BackgroundPrivacyManager
34
36
  from rasa.shared.constants import DEFAULT_SENDER_ID
35
37
  from rasa.shared.core.domain import Domain
36
38
  from rasa.shared.core.trackers import DialogueStateTracker, EventVerbosity
37
- from rasa.shared.exceptions import RasaException
39
+ from rasa.shared.exceptions import AgentInitializationException, RasaException
38
40
  from rasa.telemetry import track_privacy_enabled
39
41
  from rasa.utils.common import TempDirectoryPath, get_temp_dir_name
40
42
  from rasa.utils.endpoints import EndpointConfig
@@ -202,6 +204,7 @@ async def load_agent(
202
204
  model_server: Optional[EndpointConfig] = None,
203
205
  remote_storage: Optional[StorageType] = None,
204
206
  endpoints: Optional[AvailableEndpoints] = None,
207
+ sub_agents: Optional[AvailableAgents] = None,
205
208
  loop: Optional[AbstractEventLoop] = None,
206
209
  ) -> Agent:
207
210
  """Loads agent from server, remote storage or disk.
@@ -211,6 +214,7 @@ async def load_agent(
211
214
  model_server: Configuration for a potential server which serves the model.
212
215
  remote_storage: Remote storage to use for loading the model.
213
216
  endpoints: Endpoint configuration.
217
+ sub_agents: Sub-agents configuration.
214
218
  loop: Optional async loop to pass to broker creation.
215
219
 
216
220
  Returns:
@@ -281,8 +285,20 @@ async def load_agent(
281
285
  "No valid configuration given to load agent. "
282
286
  "Agent loaded with no model!"
283
287
  )
288
+
289
+ if agent.processor:
290
+ flows = await agent.processor.get_flows()
291
+ domain = agent.processor.domain
292
+ # CLI commands that accept --sub-agents
293
+ # all route through this entry point.
294
+ # With all required data available,
295
+ # this is the best spot to initialize the subagents.
296
+ await initialize_agents(flows, domain, sub_agents)
297
+
284
298
  return agent
285
299
 
300
+ except AgentInitializationException as e:
301
+ raise e
286
302
  except Exception as e:
287
303
  logger.error(f"Could not load model due to {e}.", exc_info=True)
288
304
  return agent
@@ -322,6 +338,7 @@ class Agent:
322
338
  remote_storage: Optional[StorageType] = None,
323
339
  http_interpreter: Optional[RasaNLUHttpInterpreter] = None,
324
340
  endpoints: Optional[AvailableEndpoints] = None,
341
+ sub_agents: Optional[AvailableAgents] = None,
325
342
  privacy_manager: Optional[BackgroundPrivacyManager] = None,
326
343
  ):
327
344
  """Initializes an `Agent`."""
@@ -334,6 +351,7 @@ class Agent:
334
351
  self.action_endpoint = action_endpoint
335
352
  self.http_interpreter = http_interpreter
336
353
  self.endpoints = endpoints
354
+ self.sub_agents = sub_agents
337
355
 
338
356
  self._set_fingerprint(fingerprint)
339
357
  self.model_server = model_server