rasa-pro 3.14.0a20__py3-none-any.whl → 3.14.0a23__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 +6 -2
- 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/llm_service.py +32 -5
- rasa/builder/models.py +1 -0
- rasa/builder/project_generator.py +6 -1
- rasa/builder/service.py +16 -13
- rasa/builder/training_service.py +18 -24
- 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/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/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/human_handoff.yml +1 -1
- rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +1 -1
- rasa/cli/project_templates/finance/domain/general/_shared.yml +0 -14
- rasa/cli/project_templates/finance/domain/general/bot_challenge.yml +4 -0
- rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/finance/domain/general/human_handoff.yml +3 -6
- rasa/cli/project_templates/finance/domain/general/welcome.yml +29 -1
- 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/tests/e2e_test_cases/general/feedback.yml +1 -1
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +1 -1
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +1 -1
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +1 -1
- 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/kafka.py +1 -1
- rasa/core/channels/__init__.py +82 -35
- rasa/core/channels/development_inspector.py +3 -3
- rasa/core/channels/inspector/README.md +25 -13
- rasa/core/channels/inspector/dist/assets/{arc-35222594.js → arc-6177260a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-a0efbfd3.js → blockDiagram-38ab4fdb-b054f038.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-0584c0f2.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-39f40dbe.js → classDiagram-70f12bd4-c7a2af53.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-1ad755f3.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-b0f4f0fe.js → createText-2e5e7dd3-088372e2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-9039bff9.js → edges-e0da2a9e-58676240.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-65c9b127.js → erDiagram-9861fffd-0c14d7c6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-4f08b38e.js → flowDb-956e92f1-ea63f85c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-e95c362a.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-703c3015.js → flowchart-elk-definition-4a651766-6937abe7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-699328ea.js → ganttDiagram-c361ad54-7473f357.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-04cf4b05.js → gitGraphDiagram-72cf32ee-d0c9405e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-ee94449e.js → graph-0a6f8466.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-940162b4.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-c79c2866.js → infoDiagram-f8f76790-be397dc7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-84489d30.js → journeyDiagram-49397b02-4cefbf62.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-a9aa9858.js → layout-e7fbc2bf.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-eb73cf26.js → line-a8aa457c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-b3399f9a.js → linear-3351e0d2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-b095bf1a.js → mindmap-definition-fc14e90a-b8cbf605.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-07644b66.js → pieDiagram-8a3498a8-f327f774.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-573a3f9c.js → quadrantDiagram-120e2f19-2854c591.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-d457e1e1.js → requirementDiagram-deff3bca-964985d5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-9d26e1a2.js → sankeyDiagram-04a897e0-edeb4f33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-3a9cde10.js → sequenceDiagram-704730f1-fcf70125.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-4f3e8cec.js → stateDiagram-587899a1-0e770395.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-e617e5bf.js → stateDiagram-v2-d93cdb3a-af8dcd22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-eab30d2f.js → styles-6aaf32cf-36a9e70d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-09994be2.js → styles-9a916d00-884a8b5b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-b7110364.js → styles-c10674c1-dc097813.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-3ebc92ad.js → svgDrawCommon-08f97a94-5a2c7eed.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-7d13d2f2.js → timeline-definition-85554ec2-e89c4f6e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-488385e1.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 +29 -4
- 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/helpers/audio/audiostream.ts +7 -4
- 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 +21 -0
- rasa/core/channels/inspector/yarn.lock +336 -189
- rasa/core/channels/studio_chat.py +6 -6
- rasa/core/channels/telegram.py +4 -9
- rasa/core/channels/voice_stream/browser_audio.py +2 -0
- rasa/core/channels/voice_stream/genesys.py +1 -1
- rasa/core/channels/voice_stream/tts/deepgram.py +140 -0
- rasa/core/channels/voice_stream/twilio_media_streams.py +5 -1
- rasa/core/channels/voice_stream/voice_channel.py +3 -0
- 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 +5 -0
- rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +88 -3
- rasa/core/iam_credentials_providers/credentials_provider_protocol.py +2 -1
- rasa/core/lock_store.py +6 -4
- 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 +68 -44
- rasa/core/redis_connection_factory.py +78 -20
- rasa/core/run.py +37 -8
- rasa/core/test.py +4 -0
- rasa/core/tracker_stores/sql_tracker_store.py +1 -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/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/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_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 +16 -1
- rasa/shared/core/domain.py +0 -7
- rasa/shared/core/events.py +327 -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/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.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/METADATA +48 -42
- {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/RECORD +323 -251
- rasa/builder/scrape_rasa_docs.py +0 -97
- rasa/cli/project_templates/finance/data/general/agent_details.yml +0 -6
- rasa/cli/project_templates/finance/domain/_system/patterns/pattern_session_start.yml +0 -11
- rasa/cli/project_templates/finance/domain/general/agent_details.yml +0 -31
- rasa/core/channels/inspector/dist/assets/channel-8e08bed9.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-78c82dea.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-2b08f601.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-c941dcb3.js +0 -1336
- {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0a20.dist-info → rasa_pro-3.14.0a23.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any, Dict
|
|
5
|
+
|
|
6
|
+
from rasa.shared.utils.yaml import read_config_file
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class CredentialsConfig:
|
|
10
|
+
def __init__(
|
|
11
|
+
self, channels: Dict[str, Dict[str, Any]], config_file_path: Path
|
|
12
|
+
) -> None:
|
|
13
|
+
self.channels = channels
|
|
14
|
+
self.config_file_path = config_file_path
|
|
15
|
+
|
|
16
|
+
@classmethod
|
|
17
|
+
def load_from_file(cls, file_path: Path) -> CredentialsConfig:
|
|
18
|
+
credentials_dict = read_config_file(file_path)
|
|
19
|
+
return cls(credentials_dict, file_path)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any, Dict, List
|
|
5
|
+
|
|
6
|
+
from rasa.shared.utils.yaml import read_config_file
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class MessageProcessingConfig:
|
|
10
|
+
def __init__(
|
|
11
|
+
self,
|
|
12
|
+
recipe: str,
|
|
13
|
+
language: str,
|
|
14
|
+
assistant_id: str,
|
|
15
|
+
pipeline: List[Dict[str, Any]],
|
|
16
|
+
policies: List[Dict[str, Any]],
|
|
17
|
+
):
|
|
18
|
+
self.recipe = recipe
|
|
19
|
+
self.language = language
|
|
20
|
+
self.assistant_id = assistant_id
|
|
21
|
+
self.pipeline = pipeline
|
|
22
|
+
self.policies = policies
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def load_from_file(cls, filepath: Path) -> MessageProcessingConfig:
|
|
26
|
+
credentials_dict = read_config_file(filepath)
|
|
27
|
+
|
|
28
|
+
recipe = credentials_dict.get("recipe", "")
|
|
29
|
+
language = credentials_dict.get("language", "")
|
|
30
|
+
assistant_id = credentials_dict.get("assistant_id", "")
|
|
31
|
+
pipeline = credentials_dict.get("pipeline", [])
|
|
32
|
+
policies = credentials_dict.get("policies", [])
|
|
33
|
+
|
|
34
|
+
return cls(recipe, language, assistant_id, pipeline, policies)
|
rasa/core/constants.py
CHANGED
|
@@ -31,6 +31,10 @@ BEARER_TOKEN_PREFIX = "Bearer "
|
|
|
31
31
|
# The lowest priority is intended to be used by machine learning policies.
|
|
32
32
|
DEFAULT_POLICY_PRIORITY = 1
|
|
33
33
|
|
|
34
|
+
DEFAULT_SUB_AGENTS = "sub_agents"
|
|
35
|
+
|
|
36
|
+
MCP_SERVERS_KEY = "mcp_servers"
|
|
37
|
+
|
|
34
38
|
# The priority of intent-prediction policies.
|
|
35
39
|
# This should be below all rule based policies but higher than ML
|
|
36
40
|
# based policies. This enables a loop inside ensemble where if none
|
|
@@ -118,3 +122,4 @@ SQL_TRACKER_STORE_SSL_MODE_ENV_VAR_NAME = "SQL_TRACKER_STORE_SSL_MODE"
|
|
|
118
122
|
SQL_TRACKER_STORE_SSL_ROOT_CERTIFICATE_ENV_VAR_NAME = (
|
|
119
123
|
"SQL_TRACKER_STORE_SSL_ROOT_CERTIFICATE"
|
|
120
124
|
)
|
|
125
|
+
AWS_ELASTICACHE_CLUSTER_NAME_ENV_VAR_NAME = "AWS_ELASTICACHE_CLUSTER_NAME"
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import threading
|
|
3
3
|
import time
|
|
4
|
-
from typing import Optional
|
|
4
|
+
from typing import Optional, Tuple
|
|
5
|
+
from urllib.parse import ParseResult, urlencode, urlunparse
|
|
5
6
|
|
|
6
7
|
import boto3
|
|
8
|
+
import redis
|
|
7
9
|
import structlog
|
|
8
10
|
from aws_msk_iam_sasl_signer import MSKAuthTokenProvider
|
|
9
11
|
from botocore.exceptions import BotoCoreError
|
|
12
|
+
from botocore.model import ServiceId
|
|
13
|
+
from botocore.session import get_session
|
|
14
|
+
from botocore.signers import RequestSigner
|
|
15
|
+
from cachetools import TTLCache, cached
|
|
10
16
|
|
|
11
17
|
from rasa.core.iam_credentials_providers.credentials_provider_protocol import (
|
|
12
18
|
IAMCredentialsProvider,
|
|
@@ -28,7 +34,7 @@ class AWSRDSIAMCredentialsProvider(IAMCredentialsProvider):
|
|
|
28
34
|
self.host = host
|
|
29
35
|
self.port = port
|
|
30
36
|
|
|
31
|
-
def
|
|
37
|
+
def get_temporary_credentials(self) -> TemporaryCredentials:
|
|
32
38
|
"""Generates temporary credentials for AWS RDS."""
|
|
33
39
|
structlogger.debug(
|
|
34
40
|
"rasa.core.aws_rds_iam_credentials_provider.get_credentials",
|
|
@@ -85,7 +91,7 @@ class AWSMSKafkaIAMCredentialsProvider(IAMCredentialsProvider):
|
|
|
85
91
|
def expires_at(self, value: float) -> None:
|
|
86
92
|
self._expires_at = value
|
|
87
93
|
|
|
88
|
-
def
|
|
94
|
+
def get_temporary_credentials(self) -> TemporaryCredentials:
|
|
89
95
|
"""Generates temporary credentials for AWS MSK."""
|
|
90
96
|
with self.lock:
|
|
91
97
|
current_time = time.time() # Current time in seconds
|
|
@@ -124,6 +130,79 @@ class AWSMSKafkaIAMCredentialsProvider(IAMCredentialsProvider):
|
|
|
124
130
|
)
|
|
125
131
|
|
|
126
132
|
|
|
133
|
+
class AWSElasticacheRedisIAMCredentialsProvider(redis.CredentialProvider):
|
|
134
|
+
"""Generates temporary credentials for AWS ElastiCache Redis using IAM roles."""
|
|
135
|
+
|
|
136
|
+
def __init__(self, username: str, cluster_name: Optional[str] = None) -> None:
|
|
137
|
+
"""Initializes the provider."""
|
|
138
|
+
self.username = username
|
|
139
|
+
self.cluster_name = cluster_name
|
|
140
|
+
self.region = os.getenv("AWS_DEFAULT_REGION", os.getenv("AWS_REGION"))
|
|
141
|
+
self.session = get_session()
|
|
142
|
+
self.request_signer = RequestSigner(
|
|
143
|
+
ServiceId("elasticache"),
|
|
144
|
+
self.region,
|
|
145
|
+
"elasticache",
|
|
146
|
+
"v4",
|
|
147
|
+
self.session.get_credentials(),
|
|
148
|
+
self.session.get_component("event_emitter"),
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
# Generated IAM tokens are valid for 15 minutes
|
|
152
|
+
@cached(cache=TTLCache(maxsize=128, ttl=900))
|
|
153
|
+
def get_credentials(self) -> Tuple[str, str]:
|
|
154
|
+
"""Generates temporary credentials for AWS ElastiCache Redis.
|
|
155
|
+
|
|
156
|
+
Required method implementation by redis-py CredentialProvider parent class.
|
|
157
|
+
Used internally by redis-py when connecting to Redis.
|
|
158
|
+
"""
|
|
159
|
+
query_params = {"Action": "connect", "User": self.username}
|
|
160
|
+
url = urlunparse(
|
|
161
|
+
ParseResult(
|
|
162
|
+
scheme="https",
|
|
163
|
+
netloc=self.cluster_name,
|
|
164
|
+
path="/",
|
|
165
|
+
query=urlencode(query_params),
|
|
166
|
+
params="",
|
|
167
|
+
fragment="",
|
|
168
|
+
)
|
|
169
|
+
)
|
|
170
|
+
signed_url = self.request_signer.generate_presigned_url(
|
|
171
|
+
{"method": "GET", "url": url, "body": {}, "headers": {}, "context": {}},
|
|
172
|
+
operation_name="connect",
|
|
173
|
+
expires_in=900,
|
|
174
|
+
region_name=self.region,
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
# RequestSigner only seems to work if the URL has a protocol, but
|
|
178
|
+
# Elasticache only accepts the URL without a protocol
|
|
179
|
+
# So strip it off the signed URL before returning
|
|
180
|
+
return self.username, signed_url.removeprefix("https://")
|
|
181
|
+
|
|
182
|
+
def get_temporary_credentials(self) -> TemporaryCredentials:
|
|
183
|
+
"""Generates temporary credentials for AWS ElastiCache Redis.
|
|
184
|
+
|
|
185
|
+
Implemented to comply with the IAMCredentialsProvider rasa-pro interface.
|
|
186
|
+
Calls the get_credentials method which is used internally by redis-py.
|
|
187
|
+
"""
|
|
188
|
+
try:
|
|
189
|
+
username, signed_url = self.get_credentials()
|
|
190
|
+
structlogger.info(
|
|
191
|
+
"rasa.core.aws_elasticache_redis_iam_credentials_provider.generated_credentials",
|
|
192
|
+
event_info="Successfully generated temporary credentials for "
|
|
193
|
+
"AWS ElastiCache Redis.",
|
|
194
|
+
)
|
|
195
|
+
return TemporaryCredentials(username=username, presigned_url=signed_url)
|
|
196
|
+
except Exception as exc:
|
|
197
|
+
structlogger.error(
|
|
198
|
+
"rasa.core.aws_elasticache_redis_iam_credentials_provider.error_generating_credentials",
|
|
199
|
+
event_info="Failed to generate temporary credentials for "
|
|
200
|
+
"AWS ElastiCache Redis.",
|
|
201
|
+
error=str(exc),
|
|
202
|
+
)
|
|
203
|
+
return TemporaryCredentials()
|
|
204
|
+
|
|
205
|
+
|
|
127
206
|
def create_aws_iam_credentials_provider(
|
|
128
207
|
provider_input: "IAMCredentialsProviderInput",
|
|
129
208
|
) -> Optional["IAMCredentialsProvider"]:
|
|
@@ -138,4 +217,10 @@ def create_aws_iam_credentials_provider(
|
|
|
138
217
|
if provider_input.service_name == SupportedServiceType.EVENT_BROKER:
|
|
139
218
|
return AWSMSKafkaIAMCredentialsProvider()
|
|
140
219
|
|
|
220
|
+
if provider_input.service_name == SupportedServiceType.LOCK_STORE:
|
|
221
|
+
return AWSElasticacheRedisIAMCredentialsProvider(
|
|
222
|
+
username=provider_input.username,
|
|
223
|
+
cluster_name=provider_input.cluster_name,
|
|
224
|
+
)
|
|
225
|
+
|
|
141
226
|
return None
|
|
@@ -25,7 +25,7 @@ class TemporaryCredentials(BaseModel):
|
|
|
25
25
|
class IAMCredentialsProvider(Protocol):
|
|
26
26
|
"""Interface for generating temporary credentials using IAM roles."""
|
|
27
27
|
|
|
28
|
-
def
|
|
28
|
+
def get_temporary_credentials(self) -> TemporaryCredentials:
|
|
29
29
|
"""Generates temporary credentials using IAM roles."""
|
|
30
30
|
...
|
|
31
31
|
|
|
@@ -51,6 +51,7 @@ class IAMCredentialsProviderInput(BaseModel):
|
|
|
51
51
|
username: Optional[str] = None
|
|
52
52
|
host: Optional[str] = None
|
|
53
53
|
port: Optional[int] = None
|
|
54
|
+
cluster_name: Optional[str] = None
|
|
54
55
|
|
|
55
56
|
|
|
56
57
|
def create_iam_credentials_provider(
|
rasa/core/lock_store.py
CHANGED
|
@@ -17,7 +17,7 @@ from pydantic import (
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
import rasa.shared.utils.common
|
|
20
|
-
from rasa.core.constants import DEFAULT_LOCK_LIFETIME
|
|
20
|
+
from rasa.core.constants import DEFAULT_LOCK_LIFETIME, IAM_CLOUD_PROVIDER_ENV_VAR_NAME
|
|
21
21
|
from rasa.core.lock import TicketLock
|
|
22
22
|
from rasa.core.redis_connection_factory import (
|
|
23
23
|
DeploymentMode,
|
|
@@ -227,7 +227,7 @@ class LockStore:
|
|
|
227
227
|
|
|
228
228
|
|
|
229
229
|
class RedisLockStoreConfig(BaseModel):
|
|
230
|
-
host: Union[AnyUrl, Literal["localhost"]] = Field(
|
|
230
|
+
host: Union[AnyUrl, Literal["localhost"], str] = Field(
|
|
231
231
|
default="localhost", description="The host of the redis server."
|
|
232
232
|
)
|
|
233
233
|
port: NonNegativeInt = Field(
|
|
@@ -308,7 +308,9 @@ class RedisLockStoreConfig(BaseModel):
|
|
|
308
308
|
|
|
309
309
|
@model_validator(mode="after")
|
|
310
310
|
def verify_username_password(self) -> RedisLockStoreConfig:
|
|
311
|
-
if
|
|
311
|
+
if os.getenv(IAM_CLOUD_PROVIDER_ENV_VAR_NAME) is None and (
|
|
312
|
+
bool(self.username) ^ bool(self.password)
|
|
313
|
+
):
|
|
312
314
|
raise ValueError(
|
|
313
315
|
f"Expected username and password. "
|
|
314
316
|
f"Found: username: {'<has value>' if self.username else '<N/A>'}, "
|
|
@@ -341,7 +343,7 @@ class RedisLockStore(LockStore):
|
|
|
341
343
|
ssl_keyfile=self.config.ssl_keyfile,
|
|
342
344
|
ssl_certfile=self.config.ssl_certfile,
|
|
343
345
|
ssl_ca_certs=self.config.ssl_ca_certs,
|
|
344
|
-
deployment_mode=self.config.deployment_mode,
|
|
346
|
+
deployment_mode=self.config.deployment_mode.value,
|
|
345
347
|
endpoints=self.config.endpoints,
|
|
346
348
|
sentinel_service=self.config.sentinel_service,
|
|
347
349
|
socket_timeout=self.config.socket_timeout,
|
rasa/core/nlg/generator.py
CHANGED
|
@@ -2,7 +2,6 @@ from typing import Any, Dict, List, Optional, Text, Union
|
|
|
2
2
|
|
|
3
3
|
import structlog
|
|
4
4
|
from jinja2 import Template
|
|
5
|
-
from pypred import Predicate
|
|
6
5
|
|
|
7
6
|
import rasa.shared.utils.common
|
|
8
7
|
import rasa.shared.utils.io
|
|
@@ -12,6 +11,7 @@ from rasa.shared.constants import CHANNEL, RESPONSE_CONDITION
|
|
|
12
11
|
from rasa.shared.core.domain import Domain
|
|
13
12
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
14
13
|
from rasa.utils.endpoints import EndpointConfig
|
|
14
|
+
from rasa.utils.pypred import Predicate
|
|
15
15
|
|
|
16
16
|
structlogger = structlog.get_logger()
|
|
17
17
|
|
|
@@ -12,7 +12,7 @@ from jinja2 import Template
|
|
|
12
12
|
from pydantic import ValidationError
|
|
13
13
|
|
|
14
14
|
import rasa.shared.utils.io
|
|
15
|
-
from rasa.core.available_endpoints import AvailableEndpoints
|
|
15
|
+
from rasa.core.config.available_endpoints import AvailableEndpoints
|
|
16
16
|
from rasa.core.constants import (
|
|
17
17
|
UTTER_SOURCE_METADATA_KEY,
|
|
18
18
|
)
|
|
@@ -63,6 +63,8 @@ from rasa.shared.constants import (
|
|
|
63
63
|
)
|
|
64
64
|
from rasa.shared.core.constants import (
|
|
65
65
|
ACTION_CANCEL_FLOW,
|
|
66
|
+
ACTION_METADATA_MESSAGE_KEY,
|
|
67
|
+
ACTION_METADATA_TEXT_KEY,
|
|
66
68
|
ACTION_SEND_TEXT_NAME,
|
|
67
69
|
DEFAULT_SLOT_NAMES,
|
|
68
70
|
)
|
|
@@ -585,8 +587,8 @@ class EnterpriseSearchPolicy(LLMHealthCheckMixin, EmbeddingsHealthCheckMixin, Po
|
|
|
585
587
|
return self._create_prediction_internal_error(domain, tracker)
|
|
586
588
|
|
|
587
589
|
action_metadata = {
|
|
588
|
-
|
|
589
|
-
|
|
590
|
+
ACTION_METADATA_MESSAGE_KEY: {
|
|
591
|
+
ACTION_METADATA_TEXT_KEY: response,
|
|
590
592
|
SEARCH_RESULTS_METADATA_KEY: [
|
|
591
593
|
result.text for result in documents.results
|
|
592
594
|
],
|
|
@@ -137,8 +137,8 @@ class FlowPolicy(Policy):
|
|
|
137
137
|
|
|
138
138
|
# create executor and predict next action
|
|
139
139
|
try:
|
|
140
|
-
prediction = flow_executor.advance_flows(
|
|
141
|
-
tracker, domain.action_names_or_texts, flows
|
|
140
|
+
prediction = await flow_executor.advance_flows(
|
|
141
|
+
tracker, domain.action_names_or_texts, flows, domain.slots
|
|
142
142
|
)
|
|
143
143
|
return self._create_prediction_result(
|
|
144
144
|
prediction.action_name,
|
|
@@ -164,8 +164,8 @@ class FlowPolicy(Policy):
|
|
|
164
164
|
# we retry, with the internal error frame on the stack
|
|
165
165
|
events = tracker.create_stack_updated_events(updated_stack)
|
|
166
166
|
tracker.update_with_events(events)
|
|
167
|
-
prediction = flow_executor.advance_flows(
|
|
168
|
-
tracker, domain.action_names_or_texts, flows
|
|
167
|
+
prediction = await flow_executor.advance_flows(
|
|
168
|
+
tracker, domain.action_names_or_texts, flows, domain.slots
|
|
169
169
|
)
|
|
170
170
|
collected_events = events + (prediction.events or [])
|
|
171
171
|
return self._create_prediction_result(
|