rasa-pro 3.12.22__py3-none-any.whl → 3.13.0__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 (354) hide show
  1. rasa/__main__.py +3 -4
  2. rasa/api.py +1 -1
  3. rasa/cli/dialogue_understanding_test.py +1 -1
  4. rasa/cli/e2e_test.py +1 -8
  5. rasa/cli/evaluate.py +2 -2
  6. rasa/cli/export.py +5 -3
  7. rasa/cli/inspect.py +7 -0
  8. rasa/cli/llm_fine_tuning.py +1 -1
  9. rasa/cli/project_templates/default/config.yml +5 -32
  10. rasa/cli/project_templates/{calm → default}/e2e_tests/cancelations/user_cancels_during_a_correction.yml +1 -1
  11. rasa/cli/project_templates/{calm → default}/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +1 -1
  12. rasa/cli/project_templates/{calm → default}/e2e_tests/corrections/user_corrects_contact_handle.yml +1 -1
  13. rasa/cli/project_templates/{calm → default}/e2e_tests/corrections/user_corrects_contact_name.yml +1 -1
  14. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +1 -1
  15. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_lists_contacts.yml +1 -1
  16. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_removes_contact.yml +1 -1
  17. rasa/cli/project_templates/{calm → default}/e2e_tests/happy_paths/user_removes_contact_from_list.yml +1 -1
  18. rasa/cli/project_templates/default/endpoints.yml +18 -2
  19. rasa/cli/project_templates/defaults.py +133 -0
  20. rasa/cli/project_templates/tutorial/config.yml +1 -1
  21. rasa/cli/project_templates/tutorial/endpoints.yml +1 -1
  22. rasa/cli/run.py +1 -1
  23. rasa/cli/scaffold.py +2 -3
  24. rasa/cli/shell.py +6 -1
  25. rasa/cli/studio/download.py +0 -22
  26. rasa/cli/studio/link.py +36 -0
  27. rasa/cli/studio/pull.py +79 -0
  28. rasa/cli/studio/push.py +78 -0
  29. rasa/cli/studio/studio.py +12 -0
  30. rasa/cli/studio/train.py +1 -5
  31. rasa/cli/studio/upload.py +6 -4
  32. rasa/cli/train.py +5 -1
  33. rasa/cli/utils.py +1 -1
  34. rasa/cli/x.py +1 -1
  35. rasa/constants.py +2 -0
  36. rasa/core/__init__.py +0 -16
  37. rasa/core/actions/action.py +43 -29
  38. rasa/core/actions/action_repeat_bot_messages.py +18 -22
  39. rasa/core/actions/action_run_slot_rejections.py +1 -2
  40. rasa/core/agent.py +24 -3
  41. rasa/core/available_endpoints.py +146 -0
  42. rasa/core/brokers/kafka.py +4 -0
  43. rasa/core/brokers/pika.py +5 -2
  44. rasa/core/brokers/sql.py +1 -1
  45. rasa/core/channels/__init__.py +3 -0
  46. rasa/core/channels/botframework.py +2 -2
  47. rasa/core/channels/channel.py +2 -2
  48. rasa/core/channels/development_inspector.py +1 -1
  49. rasa/core/channels/facebook.py +1 -4
  50. rasa/core/channels/hangouts.py +8 -5
  51. rasa/core/channels/inspector/.eslintrc.cjs +12 -6
  52. rasa/core/channels/inspector/.prettierrc +5 -0
  53. rasa/core/channels/inspector/README.md +11 -5
  54. rasa/core/channels/inspector/dist/assets/{arc-9f75cc3b.js → arc-371401b1.js} +1 -1
  55. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-7f34db23.js → blockDiagram-38ab4fdb-3f126156.js} +1 -1
  56. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-948bab2c.js → c4Diagram-3d4e48cf-12f22eb7.js} +1 -1
  57. rasa/core/channels/inspector/dist/assets/channel-f1efda17.js +1 -0
  58. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-53b0dd0e.js → classDiagram-70f12bd4-03b1d386.js} +1 -1
  59. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-fdf789e7.js → classDiagram-v2-f2320105-84f69d63.js} +1 -1
  60. rasa/core/channels/inspector/dist/assets/clone-fdf164e2.js +1 -0
  61. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-87c4ece5.js → createText-2e5e7dd3-ca47fd38.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-5a8b0749.js → edges-e0da2a9e-f837ca8a.js} +1 -1
  63. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-66da90e2.js → erDiagram-9861fffd-8717ac54.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-10044f05.js → flowDb-956e92f1-94f38b83.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-f338f66a.js → flowDiagram-66a62f08-b616f9fb.js} +1 -1
  66. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-7d7a1629.js +1 -0
  67. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-b13140aa.js → flowchart-elk-definition-4a651766-f5d24bb8.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-f2b4a55a.js → ganttDiagram-c361ad54-b43ba8d9.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-dedc298d.js → gitGraphDiagram-72cf32ee-c3aafaa5.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/{graph-4ede11ff.js → graph-0d0a2c10.js} +1 -1
  71. rasa/core/channels/inspector/dist/assets/{index-3862675e-65549d37.js → index-3862675e-58ea0305.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{index-3a23e736.js → index-cce6f8a1.js} +123 -123
  73. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-65439671.js → infoDiagram-f8f76790-b8f60461.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-56d03d98.js → journeyDiagram-49397b02-95be5545.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{layout-dd48f7f4.js → layout-da885b9b.js} +1 -1
  76. rasa/core/channels/inspector/dist/assets/{line-1569ad2c.js → line-f1c817d3.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{linear-48bf4935.js → linear-d42801e6.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-688504c1.js → mindmap-definition-fc14e90a-a38923a6.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-78b6d7e6.js → pieDiagram-8a3498a8-ca6e71e9.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-048b84b3.js → quadrantDiagram-120e2f19-b290dae9.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-dd67f107.js → requirementDiagram-deff3bca-03f02ceb.js} +1 -1
  82. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-8128436e.js → sankeyDiagram-04a897e0-c49eee40.js} +1 -1
  83. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-1a0d1461.js → sequenceDiagram-704730f1-b2cd6a3d.js} +1 -1
  84. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-46d388ed.js → stateDiagram-587899a1-e53a2028.js} +1 -1
  85. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-ea42951a.js → stateDiagram-v2-d93cdb3a-e1982a03.js} +1 -1
  86. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-7427ed0c.js → styles-6aaf32cf-d0226ca5.js} +1 -1
  87. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-ff5e5a16.js → styles-9a916d00-0e21dc00.js} +1 -1
  88. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-7b3680cf.js → styles-c10674c1-9588494e.js} +1 -1
  89. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-f860f2ad.js → svgDrawCommon-08f97a94-be478d4f.js} +1 -1
  90. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-2eebf0c8.js → timeline-definition-85554ec2-74631749.js} +1 -1
  91. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-5d7f4e96.js → xychartDiagram-e933f94c-a043552f.js} +1 -1
  92. rasa/core/channels/inspector/dist/index.html +1 -1
  93. rasa/core/channels/inspector/package.json +3 -1
  94. rasa/core/channels/inspector/src/App.tsx +91 -90
  95. rasa/core/channels/inspector/src/components/Chat.tsx +45 -41
  96. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +40 -40
  97. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +57 -57
  98. rasa/core/channels/inspector/src/components/DialogueStack.tsx +36 -27
  99. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +4 -4
  100. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +7 -7
  101. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +28 -12
  102. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +9 -9
  103. rasa/core/channels/inspector/src/components/RasaLogo.tsx +5 -5
  104. rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +55 -60
  105. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +5 -5
  106. rasa/core/channels/inspector/src/components/Slots.tsx +22 -22
  107. rasa/core/channels/inspector/src/components/Welcome.tsx +28 -31
  108. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +245 -0
  109. rasa/core/channels/inspector/src/helpers/audio/microphone-processor.js +12 -0
  110. rasa/core/channels/inspector/src/helpers/audio/playback-processor.js +36 -0
  111. rasa/core/channels/inspector/src/helpers/conversation.ts +7 -7
  112. rasa/core/channels/inspector/src/helpers/formatters.test.ts +181 -181
  113. rasa/core/channels/inspector/src/helpers/formatters.ts +111 -111
  114. rasa/core/channels/inspector/src/helpers/utils.ts +78 -61
  115. rasa/core/channels/inspector/src/main.tsx +8 -8
  116. rasa/core/channels/inspector/src/theme/Button/Button.ts +8 -8
  117. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +7 -7
  118. rasa/core/channels/inspector/src/theme/Input/Input.ts +9 -9
  119. rasa/core/channels/inspector/src/theme/Link/Link.ts +6 -6
  120. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +13 -13
  121. rasa/core/channels/inspector/src/theme/Table/Table.tsx +10 -10
  122. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +5 -5
  123. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +7 -7
  124. rasa/core/channels/inspector/src/theme/base/colors.ts +64 -64
  125. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +21 -18
  126. rasa/core/channels/inspector/src/theme/base/radii.ts +8 -8
  127. rasa/core/channels/inspector/src/theme/base/shadows.ts +5 -5
  128. rasa/core/channels/inspector/src/theme/base/sizes.ts +5 -5
  129. rasa/core/channels/inspector/src/theme/base/space.ts +12 -12
  130. rasa/core/channels/inspector/src/theme/base/styles.ts +5 -5
  131. rasa/core/channels/inspector/src/theme/base/typography.ts +12 -12
  132. rasa/core/channels/inspector/src/theme/base/zIndices.ts +3 -3
  133. rasa/core/channels/inspector/src/theme/index.ts +38 -38
  134. rasa/core/channels/inspector/src/types.ts +56 -50
  135. rasa/core/channels/inspector/yarn.lock +5 -0
  136. rasa/core/channels/mattermost.py +1 -1
  137. rasa/core/channels/rasa_chat.py +2 -4
  138. rasa/core/channels/rest.py +5 -4
  139. rasa/core/channels/socketio.py +56 -41
  140. rasa/core/channels/studio_chat.py +329 -68
  141. rasa/core/channels/vier_cvg.py +1 -2
  142. rasa/core/channels/voice_ready/audiocodes.py +4 -11
  143. rasa/core/channels/voice_ready/jambonz.py +5 -6
  144. rasa/core/channels/voice_ready/twilio_voice.py +13 -12
  145. rasa/core/channels/voice_ready/utils.py +22 -0
  146. rasa/core/channels/voice_stream/audiocodes.py +13 -16
  147. rasa/core/channels/voice_stream/browser_audio.py +1 -1
  148. rasa/core/channels/voice_stream/genesys.py +37 -18
  149. rasa/core/channels/voice_stream/jambonz.py +232 -0
  150. rasa/core/channels/voice_stream/tts/__init__.py +8 -0
  151. rasa/core/channels/voice_stream/twilio_media_streams.py +15 -12
  152. rasa/core/channels/voice_stream/voice_channel.py +71 -27
  153. rasa/core/concurrent_lock_store.py +24 -10
  154. rasa/core/evaluation/marker_tracker_loader.py +1 -1
  155. rasa/core/exporter.py +37 -1
  156. rasa/core/http_interpreter.py +3 -7
  157. rasa/core/information_retrieval/faiss.py +18 -11
  158. rasa/core/information_retrieval/ingestion/faq_parser.py +158 -0
  159. rasa/core/jobs.py +2 -1
  160. rasa/core/lock_store.py +151 -60
  161. rasa/core/nlg/contextual_response_rephraser.py +17 -7
  162. rasa/core/nlg/generator.py +5 -22
  163. rasa/core/nlg/interpolator.py +2 -3
  164. rasa/core/nlg/response.py +6 -43
  165. rasa/core/nlg/summarize.py +1 -1
  166. rasa/core/nlg/translate.py +0 -8
  167. rasa/core/policies/enterprise_search_policy.py +305 -189
  168. rasa/core/policies/enterprise_search_policy_config.py +241 -0
  169. rasa/core/policies/enterprise_search_prompt_with_relevancy_check_and_citation_template.jinja2 +67 -0
  170. rasa/core/policies/flow_policy.py +1 -1
  171. rasa/core/policies/flows/flow_executor.py +102 -17
  172. rasa/core/policies/intentless_policy.py +56 -17
  173. rasa/core/processor.py +70 -49
  174. rasa/core/run.py +33 -11
  175. rasa/core/tracker_stores/__init__.py +0 -0
  176. rasa/core/{auth_retry_tracker_store.py → tracker_stores/auth_retry_tracker_store.py} +66 -1
  177. rasa/core/tracker_stores/dynamo_tracker_store.py +256 -0
  178. rasa/core/tracker_stores/mongo_tracker_store.py +223 -0
  179. rasa/core/tracker_stores/redis_tracker_store.py +252 -0
  180. rasa/core/tracker_stores/sql_tracker_store.py +582 -0
  181. rasa/core/tracker_stores/tracker_store.py +839 -0
  182. rasa/core/training/interactive.py +1 -1
  183. rasa/core/utils.py +24 -95
  184. rasa/dialogue_understanding/coexistence/intent_based_router.py +2 -1
  185. rasa/dialogue_understanding/coexistence/llm_based_router.py +13 -11
  186. rasa/dialogue_understanding/commands/can_not_handle_command.py +2 -0
  187. rasa/dialogue_understanding/commands/cancel_flow_command.py +3 -1
  188. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +2 -0
  189. rasa/dialogue_understanding/commands/clarify_command.py +6 -2
  190. rasa/dialogue_understanding/commands/command_syntax_manager.py +1 -0
  191. rasa/dialogue_understanding/commands/correct_slots_command.py +5 -6
  192. rasa/dialogue_understanding/commands/error_command.py +1 -1
  193. rasa/dialogue_understanding/commands/human_handoff_command.py +3 -3
  194. rasa/dialogue_understanding/commands/knowledge_answer_command.py +2 -0
  195. rasa/dialogue_understanding/commands/repeat_bot_messages_command.py +2 -0
  196. rasa/dialogue_understanding/commands/set_slot_command.py +8 -4
  197. rasa/dialogue_understanding/commands/skip_question_command.py +3 -3
  198. rasa/dialogue_understanding/commands/start_flow_command.py +7 -3
  199. rasa/dialogue_understanding/generator/__init__.py +7 -1
  200. rasa/dialogue_understanding/generator/command_generator.py +4 -2
  201. rasa/dialogue_understanding/generator/command_parser.py +2 -2
  202. rasa/dialogue_understanding/generator/command_parser_validator.py +63 -0
  203. rasa/dialogue_understanding/generator/llm_based_command_generator.py +1 -2
  204. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +3 -2
  205. rasa/dialogue_understanding/generator/nlu_command_adapter.py +2 -2
  206. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_template.jinja2 +0 -2
  207. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +1 -0
  208. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +1 -0
  209. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +79 -0
  210. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +79 -0
  211. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +26 -461
  212. rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +147 -0
  213. rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +461 -0
  214. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +20 -64
  215. rasa/dialogue_understanding/patterns/cancel.py +1 -2
  216. rasa/dialogue_understanding/patterns/clarify.py +1 -1
  217. rasa/dialogue_understanding/patterns/correction.py +2 -2
  218. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +42 -27
  219. rasa/dialogue_understanding/patterns/domain_for_patterns.py +190 -0
  220. rasa/dialogue_understanding/processor/command_processor.py +6 -7
  221. rasa/dialogue_understanding_test/command_metric_calculation.py +7 -40
  222. rasa/dialogue_understanding_test/command_metrics.py +38 -0
  223. rasa/dialogue_understanding_test/du_test_case.py +58 -25
  224. rasa/dialogue_understanding_test/du_test_result.py +228 -132
  225. rasa/dialogue_understanding_test/du_test_runner.py +11 -2
  226. rasa/dialogue_understanding_test/du_test_schema.yml +3 -3
  227. rasa/dialogue_understanding_test/io.py +35 -8
  228. rasa/e2e_test/constants.py +1 -1
  229. rasa/e2e_test/e2e_test_runner.py +1 -1
  230. rasa/e2e_test/e2e_test_schema.yml +3 -3
  231. rasa/engine/constants.py +1 -1
  232. rasa/engine/graph.py +2 -2
  233. rasa/engine/recipes/default_recipe.py +1 -1
  234. rasa/engine/validation.py +3 -2
  235. rasa/hooks.py +2 -30
  236. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +2 -6
  237. rasa/model_manager/model_api.py +89 -1
  238. rasa/model_manager/runner_service.py +20 -4
  239. rasa/model_manager/socket_bridge.py +0 -7
  240. rasa/model_manager/trainer_service.py +10 -4
  241. rasa/plugin.py +2 -15
  242. rasa/privacy/__init__.py +0 -0
  243. rasa/privacy/constants.py +83 -0
  244. rasa/privacy/event_broker_utils.py +77 -0
  245. rasa/privacy/privacy_config.py +281 -0
  246. rasa/privacy/privacy_config_schema.json +86 -0
  247. rasa/privacy/privacy_filter.py +393 -0
  248. rasa/privacy/privacy_manager.py +594 -0
  249. rasa/server.py +23 -2
  250. rasa/shared/constants.py +17 -0
  251. rasa/shared/core/command_payload_reader.py +1 -5
  252. rasa/shared/core/constants.py +4 -3
  253. rasa/shared/core/domain.py +172 -11
  254. rasa/shared/core/events.py +100 -6
  255. rasa/shared/core/flows/flow.py +30 -5
  256. rasa/shared/core/flows/flow_step.py +19 -3
  257. rasa/shared/core/flows/flow_step_links.py +15 -0
  258. rasa/shared/core/flows/flow_step_sequence.py +6 -0
  259. rasa/shared/core/flows/flows_yaml_schema.json +3 -0
  260. rasa/shared/core/flows/nlu_trigger.py +13 -0
  261. rasa/shared/core/flows/steps/action.py +7 -4
  262. rasa/shared/core/flows/steps/call.py +11 -4
  263. rasa/shared/core/flows/steps/collect.py +71 -6
  264. rasa/shared/core/flows/steps/internal.py +6 -1
  265. rasa/shared/core/flows/steps/link.py +7 -4
  266. rasa/shared/core/flows/steps/no_operation.py +7 -4
  267. rasa/shared/core/flows/steps/set_slots.py +8 -4
  268. rasa/shared/core/flows/validation.py +25 -5
  269. rasa/shared/core/flows/yaml_flows_io.py +106 -5
  270. rasa/shared/core/slots.py +29 -1
  271. rasa/shared/core/trackers.py +21 -10
  272. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +1 -4
  273. rasa/shared/importers/importer.py +8 -0
  274. rasa/shared/providers/_configs/azure_openai_client_config.py +2 -2
  275. rasa/shared/providers/_configs/default_litellm_client_config.py +1 -1
  276. rasa/shared/providers/_configs/huggingface_local_embedding_client_config.py +1 -1
  277. rasa/shared/providers/_configs/openai_client_config.py +1 -1
  278. rasa/shared/providers/_configs/rasa_llm_client_config.py +1 -1
  279. rasa/shared/providers/_configs/self_hosted_llm_client_config.py +1 -1
  280. rasa/shared/providers/_configs/utils.py +0 -99
  281. rasa/shared/providers/llm/default_litellm_llm_client.py +2 -2
  282. rasa/shared/utils/common.py +43 -1
  283. rasa/shared/utils/configs.py +110 -0
  284. rasa/shared/utils/constants.py +0 -3
  285. rasa/shared/utils/llm.py +245 -8
  286. rasa/shared/utils/pykwalify_extensions.py +0 -9
  287. rasa/shared/utils/yaml.py +32 -0
  288. rasa/studio/constants.py +1 -0
  289. rasa/studio/data_handler.py +33 -12
  290. rasa/studio/download.py +117 -435
  291. rasa/studio/link.py +211 -0
  292. rasa/studio/prompts.py +221 -0
  293. rasa/studio/pull/__init__.py +0 -0
  294. rasa/studio/pull/data.py +222 -0
  295. rasa/studio/pull/domains.py +60 -0
  296. rasa/studio/pull/pull.py +239 -0
  297. rasa/studio/push.py +138 -0
  298. rasa/studio/results_logger.py +6 -1
  299. rasa/studio/train.py +1 -1
  300. rasa/studio/upload.py +243 -72
  301. rasa/studio/utils.py +33 -0
  302. rasa/telemetry.py +83 -26
  303. rasa/tracing/config.py +4 -5
  304. rasa/tracing/constants.py +19 -1
  305. rasa/tracing/instrumentation/attribute_extractors.py +68 -16
  306. rasa/tracing/instrumentation/instrumentation.py +54 -3
  307. rasa/tracing/instrumentation/metrics.py +98 -15
  308. rasa/tracing/metric_instrument_provider.py +75 -3
  309. rasa/utils/common.py +43 -22
  310. rasa/utils/endpoints.py +22 -1
  311. rasa/utils/licensing.py +2 -3
  312. rasa/utils/log_utils.py +1 -45
  313. rasa/validator.py +2 -8
  314. rasa/version.py +1 -1
  315. {rasa_pro-3.12.22.dist-info → rasa_pro-3.13.0.dist-info}/METADATA +11 -12
  316. {rasa_pro-3.12.22.dist-info → rasa_pro-3.13.0.dist-info}/RECORD +333 -309
  317. rasa/anonymization/__init__.py +0 -2
  318. rasa/anonymization/anonymisation_rule_yaml_reader.py +0 -91
  319. rasa/anonymization/anonymization_pipeline.py +0 -286
  320. rasa/anonymization/anonymization_rule_executor.py +0 -266
  321. rasa/anonymization/anonymization_rule_orchestrator.py +0 -119
  322. rasa/anonymization/schemas/config.yml +0 -47
  323. rasa/anonymization/utils.py +0 -118
  324. rasa/cli/project_templates/calm/config.yml +0 -10
  325. rasa/cli/project_templates/calm/credentials.yml +0 -33
  326. rasa/cli/project_templates/calm/endpoints.yml +0 -58
  327. rasa/cli/project_templates/default/actions/actions.py +0 -27
  328. rasa/cli/project_templates/default/data/nlu.yml +0 -91
  329. rasa/cli/project_templates/default/data/rules.yml +0 -13
  330. rasa/cli/project_templates/default/data/stories.yml +0 -30
  331. rasa/cli/project_templates/default/domain.yml +0 -34
  332. rasa/cli/project_templates/default/tests/test_stories.yml +0 -91
  333. rasa/core/channels/inspector/dist/assets/channel-dfa68278.js +0 -1
  334. rasa/core/channels/inspector/dist/assets/clone-edb7f119.js +0 -1
  335. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-65e7c670.js +0 -1
  336. rasa/core/channels/inspector/src/helpers/audiostream.ts +0 -191
  337. rasa/core/tracker_store.py +0 -1792
  338. /rasa/cli/project_templates/{calm → default}/actions/action_template.py +0 -0
  339. /rasa/cli/project_templates/{calm → default}/actions/add_contact.py +0 -0
  340. /rasa/cli/project_templates/{calm → default}/actions/db.py +0 -0
  341. /rasa/cli/project_templates/{calm → default}/actions/list_contacts.py +0 -0
  342. /rasa/cli/project_templates/{calm → default}/actions/remove_contact.py +0 -0
  343. /rasa/cli/project_templates/{calm → default}/data/flows/add_contact.yml +0 -0
  344. /rasa/cli/project_templates/{calm → default}/data/flows/list_contacts.yml +0 -0
  345. /rasa/cli/project_templates/{calm → default}/data/flows/remove_contact.yml +0 -0
  346. /rasa/cli/project_templates/{calm → default}/db/contacts.json +0 -0
  347. /rasa/cli/project_templates/{calm → default}/domain/add_contact.yml +0 -0
  348. /rasa/cli/project_templates/{calm → default}/domain/list_contacts.yml +0 -0
  349. /rasa/cli/project_templates/{calm → default}/domain/remove_contact.yml +0 -0
  350. /rasa/cli/project_templates/{calm → default}/domain/shared.yml +0 -0
  351. /rasa/{cli/project_templates/calm/actions → core/information_retrieval/ingestion}/__init__.py +0 -0
  352. {rasa_pro-3.12.22.dist-info → rasa_pro-3.13.0.dist-info}/NOTICE +0 -0
  353. {rasa_pro-3.12.22.dist-info → rasa_pro-3.13.0.dist-info}/WHEEL +0 -0
  354. {rasa_pro-3.12.22.dist-info → rasa_pro-3.13.0.dist-info}/entry_points.txt +0 -0
@@ -1,119 +0,0 @@
1
- import copy
2
- import json
3
- import logging
4
- from typing import Any, Dict, List, Optional, Text
5
-
6
- from rasa.anonymization.anonymization_rule_executor import (
7
- AnonymizationRuleExecutor,
8
- AnonymizationRuleList,
9
- )
10
- from rasa.core.brokers.broker import EventBroker
11
- from rasa.core.brokers.kafka import KafkaEventBroker
12
-
13
- logger = logging.getLogger(__name__)
14
-
15
-
16
- class AnonymizationRuleOrchestrator:
17
- """Orchestrates the execution of anonymization rules."""
18
-
19
- def __init__(
20
- self,
21
- event_broker: Optional[EventBroker],
22
- anonymization_rule_list: AnonymizationRuleList,
23
- ):
24
- """Initializes the orchestrator."""
25
- self.event_broker = (
26
- event_broker if isinstance(event_broker, KafkaEventBroker) else None
27
- )
28
- self.anonymization_rule_executor = AnonymizationRuleExecutor(
29
- anonymization_rule_list
30
- )
31
-
32
- def anonymize_event(self, event: Dict[Text, Any]) -> Dict[Text, Any]:
33
- """Anonymizes one of the supported event types.
34
-
35
- The supported event types: user, bot, slot, entities.
36
- """
37
- event_copy = copy.deepcopy(event)
38
- event_type = event["event"]
39
-
40
- if event_type == "user" or event_type == "bot":
41
- if event["text"] is None:
42
- return event_copy
43
-
44
- anonymized_text = self.anonymization_rule_executor.run(event["text"])
45
- event_copy["text"] = anonymized_text
46
-
47
- if "parse_data" in event_copy:
48
- event_copy["parse_data"]["text"] = anonymized_text
49
-
50
- entities = event_copy["parse_data"]["entities"]
51
-
52
- if entities:
53
- anonymized_entities = self._anonymize_entities(entities)
54
- event_copy["parse_data"]["entities"] = anonymized_entities
55
-
56
- elif event_type == "slot":
57
- slot_value = event["value"]
58
-
59
- if slot_value is None:
60
- return event_copy
61
- elif not isinstance(slot_value, str):
62
- slot_value = json.dumps(slot_value)
63
-
64
- anonymized_value = self.anonymization_rule_executor.run(slot_value)
65
- event_copy["value"] = anonymized_value
66
-
67
- elif event_type == "entities":
68
- entities = event_copy["entities"]
69
- anonymized_entities = self._anonymize_entities(entities)
70
-
71
- event_copy["entities"] = anonymized_entities
72
- else:
73
- logger.debug(f"Unsupported event type for anonymization: {event_type}.")
74
-
75
- return event_copy
76
-
77
- def publish_event(
78
- self, anonymized_event: Dict[Text, Any], is_anonymized: bool
79
- ) -> None:
80
- """Publishes the anonymized event to the event broker."""
81
- if self.event_broker is None:
82
- return None
83
-
84
- # this assumes that the event broker's topic attribute
85
- # is set to the correct anonymization topic
86
- if is_anonymized:
87
- event_type = anonymized_event["event"]
88
- sender_id = anonymized_event["sender_id"]
89
- logger.debug(
90
- f"Publishing event of type '{event_type}' from "
91
- f"sender ID '{sender_id}' to "
92
- f"Kafka topic '{self.event_broker.topic}'. "
93
- f"The anonymization pipeline used rule named "
94
- f"'{self.anonymization_rule_executor.anonymization_rule_list.id}'."
95
- )
96
-
97
- self.event_broker.publish(anonymized_event)
98
-
99
- def _anonymize_entities(
100
- self, entities: List[Dict[Text, Any]]
101
- ) -> List[Dict[Text, Any]]:
102
- """Anonymizes entities."""
103
- anonymized_entities = []
104
-
105
- for entity in entities:
106
- entity_value = entity.get("value")
107
-
108
- if entity_value is not None:
109
- value = self.anonymization_rule_executor.run(str(entity_value))
110
- entity["value"] = value
111
- anonymized_entities.append(entity)
112
-
113
- return anonymized_entities
114
-
115
- def anonymize_log_message(self, message: Text) -> Any:
116
- """Anonymizes log messages."""
117
- if self.event_broker:
118
- return None
119
- return self.anonymization_rule_executor.run(message)
@@ -1,47 +0,0 @@
1
- allowempty: True
2
- mapping:
3
- anonymization:
4
- type: "map"
5
- mapping:
6
- rule_lists:
7
- type: "seq"
8
- matching: "any"
9
- required: True
10
- sequence:
11
- - type: "map"
12
- mapping:
13
- id:
14
- type: "str"
15
- required: True
16
- rules:
17
- type: "seq"
18
- required: True
19
- matching: "any"
20
- sequence:
21
- - type: "map"
22
- mapping:
23
- entity:
24
- type: "str"
25
- required: True
26
- substitution:
27
- type: "str"
28
- enum: ["text", "mask", "faker"]
29
- required: False
30
- value:
31
- type: "str"
32
- required: False
33
-
34
- metadata:
35
- type: "map"
36
- required: True
37
- mapping:
38
- language:
39
- type: "str"
40
- required: True
41
- model_name:
42
- type: "any"
43
- required: True
44
- model_provider:
45
- type: "str"
46
- required: True
47
- enum: ["spacy", "stanza", "transformers"]
@@ -1,118 +0,0 @@
1
- import logging
2
- import os
3
- from pathlib import Path
4
- from typing import Any, Dict, Optional, Text
5
-
6
- from rasa.shared.exceptions import RasaException, YamlException
7
- from rasa.shared.utils.yaml import (
8
- read_config_file,
9
- read_yaml_file,
10
- validate_yaml_content_using_schema,
11
- )
12
-
13
- logger = logging.getLogger(__name__)
14
- SCHEMA_FILE = Path(__file__).parent / "schemas" / "config.yml"
15
-
16
-
17
- def read_endpoint_config(
18
- filename: Optional[Text], endpoint_type: Text
19
- ) -> Optional[Dict[Text, Any]]:
20
- """Reads a configuration file from disk and extract one config."""
21
- if not filename:
22
- return None
23
-
24
- try:
25
- content = read_config_file(filename, reader_type=["safe", "rt"])
26
-
27
- if content.get(endpoint_type) is None:
28
- return None
29
-
30
- return content
31
- except FileNotFoundError:
32
- logger.error(
33
- "Failed to read configuration from {}. No such file.".format(
34
- os.path.abspath(filename)
35
- ),
36
- )
37
- return None
38
-
39
-
40
- def extract_anonymization_traits(
41
- anonymization_config: Optional[Dict[Text, Any]], endpoint_type: Text
42
- ) -> Dict[Text, Any]:
43
- """Extract anonymization traits from the anonymization config.
44
-
45
- Args:
46
- anonymization_config: The anonymization config.
47
- endpoint_type: The endpoint type.
48
-
49
- Returns:
50
- A dictionary containing the anonymization traits.
51
- """
52
- if not anonymization_config:
53
- return {"enabled": False}
54
-
55
- anonymization_value = anonymization_config.get(endpoint_type)
56
- if not anonymization_value:
57
- logger.debug("Anonymization config found but nothing is defined.")
58
- return {"enabled": False}
59
-
60
- try:
61
- validate_anonymization_yaml(anonymization_config)
62
- except RasaException as exception:
63
- logger.debug(exception)
64
- return {"enabled": False}
65
-
66
- rule_lists = anonymization_value.get("rule_lists", [])
67
-
68
- traits = {
69
- "enabled": True,
70
- "metadata": anonymization_value.get("metadata", {}),
71
- "number_of_rule_lists": len(rule_lists),
72
- "number_of_rules": 0,
73
- "substitutions": {
74
- "mask": 0,
75
- "faker": 0,
76
- "text": 0,
77
- "not_defined": 0,
78
- },
79
- "entities": set(),
80
- }
81
-
82
- for rule_list in rule_lists:
83
- traits["number_of_rules"] += len(rule_list.get("rules", []))
84
- for rule in rule_list.get("rules", []):
85
- traits["substitutions"][rule.get("substitution", "not_defined")] += 1
86
- traits["entities"].add(rule.get("entity"))
87
-
88
- entities = list(traits["entities"])
89
- entities.sort()
90
- traits["entities"] = entities
91
-
92
- return traits
93
-
94
-
95
- def validate_anonymization_yaml(yaml_content: Dict[Text, Any]) -> None:
96
- """Checks if the yaml_content adheres to the anonymization rule schema.
97
-
98
- If the yaml_content is not in the right format, an exception will be raised.
99
- """
100
- schema = read_yaml_file(SCHEMA_FILE, reader_type=("safe", "rt"))
101
- try:
102
- validate_yaml_content_using_schema(yaml_content, schema)
103
- except YamlException as exception:
104
- raise RasaException(
105
- f"Invalid configuration for `anonymization_rules` : {exception}"
106
- ) from exception
107
-
108
- rule_lists = yaml_content.get("anonymization", {}).get("rule_lists", [])
109
-
110
- rule_set = set()
111
- for rule_list in rule_lists:
112
- rule_id = rule_list.get("id")
113
- if rule_id in rule_set:
114
- raise RasaException(
115
- f"Invalid configuration for `anonymization_rules` :"
116
- f"Duplicate rule id: '{rule_id}' encountered in rule_lists"
117
- )
118
- rule_set.add(rule_id)
@@ -1,10 +0,0 @@
1
- recipe: default.v1
2
- language: en
3
- pipeline:
4
- - name: CompactLLMCommandGenerator
5
- llm:
6
- model_group: openai-gpt-4o
7
-
8
- policies:
9
- - name: FlowPolicy
10
- - name: IntentlessPolicy
@@ -1,33 +0,0 @@
1
- # This file contains the credentials for the voice & chat platforms
2
- # which your bot is using.
3
- # https://rasa.com/docs/rasa-pro/connectors/messaging-and-voice-channels/
4
-
5
- rest:
6
- # # you don't need to provide anything here - this channel doesn't
7
- # # require any credentials
8
-
9
-
10
- #facebook:
11
- # verify: "<verify>"
12
- # secret: "<your secret>"
13
- # page-access-token: "<your page access token>"
14
-
15
- #slack:
16
- # slack_token: "<your slack token>"
17
- # slack_channel: "<the slack channel>"
18
- # slack_signing_secret: "<your slack signing secret>"
19
-
20
- #socketio:
21
- # user_message_evt: <event name for user message>
22
- # bot_message_evt: <event name for bot messages>
23
- # session_persistence: <true/false>
24
-
25
- #mattermost:
26
- # url: "https://<mattermost instance>/api/v4"
27
- # token: "<bot token>"
28
- # webhook_url: "<callback URL>"
29
-
30
- # This entry is needed if you are using Rasa Enterprise. The entry represents credentials
31
- # for the Rasa Enterprise "channel", i.e. Talk to your bot and Share with guest testers.
32
- rasa:
33
- url: "http://localhost:5002/api"
@@ -1,58 +0,0 @@
1
- # This file contains the different endpoints your bot can use.
2
-
3
- # Server where the models are pulled from.
4
- # https://rasa.com/docs/rasa-pro/production/model-storage#fetching-models-from-a-server
5
-
6
- #models:
7
- # url: http://my-server.com/models/default_core@latest
8
- # wait_time_between_pulls: 10 # [optional](default: 100)
9
-
10
- # Server which runs your custom actions.
11
- # https://rasa.com/docs/rasa-pro/concepts/custom-actions
12
-
13
- action_endpoint:
14
- actions_module: "actions"
15
-
16
- # Tracker store which is used to store the conversations.
17
- # By default the conversations are stored in memory.
18
- # https://rasa.com/docs/rasa-pro/production/tracker-stores
19
-
20
- #tracker_store:
21
- # type: redis
22
- # url: <host of the redis instance, e.g. localhost>
23
- # port: <port of your redis instance, usually 6379>
24
- # db: <number of your database within redis, e.g. 0>
25
- # password: <password used for authentication>
26
- # use_ssl: <whether or not the communication is encrypted, default false>
27
-
28
- #tracker_store:
29
- # type: mongod
30
- # url: <url to your mongo instance, e.g. mongodb://localhost:27017>
31
- # db: <name of the db within your mongo instance, e.g. rasa>
32
- # username: <username used for authentication>
33
- # password: <password used for authentication>
34
-
35
- # Event broker which all conversation events should be streamed to.
36
- # https://rasa.com/docs/rasa-pro/production/event-brokers
37
-
38
- #event_broker:
39
- # url: localhost
40
- # username: username
41
- # password: password
42
- # queue: queue
43
-
44
- # The lines below activate contextual rephrasing, using the default OpenAI language model.
45
- # Ensure the OPENAI_API_KEY is set to prevent any missing API key errors.
46
- # For more details, refer to the documentation:
47
- # https://rasa.com/docs/rasa-pro/concepts/contextual-response-rephraser
48
- # To enable the rephraser, remove the comment symbols in the lines below.
49
- #nlg:
50
- # type: rephrase
51
-
52
- model_groups:
53
- - id: openai-gpt-4o
54
- models:
55
- - provider: openai
56
- model: gpt-4o-2024-11-20
57
- request_timeout: 7
58
- max_tokens: 256
@@ -1,27 +0,0 @@
1
- # This files contains your custom actions which can be used to run
2
- # custom Python code.
3
- #
4
- # See this guide on how to implement these action:
5
- # https://rasa.com/docs/rasa-pro/concepts/custom-actions
6
-
7
-
8
- # This is a simple example for a custom action which utters "Hello World!"
9
-
10
- # from typing import Any, Text, Dict, List
11
- #
12
- # from rasa_sdk import Action, Tracker
13
- # from rasa_sdk.executor import CollectingDispatcher
14
- #
15
- #
16
- # class ActionHelloWorld(Action):
17
- #
18
- # def name(self) -> Text:
19
- # return "action_hello_world"
20
- #
21
- # def run(self, dispatcher: CollectingDispatcher,
22
- # tracker: Tracker,
23
- # domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
24
- #
25
- # dispatcher.utter_message(text="Hello World!")
26
- #
27
- # return []
@@ -1,91 +0,0 @@
1
- version: "3.1"
2
-
3
- nlu:
4
- - intent: greet
5
- examples: |
6
- - hey
7
- - hello
8
- - hi
9
- - hello there
10
- - good morning
11
- - good evening
12
- - moin
13
- - hey there
14
- - let's go
15
- - hey dude
16
- - goodmorning
17
- - goodevening
18
- - good afternoon
19
-
20
- - intent: goodbye
21
- examples: |
22
- - cu
23
- - good by
24
- - cee you later
25
- - good night
26
- - bye
27
- - goodbye
28
- - have a nice day
29
- - see you around
30
- - bye bye
31
- - see you later
32
-
33
- - intent: affirm
34
- examples: |
35
- - yes
36
- - y
37
- - indeed
38
- - of course
39
- - that sounds good
40
- - correct
41
-
42
- - intent: deny
43
- examples: |
44
- - no
45
- - n
46
- - never
47
- - I don't think so
48
- - don't like that
49
- - no way
50
- - not really
51
-
52
- - intent: mood_great
53
- examples: |
54
- - perfect
55
- - great
56
- - amazing
57
- - feeling like a king
58
- - wonderful
59
- - I am feeling very good
60
- - I am great
61
- - I am amazing
62
- - I am going to save the world
63
- - super stoked
64
- - extremely good
65
- - so so perfect
66
- - so good
67
- - so perfect
68
-
69
- - intent: mood_unhappy
70
- examples: |
71
- - my day was horrible
72
- - I am sad
73
- - I don't feel very well
74
- - I am disappointed
75
- - super sad
76
- - I'm so sad
77
- - sad
78
- - very sad
79
- - unhappy
80
- - not good
81
- - not very good
82
- - extremly sad
83
- - so saad
84
- - so sad
85
-
86
- - intent: bot_challenge
87
- examples: |
88
- - are you a bot?
89
- - are you a human?
90
- - am I talking to a bot?
91
- - am I talking to a human?
@@ -1,13 +0,0 @@
1
- version: "3.1"
2
-
3
- rules:
4
-
5
- - rule: Say goodbye anytime the user says goodbye
6
- steps:
7
- - intent: goodbye
8
- - action: utter_goodbye
9
-
10
- - rule: Say 'I am a bot' anytime the user challenges
11
- steps:
12
- - intent: bot_challenge
13
- - action: utter_iamabot
@@ -1,30 +0,0 @@
1
- version: "3.1"
2
-
3
- stories:
4
-
5
- - story: happy path
6
- steps:
7
- - intent: greet
8
- - action: utter_greet
9
- - intent: mood_great
10
- - action: utter_happy
11
-
12
- - story: sad path 1
13
- steps:
14
- - intent: greet
15
- - action: utter_greet
16
- - intent: mood_unhappy
17
- - action: utter_cheer_up
18
- - action: utter_did_that_help
19
- - intent: affirm
20
- - action: utter_happy
21
-
22
- - story: sad path 2
23
- steps:
24
- - intent: greet
25
- - action: utter_greet
26
- - intent: mood_unhappy
27
- - action: utter_cheer_up
28
- - action: utter_did_that_help
29
- - intent: deny
30
- - action: utter_goodbye
@@ -1,34 +0,0 @@
1
- version: "3.1"
2
-
3
- intents:
4
- - greet
5
- - goodbye
6
- - affirm
7
- - deny
8
- - mood_great
9
- - mood_unhappy
10
- - bot_challenge
11
-
12
- responses:
13
- utter_greet:
14
- - text: "Hey! How are you?"
15
-
16
- utter_cheer_up:
17
- - text: "Here is something to cheer you up:"
18
- image: "https://i.imgur.com/nGF1K8f.jpg"
19
-
20
- utter_did_that_help:
21
- - text: "Did that help you?"
22
-
23
- utter_happy:
24
- - text: "Great, carry on!"
25
-
26
- utter_goodbye:
27
- - text: "Bye"
28
-
29
- utter_iamabot:
30
- - text: "I am a bot, powered by Rasa."
31
-
32
- session_config:
33
- session_expiration_time: 60
34
- carry_over_slots_to_new_session: true
@@ -1,91 +0,0 @@
1
- #### This file contains tests to evaluate that your bot behaves as expected.
2
- #### If you want to learn more, please see the docs: https://rasa.com/docs/rasa-pro/nlu-based-assistants/testing-your-assistant
3
-
4
- stories:
5
- - story: happy path 1
6
- steps:
7
- - user: |
8
- hello there!
9
- intent: greet
10
- - action: utter_greet
11
- - user: |
12
- amazing
13
- intent: mood_great
14
- - action: utter_happy
15
-
16
- - story: happy path 2
17
- steps:
18
- - user: |
19
- hello there!
20
- intent: greet
21
- - action: utter_greet
22
- - user: |
23
- amazing
24
- intent: mood_great
25
- - action: utter_happy
26
- - user: |
27
- bye-bye!
28
- intent: goodbye
29
- - action: utter_goodbye
30
-
31
- - story: sad path 1
32
- steps:
33
- - user: |
34
- hello
35
- intent: greet
36
- - action: utter_greet
37
- - user: |
38
- not good
39
- intent: mood_unhappy
40
- - action: utter_cheer_up
41
- - action: utter_did_that_help
42
- - user: |
43
- yes
44
- intent: affirm
45
- - action: utter_happy
46
-
47
- - story: sad path 2
48
- steps:
49
- - user: |
50
- hello
51
- intent: greet
52
- - action: utter_greet
53
- - user: |
54
- not good
55
- intent: mood_unhappy
56
- - action: utter_cheer_up
57
- - action: utter_did_that_help
58
- - user: |
59
- not really
60
- intent: deny
61
- - action: utter_goodbye
62
-
63
- - story: sad path 3
64
- steps:
65
- - user: |
66
- hi
67
- intent: greet
68
- - action: utter_greet
69
- - user: |
70
- very terrible
71
- intent: mood_unhappy
72
- - action: utter_cheer_up
73
- - action: utter_did_that_help
74
- - user: |
75
- no
76
- intent: deny
77
- - action: utter_goodbye
78
-
79
- - story: say goodbye
80
- steps:
81
- - user: |
82
- bye-bye!
83
- intent: goodbye
84
- - action: utter_goodbye
85
-
86
- - story: bot challenge
87
- steps:
88
- - user: |
89
- are you a bot?
90
- intent: bot_challenge
91
- - action: utter_iamabot
@@ -1 +0,0 @@
1
- import{aI as o,aJ as r}from"./index-3a23e736.js";const s=(a,n)=>o.lang.round(r.parse(a)[n]),e=s;export{e as c};
@@ -1 +0,0 @@
1
- import{c as r}from"./graph-4ede11ff.js";var e=4;function a(o){return r(o,e)}export{a as c};
@@ -1 +0,0 @@
1
- import{p as e,f as o}from"./flowDb-956e92f1-10044f05.js";import{f as t,g as a}from"./styles-c10674c1-7b3680cf.js";import{u as i}from"./index-3a23e736.js";import"./graph-4ede11ff.js";import"./layout-dd48f7f4.js";import"./index-3862675e-65549d37.js";import"./clone-edb7f119.js";import"./edges-e0da2a9e-5a8b0749.js";import"./createText-2e5e7dd3-87c4ece5.js";import"./line-1569ad2c.js";import"./array-9f3ba611.js";import"./path-53f90ab3.js";import"./channel-dfa68278.js";const M={parser:e,db:o,renderer:t,styles:a,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,i({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),t.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{M as diagram};