rasa-pro 3.14.0.dev20250901__py3-none-any.whl → 3.14.0rc1__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/__main__.py +15 -3
- rasa/agents/__init__.py +0 -0
- rasa/agents/agent_factory.py +122 -0
- rasa/agents/agent_manager.py +211 -0
- rasa/agents/constants.py +43 -0
- rasa/agents/core/__init__.py +0 -0
- rasa/agents/core/agent_protocol.py +107 -0
- rasa/agents/core/types.py +81 -0
- rasa/agents/exceptions.py +38 -0
- rasa/agents/protocol/__init__.py +5 -0
- rasa/agents/protocol/a2a/__init__.py +0 -0
- rasa/agents/protocol/a2a/a2a_agent.py +879 -0
- rasa/agents/protocol/mcp/__init__.py +0 -0
- rasa/agents/protocol/mcp/mcp_base_agent.py +726 -0
- rasa/agents/protocol/mcp/mcp_open_agent.py +327 -0
- rasa/agents/protocol/mcp/mcp_task_agent.py +522 -0
- rasa/agents/schemas/__init__.py +13 -0
- rasa/agents/schemas/agent_input.py +38 -0
- rasa/agents/schemas/agent_output.py +26 -0
- rasa/agents/schemas/agent_tool_result.py +65 -0
- rasa/agents/schemas/agent_tool_schema.py +186 -0
- rasa/agents/templates/__init__.py +0 -0
- rasa/agents/templates/mcp_open_agent_prompt_template.jinja2 +20 -0
- rasa/agents/templates/mcp_task_agent_prompt_template.jinja2 +22 -0
- rasa/agents/utils.py +206 -0
- rasa/agents/validation.py +485 -0
- rasa/api.py +24 -9
- rasa/builder/config.py +7 -2
- rasa/builder/copilot/constants.py +3 -0
- rasa/builder/copilot/copilot.py +128 -54
- rasa/builder/copilot/models.py +39 -3
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +183 -188
- rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +61 -0
- rasa/builder/copilot/telemetry.py +46 -20
- rasa/builder/document_retrieval/models.py +3 -3
- rasa/builder/download.py +1 -8
- rasa/builder/guardrails/{lakera.py → clients.py} +55 -5
- rasa/builder/guardrails/constants.py +3 -0
- rasa/builder/guardrails/models.py +45 -10
- rasa/builder/guardrails/policy_checker.py +324 -0
- rasa/builder/guardrails/utils.py +42 -276
- rasa/builder/jobs.py +33 -21
- rasa/builder/llm_service.py +32 -5
- rasa/builder/main.py +38 -62
- rasa/builder/models.py +8 -7
- rasa/builder/project_generator.py +149 -148
- rasa/builder/service.py +58 -40
- rasa/builder/template_cache.py +69 -0
- rasa/builder/training_service.py +84 -20
- rasa/builder/validation_service.py +1 -1
- rasa/cli/arguments/default_arguments.py +12 -0
- rasa/cli/arguments/run.py +2 -0
- rasa/cli/arguments/train.py +2 -0
- rasa/cli/data.py +10 -8
- rasa/cli/dialogue_understanding_test.py +10 -7
- rasa/cli/e2e_test.py +9 -6
- rasa/cli/evaluate.py +4 -2
- rasa/cli/export.py +5 -2
- rasa/cli/inspect.py +8 -4
- rasa/cli/interactive.py +5 -4
- rasa/cli/llm_fine_tuning.py +11 -6
- rasa/cli/project_templates/basic/README.md +23 -0
- rasa/cli/project_templates/basic/actions/actions.md +10 -0
- rasa/cli/project_templates/basic/config.yml +6 -4
- rasa/cli/project_templates/basic/data/data.md +5 -6
- rasa/cli/project_templates/basic/domain/domain.md +7 -5
- rasa/cli/project_templates/basic/domain/general/show_faqs.yml +1 -1
- rasa/cli/project_templates/basic/endpoints.yml +5 -1
- rasa/cli/project_templates/default/config.yml +4 -0
- rasa/cli/project_templates/default/endpoints.yml +4 -0
- rasa/cli/project_templates/finance/README.md +26 -0
- rasa/cli/project_templates/finance/actions/__init__.py +0 -46
- rasa/cli/project_templates/finance/actions/accounts/check_balance.py +18 -0
- rasa/cli/project_templates/finance/actions/actions.md +15 -0
- rasa/cli/project_templates/finance/actions/{transfers/action_process_immediate_payment.py → cards/check_that_card_exists.py} +6 -3
- rasa/cli/project_templates/finance/actions/cards/list_cards.py +22 -0
- rasa/cli/project_templates/finance/actions/contacts/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/contacts/add_contact.py +30 -0
- rasa/cli/project_templates/finance/actions/contacts/list_contacts.py +22 -0
- rasa/cli/project_templates/finance/actions/contacts/remove_contact.py +35 -0
- rasa/cli/project_templates/finance/actions/db.py +117 -0
- rasa/cli/project_templates/finance/actions/general/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/general/action_human_handoff.py +49 -0
- rasa/cli/project_templates/finance/actions/transfers/check_transfer_funds.py +27 -0
- rasa/cli/project_templates/finance/actions/transfers/check_transfer_limit.py +36 -0
- rasa/cli/project_templates/finance/actions/transfers/execute_recurrent_payment.py +20 -0
- rasa/cli/project_templates/finance/actions/transfers/execute_transfer.py +45 -0
- rasa/cli/project_templates/finance/actions/transfers/list_transactions.py +32 -0
- rasa/cli/project_templates/finance/config.yml +8 -0
- rasa/cli/project_templates/finance/credentials.yml +7 -6
- rasa/cli/project_templates/finance/data/accounts/check_balance.yml +3 -4
- rasa/cli/project_templates/finance/data/accounts/download_statements.yml +26 -0
- rasa/cli/project_templates/finance/data/bills/bill_pay_reminder.yml +25 -0
- rasa/cli/project_templates/finance/data/cards/activate_card.yml +35 -0
- rasa/cli/project_templates/finance/data/cards/block_card.yml +37 -58
- rasa/cli/project_templates/finance/data/cards/list_cards.yml +14 -0
- rasa/cli/project_templates/finance/data/cards/replace_card.yml +16 -0
- rasa/cli/project_templates/finance/data/cards/replace_eligible_card.yml +29 -0
- rasa/cli/project_templates/finance/data/contacts/add_contact.yml +33 -0
- rasa/cli/project_templates/finance/data/contacts/list_contacts.yml +14 -0
- rasa/cli/project_templates/finance/data/contacts/remove_contact.yml +31 -0
- rasa/cli/project_templates/finance/data/data.md +14 -0
- rasa/cli/project_templates/finance/data/general/bot_challenge.yml +6 -0
- rasa/cli/project_templates/finance/data/general/goodbye.yml +1 -1
- rasa/cli/project_templates/finance/data/general/hello.yml +1 -2
- rasa/cli/project_templates/finance/data/general/help.yml +2 -2
- rasa/cli/project_templates/finance/data/general/human_handoff.yml +2 -2
- rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +1 -1
- rasa/cli/project_templates/finance/data/transfers/check_transfer_limit.yml +18 -0
- rasa/cli/project_templates/finance/data/transfers/list_transactions.yml +46 -0
- rasa/cli/project_templates/finance/data/transfers/move_money_between_accounts.yml +51 -0
- rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +29 -62
- rasa/cli/project_templates/finance/data/transfers/transfer_money_to_a_third_party.yml +175 -0
- rasa/cli/project_templates/finance/db/cards.json +18 -0
- rasa/cli/project_templates/finance/db/contacts.json +10 -0
- rasa/cli/project_templates/finance/db/my_account.json +6 -0
- rasa/cli/project_templates/finance/db/transactions.json +22 -0
- rasa/cli/project_templates/finance/docs/docs.md +8 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/budgeting_analytics.txt +22 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/multi_currency_accounts.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/account_features/premium_benefits.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/contactless_limits.txt +16 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/freeze_unfreeze_card.txt +16 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/card_management/lost_stolen_card.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/money_transfers/instant_payments.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/money_transfers/international_transfers.txt +19 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/security_fraud/fraud_protection.txt +22 -0
- rasa/cli/project_templates/finance/docs/fenlo_banking_faq/security_fraud/secure_payments.txt +22 -0
- rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +9 -5
- rasa/cli/project_templates/finance/domain/accounts/download_statements.yml +40 -0
- rasa/cli/project_templates/finance/domain/bills/bill_pay_reminder.yml +49 -0
- rasa/cli/project_templates/finance/domain/cards/activate_card.yml +24 -0
- rasa/cli/project_templates/finance/domain/cards/block_card.yml +33 -90
- rasa/cli/project_templates/finance/domain/cards/list_cards.yml +16 -0
- rasa/cli/project_templates/finance/domain/cards/replace_card.yml +43 -0
- rasa/cli/project_templates/finance/domain/cards/shared.yml +15 -0
- rasa/cli/project_templates/finance/domain/contacts/add_contact.yml +37 -0
- rasa/cli/project_templates/finance/domain/contacts/list_contacts.yml +16 -0
- rasa/cli/project_templates/finance/domain/contacts/remove_contact.yml +32 -0
- rasa/cli/project_templates/finance/domain/domain.md +18 -0
- rasa/cli/project_templates/finance/domain/general/_shared.yml +39 -0
- rasa/cli/project_templates/finance/domain/general/bot_challenge.yml +4 -0
- rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -2
- rasa/cli/project_templates/finance/domain/general/feedback.yml +0 -3
- rasa/cli/project_templates/finance/domain/general/goodbye.yml +6 -6
- rasa/cli/project_templates/finance/domain/general/human_handoff.yml +10 -9
- rasa/cli/project_templates/finance/domain/general/welcome.yml +33 -2
- rasa/cli/project_templates/finance/domain/transfers/check_transfer_limit.yml +32 -0
- rasa/cli/project_templates/finance/domain/transfers/list_transactions.yml +44 -0
- rasa/cli/project_templates/finance/domain/transfers/shared.yml +17 -0
- rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +203 -61
- rasa/cli/project_templates/finance/endpoints.yml +8 -4
- rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +31 -12
- rasa/cli/project_templates/finance/tests/e2e_test_cases/accounts/check_balance.yml +9 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/accounts/download_statements.yml +43 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/cards/block_card.yml +55 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/general/feedback.yml +46 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/general/goodbye.yml +9 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/general/hello.yml +8 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/general/human_handoff.yml +35 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/general/patterns.yml +22 -0
- rasa/cli/project_templates/finance/tests/e2e_test_cases/transfers/transfer_money.yml +56 -0
- rasa/cli/project_templates/telco/README.md +25 -0
- rasa/cli/project_templates/telco/actions/actions.md +12 -0
- rasa/cli/project_templates/telco/config.yml +6 -4
- rasa/cli/project_templates/telco/data/data.md +11 -0
- rasa/cli/project_templates/telco/data/general/human_handoff.yml +1 -1
- rasa/cli/project_templates/telco/docs/docs.md +3 -0
- rasa/cli/project_templates/telco/domain/domain.md +13 -0
- rasa/cli/project_templates/telco/domain/general/human_handoff.yml +3 -6
- rasa/cli/project_templates/telco/endpoints.yml +5 -1
- rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +1 -1
- rasa/cli/project_templates/telco/tests/e2e_test_cases/billing/understand_bill.yml +67 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/feedback.yml +46 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/goodbye.yml +9 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +8 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +35 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +23 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/network/solve_internet_issue.yml +57 -0
- rasa/cli/project_templates/tutorial/credentials.yml +10 -0
- rasa/cli/run.py +12 -10
- rasa/cli/scaffold.py +4 -4
- rasa/cli/shell.py +9 -5
- rasa/cli/studio/studio.py +1 -1
- rasa/cli/test.py +34 -14
- rasa/cli/train.py +41 -28
- rasa/cli/utils.py +1 -393
- rasa/cli/validation/__init__.py +0 -0
- rasa/cli/validation/bot_config.py +223 -0
- rasa/cli/validation/config_path_validation.py +257 -0
- rasa/cli/x.py +8 -4
- rasa/constants.py +7 -1
- rasa/core/actions/action.py +51 -10
- rasa/core/actions/action_run_slot_rejections.py +1 -1
- rasa/core/actions/direct_custom_actions_executor.py +9 -2
- rasa/core/actions/grpc_custom_action_executor.py +1 -1
- rasa/core/agent.py +19 -2
- rasa/core/available_agents.py +229 -0
- rasa/core/brokers/broker.py +1 -1
- rasa/core/brokers/kafka.py +52 -8
- rasa/core/channels/__init__.py +82 -35
- rasa/core/channels/development_inspector.py +4 -24
- rasa/core/channels/hangouts.py +2 -2
- rasa/core/channels/inspector/README.md +25 -13
- rasa/core/channels/inspector/dist/assets/{arc-18042c22.js → arc-6177260a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-fdd6bcfa.js → blockDiagram-38ab4fdb-b054f038.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-f5ae6786.js → c4Diagram-3d4e48cf-f25427d5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-bf9cbb34.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-81efba3e.js → classDiagram-70f12bd4-c7a2af53.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-3b6b6a92.js → classDiagram-v2-f2320105-58db65c0.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-8f9083bb.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-31422447.js → createText-2e5e7dd3-088372e2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-518a90db.js → edges-e0da2a9e-58676240.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-a6d3c25a.js → erDiagram-9861fffd-0c14d7c6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-e048c2be.js → flowDb-956e92f1-ea63f85c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-c7474c91.js → flowDiagram-66a62f08-a2af48cd.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-9ecd5b59.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-cb4d8723.js → flowchart-elk-definition-4a651766-6937abe7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-346636a2.js → ganttDiagram-c361ad54-7473f357.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-7c508874.js → gitGraphDiagram-72cf32ee-d0c9405e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-14702d8a.js → graph-0a6f8466.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-f18b534b.js → index-3862675e-7610671a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/index-74e01d94.js +1354 -0
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-64154b83.js → infoDiagram-f8f76790-be397dc7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-833a5f95.js → journeyDiagram-49397b02-4cefbf62.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-5a3b2123.js → layout-e7fbc2bf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-2272a8c7.js → line-a8aa457c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-35bcf273.js → linear-3351e0d2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-92dcb0e9.js → mindmap-definition-fc14e90a-b8cbf605.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-94dbc900.js → pieDiagram-8a3498a8-f327f774.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-8b7a9c33.js → quadrantDiagram-120e2f19-2854c591.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-6f7eab81.js → requirementDiagram-deff3bca-964985d5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-f43e581d.js → sankeyDiagram-04a897e0-edeb4f33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-0bcbefc3.js → sequenceDiagram-704730f1-fcf70125.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-b8a74083.js → stateDiagram-587899a1-0e770395.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-2070218f.js → stateDiagram-v2-d93cdb3a-af8dcd22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-f1d54e34.js → styles-6aaf32cf-36a9e70d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-980de489.js → styles-9a916d00-884a8b5b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-3c03abde.js → styles-c10674c1-dc097813.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-46ba068f.js → svgDrawCommon-08f97a94-5a2c7eed.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-901f5e3d.js → timeline-definition-85554ec2-e89c4f6e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-acbc628a.js → xychartDiagram-e933f94c-afb6fe56.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +1 -1
- rasa/core/channels/inspector/package.json +18 -18
- rasa/core/channels/inspector/src/App.tsx +34 -35
- rasa/core/channels/inspector/src/components/Chat.tsx +2 -3
- rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
- rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +4 -2
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +9 -1
- rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +63 -35
- rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +20 -3
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +24 -3
- rasa/core/channels/inspector/src/helpers/utils.test.ts +127 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +66 -1
- rasa/core/channels/inspector/src/theme/base/styles.ts +19 -1
- rasa/core/channels/inspector/src/types.ts +53 -7
- rasa/core/channels/inspector/yarn.lock +336 -189
- rasa/core/channels/studio_chat.py +29 -47
- rasa/core/channels/telegram.py +4 -9
- rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
- rasa/core/channels/voice_stream/asr/azure.py +6 -3
- rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
- rasa/core/channels/voice_stream/audiocodes.py +3 -0
- rasa/core/channels/voice_stream/browser_audio.py +55 -3
- rasa/core/channels/voice_stream/genesys.py +3 -2
- rasa/core/channels/voice_stream/jambonz.py +9 -1
- rasa/core/channels/voice_stream/tts/deepgram.py +140 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +21 -1
- rasa/core/channels/voice_stream/voice_channel.py +64 -0
- rasa/core/concurrent_lock_store.py +66 -16
- rasa/core/config/__init__.py +0 -0
- rasa/core/{available_endpoints.py → config/available_endpoints.py} +51 -16
- rasa/core/config/configuration.py +260 -0
- rasa/core/config/credentials.py +19 -0
- rasa/core/config/message_procesing_config.py +34 -0
- rasa/core/constants.py +11 -0
- rasa/core/iam_credentials_providers/__init__.py +0 -0
- rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +226 -0
- rasa/core/iam_credentials_providers/credentials_provider_protocol.py +90 -0
- rasa/core/lock_store.py +46 -10
- rasa/core/nlg/generator.py +1 -1
- rasa/core/policies/enterprise_search_policy.py +5 -3
- rasa/core/policies/flow_policy.py +4 -4
- rasa/core/policies/flows/agent_executor.py +632 -0
- rasa/core/policies/flows/flow_executor.py +137 -76
- rasa/core/policies/flows/mcp_tool_executor.py +298 -0
- rasa/core/policies/intentless_policy.py +1 -1
- rasa/core/policies/ted_policy.py +20 -12
- rasa/core/policies/unexpected_intent_policy.py +6 -0
- rasa/core/processor.py +100 -44
- rasa/core/redis_connection_factory.py +469 -0
- rasa/core/run.py +37 -8
- rasa/core/test.py +4 -0
- rasa/core/tracker_stores/redis_tracker_store.py +32 -14
- rasa/core/tracker_stores/sql_tracker_store.py +57 -1
- rasa/core/tracker_stores/tracker_store.py +3 -7
- rasa/core/train.py +1 -1
- rasa/core/training/interactive.py +20 -18
- rasa/core/training/story_conflict.py +5 -5
- rasa/core/utils.py +22 -23
- rasa/dialogue_understanding/commands/__init__.py +8 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +19 -5
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +21 -2
- rasa/dialogue_understanding/commands/clarify_command.py +20 -2
- rasa/dialogue_understanding/commands/continue_agent_command.py +91 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +21 -2
- rasa/dialogue_understanding/commands/restart_agent_command.py +162 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +68 -7
- rasa/dialogue_understanding/commands/utils.py +124 -2
- rasa/dialogue_understanding/generator/command_parser.py +4 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +50 -12
- rasa/dialogue_understanding/generator/llm_command_generator.py +1 -1
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +1 -1
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +66 -0
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +66 -0
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +89 -0
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +88 -0
- rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +42 -7
- rasa/dialogue_understanding/generator/single_step/search_ready_llm_command_generator.py +40 -3
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +20 -3
- rasa/dialogue_understanding/patterns/cancel.py +27 -6
- rasa/dialogue_understanding/patterns/clarify.py +3 -14
- rasa/dialogue_understanding/patterns/continue_interrupted.py +239 -6
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +46 -8
- rasa/dialogue_understanding/processor/command_processor.py +136 -15
- rasa/dialogue_understanding/stack/dialogue_stack.py +98 -2
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +57 -0
- rasa/dialogue_understanding/stack/utils.py +57 -3
- rasa/dialogue_understanding/utils.py +24 -4
- rasa/dialogue_understanding_test/du_test_runner.py +8 -3
- rasa/e2e_test/e2e_test_runner.py +13 -3
- rasa/engine/caching.py +2 -2
- rasa/engine/constants.py +1 -1
- rasa/engine/graph.py +5 -1
- rasa/engine/loader.py +12 -0
- rasa/engine/recipes/default_components.py +138 -49
- rasa/engine/recipes/default_recipe.py +108 -11
- rasa/engine/runner/dask.py +8 -5
- rasa/engine/storage/local_model_storage.py +41 -4
- rasa/engine/validation.py +19 -6
- rasa/graph_components/validators/default_recipe_validator.py +86 -28
- rasa/hooks.py +5 -5
- rasa/llm_fine_tuning/utils.py +2 -2
- rasa/model_manager/socket_bridge.py +1 -2
- rasa/model_manager/warm_rasa_process.py +13 -3
- rasa/model_training.py +60 -47
- rasa/nlu/classifiers/diet_classifier.py +198 -98
- rasa/nlu/classifiers/logistic_regression_classifier.py +1 -4
- rasa/nlu/classifiers/mitie_intent_classifier.py +3 -0
- rasa/nlu/classifiers/sklearn_intent_classifier.py +1 -3
- rasa/nlu/extractors/crf_entity_extractor.py +9 -10
- rasa/nlu/extractors/mitie_entity_extractor.py +3 -0
- rasa/nlu/extractors/spacy_entity_extractor.py +3 -0
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +4 -0
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +5 -0
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +2 -0
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +3 -0
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +4 -2
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +4 -0
- rasa/nlu/selectors/response_selector.py +10 -2
- rasa/nlu/tokenizers/jieba_tokenizer.py +3 -4
- rasa/nlu/tokenizers/mitie_tokenizer.py +3 -2
- rasa/nlu/tokenizers/spacy_tokenizer.py +3 -2
- rasa/nlu/utils/mitie_utils.py +3 -0
- rasa/nlu/utils/spacy_utils.py +3 -2
- rasa/plugin.py +8 -8
- rasa/privacy/privacy_manager.py +12 -3
- rasa/server.py +15 -3
- rasa/shared/agents/__init__.py +0 -0
- rasa/shared/agents/auth/__init__.py +0 -0
- rasa/shared/agents/auth/agent_auth_factory.py +105 -0
- rasa/shared/agents/auth/agent_auth_manager.py +92 -0
- rasa/shared/agents/auth/auth_strategy/__init__.py +19 -0
- rasa/shared/agents/auth/auth_strategy/agent_auth_strategy.py +52 -0
- rasa/shared/agents/auth/auth_strategy/api_key_auth_strategy.py +42 -0
- rasa/shared/agents/auth/auth_strategy/bearer_token_auth_strategy.py +28 -0
- rasa/shared/agents/auth/auth_strategy/oauth2_auth_strategy.py +167 -0
- rasa/shared/agents/auth/constants.py +12 -0
- rasa/shared/agents/auth/types.py +12 -0
- rasa/shared/agents/utils.py +35 -0
- rasa/shared/constants.py +8 -0
- rasa/shared/core/constants.py +17 -1
- rasa/shared/core/domain.py +0 -7
- rasa/shared/core/events.py +329 -0
- rasa/shared/core/flows/constants.py +5 -0
- rasa/shared/core/flows/flow.py +1 -1
- rasa/shared/core/flows/flows_list.py +21 -5
- rasa/shared/core/flows/flows_yaml_schema.json +119 -184
- rasa/shared/core/flows/steps/call.py +49 -5
- rasa/shared/core/flows/steps/collect.py +98 -13
- rasa/shared/core/flows/validation.py +372 -8
- rasa/shared/core/flows/yaml_flows_io.py +3 -2
- rasa/shared/core/slots.py +2 -2
- rasa/shared/core/trackers.py +5 -2
- rasa/shared/exceptions.py +16 -0
- rasa/shared/importers/rasa.py +1 -1
- rasa/shared/importers/utils.py +9 -3
- rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
- rasa/shared/providers/llm/_base_litellm_client.py +41 -9
- rasa/shared/providers/llm/litellm_router_llm_client.py +8 -4
- rasa/shared/providers/llm/llm_client.py +7 -3
- rasa/shared/providers/llm/llm_response.py +66 -0
- rasa/shared/providers/llm/self_hosted_llm_client.py +8 -4
- rasa/shared/utils/common.py +24 -0
- rasa/shared/utils/health_check/health_check.py +7 -3
- rasa/shared/utils/llm.py +39 -16
- rasa/shared/utils/mcp/__init__.py +0 -0
- rasa/shared/utils/mcp/server_connection.py +247 -0
- rasa/shared/utils/mcp/utils.py +20 -0
- rasa/shared/utils/schemas/events.py +42 -0
- rasa/shared/utils/yaml.py +3 -1
- rasa/studio/pull/pull.py +3 -2
- rasa/studio/train.py +8 -7
- rasa/studio/upload.py +3 -6
- rasa/telemetry.py +69 -5
- rasa/tracing/config.py +45 -12
- rasa/tracing/constants.py +14 -0
- rasa/tracing/instrumentation/attribute_extractors.py +142 -9
- rasa/tracing/instrumentation/instrumentation.py +626 -21
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +4 -4
- rasa/tracing/instrumentation/metrics.py +32 -0
- rasa/tracing/metric_instrument_provider.py +68 -0
- rasa/utils/common.py +92 -1
- rasa/utils/endpoints.py +11 -2
- rasa/utils/log_utils.py +96 -5
- rasa/utils/ml_utils.py +1 -1
- rasa/utils/pypred.py +38 -0
- rasa/utils/tensorflow/__init__.py +7 -0
- rasa/utils/tensorflow/callback.py +136 -101
- rasa/utils/tensorflow/crf.py +1 -1
- rasa/utils/tensorflow/data_generator.py +21 -8
- rasa/utils/tensorflow/layers.py +21 -11
- rasa/utils/tensorflow/metrics.py +7 -3
- rasa/utils/tensorflow/models.py +56 -8
- rasa/utils/tensorflow/rasa_layers.py +8 -6
- rasa/utils/tensorflow/transformer.py +2 -3
- rasa/utils/train_utils.py +54 -24
- rasa/validator.py +17 -13
- rasa/version.py +1 -1
- {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/METADATA +59 -51
- {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/RECORD +452 -428
- rasa/builder/scrape_rasa_docs.py +0 -97
- rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +0 -47
- rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +0 -40
- rasa/cli/project_templates/finance/actions/action_session_start.py +0 -74
- rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +0 -48
- rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +0 -36
- rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +0 -54
- rasa/cli/project_templates/finance/actions/database.py +0 -277
- rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +0 -52
- rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +0 -51
- rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +0 -40
- rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +0 -40
- rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +0 -46
- rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +0 -49
- rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +0 -19
- rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +0 -36
- rasa/cli/project_templates/finance/csvs/accounts.csv +0 -8
- rasa/cli/project_templates/finance/csvs/advisors.csv +0 -7
- rasa/cli/project_templates/finance/csvs/appointments.csv +0 -211
- rasa/cli/project_templates/finance/csvs/branches.csv +0 -10
- rasa/cli/project_templates/finance/csvs/cards.csv +0 -11
- rasa/cli/project_templates/finance/csvs/payees.csv +0 -11
- rasa/cli/project_templates/finance/csvs/transactions.csv +0 -71
- rasa/cli/project_templates/finance/csvs/users.csv +0 -4
- rasa/cli/project_templates/finance/data/cards/select_card.yml +0 -12
- rasa/cli/project_templates/finance/data/general/bot_identity.yml +0 -6
- rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +0 -5
- rasa/cli/project_templates/finance/data/system/source/accounts.json +0 -51
- rasa/cli/project_templates/finance/data/system/source/advisors.json +0 -44
- rasa/cli/project_templates/finance/data/system/source/appointments.json +0 -1474
- rasa/cli/project_templates/finance/data/system/source/branches.json +0 -47
- rasa/cli/project_templates/finance/data/system/source/cards.json +0 -72
- rasa/cli/project_templates/finance/data/system/source/payees.json +0 -74
- rasa/cli/project_templates/finance/data/system/source/transactions.json +0 -492
- rasa/cli/project_templates/finance/data/system/source/users.json +0 -29
- rasa/cli/project_templates/finance/data/transfers/add_payee.yml +0 -29
- rasa/cli/project_templates/finance/data/transfers/list_payees.yml +0 -5
- rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +0 -21
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +0 -7
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +0 -8
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +0 -8
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +0 -48
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +0 -47
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +0 -50
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +0 -47
- rasa/cli/project_templates/finance/domain/cards/select_card.yml +0 -12
- rasa/cli/project_templates/finance/domain/general/assistant_details.yml +0 -12
- rasa/cli/project_templates/finance/domain/general/bot_identity.yml +0 -5
- rasa/cli/project_templates/finance/domain/general/defaults.yml +0 -24
- rasa/cli/project_templates/finance/domain/general/help.yml +0 -5
- rasa/cli/project_templates/finance/domain/general/utils.yml +0 -13
- rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +0 -47
- rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +0 -4
- rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +0 -16
- rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-4d4bdf3a.js +0 -1335
- /rasa/cli/project_templates/telco/domain/billing/{domain_undertand_bill.yml → understand_bill.yml} +0 -0
- /rasa/cli/project_templates/telco/domain/network/{domain_reboot_router.yml → reboot_router.yml} +0 -0
- /rasa/cli/project_templates/telco/domain/network/{domain_reset_router.yml → reset_router.yml} +0 -0
- /rasa/cli/project_templates/telco/domain/network/{domain_run_speed_test.yml → run_speed_test.yml} +0 -0
- /rasa/cli/project_templates/telco/domain/network/{domain_solve_internet_issue.yml → solve_internet_issue.yml} +0 -0
- {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev20250901.dist-info → rasa_pro-3.14.0rc1.dist-info}/entry_points.txt +0 -0
rasa/cli/test.py
CHANGED
|
@@ -11,6 +11,13 @@ import rasa.shared.utils.io
|
|
|
11
11
|
import rasa.utils.common
|
|
12
12
|
from rasa.cli import SubParsersAction
|
|
13
13
|
from rasa.cli.arguments import test as arguments
|
|
14
|
+
from rasa.cli.validation.config_path_validation import get_validated_path
|
|
15
|
+
from rasa.core.config.configuration import (
|
|
16
|
+
Configuration,
|
|
17
|
+
CredentialsConfigPath,
|
|
18
|
+
EndpointsConfigPath,
|
|
19
|
+
MessageProcessingConfigPath,
|
|
20
|
+
)
|
|
14
21
|
from rasa.core.constants import (
|
|
15
22
|
FAILED_STORIES_FILE,
|
|
16
23
|
STORIES_WITH_WARNINGS_FILE,
|
|
@@ -100,10 +107,16 @@ async def run_core_test_async(args: argparse.Namespace) -> None:
|
|
|
100
107
|
test_core_models_in_directory,
|
|
101
108
|
)
|
|
102
109
|
|
|
103
|
-
|
|
104
|
-
|
|
110
|
+
Configuration.initialise_endpoints(
|
|
111
|
+
endpoints_path=EndpointsConfigPath.validate(),
|
|
112
|
+
).initialise_credentials(
|
|
113
|
+
credentials_path=CredentialsConfigPath.validate()
|
|
114
|
+
).initialise_message_processing(
|
|
115
|
+
message_processing_config_path=MessageProcessingConfigPath.validate()
|
|
105
116
|
)
|
|
106
117
|
|
|
118
|
+
stories = get_validated_path(args.stories, "stories", DEFAULT_DATA_PATH)
|
|
119
|
+
|
|
107
120
|
output = args.out or DEFAULT_RESULTS_PATH
|
|
108
121
|
args.errors = not args.no_errors
|
|
109
122
|
args.warnings = not args.no_warnings
|
|
@@ -121,9 +134,7 @@ async def run_core_test_async(args: argparse.Namespace) -> None:
|
|
|
121
134
|
return
|
|
122
135
|
|
|
123
136
|
if isinstance(args.model, str):
|
|
124
|
-
model_path =
|
|
125
|
-
args.model, "model", DEFAULT_MODELS_PATH
|
|
126
|
-
)
|
|
137
|
+
model_path = get_validated_path(args.model, "model", DEFAULT_MODELS_PATH)
|
|
127
138
|
|
|
128
139
|
if args.evaluate_model_directory:
|
|
129
140
|
await test_core_models_in_directory(
|
|
@@ -182,9 +193,7 @@ async def run_nlu_test_async(
|
|
|
182
193
|
test_nlu,
|
|
183
194
|
)
|
|
184
195
|
|
|
185
|
-
data_path = str(
|
|
186
|
-
rasa.cli.utils.get_validated_path(data_path, "nlu", DEFAULT_DATA_PATH)
|
|
187
|
-
)
|
|
196
|
+
data_path = str(get_validated_path(data_path, "nlu", DEFAULT_DATA_PATH))
|
|
188
197
|
test_data_importer = TrainingDataImporter.load_from_dict(
|
|
189
198
|
training_data_paths=[data_path], domain_path=domain_path
|
|
190
199
|
)
|
|
@@ -225,18 +234,29 @@ async def run_nlu_test_async(
|
|
|
225
234
|
)
|
|
226
235
|
elif cross_validation:
|
|
227
236
|
logger.info("Test model using cross validation.")
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
237
|
+
|
|
238
|
+
Configuration.initialise_endpoints(
|
|
239
|
+
endpoints_path=EndpointsConfigPath.validate(),
|
|
240
|
+
).initialise_credentials(
|
|
241
|
+
credentials_path=CredentialsConfigPath.validate()
|
|
242
|
+
).initialise_message_processing(
|
|
243
|
+
message_processing_config_path=MessageProcessingConfigPath.validate(config),
|
|
232
244
|
)
|
|
245
|
+
|
|
246
|
+
config = str(get_validated_path(config, "config", DEFAULT_CONFIG_PATH))
|
|
233
247
|
config_importer = TrainingDataImporter.load_from_dict(config_path=config)
|
|
234
248
|
|
|
235
249
|
config_dict = config_importer.get_config()
|
|
236
250
|
await perform_nlu_cross_validation(config_dict, nlu_data, output, all_args)
|
|
237
251
|
else:
|
|
238
|
-
model_path =
|
|
239
|
-
|
|
252
|
+
model_path = get_validated_path(models_path, "model", DEFAULT_MODELS_PATH)
|
|
253
|
+
|
|
254
|
+
Configuration.initialise_endpoints(
|
|
255
|
+
endpoints_path=EndpointsConfigPath.validate(),
|
|
256
|
+
).initialise_credentials(
|
|
257
|
+
credentials_path=CredentialsConfigPath.validate()
|
|
258
|
+
).initialise_message_processing(
|
|
259
|
+
message_processing_config_path=MessageProcessingConfigPath.validate(config),
|
|
240
260
|
)
|
|
241
261
|
|
|
242
262
|
await test_nlu(model_path, data_path, output, all_args, domain_path=domain_path)
|
rasa/cli/train.py
CHANGED
|
@@ -7,10 +7,13 @@ from typing import Dict, List, Optional, Text, Union
|
|
|
7
7
|
import structlog
|
|
8
8
|
|
|
9
9
|
import rasa.cli.arguments.train as train_arguments
|
|
10
|
-
import rasa.cli.utils
|
|
11
|
-
import rasa.core.utils
|
|
12
|
-
import rasa.utils.common
|
|
13
10
|
from rasa.cli import SubParsersAction
|
|
11
|
+
from rasa.cli.validation.bot_config import validate_files
|
|
12
|
+
from rasa.cli.validation.config_path_validation import (
|
|
13
|
+
get_validated_config,
|
|
14
|
+
get_validated_path,
|
|
15
|
+
)
|
|
16
|
+
from rasa.core.config.configuration import Configuration
|
|
14
17
|
from rasa.core.nlg.contextual_response_rephraser import ContextualResponseRephraser
|
|
15
18
|
from rasa.core.nlg.generator import NaturalLanguageGenerator
|
|
16
19
|
from rasa.core.train import do_compare_training
|
|
@@ -74,7 +77,9 @@ def add_subparser(
|
|
|
74
77
|
|
|
75
78
|
def _check_nlg_endpoint_validity(endpoint: Union[Path, str]) -> None:
|
|
76
79
|
try:
|
|
77
|
-
endpoints =
|
|
80
|
+
endpoints = Configuration.initialise_endpoints(
|
|
81
|
+
endpoints_path=endpoint
|
|
82
|
+
).endpoints
|
|
78
83
|
if endpoints.nlg is not None:
|
|
79
84
|
validate_api_type_config_key_usage(
|
|
80
85
|
endpoints.nlg.kwargs,
|
|
@@ -115,21 +120,17 @@ def run_training(args: argparse.Namespace, can_exit: bool = False) -> Optional[T
|
|
|
115
120
|
"""
|
|
116
121
|
from rasa.api import train as train_all
|
|
117
122
|
|
|
118
|
-
domain =
|
|
123
|
+
domain = get_validated_path(
|
|
119
124
|
args.domain, "domain", DEFAULT_DOMAIN_PATHS, none_is_valid=True
|
|
120
125
|
)
|
|
121
|
-
config =
|
|
126
|
+
config = get_validated_config(args.config, CONFIG_MANDATORY_KEYS)
|
|
122
127
|
|
|
123
128
|
# Validates and loads endpoints with proper endpoint file location
|
|
124
|
-
#
|
|
125
|
-
# it can be used safely throughout the codebase with
|
|
126
|
-
# `AvailableEndpoints.get_instance()`
|
|
129
|
+
# TODO(Radovan): this should be probably be done in Configuration
|
|
127
130
|
_check_nlg_endpoint_validity(args.endpoints)
|
|
128
131
|
|
|
129
132
|
training_files = [
|
|
130
|
-
|
|
131
|
-
f, "data", DEFAULT_DATA_PATH, none_is_valid=True
|
|
132
|
-
)
|
|
133
|
+
get_validated_path(f, "data", DEFAULT_DATA_PATH, none_is_valid=True)
|
|
133
134
|
for f in args.data
|
|
134
135
|
]
|
|
135
136
|
|
|
@@ -143,15 +144,17 @@ def run_training(args: argparse.Namespace, can_exit: bool = False) -> Optional[T
|
|
|
143
144
|
event_info="Started validating domain and training data...",
|
|
144
145
|
)
|
|
145
146
|
|
|
146
|
-
|
|
147
|
+
validate_files(
|
|
147
148
|
args.fail_on_validation_warnings,
|
|
148
149
|
args.validation_max_history,
|
|
149
150
|
training_data_importer,
|
|
151
|
+
sub_agents=args.sub_agents,
|
|
150
152
|
)
|
|
151
153
|
|
|
152
154
|
training_result = train_all(
|
|
153
155
|
domain=domain,
|
|
154
156
|
config=config,
|
|
157
|
+
endpoints=args.endpoints,
|
|
155
158
|
training_files=training_files,
|
|
156
159
|
output=args.out,
|
|
157
160
|
dry_run=args.dry_run,
|
|
@@ -168,6 +171,7 @@ def run_training(args: argparse.Namespace, can_exit: bool = False) -> Optional[T
|
|
|
168
171
|
file_importer=training_data_importer,
|
|
169
172
|
keep_local_model_copy=args.keep_local_model_copy,
|
|
170
173
|
remote_root_only=args.remote_root_only,
|
|
174
|
+
sub_agents=args.sub_agents,
|
|
171
175
|
)
|
|
172
176
|
if training_result.code != 0 and can_exit:
|
|
173
177
|
display_research_study_prompt()
|
|
@@ -177,13 +181,19 @@ def run_training(args: argparse.Namespace, can_exit: bool = False) -> Optional[T
|
|
|
177
181
|
|
|
178
182
|
|
|
179
183
|
def _model_for_finetuning(args: argparse.Namespace) -> Optional[Text]:
|
|
180
|
-
if args.finetune
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
if args.finetune is not None:
|
|
185
|
+
structlogger.error(
|
|
186
|
+
"cli.train.incremental_training_not_supported",
|
|
187
|
+
event_info=(
|
|
188
|
+
"Incremental training (--finetune) is "
|
|
189
|
+
"not supported in Rasa 3.14.0 onwards. "
|
|
190
|
+
"Please retrain your model from scratch "
|
|
191
|
+
"if you have updated your configuration. "
|
|
192
|
+
),
|
|
193
|
+
)
|
|
194
|
+
display_research_study_prompt()
|
|
195
|
+
sys.exit(1)
|
|
196
|
+
return None
|
|
187
197
|
|
|
188
198
|
|
|
189
199
|
def run_core_training(args: argparse.Namespace) -> Optional[Text]:
|
|
@@ -197,10 +207,10 @@ def run_core_training(args: argparse.Namespace) -> Optional[Text]:
|
|
|
197
207
|
"""
|
|
198
208
|
from rasa.model_training import train_core
|
|
199
209
|
|
|
200
|
-
args.domain =
|
|
210
|
+
args.domain = get_validated_path(
|
|
201
211
|
args.domain, "domain", DEFAULT_DOMAIN_PATHS, none_is_valid=True
|
|
202
212
|
)
|
|
203
|
-
story_file =
|
|
213
|
+
story_file = get_validated_path(
|
|
204
214
|
args.stories, "stories", DEFAULT_DATA_PATH, none_is_valid=True
|
|
205
215
|
)
|
|
206
216
|
additional_arguments = {
|
|
@@ -213,9 +223,11 @@ def run_core_training(args: argparse.Namespace) -> Optional[Text]:
|
|
|
213
223
|
if isinstance(args.config, list):
|
|
214
224
|
args.config = args.config[0]
|
|
215
225
|
|
|
216
|
-
config =
|
|
217
|
-
|
|
218
|
-
|
|
226
|
+
config = get_validated_config(args.config, CONFIG_MANDATORY_KEYS_CORE)
|
|
227
|
+
|
|
228
|
+
Configuration.initialise_message_processing(
|
|
229
|
+
message_processing_config_path=Path(config)
|
|
230
|
+
).initialise_empty_endpoints()
|
|
219
231
|
|
|
220
232
|
return asyncio.run(
|
|
221
233
|
train_core(
|
|
@@ -231,6 +243,7 @@ def run_core_training(args: argparse.Namespace) -> Optional[Text]:
|
|
|
231
243
|
)
|
|
232
244
|
)
|
|
233
245
|
else:
|
|
246
|
+
Configuration.initialise_empty()
|
|
234
247
|
asyncio.run(do_compare_training(args, story_file, additional_arguments))
|
|
235
248
|
return None
|
|
236
249
|
|
|
@@ -246,13 +259,13 @@ def run_nlu_training(args: argparse.Namespace) -> Optional[Text]:
|
|
|
246
259
|
"""
|
|
247
260
|
from rasa.model_training import train_nlu
|
|
248
261
|
|
|
249
|
-
config =
|
|
250
|
-
nlu_data =
|
|
262
|
+
config = get_validated_config(args.config, CONFIG_MANDATORY_KEYS_NLU)
|
|
263
|
+
nlu_data = get_validated_path(
|
|
251
264
|
args.nlu, "nlu", DEFAULT_DATA_PATH, none_is_valid=True
|
|
252
265
|
)
|
|
253
266
|
|
|
254
267
|
if args.domain:
|
|
255
|
-
args.domain =
|
|
268
|
+
args.domain = get_validated_path(
|
|
256
269
|
args.domain, "domain", DEFAULT_DOMAIN_PATHS, none_is_valid=True
|
|
257
270
|
)
|
|
258
271
|
|
rasa/cli/utils.py
CHANGED
|
@@ -1,415 +1,23 @@
|
|
|
1
|
-
import argparse
|
|
2
1
|
import importlib
|
|
3
2
|
import json
|
|
4
3
|
import os
|
|
5
4
|
import sys
|
|
6
|
-
import time
|
|
7
5
|
from pathlib import Path
|
|
8
6
|
from types import FrameType
|
|
9
|
-
from typing import TYPE_CHECKING, Any, Dict, List,
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Text
|
|
10
8
|
|
|
11
|
-
import randomname
|
|
12
9
|
import structlog
|
|
13
10
|
|
|
14
|
-
import rasa.shared.utils.cli
|
|
15
11
|
import rasa.shared.utils.io
|
|
16
|
-
from rasa import telemetry
|
|
17
|
-
from rasa.exceptions import ModelNotFound, ValidationError
|
|
18
|
-
from rasa.shared.constants import (
|
|
19
|
-
ASSISTANT_ID_DEFAULT_VALUE,
|
|
20
|
-
ASSISTANT_ID_KEY,
|
|
21
|
-
DEFAULT_CONFIG_PATH,
|
|
22
|
-
)
|
|
23
|
-
from rasa.shared.importers.importer import TrainingDataImporter
|
|
24
|
-
from rasa.shared.utils.common import display_research_study_prompt
|
|
25
|
-
from rasa.shared.utils.yaml import read_config_file
|
|
26
|
-
from rasa.utils.io import write_yaml
|
|
27
12
|
|
|
28
13
|
if TYPE_CHECKING:
|
|
29
14
|
from questionary import Question
|
|
30
|
-
from typing_extensions import Literal
|
|
31
|
-
|
|
32
|
-
from rasa.validator import Validator
|
|
33
15
|
|
|
34
16
|
structlogger = structlog.get_logger()
|
|
35
17
|
|
|
36
18
|
FREE_TEXT_INPUT_PROMPT = "Type out your own message..."
|
|
37
19
|
|
|
38
20
|
|
|
39
|
-
@overload
|
|
40
|
-
def get_validated_path(
|
|
41
|
-
current: Optional[Union[Path, Text]],
|
|
42
|
-
parameter: Text,
|
|
43
|
-
default: Optional[Union[Path, Text, List[Text]]] = ...,
|
|
44
|
-
none_is_valid: "Literal[False]" = ...,
|
|
45
|
-
) -> Union[Path, Text]: ...
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
@overload
|
|
49
|
-
def get_validated_path(
|
|
50
|
-
current: Optional[Union[Path, Text]],
|
|
51
|
-
parameter: Text,
|
|
52
|
-
default: Optional[Union[Path, Text, List[Text]]] = ...,
|
|
53
|
-
none_is_valid: "Literal[True]" = ...,
|
|
54
|
-
) -> Optional[Union[Path, Text]]: ...
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def get_validated_path(
|
|
58
|
-
current: Optional[Union[Path, Text]],
|
|
59
|
-
parameter: Text,
|
|
60
|
-
default: Optional[Union[Path, Text, List[Text]]] = None,
|
|
61
|
-
none_is_valid: bool = False,
|
|
62
|
-
) -> Optional[Union[Path, Text]]:
|
|
63
|
-
"""Checks whether a file path or its default value is valid and returns it.
|
|
64
|
-
|
|
65
|
-
Args:
|
|
66
|
-
current: The parsed value.
|
|
67
|
-
parameter: The name of the parameter.
|
|
68
|
-
default: one or multiple default values of the parameter.
|
|
69
|
-
none_is_valid: `True` if `None` is valid value for the path,
|
|
70
|
-
else `False``
|
|
71
|
-
|
|
72
|
-
Returns:
|
|
73
|
-
The current value if valid,
|
|
74
|
-
otherwise one of the default values of the argument if valid,
|
|
75
|
-
otherwise `None` if allowed,
|
|
76
|
-
otherwise raises an error and exits.
|
|
77
|
-
"""
|
|
78
|
-
if current and os.path.exists(current):
|
|
79
|
-
return current
|
|
80
|
-
|
|
81
|
-
if parameter == "model":
|
|
82
|
-
raise ModelNotFound(
|
|
83
|
-
f"The provided model path '{current}' could not be found. "
|
|
84
|
-
"Provide an existing model path."
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
# try to find a valid option among the defaults
|
|
88
|
-
if isinstance(default, str) or isinstance(default, Path):
|
|
89
|
-
default_options = [str(default)]
|
|
90
|
-
elif isinstance(default, list):
|
|
91
|
-
default_options = default
|
|
92
|
-
else:
|
|
93
|
-
default_options = []
|
|
94
|
-
|
|
95
|
-
valid_options = (option for option in default_options if os.path.exists(option))
|
|
96
|
-
chosen_option = next(valid_options, None)
|
|
97
|
-
|
|
98
|
-
# warn and log if user-chosen parameter wasn't found and thus overwritten
|
|
99
|
-
if chosen_option:
|
|
100
|
-
shared_info = f"Using default location '{chosen_option}' instead."
|
|
101
|
-
if current is None:
|
|
102
|
-
structlogger.debug(
|
|
103
|
-
"cli.get_validated_path.parameter_not_set",
|
|
104
|
-
parameter=parameter,
|
|
105
|
-
event_info=(f"Parameter '{parameter}' was not set. {shared_info}"),
|
|
106
|
-
)
|
|
107
|
-
elif current not in default_options:
|
|
108
|
-
structlogger.warn(
|
|
109
|
-
"cli.get_validated_path.path_does_not_exists",
|
|
110
|
-
path=current,
|
|
111
|
-
event_info=(
|
|
112
|
-
f"The path '{current}' does not seem to exist. {shared_info}"
|
|
113
|
-
),
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
if chosen_option is None and not none_is_valid:
|
|
117
|
-
cancel_cause_not_found(current, parameter, default)
|
|
118
|
-
|
|
119
|
-
return chosen_option
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
def missing_config_keys(
|
|
123
|
-
path: Union["Path", Text], mandatory_keys: List[Text]
|
|
124
|
-
) -> List[Text]:
|
|
125
|
-
"""Checks whether the config file at `path` contains the `mandatory_keys`.
|
|
126
|
-
|
|
127
|
-
Args:
|
|
128
|
-
path: The path to the config file.
|
|
129
|
-
mandatory_keys: A list of mandatory config keys.
|
|
130
|
-
|
|
131
|
-
Returns:
|
|
132
|
-
The list of missing config keys.
|
|
133
|
-
"""
|
|
134
|
-
if not os.path.exists(path):
|
|
135
|
-
return mandatory_keys
|
|
136
|
-
|
|
137
|
-
config_data = read_config_file(path)
|
|
138
|
-
|
|
139
|
-
return [k for k in mandatory_keys if k not in config_data or config_data[k] is None]
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
def validate_assistant_id_in_config(config_file: Union["Path", Text]) -> None:
|
|
143
|
-
"""Verifies that the assistant_id key exists and has a unique value in config.
|
|
144
|
-
|
|
145
|
-
Issues a warning if the key does not exist or has the default value and replaces it
|
|
146
|
-
with a pseudo-random string value.
|
|
147
|
-
"""
|
|
148
|
-
config_data = read_config_file(config_file, reader_type=["safe", "rt"])
|
|
149
|
-
assistant_id = config_data.get(ASSISTANT_ID_KEY)
|
|
150
|
-
|
|
151
|
-
if assistant_id is None or assistant_id == ASSISTANT_ID_DEFAULT_VALUE:
|
|
152
|
-
structlogger.warn(
|
|
153
|
-
"cli.validate_assistant_id_in_config.missing_unique_assistant_id_key",
|
|
154
|
-
config=config_file,
|
|
155
|
-
missing_key=ASSISTANT_ID_KEY,
|
|
156
|
-
event_info=(
|
|
157
|
-
f"The config file '{config_file!s}' is "
|
|
158
|
-
f"missing a unique value for the "
|
|
159
|
-
f"'{ASSISTANT_ID_KEY}' mandatory key. "
|
|
160
|
-
f"Proceeding with generating a random "
|
|
161
|
-
f"value and overwriting the '{ASSISTANT_ID_KEY}'"
|
|
162
|
-
f" in the config file."
|
|
163
|
-
),
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
# add random value for assistant id, overwrite config file
|
|
167
|
-
time_format = "%Y%m%d-%H%M%S"
|
|
168
|
-
config_data[ASSISTANT_ID_KEY] = (
|
|
169
|
-
f"{time.strftime(time_format)}-{randomname.get_name()}"
|
|
170
|
-
)
|
|
171
|
-
|
|
172
|
-
write_yaml(data=config_data, target=config_file, should_preserve_key_order=True)
|
|
173
|
-
|
|
174
|
-
return
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
def validate_config_path(
|
|
178
|
-
config: Optional[Union[Text, "Path"]],
|
|
179
|
-
default_config: Text = DEFAULT_CONFIG_PATH,
|
|
180
|
-
) -> Text:
|
|
181
|
-
"""Verifies that the config path exists.
|
|
182
|
-
|
|
183
|
-
Exit if the config file does not exist.
|
|
184
|
-
|
|
185
|
-
Args:
|
|
186
|
-
config: Path to the config file.
|
|
187
|
-
default_config: default config to use if the file at `config` doesn't exist.
|
|
188
|
-
|
|
189
|
-
Returns: The path to the config file.
|
|
190
|
-
"""
|
|
191
|
-
config = rasa.cli.utils.get_validated_path(config, "config", default_config)
|
|
192
|
-
|
|
193
|
-
if not config or not os.path.exists(config):
|
|
194
|
-
display_research_study_prompt()
|
|
195
|
-
raise ValidationError(
|
|
196
|
-
code="cli.validate_config_path.does_not_exists",
|
|
197
|
-
config=config,
|
|
198
|
-
event_info=(
|
|
199
|
-
f"The config file '{config}' does not exist. "
|
|
200
|
-
f"Use '--config' to specify a valid config file."
|
|
201
|
-
),
|
|
202
|
-
)
|
|
203
|
-
|
|
204
|
-
return str(config)
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
def validate_mandatory_config_keys(
|
|
208
|
-
config: Union[Text, "Path"],
|
|
209
|
-
mandatory_keys: List[Text],
|
|
210
|
-
) -> Text:
|
|
211
|
-
"""Get a config from a config file and check if it is valid.
|
|
212
|
-
|
|
213
|
-
Exit if the config isn't valid.
|
|
214
|
-
|
|
215
|
-
Args:
|
|
216
|
-
config: Path to the config file.
|
|
217
|
-
mandatory_keys: The keys that have to be specified in the config file.
|
|
218
|
-
|
|
219
|
-
Returns: The path to the config file if the config is valid.
|
|
220
|
-
"""
|
|
221
|
-
missing_keys = set(rasa.cli.utils.missing_config_keys(config, mandatory_keys))
|
|
222
|
-
if missing_keys:
|
|
223
|
-
display_research_study_prompt()
|
|
224
|
-
raise ValidationError(
|
|
225
|
-
code="cli.validate_mandatory_config_keys.missing_keys",
|
|
226
|
-
config=config,
|
|
227
|
-
missing_keys=missing_keys,
|
|
228
|
-
event_info=(
|
|
229
|
-
"The config file '{}' is missing mandatory parameters: "
|
|
230
|
-
"'{}'. Add missing parameters to config file and try again.".format(
|
|
231
|
-
config, "', '".join(missing_keys)
|
|
232
|
-
)
|
|
233
|
-
),
|
|
234
|
-
)
|
|
235
|
-
|
|
236
|
-
return str(config)
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
def get_validated_config(
|
|
240
|
-
config: Optional[Union[Text, "Path"]],
|
|
241
|
-
mandatory_keys: List[Text],
|
|
242
|
-
default_config: Text = DEFAULT_CONFIG_PATH,
|
|
243
|
-
) -> Text:
|
|
244
|
-
"""Validates config and returns path to validated config file."""
|
|
245
|
-
config = validate_config_path(config, default_config)
|
|
246
|
-
validate_assistant_id_in_config(config)
|
|
247
|
-
|
|
248
|
-
config = validate_mandatory_config_keys(config, mandatory_keys)
|
|
249
|
-
|
|
250
|
-
return config
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
def validate_files(
|
|
254
|
-
fail_on_warnings: bool,
|
|
255
|
-
max_history: Optional[int],
|
|
256
|
-
importer: TrainingDataImporter,
|
|
257
|
-
stories_only: bool = False,
|
|
258
|
-
flows_only: bool = False,
|
|
259
|
-
translations_only: bool = False,
|
|
260
|
-
) -> None:
|
|
261
|
-
"""Validates either the story structure or the entire project.
|
|
262
|
-
|
|
263
|
-
Args:
|
|
264
|
-
fail_on_warnings: `True` if the process should exit with a non-zero status
|
|
265
|
-
max_history: The max history to use when validating the story structure.
|
|
266
|
-
importer: The `TrainingDataImporter` to use to load the training data.
|
|
267
|
-
stories_only: If `True`, only the story structure is validated.
|
|
268
|
-
flows_only: If `True`, only the flows are validated.
|
|
269
|
-
translations_only: If `True`, only the translations data is validated.
|
|
270
|
-
"""
|
|
271
|
-
from rasa.validator import Validator
|
|
272
|
-
|
|
273
|
-
validator = Validator.from_importer(importer)
|
|
274
|
-
|
|
275
|
-
if stories_only:
|
|
276
|
-
all_good = _validate_story_structure(validator, max_history, fail_on_warnings)
|
|
277
|
-
elif flows_only:
|
|
278
|
-
all_good = validator.verify_flows()
|
|
279
|
-
elif translations_only:
|
|
280
|
-
all_good = validator.verify_translations()
|
|
281
|
-
else:
|
|
282
|
-
if importer.get_domain().is_empty():
|
|
283
|
-
structlogger.error(
|
|
284
|
-
"cli.validate_files.empty_domain",
|
|
285
|
-
event_info="Encountered empty domain during validation.",
|
|
286
|
-
)
|
|
287
|
-
display_research_study_prompt()
|
|
288
|
-
raise ValidationError(
|
|
289
|
-
code="cli.validate_files.empty_domain",
|
|
290
|
-
event_info="Encountered empty domain during validation.",
|
|
291
|
-
)
|
|
292
|
-
|
|
293
|
-
valid_domain = _validate_domain(validator)
|
|
294
|
-
valid_nlu = _validate_nlu(validator, fail_on_warnings)
|
|
295
|
-
valid_stories = _validate_story_structure(
|
|
296
|
-
validator, max_history, fail_on_warnings
|
|
297
|
-
)
|
|
298
|
-
valid_flows = validator.verify_flows()
|
|
299
|
-
if validator.config:
|
|
300
|
-
valid_translations = validator.verify_translations(summary_mode=True)
|
|
301
|
-
else:
|
|
302
|
-
valid_translations = True
|
|
303
|
-
valid_CALM_slot_mappings = validator.validate_CALM_slot_mappings()
|
|
304
|
-
|
|
305
|
-
all_good = (
|
|
306
|
-
valid_domain
|
|
307
|
-
and valid_nlu
|
|
308
|
-
and valid_stories
|
|
309
|
-
and valid_flows
|
|
310
|
-
and valid_translations
|
|
311
|
-
and valid_CALM_slot_mappings
|
|
312
|
-
)
|
|
313
|
-
|
|
314
|
-
if validator.config:
|
|
315
|
-
validator.warn_if_config_mandatory_keys_are_not_set()
|
|
316
|
-
|
|
317
|
-
telemetry.track_validate_files(all_good)
|
|
318
|
-
if not all_good:
|
|
319
|
-
structlogger.error(
|
|
320
|
-
"cli.validate_files.project_validation_error",
|
|
321
|
-
event_info="Project validation completed with errors.",
|
|
322
|
-
)
|
|
323
|
-
display_research_study_prompt()
|
|
324
|
-
raise ValidationError(
|
|
325
|
-
code="cli.validate_files.project_validation_error",
|
|
326
|
-
event_info="Project validation completed with errors.",
|
|
327
|
-
)
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
def _validate_domain(validator: "Validator") -> bool:
|
|
331
|
-
valid_domain_validity = validator.verify_domain_validity()
|
|
332
|
-
valid_actions_in_stories_rules = validator.verify_actions_in_stories_rules()
|
|
333
|
-
valid_forms_in_stories_rules = validator.verify_forms_in_stories_rules()
|
|
334
|
-
valid_form_slots = validator.verify_form_slots()
|
|
335
|
-
valid_slot_mappings = validator.verify_slot_mappings()
|
|
336
|
-
valid_responses = validator.check_for_no_empty_parenthesis_in_responses()
|
|
337
|
-
valid_buttons = validator.validate_button_payloads()
|
|
338
|
-
valid_slot_validation = validator.verify_slot_validation()
|
|
339
|
-
valid_conditional_responses = (
|
|
340
|
-
validator.validate_conditional_response_variation_predicates()
|
|
341
|
-
)
|
|
342
|
-
return (
|
|
343
|
-
valid_domain_validity
|
|
344
|
-
and valid_actions_in_stories_rules
|
|
345
|
-
and valid_forms_in_stories_rules
|
|
346
|
-
and valid_form_slots
|
|
347
|
-
and valid_slot_mappings
|
|
348
|
-
and valid_responses
|
|
349
|
-
and valid_buttons
|
|
350
|
-
and valid_slot_validation
|
|
351
|
-
and valid_conditional_responses
|
|
352
|
-
)
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
def _validate_nlu(validator: "Validator", fail_on_warnings: bool) -> bool:
|
|
356
|
-
return validator.verify_nlu(not fail_on_warnings)
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
def _validate_story_structure(
|
|
360
|
-
validator: "Validator", max_history: Optional[int], fail_on_warnings: bool
|
|
361
|
-
) -> bool:
|
|
362
|
-
# Check if a valid setting for `max_history` was given
|
|
363
|
-
if isinstance(max_history, int) and max_history < 1:
|
|
364
|
-
raise argparse.ArgumentTypeError(
|
|
365
|
-
f"The value of `--max-history {max_history}` is not a positive integer."
|
|
366
|
-
)
|
|
367
|
-
|
|
368
|
-
return validator.verify_story_structure(
|
|
369
|
-
not fail_on_warnings, max_history=max_history
|
|
370
|
-
)
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
def cancel_cause_not_found(
|
|
374
|
-
current: Optional[Union["Path", Text]],
|
|
375
|
-
parameter: Text,
|
|
376
|
-
default: Optional[Union["Path", Text, List[Text]]],
|
|
377
|
-
) -> None:
|
|
378
|
-
"""Exits with an error because the given path was not valid.
|
|
379
|
-
|
|
380
|
-
Args:
|
|
381
|
-
current: The path given by the user.
|
|
382
|
-
parameter: The name of the parameter.
|
|
383
|
-
default: The default value of the parameter.
|
|
384
|
-
|
|
385
|
-
"""
|
|
386
|
-
default_clause = ""
|
|
387
|
-
if default and isinstance(default, str):
|
|
388
|
-
default_clause = f"use the default location ('{default}') or"
|
|
389
|
-
elif default and isinstance(default, list):
|
|
390
|
-
default_clause = f"use one of the default locations ({', '.join(default)}) or"
|
|
391
|
-
|
|
392
|
-
structlogger.error(
|
|
393
|
-
"cli.path_does_not_exist",
|
|
394
|
-
path=current,
|
|
395
|
-
event_info=(
|
|
396
|
-
f"The path '{current}' does not exist. "
|
|
397
|
-
f"Please make sure to {default_clause} specify it "
|
|
398
|
-
f"with '--{parameter}'."
|
|
399
|
-
),
|
|
400
|
-
)
|
|
401
|
-
display_research_study_prompt()
|
|
402
|
-
raise ValidationError(
|
|
403
|
-
code="cli.path_does_not_exist",
|
|
404
|
-
path=current,
|
|
405
|
-
event_info=(
|
|
406
|
-
f"The path '{current}' does not exist. "
|
|
407
|
-
f"Please make sure to {default_clause} specify it "
|
|
408
|
-
f"with '--{parameter}'."
|
|
409
|
-
),
|
|
410
|
-
)
|
|
411
|
-
|
|
412
|
-
|
|
413
21
|
def parse_last_positional_argument_as_model_path() -> None:
|
|
414
22
|
"""Fixes the parsing of a potential positional model path argument."""
|
|
415
23
|
if (
|
|
File without changes
|