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
@@ -8,6 +8,9 @@ from rasa.dialogue_understanding.commands.chit_chat_answer_command import (
8
8
  )
9
9
  from rasa.dialogue_understanding.commands.clarify_command import ClarifyCommand
10
10
  from rasa.dialogue_understanding.commands.command import Command
11
+ from rasa.dialogue_understanding.commands.continue_agent_command import (
12
+ ContinueAgentCommand,
13
+ )
11
14
  from rasa.dialogue_understanding.commands.correct_slots_command import (
12
15
  CorrectedSlot,
13
16
  CorrectSlotsCommand,
@@ -29,6 +32,9 @@ from rasa.dialogue_understanding.commands.noop_command import NoopCommand
29
32
  from rasa.dialogue_understanding.commands.repeat_bot_messages_command import (
30
33
  RepeatBotMessagesCommand,
31
34
  )
35
+ from rasa.dialogue_understanding.commands.restart_agent_command import (
36
+ RestartAgentCommand,
37
+ )
32
38
  from rasa.dialogue_understanding.commands.restart_command import RestartCommand
33
39
  from rasa.dialogue_understanding.commands.session_end_command import SessionEndCommand
34
40
  from rasa.dialogue_understanding.commands.session_start_command import (
@@ -62,4 +68,6 @@ __all__ = [
62
68
  "SessionEndCommand",
63
69
  "RepeatBotMessagesCommand",
64
70
  "RestartCommand",
71
+ "ContinueAgentCommand",
72
+ "RestartAgentCommand",
65
73
  ]
@@ -2,10 +2,13 @@ from __future__ import annotations
2
2
 
3
3
  import re
4
4
  from dataclasses import dataclass
5
- from typing import Any, Dict, List
5
+ from typing import Any, Dict, List, Optional, Tuple
6
6
 
7
7
  import structlog
8
8
 
9
+ from rasa.core.policies.flows.flow_executor import (
10
+ remove_agent_stack_frame,
11
+ )
9
12
  from rasa.dialogue_understanding.commands.command import Command
10
13
  from rasa.dialogue_understanding.commands.command_syntax_manager import (
11
14
  CommandSyntaxManager,
@@ -13,12 +16,13 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
13
16
  )
14
17
  from rasa.dialogue_understanding.patterns.cancel import CancelPatternFlowStackFrame
15
18
  from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
19
+ from rasa.dialogue_understanding.stack.frames import DialogueStackFrame
16
20
  from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
17
21
  FlowStackFrameType,
18
22
  UserFlowStackFrame,
19
23
  )
20
24
  from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
21
- from rasa.shared.core.events import Event, FlowCancelled
25
+ from rasa.shared.core.events import AgentCancelled, Event, FlowCancelled
22
26
  from rasa.shared.core.flows import FlowsList
23
27
  from rasa.shared.core.trackers import DialogueStateTracker
24
28
 
@@ -48,8 +52,7 @@ class CancelFlowCommand(Command):
48
52
  """Selects the frames that were canceled.
49
53
 
50
54
  Args:
51
- dialogue_stack: The dialogue stack.
52
- current_flow: The current flow.
55
+ stack: The dialogue stack.
53
56
 
54
57
  Returns:
55
58
  The frames that were canceled.
@@ -106,6 +109,19 @@ class CancelFlowCommand(Command):
106
109
  )
107
110
  return []
108
111
 
112
+ if agent_frame := original_tracker.stack.find_active_agent_stack_frame_for_flow(
113
+ current_flow.id
114
+ ):
115
+ structlogger.debug(
116
+ "cancel_command.remove_agent_stack_frame",
117
+ command=self,
118
+ frame=agent_frame,
119
+ )
120
+ remove_agent_stack_frame(stack, agent_frame.agent_id)
121
+ applied_events.append(
122
+ AgentCancelled(agent_id=agent_frame.agent_id, flow_id=current_flow.id)
123
+ )
124
+
109
125
  # we pass in the original dialogue stack (before any of the currently
110
126
  # predicted commands were applied) to make sure we don't cancel any
111
127
  # frames that were added by the currently predicted commands.
@@ -159,3 +175,80 @@ class CancelFlowCommand(Command):
159
175
  CommandSyntaxManager.get_syntax_version(),
160
176
  mapper[CommandSyntaxManager.get_default_syntax_version()],
161
177
  )
178
+
179
+ def cancel_flow(
180
+ self,
181
+ tracker: DialogueStateTracker,
182
+ stack: DialogueStack,
183
+ flow_id: str,
184
+ ) -> List[Event]:
185
+ """Cancels a flow by flow id."""
186
+ applied_events: List[Event] = []
187
+
188
+ frames_to_cancel, user_frame_to_cancel = self._collect_frames_to_cancel(
189
+ stack, flow_id
190
+ )
191
+
192
+ # if the flow is not on the stack, do nothing
193
+ if user_frame_to_cancel is None:
194
+ structlogger.error(
195
+ "cancel_flow_command.cancel_flow.no_user_frame_to_cancel",
196
+ command=self,
197
+ )
198
+ return []
199
+
200
+ frames_ids_to_cancel = [frame.frame_id for frame in frames_to_cancel]
201
+
202
+ stack.push(
203
+ CancelPatternFlowStackFrame(
204
+ canceled_name=flow_id,
205
+ canceled_frames=frames_ids_to_cancel,
206
+ )
207
+ )
208
+
209
+ # create flow cancelled event
210
+ applied_events.extend(
211
+ [
212
+ FlowCancelled(
213
+ user_frame_to_cancel.flow_id, user_frame_to_cancel.step_id
214
+ ),
215
+ ]
216
+ )
217
+
218
+ update_stack_events = tracker.create_stack_updated_events(stack)
219
+
220
+ return applied_events + update_stack_events
221
+
222
+ def _collect_frames_to_cancel(
223
+ self, stack: DialogueStack, target_flow_id: str
224
+ ) -> Tuple[List[DialogueStackFrame], Optional[UserFlowStackFrame]]:
225
+ """Collect frames that need to be cancelled.
226
+
227
+ Args:
228
+ stack: The stack to collect frames from.
229
+ target_flow_id: The ID of the flow to cancel.
230
+
231
+ Returns:
232
+ A tuple containing (frames_to_cancel, frame_to_cancel).
233
+ """
234
+ frames_to_cancel: List[DialogueStackFrame] = []
235
+ frame_found = False
236
+ frame_to_cancel = None
237
+
238
+ for frame in stack.frames:
239
+ if isinstance(frame, UserFlowStackFrame) and (
240
+ frame.frame_type == FlowStackFrameType.REGULAR
241
+ or frame.frame_type == FlowStackFrameType.INTERRUPT
242
+ ):
243
+ if frame.flow_id == target_flow_id:
244
+ frames_to_cancel.append(frame)
245
+ frame_to_cancel = frame
246
+ frame_found = True
247
+ continue
248
+ elif frame_found:
249
+ break
250
+
251
+ if frame_found:
252
+ frames_to_cancel.append(frame)
253
+
254
+ return list(frames_to_cancel), frame_to_cancel
@@ -12,6 +12,10 @@ from rasa.dialogue_understanding.commands.free_form_answer_command import (
12
12
  FreeFormAnswerCommand,
13
13
  )
14
14
  from rasa.dialogue_understanding.patterns.chitchat import ChitchatPatternFlowStackFrame
15
+ from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
16
+ AgentStackFrame,
17
+ AgentState,
18
+ )
15
19
  from rasa.shared.core.events import Event
16
20
  from rasa.shared.core.flows import FlowsList
17
21
  from rasa.shared.core.trackers import DialogueStateTracker
@@ -52,6 +56,13 @@ class ChitChatAnswerCommand(FreeFormAnswerCommand):
52
56
  The events to apply to the tracker.
53
57
  """
54
58
  stack = tracker.stack
59
+
60
+ # if the top stack frame is an agent stack frame, we need to
61
+ # update the state to INTERRUPTED
62
+ if top_stack_frame := stack.top():
63
+ if isinstance(top_stack_frame, AgentStackFrame):
64
+ top_stack_frame.state = AgentState.INTERRUPTED
65
+
55
66
  stack.push(ChitchatPatternFlowStackFrame())
56
67
  return tracker.create_stack_updated_events(stack)
57
68
 
@@ -13,6 +13,10 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
13
13
  )
14
14
  from rasa.dialogue_understanding.commands.utils import extract_cleaned_options
15
15
  from rasa.dialogue_understanding.patterns.clarify import ClarifyPatternFlowStackFrame
16
+ from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
17
+ AgentStackFrame,
18
+ AgentState,
19
+ )
16
20
  from rasa.shared.core.events import Event
17
21
  from rasa.shared.core.flows import FlowsList
18
22
  from rasa.shared.core.trackers import DialogueStateTracker
@@ -85,6 +89,12 @@ class ClarifyCommand(Command):
85
89
  if flow is not None
86
90
  ]
87
91
 
92
+ # if the top stack frame is an agent stack frame, we need to
93
+ # update the state to INTERRUPTED
94
+ if top_stack_frame := stack.top():
95
+ if isinstance(top_stack_frame, AgentStackFrame):
96
+ top_stack_frame.state = AgentState.INTERRUPTED
97
+
88
98
  stack.push(ClarifyPatternFlowStackFrame(names=names))
89
99
  return tracker.create_stack_updated_events(stack)
90
100
 
@@ -0,0 +1,91 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from dataclasses import dataclass
5
+ from typing import Any, Dict, List
6
+
7
+ import structlog
8
+
9
+ from rasa.dialogue_understanding.commands.command import Command
10
+ from rasa.dialogue_understanding.commands.command_syntax_manager import (
11
+ CommandSyntaxManager,
12
+ CommandSyntaxVersion,
13
+ )
14
+ from rasa.shared.core.events import Event
15
+ from rasa.shared.core.flows import FlowsList
16
+ from rasa.shared.core.trackers import DialogueStateTracker
17
+
18
+ structlogger = structlog.get_logger()
19
+
20
+
21
+ @dataclass
22
+ class ContinueAgentCommand(Command):
23
+ """A command to continue the currently active agent's execution."""
24
+
25
+ @classmethod
26
+ def command(cls) -> str:
27
+ """Returns the command type."""
28
+ return "continue agent"
29
+
30
+ @classmethod
31
+ def from_dict(cls, data: Dict[str, Any]) -> ContinueAgentCommand:
32
+ """Converts the dictionary to a command.
33
+
34
+ Returns:
35
+ The converted dictionary.
36
+ """
37
+ return ContinueAgentCommand()
38
+
39
+ def run_command_on_tracker(
40
+ self,
41
+ tracker: DialogueStateTracker,
42
+ all_flows: FlowsList,
43
+ original_tracker: DialogueStateTracker,
44
+ ) -> List[Event]:
45
+ """Runs the command on the tracker.
46
+
47
+ Args:
48
+ tracker: The tracker to run the command on.
49
+ all_flows: All flows in the assistant.
50
+ original_tracker: The tracker before any command was executed.
51
+
52
+ Returns:
53
+ The events to apply to the tracker.
54
+ """
55
+ # do nothing
56
+ return []
57
+
58
+ def __hash__(self) -> int:
59
+ return hash(self.command())
60
+
61
+ def __eq__(self, other: object) -> bool:
62
+ return isinstance(other, ContinueAgentCommand)
63
+
64
+ def to_dsl(self) -> str:
65
+ """Converts the command to a DSL string."""
66
+ mapper = {
67
+ CommandSyntaxVersion.v1: "ContinueAgent()",
68
+ CommandSyntaxVersion.v2: "continue agent",
69
+ CommandSyntaxVersion.v3: "continue agent",
70
+ }
71
+ return mapper.get(
72
+ CommandSyntaxManager.get_syntax_version(),
73
+ mapper[CommandSyntaxManager.get_default_syntax_version()],
74
+ )
75
+
76
+ @classmethod
77
+ def from_dsl(cls, match: re.Match, **kwargs: Any) -> ContinueAgentCommand:
78
+ """Converts a DSL string to a command."""
79
+ return ContinueAgentCommand()
80
+
81
+ @staticmethod
82
+ def regex_pattern() -> str:
83
+ mapper = {
84
+ CommandSyntaxVersion.v1: r"ContinueAgent\(\)",
85
+ CommandSyntaxVersion.v2: r"""^[\s\W\d]*continue agent['"`]*$""",
86
+ CommandSyntaxVersion.v3: r"""^[\s\W\d]*continue agent['"`]*$""",
87
+ }
88
+ return mapper.get(
89
+ CommandSyntaxManager.get_syntax_version(),
90
+ mapper[CommandSyntaxManager.get_default_syntax_version()],
91
+ )
@@ -12,6 +12,10 @@ from rasa.dialogue_understanding.commands.free_form_answer_command import (
12
12
  FreeFormAnswerCommand,
13
13
  )
14
14
  from rasa.dialogue_understanding.patterns.search import SearchPatternFlowStackFrame
15
+ from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
16
+ AgentStackFrame,
17
+ AgentState,
18
+ )
15
19
  from rasa.shared.core.events import Event
16
20
  from rasa.shared.core.flows import FlowsList
17
21
  from rasa.shared.core.trackers import DialogueStateTracker
@@ -52,6 +56,13 @@ class KnowledgeAnswerCommand(FreeFormAnswerCommand):
52
56
  The events to apply to the tracker.
53
57
  """
54
58
  stack = tracker.stack
59
+
60
+ # if the top stack frame is an agent stack frame, we need to
61
+ # update the state to INTERRUPTED
62
+ if top_stack_frame := stack.top():
63
+ if isinstance(top_stack_frame, AgentStackFrame):
64
+ top_stack_frame.state = AgentState.INTERRUPTED
65
+
55
66
  stack.push(SearchPatternFlowStackFrame())
56
67
  return tracker.create_stack_updated_events(stack)
57
68
 
@@ -0,0 +1,162 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from dataclasses import dataclass
5
+ from typing import Any, Dict, List, Optional
6
+
7
+ from rasa.dialogue_understanding.commands.command import Command
8
+ from rasa.dialogue_understanding.commands.command_syntax_manager import (
9
+ CommandSyntaxManager,
10
+ CommandSyntaxVersion,
11
+ )
12
+ from rasa.dialogue_understanding.stack.dialogue_stack import DialogueStack
13
+ from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
14
+ AgentStackFrame,
15
+ AgentState,
16
+ )
17
+ from rasa.shared.core.events import AgentStarted, Event
18
+ from rasa.shared.core.flows import FlowsList
19
+ from rasa.shared.core.flows.steps import CallFlowStep
20
+ from rasa.shared.core.trackers import DialogueStateTracker
21
+
22
+
23
+ @dataclass
24
+ class RestartAgentCommand(Command):
25
+ """A command to restart an agentic loop within a flow."""
26
+
27
+ agent_id: str
28
+
29
+ @classmethod
30
+ def command(cls) -> str:
31
+ """Returns the command type."""
32
+ return "restart agent"
33
+
34
+ @classmethod
35
+ def from_dict(cls, data: Dict[str, Any]) -> RestartAgentCommand:
36
+ """Converts the dictionary to a command.
37
+
38
+ Returns:
39
+ The converted dictionary.
40
+ """
41
+ try:
42
+ return RestartAgentCommand(agent_id=data["agent_id"])
43
+ except KeyError as e:
44
+ raise ValueError(
45
+ f"Missing parameter '{e}' while parsing RestartAgentCommand."
46
+ ) from e
47
+
48
+ def run_command_on_tracker(
49
+ self,
50
+ tracker: DialogueStateTracker,
51
+ all_flows: FlowsList,
52
+ original_tracker: DialogueStateTracker,
53
+ ) -> List[Event]:
54
+ """Runs the command on the tracker.
55
+
56
+ Args:
57
+ tracker: The tracker to run the command on.
58
+ all_flows: All flows in the assistant.
59
+ original_tracker: The tracker before any command was executed.
60
+
61
+ Returns:
62
+ The events to apply to the tracker.
63
+ """
64
+ stack = tracker.stack
65
+
66
+ # get the agent flow
67
+ agent_flow_id = self._get_agent_flow(original_tracker)
68
+
69
+ # create a new agent stack frame to restart the agent
70
+ restart_agent_frame = self.create_restart_agent_stack_frame(
71
+ all_flows, agent_flow_id
72
+ )
73
+
74
+ # if the stack contains an agent stack frame with status
75
+ # "waiting for input" update the status to "interrupted"
76
+ self.update_agent_stack_frames_on_stack(stack)
77
+
78
+ # push the stack frame on the top of the stack
79
+ stack.push(restart_agent_frame)
80
+ return tracker.create_stack_updated_events(stack)
81
+
82
+ def __hash__(self) -> int:
83
+ return hash(self.command())
84
+
85
+ def __eq__(self, other: object) -> bool:
86
+ return isinstance(other, RestartAgentCommand)
87
+
88
+ def to_dsl(self) -> str:
89
+ """Converts the command to a DSL string."""
90
+ mapper = {
91
+ CommandSyntaxVersion.v1: f"RestartAgent({self.agent_id})",
92
+ CommandSyntaxVersion.v2: f"restart agent {self.agent_id}",
93
+ CommandSyntaxVersion.v3: f"restart agent {self.agent_id}",
94
+ }
95
+ return mapper.get(
96
+ CommandSyntaxManager.get_syntax_version(),
97
+ mapper[CommandSyntaxManager.get_default_syntax_version()],
98
+ )
99
+
100
+ @classmethod
101
+ def from_dsl(cls, match: re.Match, **kwargs: Any) -> RestartAgentCommand:
102
+ """Converts a DSL string to a command."""
103
+ return RestartAgentCommand(agent_id=str(match.group(1).strip()))
104
+
105
+ @staticmethod
106
+ def regex_pattern() -> str:
107
+ mapper = {
108
+ CommandSyntaxVersion.v1: r"RestartAgent\(['\"]?([a-zA-Z0-9_-]+)['\"]?\)",
109
+ CommandSyntaxVersion.v2: (
110
+ r"""^[\s\W\d]*restart agent ['"`]?([a-zA-Z0-9_-]+)['"`]*"""
111
+ ),
112
+ CommandSyntaxVersion.v3: (
113
+ r"""^[\s\W\d]*restart agent ['"`]?([a-zA-Z0-9_-]+)['"`]*"""
114
+ ),
115
+ }
116
+ return mapper.get(
117
+ CommandSyntaxManager.get_syntax_version(),
118
+ mapper[CommandSyntaxManager.get_default_syntax_version()],
119
+ )
120
+
121
+ def create_restart_agent_stack_frame(
122
+ self, all_flows: FlowsList, agent_flow_id: str
123
+ ) -> AgentStackFrame:
124
+ # get the agent flow
125
+ agent_flow = all_flows.flow_by_id(agent_flow_id)
126
+ if not agent_flow:
127
+ raise ValueError(f"Agent flow {agent_flow_id} not found")
128
+
129
+ # find the call flow step for the agent
130
+ # set the state to "waiting for input" so that the agent can process
131
+ # the latest user message
132
+ for step in agent_flow.steps:
133
+ if isinstance(step, CallFlowStep) and step.call == self.agent_id:
134
+ return AgentStackFrame(
135
+ frame_id=f"restart_agent_{self.agent_id}",
136
+ flow_id=agent_flow_id,
137
+ step_id=step.id,
138
+ agent_id=self.agent_id,
139
+ state=AgentState.WAITING_FOR_INPUT,
140
+ )
141
+
142
+ raise ValueError(f"Call step in agent flow {agent_flow_id} not found")
143
+
144
+ def update_agent_stack_frames_on_stack(self, stack: DialogueStack) -> None:
145
+ for frame in stack.frames:
146
+ if (
147
+ isinstance(frame, AgentStackFrame)
148
+ and frame.state == AgentState.WAITING_FOR_INPUT
149
+ ):
150
+ frame.state = AgentState.INTERRUPTED
151
+
152
+ def _get_agent_flow(self, tracker: DialogueStateTracker) -> Optional[str]:
153
+ # find events associated with the agent
154
+ agent_started_events = [
155
+ event
156
+ for event in tracker.events
157
+ if type(event) == AgentStarted and event.agent_id == self.agent_id
158
+ ]
159
+ # take the last one if the agent was started multiple times
160
+ if agent_started_events:
161
+ return agent_started_events[-1].flow_id
162
+ return None