rasa-pro 3.14.0a20__py3-none-any.whl → 3.14.0a23__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 (331) 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/guardrails/{lakera.py → clients.py} +55 -5
  30. rasa/builder/guardrails/constants.py +3 -0
  31. rasa/builder/guardrails/models.py +45 -10
  32. rasa/builder/guardrails/policy_checker.py +324 -0
  33. rasa/builder/guardrails/utils.py +42 -276
  34. rasa/builder/llm_service.py +32 -5
  35. rasa/builder/models.py +1 -0
  36. rasa/builder/project_generator.py +6 -1
  37. rasa/builder/service.py +16 -13
  38. rasa/builder/training_service.py +18 -24
  39. rasa/builder/validation_service.py +1 -1
  40. rasa/cli/arguments/default_arguments.py +12 -0
  41. rasa/cli/arguments/run.py +2 -0
  42. rasa/cli/arguments/train.py +2 -0
  43. rasa/cli/data.py +10 -8
  44. rasa/cli/dialogue_understanding_test.py +10 -7
  45. rasa/cli/e2e_test.py +9 -6
  46. rasa/cli/evaluate.py +4 -2
  47. rasa/cli/export.py +5 -2
  48. rasa/cli/inspect.py +8 -4
  49. rasa/cli/interactive.py +5 -4
  50. rasa/cli/llm_fine_tuning.py +11 -6
  51. rasa/cli/project_templates/finance/actions/general/__init__.py +0 -0
  52. rasa/cli/project_templates/finance/actions/general/action_human_handoff.py +49 -0
  53. rasa/cli/project_templates/finance/data/general/bot_challenge.yml +6 -0
  54. rasa/cli/project_templates/finance/data/general/goodbye.yml +1 -1
  55. rasa/cli/project_templates/finance/data/general/human_handoff.yml +1 -1
  56. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +1 -1
  57. rasa/cli/project_templates/finance/domain/general/_shared.yml +0 -14
  58. rasa/cli/project_templates/finance/domain/general/bot_challenge.yml +4 -0
  59. rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
  60. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +3 -6
  61. rasa/cli/project_templates/finance/domain/general/welcome.yml +29 -1
  62. rasa/cli/project_templates/finance/tests/e2e_test_cases/accounts/check_balance.yml +9 -0
  63. rasa/cli/project_templates/finance/tests/e2e_test_cases/accounts/download_statements.yml +43 -0
  64. rasa/cli/project_templates/finance/tests/e2e_test_cases/cards/block_card.yml +55 -0
  65. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
  66. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/feedback.yml +46 -0
  67. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/goodbye.yml +9 -0
  68. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/hello.yml +8 -0
  69. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/human_handoff.yml +35 -0
  70. rasa/cli/project_templates/finance/tests/e2e_test_cases/general/patterns.yml +22 -0
  71. rasa/cli/project_templates/finance/tests/e2e_test_cases/transfers/transfer_money.yml +56 -0
  72. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/feedback.yml +1 -1
  73. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +1 -1
  74. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +1 -1
  75. rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +1 -1
  76. rasa/cli/project_templates/tutorial/credentials.yml +10 -0
  77. rasa/cli/run.py +12 -10
  78. rasa/cli/scaffold.py +4 -4
  79. rasa/cli/shell.py +9 -5
  80. rasa/cli/studio/studio.py +1 -1
  81. rasa/cli/test.py +34 -14
  82. rasa/cli/train.py +41 -28
  83. rasa/cli/utils.py +1 -393
  84. rasa/cli/validation/__init__.py +0 -0
  85. rasa/cli/validation/bot_config.py +223 -0
  86. rasa/cli/validation/config_path_validation.py +257 -0
  87. rasa/cli/x.py +8 -4
  88. rasa/constants.py +7 -1
  89. rasa/core/actions/action.py +51 -10
  90. rasa/core/actions/action_run_slot_rejections.py +1 -1
  91. rasa/core/actions/direct_custom_actions_executor.py +9 -2
  92. rasa/core/actions/grpc_custom_action_executor.py +1 -1
  93. rasa/core/agent.py +19 -2
  94. rasa/core/available_agents.py +229 -0
  95. rasa/core/brokers/kafka.py +1 -1
  96. rasa/core/channels/__init__.py +82 -35
  97. rasa/core/channels/development_inspector.py +3 -3
  98. rasa/core/channels/inspector/README.md +25 -13
  99. rasa/core/channels/inspector/dist/assets/{arc-35222594.js → arc-6177260a.js} +1 -1
  100. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-a0efbfd3.js → blockDiagram-38ab4fdb-b054f038.js} +1 -1
  101. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-0584c0f2.js → c4Diagram-3d4e48cf-f25427d5.js} +1 -1
  102. rasa/core/channels/inspector/dist/assets/channel-bf9cbb34.js +1 -0
  103. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-39f40dbe.js → classDiagram-70f12bd4-c7a2af53.js} +1 -1
  104. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-1ad755f3.js → classDiagram-v2-f2320105-58db65c0.js} +1 -1
  105. rasa/core/channels/inspector/dist/assets/clone-8f9083bb.js +1 -0
  106. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-b0f4f0fe.js → createText-2e5e7dd3-088372e2.js} +1 -1
  107. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-9039bff9.js → edges-e0da2a9e-58676240.js} +1 -1
  108. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-65c9b127.js → erDiagram-9861fffd-0c14d7c6.js} +1 -1
  109. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-4f08b38e.js → flowDb-956e92f1-ea63f85c.js} +1 -1
  110. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-e95c362a.js → flowDiagram-66a62f08-a2af48cd.js} +1 -1
  111. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-9ecd5b59.js +1 -0
  112. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-703c3015.js → flowchart-elk-definition-4a651766-6937abe7.js} +1 -1
  113. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-699328ea.js → ganttDiagram-c361ad54-7473f357.js} +1 -1
  114. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-04cf4b05.js → gitGraphDiagram-72cf32ee-d0c9405e.js} +1 -1
  115. rasa/core/channels/inspector/dist/assets/{graph-ee94449e.js → graph-0a6f8466.js} +1 -1
  116. rasa/core/channels/inspector/dist/assets/{index-3862675e-940162b4.js → index-3862675e-7610671a.js} +1 -1
  117. rasa/core/channels/inspector/dist/assets/index-74e01d94.js +1354 -0
  118. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-c79c2866.js → infoDiagram-f8f76790-be397dc7.js} +1 -1
  119. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-84489d30.js → journeyDiagram-49397b02-4cefbf62.js} +1 -1
  120. rasa/core/channels/inspector/dist/assets/{layout-a9aa9858.js → layout-e7fbc2bf.js} +1 -1
  121. rasa/core/channels/inspector/dist/assets/{line-eb73cf26.js → line-a8aa457c.js} +1 -1
  122. rasa/core/channels/inspector/dist/assets/{linear-b3399f9a.js → linear-3351e0d2.js} +1 -1
  123. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-b095bf1a.js → mindmap-definition-fc14e90a-b8cbf605.js} +1 -1
  124. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-07644b66.js → pieDiagram-8a3498a8-f327f774.js} +1 -1
  125. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-573a3f9c.js → quadrantDiagram-120e2f19-2854c591.js} +1 -1
  126. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-d457e1e1.js → requirementDiagram-deff3bca-964985d5.js} +1 -1
  127. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-9d26e1a2.js → sankeyDiagram-04a897e0-edeb4f33.js} +1 -1
  128. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-3a9cde10.js → sequenceDiagram-704730f1-fcf70125.js} +1 -1
  129. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-4f3e8cec.js → stateDiagram-587899a1-0e770395.js} +1 -1
  130. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-e617e5bf.js → stateDiagram-v2-d93cdb3a-af8dcd22.js} +1 -1
  131. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-eab30d2f.js → styles-6aaf32cf-36a9e70d.js} +1 -1
  132. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-09994be2.js → styles-9a916d00-884a8b5b.js} +1 -1
  133. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-b7110364.js → styles-c10674c1-dc097813.js} +1 -1
  134. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-3ebc92ad.js → svgDrawCommon-08f97a94-5a2c7eed.js} +1 -1
  135. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-7d13d2f2.js → timeline-definition-85554ec2-e89c4f6e.js} +1 -1
  136. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-488385e1.js → xychartDiagram-e933f94c-afb6fe56.js} +1 -1
  137. rasa/core/channels/inspector/dist/index.html +1 -1
  138. rasa/core/channels/inspector/package.json +18 -18
  139. rasa/core/channels/inspector/src/App.tsx +29 -4
  140. rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
  141. rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +4 -2
  142. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +7 -4
  143. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
  144. rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
  145. rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
  146. rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
  147. rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
  148. rasa/core/channels/inspector/src/types.ts +21 -0
  149. rasa/core/channels/inspector/yarn.lock +336 -189
  150. rasa/core/channels/studio_chat.py +6 -6
  151. rasa/core/channels/telegram.py +4 -9
  152. rasa/core/channels/voice_stream/browser_audio.py +2 -0
  153. rasa/core/channels/voice_stream/genesys.py +1 -1
  154. rasa/core/channels/voice_stream/tts/deepgram.py +140 -0
  155. rasa/core/channels/voice_stream/twilio_media_streams.py +5 -1
  156. rasa/core/channels/voice_stream/voice_channel.py +3 -0
  157. rasa/core/config/__init__.py +0 -0
  158. rasa/core/{available_endpoints.py → config/available_endpoints.py} +51 -16
  159. rasa/core/config/configuration.py +260 -0
  160. rasa/core/config/credentials.py +19 -0
  161. rasa/core/config/message_procesing_config.py +34 -0
  162. rasa/core/constants.py +5 -0
  163. rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +88 -3
  164. rasa/core/iam_credentials_providers/credentials_provider_protocol.py +2 -1
  165. rasa/core/lock_store.py +6 -4
  166. rasa/core/nlg/generator.py +1 -1
  167. rasa/core/policies/enterprise_search_policy.py +5 -3
  168. rasa/core/policies/flow_policy.py +4 -4
  169. rasa/core/policies/flows/agent_executor.py +632 -0
  170. rasa/core/policies/flows/flow_executor.py +137 -76
  171. rasa/core/policies/flows/mcp_tool_executor.py +298 -0
  172. rasa/core/policies/intentless_policy.py +1 -1
  173. rasa/core/policies/ted_policy.py +20 -12
  174. rasa/core/policies/unexpected_intent_policy.py +6 -0
  175. rasa/core/processor.py +68 -44
  176. rasa/core/redis_connection_factory.py +78 -20
  177. rasa/core/run.py +37 -8
  178. rasa/core/test.py +4 -0
  179. rasa/core/tracker_stores/sql_tracker_store.py +1 -1
  180. rasa/core/tracker_stores/tracker_store.py +3 -7
  181. rasa/core/train.py +1 -1
  182. rasa/core/training/interactive.py +20 -18
  183. rasa/core/training/story_conflict.py +5 -5
  184. rasa/core/utils.py +22 -23
  185. rasa/dialogue_understanding/commands/__init__.py +8 -0
  186. rasa/dialogue_understanding/commands/cancel_flow_command.py +19 -5
  187. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +21 -2
  188. rasa/dialogue_understanding/commands/clarify_command.py +20 -2
  189. rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
  190. rasa/dialogue_understanding/commands/knowledge_answer_command.py +21 -2
  191. rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
  192. rasa/dialogue_understanding/commands/start_flow_command.py +68 -7
  193. rasa/dialogue_understanding/commands/utils.py +124 -2
  194. rasa/dialogue_understanding/generator/command_parser.py +4 -0
  195. rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
  196. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  197. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  198. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +66 -0
  199. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +66 -0
  200. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +89 -0
  201. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +88 -0
  202. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +42 -7
  203. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +40 -3
  204. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +20 -3
  205. rasa/dialogue_understanding/patterns/cancel.py +27 -6
  206. rasa/dialogue_understanding/patterns/clarify.py +3 -14
  207. rasa/dialogue_understanding/patterns/continue_interrupted.py +239 -6
  208. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +46 -8
  209. rasa/dialogue_understanding/processor/command_processor.py +136 -15
  210. rasa/dialogue_understanding/stack/dialogue_stack.py +98 -2
  211. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
  212. rasa/dialogue_understanding/stack/utils.py +57 -3
  213. rasa/dialogue_understanding/utils.py +24 -4
  214. rasa/dialogue_understanding_test/du_test_runner.py +8 -3
  215. rasa/e2e_test/e2e_test_runner.py +13 -3
  216. rasa/engine/caching.py +2 -2
  217. rasa/engine/constants.py +1 -1
  218. rasa/engine/loader.py +12 -0
  219. rasa/engine/recipes/default_components.py +138 -49
  220. rasa/engine/recipes/default_recipe.py +108 -11
  221. rasa/engine/runner/dask.py +8 -5
  222. rasa/engine/validation.py +19 -6
  223. rasa/graph_components/validators/default_recipe_validator.py +86 -28
  224. rasa/hooks.py +5 -5
  225. rasa/llm_fine_tuning/utils.py +2 -2
  226. rasa/model_training.py +60 -47
  227. rasa/nlu/classifiers/diet_classifier.py +198 -98
  228. rasa/nlu/classifiers/logistic_regression_classifier.py +1 -4
  229. rasa/nlu/classifiers/mitie_intent_classifier.py +3 -0
  230. rasa/nlu/classifiers/sklearn_intent_classifier.py +1 -3
  231. rasa/nlu/extractors/crf_entity_extractor.py +9 -10
  232. rasa/nlu/extractors/mitie_entity_extractor.py +3 -0
  233. rasa/nlu/extractors/spacy_entity_extractor.py +3 -0
  234. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +4 -0
  235. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +5 -0
  236. rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +2 -0
  237. rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +3 -0
  238. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +4 -2
  239. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -0
  240. rasa/nlu/selectors/response_selector.py +10 -2
  241. rasa/nlu/tokenizers/jieba_tokenizer.py +3 -4
  242. rasa/nlu/tokenizers/mitie_tokenizer.py +3 -2
  243. rasa/nlu/tokenizers/spacy_tokenizer.py +3 -2
  244. rasa/nlu/utils/mitie_utils.py +3 -0
  245. rasa/nlu/utils/spacy_utils.py +3 -2
  246. rasa/plugin.py +8 -8
  247. rasa/privacy/privacy_manager.py +12 -3
  248. rasa/server.py +15 -3
  249. rasa/shared/agents/__init__.py +0 -0
  250. rasa/shared/agents/auth/__init__.py +0 -0
  251. rasa/shared/agents/auth/agent_auth_factory.py +105 -0
  252. rasa/shared/agents/auth/agent_auth_manager.py +92 -0
  253. rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
  254. rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
  255. rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
  256. rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
  257. rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +167 -0
  258. rasa/shared/agents/auth/constants.py +12 -0
  259. rasa/shared/agents/auth/types.py +12 -0
  260. rasa/shared/agents/utils.py +35 -0
  261. rasa/shared/constants.py +8 -0
  262. rasa/shared/core/constants.py +16 -1
  263. rasa/shared/core/domain.py +0 -7
  264. rasa/shared/core/events.py +327 -0
  265. rasa/shared/core/flows/constants.py +5 -0
  266. rasa/shared/core/flows/flow.py +1 -1
  267. rasa/shared/core/flows/flows_list.py +21 -5
  268. rasa/shared/core/flows/flows_yaml_schema.json +119 -184
  269. rasa/shared/core/flows/steps/call.py +49 -5
  270. rasa/shared/core/flows/steps/collect.py +98 -13
  271. rasa/shared/core/flows/validation.py +372 -8
  272. rasa/shared/core/flows/yaml_flows_io.py +3 -2
  273. rasa/shared/core/slots.py +2 -2
  274. rasa/shared/core/trackers.py +5 -2
  275. rasa/shared/exceptions.py +16 -0
  276. rasa/shared/importers/rasa.py +1 -1
  277. rasa/shared/importers/utils.py +9 -3
  278. rasa/shared/providers/llm/_base_litellm_client.py +41 -9
  279. rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
  280. rasa/shared/providers/llm/llm_client.py +7 -3
  281. rasa/shared/providers/llm/llm_response.py +66 -0
  282. rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
  283. rasa/shared/utils/common.py +24 -0
  284. rasa/shared/utils/health_check/health_check.py +7 -3
  285. rasa/shared/utils/llm.py +39 -16
  286. rasa/shared/utils/mcp/__init__.py +0 -0
  287. rasa/shared/utils/mcp/server_connection.py +247 -0
  288. rasa/shared/utils/mcp/utils.py +20 -0
  289. rasa/shared/utils/schemas/events.py +42 -0
  290. rasa/shared/utils/yaml.py +3 -1
  291. rasa/studio/pull/pull.py +3 -2
  292. rasa/studio/train.py +8 -7
  293. rasa/studio/upload.py +3 -6
  294. rasa/telemetry.py +69 -5
  295. rasa/tracing/config.py +45 -12
  296. rasa/tracing/constants.py +14 -0
  297. rasa/tracing/instrumentation/attribute_extractors.py +142 -9
  298. rasa/tracing/instrumentation/instrumentation.py +626 -21
  299. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  300. rasa/tracing/instrumentation/metrics.py +32 -0
  301. rasa/tracing/metric_instrument_provider.py +68 -0
  302. rasa/utils/common.py +92 -1
  303. rasa/utils/endpoints.py +11 -2
  304. rasa/utils/log_utils.py +96 -5
  305. rasa/utils/ml_utils.py +1 -1
  306. rasa/utils/pypred.py +38 -0
  307. rasa/utils/tensorflow/__init__.py +7 -0
  308. rasa/utils/tensorflow/callback.py +136 -101
  309. rasa/utils/tensorflow/crf.py +1 -1
  310. rasa/utils/tensorflow/data_generator.py +21 -8
  311. rasa/utils/tensorflow/layers.py +21 -11
  312. rasa/utils/tensorflow/metrics.py +7 -3
  313. rasa/utils/tensorflow/models.py +56 -8
  314. rasa/utils/tensorflow/rasa_layers.py +8 -6
  315. rasa/utils/tensorflow/transformer.py +2 -3
  316. rasa/utils/train_utils.py +54 -24
  317. rasa/validator.py +17 -13
  318. rasa/version.py +1 -1
  319. {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/METADATA +48 -42
  320. {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/RECORD +323 -251
  321. rasa/builder/scrape_rasa_docs.py +0 -97
  322. rasa/cli/project_templates/finance/data/general/agent_details.yml +0 -6
  323. rasa/cli/project_templates/finance/domain/_system/patterns/pattern_session_start.yml +0 -11
  324. rasa/cli/project_templates/finance/domain/general/agent_details.yml +0 -31
  325. rasa/core/channels/inspector/dist/assets/channel-8e08bed9.js +0 -1
  326. rasa/core/channels/inspector/dist/assets/clone-78c82dea.js +0 -1
  327. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-2b08f601.js +0 -1
  328. rasa/core/channels/inspector/dist/assets/index-c941dcb3.js +0 -1336
  329. {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/NOTICE +0 -0
  330. {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/WHEEL +0 -0
  331. {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.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