rasa-pro 3.14.0.dev20250922__py3-none-any.whl → 3.14.0rc2__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 (304) hide show
  1. rasa/__main__.py +15 -3
  2. rasa/agents/__init__.py +0 -0
  3. rasa/agents/agent_factory.py +122 -0
  4. rasa/agents/agent_manager.py +211 -0
  5. rasa/agents/constants.py +43 -0
  6. rasa/agents/core/__init__.py +0 -0
  7. rasa/agents/core/agent_protocol.py +107 -0
  8. rasa/agents/core/types.py +81 -0
  9. rasa/agents/exceptions.py +38 -0
  10. rasa/agents/protocol/__init__.py +5 -0
  11. rasa/agents/protocol/a2a/__init__.py +0 -0
  12. rasa/agents/protocol/a2a/a2a_agent.py +879 -0
  13. rasa/agents/protocol/mcp/__init__.py +0 -0
  14. rasa/agents/protocol/mcp/mcp_base_agent.py +726 -0
  15. rasa/agents/protocol/mcp/mcp_open_agent.py +327 -0
  16. rasa/agents/protocol/mcp/mcp_task_agent.py +522 -0
  17. rasa/agents/schemas/__init__.py +13 -0
  18. rasa/agents/schemas/agent_input.py +38 -0
  19. rasa/agents/schemas/agent_output.py +26 -0
  20. rasa/agents/schemas/agent_tool_result.py +65 -0
  21. rasa/agents/schemas/agent_tool_schema.py +186 -0
  22. rasa/agents/templates/__init__.py +0 -0
  23. rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +20 -0
  24. rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +22 -0
  25. rasa/agents/utils.py +206 -0
  26. rasa/agents/validation.py +485 -0
  27. rasa/api.py +24 -9
  28. rasa/builder/config.py +6 -2
  29. rasa/builder/copilot/constants.py +4 -1
  30. rasa/builder/copilot/copilot.py +155 -79
  31. rasa/builder/copilot/models.py +304 -108
  32. rasa/builder/copilot/prompts/copilot_training_error_handler_prompt.jinja2 +53 -0
  33. rasa/builder/guardrails/{lakera.py → clients.py} +55 -5
  34. rasa/builder/guardrails/constants.py +3 -0
  35. rasa/builder/guardrails/models.py +45 -10
  36. rasa/builder/guardrails/policy_checker.py +324 -0
  37. rasa/builder/guardrails/utils.py +42 -276
  38. rasa/builder/jobs.py +182 -12
  39. rasa/builder/llm_service.py +32 -5
  40. rasa/builder/models.py +13 -3
  41. rasa/builder/project_generator.py +6 -1
  42. rasa/builder/service.py +31 -15
  43. rasa/builder/training_service.py +18 -24
  44. rasa/builder/validation_service.py +1 -1
  45. rasa/cli/arguments/default_arguments.py +12 -0
  46. rasa/cli/arguments/run.py +2 -0
  47. rasa/cli/arguments/train.py +2 -0
  48. rasa/cli/data.py +10 -8
  49. rasa/cli/dialogue_understanding_test.py +10 -7
  50. rasa/cli/e2e_test.py +9 -6
  51. rasa/cli/evaluate.py +4 -2
  52. rasa/cli/export.py +5 -2
  53. rasa/cli/inspect.py +8 -4
  54. rasa/cli/interactive.py +5 -4
  55. rasa/cli/llm_fine_tuning.py +11 -6
  56. rasa/cli/project_templates/finance/domain/general/help.yml +0 -0
  57. rasa/cli/project_templates/tutorial/credentials.yml +10 -0
  58. rasa/cli/run.py +12 -10
  59. rasa/cli/scaffold.py +4 -4
  60. rasa/cli/shell.py +9 -5
  61. rasa/cli/studio/studio.py +1 -1
  62. rasa/cli/test.py +34 -14
  63. rasa/cli/train.py +41 -28
  64. rasa/cli/utils.py +1 -393
  65. rasa/cli/validation/__init__.py +0 -0
  66. rasa/cli/validation/bot_config.py +223 -0
  67. rasa/cli/validation/config_path_validation.py +257 -0
  68. rasa/cli/x.py +8 -4
  69. rasa/constants.py +7 -1
  70. rasa/core/actions/action.py +51 -10
  71. rasa/core/actions/grpc_custom_action_executor.py +1 -1
  72. rasa/core/agent.py +19 -2
  73. rasa/core/available_agents.py +229 -0
  74. rasa/core/brokers/kafka.py +5 -1
  75. rasa/core/channels/__init__.py +82 -35
  76. rasa/core/channels/development_inspector.py +3 -3
  77. rasa/core/channels/inspector/README.md +25 -13
  78. rasa/core/channels/inspector/dist/assets/{arc-35222594.js → arc-6177260a.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-a0efbfd3.js → blockDiagram-38ab4fdb-b054f038.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-0584c0f2.js → c4Diagram-3d4e48cf-f25427d5.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/channel-bf9cbb34.js +1 -0
  82. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-39f40dbe.js → classDiagram-70f12bd4-c7a2af53.js} +1 -1
  83. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-1ad755f3.js → classDiagram-v2-f2320105-58db65c0.js} +1 -1
  84. rasa/core/channels/inspector/dist/assets/clone-8f9083bb.js +1 -0
  85. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-b0f4f0fe.js → createText-2e5e7dd3-088372e2.js} +1 -1
  86. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-9039bff9.js → edges-e0da2a9e-58676240.js} +1 -1
  87. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-65c9b127.js → erDiagram-9861fffd-0c14d7c6.js} +1 -1
  88. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-4f08b38e.js → flowDb-956e92f1-ea63f85c.js} +1 -1
  89. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-e95c362a.js → flowDiagram-66a62f08-a2af48cd.js} +1 -1
  90. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-9ecd5b59.js +1 -0
  91. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-703c3015.js → flowchart-elk-definition-4a651766-6937abe7.js} +1 -1
  92. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-699328ea.js → ganttDiagram-c361ad54-7473f357.js} +1 -1
  93. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-04cf4b05.js → gitGraphDiagram-72cf32ee-d0c9405e.js} +1 -1
  94. rasa/core/channels/inspector/dist/assets/{graph-ee94449e.js → graph-0a6f8466.js} +1 -1
  95. rasa/core/channels/inspector/dist/assets/{index-3862675e-940162b4.js → index-3862675e-7610671a.js} +1 -1
  96. rasa/core/channels/inspector/dist/assets/index-74e01d94.js +1354 -0
  97. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-c79c2866.js → infoDiagram-f8f76790-be397dc7.js} +1 -1
  98. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-84489d30.js → journeyDiagram-49397b02-4cefbf62.js} +1 -1
  99. rasa/core/channels/inspector/dist/assets/{layout-a9aa9858.js → layout-e7fbc2bf.js} +1 -1
  100. rasa/core/channels/inspector/dist/assets/{line-eb73cf26.js → line-a8aa457c.js} +1 -1
  101. rasa/core/channels/inspector/dist/assets/{linear-b3399f9a.js → linear-3351e0d2.js} +1 -1
  102. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-b095bf1a.js → mindmap-definition-fc14e90a-b8cbf605.js} +1 -1
  103. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-07644b66.js → pieDiagram-8a3498a8-f327f774.js} +1 -1
  104. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-573a3f9c.js → quadrantDiagram-120e2f19-2854c591.js} +1 -1
  105. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-d457e1e1.js → requirementDiagram-deff3bca-964985d5.js} +1 -1
  106. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-9d26e1a2.js → sankeyDiagram-04a897e0-edeb4f33.js} +1 -1
  107. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-3a9cde10.js → sequenceDiagram-704730f1-fcf70125.js} +1 -1
  108. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-4f3e8cec.js → stateDiagram-587899a1-0e770395.js} +1 -1
  109. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-e617e5bf.js → stateDiagram-v2-d93cdb3a-af8dcd22.js} +1 -1
  110. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-eab30d2f.js → styles-6aaf32cf-36a9e70d.js} +1 -1
  111. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-09994be2.js → styles-9a916d00-884a8b5b.js} +1 -1
  112. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-b7110364.js → styles-c10674c1-dc097813.js} +1 -1
  113. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-3ebc92ad.js → svgDrawCommon-08f97a94-5a2c7eed.js} +1 -1
  114. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-7d13d2f2.js → timeline-definition-85554ec2-e89c4f6e.js} +1 -1
  115. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-488385e1.js → xychartDiagram-e933f94c-afb6fe56.js} +1 -1
  116. rasa/core/channels/inspector/dist/index.html +1 -1
  117. rasa/core/channels/inspector/package.json +18 -18
  118. rasa/core/channels/inspector/src/App.tsx +29 -4
  119. rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
  120. rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +4 -2
  121. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +7 -4
  122. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
  123. rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
  124. rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
  125. rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
  126. rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
  127. rasa/core/channels/inspector/src/types.ts +21 -0
  128. rasa/core/channels/inspector/yarn.lock +336 -189
  129. rasa/core/channels/studio_chat.py +6 -6
  130. rasa/core/channels/telegram.py +4 -9
  131. rasa/core/channels/voice_stream/genesys.py +1 -1
  132. rasa/core/channels/voice_stream/tts/deepgram.py +140 -0
  133. rasa/core/channels/voice_stream/twilio_media_streams.py +5 -1
  134. rasa/core/channels/voice_stream/voice_channel.py +3 -0
  135. rasa/core/concurrent_lock_store.py +38 -21
  136. rasa/core/config/__init__.py +0 -0
  137. rasa/core/{available_endpoints.py → config/available_endpoints.py} +51 -16
  138. rasa/core/config/configuration.py +260 -0
  139. rasa/core/config/credentials.py +19 -0
  140. rasa/core/config/message_procesing_config.py +34 -0
  141. rasa/core/constants.py +10 -0
  142. rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +69 -4
  143. rasa/core/iam_credentials_providers/credentials_provider_protocol.py +2 -1
  144. rasa/core/lock_store.py +4 -0
  145. rasa/core/policies/enterprise_search_policy.py +5 -3
  146. rasa/core/policies/flow_policy.py +4 -4
  147. rasa/core/policies/flows/agent_executor.py +632 -0
  148. rasa/core/policies/flows/flow_executor.py +136 -75
  149. rasa/core/policies/flows/mcp_tool_executor.py +298 -0
  150. rasa/core/policies/intentless_policy.py +1 -1
  151. rasa/core/policies/ted_policy.py +20 -12
  152. rasa/core/policies/unexpected_intent_policy.py +6 -0
  153. rasa/core/processor.py +68 -44
  154. rasa/core/redis_connection_factory.py +7 -2
  155. rasa/core/run.py +37 -8
  156. rasa/core/test.py +4 -0
  157. rasa/core/tracker_stores/redis_tracker_store.py +4 -0
  158. rasa/core/tracker_stores/sql_tracker_store.py +3 -1
  159. rasa/core/tracker_stores/tracker_store.py +3 -7
  160. rasa/core/train.py +1 -1
  161. rasa/core/training/interactive.py +20 -18
  162. rasa/core/training/story_conflict.py +5 -5
  163. rasa/core/utils.py +22 -23
  164. rasa/dialogue_understanding/commands/__init__.py +8 -0
  165. rasa/dialogue_understanding/commands/cancel_flow_command.py +19 -5
  166. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +21 -2
  167. rasa/dialogue_understanding/commands/clarify_command.py +20 -2
  168. rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
  169. rasa/dialogue_understanding/commands/knowledge_answer_command.py +21 -2
  170. rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
  171. rasa/dialogue_understanding/commands/start_flow_command.py +68 -7
  172. rasa/dialogue_understanding/commands/utils.py +124 -2
  173. rasa/dialogue_understanding/generator/command_parser.py +4 -0
  174. rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
  175. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  176. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  177. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +66 -0
  178. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +66 -0
  179. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +89 -0
  180. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +88 -0
  181. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +42 -7
  182. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +40 -3
  183. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +20 -3
  184. rasa/dialogue_understanding/patterns/cancel.py +27 -6
  185. rasa/dialogue_understanding/patterns/clarify.py +3 -14
  186. rasa/dialogue_understanding/patterns/continue_interrupted.py +239 -6
  187. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +46 -8
  188. rasa/dialogue_understanding/processor/command_processor.py +136 -15
  189. rasa/dialogue_understanding/stack/dialogue_stack.py +98 -2
  190. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
  191. rasa/dialogue_understanding/stack/utils.py +57 -3
  192. rasa/dialogue_understanding/utils.py +24 -4
  193. rasa/dialogue_understanding_test/du_test_runner.py +8 -3
  194. rasa/e2e_test/e2e_test_runner.py +13 -3
  195. rasa/engine/caching.py +2 -2
  196. rasa/engine/constants.py +1 -1
  197. rasa/engine/recipes/default_components.py +138 -49
  198. rasa/engine/recipes/default_recipe.py +108 -11
  199. rasa/engine/runner/dask.py +8 -5
  200. rasa/engine/validation.py +19 -6
  201. rasa/graph_components/validators/default_recipe_validator.py +86 -28
  202. rasa/hooks.py +5 -5
  203. rasa/llm_fine_tuning/utils.py +2 -2
  204. rasa/model_training.py +60 -47
  205. rasa/nlu/classifiers/diet_classifier.py +198 -98
  206. rasa/nlu/classifiers/logistic_regression_classifier.py +1 -4
  207. rasa/nlu/classifiers/mitie_intent_classifier.py +3 -0
  208. rasa/nlu/classifiers/sklearn_intent_classifier.py +1 -3
  209. rasa/nlu/extractors/crf_entity_extractor.py +9 -10
  210. rasa/nlu/extractors/mitie_entity_extractor.py +3 -0
  211. rasa/nlu/extractors/spacy_entity_extractor.py +3 -0
  212. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +4 -0
  213. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +5 -0
  214. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +2 -0
  215. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +3 -0
  216. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +4 -2
  217. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -0
  218. rasa/nlu/selectors/response_selector.py +10 -2
  219. rasa/nlu/tokenizers/jieba_tokenizer.py +3 -4
  220. rasa/nlu/tokenizers/mitie_tokenizer.py +3 -2
  221. rasa/nlu/tokenizers/spacy_tokenizer.py +3 -2
  222. rasa/nlu/utils/mitie_utils.py +3 -0
  223. rasa/nlu/utils/spacy_utils.py +3 -2
  224. rasa/plugin.py +8 -8
  225. rasa/privacy/privacy_manager.py +12 -3
  226. rasa/server.py +15 -3
  227. rasa/shared/agents/__init__.py +0 -0
  228. rasa/shared/agents/auth/__init__.py +0 -0
  229. rasa/shared/agents/auth/agent_auth_factory.py +105 -0
  230. rasa/shared/agents/auth/agent_auth_manager.py +92 -0
  231. rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
  232. rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
  233. rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
  234. rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
  235. rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +167 -0
  236. rasa/shared/agents/auth/constants.py +12 -0
  237. rasa/shared/agents/auth/types.py +12 -0
  238. rasa/shared/agents/utils.py +35 -0
  239. rasa/shared/constants.py +8 -0
  240. rasa/shared/core/constants.py +16 -1
  241. rasa/shared/core/domain.py +0 -7
  242. rasa/shared/core/events.py +327 -0
  243. rasa/shared/core/flows/constants.py +5 -0
  244. rasa/shared/core/flows/flows_list.py +21 -5
  245. rasa/shared/core/flows/flows_yaml_schema.json +119 -184
  246. rasa/shared/core/flows/steps/call.py +49 -5
  247. rasa/shared/core/flows/steps/collect.py +98 -13
  248. rasa/shared/core/flows/validation.py +372 -8
  249. rasa/shared/core/flows/yaml_flows_io.py +3 -2
  250. rasa/shared/core/slots.py +2 -2
  251. rasa/shared/core/trackers.py +5 -2
  252. rasa/shared/exceptions.py +16 -0
  253. rasa/shared/importers/rasa.py +1 -1
  254. rasa/shared/importers/utils.py +9 -3
  255. rasa/shared/providers/llm/_base_litellm_client.py +41 -9
  256. rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
  257. rasa/shared/providers/llm/llm_client.py +7 -3
  258. rasa/shared/providers/llm/llm_response.py +66 -0
  259. rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
  260. rasa/shared/utils/common.py +24 -0
  261. rasa/shared/utils/health_check/health_check.py +7 -3
  262. rasa/shared/utils/llm.py +39 -16
  263. rasa/shared/utils/mcp/__init__.py +0 -0
  264. rasa/shared/utils/mcp/server_connection.py +247 -0
  265. rasa/shared/utils/mcp/utils.py +20 -0
  266. rasa/shared/utils/schemas/events.py +42 -0
  267. rasa/shared/utils/yaml.py +3 -1
  268. rasa/studio/pull/pull.py +3 -2
  269. rasa/studio/train.py +8 -7
  270. rasa/studio/upload.py +3 -6
  271. rasa/telemetry.py +69 -5
  272. rasa/tracing/config.py +45 -12
  273. rasa/tracing/constants.py +14 -0
  274. rasa/tracing/instrumentation/attribute_extractors.py +142 -9
  275. rasa/tracing/instrumentation/instrumentation.py +626 -21
  276. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  277. rasa/tracing/instrumentation/metrics.py +32 -0
  278. rasa/tracing/metric_instrument_provider.py +68 -0
  279. rasa/utils/common.py +92 -1
  280. rasa/utils/endpoints.py +11 -2
  281. rasa/utils/log_utils.py +96 -5
  282. rasa/utils/ml_utils.py +1 -1
  283. rasa/utils/tensorflow/__init__.py +7 -0
  284. rasa/utils/tensorflow/callback.py +136 -101
  285. rasa/utils/tensorflow/crf.py +1 -1
  286. rasa/utils/tensorflow/data_generator.py +21 -8
  287. rasa/utils/tensorflow/layers.py +21 -11
  288. rasa/utils/tensorflow/metrics.py +7 -3
  289. rasa/utils/tensorflow/models.py +56 -8
  290. rasa/utils/tensorflow/rasa_layers.py +8 -6
  291. rasa/utils/tensorflow/transformer.py +2 -3
  292. rasa/utils/train_utils.py +54 -24
  293. rasa/validator.py +5 -5
  294. rasa/version.py +1 -1
  295. {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc2.dist-info}/METADATA +47 -41
  296. {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc2.dist-info}/RECORD +299 -238
  297. rasa/builder/scrape_rasa_docs.py +0 -97
  298. rasa/core/channels/inspector/dist/assets/channel-8e08bed9.js +0 -1
  299. rasa/core/channels/inspector/dist/assets/clone-78c82dea.js +0 -1
  300. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-2b08f601.js +0 -1
  301. rasa/core/channels/inspector/dist/assets/index-c941dcb3.js +0 -1336
  302. {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc2.dist-info}/NOTICE +0 -0
  303. {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc2.dist-info}/WHEEL +0 -0
  304. {rasa_pro-3.14.0.dev20250922.dist-info → rasa_pro-3.14.0rc2.dist-info}/entry_points.txt +0 -0
@@ -1,20 +1,12 @@
1
1
  {
2
2
  "type": "object",
3
- "required": [
4
- "flows"
5
- ],
3
+ "required": ["flows"],
6
4
  "properties": {
7
- "version": {
8
- "type": "string"
9
- },
5
+ "version": {"type": "string"},
10
6
  "flows": {
11
7
  "type": "object",
12
8
  "schema_name": "dictionary of flows",
13
- "patternProperties": {
14
- "^[A-Za-z_][A-Za-z0-9_]*$": {
15
- "$ref": "#/$defs/flow"
16
- }
17
- }
9
+ "patternProperties": {"^[A-Za-z_][A-Za-z0-9_]*$": {"$ref": "#/$defs/flow"}}
18
10
  }
19
11
  },
20
12
  "$defs": {
@@ -28,34 +20,22 @@
28
20
  {
29
21
  "schema_name": "intent trigger",
30
22
  "type": "object",
31
- "required": [
32
- "intent"
33
- ],
23
+ "required": ["intent"],
34
24
  "additionalProperties": false,
35
25
  "properties": {
36
26
  "intent": {
37
27
  "type": "object",
38
28
  "properties": {
39
- "confidence_threshold": {
40
- "type": "number"
41
- },
42
- "name": {
43
- "type": "string"
44
- }
29
+ "confidence_threshold": {"type": "number"},
30
+ "name": {"type": "string"}
45
31
  },
46
- "required": [
47
- "name"
48
- ]
32
+ "required": ["name"]
49
33
  }
50
34
  }
51
35
  },
52
36
  {
53
37
  "schema_name": "simple intent trigger",
54
- "properties": {
55
- "intent": {
56
- "type": "string"
57
- }
58
- }
38
+ "properties": {"intent": {"type": "string"}}
59
39
  }
60
40
  ]
61
41
  }
@@ -66,9 +46,7 @@
66
46
  "items": {
67
47
  "type": "object",
68
48
  "properties": {
69
- "id": {
70
- "type": "string"
71
- },
49
+ "id": {"type": "string"},
72
50
  "next": {
73
51
  "anyOf": [
74
52
  {
@@ -79,16 +57,11 @@
79
57
  "oneOf": [
80
58
  {
81
59
  "schema_name": "if-then block",
82
- "required": [
83
- "if",
84
- "then"
85
- ]
60
+ "required": ["if", "then"]
86
61
  },
87
62
  {
88
63
  "schema_name": "else block",
89
- "required": [
90
- "else"
91
- ]
64
+ "required": ["else"]
92
65
  }
93
66
  ],
94
67
  "properties": {
@@ -104,12 +77,7 @@
104
77
  }
105
78
  ]
106
79
  },
107
- "if": {
108
- "type": [
109
- "boolean",
110
- "string"
111
- ]
112
- },
80
+ "if": {"type": ["boolean", "string"]},
113
81
  "then": {
114
82
  "oneOf": [
115
83
  {
@@ -125,66 +93,25 @@
125
93
  }
126
94
  }
127
95
  },
128
- {
129
- "type": "string",
130
- "schema_name": "step id"
131
- }
96
+ {"type": "string", "schema_name": "step id"}
132
97
  ]
133
98
  },
134
- "action": {
135
- "type": "string"
136
- },
137
- "collect": {
138
- "type": "string"
139
- },
140
- "link": {
141
- "type": "string"
142
- },
143
- "call": {
144
- "type": "string"
145
- },
99
+ "action": {"type": "string"},
100
+ "collect": {"type": "string"},
101
+ "link": {"type": "string"},
102
+ "call": {"type": "string"},
146
103
  "set_slots": {
147
104
  "$ref": "#/$defs/set_slots",
148
105
  "schema_name": "slot set"
149
106
  }
150
107
  },
151
108
  "oneOf": [
152
- {
153
- "required": [
154
- "action"
155
- ],
156
- "schema_name": "action step"
157
- },
158
- {
159
- "required": [
160
- "collect"
161
- ],
162
- "schema_name": "collect step"
163
- },
164
- {
165
- "required": [
166
- "link"
167
- ],
168
- "schema_name": "link step"
169
- },
170
- {
171
- "required": [
172
- "call"
173
- ],
174
- "schema_name": "call step"
175
- },
176
- {
177
- "required": [
178
- "set_slots"
179
- ],
180
- "schema_name": "slot set step"
181
- },
182
- {
183
- "required": [
184
- "noop"
185
- ],
186
- "schema_name": ""
187
- }
109
+ {"required": ["action"], "schema_name": "action step"},
110
+ {"required": ["collect"], "schema_name": "collect step"},
111
+ {"required": ["link"], "schema_name": "link step"},
112
+ {"required": ["call"], "schema_name": "call step"},
113
+ {"required": ["set_slots"], "schema_name": "slot set step"},
114
+ {"required": ["noop"], "schema_name": ""}
188
115
  ],
189
116
  "dependentSchemas": {
190
117
  "action": {
@@ -196,10 +123,23 @@
196
123
  "metadata": {}
197
124
  }
198
125
  },
199
- "noop": {
200
- "required": [
201
- "next"
202
- ]
126
+ "noop": {"required": ["next"]},
127
+ "call": {
128
+ "additionalProperties": false,
129
+ "properties": {
130
+ "call": {"type": "string"},
131
+ "id": {},
132
+ "next": {},
133
+ "metadata": {},
134
+ "description": {"type": "string"},
135
+ "mcp_server": {"type": "string"},
136
+ "mapping": {"$ref": "#/$defs/call_step/properties/mapping"},
137
+ "exit_if": {"$ref": "#/$defs/call_step/properties/exit_if"}
138
+ },
139
+ "dependentSchemas": {
140
+ "mcp_server": {"required": ["mapping"]},
141
+ "mapping": {"required": ["mcp_server"]}
142
+ }
203
143
  },
204
144
  "collect": {
205
145
  "additionalProperties": false,
@@ -208,45 +148,32 @@
208
148
  "id": {},
209
149
  "next": {},
210
150
  "metadata": {},
211
- "description": {
212
- "type": "string"
213
- },
214
- "ask_before_filling": {
215
- "type": "boolean"
216
- },
217
- "reset_after_flow_ends": {
218
- "type": "boolean"
219
- },
220
- "utter": {
221
- "type": "string"
222
- },
223
- "force_slot_filling": {
224
- "type": "boolean"
225
- },
151
+ "description": {"type": "string"},
152
+ "ask_before_filling": {"type": "boolean"},
153
+ "reset_after_flow_ends": {"type": "boolean"},
154
+ "utter": {"type": "string"},
155
+ "force_slot_filling": {"type": "boolean"},
226
156
  "rejections": {
227
157
  "type": "array",
228
158
  "schema_name": "list of rejections",
229
159
  "items": {
230
160
  "type": "object",
231
- "required": [
232
- "if",
233
- "utter"
234
- ],
161
+ "required": ["if", "utter"],
235
162
  "properties": {
236
- "if": {
237
- "type": [
238
- "boolean",
239
- "string"
240
- ]
241
- },
242
- "utter": {
243
- "type": "string"
244
- }
163
+ "if": {"type": ["boolean", "string"]},
164
+ "utter": {"type": "string"}
245
165
  }
246
166
  }
247
167
  },
248
168
  "silence_timeout": {
249
- "type": "number"
169
+ "oneOf": [
170
+ {
171
+ "type": "number"
172
+ },
173
+ {
174
+ "type": "object"
175
+ }
176
+ ]
250
177
  }
251
178
  }
252
179
  }
@@ -254,84 +181,92 @@
254
181
  }
255
182
  },
256
183
  "flow": {
257
- "required": [
258
- "steps",
259
- "description"
260
- ],
184
+ "required": ["steps", "description"],
261
185
  "type": "object",
262
186
  "additionalProperties": false,
263
187
  "schema_name": "dictionary with flow properties",
264
188
  "properties": {
265
- "name": {
266
- "type": "string"
267
- },
268
- "description": {
269
- "type": "string"
270
- },
189
+ "name": {"type": "string"},
190
+ "description": {"type": "string"},
271
191
  "translation": {
272
192
  "type": "object",
193
+ "additionalProperties": false,
273
194
  "schema_name": "flow translation mapping",
274
- "properties": {
275
- "metadata": {
276
- "type": "object"
277
- }
278
- },
195
+ "properties": {"metadata": {"type": "object"}},
279
196
  "patternProperties": {
280
197
  "^(?!metadata$).+": {
281
198
  "type": "object",
282
199
  "additionalProperties": false,
283
- "required": [
284
- "name"
285
- ],
286
- "properties": {
287
- "name": {
288
- "type": "string"
289
- },
290
- "metadata": {}
291
- }
200
+ "required": ["name"],
201
+ "properties": {"name": {"type": "string"}, "metadata": {}}
292
202
  }
293
- },
294
- "additionalProperties": false
295
- },
296
- "if": {
297
- "type": [
298
- "string",
299
- "boolean"
300
- ]
301
- },
302
- "always_include_in_prompt": {
303
- "type": "boolean"
304
- },
305
- "nlu_trigger": {
306
- "$ref": "#/$defs/nlu_trigger"
307
- },
308
- "file_path": {
309
- "type": "string"
310
- },
311
- "steps": {
312
- "$ref": "#/$defs/steps"
313
- },
314
- "persisted_slots": {
315
- "$ref": "#/$defs/persisted_slots"
203
+ }
316
204
  },
317
- "run_pattern_completed": {
318
- "type": "boolean"
319
- }
205
+ "if": {"type": ["string", "boolean"]},
206
+ "always_include_in_prompt": {"type": "boolean"},
207
+ "nlu_trigger": {"$ref": "#/$defs/nlu_trigger"},
208
+ "file_path": {"type": "string"},
209
+ "steps": {"$ref": "#/$defs/steps"},
210
+ "persisted_slots": {"$ref": "#/$defs/persisted_slots"},
211
+ "run_pattern_completed": {"type": "boolean"}
320
212
  }
321
213
  },
322
214
  "set_slots": {
323
215
  "type": "array",
324
216
  "schema_name": "list of slot sets",
325
- "items": {
326
- "type": "object"
217
+ "items": {"type": "object"}
218
+ },
219
+ "call_step": {
220
+ "type": "object",
221
+ "additionalProperties": false,
222
+ "schema_name": "dictionary with call properties",
223
+ "required": ["call"],
224
+ "properties": {
225
+ "call": {"type": "string"},
226
+ "mcp_server": {"type": "string"},
227
+ "mapping": {
228
+ "type": "object",
229
+ "additionalProperties": false,
230
+ "schema_name": "input and output mapping for a MCP tool call",
231
+ "required": ["input", "output"],
232
+ "properties": {
233
+ "input": {
234
+ "type": "array",
235
+ "items": {
236
+ "type": "object",
237
+ "additionalProperties": false,
238
+ "required": ["slot", "param"],
239
+ "properties": {
240
+ "slot": {"type": "string"},
241
+ "param": {"type": "string"}
242
+ }
243
+ }
244
+ },
245
+ "output": {
246
+ "type": "array",
247
+ "items": {
248
+ "type": "object",
249
+ "additionalProperties": false,
250
+ "required": ["slot", "value"],
251
+ "properties": {
252
+ "slot": {"type": "string"},
253
+ "value": {"type": "string"}
254
+ }
255
+ }
256
+ }
257
+ }
258
+ },
259
+ "exit_if": {
260
+ "type": "array",
261
+ "schema_name": "list of slot predicates to exit agent call",
262
+ "items": {"type": ["string"]}
263
+ }
327
264
  }
328
265
  },
329
266
  "persisted_slots": {
330
267
  "type": "array",
331
268
  "schema_name": "list of slots",
332
- "items": {
333
- "type": "string"
334
- }
269
+ "items": {"type": "string"}
335
270
  }
336
271
  }
337
272
  }
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import TYPE_CHECKING, Any, Dict, Generator, Optional, Text
4
+ from typing import TYPE_CHECKING, Any, Dict, Generator, List, Optional, Text
5
5
 
6
+ from rasa.core.available_agents import AvailableAgents
6
7
  from rasa.shared.core.flows.flow_step import FlowStep
7
8
 
8
9
  if TYPE_CHECKING:
@@ -11,12 +12,22 @@ if TYPE_CHECKING:
11
12
 
12
13
  @dataclass
13
14
  class CallFlowStep(FlowStep):
14
- """Represents the configuration of an call flow step."""
15
+ """Represents the configuration of a call flow/agent step."""
15
16
 
16
17
  call: Text
17
- """The flow to be called."""
18
+ """The flow to be called or the ID of the agent to be called."""
18
19
  called_flow_reference: Optional["Flow"] = None
19
20
 
21
+ # MCP Tool calling
22
+ """The MCP server that hosts the tool to be called."""
23
+ mcp_server: Optional[str] = None
24
+ """The input and output mapping for the MCP tool."""
25
+ mapping: Optional[Dict[str, Any]] = None
26
+
27
+ # Call agent exit condition
28
+ """A list of slot predicates that determine when to exit the agent loop."""
29
+ exit_if: Optional[List[str]] = None
30
+
20
31
  @classmethod
21
32
  def from_json(cls, flow_id: Text, data: Dict[Text, Any]) -> CallFlowStep:
22
33
  """Used to read flow steps from parsed YAML.
@@ -31,6 +42,9 @@ class CallFlowStep(FlowStep):
31
42
  base = super().from_json(flow_id, data)
32
43
  return CallFlowStep(
33
44
  call=data.get("call", ""),
45
+ mcp_server=data.get("mcp_server", None),
46
+ mapping=data.get("mapping", None),
47
+ exit_if=data.get("exit_if", None),
34
48
  **base.__dict__,
35
49
  )
36
50
 
@@ -40,7 +54,16 @@ class CallFlowStep(FlowStep):
40
54
  Returns:
41
55
  The flow step as a dictionary.
42
56
  """
43
- return super().as_json(step_properties={"call": self.call})
57
+ step_properties: Dict[str, Any] = {
58
+ "call": self.call,
59
+ }
60
+ if self.is_calling_mcp_tool():
61
+ step_properties["mcp_server"] = self.mcp_server
62
+ step_properties["mapping"] = self.mapping
63
+ if self.exit_if:
64
+ step_properties["exit_if"] = self.exit_if
65
+
66
+ return super().as_json(step_properties=step_properties)
44
67
 
45
68
  def steps_in_tree(
46
69
  self, should_resolve_calls: bool = True
@@ -48,7 +71,7 @@ class CallFlowStep(FlowStep):
48
71
  """Returns the steps in the tree of the flow step."""
49
72
  yield self
50
73
 
51
- if should_resolve_calls:
74
+ if should_resolve_calls and self.is_calling_flow():
52
75
  if not self.called_flow_reference:
53
76
  raise ValueError(
54
77
  f"Flow step '{self.id}' in flow '{self.flow_id}' is trying "
@@ -63,6 +86,24 @@ class CallFlowStep(FlowStep):
63
86
 
64
87
  yield from self.next.steps_in_tree(should_resolve_calls)
65
88
 
89
+ def is_calling_flow(self) -> bool:
90
+ """Returns True if the call references a flow."""
91
+ return not self.is_calling_mcp_tool() and not self.is_calling_agent()
92
+
93
+ def is_calling_mcp_tool(self) -> bool:
94
+ """Returns True if the call references an MCP tool of an existing MCP server."""
95
+ from rasa.shared.utils.mcp.utils import mcp_server_exists
96
+
97
+ return self.has_mcp_tool_properties() and mcp_server_exists(self.mcp_server)
98
+
99
+ def has_mcp_tool_properties(self) -> bool:
100
+ """Returns True if the call step has MCP tool properties."""
101
+ return self.mcp_server is not None and self.mapping is not None
102
+
103
+ def is_calling_agent(self) -> bool:
104
+ """Returns True if the call references an agent."""
105
+ return self.call in AvailableAgents.get_instance().agents
106
+
66
107
  @property
67
108
  def default_id_postfix(self) -> str:
68
109
  """Returns the default id postfix of the flow step."""
@@ -73,6 +114,9 @@ class CallFlowStep(FlowStep):
73
114
  return (
74
115
  self.call == other.call
75
116
  and self.called_flow_reference == other.called_flow_reference
117
+ and self.mcp_server == other.mcp_server
118
+ and self.mapping == other.mapping
119
+ and self.exit_if == other.exit_if
76
120
  and super().__eq__(other)
77
121
  )
78
122
  return False