rasa-pro 3.14.0.dev5__py3-none-any.whl → 3.14.0.dev7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rasa-pro might be problematic. Click here for more details.

Files changed (477) hide show
  1. rasa/agents/agent_factory.py +122 -0
  2. rasa/agents/agent_manager.py +163 -0
  3. rasa/agents/constants.py +40 -0
  4. rasa/agents/core/agent_protocol.py +107 -0
  5. rasa/agents/core/types.py +70 -0
  6. rasa/agents/exceptions.py +38 -0
  7. rasa/agents/protocol/__init__.py +5 -0
  8. rasa/agents/protocol/a2a/a2a_agent.py +662 -0
  9. rasa/agents/protocol/mcp/mcp_base_agent.py +685 -0
  10. rasa/agents/protocol/mcp/mcp_open_agent.py +290 -0
  11. rasa/agents/protocol/mcp/mcp_task_agent.py +484 -0
  12. rasa/agents/schemas/__init__.py +12 -0
  13. rasa/agents/schemas/agent_input.py +38 -0
  14. rasa/agents/schemas/agent_output.py +26 -0
  15. rasa/agents/schemas/agent_tool_result.py +67 -0
  16. rasa/agents/schemas/agent_tool_schema.py +134 -0
  17. rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +15 -0
  18. rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +17 -0
  19. rasa/agents/utils.py +77 -0
  20. rasa/agents/validation.py +484 -0
  21. rasa/api.py +14 -6
  22. rasa/cli/arguments/default_arguments.py +12 -0
  23. rasa/cli/arguments/run.py +2 -0
  24. rasa/cli/arguments/train.py +2 -0
  25. rasa/cli/dialogue_understanding_test.py +4 -0
  26. rasa/cli/e2e_test.py +4 -0
  27. rasa/cli/inspect.py +3 -0
  28. rasa/cli/interactive.py +2 -0
  29. rasa/cli/llm_fine_tuning.py +5 -0
  30. rasa/cli/project_templates/tutorial/config.yml +1 -2
  31. rasa/cli/run.py +4 -0
  32. rasa/cli/scaffold.py +2 -46
  33. rasa/cli/shell.py +3 -0
  34. rasa/cli/train.py +2 -0
  35. rasa/cli/utils.py +85 -1
  36. rasa/constants.py +6 -0
  37. rasa/core/actions/action.py +52 -10
  38. rasa/core/agent.py +19 -1
  39. rasa/core/available_agents.py +220 -0
  40. rasa/core/available_endpoints.py +30 -0
  41. rasa/core/channels/channel.py +3 -4
  42. rasa/core/channels/development_inspector.py +4 -4
  43. rasa/core/channels/hangouts.py +2 -2
  44. rasa/core/channels/inspector/dist/assets/{arc-18042c22.js → arc-cce7e0a8.js} +1 -1
  45. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-fdd6bcfa.js → blockDiagram-38ab4fdb-e2a49be7.js} +1 -1
  46. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-f5ae6786.js → c4Diagram-3d4e48cf-3def7895.js} +1 -1
  47. rasa/core/channels/inspector/dist/assets/channel-858c2c20.js +1 -0
  48. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-81efba3e.js → classDiagram-70f12bd4-e66fe4df.js} +1 -1
  49. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-3b6b6a92.js → classDiagram-v2-f2320105-eb874aaa.js} +1 -1
  50. rasa/core/channels/inspector/dist/assets/clone-4b80996c.js +1 -0
  51. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-31422447.js → createText-2e5e7dd3-cf934643.js} +1 -1
  52. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-518a90db.js → edges-e0da2a9e-8fdf9155.js} +1 -1
  53. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-a6d3c25a.js → erDiagram-9861fffd-6106fb96.js} +1 -1
  54. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e048c2be.js → flowDb-956e92f1-4c2bb040.js} +1 -1
  55. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-c7474c91.js → flowDiagram-66a62f08-f0ff96af.js} +1 -1
  56. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-16f09b7a.js +1 -0
  57. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-cb4d8723.js → flowchart-elk-definition-4a651766-a21707ec.js} +1 -1
  58. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-346636a2.js → ganttDiagram-c361ad54-c165acb1.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-7c508874.js → gitGraphDiagram-72cf32ee-b0564cf1.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/{graph-14702d8a.js → graph-e557e67a.js} +1 -1
  61. rasa/core/channels/inspector/dist/assets/{index-3862675e-f18b534b.js → index-3862675e-1ce60e9e.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/index-996fe816.js +1353 -0
  63. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-64154b83.js → infoDiagram-f8f76790-893569e2.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-833a5f95.js → journeyDiagram-49397b02-c29c864f.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/{layout-5a3b2123.js → layout-649a5eae.js} +1 -1
  66. rasa/core/channels/inspector/dist/assets/{line-2272a8c7.js → line-0e5685ed.js} +1 -1
  67. rasa/core/channels/inspector/dist/assets/{linear-35bcf273.js → linear-eaa320bd.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-92dcb0e9.js → mindmap-definition-fc14e90a-f35df9e6.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-94dbc900.js → pieDiagram-8a3498a8-78339e96.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-8b7a9c33.js → quadrantDiagram-120e2f19-9b5f2f14.js} +1 -1
  71. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-6f7eab81.js → requirementDiagram-deff3bca-d05ddb3a.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-f43e581d.js → sankeyDiagram-04a897e0-d9be5dfd.js} +1 -1
  73. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-0bcbefc3.js → sequenceDiagram-704730f1-0f1c4348.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-b8a74083.js → stateDiagram-587899a1-9ddf63b3.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-2070218f.js → stateDiagram-v2-d93cdb3a-bc2b81ed.js} +1 -1
  76. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-f1d54e34.js → styles-6aaf32cf-0a287936.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-980de489.js → styles-9a916d00-e3941990.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-3c03abde.js → styles-c10674c1-ce4eca24.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-46ba068f.js → svgDrawCommon-08f97a94-d822b1a8.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-901f5e3d.js → timeline-definition-85554ec2-e144c7a7.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-acbc628a.js → xychartDiagram-e933f94c-ab7f4e14.js} +1 -1
  82. rasa/core/channels/inspector/dist/index.html +2 -2
  83. rasa/core/channels/inspector/index.html +1 -1
  84. rasa/core/channels/inspector/src/App.tsx +37 -12
  85. rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
  86. rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +3 -2
  87. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +3 -12
  88. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
  89. rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
  90. rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
  91. rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
  92. rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
  93. rasa/core/channels/inspector/src/types.ts +21 -0
  94. rasa/core/channels/socketio.py +51 -212
  95. rasa/core/channels/studio_chat.py +29 -49
  96. rasa/core/channels/voice_stream/genesys.py +1 -1
  97. rasa/core/channels/voice_stream/voice_channel.py +3 -5
  98. rasa/core/constants.py +4 -0
  99. rasa/core/policies/enterprise_search_policy.py +11 -6
  100. rasa/core/policies/flow_policy.py +4 -4
  101. rasa/core/policies/flows/flow_executor.py +519 -73
  102. rasa/core/policies/flows/mcp_tool_executor.py +277 -0
  103. rasa/core/policies/intentless_policy.py +1 -1
  104. rasa/core/policies/unexpected_intent_policy.py +1 -0
  105. rasa/core/processor.py +18 -15
  106. rasa/core/run.py +11 -14
  107. rasa/core/tracker_stores/tracker_store.py +3 -7
  108. rasa/core/train.py +1 -1
  109. rasa/core/training/interactive.py +16 -16
  110. rasa/core/training/story_conflict.py +5 -5
  111. rasa/core/utils.py +21 -1
  112. rasa/dialogue_understanding/commands/__init__.py +8 -0
  113. rasa/dialogue_understanding/commands/cancel_flow_command.py +19 -5
  114. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +11 -0
  115. rasa/dialogue_understanding/commands/clarify_command.py +10 -0
  116. rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
  117. rasa/dialogue_understanding/commands/knowledge_answer_command.py +11 -0
  118. rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
  119. rasa/dialogue_understanding/commands/start_flow_command.py +68 -7
  120. rasa/dialogue_understanding/commands/utils.py +124 -2
  121. rasa/dialogue_understanding/generator/command_parser.py +4 -0
  122. rasa/dialogue_understanding/generator/flow_retrieval.py +9 -10
  123. rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
  124. rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
  125. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
  126. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +61 -0
  127. rasa/{cli/project_templates/telco/prompts/command-generator.jinja2 → dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2} +7 -3
  128. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +81 -0
  129. rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +81 -0
  130. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +7 -6
  131. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +7 -6
  132. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +41 -2
  133. rasa/dialogue_understanding/patterns/clarify.py +3 -14
  134. rasa/dialogue_understanding/patterns/continue_interrupted.py +239 -6
  135. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +46 -8
  136. rasa/dialogue_understanding/processor/command_processor.py +31 -15
  137. rasa/dialogue_understanding/stack/dialogue_stack.py +123 -2
  138. rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
  139. rasa/dialogue_understanding/stack/utils.py +57 -3
  140. rasa/dialogue_understanding/utils.py +24 -4
  141. rasa/dialogue_understanding_test/du_test_runner.py +7 -2
  142. rasa/e2e_test/e2e_test_runner.py +12 -2
  143. rasa/engine/caching.py +2 -2
  144. rasa/engine/recipes/default_components.py +10 -18
  145. rasa/engine/storage/local_model_storage.py +2 -45
  146. rasa/graph_components/validators/default_recipe_validator.py +134 -134
  147. rasa/hooks.py +5 -5
  148. rasa/llm_fine_tuning/utils.py +2 -2
  149. rasa/model_manager/model_api.py +5 -4
  150. rasa/model_manager/runner_service.py +1 -1
  151. rasa/model_manager/socket_bridge.py +14 -20
  152. rasa/model_manager/trainer_service.py +9 -12
  153. rasa/model_manager/utils.py +29 -1
  154. rasa/model_manager/warm_rasa_process.py +1 -1
  155. rasa/model_training.py +8 -6
  156. rasa/nlu/extractors/extractor.py +2 -1
  157. rasa/plugin.py +8 -8
  158. rasa/privacy/privacy_manager.py +11 -2
  159. rasa/server.py +14 -2
  160. rasa/shared/agents/utils.py +35 -0
  161. rasa/shared/constants.py +8 -0
  162. rasa/shared/core/constants.py +11 -1
  163. rasa/shared/core/domain.py +11 -58
  164. rasa/shared/core/events.py +327 -0
  165. rasa/shared/core/flows/flow_step.py +1 -7
  166. rasa/shared/core/flows/flows_list.py +15 -5
  167. rasa/shared/core/flows/flows_yaml_schema.json +112 -186
  168. rasa/shared/core/flows/steps/call.py +53 -5
  169. rasa/shared/core/flows/validation.py +177 -7
  170. rasa/shared/core/flows/yaml_flows_io.py +9 -17
  171. rasa/shared/core/slots.py +2 -6
  172. rasa/shared/core/trackers.py +5 -2
  173. rasa/shared/exceptions.py +4 -0
  174. rasa/shared/importers/importer.py +0 -6
  175. rasa/shared/importers/rasa.py +1 -1
  176. rasa/shared/importers/utils.py +10 -80
  177. rasa/shared/providers/_utils.py +44 -60
  178. rasa/shared/providers/embedding/default_litellm_embedding_client.py +0 -2
  179. rasa/shared/providers/llm/_base_litellm_client.py +39 -7
  180. rasa/shared/providers/llm/default_litellm_llm_client.py +0 -2
  181. rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
  182. rasa/shared/providers/llm/llm_client.py +7 -3
  183. rasa/shared/providers/llm/llm_response.py +66 -0
  184. rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
  185. rasa/shared/utils/health_check/health_check.py +7 -3
  186. rasa/shared/utils/llm.py +28 -5
  187. rasa/shared/utils/mcp/server_connection.py +186 -0
  188. rasa/shared/utils/schemas/events.py +42 -0
  189. rasa/shared/utils/yaml.py +3 -1
  190. rasa/studio/upload.py +47 -16
  191. rasa/telemetry.py +23 -97
  192. rasa/tracing/instrumentation/instrumentation.py +14 -10
  193. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
  194. rasa/utils/common.py +79 -0
  195. rasa/utils/io.py +9 -27
  196. rasa/utils/json_utils.py +1 -6
  197. rasa/utils/log_utils.py +2 -6
  198. rasa/utils/ml_utils.py +1 -1
  199. rasa/utils/tensorflow/rasa_layers.py +1 -1
  200. rasa/utils/train_utils.py +15 -15
  201. rasa/validator.py +19 -21
  202. rasa/version.py +1 -1
  203. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/METADATA +14 -17
  204. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/RECORD +214 -442
  205. rasa/builder/README.md +0 -120
  206. rasa/builder/auth.py +0 -176
  207. rasa/builder/config.py +0 -115
  208. rasa/builder/copilot/constants.py +0 -25
  209. rasa/builder/copilot/copilot.py +0 -372
  210. rasa/builder/copilot/copilot_response_handler.py +0 -487
  211. rasa/builder/copilot/copilot_templated_message_provider.py +0 -58
  212. rasa/builder/copilot/exceptions.py +0 -20
  213. rasa/builder/copilot/models.py +0 -431
  214. rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +0 -726
  215. rasa/builder/copilot/telemetry.py +0 -195
  216. rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +0 -16
  217. rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +0 -26
  218. rasa/builder/document_retrieval/constants.py +0 -15
  219. rasa/builder/document_retrieval/inkeep-rag-response-schema.json +0 -64
  220. rasa/builder/document_retrieval/inkeep_document_retrieval.py +0 -238
  221. rasa/builder/document_retrieval/models.py +0 -62
  222. rasa/builder/download.py +0 -140
  223. rasa/builder/exceptions.py +0 -55
  224. rasa/builder/guardrails/__init__.py +0 -1
  225. rasa/builder/guardrails/constants.py +0 -3
  226. rasa/builder/guardrails/exceptions.py +0 -4
  227. rasa/builder/guardrails/lakera.py +0 -206
  228. rasa/builder/guardrails/models.py +0 -199
  229. rasa/builder/guardrails/utils.py +0 -305
  230. rasa/builder/job_manager.py +0 -87
  231. rasa/builder/jobs.py +0 -234
  232. rasa/builder/llm_service.py +0 -246
  233. rasa/builder/logging_utils.py +0 -209
  234. rasa/builder/main.py +0 -174
  235. rasa/builder/models.py +0 -197
  236. rasa/builder/project_generator.py +0 -450
  237. rasa/builder/project_info.py +0 -72
  238. rasa/builder/scrape_rasa_docs.py +0 -97
  239. rasa/builder/service.py +0 -1142
  240. rasa/builder/shared/tracker_context.py +0 -212
  241. rasa/builder/skill_to_bot_prompt.jinja2 +0 -164
  242. rasa/builder/training_service.py +0 -132
  243. rasa/builder/validation_service.py +0 -93
  244. rasa/cli/project_templates/basic/actions/action_api.py +0 -15
  245. rasa/cli/project_templates/basic/actions/action_human_handoff.py +0 -44
  246. rasa/cli/project_templates/basic/config.yml +0 -23
  247. rasa/cli/project_templates/basic/credentials.yml +0 -34
  248. rasa/cli/project_templates/basic/data/general/feedback.yml +0 -20
  249. rasa/cli/project_templates/basic/data/general/goodbye.yml +0 -6
  250. rasa/cli/project_templates/basic/data/general/hello.yml +0 -7
  251. rasa/cli/project_templates/basic/data/general/help.yml +0 -6
  252. rasa/cli/project_templates/basic/data/general/human_handoff.yml +0 -16
  253. rasa/cli/project_templates/basic/data/general/welcome.yml +0 -9
  254. rasa/cli/project_templates/basic/data/system/pattern_completed.yml +0 -7
  255. rasa/cli/project_templates/basic/data/system/pattern_correction.yml +0 -7
  256. rasa/cli/project_templates/basic/data/system/pattern_search.yml +0 -8
  257. rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +0 -8
  258. rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +0 -65
  259. rasa/cli/project_templates/basic/docs/template.txt +0 -7
  260. rasa/cli/project_templates/basic/domain/general/assistant_details.yml +0 -12
  261. rasa/cli/project_templates/basic/domain/general/bot_identity.yml +0 -5
  262. rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +0 -5
  263. rasa/cli/project_templates/basic/domain/general/feedback.yml +0 -28
  264. rasa/cli/project_templates/basic/domain/general/goodbye.yml +0 -7
  265. rasa/cli/project_templates/basic/domain/general/help.yml +0 -5
  266. rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +0 -35
  267. rasa/cli/project_templates/basic/domain/general/utils.yml +0 -13
  268. rasa/cli/project_templates/basic/domain/general/welcome.yml +0 -7
  269. rasa/cli/project_templates/basic/endpoints.yml +0 -73
  270. rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +0 -19
  271. rasa/cli/project_templates/finance/actions/__init__.py +0 -46
  272. rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +0 -47
  273. rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +0 -40
  274. rasa/cli/project_templates/finance/actions/action_session_start.py +0 -74
  275. rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +0 -48
  276. rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +0 -36
  277. rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +0 -54
  278. rasa/cli/project_templates/finance/actions/database.py +0 -277
  279. rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
  280. rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +0 -52
  281. rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +0 -51
  282. rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +0 -40
  283. rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +0 -40
  284. rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +0 -46
  285. rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +0 -18
  286. rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +0 -49
  287. rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +0 -19
  288. rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +0 -36
  289. rasa/cli/project_templates/finance/config.yml +0 -21
  290. rasa/cli/project_templates/finance/credentials.yml +0 -32
  291. rasa/cli/project_templates/finance/csvs/accounts.csv +0 -8
  292. rasa/cli/project_templates/finance/csvs/advisors.csv +0 -7
  293. rasa/cli/project_templates/finance/csvs/appointments.csv +0 -211
  294. rasa/cli/project_templates/finance/csvs/branches.csv +0 -10
  295. rasa/cli/project_templates/finance/csvs/cards.csv +0 -11
  296. rasa/cli/project_templates/finance/csvs/payees.csv +0 -11
  297. rasa/cli/project_templates/finance/csvs/transactions.csv +0 -71
  298. rasa/cli/project_templates/finance/csvs/users.csv +0 -4
  299. rasa/cli/project_templates/finance/data/accounts/check_balance.yml +0 -10
  300. rasa/cli/project_templates/finance/data/cards/block_card.yml +0 -66
  301. rasa/cli/project_templates/finance/data/cards/select_card.yml +0 -12
  302. rasa/cli/project_templates/finance/data/general/bot_identity.yml +0 -6
  303. rasa/cli/project_templates/finance/data/general/feedback.yml +0 -20
  304. rasa/cli/project_templates/finance/data/general/goodbye.yml +0 -6
  305. rasa/cli/project_templates/finance/data/general/hello.yml +0 -7
  306. rasa/cli/project_templates/finance/data/general/help.yml +0 -9
  307. rasa/cli/project_templates/finance/data/general/human_handoff.yml +0 -16
  308. rasa/cli/project_templates/finance/data/general/welcome.yml +0 -9
  309. rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +0 -5
  310. rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +0 -7
  311. rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +0 -7
  312. rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +0 -8
  313. rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +0 -8
  314. rasa/cli/project_templates/finance/data/system/source/accounts.json +0 -51
  315. rasa/cli/project_templates/finance/data/system/source/advisors.json +0 -44
  316. rasa/cli/project_templates/finance/data/system/source/appointments.json +0 -1474
  317. rasa/cli/project_templates/finance/data/system/source/branches.json +0 -47
  318. rasa/cli/project_templates/finance/data/system/source/cards.json +0 -72
  319. rasa/cli/project_templates/finance/data/system/source/payees.json +0 -74
  320. rasa/cli/project_templates/finance/data/system/source/transactions.json +0 -492
  321. rasa/cli/project_templates/finance/data/system/source/users.json +0 -29
  322. rasa/cli/project_templates/finance/data/transfers/add_payee.yml +0 -29
  323. rasa/cli/project_templates/finance/data/transfers/list_payees.yml +0 -5
  324. rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +0 -21
  325. rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +0 -67
  326. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +0 -8
  327. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +0 -8
  328. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +0 -8
  329. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +0 -8
  330. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +0 -8
  331. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +0 -7
  332. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +0 -8
  333. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +0 -8
  334. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +0 -8
  335. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +0 -8
  336. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +0 -8
  337. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +0 -8
  338. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +0 -8
  339. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +0 -8
  340. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +0 -8
  341. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +0 -8
  342. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +0 -8
  343. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +0 -8
  344. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +0 -8
  345. rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +0 -8
  346. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +0 -50
  347. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +0 -50
  348. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +0 -48
  349. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +0 -50
  350. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +0 -50
  351. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +0 -47
  352. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +0 -50
  353. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +0 -50
  354. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +0 -47
  355. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +0 -50
  356. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +0 -50
  357. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +0 -50
  358. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +0 -47
  359. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +0 -50
  360. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +0 -50
  361. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +0 -47
  362. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +0 -50
  363. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +0 -50
  364. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +0 -47
  365. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +0 -50
  366. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +0 -50
  367. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +0 -47
  368. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +0 -47
  369. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +0 -50
  370. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +0 -50
  371. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +0 -47
  372. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +0 -50
  373. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +0 -50
  374. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +0 -47
  375. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +0 -50
  376. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +0 -50
  377. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +0 -47
  378. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +0 -50
  379. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +0 -50
  380. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +0 -50
  381. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +0 -47
  382. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +0 -50
  383. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +0 -50
  384. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +0 -47
  385. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +0 -50
  386. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +0 -50
  387. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +0 -47
  388. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +0 -50
  389. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +0 -50
  390. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +0 -50
  391. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +0 -47
  392. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +0 -50
  393. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +0 -50
  394. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +0 -47
  395. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +0 -50
  396. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +0 -50
  397. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +0 -47
  398. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +0 -50
  399. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +0 -50
  400. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +0 -47
  401. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +0 -47
  402. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +0 -50
  403. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +0 -50
  404. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +0 -50
  405. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +0 -50
  406. rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +0 -47
  407. rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +0 -11
  408. rasa/cli/project_templates/finance/domain/cards/block_card.yml +0 -101
  409. rasa/cli/project_templates/finance/domain/cards/select_card.yml +0 -12
  410. rasa/cli/project_templates/finance/domain/general/assistant_details.yml +0 -12
  411. rasa/cli/project_templates/finance/domain/general/bot_identity.yml +0 -5
  412. rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +0 -5
  413. rasa/cli/project_templates/finance/domain/general/defaults.yml +0 -24
  414. rasa/cli/project_templates/finance/domain/general/feedback.yml +0 -28
  415. rasa/cli/project_templates/finance/domain/general/goodbye.yml +0 -7
  416. rasa/cli/project_templates/finance/domain/general/help.yml +0 -5
  417. rasa/cli/project_templates/finance/domain/general/human_handoff.yml +0 -30
  418. rasa/cli/project_templates/finance/domain/general/utils.yml +0 -13
  419. rasa/cli/project_templates/finance/domain/general/welcome.yml +0 -8
  420. rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +0 -47
  421. rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +0 -4
  422. rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +0 -16
  423. rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +0 -79
  424. rasa/cli/project_templates/finance/endpoints.yml +0 -63
  425. rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +0 -19
  426. rasa/cli/project_templates/telco/actions/__init__.py +0 -0
  427. rasa/cli/project_templates/telco/actions/actions_billing.py +0 -204
  428. rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +0 -48
  429. rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +0 -28
  430. rasa/cli/project_templates/telco/actions/actions_session_start.py +0 -18
  431. rasa/cli/project_templates/telco/config.yml +0 -25
  432. rasa/cli/project_templates/telco/credentials.yml +0 -33
  433. rasa/cli/project_templates/telco/csvs/billing.csv +0 -10
  434. rasa/cli/project_templates/telco/csvs/customers.csv +0 -5
  435. rasa/cli/project_templates/telco/data/flows/flow_global.yml +0 -5
  436. rasa/cli/project_templates/telco/data/flows/flow_reboot_router.yml +0 -8
  437. rasa/cli/project_templates/telco/data/flows/flow_reset_router.yml +0 -7
  438. rasa/cli/project_templates/telco/data/flows/flow_solve_internet_issue.yml +0 -73
  439. rasa/cli/project_templates/telco/data/flows/flow_undertand_bill.yml +0 -45
  440. rasa/cli/project_templates/telco/data/patterns/pattern_completed.yml +0 -7
  441. rasa/cli/project_templates/telco/data/patterns/pattern_human_handoff.yml +0 -6
  442. rasa/cli/project_templates/telco/data/patterns/pattern_search.yml +0 -7
  443. rasa/cli/project_templates/telco/data/patterns/pattern_session_start.yml +0 -9
  444. rasa/cli/project_templates/telco/docs/reset_vs_rboot_router.txt +0 -1
  445. rasa/cli/project_templates/telco/docs/restart_router.txt +0 -6
  446. rasa/cli/project_templates/telco/docs/run_speed_test.txt +0 -6
  447. rasa/cli/project_templates/telco/domain/domain_global.yml +0 -29
  448. rasa/cli/project_templates/telco/domain/domain_patterns.yml +0 -17
  449. rasa/cli/project_templates/telco/domain/domain_reboot_router.yml +0 -20
  450. rasa/cli/project_templates/telco/domain/domain_reset_router.yml +0 -11
  451. rasa/cli/project_templates/telco/domain/domain_run_speed_test.yml +0 -24
  452. rasa/cli/project_templates/telco/domain/domain_solve_internet_issue.yml +0 -74
  453. rasa/cli/project_templates/telco/domain/domain_undertand_bill.yml +0 -102
  454. rasa/cli/project_templates/telco/endpoints.yml +0 -60
  455. rasa/cli/project_templates/telco/tests/e2e_results_failed.yml +0 -62
  456. rasa/cli/project_templates/telco/tests/e2e_results_passed.yml +0 -130
  457. rasa/cli/project_templates/telco/tests/e2e_test_cases/billing_test_cases.yml +0 -68
  458. rasa/cli/project_templates/telco/tests/e2e_test_cases/global_test_cases.yml +0 -13
  459. rasa/cli/project_templates/telco/tests/e2e_test_cases/internet_slow_test_case.yml +0 -47
  460. rasa/cli/project_templates/telco/tests/e2e_test_cases/out_of_scope_test_case.yml +0 -21
  461. rasa/cli/project_templates/telco/tests/e2e_test_cases/patterns_test_cases.yml +0 -15
  462. rasa/core/channels/constants.py +0 -3
  463. rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +0 -1
  464. rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +0 -1
  465. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +0 -1
  466. rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +0 -1335
  467. rasa/utils/openapi.py +0 -144
  468. /rasa/{builder → agents}/__init__.py +0 -0
  469. /rasa/{builder/copilot → agents/core}/__init__.py +0 -0
  470. /rasa/{builder/copilot/prompts → agents/protocol/a2a}/__init__.py +0 -0
  471. /rasa/{builder/copilot/templated_messages → agents/protocol/mcp}/__init__.py +0 -0
  472. /rasa/{builder/document_retrieval → agents/templates}/__init__.py +0 -0
  473. /rasa/{cli/project_templates/finance/actions/accounts → shared/agents}/__init__.py +0 -0
  474. /rasa/{cli/project_templates/finance/actions/cards → shared/utils/mcp}/__init__.py +0 -0
  475. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/NOTICE +0 -0
  476. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/WHEEL +0 -0
  477. {rasa_pro-3.14.0.dev5.dist-info → rasa_pro-3.14.0.dev7.dist-info}/entry_points.txt +0 -0
@@ -5,31 +5,34 @@ import {
5
5
  useColorModeValue,
6
6
  useToast,
7
7
  } from '@chakra-ui/react'
8
+ import { useEffect, useState, useCallback } from 'react'
8
9
  import axios from 'axios'
9
- import queryString from 'query-string'
10
- import { useCallback, useEffect, useState } from 'react'
11
- import useWebSocket, { ReadyState } from 'react-use-websocket'
12
- import { Chat } from './components/Chat'
13
- import { DiagramFlow } from './components/DiagramFlow'
10
+ import { useOurTheme } from './theme'
11
+ import { Welcome } from './components/Welcome'
12
+ import { DialogueHistoryStack } from './components/DialogueHistoryStack.tsx'
14
13
  import { DialougeInformation } from './components/DialogueInformation'
15
- import { DialogueStack } from './components/DialogueStack'
16
14
  import { LoadingSpinner } from './components/LoadingSpinner'
15
+ import { DiagramFlow } from './components/DiagramFlow'
17
16
  import { RecruitmentPanel } from './components/RecruitmentPanel'
18
- import { Welcome } from './components/Welcome'
19
17
  import { formatSlots } from './helpers/formatters'
18
+ import {Slot, Stack, Event, Flow, SelectedStack, Tracker, Agent} from './types'
20
19
  import {
21
20
  createHistoricalStack,
22
- flowStepTrail,
21
+ flowStepTrail, updateAgentsStatus,
23
22
  updatedActiveFrame,
24
23
  } from './helpers/utils'
25
- import { useOurTheme } from './theme'
26
- import { Event, Flow, SelectedStack, Slot, Stack, Tracker } from './types'
24
+ import queryString from 'query-string'
25
+ import { Chat } from './components/Chat'
26
+ import { LatencyDisplay } from './components/LatencyDisplay'
27
+ import useWebSocket, { ReadyState } from 'react-use-websocket'
28
+ import {DialogueAgentStack} from "./components/DialogueAgentStack.tsx";
27
29
 
28
30
  export function App() {
29
31
  const toast = useToast()
30
32
  const { rasaSpace, rasaRadii } = useOurTheme()
31
33
  const [rasaChatSessionId, setRasaChatSessionId] = useState<string>('')
32
34
  const [flows, setFlows] = useState<Flow[]>([])
35
+ const [agents, setAgents] = useState<Agent[]>([])
33
36
  const [slots, setSlots] = useState<Slot[]>([])
34
37
  const [events, setEvents] = useState<Event[]>([])
35
38
  const [story, setStory] = useState<string>('')
@@ -101,6 +104,23 @@ export function App() {
101
104
  })
102
105
  }, [toast])
103
106
 
107
+ useEffect(() => {
108
+ axios
109
+ .get('/sub-agents', { params: { token } })
110
+ .then((response) => setAgents((response.data)))
111
+ .catch((error) => {
112
+ if (toast.isActive('agents')) return
113
+ toast({
114
+ id: 'agents',
115
+ title: 'Agents could not be retrieved',
116
+ description: error?.message || 'An unknown error happened.',
117
+ status: 'error',
118
+ duration: 4000,
119
+ isClosable: true,
120
+ })
121
+ })
122
+ }, [toast])
123
+
104
124
  function fetchStory() {
105
125
  axios
106
126
  .get(`/conversations/${rasaChatSessionId}/story`, { params: { token } })
@@ -141,6 +161,7 @@ export function App() {
141
161
  lastJsonMessage.stack,
142
162
  lastJsonMessage.events,
143
163
  )
164
+ setAgents(prevAgents => updateAgentsStatus(prevAgents, lastJsonMessage.events))
144
165
  setStack(updatedStack)
145
166
  setFrame(updatedActiveFrame(frame, updatedStack, lastJsonMessage.events))
146
167
  setRasaChatSessionId(lastJsonMessage.sender_id)
@@ -239,19 +260,22 @@ export function App() {
239
260
  {showRecruitmentPanel && (
240
261
  <RecruitmentPanel onClose={handleCloseRecruitmentPanel} />
241
262
  )}
242
- <DialogueStack
263
+ <DialogueHistoryStack
243
264
  sx={boxSx}
244
265
  stack={stack}
245
266
  active={frame?.stack}
246
267
  onItemClick={onFrameSelected}
247
268
  />
269
+ {agents.length > 0 ? (<DialogueAgentStack
270
+ sx={boxSx}
271
+ agents={agents}
272
+ />):null}
248
273
  <DialougeInformation
249
274
  sx={boxSx}
250
275
  rasaChatSessionId={rasaChatSessionId}
251
276
  slots={slots}
252
277
  events={events}
253
278
  story={story}
254
- latency={latency}
255
279
  />
256
280
  </Grid>
257
281
  </GridItem>
@@ -265,6 +289,7 @@ export function App() {
265
289
  </GridItem>
266
290
  <GridItem overflow="hidden">
267
291
  <Grid sx={rightColumnSx}>
292
+ <LatencyDisplay latency={latency} sx={boxSx} />
268
293
  {shouldShowTranscript && (
269
294
  <GridItem sx={chatContainerSx}>
270
295
  <Chat events={events || []} />
@@ -0,0 +1,108 @@
1
+ import {
2
+ Box,
3
+ FlexProps,
4
+ Heading,
5
+ Table,
6
+ Thead,
7
+ Tbody,
8
+ Tr,
9
+ Th,
10
+ Td,
11
+ Text,
12
+ Flex,
13
+ } from '@chakra-ui/react'
14
+ import { useOurTheme } from '../theme'
15
+ import {Agent, Stack} from '../types'
16
+
17
+ function mapStatusToHumanReadableName(status: Agent['status']) {
18
+ switch (status) {
19
+ case 'running':
20
+ return 'Running'
21
+ case 'completed':
22
+ return 'Completed'
23
+ case 'interrupted':
24
+ return 'Interrupted'
25
+ case 'cancelled':
26
+ return 'Cancelled'
27
+ default:
28
+ return '-'
29
+ }
30
+ }
31
+
32
+ interface Props extends FlexProps {
33
+ agents: Agent[]
34
+ active?: Stack
35
+ onItemClick?: (stack: Stack) => void
36
+ }
37
+
38
+ function AgentRow({
39
+ agent,
40
+ }: {
41
+ agent: Agent
42
+ }) {
43
+
44
+ return (
45
+ <Tr>
46
+ <Td>
47
+ <Text noOfLines={1}>{agent.name}</Text>
48
+ </Td>
49
+ <Td>
50
+ <Text noOfLines={1}>{mapStatusToHumanReadableName(agent.status)}</Text>
51
+ </Td>
52
+ </Tr>
53
+ )
54
+ }
55
+
56
+ export const DialogueAgentStack = ({
57
+ sx,
58
+ agents,
59
+ active,
60
+ onItemClick,
61
+ ...props
62
+ }: Props) => {
63
+ const { rasaSpace } = useOurTheme()
64
+
65
+ const containerSx = {
66
+ ...sx,
67
+ pr: 0,
68
+ pb: 0,
69
+ flexDirection: 'column',
70
+ }
71
+ const overflowBox = {
72
+ height: '100%',
73
+ overflow: 'auto',
74
+ pr: rasaSpace[1],
75
+ pb: rasaSpace[0.5],
76
+ }
77
+
78
+ return (
79
+ <Flex sx={containerSx} {...props}>
80
+ <Flex>
81
+ <Heading size="lg" mb={rasaSpace[0.5]}>
82
+ Agents
83
+ </Heading>
84
+ <Text ml={rasaSpace[0.25]}>({agents.length} {agents.length === 1 ? 'agent' : 'agents'})</Text>
85
+ </Flex>
86
+ <Box sx={overflowBox}>
87
+ <Table width="100%" layout="fixed">
88
+ <Thead>
89
+ <Tr>
90
+ <Th>Name</Th>
91
+ <Th width="40%">Status</Th>
92
+ </Tr>
93
+ </Thead>
94
+ <Tbody>
95
+ {agents.length > 0 &&
96
+ [...agents]
97
+ .reverse()
98
+ .map((agent) => (
99
+ <AgentRow
100
+ agent={agent}
101
+ />
102
+ ))}
103
+ </Tbody>
104
+ </Table>
105
+ </Box>
106
+ </Flex>
107
+ )
108
+ }
@@ -77,7 +77,7 @@ function StackRow({
77
77
  )
78
78
  }
79
79
 
80
- export const DialogueStack = ({
80
+ export const DialogueHistoryStack = ({
81
81
  sx,
82
82
  stack,
83
83
  active,
@@ -105,7 +105,7 @@ export const DialogueStack = ({
105
105
  <Heading size="lg" mb={rasaSpace[0.5]}>
106
106
  History
107
107
  </Heading>
108
- <Text ml={rasaSpace[0.25]}>({stack.length} flows)</Text>
108
+ <Text ml={rasaSpace[0.25]}>({stack.length} {stack.length === 1 ? 'flow' : 'flows'})</Text>
109
109
  </Flex>
110
110
  <Box sx={overflowBox}>
111
111
  <Table width="100%" layout="fixed">
@@ -134,6 +134,7 @@ export const DialogueStack = ({
134
134
  flow_id: '-',
135
135
  step_id: '-',
136
136
  ended: false,
137
+ type: "flow"
137
138
  }}
138
139
  />
139
140
  )}
@@ -13,14 +13,13 @@ import {
13
13
  useTab,
14
14
  useToast,
15
15
  } from '@chakra-ui/react'
16
- import { useEffect } from 'react'
17
16
  import { Light as SyntaxHighlighter } from 'react-syntax-highlighter'
18
- import { useCopyToClipboard } from 'usehooks-ts'
19
- import { formatTestCases } from '../helpers/formatters'
20
17
  import { useOurTheme } from '../theme'
21
18
  import { Event, Slot } from '../types'
19
+ import { formatTestCases } from '../helpers/formatters'
20
+ import { useCopyToClipboard } from 'usehooks-ts'
21
+ import { useEffect } from 'react'
22
22
  import { FullscreenButton } from './FullscreenButton'
23
- import { LatencyDisplay } from './LatencyDisplay'
24
23
  import { SlotTable, Slots } from './Slots'
25
24
 
26
25
  interface Props extends FlexProps {
@@ -28,7 +27,6 @@ interface Props extends FlexProps {
28
27
  events: Event[]
29
28
  story: string
30
29
  slots: Slot[]
31
- latency: any
32
30
  }
33
31
 
34
32
  export const DialougeInformation = ({
@@ -37,7 +35,6 @@ export const DialougeInformation = ({
37
35
  events,
38
36
  story,
39
37
  slots,
40
- latency,
41
38
  ...props
42
39
  }: Props) => {
43
40
  const toast = useToast()
@@ -108,7 +105,6 @@ export const DialougeInformation = ({
108
105
  <CustomTab>Slots</CustomTab>
109
106
  <CustomTab>End-2-end test</CustomTab>
110
107
  <CustomTab>Tracker state</CustomTab>
111
- <CustomTab>Latency</CustomTab>
112
108
  </TabList>
113
109
  <TabPanels height="100%" overflow="hidden">
114
110
  <TabPanel sx={tabPanelSx}>
@@ -164,11 +160,6 @@ export const DialougeInformation = ({
164
160
  </FullscreenButton>
165
161
  </HStack>
166
162
  </TabPanel>
167
- <TabPanel sx={tabPanelSx}>
168
- <Box sx={overflowBox}>
169
- <LatencyDisplay latency={latency} />
170
- </Box>
171
- </TabPanel>
172
163
  </TabPanels>
173
164
  </Tabs>
174
165
  </Flex>
@@ -294,6 +294,7 @@ describe('helpers', () => {
294
294
  step_id: 'step_id',
295
295
  collect: fieldValue,
296
296
  ended: false,
297
+ type: 'flow',
297
298
  }),
298
299
  ).toEqual(fieldValue)
299
300
  })
@@ -307,6 +308,7 @@ describe('helpers', () => {
307
308
  flow_id: 'flow_id',
308
309
  step_id: 'step_id',
309
310
  ended: false,
311
+ type: 'flow',
310
312
  }),
311
313
  ).toEqual(fieldValue)
312
314
  })
@@ -321,6 +323,7 @@ describe('helpers', () => {
321
323
  step_id: 'step_id',
322
324
  collect: fieldValue,
323
325
  ended: false,
326
+ type: 'flow',
324
327
  }),
325
328
  ).toEqual(`${fieldValue} is not null`)
326
329
  })
@@ -335,6 +338,7 @@ describe('helpers', () => {
335
338
  step_id: 'step_id',
336
339
  collect: fieldValue,
337
340
  ended: false,
341
+ type: 'flow',
338
342
  }),
339
343
  ).toEqual(`not ${fieldValue}`)
340
344
  })
@@ -1,5 +1,5 @@
1
- import { rasaColors } from '../theme/base/colors'
2
- import type { Event, Flow, Slot, Stack } from '../types'
1
+ import {rasaColors} from '../theme/base/colors'
2
+ import type {Event, Flow, Slot, Stack} from '../types'
3
3
 
4
4
  export function formatSlots(slots: { [key: string]: unknown }) {
5
5
  if (!slots) {
@@ -13,7 +13,7 @@ export function formatSlots(slots: { [key: string]: unknown }) {
13
13
  slotDuple[0] !== 'flow_hashes' &&
14
14
  slotDuple[1] != null,
15
15
  )
16
- .map((slotDuple) => ({ name: slotDuple[0], value: slotDuple[1] }))
16
+ .map((slotDuple) => ({name: slotDuple[0], value: slotDuple[1]}))
17
17
  }
18
18
 
19
19
  export const formatTestCases = (events: Event[], sessionId: string) => {
@@ -85,11 +85,14 @@ export const formatFlow = (
85
85
  `flowchart TD
86
86
  classDef collect stroke-width:1px
87
87
  classDef action fill:#FBFCFD,stroke:#A0B8CF
88
+ classDef noop fill:#FBFCFD
89
+ classDef callstep fill:#FBFCFD
88
90
  classDef link fill:#f43
89
91
  classDef slot fill:#e8f3db,stroke:#c5e1a5
90
92
  classDef endstep fill:#ccc,stroke:#444
91
93
  classDef previous stroke:${rasaColors.rasaOrange[400]},stroke-width:1px
92
94
  classDef active stroke:${rasaColors.rasaOrange[400]},stroke-width:3px,fill:${rasaColors.warning[50]}
95
+ classDef pulse animation:pulse 2s infinite
93
96
  `,
94
97
  ]
95
98
  try {
@@ -210,6 +213,24 @@ function renderStepSequence(
210
213
  )}"]:::slot\n`
211
214
  }
212
215
 
216
+ if (step.call) {
217
+ const isAgentWaitingOnInput = !!currentStack?.agent_id && currentStack?.state === 'waiting_for_input'
218
+ mermaidTextFragment += `${mermaidId}["${encodeDoubleQuotes(
219
+ stepId,
220
+ )} 🤖"]:::callstep\n`
221
+
222
+ if (isAgentWaitingOnInput) {
223
+ mermaidTextFragment += `class ${mermaidId} pulse\n`
224
+ }
225
+ }
226
+
227
+ if (step.noop) {
228
+ mermaidTextFragment += `${mermaidId}["${parseFieldUsingStack(
229
+ stepId,
230
+ currentStack
231
+ )}"]:::noop\n`
232
+ }
233
+
213
234
  if (activeStep && stepId === activeStep) {
214
235
  mermaidTextFragment += `class ${mermaidId} active\n`
215
236
  } else if (stepTrail?.includes(stepId)) {
@@ -0,0 +1,127 @@
1
+ import { updateAgentsStatus } from './utils'
2
+ import type { Agent, Event } from '../types'
3
+
4
+ // Helper to clone agents (immutability check)
5
+ const clone = <T>(x: T): T => JSON.parse(JSON.stringify(x))
6
+
7
+ describe('updateAgentsStatus', () => {
8
+ test('returns empty array when agents undefined', () => {
9
+ // @ts-expect-error testing runtime behavior with undefined
10
+ expect(updateAgentsStatus(undefined, [])).toEqual([])
11
+ })
12
+
13
+ test('returns same agents when agents empty', () => {
14
+ const agents: Agent[] = []
15
+ const events: Event[] = [
16
+ { event: 'agent_started', timestamp: '1' } as any,
17
+ ]
18
+ expect(updateAgentsStatus(agents, events)).toEqual([])
19
+ })
20
+
21
+ test('returns same agents when events empty', () => {
22
+ const agents: Agent[] = [
23
+ { name: 'alpha', status: 'completed' },
24
+ ]
25
+ const events: Event[] = []
26
+ expect(updateAgentsStatus(clone(agents), events)).toEqual(agents)
27
+ })
28
+
29
+ test('ignores non-agent events', () => {
30
+ const agents: Agent[] = [
31
+ { name: 'alpha', status: 'completed' },
32
+ ]
33
+ const events: Event[] = [
34
+ { event: 'user', text: 'hi', timestamp: '1' } as any,
35
+ { event: 'bot', text: 'hey', timestamp: '2' } as any,
36
+ ]
37
+ expect(updateAgentsStatus(clone(agents), events)).toEqual(agents)
38
+ })
39
+
40
+ test('uses latest event by timestamp per agent', () => {
41
+ const agents: Agent[] = [
42
+ { name: 'alpha', status: 'completed' },
43
+ { name: 'beta', status: 'completed' },
44
+ ]
45
+
46
+ const events: Event[] = [
47
+ { event: 'agent_started', agent_id: 'alpha', timestamp: 1 } as any,
48
+ { event: 'agent_interrupted', agent_id: 'alpha', timestamp: 2 } as any,
49
+ { event: 'agent_resumed', agent_id: 'alpha', timestamp: 3 } as any,
50
+ { event: 'agent_cancelled', agent_id: 'beta', timestamp: 5 } as any,
51
+ ]
52
+
53
+ const result = updateAgentsStatus(clone(agents), events)
54
+ expect(result).toEqual([
55
+ { name: 'alpha', status: 'running' },
56
+ { name: 'beta', status: 'cancelled' },
57
+ ])
58
+ })
59
+
60
+ test('later event wins when timestamps missing', () => {
61
+ const agents: Agent[] = [
62
+ { name: 'alpha', status: 'completed' },
63
+ ]
64
+
65
+ const events: Event[] = [
66
+ { event: 'agent_started', agent_id: 'alpha', timestamp: null } as any,
67
+ { event: 'agent_interrupted', agent_id: 'alpha', timestamp: null } as any,
68
+ ]
69
+
70
+ const result = updateAgentsStatus(clone(agents), events)
71
+ expect(result).toEqual([
72
+ { name: 'alpha', status: 'interrupted' },
73
+ ])
74
+ })
75
+
76
+ test('agent_completed maps to provided status and falls back to completed', () => {
77
+ const agents: Agent[] = [
78
+ { name: 'alpha', status: 'running' },
79
+ { name: 'beta', status: 'running' },
80
+ ]
81
+
82
+ const events: Event[] = [
83
+ { event: 'agent_completed', agent_id: 'alpha', status: 'completed', timestamp: 10 } as any,
84
+ { event: 'agent_completed', agent_id: 'beta', timestamp: 10 } as any,
85
+ ]
86
+
87
+ const result = updateAgentsStatus(clone(agents), events)
88
+ expect(result).toEqual([
89
+ { name: 'alpha', status: 'completed' },
90
+ { name: 'beta', status: 'completed' },
91
+ ])
92
+ })
93
+
94
+ test('unmatched agents remain unchanged', () => {
95
+ const agents: Agent[] = [
96
+ { name: 'alpha', status: 'running' },
97
+ { name: 'gamma', status: 'interrupted' },
98
+ ]
99
+
100
+ const events: Event[] = [
101
+ { event: 'agent_resumed', agent_id: 'alpha', timestamp: 1 } as any,
102
+ { event: 'agent_cancelled', agent_id: 'beta', timestamp: 2 } as any, // beta not in agents list
103
+ ]
104
+
105
+ const result = updateAgentsStatus(clone(agents), events)
106
+ expect(result).toEqual([
107
+ { name: 'alpha', status: 'running' },
108
+ { name: 'gamma', status: 'interrupted' },
109
+ ])
110
+ })
111
+
112
+ test('handles mixed timestamp types (string/number)', () => {
113
+ const agents: Agent[] = [
114
+ { name: 'alpha', status: 'completed' },
115
+ ]
116
+
117
+ const events: Event[] = [
118
+ { event: 'agent_started', agent_id: 'alpha', timestamp: '1' } as any,
119
+ { event: 'agent_interrupted', agent_id: 'alpha', timestamp: 2 } as any,
120
+ ]
121
+
122
+ const result = updateAgentsStatus(clone(agents), events)
123
+ expect(result).toEqual([
124
+ { name: 'alpha', status: 'interrupted' },
125
+ ])
126
+ })
127
+ })
@@ -1,4 +1,4 @@
1
- import { SelectedStack, Stack, Event } from '../types'
1
+ import {SelectedStack, Stack, Event, Agent, AGENT_EVENT_TYPES} from '../types'
2
2
  import { immutableJSONPatch } from 'immutable-json-patch'
3
3
 
4
4
  export const shouldShowTooltip = (text: string) => {
@@ -146,3 +146,68 @@ export const updatedActiveFrame = (
146
146
  return previous
147
147
  }
148
148
  }
149
+
150
+ export function updateAgentsStatus(agents: Agent[], events: Event[]): Agent[] {
151
+ if (!agents || agents.length === 0 || !events || events.length === 0) {
152
+ return agents || []
153
+ }
154
+
155
+ const agentEventTypes = new Set<Event['event']>(AGENT_EVENT_TYPES as unknown as Event['event'][] )
156
+
157
+ type AgentEventLite = Agent & {
158
+ agent_id: string
159
+ event: Event['event']
160
+ timestamp?: string | number | null
161
+ }
162
+
163
+ const latestByAgent = new Map<string, AgentEventLite>()
164
+
165
+ for (let i = 0; i < events.length; i++) {
166
+ const event = events[i] as unknown as AgentEventLite
167
+ if (!event || !agentEventTypes.has(event.event)) continue
168
+
169
+ const agentId = event.agent_id
170
+ if (!agentId) continue
171
+
172
+ const previousEvent = latestByAgent.get(agentId)
173
+
174
+ const currentTimestamp = event.timestamp == null ? undefined : Number(event.timestamp)
175
+ const previousTimestamp = previousEvent?.timestamp == null ? undefined : Number(previousEvent.timestamp)
176
+
177
+ const isNewer =
178
+ previousEvent == null ||
179
+ (currentTimestamp != null && previousTimestamp != null && currentTimestamp > previousTimestamp) ||
180
+ (currentTimestamp != null && previousTimestamp == null)
181
+ // If both timestamps are missing, prefer later in the array (current)
182
+
183
+ if (isNewer || (currentTimestamp == null && previousTimestamp == null)) {
184
+ latestByAgent.set(agentId, event)
185
+ }
186
+ }
187
+
188
+ return agents.map((agent) => {
189
+ const latest = latestByAgent.get(agent.name)
190
+ if (!latest) return agent
191
+
192
+ let status = agent.status
193
+ switch (latest.event) {
194
+ case 'agent_started':
195
+ case 'agent_resumed':
196
+ status = 'running'
197
+ break
198
+ case 'agent_interrupted':
199
+ status = 'interrupted'
200
+ break
201
+ case 'agent_cancelled':
202
+ status = 'cancelled'
203
+ break
204
+ case 'agent_completed':
205
+ status = latest.status || 'completed'
206
+ break
207
+ default:
208
+ break
209
+ }
210
+
211
+ return { ...agent, status }
212
+ })
213
+ }
@@ -1,4 +1,19 @@
1
- import { mode, StyleFunctionProps } from '@chakra-ui/theme-tools'
1
+ import {mode, StyleFunctionProps} from '@chakra-ui/theme-tools'
2
+ import {keyframes} from "@chakra-ui/react";
3
+
4
+
5
+ const pulse = keyframes`
6
+ 0% {
7
+ opacity: 1;
8
+ }
9
+ 50% {
10
+ opacity: 0.5;
11
+ }
12
+ 100% {
13
+ opacity: 1;
14
+ }
15
+ `;
16
+
2
17
 
3
18
  export const styles = {
4
19
  global: {
@@ -9,5 +24,8 @@ export const styles = {
9
24
  fontSize: theme.rasaFontSizes.md,
10
25
  letterSpacing: '0.025rem',
11
26
  }),
27
+ '.pulse': {
28
+ animation: `${pulse} 2s infinite`,
29
+ },
12
30
  },
13
31
  }
@@ -4,6 +4,16 @@ export interface Slot {
4
4
  value: any
5
5
  }
6
6
 
7
+ export const AGENT_EVENT_TYPES = [
8
+ 'agent_started',
9
+ 'agent_completed',
10
+ 'agent_interrupted',
11
+ 'agent_resumed',
12
+ 'agent_cancelled',
13
+ ] as const
14
+
15
+ export type AgentEvents = typeof AGENT_EVENT_TYPES[number];
16
+
7
17
  export interface Event {
8
18
  event:
9
19
  | 'user'
@@ -13,6 +23,7 @@ export interface Event {
13
23
  | 'stack'
14
24
  | 'restart'
15
25
  | 'session_ended'
26
+ | AgentEvents
16
27
  text?: string
17
28
  timestamp: string
18
29
  update?: string
@@ -40,6 +51,9 @@ export interface Stack {
40
51
  collect?: string
41
52
  utter?: string
42
53
  ended: boolean
54
+ type: "flow" | "agent"
55
+ agent_id?: string
56
+ state?: "waiting_for_input" | "interrupted"
43
57
  }
44
58
 
45
59
  export interface LatencyData {
@@ -64,6 +78,11 @@ export interface Flow {
64
78
  steps: Step[]
65
79
  }
66
80
 
81
+ export interface Agent {
82
+ name: string
83
+ status: "running" | "completed" | "interrupted" | "cancelled"
84
+ }
85
+
67
86
  interface NextStepThen {
68
87
  action: string
69
88
  id: string
@@ -95,4 +114,6 @@ interface Step {
95
114
  reset_after_flow_ends: boolean
96
115
  utter: string
97
116
  set_slots?: unknown
117
+ call?: string
118
+ noop?: boolean
98
119
  }