rasa-pro 3.14.0.dev3__py3-none-any.whl → 3.14.0.dev5__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.
- rasa/api.py +0 -5
- rasa/builder/README.md +120 -0
- rasa/builder/auth.py +176 -0
- rasa/builder/config.py +115 -0
- rasa/builder/copilot/constants.py +25 -0
- rasa/builder/copilot/copilot.py +372 -0
- rasa/builder/copilot/copilot_response_handler.py +487 -0
- rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
- rasa/builder/copilot/exceptions.py +20 -0
- rasa/builder/copilot/models.py +431 -0
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +726 -0
- rasa/builder/copilot/telemetry.py +195 -0
- rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
- rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +26 -0
- rasa/builder/document_retrieval/constants.py +15 -0
- rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
- rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
- rasa/builder/document_retrieval/models.py +62 -0
- rasa/builder/download.py +140 -0
- rasa/builder/exceptions.py +55 -0
- rasa/builder/guardrails/__init__.py +1 -0
- rasa/builder/guardrails/constants.py +3 -0
- rasa/builder/guardrails/exceptions.py +4 -0
- rasa/builder/guardrails/lakera.py +206 -0
- rasa/builder/guardrails/models.py +199 -0
- rasa/builder/guardrails/utils.py +305 -0
- rasa/builder/job_manager.py +87 -0
- rasa/builder/jobs.py +234 -0
- rasa/builder/llm_service.py +246 -0
- rasa/builder/logging_utils.py +209 -0
- rasa/builder/main.py +174 -0
- rasa/builder/models.py +197 -0
- rasa/builder/project_generator.py +450 -0
- rasa/builder/project_info.py +72 -0
- rasa/builder/scrape_rasa_docs.py +97 -0
- rasa/builder/service.py +1142 -0
- rasa/builder/shared/tracker_context.py +212 -0
- rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
- rasa/builder/training_service.py +132 -0
- rasa/builder/validation_service.py +93 -0
- rasa/cli/arguments/default_arguments.py +0 -12
- rasa/cli/arguments/run.py +0 -2
- rasa/cli/dialogue_understanding_test.py +0 -4
- rasa/cli/e2e_test.py +0 -4
- rasa/cli/inspect.py +0 -3
- rasa/cli/llm_fine_tuning.py +0 -5
- rasa/cli/project_templates/basic/actions/action_api.py +15 -0
- rasa/cli/project_templates/basic/actions/action_human_handoff.py +44 -0
- rasa/cli/project_templates/basic/config.yml +23 -0
- rasa/cli/project_templates/basic/credentials.yml +34 -0
- rasa/cli/project_templates/basic/data/general/feedback.yml +20 -0
- rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/basic/data/general/hello.yml +7 -0
- rasa/cli/project_templates/basic/data/general/help.yml +6 -0
- rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/basic/data/general/welcome.yml +9 -0
- rasa/cli/project_templates/basic/data/system/pattern_completed.yml +7 -0
- rasa/cli/project_templates/basic/data/system/pattern_correction.yml +7 -0
- rasa/cli/project_templates/basic/data/system/pattern_search.yml +8 -0
- rasa/cli/project_templates/basic/data/system/pattern_session_start.yml +8 -0
- rasa/cli/project_templates/basic/docs/rasa_assistant_qa.txt +65 -0
- rasa/cli/project_templates/basic/docs/template.txt +7 -0
- rasa/cli/project_templates/basic/domain/general/assistant_details.yml +12 -0
- rasa/cli/project_templates/basic/domain/general/bot_identity.yml +5 -0
- rasa/cli/project_templates/basic/domain/general/cannot_handle.yml +5 -0
- rasa/cli/project_templates/basic/domain/general/feedback.yml +28 -0
- rasa/cli/project_templates/basic/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/basic/domain/general/help.yml +5 -0
- rasa/cli/project_templates/basic/domain/general/human_handoff_domain.yml +35 -0
- rasa/cli/project_templates/basic/domain/general/utils.yml +13 -0
- rasa/cli/project_templates/basic/domain/general/welcome.yml +7 -0
- rasa/cli/project_templates/basic/endpoints.yml +73 -0
- rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
- rasa/cli/project_templates/finance/actions/__init__.py +46 -0
- rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
- rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
- rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
- rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
- rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
- rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
- rasa/cli/project_templates/finance/actions/database.py +277 -0
- rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
- rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
- rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
- rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
- rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
- rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
- rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
- rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
- rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
- rasa/cli/project_templates/finance/config.yml +21 -0
- rasa/cli/project_templates/finance/credentials.yml +32 -0
- rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
- rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
- rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
- rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
- rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
- rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
- rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
- rasa/cli/project_templates/finance/csvs/users.csv +4 -0
- rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
- rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
- rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
- rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
- rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
- rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
- rasa/cli/project_templates/finance/data/general/help.yml +9 -0
- rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +5 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
- rasa/cli/project_templates/finance/data/system/source/accounts.json +51 -0
- rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
- rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
- rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
- rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
- rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
- rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
- rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
- rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
- rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
- rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
- rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
- rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
- rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
- rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
- rasa/cli/project_templates/finance/domain/general/assistant_details.yml +12 -0
- rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
- rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
- rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
- rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
- rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
- rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
- rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
- rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
- rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
- rasa/cli/project_templates/finance/endpoints.yml +63 -0
- rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
- rasa/cli/project_templates/telco/actions/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/actions_billing.py +204 -0
- rasa/cli/project_templates/telco/actions/actions_get_data_from_db.py +48 -0
- rasa/cli/project_templates/telco/actions/actions_run_diagnostics.py +28 -0
- rasa/cli/project_templates/telco/actions/actions_session_start.py +18 -0
- rasa/cli/project_templates/telco/config.yml +25 -0
- rasa/cli/project_templates/telco/credentials.yml +33 -0
- rasa/cli/project_templates/telco/csvs/billing.csv +10 -0
- rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
- rasa/cli/project_templates/telco/data/flows/flow_global.yml +5 -0
- rasa/cli/project_templates/telco/data/flows/flow_reboot_router.yml +8 -0
- rasa/cli/project_templates/telco/data/flows/flow_reset_router.yml +7 -0
- rasa/cli/project_templates/telco/data/flows/flow_solve_internet_issue.yml +73 -0
- rasa/cli/project_templates/telco/data/flows/flow_undertand_bill.yml +45 -0
- rasa/cli/project_templates/telco/data/patterns/pattern_completed.yml +7 -0
- rasa/cli/project_templates/telco/data/patterns/pattern_human_handoff.yml +6 -0
- rasa/cli/project_templates/telco/data/patterns/pattern_search.yml +7 -0
- rasa/cli/project_templates/telco/data/patterns/pattern_session_start.yml +9 -0
- rasa/cli/project_templates/telco/docs/reset_vs_rboot_router.txt +1 -0
- rasa/cli/project_templates/telco/docs/restart_router.txt +6 -0
- rasa/cli/project_templates/telco/docs/run_speed_test.txt +6 -0
- rasa/cli/project_templates/telco/domain/domain_global.yml +29 -0
- rasa/cli/project_templates/telco/domain/domain_patterns.yml +17 -0
- rasa/cli/project_templates/telco/domain/domain_reboot_router.yml +20 -0
- rasa/cli/project_templates/telco/domain/domain_reset_router.yml +11 -0
- rasa/cli/project_templates/telco/domain/domain_run_speed_test.yml +24 -0
- rasa/cli/project_templates/telco/domain/domain_solve_internet_issue.yml +74 -0
- rasa/cli/project_templates/telco/domain/domain_undertand_bill.yml +102 -0
- rasa/cli/project_templates/telco/endpoints.yml +60 -0
- rasa/{dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 → cli/project_templates/telco/prompts/command-generator.jinja2} +3 -7
- rasa/cli/project_templates/telco/tests/e2e_results_failed.yml +62 -0
- rasa/cli/project_templates/telco/tests/e2e_results_passed.yml +130 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/billing_test_cases.yml +68 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/global_test_cases.yml +13 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/internet_slow_test_case.yml +47 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/out_of_scope_test_case.yml +21 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/patterns_test_cases.yml +15 -0
- rasa/cli/project_templates/tutorial/config.yml +2 -1
- rasa/cli/run.py +0 -4
- rasa/cli/scaffold.py +46 -2
- rasa/cli/shell.py +0 -3
- rasa/constants.py +0 -6
- rasa/core/actions/action.py +2 -43
- rasa/core/agent.py +0 -16
- rasa/core/available_endpoints.py +0 -30
- rasa/core/channels/channel.py +4 -3
- rasa/core/channels/constants.py +3 -0
- rasa/core/channels/development_inspector.py +1 -1
- rasa/core/channels/inspector/dist/assets/{arc-2e78c586.js → arc-18042c22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-806b712e.js → blockDiagram-38ab4fdb-fdd6bcfa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-0745efa9.js → c4Diagram-3d4e48cf-f5ae6786.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-7bd1082b.js → classDiagram-70f12bd4-81efba3e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-d937ba49.js → classDiagram-v2-f2320105-3b6b6a92.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-a2a564ca.js → createText-2e5e7dd3-31422447.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b5256940.js → edges-e0da2a9e-518a90db.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-e6883ad2.js → erDiagram-9861fffd-a6d3c25a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e576fc02.js → flowDb-956e92f1-e048c2be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-2e298d01.js → flowDiagram-66a62f08-c7474c91.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-dd7b150a.js → flowchart-elk-definition-4a651766-cb4d8723.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-5b79575c.js → ganttDiagram-c361ad54-346636a2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-3016f40a.js → gitGraphDiagram-72cf32ee-7c508874.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-3e19170f.js → graph-14702d8a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-eb9c86de.js → index-3862675e-f18b534b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +1335 -0
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-b4280e4d.js → infoDiagram-f8f76790-64154b83.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-556091f8.js → journeyDiagram-49397b02-833a5f95.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-08436411.js → layout-5a3b2123.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-683c4f3b.js → line-2272a8c7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-cee6d791.js → linear-35bcf273.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-a0bf0b1a.js → mindmap-definition-fc14e90a-92dcb0e9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-3730d5c4.js → pieDiagram-8a3498a8-94dbc900.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-12a20fed.js → quadrantDiagram-120e2f19-8b7a9c33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-b9732102.js → requirementDiagram-deff3bca-6f7eab81.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-a2e72776.js → sankeyDiagram-04a897e0-f43e581d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-8b7a76bb.js → sequenceDiagram-704730f1-0bcbefc3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-e65853ac.js → stateDiagram-587899a1-b8a74083.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-6f58a44b.js → stateDiagram-v2-d93cdb3a-2070218f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-df25b934.js → styles-6aaf32cf-f1d54e34.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-88357141.js → styles-9a916d00-980de489.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-d600174d.js → styles-c10674c1-3c03abde.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-4adc3e0b.js → svgDrawCommon-08f97a94-46ba068f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-42816fa1.js → timeline-definition-85554ec2-901f5e3d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-621eb66a.js → xychartDiagram-e933f94c-acbc628a.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +2 -2
- rasa/core/channels/inspector/index.html +1 -1
- rasa/core/channels/inspector/src/App.tsx +10 -11
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +12 -3
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +5 -7
- rasa/core/channels/inspector/src/helpers/formatters.ts +3 -24
- rasa/core/channels/inspector/src/theme/base/styles.ts +1 -19
- rasa/core/channels/inspector/src/types.ts +0 -4
- rasa/core/channels/socketio.py +212 -51
- rasa/core/channels/studio_chat.py +43 -23
- rasa/core/channels/voice_stream/voice_channel.py +5 -3
- rasa/core/constants.py +0 -4
- rasa/core/policies/enterprise_search_policy.py +6 -11
- rasa/core/policies/flow_policy.py +4 -4
- rasa/core/policies/flows/flow_executor.py +45 -415
- rasa/core/processor.py +1 -6
- rasa/core/run.py +14 -11
- rasa/core/utils.py +1 -21
- rasa/dialogue_understanding/commands/__init__.py +0 -8
- rasa/dialogue_understanding/commands/cancel_flow_command.py +4 -97
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +0 -11
- rasa/dialogue_understanding/commands/clarify_command.py +0 -10
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +0 -11
- rasa/dialogue_understanding/commands/start_flow_command.py +8 -164
- rasa/dialogue_understanding/commands/utils.py +2 -6
- rasa/dialogue_understanding/generator/command_parser.py +0 -4
- rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +12 -50
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +6 -7
- rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +6 -7
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +2 -41
- rasa/dialogue_understanding/patterns/continue_interrupted.py +1 -163
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +8 -52
- rasa/dialogue_understanding/processor/command_processor.py +15 -31
- rasa/dialogue_understanding/stack/dialogue_stack.py +2 -123
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +0 -57
- rasa/dialogue_understanding/stack/utils.py +2 -17
- rasa/dialogue_understanding_test/du_test_runner.py +2 -7
- rasa/e2e_test/e2e_test_runner.py +0 -5
- rasa/engine/storage/local_model_storage.py +45 -2
- rasa/model_manager/model_api.py +4 -5
- rasa/model_manager/runner_service.py +1 -1
- rasa/model_manager/socket_bridge.py +20 -14
- rasa/model_manager/trainer_service.py +12 -9
- rasa/model_manager/utils.py +1 -29
- rasa/server.py +0 -10
- rasa/shared/constants.py +0 -5
- rasa/shared/core/constants.py +1 -12
- rasa/shared/core/domain.py +58 -11
- rasa/shared/core/events.py +0 -319
- rasa/shared/core/flows/flow_step.py +7 -1
- rasa/shared/core/flows/flows_list.py +2 -2
- rasa/shared/core/flows/flows_yaml_schema.json +186 -112
- rasa/shared/core/flows/steps/call.py +5 -53
- rasa/shared/core/flows/validation.py +7 -46
- rasa/shared/core/flows/yaml_flows_io.py +16 -8
- rasa/shared/core/slots.py +4 -0
- rasa/shared/importers/importer.py +6 -0
- rasa/shared/importers/utils.py +77 -1
- rasa/shared/providers/_utils.py +60 -44
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
- rasa/shared/providers/llm/_base_litellm_client.py +7 -39
- rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
- rasa/shared/providers/llm/litellm_router_llm_client.py +4 -8
- rasa/shared/providers/llm/llm_client.py +3 -7
- rasa/shared/providers/llm/llm_response.py +0 -49
- rasa/shared/providers/llm/self_hosted_llm_client.py +4 -8
- rasa/shared/utils/llm.py +5 -28
- rasa/shared/utils/schemas/events.py +0 -42
- rasa/studio/upload.py +16 -47
- rasa/telemetry.py +97 -23
- rasa/tracing/instrumentation/instrumentation.py +2 -4
- rasa/utils/common.py +0 -79
- rasa/utils/io.py +27 -9
- rasa/utils/json_utils.py +6 -1
- rasa/utils/log_utils.py +5 -1
- rasa/utils/openapi.py +144 -0
- rasa/validator.py +7 -3
- rasa/version.py +1 -1
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/METADATA +3 -3
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/RECORD +405 -174
- rasa/agents/agent_factory.py +0 -122
- rasa/agents/agent_manager.py +0 -162
- rasa/agents/constants.py +0 -32
- rasa/agents/core/agent_protocol.py +0 -108
- rasa/agents/core/types.py +0 -70
- rasa/agents/exceptions.py +0 -8
- rasa/agents/protocol/__init__.py +0 -5
- rasa/agents/protocol/a2a/a2a_agent.py +0 -51
- rasa/agents/protocol/mcp/mcp_base_agent.py +0 -674
- rasa/agents/protocol/mcp/mcp_open_agent.py +0 -276
- rasa/agents/protocol/mcp/mcp_task_agent.py +0 -469
- rasa/agents/schemas/__init__.py +0 -12
- rasa/agents/schemas/agent_input.py +0 -38
- rasa/agents/schemas/agent_output.py +0 -26
- rasa/agents/schemas/agent_tool_result.py +0 -51
- rasa/agents/schemas/agent_tool_schema.py +0 -134
- rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +0 -15
- rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +0 -17
- rasa/agents/utils.py +0 -72
- rasa/core/available_agents.py +0 -196
- rasa/core/channels/inspector/dist/assets/channel-c436ca7c.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-50dd656b.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-2b2aeaf8.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-1bd9135e.js +0 -1353
- rasa/core/policies/flows/mcp_tool_executor.py +0 -277
- rasa/dialogue_understanding/commands/continue_agent_command.py +0 -91
- rasa/dialogue_understanding/commands/restart_agent_command.py +0 -162
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +0 -61
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +0 -81
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +0 -81
- rasa/shared/agents/utils.py +0 -35
- rasa/shared/utils/mcp/server_connection.py +0 -157
- /rasa/{agents → builder}/__init__.py +0 -0
- /rasa/{agents/core → builder/copilot}/__init__.py +0 -0
- /rasa/{agents/protocol/a2a → builder/copilot/prompts}/__init__.py +0 -0
- /rasa/{agents/protocol/mcp → builder/copilot/templated_messages}/__init__.py +0 -0
- /rasa/{agents/templates → builder/document_retrieval}/__init__.py +0 -0
- /rasa/{shared/agents → cli/project_templates/finance/actions/accounts}/__init__.py +0 -0
- /rasa/{shared/utils/mcp → cli/project_templates/finance/actions/cards}/__init__.py +0 -0
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev3.dist-info → rasa_pro-3.14.0.dev5.dist-info}/entry_points.txt +0 -0
rasa/server.py
CHANGED
|
@@ -44,7 +44,6 @@ import rasa.utils.endpoints
|
|
|
44
44
|
import rasa.utils.io
|
|
45
45
|
from rasa.constants import MINIMUM_COMPATIBLE_VERSION
|
|
46
46
|
from rasa.core.agent import Agent
|
|
47
|
-
from rasa.core.available_agents import AvailableAgents
|
|
48
47
|
from rasa.core.available_endpoints import AvailableEndpoints
|
|
49
48
|
from rasa.core.channels.channel import (
|
|
50
49
|
CollectingOutputChannel,
|
|
@@ -694,7 +693,6 @@ def create_app(
|
|
|
694
693
|
jwt_private_key: Optional[Text] = None,
|
|
695
694
|
jwt_method: Text = "HS256",
|
|
696
695
|
endpoints: Optional[AvailableEndpoints] = None,
|
|
697
|
-
sub_agents: Optional[AvailableAgents] = None,
|
|
698
696
|
is_inspector_enabled: bool = False,
|
|
699
697
|
) -> Sanic:
|
|
700
698
|
"""Class representing a Rasa HTTP server."""
|
|
@@ -730,7 +728,6 @@ def create_app(
|
|
|
730
728
|
user_id="username",
|
|
731
729
|
)
|
|
732
730
|
|
|
733
|
-
app.ctx.sub_agents = sub_agents
|
|
734
731
|
app.ctx.agent = agent
|
|
735
732
|
# Initialize shared object of type unsigned int for tracking
|
|
736
733
|
# the number of active training processes
|
|
@@ -1466,13 +1463,6 @@ def create_app(
|
|
|
1466
1463
|
flows = await processor.get_flows()
|
|
1467
1464
|
return response.json(flows.as_json_list())
|
|
1468
1465
|
|
|
1469
|
-
@app.get("/sub-agents")
|
|
1470
|
-
@requires_auth(app, auth_token)
|
|
1471
|
-
async def get_sub_agents(request: Request) -> HTTPResponse:
|
|
1472
|
-
"""Get all the sub-agents currently stored by the agent."""
|
|
1473
|
-
sub_agents = app.ctx.sub_agents
|
|
1474
|
-
return response.json(sub_agents.as_json_list())
|
|
1475
|
-
|
|
1476
1466
|
@app.get("/domain")
|
|
1477
1467
|
@requires_auth(app, auth_token)
|
|
1478
1468
|
@ensure_loaded_agent(app)
|
rasa/shared/constants.py
CHANGED
|
@@ -345,8 +345,6 @@ PAYLOAD = "payload"
|
|
|
345
345
|
# Used for LLM command generation
|
|
346
346
|
ROLE_USER = "user"
|
|
347
347
|
ROLE_SYSTEM = "system"
|
|
348
|
-
ROLE_ASSISTANT = "assistant"
|
|
349
|
-
ROLE_TOOL = "tool"
|
|
350
348
|
|
|
351
349
|
# Used for key values in ValidateSlotPatternFlowStackFrame
|
|
352
350
|
REFILL_UTTER = "refill_utter"
|
|
@@ -361,6 +359,3 @@ FAQ_INPUT_DATA_QUESTION_LINE_PREFIX = "Q:"
|
|
|
361
359
|
FAQ_INPUT_DATA_ANSWER_LINE_PREFIX = "A:"
|
|
362
360
|
FAQ_DOCUMENT_ENTRY_SEPARATOR = "\n\n"
|
|
363
361
|
FAQ_DOCUMENT_LINE_SEPARATOR = "\n"
|
|
364
|
-
|
|
365
|
-
# Constants for the MCP server
|
|
366
|
-
KEY_TOOL_CALLS = "tool_calls"
|
rasa/shared/core/constants.py
CHANGED
|
@@ -30,7 +30,6 @@ LOOP_NAME = "name"
|
|
|
30
30
|
ACTION_LISTEN_NAME = "action_listen"
|
|
31
31
|
ACTION_RESTART_NAME = "action_restart"
|
|
32
32
|
ACTION_SEND_TEXT_NAME = "action_send_text"
|
|
33
|
-
ACTION_AGENT_REQUEST_USER_INPUT_NAME = "action_agent_request_user_input"
|
|
34
33
|
ACTION_SESSION_START_NAME = "action_session_start"
|
|
35
34
|
ACTION_DEFAULT_FALLBACK_NAME = "action_default_fallback"
|
|
36
35
|
ACTION_DEACTIVATE_LOOP_NAME = "action_deactivate_loop"
|
|
@@ -53,16 +52,10 @@ ACTION_TRIGGER_CHITCHAT = "action_trigger_chitchat"
|
|
|
53
52
|
ACTION_RESET_ROUTING = "action_reset_routing"
|
|
54
53
|
ACTION_HANGUP = "action_hangup"
|
|
55
54
|
ACTION_REPEAT_BOT_MESSAGES = "action_repeat_bot_messages"
|
|
56
|
-
ACTION_CONTINUE_INTERRUPTED_FLOW = "action_continue_interrupted_flow"
|
|
57
|
-
ACTION_SET_INTERRUPTED_FLOWS = "action_set_interrupted_flows"
|
|
58
|
-
ACTION_CANCEL_INTERRUPTED_FLOW = "action_cancel_interrupted_flow"
|
|
59
|
-
ACTION_ASK_INTERRUPTED_FLOW_TO_CONTINUE = "action_ask_interrupted_flow_to_continue"
|
|
60
55
|
|
|
61
56
|
ACTION_METADATA_EXECUTION_SUCCESS = "execution_success"
|
|
62
57
|
ACTION_METADATA_EXECUTION_ERROR_MESSAGE = "execution_error_message"
|
|
63
58
|
|
|
64
|
-
ACTION_METADATA_MESSAGE_KEY = "message"
|
|
65
|
-
ACTION_METADATA_TEXT_KEY = "text"
|
|
66
59
|
|
|
67
60
|
DEFAULT_ACTION_NAMES = [
|
|
68
61
|
ACTION_LISTEN_NAME,
|
|
@@ -77,7 +70,6 @@ DEFAULT_ACTION_NAMES = [
|
|
|
77
70
|
ACTION_UNLIKELY_INTENT_NAME,
|
|
78
71
|
ACTION_BACK_NAME,
|
|
79
72
|
ACTION_SEND_TEXT_NAME,
|
|
80
|
-
ACTION_AGENT_REQUEST_USER_INPUT_NAME,
|
|
81
73
|
RULE_SNIPPET_ACTION_NAME,
|
|
82
74
|
ACTION_EXTRACT_SLOTS,
|
|
83
75
|
ACTION_CANCEL_FLOW,
|
|
@@ -90,10 +82,6 @@ DEFAULT_ACTION_NAMES = [
|
|
|
90
82
|
ACTION_RESET_ROUTING,
|
|
91
83
|
ACTION_HANGUP,
|
|
92
84
|
ACTION_REPEAT_BOT_MESSAGES,
|
|
93
|
-
ACTION_CONTINUE_INTERRUPTED_FLOW,
|
|
94
|
-
ACTION_SET_INTERRUPTED_FLOWS,
|
|
95
|
-
ACTION_CANCEL_INTERRUPTED_FLOW,
|
|
96
|
-
ACTION_ASK_INTERRUPTED_FLOW_TO_CONTINUE,
|
|
97
85
|
]
|
|
98
86
|
|
|
99
87
|
ACTION_SHOULD_SEND_DOMAIN = "send_domain"
|
|
@@ -148,6 +136,7 @@ DEFAULT_SLOT_NAMES = {
|
|
|
148
136
|
FLOW_HASHES_SLOT,
|
|
149
137
|
}
|
|
150
138
|
|
|
139
|
+
|
|
151
140
|
SLOT_MAPPINGS = "mappings"
|
|
152
141
|
MAPPING_CONDITIONS = "conditions"
|
|
153
142
|
KEY_MAPPING_TYPE = "type"
|
rasa/shared/core/domain.py
CHANGED
|
@@ -98,6 +98,8 @@ IS_RETRIEVAL_INTENT_KEY = "is_retrieval_intent"
|
|
|
98
98
|
ENTITY_ROLES_KEY = "roles"
|
|
99
99
|
ENTITY_GROUPS_KEY = "groups"
|
|
100
100
|
ENTITY_FEATURIZATION_KEY = "influence_conversation"
|
|
101
|
+
STORE_ENTITIES_AS_SLOTS_KEY = "store_entities_as_slots"
|
|
102
|
+
DOMAIN_CONFIG_KEY = "config"
|
|
101
103
|
|
|
102
104
|
KEY_SLOTS = "slots"
|
|
103
105
|
KEY_INTENTS = "intents"
|
|
@@ -146,6 +148,8 @@ MERGE_FUNC_MAPPING: Dict[Text, Callable[..., Any]] = {
|
|
|
146
148
|
KEY_FORMS: rasa.shared.utils.common.merge_dicts,
|
|
147
149
|
}
|
|
148
150
|
|
|
151
|
+
DEFAULT_STORE_ENTITIES_AS_SLOTS = True
|
|
152
|
+
|
|
149
153
|
DICT_DATA_KEYS = [
|
|
150
154
|
key
|
|
151
155
|
for key, value in MERGE_FUNC_MAPPING.items()
|
|
@@ -318,7 +322,7 @@ class Domain:
|
|
|
318
322
|
actions = cls._collect_action_names(domain_actions)
|
|
319
323
|
|
|
320
324
|
additional_arguments = {
|
|
321
|
-
**data.get(
|
|
325
|
+
**data.get(DOMAIN_CONFIG_KEY, {}),
|
|
322
326
|
"actions_which_explicitly_need_domain": (
|
|
323
327
|
cls._collect_actions_which_explicitly_need_domain(domain_actions)
|
|
324
328
|
),
|
|
@@ -468,9 +472,9 @@ class Domain:
|
|
|
468
472
|
return domain_dict
|
|
469
473
|
|
|
470
474
|
if override:
|
|
471
|
-
config = domain_dict.get(
|
|
475
|
+
config = domain_dict.get(DOMAIN_CONFIG_KEY, {})
|
|
472
476
|
for key, val in config.items():
|
|
473
|
-
combined[
|
|
477
|
+
combined[DOMAIN_CONFIG_KEY][key] = val
|
|
474
478
|
|
|
475
479
|
if (
|
|
476
480
|
override
|
|
@@ -510,8 +514,8 @@ class Domain:
|
|
|
510
514
|
def partial_merge(self, other: Domain) -> Domain:
|
|
511
515
|
"""Returns a new Domain with intersection-based merging.
|
|
512
516
|
|
|
513
|
-
|
|
514
|
-
|
|
517
|
+
For each domain section only overwrite items that already exist in self.
|
|
518
|
+
Brand-new items in `other` are ignored.
|
|
515
519
|
|
|
516
520
|
Args:
|
|
517
521
|
other: The domain to merge with.
|
|
@@ -545,7 +549,7 @@ class Domain:
|
|
|
545
549
|
def difference(self, other: Domain) -> Domain:
|
|
546
550
|
"""Returns a new Domain containing items in `self` that are NOT in `other`.
|
|
547
551
|
|
|
548
|
-
|
|
552
|
+
Uses simple equality checks for dict/list items.
|
|
549
553
|
|
|
550
554
|
Args:
|
|
551
555
|
other: The domain to compare with.
|
|
@@ -598,9 +602,16 @@ class Domain:
|
|
|
598
602
|
) -> Dict:
|
|
599
603
|
# add the config, session_config and training data version defaults
|
|
600
604
|
# if not included in the original domain dict
|
|
601
|
-
if
|
|
605
|
+
if (
|
|
606
|
+
DOMAIN_CONFIG_KEY not in data
|
|
607
|
+
and store_entities_as_slots != DEFAULT_STORE_ENTITIES_AS_SLOTS
|
|
608
|
+
):
|
|
602
609
|
data.update(
|
|
603
|
-
{
|
|
610
|
+
{
|
|
611
|
+
DOMAIN_CONFIG_KEY: {
|
|
612
|
+
STORE_ENTITIES_AS_SLOTS_KEY: store_entities_as_slots
|
|
613
|
+
}
|
|
614
|
+
}
|
|
604
615
|
)
|
|
605
616
|
|
|
606
617
|
if SESSION_CONFIG_KEY not in data:
|
|
@@ -937,7 +948,7 @@ class Domain:
|
|
|
937
948
|
forms: Union[Dict[Text, Any], List[Text]],
|
|
938
949
|
data: Dict,
|
|
939
950
|
action_texts: Optional[List[Text]] = None,
|
|
940
|
-
store_entities_as_slots: bool =
|
|
951
|
+
store_entities_as_slots: bool = DEFAULT_STORE_ENTITIES_AS_SLOTS,
|
|
941
952
|
session_config: SessionConfig = SessionConfig.default(),
|
|
942
953
|
**kwargs: Any,
|
|
943
954
|
) -> None:
|
|
@@ -1711,9 +1722,45 @@ class Domain:
|
|
|
1711
1722
|
else:
|
|
1712
1723
|
return True
|
|
1713
1724
|
|
|
1714
|
-
def
|
|
1725
|
+
def _uses_custom_session_config(self) -> bool:
|
|
1726
|
+
"""Check if the domain uses a custom session config."""
|
|
1727
|
+
return self._data.get(SESSION_CONFIG_KEY) != SessionConfig.default().as_dict()
|
|
1728
|
+
|
|
1729
|
+
def _uses_custom_domain_config(self) -> bool:
|
|
1730
|
+
"""Check if the domain uses a custom domain config."""
|
|
1731
|
+
return self._data.get(DOMAIN_CONFIG_KEY) != {
|
|
1732
|
+
STORE_ENTITIES_AS_SLOTS_KEY: DEFAULT_STORE_ENTITIES_AS_SLOTS
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
def _cleaned_json_data(self) -> Dict[Text, Any]:
|
|
1736
|
+
"""Remove default values from the domain data.
|
|
1737
|
+
|
|
1738
|
+
Only retains data that was customized by the user.
|
|
1739
|
+
|
|
1740
|
+
Returns:
|
|
1741
|
+
A cleaned dictionary version of the domain.
|
|
1742
|
+
"""
|
|
1743
|
+
cleaned_data = copy.deepcopy(self._data)
|
|
1744
|
+
|
|
1745
|
+
# Remove default config if it only contains store_entities_as_slots: False
|
|
1746
|
+
if DOMAIN_CONFIG_KEY in cleaned_data and not self._uses_custom_domain_config():
|
|
1747
|
+
del cleaned_data[DOMAIN_CONFIG_KEY]
|
|
1748
|
+
|
|
1749
|
+
# Remove default session config if it matches the default values
|
|
1750
|
+
if (
|
|
1751
|
+
SESSION_CONFIG_KEY in cleaned_data
|
|
1752
|
+
and not self._uses_custom_session_config()
|
|
1753
|
+
):
|
|
1754
|
+
del cleaned_data[SESSION_CONFIG_KEY]
|
|
1755
|
+
|
|
1756
|
+
return cleaned_data
|
|
1757
|
+
|
|
1758
|
+
def as_dict(self, should_clean_json: bool = False) -> Dict[Text, Any]:
|
|
1715
1759
|
"""Return serialized `Domain`."""
|
|
1716
|
-
|
|
1760
|
+
if should_clean_json:
|
|
1761
|
+
return self._cleaned_json_data()
|
|
1762
|
+
else:
|
|
1763
|
+
return self._data
|
|
1717
1764
|
|
|
1718
1765
|
@staticmethod
|
|
1719
1766
|
def get_responses_with_multilines(
|
rasa/shared/core/events.py
CHANGED
|
@@ -2646,325 +2646,6 @@ class FlowCancelled(SkipEventInMDStoryMixin):
|
|
|
2646
2646
|
raise ValueError(f"Failed to parse flow_cancelled event. {e}")
|
|
2647
2647
|
|
|
2648
2648
|
|
|
2649
|
-
class AgentCompleted(SkipEventInMDStoryMixin):
|
|
2650
|
-
"""Mark the completion of an agent."""
|
|
2651
|
-
|
|
2652
|
-
type_name = "agent_completed"
|
|
2653
|
-
|
|
2654
|
-
def __init__(
|
|
2655
|
-
self,
|
|
2656
|
-
agent_id: str,
|
|
2657
|
-
flow_id: str,
|
|
2658
|
-
status: Optional[str] = None,
|
|
2659
|
-
timestamp: Optional[float] = None,
|
|
2660
|
-
metadata: Optional[Dict[str, Any]] = None,
|
|
2661
|
-
) -> None:
|
|
2662
|
-
self.agent_id = agent_id
|
|
2663
|
-
self.flow_id = flow_id
|
|
2664
|
-
self.status = status
|
|
2665
|
-
super().__init__(timestamp, metadata)
|
|
2666
|
-
|
|
2667
|
-
def __repr__(self) -> Text:
|
|
2668
|
-
"""Returns event as string for debugging."""
|
|
2669
|
-
return (
|
|
2670
|
-
f"AgentCompleted(agent: {self.agent_id}, flow: {self.flow_id}, "
|
|
2671
|
-
f"status: {self.status})"
|
|
2672
|
-
)
|
|
2673
|
-
|
|
2674
|
-
def __str__(self) -> str:
|
|
2675
|
-
"""Returns event as human-readable string."""
|
|
2676
|
-
return (
|
|
2677
|
-
f"{self.__class__.__name__}({self.agent_id}, {self.flow_id}, {self.status})"
|
|
2678
|
-
)
|
|
2679
|
-
|
|
2680
|
-
def __hash__(self) -> int:
|
|
2681
|
-
"""Returns unique hash for event."""
|
|
2682
|
-
return hash((self.agent_id, self.flow_id, self.status))
|
|
2683
|
-
|
|
2684
|
-
def __eq__(self, other: Any) -> bool:
|
|
2685
|
-
"""Compares object with other object."""
|
|
2686
|
-
if not isinstance(other, AgentCompleted):
|
|
2687
|
-
return NotImplemented
|
|
2688
|
-
return (self.agent_id, self.flow_id, self.status) == (
|
|
2689
|
-
other.agent_id,
|
|
2690
|
-
other.flow_id,
|
|
2691
|
-
other.status,
|
|
2692
|
-
)
|
|
2693
|
-
|
|
2694
|
-
def as_dict(self) -> Dict[str, Any]:
|
|
2695
|
-
"""Returns serialized event."""
|
|
2696
|
-
serialized = super().as_dict()
|
|
2697
|
-
serialized.update(
|
|
2698
|
-
{"agent_id": self.agent_id, "flow_id": self.flow_id, "status": self.status}
|
|
2699
|
-
)
|
|
2700
|
-
return serialized
|
|
2701
|
-
|
|
2702
|
-
@classmethod
|
|
2703
|
-
def _from_parameters(cls, parameters: Dict[str, Any]) -> "AgentCompleted":
|
|
2704
|
-
if "agent_id" not in parameters:
|
|
2705
|
-
raise ValueError(
|
|
2706
|
-
"Failed to parse agent_completed event: agent_id is required"
|
|
2707
|
-
)
|
|
2708
|
-
if "flow_id" not in parameters:
|
|
2709
|
-
raise ValueError(
|
|
2710
|
-
"Failed to parse agent_completed event: flow_id is required"
|
|
2711
|
-
)
|
|
2712
|
-
|
|
2713
|
-
return AgentCompleted(
|
|
2714
|
-
parameters["agent_id"],
|
|
2715
|
-
parameters["flow_id"],
|
|
2716
|
-
parameters.get("status"),
|
|
2717
|
-
parameters.get("timestamp"),
|
|
2718
|
-
parameters.get("metadata"),
|
|
2719
|
-
)
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
class AgentStarted(SkipEventInMDStoryMixin):
|
|
2723
|
-
"""Mark the start of an agent."""
|
|
2724
|
-
|
|
2725
|
-
type_name = "agent_started"
|
|
2726
|
-
|
|
2727
|
-
def __init__(
|
|
2728
|
-
self,
|
|
2729
|
-
agent_id: str,
|
|
2730
|
-
flow_id: str,
|
|
2731
|
-
timestamp: Optional[float] = None,
|
|
2732
|
-
metadata: Optional[Dict[str, Any]] = None,
|
|
2733
|
-
) -> None:
|
|
2734
|
-
self.agent_id = agent_id
|
|
2735
|
-
self.flow_id = flow_id
|
|
2736
|
-
super().__init__(timestamp, metadata)
|
|
2737
|
-
|
|
2738
|
-
def __repr__(self) -> str:
|
|
2739
|
-
"""Returns event as string for debugging."""
|
|
2740
|
-
return f"AgentStarted(agent: {self.agent_id}, flow: {self.flow_id})"
|
|
2741
|
-
|
|
2742
|
-
def __str__(self) -> str:
|
|
2743
|
-
"""Returns event as human-readable string."""
|
|
2744
|
-
return f"{self.__class__.__name__}({self.agent_id}, {self.flow_id})"
|
|
2745
|
-
|
|
2746
|
-
def __hash__(self) -> int:
|
|
2747
|
-
"""Returns unique hash for event."""
|
|
2748
|
-
return hash((self.agent_id, self.flow_id))
|
|
2749
|
-
|
|
2750
|
-
def __eq__(self, other: Any) -> bool:
|
|
2751
|
-
"""Compares object with other object."""
|
|
2752
|
-
if not isinstance(other, AgentStarted):
|
|
2753
|
-
return NotImplemented
|
|
2754
|
-
return (self.agent_id, self.flow_id) == (other.agent_id, other.flow_id)
|
|
2755
|
-
|
|
2756
|
-
def as_dict(self) -> Dict[str, Any]:
|
|
2757
|
-
"""Returns serialized event."""
|
|
2758
|
-
serialized = super().as_dict()
|
|
2759
|
-
serialized.update({"agent_id": self.agent_id, "flow_id": self.flow_id})
|
|
2760
|
-
return serialized
|
|
2761
|
-
|
|
2762
|
-
@classmethod
|
|
2763
|
-
def _from_parameters(cls, parameters: Dict[str, Any]) -> "AgentStarted":
|
|
2764
|
-
if "agent_id" not in parameters:
|
|
2765
|
-
raise ValueError(
|
|
2766
|
-
"Failed to parse agent_started event: agent_id is required"
|
|
2767
|
-
)
|
|
2768
|
-
if "flow_id" not in parameters:
|
|
2769
|
-
raise ValueError("Failed to parse agent_started event: flow_id is required")
|
|
2770
|
-
|
|
2771
|
-
return AgentStarted(
|
|
2772
|
-
parameters["agent_id"],
|
|
2773
|
-
parameters["flow_id"],
|
|
2774
|
-
parameters.get("timestamp"),
|
|
2775
|
-
parameters.get("metadata"),
|
|
2776
|
-
)
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
class AgentInterrupted(SkipEventInMDStoryMixin):
|
|
2780
|
-
"""Mark the interruption of an agent."""
|
|
2781
|
-
|
|
2782
|
-
type_name = "agent_interrupted"
|
|
2783
|
-
|
|
2784
|
-
def __init__(
|
|
2785
|
-
self,
|
|
2786
|
-
agent_id: str,
|
|
2787
|
-
flow_id: str,
|
|
2788
|
-
timestamp: Optional[float] = None,
|
|
2789
|
-
metadata: Optional[Dict[str, Any]] = None,
|
|
2790
|
-
) -> None:
|
|
2791
|
-
self.agent_id = agent_id
|
|
2792
|
-
self.flow_id = flow_id
|
|
2793
|
-
super().__init__(timestamp, metadata)
|
|
2794
|
-
|
|
2795
|
-
def __repr__(self) -> str:
|
|
2796
|
-
"""Returns event as string for debugging."""
|
|
2797
|
-
return f"AgentInterrupted(agent: {self.agent_id}, flow: {self.flow_id})"
|
|
2798
|
-
|
|
2799
|
-
def __str__(self) -> str:
|
|
2800
|
-
"""Returns event as human-readable string."""
|
|
2801
|
-
return f"{self.__class__.__name__}({self.agent_id}, {self.flow_id})"
|
|
2802
|
-
|
|
2803
|
-
def __hash__(self) -> int:
|
|
2804
|
-
"""Returns unique hash for event."""
|
|
2805
|
-
return hash((self.agent_id, self.flow_id))
|
|
2806
|
-
|
|
2807
|
-
def __eq__(self, other: Any) -> bool:
|
|
2808
|
-
"""Compares object with other object."""
|
|
2809
|
-
if not isinstance(other, AgentInterrupted):
|
|
2810
|
-
return NotImplemented
|
|
2811
|
-
return (self.agent_id, self.flow_id) == (other.agent_id, other.flow_id)
|
|
2812
|
-
|
|
2813
|
-
def as_dict(self) -> Dict[str, Any]:
|
|
2814
|
-
"""Returns serialized event."""
|
|
2815
|
-
serialized = super().as_dict()
|
|
2816
|
-
serialized.update({"agent_id": self.agent_id, "flow_id": self.flow_id})
|
|
2817
|
-
return serialized
|
|
2818
|
-
|
|
2819
|
-
@classmethod
|
|
2820
|
-
def _from_parameters(cls, parameters: Dict[str, Any]) -> "AgentInterrupted":
|
|
2821
|
-
if "agent_id" not in parameters:
|
|
2822
|
-
raise ValueError(
|
|
2823
|
-
"Failed to parse agent_interrupted event: agent_id is required"
|
|
2824
|
-
)
|
|
2825
|
-
if "flow_id" not in parameters:
|
|
2826
|
-
raise ValueError(
|
|
2827
|
-
"Failed to parse agent_interrupted event: flow_id is required"
|
|
2828
|
-
)
|
|
2829
|
-
|
|
2830
|
-
return AgentInterrupted(
|
|
2831
|
-
parameters["agent_id"],
|
|
2832
|
-
parameters["flow_id"],
|
|
2833
|
-
parameters.get("timestamp"),
|
|
2834
|
-
parameters.get("metadata"),
|
|
2835
|
-
)
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
class AgentCancelled(SkipEventInMDStoryMixin):
|
|
2839
|
-
"""Mark the cancellation of an agent."""
|
|
2840
|
-
|
|
2841
|
-
type_name = "agent_cancelled"
|
|
2842
|
-
|
|
2843
|
-
def __init__(
|
|
2844
|
-
self,
|
|
2845
|
-
agent_id: str,
|
|
2846
|
-
flow_id: str,
|
|
2847
|
-
reason: Optional[str] = None,
|
|
2848
|
-
timestamp: Optional[float] = None,
|
|
2849
|
-
metadata: Optional[Dict[str, Any]] = None,
|
|
2850
|
-
) -> None:
|
|
2851
|
-
self.agent_id = agent_id
|
|
2852
|
-
self.flow_id = flow_id
|
|
2853
|
-
self.reason = reason
|
|
2854
|
-
super().__init__(timestamp, metadata)
|
|
2855
|
-
|
|
2856
|
-
def __repr__(self) -> str:
|
|
2857
|
-
"""Returns event as string for debugging."""
|
|
2858
|
-
return (
|
|
2859
|
-
f"AgentCancelled(agent: {self.agent_id}, flow: {self.flow_id}, "
|
|
2860
|
-
f"reason: {self.reason})"
|
|
2861
|
-
)
|
|
2862
|
-
|
|
2863
|
-
def __str__(self) -> str:
|
|
2864
|
-
"""Returns event as human-readable string."""
|
|
2865
|
-
return (
|
|
2866
|
-
f"{self.__class__.__name__}({self.agent_id}, {self.flow_id}, {self.reason})"
|
|
2867
|
-
)
|
|
2868
|
-
|
|
2869
|
-
def __hash__(self) -> int:
|
|
2870
|
-
"""Returns unique hash for event."""
|
|
2871
|
-
return hash((self.agent_id, self.flow_id, self.reason))
|
|
2872
|
-
|
|
2873
|
-
def __eq__(self, other: Any) -> bool:
|
|
2874
|
-
"""Compares object with other object."""
|
|
2875
|
-
if not isinstance(other, AgentCancelled):
|
|
2876
|
-
return NotImplemented
|
|
2877
|
-
return (self.agent_id, self.flow_id, self.reason) == (
|
|
2878
|
-
other.agent_id,
|
|
2879
|
-
other.flow_id,
|
|
2880
|
-
other.reason,
|
|
2881
|
-
)
|
|
2882
|
-
|
|
2883
|
-
def as_dict(self) -> Dict[str, Any]:
|
|
2884
|
-
"""Returns serialized event."""
|
|
2885
|
-
serialized = super().as_dict()
|
|
2886
|
-
serialized.update(
|
|
2887
|
-
{"agent_id": self.agent_id, "flow_id": self.flow_id, "reason": self.reason}
|
|
2888
|
-
)
|
|
2889
|
-
return serialized
|
|
2890
|
-
|
|
2891
|
-
@classmethod
|
|
2892
|
-
def _from_parameters(cls, parameters: Dict[str, Any]) -> "AgentCancelled":
|
|
2893
|
-
if "agent_id" not in parameters:
|
|
2894
|
-
raise ValueError(
|
|
2895
|
-
"Failed to parse agent_cancelled event: agent_id is required"
|
|
2896
|
-
)
|
|
2897
|
-
if "flow_id" not in parameters:
|
|
2898
|
-
raise ValueError(
|
|
2899
|
-
"Failed to parse agent_cancelled event: flow_id is required"
|
|
2900
|
-
)
|
|
2901
|
-
|
|
2902
|
-
return AgentCancelled(
|
|
2903
|
-
parameters["agent_id"],
|
|
2904
|
-
parameters["flow_id"],
|
|
2905
|
-
parameters.get("reason"),
|
|
2906
|
-
parameters.get("timestamp"),
|
|
2907
|
-
parameters.get("metadata"),
|
|
2908
|
-
)
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
class AgentResumed(SkipEventInMDStoryMixin):
|
|
2912
|
-
"""Mark the resumption of an agent."""
|
|
2913
|
-
|
|
2914
|
-
type_name = "agent_resumed"
|
|
2915
|
-
|
|
2916
|
-
def __init__(
|
|
2917
|
-
self,
|
|
2918
|
-
agent_id: str,
|
|
2919
|
-
flow_id: str,
|
|
2920
|
-
timestamp: Optional[float] = None,
|
|
2921
|
-
metadata: Optional[Dict[str, Any]] = None,
|
|
2922
|
-
) -> None:
|
|
2923
|
-
self.agent_id = agent_id
|
|
2924
|
-
self.flow_id = flow_id
|
|
2925
|
-
super().__init__(timestamp, metadata)
|
|
2926
|
-
|
|
2927
|
-
def __repr__(self) -> str:
|
|
2928
|
-
"""Returns event as string for debugging."""
|
|
2929
|
-
return f"AgentResumed(agent: {self.agent_id}, flow: {self.flow_id})"
|
|
2930
|
-
|
|
2931
|
-
def __str__(self) -> str:
|
|
2932
|
-
"""Returns event as human-readable string."""
|
|
2933
|
-
return f"{self.__class__.__name__}({self.agent_id}, {self.flow_id})"
|
|
2934
|
-
|
|
2935
|
-
def __hash__(self) -> int:
|
|
2936
|
-
"""Returns unique hash for event."""
|
|
2937
|
-
return hash((self.agent_id, self.flow_id))
|
|
2938
|
-
|
|
2939
|
-
def __eq__(self, other: Any) -> bool:
|
|
2940
|
-
"""Compares object with other object."""
|
|
2941
|
-
if not isinstance(other, AgentResumed):
|
|
2942
|
-
return NotImplemented
|
|
2943
|
-
return (self.agent_id, self.flow_id) == (other.agent_id, other.flow_id)
|
|
2944
|
-
|
|
2945
|
-
def as_dict(self) -> Dict[str, Any]:
|
|
2946
|
-
"""Returns serialized event."""
|
|
2947
|
-
serialized = super().as_dict()
|
|
2948
|
-
serialized.update({"agent_id": self.agent_id, "flow_id": self.flow_id})
|
|
2949
|
-
return serialized
|
|
2950
|
-
|
|
2951
|
-
@classmethod
|
|
2952
|
-
def _from_parameters(cls, parameters: Dict[str, Any]) -> "AgentResumed":
|
|
2953
|
-
if "agent_id" not in parameters:
|
|
2954
|
-
raise ValueError(
|
|
2955
|
-
"Failed to parse agent_resumed event: agent_id is required"
|
|
2956
|
-
)
|
|
2957
|
-
if "flow_id" not in parameters:
|
|
2958
|
-
raise ValueError("Failed to parse agent_resumed event: flow_id is required")
|
|
2959
|
-
|
|
2960
|
-
return AgentResumed(
|
|
2961
|
-
parameters["agent_id"],
|
|
2962
|
-
parameters["flow_id"],
|
|
2963
|
-
parameters.get("timestamp"),
|
|
2964
|
-
parameters.get("metadata"),
|
|
2965
|
-
)
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
2649
|
class SessionEnded(AlwaysEqualEventMixin):
|
|
2969
2650
|
"""Mark the end of a conversation session."""
|
|
2970
2651
|
|
|
@@ -52,7 +52,13 @@ def step_from_json(flow_id: Text, data: Dict[Text, Any]) -> FlowStep:
|
|
|
52
52
|
return SetSlotsFlowStep.from_json(flow_id, data)
|
|
53
53
|
if "noop" in data:
|
|
54
54
|
return NoOperationFlowStep.from_json(flow_id, data)
|
|
55
|
-
|
|
55
|
+
|
|
56
|
+
required_properties = ["action", "collect", "link", "call", "set_slots", "noop"]
|
|
57
|
+
raise RasaException(
|
|
58
|
+
f"Failed to parse step from json. Unknown type for {data}. "
|
|
59
|
+
f"At least one of the following properties is required: "
|
|
60
|
+
f"{', '.join(required_properties)}"
|
|
61
|
+
)
|
|
56
62
|
|
|
57
63
|
|
|
58
64
|
@dataclass
|
|
@@ -9,7 +9,7 @@ from rasa.shared.core.flows import Flow
|
|
|
9
9
|
from rasa.shared.core.flows.flow_path import FlowPathsList
|
|
10
10
|
from rasa.shared.core.flows.validation import (
|
|
11
11
|
DuplicatedFlowIdException,
|
|
12
|
-
|
|
12
|
+
validate_called_flows_exists,
|
|
13
13
|
validate_flow,
|
|
14
14
|
validate_link_in_call_restriction,
|
|
15
15
|
validate_linked_flows_exists,
|
|
@@ -166,7 +166,7 @@ class FlowsList:
|
|
|
166
166
|
validate_flow(flow)
|
|
167
167
|
validate_nlu_trigger(self.underlying_flows)
|
|
168
168
|
validate_link_in_call_restriction(self)
|
|
169
|
-
|
|
169
|
+
validate_called_flows_exists(self)
|
|
170
170
|
validate_linked_flows_exists(self)
|
|
171
171
|
validate_patterns_are_not_called_or_linked(self)
|
|
172
172
|
validate_patterns_are_not_calling_or_linking_other_flows(self)
|