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
|
@@ -27,6 +27,13 @@ from rasa.core.constants import (
|
|
|
27
27
|
POSTGRESQL_MAX_OVERFLOW,
|
|
28
28
|
POSTGRESQL_POOL_SIZE,
|
|
29
29
|
POSTGRESQL_SCHEMA,
|
|
30
|
+
SQL_TRACKER_STORE_SSL_MODE_ENV_VAR_NAME,
|
|
31
|
+
SQL_TRACKER_STORE_SSL_ROOT_CERTIFICATE_ENV_VAR_NAME,
|
|
32
|
+
)
|
|
33
|
+
from rasa.core.iam_credentials_providers.credentials_provider_protocol import (
|
|
34
|
+
IAMCredentialsProviderInput,
|
|
35
|
+
SupportedServiceType,
|
|
36
|
+
create_iam_credentials_provider,
|
|
30
37
|
)
|
|
31
38
|
from rasa.core.tracker_stores.tracker_store import (
|
|
32
39
|
SerializedTrackerAsText,
|
|
@@ -85,6 +92,21 @@ def is_postgresql_url(url: Union[Text, "URL"]) -> bool:
|
|
|
85
92
|
return url.drivername == "postgresql"
|
|
86
93
|
|
|
87
94
|
|
|
95
|
+
def get_ssl_args() -> Dict[str, Any]:
|
|
96
|
+
"""Get SSL arguments for PostgreSQL connection from environment variables."""
|
|
97
|
+
ssl_mode = os.getenv(SQL_TRACKER_STORE_SSL_MODE_ENV_VAR_NAME)
|
|
98
|
+
ssl_root_cert = os.getenv(SQL_TRACKER_STORE_SSL_ROOT_CERTIFICATE_ENV_VAR_NAME)
|
|
99
|
+
ssl_args = {}
|
|
100
|
+
|
|
101
|
+
if ssl_mode:
|
|
102
|
+
ssl_args["sslmode"] = ssl_mode
|
|
103
|
+
|
|
104
|
+
if ssl_root_cert:
|
|
105
|
+
ssl_args["sslrootcert"] = ssl_root_cert
|
|
106
|
+
|
|
107
|
+
return ssl_args
|
|
108
|
+
|
|
109
|
+
|
|
88
110
|
def create_engine_kwargs(url: Union[Text, "URL"]) -> Dict[Text, Any]:
|
|
89
111
|
"""Get `sqlalchemy.create_engine()` kwargs.
|
|
90
112
|
|
|
@@ -119,6 +141,14 @@ def create_engine_kwargs(url: Union[Text, "URL"]) -> Dict[Text, Any]:
|
|
|
119
141
|
os.environ.get(POSTGRESQL_MAX_OVERFLOW, POSTGRESQL_DEFAULT_MAX_OVERFLOW)
|
|
120
142
|
)
|
|
121
143
|
|
|
144
|
+
ssl_args = get_ssl_args()
|
|
145
|
+
|
|
146
|
+
if ssl_args:
|
|
147
|
+
if "connect_args" in kwargs:
|
|
148
|
+
kwargs["connect_args"].update(ssl_args)
|
|
149
|
+
else:
|
|
150
|
+
kwargs["connect_args"] = ssl_args
|
|
151
|
+
|
|
122
152
|
return kwargs
|
|
123
153
|
|
|
124
154
|
|
|
@@ -197,6 +227,32 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
197
227
|
|
|
198
228
|
port = validate_port(port)
|
|
199
229
|
|
|
230
|
+
iam_credentials_provider = create_iam_credentials_provider(
|
|
231
|
+
IAMCredentialsProviderInput(
|
|
232
|
+
service_name=SupportedServiceType.TRACKER_STORE,
|
|
233
|
+
username=username,
|
|
234
|
+
host=host,
|
|
235
|
+
port=port,
|
|
236
|
+
)
|
|
237
|
+
)
|
|
238
|
+
if iam_credentials_provider is not None:
|
|
239
|
+
credentials = iam_credentials_provider.get_temporary_credentials()
|
|
240
|
+
if credentials.auth_token:
|
|
241
|
+
password = credentials.auth_token
|
|
242
|
+
structlogger.debug(
|
|
243
|
+
"sql_tracker_store.iam_credentials_provider",
|
|
244
|
+
event_info="Using temporary auth token from "
|
|
245
|
+
"IAM credentials provider.",
|
|
246
|
+
)
|
|
247
|
+
else:
|
|
248
|
+
structlogger.warning(
|
|
249
|
+
"sql_tracker_store.iam_credentials_provider.no_auth_token",
|
|
250
|
+
event_info=(
|
|
251
|
+
"IAM credentials provider did not return an auth token. "
|
|
252
|
+
"Falling back to provided password or no password."
|
|
253
|
+
),
|
|
254
|
+
)
|
|
255
|
+
|
|
200
256
|
engine_url = self.get_db_url(
|
|
201
257
|
dialect, host, port, db, username, password, login_db, query
|
|
202
258
|
)
|
|
@@ -272,7 +328,7 @@ class SQLTrackerStore(TrackerStore, SerializedTrackerAsText):
|
|
|
272
328
|
host: Database network host.
|
|
273
329
|
port: Database network port.
|
|
274
330
|
db: Database name.
|
|
275
|
-
username:
|
|
331
|
+
username: Username to use when connecting to the database.
|
|
276
332
|
password: Password for database user.
|
|
277
333
|
login_db: Alternative database name to which initially connect, and create
|
|
278
334
|
the database specified by `db` (PostgreSQL only).
|
|
@@ -542,7 +542,7 @@ class FailSafeTrackerStore(TrackerStore):
|
|
|
542
542
|
return self._tracker_store.domain
|
|
543
543
|
|
|
544
544
|
@domain.setter
|
|
545
|
-
def domain(self, domain: Domain) -> None:
|
|
545
|
+
def domain(self, domain: Optional[Domain]) -> None:
|
|
546
546
|
self._tracker_store.domain = domain
|
|
547
547
|
|
|
548
548
|
if self._fallback_tracker_store:
|
|
@@ -805,9 +805,7 @@ class AwaitableTrackerStore(TrackerStore):
|
|
|
805
805
|
async def retrieve(self, sender_id: Text) -> Optional[DialogueStateTracker]:
|
|
806
806
|
"""Wrapper to call `retrieve` method of primary tracker store."""
|
|
807
807
|
result = self._tracker_store.retrieve(sender_id)
|
|
808
|
-
return (
|
|
809
|
-
await result if isawaitable(result) else result # type: ignore[return-value, misc]
|
|
810
|
-
)
|
|
808
|
+
return await result if isawaitable(result) else result
|
|
811
809
|
|
|
812
810
|
async def keys(self) -> Iterable[Text]:
|
|
813
811
|
"""Wrapper to call `keys` method of primary tracker store."""
|
|
@@ -834,6 +832,4 @@ class AwaitableTrackerStore(TrackerStore):
|
|
|
834
832
|
) -> Optional[DialogueStateTracker]:
|
|
835
833
|
"""Wrapper to call `retrieve_full_tracker` method of primary tracker store."""
|
|
836
834
|
result = self._tracker_store.retrieve_full_tracker(conversation_id)
|
|
837
|
-
return (
|
|
838
|
-
await result if isawaitable(result) else result # type: ignore[return-value, misc]
|
|
839
|
-
)
|
|
835
|
+
return await result if isawaitable(result) else result
|
rasa/core/train.py
CHANGED
|
@@ -46,7 +46,7 @@ async def train_comparison_models(
|
|
|
46
46
|
output=str(Path(output_path, f"run_{r +1}")),
|
|
47
47
|
fixed_model_name=config_name + PERCENTAGE_KEY + str(percentage),
|
|
48
48
|
additional_arguments={
|
|
49
|
-
**additional_arguments,
|
|
49
|
+
**(additional_arguments or {}),
|
|
50
50
|
"exclusion_percentage": percentage,
|
|
51
51
|
},
|
|
52
52
|
)
|
|
@@ -47,7 +47,7 @@ import rasa.shared.utils.io
|
|
|
47
47
|
import rasa.utils.io as io_utils
|
|
48
48
|
from rasa import telemetry
|
|
49
49
|
from rasa.core import run, utils
|
|
50
|
-
from rasa.core.
|
|
50
|
+
from rasa.core.config.configuration import Configuration
|
|
51
51
|
from rasa.core.constants import DEFAULT_SERVER_FORMAT, DEFAULT_SERVER_PORT
|
|
52
52
|
from rasa.shared.constants import (
|
|
53
53
|
DEFAULT_SENDER_ID,
|
|
@@ -91,7 +91,7 @@ from rasa.shared.core.training_data.visualization import (
|
|
|
91
91
|
)
|
|
92
92
|
from rasa.shared.exceptions import InvalidConfigException
|
|
93
93
|
from rasa.shared.importers.rasa import TrainingDataImporter
|
|
94
|
-
from rasa.shared.nlu.constants import INTENT_NAME_KEY, TEXT
|
|
94
|
+
from rasa.shared.nlu.constants import ENTITIES, INTENT, INTENT_NAME_KEY, TEXT
|
|
95
95
|
|
|
96
96
|
# noinspection PyProtectedMember
|
|
97
97
|
from rasa.shared.nlu.training_data import loading
|
|
@@ -789,7 +789,7 @@ def _collect_messages(events: List[Dict[Text, Any]]) -> List[Message]:
|
|
|
789
789
|
data = event.get("parse_data", {})
|
|
790
790
|
rasa_nlu_training_data_utils.remove_untrainable_entities_from(data)
|
|
791
791
|
msg = Message.build(
|
|
792
|
-
data[
|
|
792
|
+
data[TEXT], data[INTENT][INTENT_NAME_KEY], data[ENTITIES]
|
|
793
793
|
)
|
|
794
794
|
messages.append(msg)
|
|
795
795
|
elif event.get("event") == UserUtteranceReverted.type_name and messages:
|
|
@@ -901,13 +901,13 @@ def _get_nlu_target_format(export_path: Text) -> Text:
|
|
|
901
901
|
|
|
902
902
|
def _entities_from_messages(messages: List[Message]) -> List[Text]:
|
|
903
903
|
"""Return all entities that occur in at least one of the messages."""
|
|
904
|
-
return list({e["entity"] for m in messages for e in m.data.get(
|
|
904
|
+
return list({e["entity"] for m in messages for e in m.data.get(ENTITIES, [])})
|
|
905
905
|
|
|
906
906
|
|
|
907
907
|
def _intents_from_messages(messages: List[Message]) -> Set[Text]:
|
|
908
908
|
"""Return all intents that occur in at least one of the messages."""
|
|
909
909
|
# set of distinct intents
|
|
910
|
-
distinct_intents = {m.data[
|
|
910
|
+
distinct_intents = {m.data[INTENT] for m in messages if INTENT in m.data}
|
|
911
911
|
|
|
912
912
|
return distinct_intents
|
|
913
913
|
|
|
@@ -1191,11 +1191,11 @@ def _as_md_message(parse_data: Dict[Text, Any]) -> Text:
|
|
|
1191
1191
|
"""Display the parse data of a message in markdown format."""
|
|
1192
1192
|
from rasa.shared.nlu.training_data.formats.readerwriter import TrainingDataWriter
|
|
1193
1193
|
|
|
1194
|
-
if parse_data.get(
|
|
1195
|
-
return parse_data[
|
|
1194
|
+
if parse_data.get(TEXT, "").startswith(INTENT_MESSAGE_PREFIX):
|
|
1195
|
+
return parse_data[TEXT]
|
|
1196
1196
|
|
|
1197
|
-
if not parse_data.get(
|
|
1198
|
-
parse_data[
|
|
1197
|
+
if not parse_data.get(ENTITIES):
|
|
1198
|
+
parse_data[ENTITIES] = []
|
|
1199
1199
|
|
|
1200
1200
|
return TrainingDataWriter.generate_message(parse_data)
|
|
1201
1201
|
|
|
@@ -1207,7 +1207,7 @@ def _validate_user_regex(latest_message: Dict[Text, Any], intents: List[Text]) -
|
|
|
1207
1207
|
`/greet`. Return `True` if the intent is a known one.
|
|
1208
1208
|
"""
|
|
1209
1209
|
parse_data = latest_message.get("parse_data", {})
|
|
1210
|
-
intent = parse_data.get(
|
|
1210
|
+
intent = parse_data.get(INTENT, {}).get(INTENT_NAME_KEY)
|
|
1211
1211
|
|
|
1212
1212
|
if intent in intents:
|
|
1213
1213
|
return True
|
|
@@ -1224,8 +1224,8 @@ async def _validate_user_text(
|
|
|
1224
1224
|
"""
|
|
1225
1225
|
parse_data = latest_message.get("parse_data", {})
|
|
1226
1226
|
text = _as_md_message(parse_data)
|
|
1227
|
-
intent = parse_data.get(
|
|
1228
|
-
entities = parse_data.get(
|
|
1227
|
+
intent = parse_data.get(INTENT, {}).get(INTENT_NAME_KEY)
|
|
1228
|
+
entities = parse_data.get(ENTITIES, [])
|
|
1229
1229
|
if entities:
|
|
1230
1230
|
message = (
|
|
1231
1231
|
f"Is the intent '{intent}' correct for '{text}' and are "
|
|
@@ -1276,9 +1276,9 @@ async def _validate_nlu(
|
|
|
1276
1276
|
|
|
1277
1277
|
entities = await _correct_entities(latest_message, endpoint, conversation_id)
|
|
1278
1278
|
corrected_nlu = {
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1279
|
+
INTENT: corrected_intent,
|
|
1280
|
+
ENTITIES: entities,
|
|
1281
|
+
TEXT: latest_message.get("text"),
|
|
1282
1282
|
}
|
|
1283
1283
|
|
|
1284
1284
|
await _correct_wrong_nlu(corrected_nlu, events, endpoint, conversation_id)
|
|
@@ -1315,9 +1315,9 @@ def _merge_annotated_and_original_entities(
|
|
|
1315
1315
|
# overwrite entities which have already been
|
|
1316
1316
|
# annotated in the original annotation to preserve
|
|
1317
1317
|
# additional entity parser information
|
|
1318
|
-
entities = parse_annotated.get(
|
|
1318
|
+
entities = parse_annotated.get(ENTITIES, [])[:]
|
|
1319
1319
|
for i, entity in enumerate(entities):
|
|
1320
|
-
for original_entity in parse_original.get(
|
|
1320
|
+
for original_entity in parse_original.get(ENTITIES, []):
|
|
1321
1321
|
if _is_same_entity_annotation(entity, original_entity):
|
|
1322
1322
|
entities[i] = original_entity
|
|
1323
1323
|
break
|
|
@@ -1687,7 +1687,9 @@ def run_interactive_learning(
|
|
|
1687
1687
|
p = None
|
|
1688
1688
|
|
|
1689
1689
|
app = run.configure_app(port=port, conversation_id="default", enable_api=True)
|
|
1690
|
-
endpoints =
|
|
1690
|
+
endpoints = Configuration.initialise_endpoints(
|
|
1691
|
+
endpoints_path=server_args.get("endpoints")
|
|
1692
|
+
).endpoints
|
|
1691
1693
|
|
|
1692
1694
|
# before_server_start handlers make sure the agent is loaded before the
|
|
1693
1695
|
# interactive learning IO starts
|
|
@@ -14,7 +14,7 @@ from rasa.shared.core.constants import (
|
|
|
14
14
|
from rasa.shared.core.domain import Domain, State
|
|
15
15
|
from rasa.shared.core.events import ActionExecuted, Event
|
|
16
16
|
from rasa.shared.core.generator import TrackerWithCachedStates
|
|
17
|
-
from rasa.shared.nlu.constants import TEXT
|
|
17
|
+
from rasa.shared.nlu.constants import INTENT, TEXT
|
|
18
18
|
from rasa.shared.nlu.training_data.message import Message
|
|
19
19
|
|
|
20
20
|
logger = logging.getLogger(__name__)
|
|
@@ -362,12 +362,12 @@ def _get_previous_event(
|
|
|
362
362
|
previous_event_type = "bot utterance"
|
|
363
363
|
previous_event_name = state[PREVIOUS_ACTION]["action_text"]
|
|
364
364
|
elif USER in state.keys():
|
|
365
|
-
if
|
|
365
|
+
if INTENT in state[USER]:
|
|
366
366
|
previous_event_type = "intent"
|
|
367
|
-
previous_event_name = state[USER][
|
|
368
|
-
elif
|
|
367
|
+
previous_event_name = state[USER][INTENT]
|
|
368
|
+
elif TEXT in state[USER]:
|
|
369
369
|
previous_event_type = "user utterance"
|
|
370
|
-
previous_event_name = state[USER][
|
|
370
|
+
previous_event_name = state[USER][TEXT]
|
|
371
371
|
|
|
372
372
|
if not isinstance(previous_event_name, (str, type(None))):
|
|
373
373
|
# While the Substate type doesn't restrict the value of `action_text` /
|
rasa/core/utils.py
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
|
+
import re
|
|
3
4
|
from pathlib import Path
|
|
4
5
|
from socket import SOCK_DGRAM, SOCK_STREAM
|
|
5
|
-
from typing import TYPE_CHECKING, Any, Dict, Optional, Set, Text, Tuple, Union
|
|
6
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Text, Tuple, Union
|
|
6
7
|
|
|
7
8
|
import numpy as np
|
|
8
9
|
import structlog
|
|
9
10
|
from sanic import Sanic
|
|
10
11
|
|
|
11
|
-
import rasa.cli.utils as cli_utils
|
|
12
12
|
import rasa.shared.utils.io
|
|
13
13
|
from rasa.constants import DEFAULT_SANIC_WORKERS, ENV_SANIC_WORKERS
|
|
14
|
-
from rasa.core.available_endpoints import AvailableEndpoints
|
|
15
14
|
from rasa.core.constants import (
|
|
16
15
|
ACTIVE_FLOW_METADATA_KEY,
|
|
17
16
|
DOMAIN_GROUND_TRUTH_METADATA_KEY,
|
|
@@ -19,7 +18,7 @@ from rasa.core.constants import (
|
|
|
19
18
|
UTTER_SOURCE_METADATA_KEY,
|
|
20
19
|
)
|
|
21
20
|
from rasa.core.lock_store import InMemoryLockStore, LockStore, RedisLockStore
|
|
22
|
-
from rasa.shared.constants import
|
|
21
|
+
from rasa.shared.constants import TCP_PROTOCOL
|
|
23
22
|
from rasa.shared.core.constants import (
|
|
24
23
|
SlotMappingType,
|
|
25
24
|
)
|
|
@@ -37,25 +36,6 @@ if TYPE_CHECKING:
|
|
|
37
36
|
structlogger = structlog.get_logger()
|
|
38
37
|
|
|
39
38
|
|
|
40
|
-
def read_endpoints_from_path(
|
|
41
|
-
endpoints_path: Optional[Union[Path, str]] = None,
|
|
42
|
-
) -> AvailableEndpoints:
|
|
43
|
-
"""Get `AvailableEndpoints` object from specified path.
|
|
44
|
-
|
|
45
|
-
Args:
|
|
46
|
-
endpoints_path: Path of the endpoints file to be read. If `None` the
|
|
47
|
-
default path for that file is used (`endpoints.yml`).
|
|
48
|
-
|
|
49
|
-
Returns:
|
|
50
|
-
`AvailableEndpoints` object read from endpoints file.
|
|
51
|
-
|
|
52
|
-
"""
|
|
53
|
-
endpoints_config_path = cli_utils.get_validated_path(
|
|
54
|
-
endpoints_path, "endpoints", DEFAULT_ENDPOINTS_PATH, True
|
|
55
|
-
)
|
|
56
|
-
return AvailableEndpoints.get_instance(endpoints_config_path)
|
|
57
|
-
|
|
58
|
-
|
|
59
39
|
def configure_file_logging(
|
|
60
40
|
logger_obj: logging.Logger,
|
|
61
41
|
log_file: Optional[Text],
|
|
@@ -359,3 +339,22 @@ def should_force_slot_filling(
|
|
|
359
339
|
return True, slot_name
|
|
360
340
|
|
|
361
341
|
return False, None
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
def get_slot_names_from_exit_conditions(exit_conditions: List[str]) -> List[str]:
|
|
345
|
+
"""Extract slot names from exit conditions.
|
|
346
|
+
|
|
347
|
+
Args:
|
|
348
|
+
exit_conditions: The exit conditions to extract slot names from.
|
|
349
|
+
|
|
350
|
+
Returns:
|
|
351
|
+
A list of slot names.
|
|
352
|
+
"""
|
|
353
|
+
# Find all unique names matching "slots.<name>"
|
|
354
|
+
return list(
|
|
355
|
+
{
|
|
356
|
+
name
|
|
357
|
+
for condition in exit_conditions
|
|
358
|
+
for name in re.findall(r"\bslots\.(\w+)", condition)
|
|
359
|
+
}
|
|
360
|
+
)
|
|
@@ -8,6 +8,9 @@ from rasa.dialogue_understanding.commands.chit_chat_answer_command import (
|
|
|
8
8
|
)
|
|
9
9
|
from rasa.dialogue_understanding.commands.clarify_command import ClarifyCommand
|
|
10
10
|
from rasa.dialogue_understanding.commands.command import Command
|
|
11
|
+
from rasa.dialogue_understanding.commands.continue_agent_command import (
|
|
12
|
+
ContinueAgentCommand,
|
|
13
|
+
)
|
|
11
14
|
from rasa.dialogue_understanding.commands.correct_slots_command import (
|
|
12
15
|
CorrectedSlot,
|
|
13
16
|
CorrectSlotsCommand,
|
|
@@ -29,6 +32,9 @@ from rasa.dialogue_understanding.commands.noop_command import NoopCommand
|
|
|
29
32
|
from rasa.dialogue_understanding.commands.repeat_bot_messages_command import (
|
|
30
33
|
RepeatBotMessagesCommand,
|
|
31
34
|
)
|
|
35
|
+
from rasa.dialogue_understanding.commands.restart_agent_command import (
|
|
36
|
+
RestartAgentCommand,
|
|
37
|
+
)
|
|
32
38
|
from rasa.dialogue_understanding.commands.restart_command import RestartCommand
|
|
33
39
|
from rasa.dialogue_understanding.commands.session_end_command import SessionEndCommand
|
|
34
40
|
from rasa.dialogue_understanding.commands.session_start_command import (
|
|
@@ -62,4 +68,6 @@ __all__ = [
|
|
|
62
68
|
"SessionEndCommand",
|
|
63
69
|
"RepeatBotMessagesCommand",
|
|
64
70
|
"RestartCommand",
|
|
71
|
+
"ContinueAgentCommand",
|
|
72
|
+
"RestartAgentCommand",
|
|
65
73
|
]
|
|
@@ -6,6 +6,9 @@ from typing import Any, Dict, List
|
|
|
6
6
|
|
|
7
7
|
import structlog
|
|
8
8
|
|
|
9
|
+
from rasa.core.policies.flows.agent_executor import (
|
|
10
|
+
remove_agent_stack_frame,
|
|
11
|
+
)
|
|
9
12
|
from rasa.dialogue_understanding.commands.command import Command
|
|
10
13
|
from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
11
14
|
CommandSyntaxManager,
|
|
@@ -18,7 +21,7 @@ from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
|
18
21
|
UserFlowStackFrame,
|
|
19
22
|
)
|
|
20
23
|
from rasa.dialogue_understanding.stack.utils import top_user_flow_frame
|
|
21
|
-
from rasa.shared.core.events import Event, FlowCancelled
|
|
24
|
+
from rasa.shared.core.events import AgentCancelled, Event, FlowCancelled
|
|
22
25
|
from rasa.shared.core.flows import FlowsList
|
|
23
26
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
24
27
|
|
|
@@ -48,8 +51,7 @@ class CancelFlowCommand(Command):
|
|
|
48
51
|
"""Selects the frames that were canceled.
|
|
49
52
|
|
|
50
53
|
Args:
|
|
51
|
-
|
|
52
|
-
current_flow: The current flow.
|
|
54
|
+
stack: The dialogue stack.
|
|
53
55
|
|
|
54
56
|
Returns:
|
|
55
57
|
The frames that were canceled.
|
|
@@ -71,8 +73,7 @@ class CancelFlowCommand(Command):
|
|
|
71
73
|
# we should never get here as we should always find the user flow
|
|
72
74
|
# that was canceled.
|
|
73
75
|
raise ValueError(
|
|
74
|
-
f"Could not find a user flow frame to cancel. "
|
|
75
|
-
f"Current stack: {stack}."
|
|
76
|
+
f"Could not find a user flow frame to cancel. Current stack: {stack}."
|
|
76
77
|
)
|
|
77
78
|
|
|
78
79
|
def run_command_on_tracker(
|
|
@@ -106,6 +107,19 @@ class CancelFlowCommand(Command):
|
|
|
106
107
|
)
|
|
107
108
|
return []
|
|
108
109
|
|
|
110
|
+
if agent_frame := original_tracker.stack.find_active_agent_stack_frame_for_flow(
|
|
111
|
+
current_flow.id
|
|
112
|
+
):
|
|
113
|
+
structlogger.debug(
|
|
114
|
+
"cancel_command.remove_agent_stack_frame",
|
|
115
|
+
command=self,
|
|
116
|
+
frame=agent_frame,
|
|
117
|
+
)
|
|
118
|
+
remove_agent_stack_frame(stack, agent_frame.agent_id)
|
|
119
|
+
applied_events.append(
|
|
120
|
+
AgentCancelled(agent_id=agent_frame.agent_id, flow_id=current_flow.id)
|
|
121
|
+
)
|
|
122
|
+
|
|
109
123
|
# we pass in the original dialogue stack (before any of the currently
|
|
110
124
|
# predicted commands were applied) to make sure we don't cancel any
|
|
111
125
|
# frames that were added by the currently predicted commands.
|
|
@@ -12,7 +12,11 @@ from rasa.dialogue_understanding.commands.free_form_answer_command import (
|
|
|
12
12
|
FreeFormAnswerCommand,
|
|
13
13
|
)
|
|
14
14
|
from rasa.dialogue_understanding.patterns.chitchat import ChitchatPatternFlowStackFrame
|
|
15
|
-
from rasa.
|
|
15
|
+
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
16
|
+
AgentStackFrame,
|
|
17
|
+
AgentState,
|
|
18
|
+
)
|
|
19
|
+
from rasa.shared.core.events import AgentInterrupted, Event
|
|
16
20
|
from rasa.shared.core.flows import FlowsList
|
|
17
21
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
18
22
|
|
|
@@ -52,8 +56,23 @@ class ChitChatAnswerCommand(FreeFormAnswerCommand):
|
|
|
52
56
|
The events to apply to the tracker.
|
|
53
57
|
"""
|
|
54
58
|
stack = tracker.stack
|
|
59
|
+
|
|
60
|
+
applied_events: List[Event] = []
|
|
61
|
+
|
|
62
|
+
# if the top stack frame is an agent stack frame, we need to
|
|
63
|
+
# update the state to INTERRUPTED and add an AgentInterrupted event
|
|
64
|
+
if top_stack_frame := stack.top():
|
|
65
|
+
if isinstance(top_stack_frame, AgentStackFrame):
|
|
66
|
+
applied_events.append(
|
|
67
|
+
AgentInterrupted(
|
|
68
|
+
top_stack_frame.agent_id,
|
|
69
|
+
top_stack_frame.flow_id,
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
top_stack_frame.state = AgentState.INTERRUPTED
|
|
73
|
+
|
|
55
74
|
stack.push(ChitchatPatternFlowStackFrame())
|
|
56
|
-
return tracker.create_stack_updated_events(stack)
|
|
75
|
+
return applied_events + tracker.create_stack_updated_events(stack)
|
|
57
76
|
|
|
58
77
|
def __hash__(self) -> int:
|
|
59
78
|
return hash(self.command())
|
|
@@ -13,7 +13,11 @@ from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
|
13
13
|
)
|
|
14
14
|
from rasa.dialogue_understanding.commands.utils import extract_cleaned_options
|
|
15
15
|
from rasa.dialogue_understanding.patterns.clarify import ClarifyPatternFlowStackFrame
|
|
16
|
-
from rasa.
|
|
16
|
+
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
17
|
+
AgentStackFrame,
|
|
18
|
+
AgentState,
|
|
19
|
+
)
|
|
20
|
+
from rasa.shared.core.events import AgentInterrupted, Event
|
|
17
21
|
from rasa.shared.core.flows import FlowsList
|
|
18
22
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
19
23
|
|
|
@@ -85,8 +89,22 @@ class ClarifyCommand(Command):
|
|
|
85
89
|
if flow is not None
|
|
86
90
|
]
|
|
87
91
|
|
|
92
|
+
applied_events: List[Event] = []
|
|
93
|
+
|
|
94
|
+
# if the top stack frame is an agent stack frame, we need to
|
|
95
|
+
# update the state to INTERRUPTED and add an AgentInterrupted event
|
|
96
|
+
if top_stack_frame := stack.top():
|
|
97
|
+
if isinstance(top_stack_frame, AgentStackFrame):
|
|
98
|
+
applied_events.append(
|
|
99
|
+
AgentInterrupted(
|
|
100
|
+
top_stack_frame.agent_id,
|
|
101
|
+
top_stack_frame.flow_id,
|
|
102
|
+
)
|
|
103
|
+
)
|
|
104
|
+
top_stack_frame.state = AgentState.INTERRUPTED
|
|
105
|
+
|
|
88
106
|
stack.push(ClarifyPatternFlowStackFrame(names=names))
|
|
89
|
-
return tracker.create_stack_updated_events(stack)
|
|
107
|
+
return applied_events + tracker.create_stack_updated_events(stack)
|
|
90
108
|
|
|
91
109
|
def __hash__(self) -> int:
|
|
92
110
|
return hash(tuple(self.options))
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from typing import Any, Dict, List
|
|
6
|
+
|
|
7
|
+
import structlog
|
|
8
|
+
|
|
9
|
+
from rasa.dialogue_understanding.commands.command import Command
|
|
10
|
+
from rasa.dialogue_understanding.commands.command_syntax_manager import (
|
|
11
|
+
CommandSyntaxManager,
|
|
12
|
+
CommandSyntaxVersion,
|
|
13
|
+
)
|
|
14
|
+
from rasa.shared.core.events import Event
|
|
15
|
+
from rasa.shared.core.flows import FlowsList
|
|
16
|
+
from rasa.shared.core.trackers import DialogueStateTracker
|
|
17
|
+
|
|
18
|
+
structlogger = structlog.get_logger()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass
|
|
22
|
+
class ContinueAgentCommand(Command):
|
|
23
|
+
"""A command to continue the currently active agent's execution."""
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
def command(cls) -> str:
|
|
27
|
+
"""Returns the command type."""
|
|
28
|
+
return "continue agent"
|
|
29
|
+
|
|
30
|
+
@classmethod
|
|
31
|
+
def from_dict(cls, data: Dict[str, Any]) -> ContinueAgentCommand:
|
|
32
|
+
"""Converts the dictionary to a command.
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
The converted dictionary.
|
|
36
|
+
"""
|
|
37
|
+
return ContinueAgentCommand()
|
|
38
|
+
|
|
39
|
+
def run_command_on_tracker(
|
|
40
|
+
self,
|
|
41
|
+
tracker: DialogueStateTracker,
|
|
42
|
+
all_flows: FlowsList,
|
|
43
|
+
original_tracker: DialogueStateTracker,
|
|
44
|
+
) -> List[Event]:
|
|
45
|
+
"""Runs the command on the tracker.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
tracker: The tracker to run the command on.
|
|
49
|
+
all_flows: All flows in the assistant.
|
|
50
|
+
original_tracker: The tracker before any command was executed.
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
The events to apply to the tracker.
|
|
54
|
+
"""
|
|
55
|
+
# do nothing
|
|
56
|
+
return []
|
|
57
|
+
|
|
58
|
+
def __hash__(self) -> int:
|
|
59
|
+
return hash(self.command())
|
|
60
|
+
|
|
61
|
+
def __eq__(self, other: object) -> bool:
|
|
62
|
+
return isinstance(other, ContinueAgentCommand)
|
|
63
|
+
|
|
64
|
+
def to_dsl(self) -> str:
|
|
65
|
+
"""Converts the command to a DSL string."""
|
|
66
|
+
mapper = {
|
|
67
|
+
CommandSyntaxVersion.v1: "ContinueAgent()",
|
|
68
|
+
CommandSyntaxVersion.v2: "continue agent",
|
|
69
|
+
CommandSyntaxVersion.v3: "continue agent",
|
|
70
|
+
}
|
|
71
|
+
return mapper.get(
|
|
72
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
73
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
@classmethod
|
|
77
|
+
def from_dsl(cls, match: re.Match, **kwargs: Any) -> ContinueAgentCommand:
|
|
78
|
+
"""Converts a DSL string to a command."""
|
|
79
|
+
return ContinueAgentCommand()
|
|
80
|
+
|
|
81
|
+
@staticmethod
|
|
82
|
+
def regex_pattern() -> str:
|
|
83
|
+
mapper = {
|
|
84
|
+
CommandSyntaxVersion.v1: r"ContinueAgent\(\)",
|
|
85
|
+
CommandSyntaxVersion.v2: r"""^[\s\W\d]*continue agent['"`]*$""",
|
|
86
|
+
CommandSyntaxVersion.v3: r"""^[\s\W\d]*continue agent['"`]*$""",
|
|
87
|
+
}
|
|
88
|
+
return mapper.get(
|
|
89
|
+
CommandSyntaxManager.get_syntax_version(),
|
|
90
|
+
mapper[CommandSyntaxManager.get_default_syntax_version()],
|
|
91
|
+
)
|
|
@@ -12,7 +12,11 @@ from rasa.dialogue_understanding.commands.free_form_answer_command import (
|
|
|
12
12
|
FreeFormAnswerCommand,
|
|
13
13
|
)
|
|
14
14
|
from rasa.dialogue_understanding.patterns.search import SearchPatternFlowStackFrame
|
|
15
|
-
from rasa.
|
|
15
|
+
from rasa.dialogue_understanding.stack.frames.flow_stack_frame import (
|
|
16
|
+
AgentStackFrame,
|
|
17
|
+
AgentState,
|
|
18
|
+
)
|
|
19
|
+
from rasa.shared.core.events import AgentInterrupted, Event
|
|
16
20
|
from rasa.shared.core.flows import FlowsList
|
|
17
21
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
18
22
|
|
|
@@ -52,8 +56,23 @@ class KnowledgeAnswerCommand(FreeFormAnswerCommand):
|
|
|
52
56
|
The events to apply to the tracker.
|
|
53
57
|
"""
|
|
54
58
|
stack = tracker.stack
|
|
59
|
+
|
|
60
|
+
applied_events: List[Event] = []
|
|
61
|
+
|
|
62
|
+
# if the top stack frame is an agent stack frame, we need to
|
|
63
|
+
# update the state to INTERRUPTED and add an AgentInterrupted event
|
|
64
|
+
if top_stack_frame := stack.top():
|
|
65
|
+
if isinstance(top_stack_frame, AgentStackFrame):
|
|
66
|
+
applied_events.append(
|
|
67
|
+
AgentInterrupted(
|
|
68
|
+
top_stack_frame.agent_id,
|
|
69
|
+
top_stack_frame.flow_id,
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
top_stack_frame.state = AgentState.INTERRUPTED
|
|
73
|
+
|
|
55
74
|
stack.push(SearchPatternFlowStackFrame())
|
|
56
|
-
return tracker.create_stack_updated_events(stack)
|
|
75
|
+
return applied_events + tracker.create_stack_updated_events(stack)
|
|
57
76
|
|
|
58
77
|
def __hash__(self) -> int:
|
|
59
78
|
return hash(self.command())
|