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
@@ -1,195 +0,0 @@
1
- import datetime as dt
2
- import os
3
- import uuid
4
- from typing import Iterable, Optional, Sequence
5
-
6
- import structlog
7
-
8
- from rasa import telemetry
9
- from rasa.builder.copilot.constants import COPILOT_SEGMENT_WRITE_KEY_ENV_VAR
10
- from rasa.builder.copilot.copilot_response_handler import CopilotResponseHandler
11
- from rasa.builder.document_retrieval.models import Document
12
- from rasa.telemetry import (
13
- SEGMENT_TRACK_ENDPOINT,
14
- segment_request_payload,
15
- send_segment_request,
16
- with_default_context_fields,
17
- )
18
-
19
- structlogger = structlog.get_logger()
20
-
21
- COPILOT_USER_MESSAGE_EVENT = "copilot_user_message"
22
- COPILOT_BOT_MESSAGE_EVENT = "copilot_bot_message"
23
-
24
- COPILOT_SEGMENT_WRITE_KEY = os.getenv(COPILOT_SEGMENT_WRITE_KEY_ENV_VAR)
25
- if _SEGMENT_ON := bool(COPILOT_SEGMENT_WRITE_KEY):
26
- structlogger.info("builder.telemetry.enabled")
27
- else:
28
- structlogger.warning("builder.telemetry.disabled")
29
-
30
-
31
- def _track(event: str, user_id: str, properties: dict) -> None:
32
- """Track an event with Segment.
33
-
34
- Args:
35
- event: The name of the event to track.
36
- user_id: The ID of the user associated with the event.
37
- properties: Additional properties to include with the event.
38
-
39
- Raises:
40
- Exception: If tracking fails, an exception is logged.
41
- """
42
- if not _SEGMENT_ON or not telemetry.is_telemetry_enabled():
43
- structlogger.debug("builder.telemetry._track.disabled")
44
- return
45
- structlogger.debug("builder.telemetry._track.enabled")
46
-
47
- try:
48
- payload = segment_request_payload(
49
- user_id, event, properties, context=with_default_context_fields()
50
- )
51
- structlogger.debug("builder.telemetry._track.sending", payload=payload)
52
-
53
- send_segment_request(SEGMENT_TRACK_ENDPOINT, payload, COPILOT_SEGMENT_WRITE_KEY)
54
- except Exception as e: # skipcq:PYL-W0703
55
- structlogger.warning("builder.telemetry.track_failed", error=str(e))
56
-
57
-
58
- class CopilotTelemetry:
59
- def __init__(
60
- self,
61
- *,
62
- project_id: str,
63
- user_id: str,
64
- ) -> None:
65
- """Initialize Telemetry instance."""
66
- self._project_id = project_id
67
- self._user_id = user_id
68
- # TODO Load prompt version
69
- self._prompt_version = "1"
70
-
71
- def log_user_turn(self, text: str) -> None:
72
- """Track a user message in the conversation.
73
-
74
- Args:
75
- text: The text of the user message.
76
- """
77
- structlogger.debug("builder.telemetry.log_user_turn", text=text)
78
- _track(
79
- COPILOT_USER_MESSAGE_EVENT,
80
- self._user_id,
81
- {
82
- "project_id": self._project_id,
83
- "message_id": uuid.uuid4().hex,
84
- "text": text,
85
- "timestamp": dt.datetime.utcnow().isoformat(),
86
- },
87
- )
88
-
89
- def log_copilot_turn(
90
- self,
91
- *,
92
- text: str,
93
- source_urls: Sequence[str],
94
- flags: Iterable[str],
95
- latency_ms: int,
96
- model: str,
97
- input_tokens: Optional[int] = None,
98
- output_tokens: Optional[int] = None,
99
- total_tokens: Optional[int] = None,
100
- ) -> None:
101
- """Track a copilot message in the conversation.
102
-
103
- Args:
104
- text: The text of the copilot message.
105
- source_urls: URLs of the sources used to generate the response.
106
- flags: Flags indicating special conditions or features.
107
- latency_ms: End-to-end Copilot latency to produce this response.
108
- model: The model used to generate the response.
109
- input_tokens: Number of input tokens used (optional).
110
- output_tokens: Number of output tokens generated (optional).
111
- total_tokens: Total number of tokens used (input + output) (optional).
112
- """
113
- structlogger.debug("builder.telemetry.log_copilot_turn", text=text)
114
- _track(
115
- COPILOT_BOT_MESSAGE_EVENT,
116
- self._user_id,
117
- {
118
- "project_id": self._project_id,
119
- "message_id": uuid.uuid4().hex,
120
- "text": text,
121
- "prompt_version": self._prompt_version,
122
- "source_urls": list(source_urls),
123
- "flags": list(flags),
124
- "latency_ms": latency_ms,
125
- "model": model,
126
- "input_tokens": input_tokens,
127
- "output_tokens": output_tokens,
128
- "total_tokens": total_tokens,
129
- "timestamp": dt.datetime.utcnow().isoformat(),
130
- },
131
- )
132
-
133
- @staticmethod
134
- def _extract_flags(handler: CopilotResponseHandler) -> list[str]:
135
- """Extract flags from the response handler.
136
-
137
- Args:
138
- handler: The response handler containing generated responses.
139
-
140
- Returns:
141
- A list of flags indicating special conditions or features.
142
- """
143
- flags = {r.response_category.value for r in handler.generated_responses}
144
- return sorted(flags)
145
-
146
- @staticmethod
147
- def _full_text(handler: CopilotResponseHandler) -> str:
148
- """Extract full text from the response handler.
149
-
150
- Args:
151
- handler: The response handler containing generated responses.
152
-
153
- Returns:
154
- The concatenated content of all generated responses.
155
- """
156
- return "".join(
157
- response.content
158
- for response in handler.generated_responses
159
- if getattr(response, "content", None)
160
- )
161
-
162
- def log_copilot_from_handler(
163
- self,
164
- *,
165
- handler: CopilotResponseHandler,
166
- used_documents: list[Document],
167
- latency_ms: int,
168
- model: str,
169
- prompt_tokens: int,
170
- completion_tokens: int,
171
- total_tokens: int,
172
- ) -> None:
173
- """Log a copilot message from the response handler.
174
-
175
- Args:
176
- handler: The response handler containing generated responses.
177
- used_documents: List of documents used as supporting evidence.
178
- latency_ms: End-to-end Copilot latency to produce this response.
179
- model: The model used to generate the response.
180
- prompt_tokens: Number of input tokens used.
181
- completion_tokens: Number of output tokens generated.
182
- total_tokens: Total number of tokens used (input + output).
183
- """
184
- structlogger.debug("builder.telemetry.log_copilot_from_handler")
185
- text = self._full_text(handler)
186
- self.log_copilot_turn(
187
- text=text,
188
- source_urls=[d.url for d in used_documents if d.url],
189
- flags=self._extract_flags(handler),
190
- latency_ms=latency_ms,
191
- model=model,
192
- input_tokens=prompt_tokens,
193
- output_tokens=completion_tokens,
194
- total_tokens=total_tokens,
195
- )
@@ -1,16 +0,0 @@
1
- # Templates for role ROLE_RASA_INTERNAL
2
- # Note: Only 'training_error_log_analysis' and 'e2e_testing_error_log_analysis' are
3
- # valid response categories for rasa internal messages for now.
4
- # Future contexts can be added here + in ResponseCategory enumeration.
5
-
6
- templates:
7
- # Templated utterance when training fails.
8
- training_error_log_analysis: |
9
- The assistant training failed. Your task is to analyze provided error logs
10
- and help me fix the issue.
11
-
12
- # Templated utterance when e2e testing fails.
13
- e2e_testing_error_log_analysis: |
14
- The e2e testing failed. Your task is to analyze provided error from the E2E
15
- test logs and help me fix the issue. Help me understand if the issue is within
16
- the the E2E test or the assistant.
@@ -1,26 +0,0 @@
1
- responses:
2
- roleplay_response: |
3
- Looks like we’ve slipped into chatting as if I were your bot. I’m here to help you
4
- build and improve your Rasa agent, not to roleplay as it. If you'd like to test your
5
- agent, add your message in the chat preview on the right. If you’re not sure what to
6
- test, I can help you create a new skill or suggest a few example conversations to
7
- try.
8
-
9
- out_of_scope_response: |
10
- I’m here to help you build and improve your Rasa chatbot. I can explain concepts,
11
- walk you through changes, or debug things with you.
12
-
13
- Do you want me to show you what your assistant can do right now, or help you add
14
- something new?
15
-
16
- error_fallback_response: |
17
- Your project ran into an error, but I'm not sure what caused it. Take a look at the
18
- logs for the full details.
19
-
20
- guardrail_policy_violation_response: |
21
- I’m here to help you with Rasa agent development in a safe and respectful
22
- environment. I cannot assist with harmful content, inappropriate material, or
23
- attempts to manipulate my responses. Continued attempts to use the system in this
24
- way may result in project termination and account blocking.
25
-
26
- copilot_redacted_message: "[Copilot response redacted for guardrails check.]"
@@ -1,15 +0,0 @@
1
- import importlib_resources
2
-
3
- from rasa.constants import PACKAGE_NAME
4
-
5
- INKEEP_API_KEY_ENV_VAR = "INKEEP_API_KEY"
6
-
7
- INKEEP_RAG_RESPONSE_SCHEMA_PATH = str(
8
- importlib_resources.files(PACKAGE_NAME)
9
- .joinpath("builder")
10
- .joinpath("document_retrieval")
11
- .joinpath("inkeep-rag-response-schema.json")
12
- )
13
-
14
-
15
- INKEEP_DOCUMENT_RETRIEVAL_MODEL = "inkeep-rag"
@@ -1,64 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "content": {
6
- "type": "array",
7
- "items": {
8
- "type": "object",
9
- "properties": {
10
- "type": {
11
- "type": "string"
12
- },
13
- "source": {
14
- "type": "object",
15
- "properties": {
16
- "content": {
17
- "type": "array",
18
- "items": {
19
- "type": "object",
20
- "properties": {
21
- "type": {
22
- "type": "string"
23
- },
24
- "media_type": {
25
- "type": "string"
26
- },
27
- "text": {
28
- "type": "string"
29
- },
30
- "data": {
31
- "type": "string"
32
- }
33
- }
34
- }
35
- },
36
- "type": {
37
- "type": "string"
38
- },
39
- "media_type": {
40
- "type": "string"
41
- },
42
- "data": {
43
- "type": "string"
44
- }
45
- }
46
- },
47
- "title": {
48
- "type": "string"
49
- },
50
- "context": {
51
- "type": "string"
52
- },
53
- "record_type": {
54
- "type": "string"
55
- },
56
- "url": {
57
- "type": "string"
58
- }
59
- }
60
- }
61
- }
62
- },
63
- "required": ["content"]
64
- }
@@ -1,238 +0,0 @@
1
- import asyncio
2
- import json
3
- import os
4
- from contextlib import asynccontextmanager
5
- from typing import AsyncGenerator, List, Optional
6
-
7
- import openai
8
- import structlog
9
- from openai.types.chat import ChatCompletion
10
-
11
- from rasa.builder import config
12
- from rasa.builder.copilot.constants import ROLE_USER
13
- from rasa.builder.document_retrieval.constants import (
14
- INKEEP_API_KEY_ENV_VAR,
15
- INKEEP_DOCUMENT_RETRIEVAL_MODEL,
16
- INKEEP_RAG_RESPONSE_SCHEMA_PATH,
17
- )
18
- from rasa.builder.document_retrieval.models import Document
19
- from rasa.builder.exceptions import DocumentRetrievalError
20
- from rasa.shared.utils.io import read_json_file
21
-
22
- structlogger = structlog.get_logger()
23
-
24
-
25
- class InKeepDocumentRetrieval:
26
- """Handles the document retrieval from InKeep AI."""
27
-
28
- def __init__(
29
- self,
30
- api_key: Optional[str] = None,
31
- ):
32
- self._rag_schema = read_json_file(INKEEP_RAG_RESPONSE_SCHEMA_PATH)
33
- self._api_key = api_key or os.getenv(INKEEP_API_KEY_ENV_VAR)
34
-
35
- @property
36
- def api_key(self) -> str:
37
- """Resolve the correct API key/token based on proxy usage."""
38
- using_proxy = bool(config.HELLO_LLM_PROXY_BASE_URL)
39
- if using_proxy:
40
- if not config.RASA_PRO_LICENSE:
41
- raise DocumentRetrievalError(
42
- "HELLO_LLM_PROXY_BASE_URL is set but RASA_PRO_LICENSE is missing. "
43
- "Proxy requires a Rasa Pro license token for authentication."
44
- )
45
- return config.RASA_PRO_LICENSE
46
-
47
- if not self._api_key:
48
- raise DocumentRetrievalError(
49
- "INKEEP_API_KEY is missing. Provide it via env INKEEP_API_KEY "
50
- "or pass api_key= to InKeepDocumentRetrieval."
51
- )
52
- return self._api_key
53
-
54
- async def retrieve_documents(
55
- self, query: str, temperature: float = 0.0, timeout: float = 30.0
56
- ) -> List[Document]:
57
- """Retrieve relevant documents using InKeep AI based on the given query.
58
-
59
- Args:
60
- query: The search query
61
- temperature: Controls randomness in generation (0.0 for deterministic)
62
- timeout: Timeout for the API call
63
-
64
- Returns:
65
- List of Document objects containing retrieved content
66
-
67
- Raises:
68
- DocumentRetrievalError: When document retrieval fails due to:
69
- - Empty response from InKeep AI API
70
- - OpenAI API errors (authentication, rate limiting, etc.)
71
- - Request timeout
72
- - Unexpected errors during API communication
73
- """
74
- try:
75
- response = await self._call_inkeep_rag_api(
76
- query=query,
77
- temperature=temperature,
78
- timeout=timeout,
79
- )
80
- documents = self._parse_documents_from_response(response)
81
- return documents
82
- except DocumentRetrievalError as e:
83
- structlogger.error(
84
- "inkeep_document_retrieval.retrieve_documents.error",
85
- event_info="InKeep Document Retrieval: Error",
86
- query=query,
87
- error=str(e),
88
- )
89
- raise e
90
-
91
- async def _call_inkeep_rag_api(
92
- self, query: str, temperature: float, timeout: float
93
- ) -> ChatCompletion:
94
- """Call InKeep AI RAG's API endpoint and return the response content.
95
-
96
- Args:
97
- query: The search query to send to InKeep
98
- temperature: Controls randomness in generation (0.0 for deterministic)
99
- timeout: Timeout for the API call
100
-
101
- Returns:
102
- The response content from InKeep AI. The response is made of the retrieved
103
- documents.
104
-
105
- Raises:
106
- LLMGenerationError: If the API call fails or returns invalid response
107
- """
108
- try:
109
- async with self._get_client() as client:
110
- response = await client.chat.completions.create(
111
- model=INKEEP_DOCUMENT_RETRIEVAL_MODEL,
112
- messages=[{"role": ROLE_USER, "content": query}],
113
- temperature=temperature,
114
- timeout=timeout,
115
- response_format={
116
- "type": "json_schema",
117
- "json_schema": self._rag_schema,
118
- },
119
- )
120
-
121
- if not response.choices[0].message.content:
122
- structlogger.warning(
123
- "inkeep_document_retrieval.empty_response",
124
- event_info="InKeep AI returned an empty response. ",
125
- query=query,
126
- response_content=response.choices[0].message.content,
127
- )
128
- raise DocumentRetrievalError(
129
- "InKeep Document Retrieval: Empty response"
130
- )
131
-
132
- return response
133
-
134
- except openai.OpenAIError as e:
135
- structlogger.error(
136
- "inkeep_document_retrieval.call_inkeep_rag_api.api_error",
137
- event_info="InKeep Document Retrieval: API error",
138
- query=query,
139
- error=e,
140
- )
141
- raise DocumentRetrievalError(f"InKeep Document Retrieval: API error: {e}")
142
- except asyncio.TimeoutError as e:
143
- structlogger.error(
144
- "inkeep_document_retrieval.call_inkeep_rag_api.timeout_error",
145
- event_info="InKeep Document Retrieval: Timeout error",
146
- query=query,
147
- error=e,
148
- )
149
- raise DocumentRetrievalError(f"InKeep AI request timed out: {e}")
150
- except Exception as e:
151
- structlogger.error(
152
- "inkeep_document_retrieval.call_inkeep_rag_api.error",
153
- event_info="InKeep Document Retrieval: Error",
154
- query=query,
155
- error=e,
156
- )
157
- raise DocumentRetrievalError(
158
- f"InKeep Document Retrieval: Unexpected error: {e}"
159
- )
160
-
161
- @asynccontextmanager
162
- async def _get_client(self) -> AsyncGenerator[openai.AsyncOpenAI, None]:
163
- """Get or create client that handles the API calls to InKeep AI."""
164
- # Ensure trailing slash to match client expectations/tests
165
- base_url = f"{config.INKEEP_BASE_URL.rstrip('/')}/"
166
- client = openai.AsyncOpenAI(base_url=base_url, api_key=self.api_key)
167
- structlogger.debug("inkeep_document_retrieval._get_client", base_url=base_url)
168
-
169
- try:
170
- yield client
171
- except Exception as e:
172
- structlogger.error(
173
- "inkeep_document_retrieval.client_error",
174
- event_info="InKeep Document Retrieval: Client error",
175
- error=str(e),
176
- )
177
- raise
178
-
179
- def _parse_documents_from_response(
180
- self, response: ChatCompletion
181
- ) -> List[Document]:
182
- """Parse the InKeep AI response into Document objects.
183
-
184
- Args:
185
- response: ChatCompletion response from InKeep AI's RAG model.
186
-
187
- Returns:
188
- List of Document objects. Empty list is returned if the response is empty
189
- or if the response is invalid.
190
- """
191
- try:
192
- content = response.choices[0].message.content
193
- if not content:
194
- return []
195
-
196
- response_data = json.loads(content)
197
- documents = []
198
-
199
- for item in response_data.get("content", []):
200
- try:
201
- document = Document.from_inkeep_rag_response(item)
202
- documents.append(document)
203
- except Exception as e:
204
- structlogger.warning(
205
- "inkeep_document_retrieval.invalid_document_skipped",
206
- event_info=(
207
- "InKeep Document Retrieval: Invalid document structure "
208
- "skipped. Returning empty list for this item."
209
- ),
210
- error=str(e),
211
- item=item,
212
- )
213
- # Continue processing other items, skip this invalid one
214
- continue
215
-
216
- return documents
217
-
218
- except json.JSONDecodeError as e:
219
- structlogger.warning(
220
- "inkeep_document_retrieval.parse_documents_from_response"
221
- ".parse_response_failed",
222
- event_info=(
223
- "InKeep Document Retrieval: Parse response failed. "
224
- "Returning empty list.",
225
- ),
226
- error=str(e),
227
- )
228
- return []
229
- except Exception as e:
230
- structlogger.error(
231
- "inkeep_document_retrieval.parse_documents_from_response.error",
232
- event_info=(
233
- "InKeep Document Retrieval: Parse response error. "
234
- "Returning empty list.",
235
- ),
236
- error=str(e),
237
- )
238
- return []
@@ -1,62 +0,0 @@
1
- from typing import Any, Dict, Optional
2
-
3
- import structlog
4
- from pydantic import BaseModel, Field
5
-
6
- structlogger = structlog.get_logger()
7
-
8
-
9
- class Document(BaseModel):
10
- """Model for document retrieval results."""
11
-
12
- content: str = Field(...)
13
- url: Optional[str] = Field(None)
14
- title: Optional[str] = Field(None)
15
- metadata: Optional[Dict[str, Any]] = Field(None)
16
-
17
- @classmethod
18
- def from_inkeep_rag_response(cls, rag_item: Dict[str, Any]) -> "Document":
19
- """Create a Document object from a single InKeep RAG response item.
20
-
21
- Args:
22
- rag_item: Single item from InKeep RAG response
23
-
24
- Returns:
25
- Document object with extracted content and metadata
26
- """
27
- source = rag_item.get("source", {})
28
- text_content = cls._extract_text_from_source(source)
29
-
30
- return cls(
31
- content=text_content.strip() if text_content else "",
32
- url=rag_item.get("url"),
33
- title=rag_item.get("title"),
34
- metadata={
35
- "type": rag_item.get("type"),
36
- "record_type": rag_item.get("record_type"),
37
- "context": rag_item.get("context"),
38
- "media_type": source.get("media_type"),
39
- },
40
- )
41
-
42
- @staticmethod
43
- def _extract_text_from_source(source: Dict[str, Any]) -> str:
44
- """Extract text content from InKeep source object.
45
-
46
- Args:
47
- source: Source object from InKeep RAG response
48
-
49
- Returns:
50
- Extracted text content
51
- """
52
- # Try to extract from content array first
53
- if "content" in source:
54
- text_parts = []
55
- for content_item in source["content"]:
56
- if content_item.get("type") == "text" and content_item.get("text"):
57
- text_parts.append(content_item["text"])
58
- if text_parts:
59
- return "\n".join(text_parts)
60
-
61
- # Fallback to source data
62
- return source.get("data", "")