rasa-pro 3.14.0.dev20250825__py3-none-any.whl → 3.14.0.dev20250901__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/builder/README.md +120 -0
- rasa/builder/__init__.py +0 -0
- rasa/builder/auth.py +176 -0
- rasa/builder/config.py +91 -0
- rasa/builder/copilot/__init__.py +0 -0
- rasa/builder/copilot/constants.py +28 -0
- rasa/builder/copilot/copilot.py +376 -0
- rasa/builder/copilot/copilot_response_handler.py +522 -0
- rasa/builder/copilot/copilot_templated_message_provider.py +58 -0
- rasa/builder/copilot/exceptions.py +32 -0
- rasa/builder/copilot/models.py +464 -0
- rasa/builder/copilot/prompts/__init__.py +0 -0
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +771 -0
- rasa/builder/copilot/signing.py +305 -0
- rasa/builder/copilot/telemetry.py +200 -0
- rasa/builder/copilot/templated_messages/__init__.py +0 -0
- rasa/builder/copilot/templated_messages/copilot_internal_messages_templates.yml +16 -0
- rasa/builder/copilot/templated_messages/copilot_templated_responses.yml +38 -0
- rasa/builder/document_retrieval/__init__.py +0 -0
- rasa/builder/document_retrieval/constants.py +15 -0
- rasa/builder/document_retrieval/inkeep-rag-response-schema.json +64 -0
- rasa/builder/document_retrieval/inkeep_document_retrieval.py +238 -0
- rasa/builder/document_retrieval/models.py +62 -0
- rasa/builder/download.py +147 -0
- rasa/builder/exceptions.py +91 -0
- rasa/builder/guardrails/__init__.py +1 -0
- rasa/builder/guardrails/constants.py +9 -0
- rasa/builder/guardrails/exceptions.py +4 -0
- rasa/builder/guardrails/lakera.py +206 -0
- rasa/builder/guardrails/models.py +231 -0
- rasa/builder/guardrails/store.py +238 -0
- rasa/builder/guardrails/utils.py +328 -0
- rasa/builder/job_manager.py +87 -0
- rasa/builder/jobs.py +270 -0
- rasa/builder/llm_service.py +246 -0
- rasa/builder/logging_utils.py +265 -0
- rasa/builder/main.py +258 -0
- rasa/builder/models.py +216 -0
- rasa/builder/project_generator.py +462 -0
- rasa/builder/project_info.py +72 -0
- rasa/builder/scrape_rasa_docs.py +97 -0
- rasa/builder/service.py +1335 -0
- rasa/builder/shared/tracker_context.py +212 -0
- rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
- rasa/builder/training_service.py +124 -0
- rasa/builder/validation_service.py +97 -0
- rasa/cli/project_templates/basic/actions/__init__ +0 -0
- rasa/cli/project_templates/basic/actions/action_human_handoff.py +40 -0
- rasa/cli/project_templates/basic/config.yml +27 -0
- rasa/cli/project_templates/basic/credentials.yml +33 -0
- rasa/cli/project_templates/basic/data/data.md +9 -0
- rasa/cli/project_templates/basic/data/general/feedback.yml +21 -0
- rasa/cli/project_templates/basic/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/basic/data/general/hello.yml +6 -0
- rasa/cli/project_templates/basic/data/general/help.yml +6 -0
- rasa/cli/project_templates/basic/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/basic/data/general/show_faqs.yml +6 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_cannot_handle.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_completed.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_correction.yml +7 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_search.yml +8 -0
- rasa/cli/project_templates/basic/data/system/patterns/pattern_session_start.yml +8 -0
- rasa/cli/project_templates/basic/docs/docs.md +5 -0
- rasa/cli/project_templates/basic/docs/template.txt +28 -0
- rasa/cli/project_templates/basic/domain/domain.md +9 -0
- rasa/cli/project_templates/basic/domain/general/feedback.yml +25 -0
- rasa/cli/project_templates/basic/domain/general/goodbye.yml +9 -0
- rasa/cli/project_templates/basic/domain/general/hello.yml +7 -0
- rasa/cli/project_templates/basic/domain/general/help.yml +21 -0
- rasa/cli/project_templates/basic/domain/general/human_handoff.yml +32 -0
- rasa/cli/project_templates/basic/domain/general/show_faqs.yml +14 -0
- rasa/cli/project_templates/basic/domain/system/patterns/pattern_cannot_handle.yml +5 -0
- rasa/cli/project_templates/basic/domain/system/patterns/pattern_session_start.yml +19 -0
- rasa/cli/project_templates/basic/endpoints.yml +63 -0
- rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
- rasa/cli/project_templates/finance/actions/__init__.py +46 -0
- rasa/cli/project_templates/finance/actions/accounts/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/accounts/action_ask_account.py +47 -0
- rasa/cli/project_templates/finance/actions/accounts/action_check_balance.py +40 -0
- rasa/cli/project_templates/finance/actions/action_session_start.py +74 -0
- rasa/cli/project_templates/finance/actions/cards/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/cards/action_ask_card.py +48 -0
- rasa/cli/project_templates/finance/actions/cards/action_check_card_existence.py +36 -0
- rasa/cli/project_templates/finance/actions/cards/action_update_card_status.py +54 -0
- rasa/cli/project_templates/finance/actions/database.py +277 -0
- rasa/cli/project_templates/finance/actions/transfers/__init__.py +0 -0
- rasa/cli/project_templates/finance/actions/transfers/action_add_payee.py +52 -0
- rasa/cli/project_templates/finance/actions/transfers/action_ask_account_from.py +51 -0
- rasa/cli/project_templates/finance/actions/transfers/action_check_payee_existence.py +40 -0
- rasa/cli/project_templates/finance/actions/transfers/action_check_sufficient_funds.py +40 -0
- rasa/cli/project_templates/finance/actions/transfers/action_list_payees.py +46 -0
- rasa/cli/project_templates/finance/actions/transfers/action_process_immediate_payment.py +18 -0
- rasa/cli/project_templates/finance/actions/transfers/action_remove_payee.py +49 -0
- rasa/cli/project_templates/finance/actions/transfers/action_schedule_payment.py +19 -0
- rasa/cli/project_templates/finance/actions/transfers/action_validate_payment_date.py +36 -0
- rasa/cli/project_templates/finance/config.yml +21 -0
- rasa/cli/project_templates/finance/credentials.yml +32 -0
- rasa/cli/project_templates/finance/csvs/accounts.csv +8 -0
- rasa/cli/project_templates/finance/csvs/advisors.csv +7 -0
- rasa/cli/project_templates/finance/csvs/appointments.csv +211 -0
- rasa/cli/project_templates/finance/csvs/branches.csv +10 -0
- rasa/cli/project_templates/finance/csvs/cards.csv +11 -0
- rasa/cli/project_templates/finance/csvs/payees.csv +11 -0
- rasa/cli/project_templates/finance/csvs/transactions.csv +71 -0
- rasa/cli/project_templates/finance/csvs/users.csv +4 -0
- rasa/cli/project_templates/finance/data/accounts/check_balance.yml +10 -0
- rasa/cli/project_templates/finance/data/cards/block_card.yml +66 -0
- rasa/cli/project_templates/finance/data/cards/select_card.yml +12 -0
- rasa/cli/project_templates/finance/data/general/bot_identity.yml +6 -0
- rasa/cli/project_templates/finance/data/general/feedback.yml +20 -0
- rasa/cli/project_templates/finance/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/finance/data/general/hello.yml +7 -0
- rasa/cli/project_templates/finance/data/general/help.yml +9 -0
- rasa/cli/project_templates/finance/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/finance/data/general/welcome.yml +9 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_chitchat.yml +5 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_completed.yml +7 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_correction.yml +7 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_search.yml +8 -0
- rasa/cli/project_templates/finance/data/system/patterns/pattern_session_start.yml +8 -0
- rasa/cli/project_templates/finance/data/system/source/accounts.json +51 -0
- rasa/cli/project_templates/finance/data/system/source/advisors.json +44 -0
- rasa/cli/project_templates/finance/data/system/source/appointments.json +1474 -0
- rasa/cli/project_templates/finance/data/system/source/branches.json +47 -0
- rasa/cli/project_templates/finance/data/system/source/cards.json +72 -0
- rasa/cli/project_templates/finance/data/system/source/payees.json +74 -0
- rasa/cli/project_templates/finance/data/system/source/transactions.json +492 -0
- rasa/cli/project_templates/finance/data/system/source/users.json +29 -0
- rasa/cli/project_templates/finance/data/transfers/add_payee.yml +29 -0
- rasa/cli/project_templates/finance/data/transfers/list_payees.yml +5 -0
- rasa/cli/project_templates/finance/data/transfers/remove_payee.yml +21 -0
- rasa/cli/project_templates/finance/data/transfers/transfer_money.yml +67 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/consequences_of_blocking_card.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/reasons_to_block_card.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/recovering_from_card_fraud.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/tips_for_card_security.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/block_card/what_to_do_if_card_is_lost.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/account_balance_security.txt +7 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/common_balance_inquiries.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/methods_to_check_balance.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/understanding_balance_updates.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/check_balance/what_to_do_if_balance_is_incorrect.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/benefits_of_authorised_payees.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/common_issues_with_payees.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/general_payee_information.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/payee_management_tips.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/manage_payees/understanding_payee_types.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/common_transfer_errors.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/fees_for_transfers.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/general_transfer_information.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/security_tips_for_transfers.txt +8 -0
- rasa/cli/project_templates/finance/docs/bank_of_rasa_faq/transfer_money/transfer_processing_times.txt +8 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part1.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part10.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part11.txt +48 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part12.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part13.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part14.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part15.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part16.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part17.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part18.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part19.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part2.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part20.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part21.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part22.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part23.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part24.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part25.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part26.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part27.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part28.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part29.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part3.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part30.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part31.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part32.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part33.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part34.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part35.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part36.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part37.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part38.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part39.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part4.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part40.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part41.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part42.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part43.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part44.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part45.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part46.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part47.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part48.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part49.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part5.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part50.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part51.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part52.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part53.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part54.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part55.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part56.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part57.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part58.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part59.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part6.txt +47 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part60.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part61.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part7.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part8.txt +50 -0
- rasa/cli/project_templates/finance/docs/huggingface_alpaca_dataset/questions_part9.txt +47 -0
- rasa/cli/project_templates/finance/domain/accounts/check_balance.yml +11 -0
- rasa/cli/project_templates/finance/domain/cards/block_card.yml +101 -0
- rasa/cli/project_templates/finance/domain/cards/select_card.yml +12 -0
- rasa/cli/project_templates/finance/domain/general/assistant_details.yml +12 -0
- rasa/cli/project_templates/finance/domain/general/bot_identity.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/cannot_handle.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/defaults.yml +24 -0
- rasa/cli/project_templates/finance/domain/general/feedback.yml +28 -0
- rasa/cli/project_templates/finance/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/finance/domain/general/help.yml +5 -0
- rasa/cli/project_templates/finance/domain/general/human_handoff.yml +30 -0
- rasa/cli/project_templates/finance/domain/general/utils.yml +13 -0
- rasa/cli/project_templates/finance/domain/general/welcome.yml +8 -0
- rasa/cli/project_templates/finance/domain/transfers/add_payee.yml +47 -0
- rasa/cli/project_templates/finance/domain/transfers/list_payees.yml +4 -0
- rasa/cli/project_templates/finance/domain/transfers/remove_payee.yml +16 -0
- rasa/cli/project_templates/finance/domain/transfers/transfer_money.yml +79 -0
- rasa/cli/project_templates/finance/endpoints.yml +63 -0
- rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
- rasa/cli/project_templates/telco/actions/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/billing/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/billing/actions_billing.py +204 -0
- rasa/cli/project_templates/telco/actions/general/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/general/action_human_handoff.py +49 -0
- rasa/cli/project_templates/telco/actions/network/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/network/actions_get_data_from_db.py +48 -0
- rasa/cli/project_templates/telco/actions/network/actions_run_diagnostics.py +28 -0
- rasa/cli/project_templates/telco/actions/network/actions_session_start.py +18 -0
- rasa/cli/project_templates/telco/config.yml +27 -0
- rasa/cli/project_templates/telco/credentials.yml +33 -0
- rasa/cli/project_templates/telco/csvs/billing.csv +19 -0
- rasa/cli/project_templates/telco/csvs/customers.csv +5 -0
- rasa/cli/project_templates/telco/data/billing/flow_understand_bill.yml +45 -0
- rasa/cli/project_templates/telco/data/general/bot_challenge.yml +6 -0
- rasa/cli/project_templates/telco/data/general/feedback.yml +20 -0
- rasa/cli/project_templates/telco/data/general/goodbye.yml +6 -0
- rasa/cli/project_templates/telco/data/general/hello.yml +6 -0
- rasa/cli/project_templates/telco/data/general/human_handoff.yml +16 -0
- rasa/cli/project_templates/telco/data/general/patterns.yml +30 -0
- rasa/cli/project_templates/telco/data/network/flow_reboot_router.yml +8 -0
- rasa/cli/project_templates/telco/data/network/flow_reset_router.yml +7 -0
- rasa/cli/project_templates/telco/data/network/flow_solve_internet_issue.yml +73 -0
- rasa/cli/project_templates/telco/docs/docs.md +5 -0
- rasa/cli/project_templates/telco/docs/network/reset_vs_rboot_router.txt +1 -0
- rasa/cli/project_templates/telco/docs/network/restart_router.txt +6 -0
- rasa/cli/project_templates/telco/docs/network/run_speed_test.txt +6 -0
- rasa/cli/project_templates/telco/domain/billing/domain_undertand_bill.yml +102 -0
- rasa/cli/project_templates/telco/domain/general/bot_challenge.yml +4 -0
- rasa/cli/project_templates/telco/domain/general/feedback.yml +25 -0
- rasa/cli/project_templates/telco/domain/general/goodbye.yml +7 -0
- rasa/cli/project_templates/telco/domain/general/hello.yml +5 -0
- rasa/cli/project_templates/telco/domain/general/human_handoff.yml +29 -0
- rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
- rasa/cli/project_templates/telco/domain/network/domain_reboot_router.yml +21 -0
- rasa/cli/project_templates/telco/domain/network/domain_reset_router.yml +12 -0
- rasa/cli/project_templates/telco/domain/network/domain_run_speed_test.yml +25 -0
- rasa/cli/project_templates/telco/domain/network/domain_solve_internet_issue.yml +75 -0
- rasa/cli/project_templates/telco/domain/shared.yml +129 -0
- rasa/cli/project_templates/telco/endpoints.yml +63 -0
- rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
- rasa/cli/project_templates/tutorial/config.yml +2 -1
- rasa/cli/scaffold.py +46 -2
- rasa/core/actions/action.py +0 -1
- rasa/core/channels/inspector/dist/assets/{arc-1ddec37b.js → arc-18042c22.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-18af387c.js → blockDiagram-38ab4fdb-fdd6bcfa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-250127a3.js → c4Diagram-3d4e48cf-f5ae6786.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-b9b536fc.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-c3388b34.js → classDiagram-70f12bd4-81efba3e.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-9c893a82.js → classDiagram-v2-f2320105-3b6b6a92.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-78d2ddcf.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-c111213b.js → createText-2e5e7dd3-31422447.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-812a729d.js → edges-e0da2a9e-518a90db.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-fd5051bc.js → erDiagram-9861fffd-a6d3c25a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-3287ac02.js → flowDb-956e92f1-e048c2be.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-692fb0b2.js → flowDiagram-66a62f08-c7474c91.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-8b09c060.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-008376f1.js → flowchart-elk-definition-4a651766-cb4d8723.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-df330a69.js → ganttDiagram-c361ad54-346636a2.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-e03676fb.js → gitGraphDiagram-72cf32ee-7c508874.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-46fad2ba.js → graph-14702d8a.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-a484ac55.js → index-3862675e-f18b534b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-a003633f.js → index-4d4bdf3a.js} +231 -231
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-3f9e6ec2.js → infoDiagram-f8f76790-64154b83.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-79f72383.js → journeyDiagram-49397b02-833a5f95.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-aad098e5.js → layout-5a3b2123.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-219ab7ae.js → line-2272a8c7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-2cddbe62.js → linear-35bcf273.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-1d41ed99.js → mindmap-definition-fc14e90a-92dcb0e9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-cc496ee8.js → pieDiagram-8a3498a8-94dbc900.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-84d32884.js → quadrantDiagram-120e2f19-8b7a9c33.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-c0deb984.js → requirementDiagram-deff3bca-6f7eab81.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-b9d7fd62.js → sankeyDiagram-04a897e0-f43e581d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-7d517565.js → sequenceDiagram-704730f1-0bcbefc3.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-98ef9b27.js → stateDiagram-587899a1-b8a74083.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-cee70748.js → stateDiagram-v2-d93cdb3a-2070218f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-3f9d1c96.js → styles-6aaf32cf-f1d54e34.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-67471923.js → styles-9a916d00-980de489.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-bd093fb7.js → styles-c10674c1-3c03abde.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-675794e8.js → svgDrawCommon-08f97a94-46ba068f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-0ac67617.js → timeline-definition-85554ec2-901f5e3d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-c018dc37.js → xychartDiagram-e933f94c-acbc628a.js} +1 -1
- rasa/core/channels/inspector/dist/index.html +2 -2
- rasa/core/channels/inspector/index.html +1 -1
- rasa/core/channels/inspector/src/App.tsx +10 -11
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +12 -3
- rasa/core/channels/studio_chat.py +25 -7
- rasa/core/policies/enterprise_search_policy.py +4 -7
- rasa/core/policies/flows/flow_executor.py +8 -1
- rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
- rasa/engine/storage/local_model_storage.py +45 -2
- rasa/model_manager/model_api.py +1 -2
- rasa/model_manager/runner_service.py +1 -1
- rasa/model_manager/trainer_service.py +12 -9
- rasa/model_manager/utils.py +1 -29
- rasa/shared/core/domain.py +62 -15
- rasa/shared/core/flows/flow_step.py +7 -1
- rasa/shared/core/flows/steps/call.py +8 -1
- rasa/shared/core/flows/yaml_flows_io.py +16 -8
- rasa/shared/core/slots.py +4 -0
- rasa/shared/importers/importer.py +6 -0
- rasa/shared/importers/utils.py +77 -1
- rasa/studio/upload.py +12 -46
- rasa/telemetry.py +97 -23
- rasa/utils/io.py +27 -9
- rasa/utils/json_utils.py +6 -1
- rasa/utils/log_utils.py +5 -1
- rasa/utils/openapi.py +144 -0
- rasa/validator.py +7 -3
- rasa/version.py +1 -1
- {rasa_pro-3.14.0.dev20250825.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/METADATA +9 -10
- {rasa_pro-3.14.0.dev20250825.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/RECORD +347 -73
- rasa/core/channels/inspector/dist/assets/channel-59f6d54b.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-26177ddb.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-29c03f5a.js +0 -1
- {rasa_pro-3.14.0.dev20250825.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev20250825.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev20250825.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/entry_points.txt +0 -0
rasa/builder/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Rasa Prompt-to-Bot Service
|
|
2
|
+
|
|
3
|
+
A production-ready service that generates Rasa chatbots from natural language descriptions using LLMs.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
The service follows functional programming principles with minimal use of classes:
|
|
8
|
+
|
|
9
|
+
### Core Modules
|
|
10
|
+
|
|
11
|
+
- **`config.py`** - Configuration management using module-level constants
|
|
12
|
+
- **`exceptions.py`** - Custom exception hierarchy for error handling
|
|
13
|
+
- **`models.py`** - Pydantic models for request/response validation
|
|
14
|
+
- **`llm_service.py`** - LLM interactions (minimal class for state management)
|
|
15
|
+
- **`validation_service.py`** - Project validation functions
|
|
16
|
+
- **`training_service.py`** - Model training functions
|
|
17
|
+
- **`project_generator.py`** - Project generation (class for bot files state)
|
|
18
|
+
- **`service.py`** - Main orchestrating service (class for app state)
|
|
19
|
+
- **`logging_utils.py`** - Thread-safe logging utilities
|
|
20
|
+
- **`llm_context.py`** - Conversation context formatting
|
|
21
|
+
- **`main.py`** - Application entry point
|
|
22
|
+
|
|
23
|
+
### Utility Scripts
|
|
24
|
+
|
|
25
|
+
- **`scrape_rasa_docs.py`** - Documentation scraping
|
|
26
|
+
- **`create_openai_vector_store.py`** - Documentation indexing
|
|
27
|
+
|
|
28
|
+
## Key Design Principles
|
|
29
|
+
|
|
30
|
+
1. **Functional First**: Use functions for stateless operations
|
|
31
|
+
2. **Minimal Classes**: Classes only when state management is needed
|
|
32
|
+
3. **Configuration**: Environment variables with sensible defaults
|
|
33
|
+
4. **Error Handling**: Structured exception hierarchy
|
|
34
|
+
5. **Type Safety**: Full type annotations and Pydantic validation
|
|
35
|
+
6. **Thread Safety**: Safe concurrent operations
|
|
36
|
+
7. **Resource Management**: Proper cleanup and lifecycle handling
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
### Running the Service
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
python rasa/builder/main.py
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Environment Configuration
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# OpenAI Settings
|
|
50
|
+
export OPENAI_MODEL="gpt-4.1-2025-04-14"
|
|
51
|
+
export OPENAI_TEMPERATURE="0.7"
|
|
52
|
+
export OPENAI_VECTOR_STORE_ID="vs_xxxxx"
|
|
53
|
+
export OPENAI_TIMEOUT="30"
|
|
54
|
+
|
|
55
|
+
# Server Settings
|
|
56
|
+
export SERVER_HOST="0.0.0.0"
|
|
57
|
+
export SERVER_PORT="5005"
|
|
58
|
+
export MAX_RETRIES="5"
|
|
59
|
+
export CORS_ORIGINS="http://localhost:3000,https://example.com"
|
|
60
|
+
|
|
61
|
+
# Validation Settings
|
|
62
|
+
export VALIDATION_FAIL_ON_WARNINGS="false"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### API Endpoints
|
|
66
|
+
|
|
67
|
+
- `POST /api/prompt-to-bot` - Generate bot from description
|
|
68
|
+
- `GET /api/bot-data` - Get current bot configuration
|
|
69
|
+
- `PUT /api/bot-data` - Update bot configuration (SSE)
|
|
70
|
+
- `POST /api/llm-builder` - LLM helper for bot development
|
|
71
|
+
- `GET /` - Health check
|
|
72
|
+
|
|
73
|
+
### Documentation Setup
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 1. Scrape Rasa documentation
|
|
77
|
+
python rasa/builder/scrape_rasa_docs.py
|
|
78
|
+
|
|
79
|
+
# 2. Create OpenAI vector store
|
|
80
|
+
python rasa/builder/create_openai_vector_store.py
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Benefits of Functional Approach
|
|
84
|
+
|
|
85
|
+
- **Simpler**: Easy to understand and reason about
|
|
86
|
+
- **Testable**: Functions are easier to unit test
|
|
87
|
+
- **Reusable**: Pure functions can be composed
|
|
88
|
+
- **Maintainable**: Clear separation of concerns
|
|
89
|
+
- **Performant**: No unnecessary object overhead
|
|
90
|
+
- **Debuggable**: Clear call stacks and data flow
|
|
91
|
+
|
|
92
|
+
## Error Handling
|
|
93
|
+
|
|
94
|
+
The service uses a structured exception hierarchy:
|
|
95
|
+
|
|
96
|
+
- `PromptToBotError` - Base exception
|
|
97
|
+
- `ValidationError` - Project validation failures
|
|
98
|
+
- `TrainingError` - Model training issues
|
|
99
|
+
- `LLMGenerationError` - LLM API problems
|
|
100
|
+
- `ProjectGenerationError` - Generation retry exhaustion
|
|
101
|
+
- `AgentLoadError` - Agent loading failures
|
|
102
|
+
|
|
103
|
+
## Logging
|
|
104
|
+
|
|
105
|
+
Structured logging with context using `structlog`:
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
structlogger.info("operation.success", key="value")
|
|
109
|
+
structlogger.error("operation.failed", error=str(e))
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## State Management
|
|
113
|
+
|
|
114
|
+
Only classes that truly need state:
|
|
115
|
+
|
|
116
|
+
1. **`LLMService`** - Caches schemas and manages OpenAI client
|
|
117
|
+
2. **`ProjectGenerator`** - Maintains current bot files
|
|
118
|
+
3. **`BotBuilderService`** - Manages Sanic app and agent state
|
|
119
|
+
|
|
120
|
+
Everything else uses pure functions for maximum simplicity and testability.
|
rasa/builder/__init__.py
ADDED
|
File without changes
|
rasa/builder/auth.py
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"""Authentication utilities for bot builder service."""
|
|
2
|
+
|
|
3
|
+
from datetime import datetime, timedelta, timezone
|
|
4
|
+
from functools import wraps
|
|
5
|
+
from typing import Any, Awaitable, Callable, Dict, Optional, Tuple
|
|
6
|
+
|
|
7
|
+
import jwt
|
|
8
|
+
import structlog
|
|
9
|
+
from jwt import PyJWKClient
|
|
10
|
+
from pydantic import BaseModel
|
|
11
|
+
from sanic import response
|
|
12
|
+
from sanic.request import Request
|
|
13
|
+
from sanic.response import HTTPResponse
|
|
14
|
+
|
|
15
|
+
from rasa.builder.config import (
|
|
16
|
+
AUTH0_CLIENT_ID,
|
|
17
|
+
AUTH0_ISSUER,
|
|
18
|
+
AUTH_REQUIRED_AFTER_MINUTES,
|
|
19
|
+
JWKS_URL,
|
|
20
|
+
)
|
|
21
|
+
from rasa.builder.models import ApiErrorResponse
|
|
22
|
+
from rasa.builder.project_info import ProjectInfo
|
|
23
|
+
|
|
24
|
+
HEADER_USER_ID = "X-User-Id"
|
|
25
|
+
|
|
26
|
+
structlogger = structlog.get_logger()
|
|
27
|
+
|
|
28
|
+
RouteHandler = Callable[..., Awaitable[HTTPResponse]]
|
|
29
|
+
ProtectedDecorator = Callable[[RouteHandler], RouteHandler]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def verify_auth0_token(token: str) -> Dict[str, Any]:
|
|
33
|
+
"""Verify JWT token from Auth0.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
token: JWT token string
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
Dict containing the token payload
|
|
40
|
+
|
|
41
|
+
Raises:
|
|
42
|
+
Exception: If token verification fails
|
|
43
|
+
"""
|
|
44
|
+
jwk_client = PyJWKClient(JWKS_URL)
|
|
45
|
+
signing_key = jwk_client.get_signing_key_from_jwt(token)
|
|
46
|
+
|
|
47
|
+
payload = jwt.decode(
|
|
48
|
+
token,
|
|
49
|
+
signing_key.key,
|
|
50
|
+
algorithms=["RS256"],
|
|
51
|
+
audience=AUTH0_CLIENT_ID,
|
|
52
|
+
issuer=AUTH0_ISSUER,
|
|
53
|
+
)
|
|
54
|
+
return payload
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class Auth0TokenVerificationResult(BaseModel):
|
|
58
|
+
payload: Optional[Dict[str, Any]]
|
|
59
|
+
error_message: Optional[str]
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def extract_and_verify_auth0_token(
|
|
63
|
+
auth_header: str,
|
|
64
|
+
) -> Auth0TokenVerificationResult:
|
|
65
|
+
"""Extract and verify JWT token from Authorization header.
|
|
66
|
+
|
|
67
|
+
Args:
|
|
68
|
+
auth_header: Authorization header value
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
Auth0TokenVerificationResult: Contains payload and error_message.
|
|
72
|
+
"""
|
|
73
|
+
# Check Authorization header format
|
|
74
|
+
if not auth_header.startswith("Bearer "):
|
|
75
|
+
return Auth0TokenVerificationResult(
|
|
76
|
+
payload=None, error_message="Missing or invalid Authorization header"
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
# Extract token
|
|
80
|
+
token = auth_header.split(" ")[1]
|
|
81
|
+
|
|
82
|
+
# Verify token
|
|
83
|
+
try:
|
|
84
|
+
payload = verify_auth0_token(token)
|
|
85
|
+
return Auth0TokenVerificationResult(payload=payload, error_message=None)
|
|
86
|
+
except Exception as e:
|
|
87
|
+
return Auth0TokenVerificationResult(
|
|
88
|
+
payload=None, error_message=f"Invalid token: {e!s}"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def is_auth_required_now(
|
|
93
|
+
*, always_required: bool = False, project_info: Optional[ProjectInfo] = None
|
|
94
|
+
) -> bool:
|
|
95
|
+
"""Return whether authentication is required right now based on config.
|
|
96
|
+
|
|
97
|
+
- If always_required is True, returns True
|
|
98
|
+
- Else, returns True iff current UTC time >= first_used + configured delta
|
|
99
|
+
"""
|
|
100
|
+
if always_required:
|
|
101
|
+
return True
|
|
102
|
+
now = datetime.now(timezone.utc)
|
|
103
|
+
|
|
104
|
+
if project_info is None:
|
|
105
|
+
return False
|
|
106
|
+
|
|
107
|
+
first_used = project_info.first_used_dt()
|
|
108
|
+
if first_used is None:
|
|
109
|
+
return False
|
|
110
|
+
|
|
111
|
+
delta = timedelta(minutes=AUTH_REQUIRED_AFTER_MINUTES)
|
|
112
|
+
auth_required_start = (first_used + delta).astimezone(timezone.utc)
|
|
113
|
+
return now >= auth_required_start
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def _check_and_attach_auth(request: Any) -> Tuple[bool, Optional[str]]:
|
|
117
|
+
"""Validate Authorization header. On success, store payload on request.ctx."""
|
|
118
|
+
auth_header = request.headers.get("Authorization", "")
|
|
119
|
+
verification_result = extract_and_verify_auth0_token(auth_header)
|
|
120
|
+
if verification_result.error_message is not None:
|
|
121
|
+
return False, verification_result.error_message
|
|
122
|
+
|
|
123
|
+
# Attach payload for downstream consumers
|
|
124
|
+
try:
|
|
125
|
+
request.ctx.auth_payload = verification_result.payload
|
|
126
|
+
except Exception:
|
|
127
|
+
# If ctx is not available for some reason, ignore silently
|
|
128
|
+
pass
|
|
129
|
+
return True, None
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def protected(*, always_required: bool = False) -> ProtectedDecorator:
|
|
133
|
+
"""Decorator to protect routes with conditional authentication.
|
|
134
|
+
|
|
135
|
+
Authentication rules:
|
|
136
|
+
- If always_required=True: token is always required
|
|
137
|
+
- Else: token is required only after RASA_AUTH_AFTER timestamp
|
|
138
|
+
|
|
139
|
+
On failure returns a 401 with a JSON error body.
|
|
140
|
+
"""
|
|
141
|
+
|
|
142
|
+
def decorator(f: RouteHandler) -> RouteHandler:
|
|
143
|
+
@wraps(f)
|
|
144
|
+
async def decorated_function(
|
|
145
|
+
request: Request, *args: Any, **kwargs: Any
|
|
146
|
+
) -> HTTPResponse:
|
|
147
|
+
# Global bypass: allow turning off auth entirely
|
|
148
|
+
if not getattr(request.app.config, "USE_AUTHENTICATION", True):
|
|
149
|
+
return await f(request, *args, **kwargs)
|
|
150
|
+
|
|
151
|
+
project_info: Optional[ProjectInfo] = None
|
|
152
|
+
try:
|
|
153
|
+
project_info = request.app.ctx.project_generator.project_info
|
|
154
|
+
except Exception:
|
|
155
|
+
project_info = None
|
|
156
|
+
|
|
157
|
+
if is_auth_required_now(
|
|
158
|
+
always_required=always_required, project_info=project_info
|
|
159
|
+
):
|
|
160
|
+
ok, err = _check_and_attach_auth(request)
|
|
161
|
+
if not ok:
|
|
162
|
+
structlogger.error(
|
|
163
|
+
"builder.auth.token_verification_failed", error=err
|
|
164
|
+
)
|
|
165
|
+
return response.json(
|
|
166
|
+
ApiErrorResponse(
|
|
167
|
+
error=err,
|
|
168
|
+
details={"expected": "Bearer <valid_token>"},
|
|
169
|
+
).model_dump(),
|
|
170
|
+
status=401,
|
|
171
|
+
)
|
|
172
|
+
return await f(request, *args, **kwargs)
|
|
173
|
+
|
|
174
|
+
return decorated_function
|
|
175
|
+
|
|
176
|
+
return decorator
|
rasa/builder/config.py
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"""Configuration module for the prompt-to-bot service."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from typing import Any, Dict
|
|
5
|
+
|
|
6
|
+
from rasa.shared.utils.yaml import read_yaml
|
|
7
|
+
|
|
8
|
+
# OpenAI Configuration
|
|
9
|
+
OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-4.1-2025-04-14")
|
|
10
|
+
OPENAI_TEMPERATURE = float(os.getenv("OPENAI_TEMPERATURE", "0.7"))
|
|
11
|
+
OPENAI_VECTOR_STORE_ID = os.getenv(
|
|
12
|
+
"OPENAI_VECTOR_STORE_ID", "vs_685123376e288191a005b6b144d3026f"
|
|
13
|
+
)
|
|
14
|
+
OPENAI_MAX_VECTOR_RESULTS = int(os.getenv("OPENAI_MAX_VECTOR_RESULTS", "10"))
|
|
15
|
+
OPENAI_TIMEOUT = int(os.getenv("OPENAI_TIMEOUT", "30"))
|
|
16
|
+
|
|
17
|
+
# Server Configuration
|
|
18
|
+
BUILDER_SERVER_HOST = os.getenv("SERVER_HOST", "0.0.0.0")
|
|
19
|
+
BUILDER_SERVER_PORT = int(os.getenv("SERVER_PORT", "5050"))
|
|
20
|
+
MAX_RETRIES = int(os.getenv("MAX_RETRIES", "5"))
|
|
21
|
+
MAX_LOG_ENTRIES = int(os.getenv("MAX_LOG_ENTRIES", "30"))
|
|
22
|
+
HELLO_RASA_PROJECT_ID = os.getenv("HELLO_RASA_PROJECT_ID")
|
|
23
|
+
|
|
24
|
+
# Copilot Signature Configuration
|
|
25
|
+
# Setting the secret turns on signing on the server-side.
|
|
26
|
+
COPILOT_HISTORY_SIGNING_SECRET = os.getenv("COPILOT_HISTORY_SIGNING_SECRET")
|
|
27
|
+
|
|
28
|
+
# CORS Configuration
|
|
29
|
+
_cors_origins_env = os.getenv("CORS_ORIGINS", "*")
|
|
30
|
+
CORS_ORIGINS = _cors_origins_env.split(",") if _cors_origins_env != "*" else ["*"]
|
|
31
|
+
|
|
32
|
+
# Validation Configuration
|
|
33
|
+
VALIDATION_FAIL_ON_WARNINGS = (
|
|
34
|
+
os.getenv("VALIDATION_FAIL_ON_WARNINGS", "false").lower() == "true"
|
|
35
|
+
)
|
|
36
|
+
VALIDATION_MAX_HISTORY = None # Could be configured if needed
|
|
37
|
+
|
|
38
|
+
# Copilot Response Handler Configuration
|
|
39
|
+
COPILOT_CONTROLLED_RESPONSE_MAX_TOKENS = 20
|
|
40
|
+
COPILOT_HANDLER_ROLLING_BUFFER_SIZE = 20
|
|
41
|
+
COPILOT_ASSISTANT_TRACKER_MAX_TURNS = 10
|
|
42
|
+
|
|
43
|
+
# Guardrail Configuration
|
|
44
|
+
LAKERA_BASE_URL = os.getenv("LAKERA_BASE_URL", "https://api.lakera.ai/v2").rstrip("/")
|
|
45
|
+
ASSISTANT_HISTORY_GUARDRAIL_PROJECT_ID = "project-5442154580"
|
|
46
|
+
COPILOT_HISTORY_GUARDRAIL_PROJECT_ID = "project-4637497223"
|
|
47
|
+
|
|
48
|
+
# Guardrails blocking configuration
|
|
49
|
+
GUARDRAILS_ENABLE_BLOCKING_RAW = os.getenv("GUARDRAILS_ENABLE_BLOCKING", "false")
|
|
50
|
+
GUARDRAILS_ENABLE_BLOCKING = GUARDRAILS_ENABLE_BLOCKING_RAW.strip().lower() == "true"
|
|
51
|
+
GUARDRAILS_USER_MAX_STRIKES = int(os.getenv("GUARDRAILS_USER_MAX_STRIKES", "3"))
|
|
52
|
+
GUARDRAILS_PROJECT_MAX_STRIKES = int(os.getenv("GUARDRAILS_PROJECT_MAX_STRIKES", "5"))
|
|
53
|
+
GUARDRAILS_BLOCK_DURATION_SECONDS = int(
|
|
54
|
+
os.getenv("GUARDRAILS_BLOCK_DURATION_SECONDS", "0")
|
|
55
|
+
) # 0 means indefinite
|
|
56
|
+
|
|
57
|
+
# Auth0 Configuration
|
|
58
|
+
AUTH0_DOMAIN = "login.hello.rasa.ai"
|
|
59
|
+
AUTH0_CLIENT_ID = "Gq5RdRwp174OFIfTz6Re9TZUseYDXUYE"
|
|
60
|
+
AUTH0_ISSUER = f"https://{AUTH0_DOMAIN}/"
|
|
61
|
+
JWKS_URL = f"{AUTH0_ISSUER}.well-known/jwks.json"
|
|
62
|
+
|
|
63
|
+
# Inkeep Configuration
|
|
64
|
+
INKEEP_BASE_URL = os.getenv("INKEEP_BASE_URL", "https://api.inkeep.com/v1").rstrip("/")
|
|
65
|
+
|
|
66
|
+
# LLM Proxy Configuration
|
|
67
|
+
HELLO_LLM_PROXY_BASE_URL = os.getenv("HELLO_LLM_PROXY_BASE_URL")
|
|
68
|
+
RASA_PRO_LICENSE = os.getenv("RASA_PRO_LICENSE")
|
|
69
|
+
|
|
70
|
+
# Compute proxy-aware base URLs
|
|
71
|
+
if HELLO_LLM_PROXY_BASE_URL:
|
|
72
|
+
_proxy = HELLO_LLM_PROXY_BASE_URL.rstrip("/")
|
|
73
|
+
INKEEP_BASE_URL = f"{_proxy}/documentation"
|
|
74
|
+
LAKERA_BASE_URL = f"{_proxy}/guardrails"
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
# Number of minutes after FIRST_USED when authentication becomes required
|
|
78
|
+
# across routes (except when auth is globally disabled on the server).
|
|
79
|
+
# Default kept small for development; adjust as needed.
|
|
80
|
+
AUTH_REQUIRED_AFTER_MINUTES = int(os.getenv("AUTH_REQUIRED_AFTER_MINUTES", "480"))
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def get_default_credentials() -> Dict[str, Any]:
|
|
84
|
+
"""Get default credentials configuration."""
|
|
85
|
+
default_credentials_yaml = """
|
|
86
|
+
studio_chat:
|
|
87
|
+
user_message_evt: "user_message"
|
|
88
|
+
bot_message_evt: "bot_message"
|
|
89
|
+
session_persistence: true
|
|
90
|
+
"""
|
|
91
|
+
return read_yaml(default_credentials_yaml)
|
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from typing import Literal
|
|
2
|
+
|
|
3
|
+
# A dot-path for importlib to the copilot prompt
|
|
4
|
+
COPILOT_PROMPTS_DIR = "builder.copilot.prompts"
|
|
5
|
+
COPILOT_PROMPTS_FILE = "copilot_system_prompt.jinja2"
|
|
6
|
+
|
|
7
|
+
# A dot-path for importlib to the rasa internal messages templates
|
|
8
|
+
COPILOT_MESSAGE_TEMPLATES_DIR = "builder.copilot.templated_messages"
|
|
9
|
+
RASA_INTERNAL_MESSAGES_TEMPLATES_FILE = "copilot_internal_messages_templates.yml"
|
|
10
|
+
COPILOT_HANDLER_RESPONSES_FILE = "copilot_templated_responses.yml"
|
|
11
|
+
|
|
12
|
+
# OpenAI roles copilot utilizes - Use literal types to avoid type errors with OpenAI
|
|
13
|
+
ROLE_USER: Literal["user"] = "user"
|
|
14
|
+
ROLE_SYSTEM: Literal["system"] = "system"
|
|
15
|
+
ROLE_ASSISTANT: Literal["assistant"] = "assistant"
|
|
16
|
+
|
|
17
|
+
# Rasa Copilot role - Added to avoid confusion with the assistant role on the frontend.
|
|
18
|
+
ROLE_COPILOT: Literal["copilot"] = "copilot"
|
|
19
|
+
|
|
20
|
+
# Rasa internal role - Used to indicate that the message is from the Rasa internal
|
|
21
|
+
# system components.
|
|
22
|
+
ROLE_COPILOT_INTERNAL: Literal["copilot_internal"] = "copilot_internal"
|
|
23
|
+
|
|
24
|
+
# Copilot Telemetry
|
|
25
|
+
COPILOT_SEGMENT_WRITE_KEY_ENV_VAR = "COPILOT_SEGMENT_WRITE_KEY"
|
|
26
|
+
|
|
27
|
+
# Copilot signing
|
|
28
|
+
SIGNATURE_VERSION_V1 = "v1"
|