rasa-pro 3.14.0.dev5__py3-none-any.whl → 3.14.0.dev6__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 (464) 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 +8 -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 +684 -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 +72 -0
  20. rasa/api.py +5 -0
  21. rasa/cli/arguments/default_arguments.py +12 -0
  22. rasa/cli/arguments/run.py +2 -0
  23. rasa/cli/dialogue_understanding_test.py +4 -0
  24. rasa/cli/e2e_test.py +4 -0
  25. rasa/cli/inspect.py +3 -0
  26. rasa/cli/llm_fine_tuning.py +5 -0
  27. rasa/cli/project_templates/tutorial/config.yml +1 -2
  28. rasa/cli/run.py +4 -0
  29. rasa/cli/scaffold.py +2 -46
  30. rasa/cli/shell.py +3 -0
  31. rasa/constants.py +6 -0
  32. rasa/core/actions/action.py +56 -10
  33. rasa/core/agent.py +19 -1
  34. rasa/core/available_agents.py +199 -0
  35. rasa/core/available_endpoints.py +30 -0
  36. rasa/core/channels/channel.py +3 -4
  37. rasa/core/channels/development_inspector.py +4 -4
  38. rasa/core/channels/hangouts.py +2 -2
  39. rasa/core/channels/inspector/dist/assets/{arc-18042c22.js → arc-63212852.js} +1 -1
  40. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-fdd6bcfa.js → blockDiagram-38ab4fdb-eecf6b13.js} +1 -1
  41. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-f5ae6786.js → c4Diagram-3d4e48cf-8f798a9a.js} +1 -1
  42. rasa/core/channels/inspector/dist/assets/channel-0cd70adf.js +1 -0
  43. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-81efba3e.js → classDiagram-70f12bd4-df71a04c.js} +1 -1
  44. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-3b6b6a92.js → classDiagram-v2-f2320105-9b275968.js} +1 -1
  45. rasa/core/channels/inspector/dist/assets/clone-a0f9c4ed.js +1 -0
  46. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-31422447.js → createText-2e5e7dd3-1c669cad.js} +1 -1
  47. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-518a90db.js → edges-e0da2a9e-b1553799.js} +1 -1
  48. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-a6d3c25a.js → erDiagram-9861fffd-112388d6.js} +1 -1
  49. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e048c2be.js → flowDb-956e92f1-fdebec47.js} +1 -1
  50. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-c7474c91.js → flowDiagram-66a62f08-6280ede1.js} +1 -1
  51. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-de9cc4aa.js +1 -0
  52. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-cb4d8723.js → flowchart-elk-definition-4a651766-e1dc03e5.js} +1 -1
  53. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-346636a2.js → ganttDiagram-c361ad54-83f68c51.js} +1 -1
  54. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-7c508874.js → gitGraphDiagram-72cf32ee-22f8666f.js} +1 -1
  55. rasa/core/channels/inspector/dist/assets/{graph-14702d8a.js → graph-ca9e6217.js} +1 -1
  56. rasa/core/channels/inspector/dist/assets/{index-3862675e-f18b534b.js → index-3862675e-c5ceb692.js} +1 -1
  57. rasa/core/channels/inspector/dist/assets/index-3e293924.js +1353 -0
  58. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-64154b83.js → infoDiagram-f8f76790-faa9999b.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-833a5f95.js → journeyDiagram-49397b02-c4dda8d9.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/{layout-5a3b2123.js → layout-d4307784.js} +1 -1
  61. rasa/core/channels/inspector/dist/assets/{line-2272a8c7.js → line-0567aaa7.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/{linear-35bcf273.js → linear-c11b95cf.js} +1 -1
  63. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-92dcb0e9.js → mindmap-definition-fc14e90a-0c7d3ca9.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-94dbc900.js → pieDiagram-8a3498a8-34b433fa.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-8b7a9c33.js → quadrantDiagram-120e2f19-4cab816e.js} +1 -1
  66. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-6f7eab81.js → requirementDiagram-deff3bca-8c22fa9e.js} +1 -1
  67. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-f43e581d.js → sankeyDiagram-04a897e0-70ce9e8e.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-0bcbefc3.js → sequenceDiagram-704730f1-fbcd7fc9.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-b8a74083.js → stateDiagram-587899a1-45f05ea6.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-2070218f.js → stateDiagram-v2-d93cdb3a-beab1ea6.js} +1 -1
  71. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-f1d54e34.js → styles-6aaf32cf-2f29dbd5.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-980de489.js → styles-9a916d00-951eac83.js} +1 -1
  73. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-3c03abde.js → styles-c10674c1-897fbfdd.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-46ba068f.js → svgDrawCommon-08f97a94-d667fac1.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-901f5e3d.js → timeline-definition-85554ec2-e3205144.js} +1 -1
  76. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-acbc628a.js → xychartDiagram-e933f94c-4abeb0e2.js} +1 -1
  77. rasa/core/channels/inspector/dist/index.html +2 -2
  78. rasa/core/channels/inspector/index.html +1 -1
  79. rasa/core/channels/inspector/src/App.tsx +11 -10
  80. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +3 -12
  81. rasa/core/channels/inspector/src/components/DialogueStack.tsx +6 -4
  82. rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
  83. rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
  84. rasa/core/channels/inspector/src/types.ts +4 -0
  85. rasa/core/channels/socketio.py +51 -212
  86. rasa/core/channels/studio_chat.py +29 -49
  87. rasa/core/channels/voice_stream/genesys.py +1 -1
  88. rasa/core/channels/voice_stream/voice_channel.py +3 -5
  89. rasa/core/constants.py +4 -0
  90. rasa/core/policies/enterprise_search_policy.py +11 -6
  91. rasa/core/policies/flow_policy.py +4 -4
  92. rasa/core/policies/flows/flow_executor.py +470 -45
  93. rasa/core/policies/flows/mcp_tool_executor.py +277 -0
  94. rasa/core/policies/intentless_policy.py +1 -1
  95. rasa/core/policies/unexpected_intent_policy.py +1 -0
  96. rasa/core/processor.py +18 -15
  97. rasa/core/run.py +11 -14
  98. rasa/core/tracker_stores/tracker_store.py +3 -7
  99. rasa/core/train.py +1 -1
  100. rasa/core/training/interactive.py +16 -16
  101. rasa/core/training/story_conflict.py +5 -5
  102. rasa/core/utils.py +21 -1
  103. rasa/dialogue_understanding/commands/__init__.py +8 -0
  104. rasa/dialogue_understanding/commands/cancel_flow_command.py +97 -4
  105. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +11 -0
  106. rasa/dialogue_understanding/commands/clarify_command.py +10 -0
  107. rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
  108. rasa/dialogue_understanding/commands/knowledge_answer_command.py +11 -0
  109. rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
  110. rasa/dialogue_understanding/commands/start_flow_command.py +164 -8
  111. rasa/dialogue_understanding/commands/utils.py +6 -2
  112. rasa/dialogue_understanding/generator/command_parser.py +4 -0
  113. rasa/dialogue_understanding/generator/flow_retrieval.py +9 -10
  114. rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
  115. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  116. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  117. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +61 -0
  118. 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
  119. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +81 -0
  120. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +81 -0
  121. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +7 -6
  122. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +7 -6
  123. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +41 -2
  124. rasa/dialogue_understanding/patterns/continue_interrupted.py +163 -1
  125. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +52 -8
  126. rasa/dialogue_understanding/processor/command_processor.py +31 -15
  127. rasa/dialogue_understanding/stack/dialogue_stack.py +123 -2
  128. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
  129. rasa/dialogue_understanding/stack/utils.py +17 -2
  130. rasa/dialogue_understanding_test/du_test_runner.py +7 -2
  131. rasa/e2e_test/e2e_test_runner.py +12 -2
  132. rasa/engine/caching.py +2 -2
  133. rasa/engine/recipes/default_components.py +10 -18
  134. rasa/engine/storage/local_model_storage.py +2 -45
  135. rasa/graph_components/validators/default_recipe_validator.py +134 -134
  136. rasa/hooks.py +5 -5
  137. rasa/llm_fine_tuning/utils.py +2 -2
  138. rasa/model_manager/model_api.py +5 -4
  139. rasa/model_manager/runner_service.py +1 -1
  140. rasa/model_manager/socket_bridge.py +14 -20
  141. rasa/model_manager/trainer_service.py +9 -12
  142. rasa/model_manager/utils.py +29 -1
  143. rasa/model_manager/warm_rasa_process.py +1 -1
  144. rasa/nlu/extractors/extractor.py +2 -1
  145. rasa/plugin.py +8 -8
  146. rasa/privacy/privacy_manager.py +11 -2
  147. rasa/server.py +14 -2
  148. rasa/shared/agents/utils.py +35 -0
  149. rasa/shared/constants.py +5 -0
  150. rasa/shared/core/constants.py +12 -1
  151. rasa/shared/core/domain.py +11 -58
  152. rasa/shared/core/events.py +327 -0
  153. rasa/shared/core/flows/flow_step.py +1 -7
  154. rasa/shared/core/flows/flows_list.py +15 -5
  155. rasa/shared/core/flows/flows_yaml_schema.json +112 -186
  156. rasa/shared/core/flows/steps/call.py +53 -5
  157. rasa/shared/core/flows/validation.py +177 -7
  158. rasa/shared/core/flows/yaml_flows_io.py +9 -17
  159. rasa/shared/core/slots.py +2 -6
  160. rasa/shared/core/trackers.py +5 -2
  161. rasa/shared/exceptions.py +4 -0
  162. rasa/shared/importers/importer.py +0 -6
  163. rasa/shared/importers/rasa.py +1 -1
  164. rasa/shared/importers/utils.py +10 -80
  165. rasa/shared/providers/_utils.py +44 -60
  166. rasa/shared/providers/embedding/default_litellm_embedding_client.py +0 -2
  167. rasa/shared/providers/llm/_base_litellm_client.py +39 -7
  168. rasa/shared/providers/llm/default_litellm_llm_client.py +0 -2
  169. rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
  170. rasa/shared/providers/llm/llm_client.py +7 -3
  171. rasa/shared/providers/llm/llm_response.py +66 -0
  172. rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
  173. rasa/shared/utils/llm.py +28 -5
  174. rasa/shared/utils/mcp/server_connection.py +166 -0
  175. rasa/shared/utils/schemas/events.py +42 -0
  176. rasa/shared/utils/yaml.py +3 -1
  177. rasa/studio/upload.py +47 -16
  178. rasa/telemetry.py +23 -97
  179. rasa/tracing/instrumentation/instrumentation.py +14 -10
  180. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  181. rasa/utils/common.py +79 -0
  182. rasa/utils/io.py +9 -27
  183. rasa/utils/json_utils.py +1 -6
  184. rasa/utils/log_utils.py +2 -6
  185. rasa/utils/ml_utils.py +1 -1
  186. rasa/utils/tensorflow/rasa_layers.py +1 -1
  187. rasa/utils/train_utils.py +15 -15
  188. rasa/validator.py +19 -21
  189. rasa/version.py +1 -1
  190. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/METADATA +14 -17
  191. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/RECORD +201 -432
  192. rasa/builder/README.md +0 -120
  193. rasa/builder/auth.py +0 -176
  194. rasa/builder/config.py +0 -115
  195. rasa/builder/copilot/constants.py +0 -25
  196. rasa/builder/copilot/copilot.py +0 -372
  197. rasa/builder/copilot/copilot_response_handler.py +0 -487
  198. rasa/builder/copilot/copilot_templated_message_provider.py +0 -58
  199. rasa/builder/copilot/exceptions.py +0 -20
  200. rasa/builder/copilot/models.py +0 -431
  201. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +0 -726
  202. rasa/builder/copilot/telemetry.py +0 -195
  203. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +0 -16
  204. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +0 -26
  205. rasa/builder/document_retrieval/constants.py +0 -15
  206. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +0 -64
  207. rasa/builder/document_retrieval/inkeep_document_retrieval.py +0 -238
  208. rasa/builder/document_retrieval/models.py +0 -62
  209. rasa/builder/download.py +0 -140
  210. rasa/builder/exceptions.py +0 -55
  211. rasa/builder/guardrails/__init__.py +0 -1
  212. rasa/builder/guardrails/constants.py +0 -3
  213. rasa/builder/guardrails/exceptions.py +0 -4
  214. rasa/builder/guardrails/lakera.py +0 -206
  215. rasa/builder/guardrails/models.py +0 -199
  216. rasa/builder/guardrails/utils.py +0 -305
  217. rasa/builder/job_manager.py +0 -87
  218. rasa/builder/jobs.py +0 -234
  219. rasa/builder/llm_service.py +0 -246
  220. rasa/builder/logging_utils.py +0 -209
  221. rasa/builder/main.py +0 -174
  222. rasa/builder/models.py +0 -197
  223. rasa/builder/project_generator.py +0 -450
  224. rasa/builder/project_info.py +0 -72
  225. rasa/builder/scrape_rasa_docs.py +0 -97
  226. rasa/builder/service.py +0 -1142
  227. rasa/builder/shared/tracker_context.py +0 -212
  228. rasa/builder/skill_to_bot_prompt.jinja2 +0 -164
  229. rasa/builder/training_service.py +0 -132
  230. rasa/builder/validation_service.py +0 -93
  231. rasa/cli/project_templates/basic/actions/action_api.py +0 -15
  232. rasa/cli/project_templates/basic/actions/action_human_handoff.py +0 -44
  233. rasa/cli/project_templates/basic/config.yml +0 -23
  234. rasa/cli/project_templates/basic/credentials.yml +0 -34
  235. rasa/cli/project_templates/basic/data/general/feedback.yml +0 -20
  236. rasa/cli/project_templates/basic/data/general/goodbye.yml +0 -6
  237. rasa/cli/project_templates/basic/data/general/hello.yml +0 -7
  238. rasa/cli/project_templates/basic/data/general/help.yml +0 -6
  239. rasa/cli/project_templates/basic/data/general/human_handoff.yml +0 -16
  240. rasa/cli/project_templates/basic/data/general/welcome.yml +0 -9
  241. rasa/cli/project_templates/basic/data/system/pattern_completed.yml +0 -7
  242. rasa/cli/project_templates/basic/data/system/pattern_correction.yml +0 -7
  243. rasa/cli/project_templates/basic/data/system/pattern_search.yml +0 -8
  244. rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +0 -8
  245. rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +0 -65
  246. rasa/cli/project_templates/basic/docs/template.txt +0 -7
  247. rasa/cli/project_templates/basic/domain/general/assistant_details.yml +0 -12
  248. rasa/cli/project_templates/basic/domain/general/bot_identity.yml +0 -5
  249. rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +0 -5
  250. rasa/cli/project_templates/basic/domain/general/feedback.yml +0 -28
  251. rasa/cli/project_templates/basic/domain/general/goodbye.yml +0 -7
  252. rasa/cli/project_templates/basic/domain/general/help.yml +0 -5
  253. rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +0 -35
  254. rasa/cli/project_templates/basic/domain/general/utils.yml +0 -13
  255. rasa/cli/project_templates/basic/domain/general/welcome.yml +0 -7
  256. rasa/cli/project_templates/basic/endpoints.yml +0 -73
  257. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +0 -19
  258. rasa/cli/project_templates/finance/actions/__init__.py +0 -46
  259. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +0 -47
  260. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +0 -40
  261. rasa/cli/project_templates/finance/actions/action_session_start.py +0 -74
  262. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +0 -48
  263. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +0 -36
  264. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +0 -54
  265. rasa/cli/project_templates/finance/actions/database.py +0 -277
  266. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  267. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +0 -52
  268. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +0 -51
  269. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +0 -40
  270. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +0 -40
  271. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +0 -46
  272. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +0 -18
  273. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +0 -49
  274. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +0 -19
  275. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +0 -36
  276. rasa/cli/project_templates/finance/config.yml +0 -21
  277. rasa/cli/project_templates/finance/credentials.yml +0 -32
  278. rasa/cli/project_templates/finance/csvs/accounts.csv +0 -8
  279. rasa/cli/project_templates/finance/csvs/advisors.csv +0 -7
  280. rasa/cli/project_templates/finance/csvs/appointments.csv +0 -211
  281. rasa/cli/project_templates/finance/csvs/branches.csv +0 -10
  282. rasa/cli/project_templates/finance/csvs/cards.csv +0 -11
  283. rasa/cli/project_templates/finance/csvs/payees.csv +0 -11
  284. rasa/cli/project_templates/finance/csvs/transactions.csv +0 -71
  285. rasa/cli/project_templates/finance/csvs/users.csv +0 -4
  286. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +0 -10
  287. rasa/cli/project_templates/finance/data/cards/block_card.yml +0 -66
  288. rasa/cli/project_templates/finance/data/cards/select_card.yml +0 -12
  289. rasa/cli/project_templates/finance/data/general/bot_identity.yml +0 -6
  290. rasa/cli/project_templates/finance/data/general/feedback.yml +0 -20
  291. rasa/cli/project_templates/finance/data/general/goodbye.yml +0 -6
  292. rasa/cli/project_templates/finance/data/general/hello.yml +0 -7
  293. rasa/cli/project_templates/finance/data/general/help.yml +0 -9
  294. rasa/cli/project_templates/finance/data/general/human_handoff.yml +0 -16
  295. rasa/cli/project_templates/finance/data/general/welcome.yml +0 -9
  296. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +0 -5
  297. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +0 -7
  298. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +0 -7
  299. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +0 -8
  300. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +0 -8
  301. rasa/cli/project_templates/finance/data/system/source/accounts.json +0 -51
  302. rasa/cli/project_templates/finance/data/system/source/advisors.json +0 -44
  303. rasa/cli/project_templates/finance/data/system/source/appointments.json +0 -1474
  304. rasa/cli/project_templates/finance/data/system/source/branches.json +0 -47
  305. rasa/cli/project_templates/finance/data/system/source/cards.json +0 -72
  306. rasa/cli/project_templates/finance/data/system/source/payees.json +0 -74
  307. rasa/cli/project_templates/finance/data/system/source/transactions.json +0 -492
  308. rasa/cli/project_templates/finance/data/system/source/users.json +0 -29
  309. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +0 -29
  310. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +0 -5
  311. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +0 -21
  312. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +0 -67
  313. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +0 -8
  314. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +0 -8
  315. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +0 -8
  316. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +0 -8
  317. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +0 -8
  318. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +0 -7
  319. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +0 -8
  320. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +0 -8
  321. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +0 -8
  322. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +0 -8
  323. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +0 -8
  324. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +0 -8
  325. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +0 -8
  326. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +0 -8
  327. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +0 -8
  328. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +0 -8
  329. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +0 -8
  330. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +0 -8
  331. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +0 -8
  332. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +0 -8
  333. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +0 -50
  334. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +0 -50
  335. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +0 -48
  336. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +0 -50
  337. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +0 -50
  338. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +0 -47
  339. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +0 -50
  340. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +0 -50
  341. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +0 -47
  342. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +0 -50
  343. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +0 -50
  344. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +0 -50
  345. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +0 -47
  346. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +0 -50
  347. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +0 -50
  348. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +0 -47
  349. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +0 -50
  350. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +0 -50
  351. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +0 -47
  352. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +0 -50
  353. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +0 -50
  354. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +0 -47
  355. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +0 -47
  356. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +0 -50
  357. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +0 -50
  358. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +0 -47
  359. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +0 -50
  360. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +0 -50
  361. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +0 -47
  362. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +0 -50
  363. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +0 -50
  364. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +0 -47
  365. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +0 -50
  366. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +0 -50
  367. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +0 -50
  368. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +0 -47
  369. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +0 -50
  370. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +0 -50
  371. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +0 -47
  372. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +0 -50
  373. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +0 -50
  374. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +0 -47
  375. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +0 -50
  376. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +0 -50
  377. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +0 -50
  378. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +0 -47
  379. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +0 -50
  380. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +0 -50
  381. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +0 -47
  382. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +0 -50
  383. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +0 -50
  384. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +0 -47
  385. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +0 -50
  386. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +0 -50
  387. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +0 -47
  388. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +0 -47
  389. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +0 -50
  390. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +0 -50
  391. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +0 -50
  392. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +0 -50
  393. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +0 -47
  394. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +0 -11
  395. rasa/cli/project_templates/finance/domain/cards/block_card.yml +0 -101
  396. rasa/cli/project_templates/finance/domain/cards/select_card.yml +0 -12
  397. rasa/cli/project_templates/finance/domain/general/assistant_details.yml +0 -12
  398. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +0 -5
  399. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +0 -5
  400. rasa/cli/project_templates/finance/domain/general/defaults.yml +0 -24
  401. rasa/cli/project_templates/finance/domain/general/feedback.yml +0 -28
  402. rasa/cli/project_templates/finance/domain/general/goodbye.yml +0 -7
  403. rasa/cli/project_templates/finance/domain/general/help.yml +0 -5
  404. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +0 -30
  405. rasa/cli/project_templates/finance/domain/general/utils.yml +0 -13
  406. rasa/cli/project_templates/finance/domain/general/welcome.yml +0 -8
  407. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +0 -47
  408. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +0 -4
  409. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +0 -16
  410. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +0 -79
  411. rasa/cli/project_templates/finance/endpoints.yml +0 -63
  412. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +0 -19
  413. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  414. rasa/cli/project_templates/telco/actions/actions_billing.py +0 -204
  415. rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +0 -48
  416. rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +0 -28
  417. rasa/cli/project_templates/telco/actions/actions_session_start.py +0 -18
  418. rasa/cli/project_templates/telco/config.yml +0 -25
  419. rasa/cli/project_templates/telco/credentials.yml +0 -33
  420. rasa/cli/project_templates/telco/csvs/billing.csv +0 -10
  421. rasa/cli/project_templates/telco/csvs/customers.csv +0 -5
  422. rasa/cli/project_templates/telco/data/flows/flow_global.yml +0 -5
  423. rasa/cli/project_templates/telco/data/flows/flow_reboot_router.yml +0 -8
  424. rasa/cli/project_templates/telco/data/flows/flow_reset_router.yml +0 -7
  425. rasa/cli/project_templates/telco/data/flows/flow_solve_internet_issue.yml +0 -73
  426. rasa/cli/project_templates/telco/data/flows/flow_undertand_bill.yml +0 -45
  427. rasa/cli/project_templates/telco/data/patterns/pattern_completed.yml +0 -7
  428. rasa/cli/project_templates/telco/data/patterns/pattern_human_handoff.yml +0 -6
  429. rasa/cli/project_templates/telco/data/patterns/pattern_search.yml +0 -7
  430. rasa/cli/project_templates/telco/data/patterns/pattern_session_start.yml +0 -9
  431. rasa/cli/project_templates/telco/docs/reset_vs_rboot_router.txt +0 -1
  432. rasa/cli/project_templates/telco/docs/restart_router.txt +0 -6
  433. rasa/cli/project_templates/telco/docs/run_speed_test.txt +0 -6
  434. rasa/cli/project_templates/telco/domain/domain_global.yml +0 -29
  435. rasa/cli/project_templates/telco/domain/domain_patterns.yml +0 -17
  436. rasa/cli/project_templates/telco/domain/domain_reboot_router.yml +0 -20
  437. rasa/cli/project_templates/telco/domain/domain_reset_router.yml +0 -11
  438. rasa/cli/project_templates/telco/domain/domain_run_speed_test.yml +0 -24
  439. rasa/cli/project_templates/telco/domain/domain_solve_internet_issue.yml +0 -74
  440. rasa/cli/project_templates/telco/domain/domain_undertand_bill.yml +0 -102
  441. rasa/cli/project_templates/telco/endpoints.yml +0 -60
  442. rasa/cli/project_templates/telco/tests/e2e_results_failed.yml +0 -62
  443. rasa/cli/project_templates/telco/tests/e2e_results_passed.yml +0 -130
  444. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing_test_cases.yml +0 -68
  445. rasa/cli/project_templates/telco/tests/e2e_test_cases/global_test_cases.yml +0 -13
  446. rasa/cli/project_templates/telco/tests/e2e_test_cases/internet_slow_test_case.yml +0 -47
  447. rasa/cli/project_templates/telco/tests/e2e_test_cases/out_of_scope_test_case.yml +0 -21
  448. rasa/cli/project_templates/telco/tests/e2e_test_cases/patterns_test_cases.yml +0 -15
  449. rasa/core/channels/constants.py +0 -3
  450. rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +0 -1
  451. rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +0 -1
  452. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +0 -1
  453. rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +0 -1335
  454. rasa/utils/openapi.py +0 -144
  455. /rasa/{builder → agents}/__init__.py +0 -0
  456. /rasa/{builder/copilot → agents/core}/__init__.py +0 -0
  457. /rasa/{builder/copilot/prompts → agents/protocol/a2a}/__init__.py +0 -0
  458. /rasa/{builder/copilot/templated_messages → agents/protocol/mcp}/__init__.py +0 -0
  459. /rasa/{builder/document_retrieval → agents/templates}/__init__.py +0 -0
  460. /rasa/{cli/project_templates/finance/actions/accounts → shared/agents}/__init__.py +0 -0
  461. /rasa/{cli/project_templates/finance/actions/cards → shared/utils/mcp}/__init__.py +0 -0
  462. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/NOTICE +0 -0
  463. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/WHEEL +0 -0
  464. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev6.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,134 @@
1
+ from typing import Any, Callable, Dict, Optional
2
+
3
+ from mcp import Tool
4
+ from pydantic import BaseModel
5
+
6
+ from rasa.agents.constants import (
7
+ TOOL_ADDITIONAL_PROPERTIES_KEY,
8
+ TOOL_DESCRIPTION_KEY,
9
+ TOOL_EXECUTOR_KEY,
10
+ TOOL_NAME_KEY,
11
+ TOOL_PARAMETERS_KEY,
12
+ TOOL_PROPERTIES_KEY,
13
+ TOOL_PROPERTY_TYPE_KEY,
14
+ TOOL_REQUIRED_KEY,
15
+ TOOL_STRICT_KEY,
16
+ TOOL_TYPE_FUNCTION_KEY,
17
+ TOOL_TYPE_KEY,
18
+ )
19
+
20
+
21
+ class AgentToolSchema(BaseModel):
22
+ name: str
23
+ parameters: dict[str, Any]
24
+ strict: bool
25
+ description: Optional[str] = None
26
+ type: str = "function"
27
+
28
+ @classmethod
29
+ def from_mcp_tool(cls, tool: Tool) -> "AgentToolSchema":
30
+ """Convert MCP Tool to AgentToolSchema."""
31
+ parameters = tool.inputSchema.copy() if tool.inputSchema else {}
32
+
33
+ if parameters:
34
+ cls._validate_and_fix_parameters(parameters)
35
+
36
+ return cls(
37
+ name=tool.name,
38
+ description=tool.description,
39
+ parameters=parameters,
40
+ strict=False,
41
+ type=TOOL_TYPE_FUNCTION_KEY,
42
+ )
43
+
44
+ @classmethod
45
+ def from_openai_json_format(cls, tool: Dict[str, Any]) -> "AgentToolSchema":
46
+ """Convert OpenAI dict format to AgentToolSchema."""
47
+ function_data = tool[TOOL_TYPE_FUNCTION_KEY]
48
+ parameters = function_data.get(TOOL_PARAMETERS_KEY, {})
49
+
50
+ if parameters:
51
+ cls._validate_and_fix_parameters(parameters)
52
+
53
+ return cls(
54
+ name=function_data[TOOL_NAME_KEY],
55
+ description=function_data[TOOL_DESCRIPTION_KEY],
56
+ parameters=parameters,
57
+ strict=function_data.get(TOOL_STRICT_KEY, False),
58
+ type=tool[TOOL_TYPE_KEY],
59
+ )
60
+
61
+ @staticmethod
62
+ def _validate_and_fix_parameters(parameters: Dict[str, Any]) -> None:
63
+ """Validate and fix parameters to ensure they meet OpenAI function calling
64
+ requirements."""
65
+ if not parameters:
66
+ return
67
+
68
+ # Ensure additionalProperties is set at the top level
69
+ if TOOL_ADDITIONAL_PROPERTIES_KEY not in parameters:
70
+ parameters[TOOL_ADDITIONAL_PROPERTIES_KEY] = False
71
+
72
+ # Ensure required is set at the top level
73
+ if TOOL_REQUIRED_KEY not in parameters:
74
+ parameters[TOOL_REQUIRED_KEY] = []
75
+
76
+ # Ensure all properties have types, required field and additionalProperties
77
+ if TOOL_PROPERTIES_KEY in parameters:
78
+ AgentToolSchema._ensure_property_types(parameters)
79
+
80
+ @staticmethod
81
+ def _ensure_property_types(parameters: Dict[str, Any]) -> None:
82
+ """Ensure all properties in parameters have a type defined and
83
+ additionalProperties is set."""
84
+ properties = parameters[TOOL_PROPERTIES_KEY]
85
+
86
+ if not properties:
87
+ return
88
+
89
+ for _, prop_schema in properties.items():
90
+ if not isinstance(prop_schema, dict):
91
+ continue
92
+
93
+ # Ensure the property has a type
94
+ if TOOL_PROPERTY_TYPE_KEY not in prop_schema:
95
+ prop_schema[TOOL_PROPERTY_TYPE_KEY] = "string"
96
+
97
+ # If it's an object type, ensure additionalProperties and required
98
+ # fields are set
99
+ if prop_schema[TOOL_PROPERTY_TYPE_KEY] == "object":
100
+ if TOOL_ADDITIONAL_PROPERTIES_KEY not in prop_schema:
101
+ prop_schema[TOOL_ADDITIONAL_PROPERTIES_KEY] = False
102
+
103
+ # Ensure required key exists for object properties
104
+ if TOOL_REQUIRED_KEY not in prop_schema:
105
+ prop_schema[TOOL_REQUIRED_KEY] = []
106
+
107
+ def to_openai_json_format(self) -> Dict[str, Any]:
108
+ """Convert AgentToolSchema to OpenAI format."""
109
+ # Ensure the schema is valid before conversion
110
+ return {
111
+ TOOL_TYPE_KEY: TOOL_TYPE_FUNCTION_KEY,
112
+ TOOL_TYPE_FUNCTION_KEY: self.model_dump(exclude={TOOL_TYPE_KEY}),
113
+ }
114
+
115
+
116
+ class CustomToolSchema(BaseModel):
117
+ """A class that represents the schema of a custom agent tool."""
118
+
119
+ tool_name: str
120
+ tool_definition: AgentToolSchema
121
+ tool_executor: Callable
122
+
123
+ @classmethod
124
+ def from_dict(cls, config: Dict[str, Any]) -> "CustomToolSchema":
125
+ """Convert a custom tool config to CustomToolSchema."""
126
+ agent_tool_schema = AgentToolSchema.from_openai_json_format(config)
127
+ if TOOL_EXECUTOR_KEY not in config:
128
+ raise ValueError("Custom tool executor is required.")
129
+
130
+ return cls(
131
+ tool_name=agent_tool_schema.name,
132
+ tool_definition=agent_tool_schema,
133
+ tool_executor=config[TOOL_EXECUTOR_KEY],
134
+ )
@@ -0,0 +1,15 @@
1
+ You are a helpful assistant that should assist the user in the best possible way.
2
+
3
+ ### Primary Task
4
+ {{ description }}
5
+
6
+ ### Instructions
7
+ * Always make sure to output responses to the user in a clear, helpful format.
8
+ * Always avoid asking multiple questions at once. Ask questions sequentially one at a time and wait for the user's response before proceeding to next question.
9
+ * Always avoid making assumptions about what values to pass into tools. Ask for clarification if a user's request is ambiguous.
10
+ * Once your primary task, described above, is completed, you must call the `task_completed` tool to signal that you have finished assisting the user. Do not end the conversation or indicate completion without the `task_completed` tool call.
11
+ * Do NOT call the `task_completed` tool unless you're absolutely certain that your primary task (NOT the slot corrections, updates, etc), described above, is fully completed. Focus on the task given in the task description above.
12
+ * Strictly avoid making up information or ability to take some action which is not available in `tool` provided.
13
+
14
+ ### Conversation history
15
+ {{ conversation_history }}
@@ -0,0 +1,17 @@
1
+ You are a helpful assistant that should assist the user in the best possible way.
2
+
3
+ ### Description of your capabilities
4
+ {{ description }}
5
+
6
+ ### Task
7
+ * Use the tools available to gather the required information to set the following slots: {{ slot_names }}.
8
+ * In order to set the slot values, use the `set_slot_<slot_name>` tool.
9
+
10
+ ### Instructions
11
+ * Always make sure to output responses to the user in a clear, helpful format.
12
+ * Always avoid asking multiple questions at once. Ask questions sequentially one at a time and wait for the user's response before proceeding to next question.
13
+ * Always avoid making assumptions about what values to pass into tools. Ask for clarification if a user's request is ambiguous.
14
+ * Strictly avoid making up information or ability to take some action which is not available in `tool` provided.
15
+
16
+ ### Conversation history
17
+ {{ conversation_history }}
rasa/agents/utils.py ADDED
@@ -0,0 +1,72 @@
1
+ from typing import List, Optional
2
+
3
+ from rasa.agents.agent_manager import AgentManager
4
+ from rasa.agents.exceptions import AgentNotFoundException
5
+ from rasa.core.available_agents import (
6
+ AgentConfig,
7
+ AgentMCPServerConfig,
8
+ AvailableAgents,
9
+ )
10
+ from rasa.core.available_endpoints import AvailableEndpoints
11
+ from rasa.shared.agents.utils import get_protocol_type
12
+ from rasa.shared.core.domain import Domain
13
+ from rasa.shared.core.flows import FlowsList
14
+ from rasa.shared.core.flows.steps import CallFlowStep
15
+
16
+
17
+ def resolve_agent_config(
18
+ agent_config: AgentConfig,
19
+ available_endpoints: AvailableEndpoints,
20
+ ) -> Optional[AgentConfig]:
21
+ if agent_config is None:
22
+ return None
23
+
24
+ connections = agent_config.connections
25
+ mcp_connections: List[AgentMCPServerConfig] = (
26
+ connections.mcp_servers
27
+ if connections and connections.mcp_servers is not None
28
+ else []
29
+ )
30
+
31
+ for mcp_server in mcp_connections:
32
+ for mcp_server_endpoint in available_endpoints.mcp_servers or []:
33
+ if mcp_server_endpoint.name == mcp_server.name:
34
+ mcp_server.url = mcp_server_endpoint.url
35
+ mcp_server.type = mcp_server_endpoint.type
36
+
37
+ return agent_config
38
+
39
+
40
+ async def initialize_agents(
41
+ flows: FlowsList,
42
+ domain: Domain,
43
+ sub_agents: AvailableAgents,
44
+ ) -> None:
45
+ """Iterate over flows and create/connect the referenced agents."""
46
+ agent_manager: AgentManager = AgentManager()
47
+ endpoints = AvailableEndpoints.get_instance()
48
+
49
+ for flow in flows.underlying_flows:
50
+ for step in flow.steps:
51
+ if isinstance(step, CallFlowStep):
52
+ if flows.flow_by_id(step.call) is not None:
53
+ continue
54
+
55
+ if step.is_calling_mcp_tool():
56
+ # The call step is calling an MCP tool, so we don't need to
57
+ # initialize any agent.
58
+ continue
59
+
60
+ if not step.is_calling_agent():
61
+ raise AgentNotFoundException(step.call)
62
+
63
+ agent_name = step.call
64
+ agent_config = sub_agents.get_agent_config(agent_name)
65
+ resolved_agent_config = resolve_agent_config(agent_config, endpoints)
66
+ protocol_type = get_protocol_type(step, agent_config)
67
+
68
+ await agent_manager.connect_agent(
69
+ agent_name,
70
+ protocol_type,
71
+ resolved_agent_config,
72
+ )
rasa/api.py CHANGED
@@ -20,6 +20,7 @@ if TYPE_CHECKING:
20
20
  def run(
21
21
  model: Text,
22
22
  endpoints: Text,
23
+ sub_agents: Text,
23
24
  connector: Optional[Text] = None,
24
25
  credentials: Optional[Text] = None,
25
26
  **kwargs: Dict[Text, Any],
@@ -29,6 +30,7 @@ def run(
29
30
  Args:
30
31
  model: Path to model archive.
31
32
  endpoints: Path to endpoints file.
33
+ sub_agents: Path to sub-agents directory.
32
34
  connector: Connector which should be use (overwrites `credentials`
33
35
  field).
34
36
  credentials: Path to channel credentials file.
@@ -38,11 +40,13 @@ def run(
38
40
  """
39
41
  import rasa.core.run
40
42
  import rasa.shared.utils.common
43
+ from rasa.core.available_agents import AvailableAgents
41
44
  from rasa.core.available_endpoints import AvailableEndpoints
42
45
  from rasa.shared.constants import DOCS_BASE_URL
43
46
  from rasa.shared.utils.cli import print_warning
44
47
 
45
48
  _endpoints = AvailableEndpoints.get_instance(endpoints)
49
+ _sub_agents = AvailableAgents.get_instance(sub_agents)
46
50
 
47
51
  if not connector and not credentials:
48
52
  connector = "rest"
@@ -61,6 +65,7 @@ def run(
61
65
  channel=connector,
62
66
  credentials=credentials,
63
67
  endpoints=_endpoints,
68
+ sub_agents=_sub_agents,
64
69
  **kwargs,
65
70
  )
66
71
 
@@ -3,6 +3,7 @@ import logging
3
3
  from enum import Enum
4
4
  from typing import List, Optional, Text, Union
5
5
 
6
+ from rasa.core.constants import DEFAULT_SUB_AGENTS
6
7
  from rasa.core.persistor import RemoteStorageType, StorageType, parse_remote_storage
7
8
  from rasa.shared.constants import (
8
9
  DEFAULT_CONFIG_PATH,
@@ -217,3 +218,14 @@ def add_skip_validation_flag(
217
218
  action="append",
218
219
  help="Skip YAML validation for selected parts of the training data.",
219
220
  )
221
+
222
+
223
+ def add_sub_agents_param(
224
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
225
+ ) -> None:
226
+ parser.add_argument(
227
+ "--sub-agents",
228
+ type=str,
229
+ default=DEFAULT_SUB_AGENTS,
230
+ help="Directory that specifies sub-agents to use (default: %(default)s).",
231
+ )
rasa/cli/arguments/run.py CHANGED
@@ -7,6 +7,7 @@ from rasa.cli.arguments.default_arguments import (
7
7
  add_model_param,
8
8
  add_remote_storage_param,
9
9
  add_skip_validation_flag,
10
+ add_sub_agents_param,
10
11
  )
11
12
  from rasa.core import constants
12
13
  from rasa.env import (
@@ -24,6 +25,7 @@ def set_run_arguments(parser: argparse.ArgumentParser) -> None:
24
25
  add_server_arguments(parser)
25
26
  add_inspect_argument(parser)
26
27
  add_skip_validation_flag(parser)
28
+ add_sub_agents_param(parser)
27
29
 
28
30
 
29
31
  def set_run_action_arguments(parser: argparse.ArgumentParser) -> None:
@@ -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.core.agent import Agent
19
20
  from rasa.core.available_endpoints import AvailableEndpoints
@@ -174,6 +175,8 @@ def add_du_test_arguments(parser: argparse.ArgumentParser) -> None:
174
175
  ),
175
176
  )
176
177
 
178
+ add_sub_agents_param(du_arguments)
179
+
177
180
 
178
181
  def ensure_calm_only_bot(agent: Agent) -> None:
179
182
  if agent.domain is None or agent.processor is None:
@@ -218,6 +221,7 @@ def execute_dialogue_understanding_tests(args: argparse.Namespace) -> None:
218
221
  model_path=args.model,
219
222
  model_server=endpoints.model,
220
223
  remote_storage=args.remote_storage,
224
+ sub_agents_path=args.sub_agents,
221
225
  )
222
226
  except AgentNotReady as error:
223
227
  structlogger.error(
rasa/cli/e2e_test.py CHANGED
@@ -17,6 +17,7 @@ from rasa.cli.arguments.default_arguments import (
17
17
  add_endpoint_param,
18
18
  add_model_param,
19
19
  add_remote_storage_param,
20
+ add_sub_agents_param,
20
21
  )
21
22
  from rasa.core.available_endpoints import AvailableEndpoints
22
23
  from rasa.core.exceptions import AgentNotReady
@@ -147,6 +148,8 @@ def add_e2e_test_arguments(parser: argparse.ArgumentParser) -> None:
147
148
  help="Directory where to save coverage report to.",
148
149
  )
149
150
 
151
+ add_sub_agents_param(parser)
152
+
150
153
 
151
154
  def execute_e2e_tests(args: argparse.Namespace) -> None:
152
155
  """Run the end-to-end tests.
@@ -192,6 +195,7 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
192
195
  model_server=endpoints.model,
193
196
  endpoints=endpoints,
194
197
  test_case_path=Path(test_case_path),
198
+ sub_agents_path=args.sub_agents,
195
199
  )
196
200
  except AgentNotReady as error:
197
201
  structlogger.error(
rasa/cli/inspect.py CHANGED
@@ -8,6 +8,7 @@ from sanic import Sanic
8
8
  from rasa import telemetry
9
9
  from rasa.cli import SubParsersAction
10
10
  from rasa.cli.arguments import shell as arguments
11
+ from rasa.cli.arguments.default_arguments import add_sub_agents_param
11
12
  from rasa.core import constants
12
13
  from rasa.core.available_endpoints import AvailableEndpoints
13
14
  from rasa.engine.storage.local_model_storage import LocalModelStorage
@@ -44,6 +45,8 @@ def add_subparser(
44
45
  "--voice", help="Enable voice", action="store_true", default=False
45
46
  )
46
47
 
48
+ add_sub_agents_param(inspect_parser)
49
+
47
50
  # it'd be confusing to expose those arguments to the user,
48
51
  # so we remove them
49
52
  remove_argument_from_parser(inspect_parser, "--credentials")
@@ -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/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"