rasa-pro 3.14.0.dev20250818__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/channel.py +4 -3
- rasa/core/channels/constants.py +3 -0
- rasa/core/channels/development_inspector.py +1 -1
- rasa/core/channels/inspector/dist/assets/{arc-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/socketio.py +212 -51
- rasa/core/channels/studio_chat.py +43 -23
- rasa/core/channels/voice_stream/voice_channel.py +5 -3
- rasa/core/policies/enterprise_search_policy.py +4 -7
- rasa/core/policies/flows/flow_executor.py +8 -1
- rasa/core/run.py +13 -3
- rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +1 -1
- rasa/engine/storage/local_model_storage.py +45 -2
- rasa/model_manager/model_api.py +4 -5
- rasa/model_manager/runner_service.py +1 -1
- rasa/model_manager/socket_bridge.py +20 -14
- rasa/model_manager/trainer_service.py +12 -9
- rasa/model_manager/utils.py +1 -29
- rasa/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/shared/providers/_utils.py +60 -44
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
- rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
- 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.dev20250818.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/METADATA +9 -10
- {rasa_pro-3.14.0.dev20250818.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/RECORD +358 -83
- 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.dev20250818.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev20250818.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev20250818.dist-info → rasa_pro-3.14.0.dev20250901.dist-info}/entry_points.txt +0 -0
rasa/builder/main.py
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Main entry point for the prompt-to-bot service."""
|
|
3
|
+
|
|
4
|
+
import asyncio
|
|
5
|
+
import logging
|
|
6
|
+
import os
|
|
7
|
+
import sys
|
|
8
|
+
from typing import Optional
|
|
9
|
+
|
|
10
|
+
import structlog
|
|
11
|
+
from sanic import HTTPResponse, Sanic
|
|
12
|
+
from sanic.request import Request
|
|
13
|
+
from sanic_openapi import openapi3_blueprint
|
|
14
|
+
|
|
15
|
+
import rasa.core.utils
|
|
16
|
+
import rasa.telemetry
|
|
17
|
+
from rasa.builder import config
|
|
18
|
+
from rasa.builder.logging_utils import (
|
|
19
|
+
attach_request_id_processor,
|
|
20
|
+
collecting_logs_processor,
|
|
21
|
+
log_request_end,
|
|
22
|
+
log_request_start,
|
|
23
|
+
)
|
|
24
|
+
from rasa.builder.service import bp, setup_project_generator
|
|
25
|
+
from rasa.core.agent import Agent, load_agent
|
|
26
|
+
from rasa.core.available_endpoints import AvailableEndpoints
|
|
27
|
+
from rasa.core.channels.studio_chat import StudioChatInput
|
|
28
|
+
from rasa.model import get_latest_model
|
|
29
|
+
from rasa.server import configure_cors
|
|
30
|
+
from rasa.utils.common import configure_logging_and_warnings
|
|
31
|
+
from rasa.utils.log_utils import configure_structlog
|
|
32
|
+
from rasa.utils.sanic_error_handler import register_custom_sanic_error_handler
|
|
33
|
+
|
|
34
|
+
structlogger = structlog.get_logger()
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def setup_logging() -> None:
|
|
38
|
+
"""Setup logging configuration."""
|
|
39
|
+
log_level = logging.DEBUG
|
|
40
|
+
|
|
41
|
+
configure_logging_and_warnings(
|
|
42
|
+
log_level=log_level,
|
|
43
|
+
logging_config_file=None,
|
|
44
|
+
warn_only_once=True,
|
|
45
|
+
filter_repeated_logs=True,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
configure_structlog(
|
|
49
|
+
log_level,
|
|
50
|
+
include_time=True,
|
|
51
|
+
additional_processors=[attach_request_id_processor, collecting_logs_processor],
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def setup_input_channel() -> StudioChatInput:
|
|
56
|
+
"""Setup the input channel for chat interactions."""
|
|
57
|
+
studio_chat_credentials = config.get_default_credentials().get(
|
|
58
|
+
StudioChatInput.name()
|
|
59
|
+
)
|
|
60
|
+
return StudioChatInput.from_credentials(credentials=studio_chat_credentials)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
async def try_load_existing_agent(project_folder: str) -> Optional[Agent]:
|
|
64
|
+
"""Try to load an existing agent from the project's models directory.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
project_folder: Path to the project folder
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
Loaded Agent instance if successful, None otherwise
|
|
71
|
+
"""
|
|
72
|
+
models_dir = os.path.join(project_folder, "models")
|
|
73
|
+
|
|
74
|
+
if not os.path.exists(models_dir) or not os.path.isdir(models_dir):
|
|
75
|
+
structlogger.debug("No models directory found", models_dir=models_dir)
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
try:
|
|
79
|
+
# Find the latest model in the models directory
|
|
80
|
+
latest_model_path = get_latest_model(models_dir)
|
|
81
|
+
if not latest_model_path:
|
|
82
|
+
structlogger.debug(
|
|
83
|
+
"No models found in models directory", models_dir=models_dir
|
|
84
|
+
)
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
structlogger.info(
|
|
88
|
+
"Found existing model, attempting to load", model_path=latest_model_path
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# Get available endpoints for agent loading
|
|
92
|
+
available_endpoints = AvailableEndpoints.get_instance()
|
|
93
|
+
|
|
94
|
+
# Load the agent
|
|
95
|
+
agent = await load_agent(
|
|
96
|
+
model_path=latest_model_path, endpoints=available_endpoints
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
if agent and agent.is_ready():
|
|
100
|
+
structlogger.info(
|
|
101
|
+
"Successfully loaded existing agent", model_path=latest_model_path
|
|
102
|
+
)
|
|
103
|
+
return agent
|
|
104
|
+
else:
|
|
105
|
+
structlogger.warning(
|
|
106
|
+
"Agent loaded but not ready", model_path=latest_model_path
|
|
107
|
+
)
|
|
108
|
+
return None
|
|
109
|
+
|
|
110
|
+
except Exception as e:
|
|
111
|
+
structlogger.warning(
|
|
112
|
+
"Failed to load existing agent",
|
|
113
|
+
models_dir=models_dir,
|
|
114
|
+
error=str(e),
|
|
115
|
+
exc_info=True,
|
|
116
|
+
)
|
|
117
|
+
return None
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def setup_middleware(app: Sanic) -> None:
|
|
121
|
+
"""Setup middleware for request/response processing."""
|
|
122
|
+
|
|
123
|
+
@app.middleware("request") # type: ignore[misc,no-untyped-call]
|
|
124
|
+
async def log_request(request: Request) -> None:
|
|
125
|
+
# store start time on request ctx for later latency calculation
|
|
126
|
+
request.ctx._start_time = log_request_start(request)
|
|
127
|
+
|
|
128
|
+
@app.middleware("response") # type: ignore[misc,no-untyped-call]
|
|
129
|
+
async def log_response(request: Request, response: HTTPResponse) -> None:
|
|
130
|
+
try:
|
|
131
|
+
start = getattr(request.ctx, "_start_time", None)
|
|
132
|
+
if start is None:
|
|
133
|
+
# If for some reason the request middleware didn't run
|
|
134
|
+
start = log_request_start(request)
|
|
135
|
+
# propagate correlation id for clients
|
|
136
|
+
correlation_id = getattr(request.ctx, "correlation_id", None)
|
|
137
|
+
if correlation_id:
|
|
138
|
+
response.headers["X-Correlation-Id"] = correlation_id
|
|
139
|
+
log_request_end(request, response, start)
|
|
140
|
+
except Exception:
|
|
141
|
+
# avoid breaking response path
|
|
142
|
+
pass
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def create_app(project_folder: str) -> Sanic:
|
|
146
|
+
"""Create and configure the Sanic app."""
|
|
147
|
+
app = Sanic("BotBuilderService")
|
|
148
|
+
|
|
149
|
+
# Basic app configuration
|
|
150
|
+
app.config.REQUEST_TIMEOUT = 60 # 1 minute timeout
|
|
151
|
+
# Expose auth toggle to app.config so decorators can read it
|
|
152
|
+
app.config.USE_AUTHENTICATION = True
|
|
153
|
+
|
|
154
|
+
structlogger.debug(
|
|
155
|
+
"builder.main.create_app",
|
|
156
|
+
project_folder=project_folder,
|
|
157
|
+
use_authentication=app.config.USE_AUTHENTICATION,
|
|
158
|
+
rasa_version=rasa.__version__,
|
|
159
|
+
)
|
|
160
|
+
app.ctx.agent = None
|
|
161
|
+
|
|
162
|
+
# Set up project generator and store in app context
|
|
163
|
+
app.ctx.project_generator = setup_project_generator(project_folder)
|
|
164
|
+
|
|
165
|
+
# Set up input channel and store in app context
|
|
166
|
+
app.ctx.input_channel = setup_input_channel()
|
|
167
|
+
|
|
168
|
+
# Register the blueprint
|
|
169
|
+
app.blueprint(bp)
|
|
170
|
+
|
|
171
|
+
# OpenAPI docs
|
|
172
|
+
app.blueprint(openapi3_blueprint)
|
|
173
|
+
app.config.API_TITLE = "Bot Builder API"
|
|
174
|
+
app.config.API_VERSION = rasa.__version__
|
|
175
|
+
app.config.API_DESCRIPTION = (
|
|
176
|
+
"API for building conversational AI bots from prompts and templates. "
|
|
177
|
+
"The API allows to change the assistant and retrain it with new data."
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
# Setup middleware
|
|
181
|
+
setup_middleware(app)
|
|
182
|
+
|
|
183
|
+
configure_cors(app, cors_origins=config.CORS_ORIGINS)
|
|
184
|
+
|
|
185
|
+
# Register input channel webhooks
|
|
186
|
+
from rasa.core import channels
|
|
187
|
+
|
|
188
|
+
channels.channel.register([app.ctx.input_channel], app, route="/webhooks/")
|
|
189
|
+
|
|
190
|
+
# Register startup event handler for agent loading
|
|
191
|
+
@app.after_server_start
|
|
192
|
+
async def load_agent_on_startup(
|
|
193
|
+
app: Sanic, loop: asyncio.AbstractEventLoop
|
|
194
|
+
) -> None:
|
|
195
|
+
"""Load existing agent if available when server starts."""
|
|
196
|
+
try:
|
|
197
|
+
existing_agent = await try_load_existing_agent(project_folder)
|
|
198
|
+
if existing_agent:
|
|
199
|
+
app.ctx.agent = existing_agent
|
|
200
|
+
structlogger.info("Agent loaded on server startup")
|
|
201
|
+
else:
|
|
202
|
+
structlogger.info(
|
|
203
|
+
"No existing agent found, server starting without agent"
|
|
204
|
+
)
|
|
205
|
+
except Exception as e:
|
|
206
|
+
structlogger.warning("Failed to load agent on server startup", error=str(e))
|
|
207
|
+
|
|
208
|
+
return app
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def main(project_folder: Optional[str] = None) -> None:
|
|
212
|
+
"""Main entry point."""
|
|
213
|
+
try:
|
|
214
|
+
# Setup logging
|
|
215
|
+
setup_logging()
|
|
216
|
+
|
|
217
|
+
# Setup telemetry
|
|
218
|
+
rasa.telemetry.initialize_telemetry()
|
|
219
|
+
rasa.telemetry.initialize_error_reporting(private_mode=False)
|
|
220
|
+
|
|
221
|
+
# working directory needs to be the project folder, e.g.
|
|
222
|
+
# for relative paths (./docs) in a projects config to work
|
|
223
|
+
if not project_folder:
|
|
224
|
+
import tempfile
|
|
225
|
+
|
|
226
|
+
project_folder = tempfile.mkdtemp(prefix="rasa_builder_")
|
|
227
|
+
|
|
228
|
+
os.chdir(project_folder)
|
|
229
|
+
|
|
230
|
+
# Create and configure app
|
|
231
|
+
app = create_app(project_folder)
|
|
232
|
+
register_custom_sanic_error_handler(app)
|
|
233
|
+
|
|
234
|
+
# Run the service
|
|
235
|
+
structlogger.info(
|
|
236
|
+
"service.starting",
|
|
237
|
+
host=config.BUILDER_SERVER_HOST,
|
|
238
|
+
port=config.BUILDER_SERVER_PORT,
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
app.run(
|
|
242
|
+
host=config.BUILDER_SERVER_HOST,
|
|
243
|
+
port=config.BUILDER_SERVER_PORT,
|
|
244
|
+
legacy=True,
|
|
245
|
+
motd=False,
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
except KeyboardInterrupt:
|
|
249
|
+
print("\nService stopped by user")
|
|
250
|
+
sys.exit(0)
|
|
251
|
+
except Exception as e:
|
|
252
|
+
print(f"Failed to start service: {e}")
|
|
253
|
+
sys.exit(1)
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
if __name__ == "__main__":
|
|
257
|
+
project_folder = sys.argv[1] if len(sys.argv) > 1 else None
|
|
258
|
+
main(project_folder)
|
rasa/builder/models.py
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"""Pydantic models for request/response validation."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from enum import Enum
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Any, Dict, List, Literal, Optional
|
|
7
|
+
|
|
8
|
+
import structlog
|
|
9
|
+
from pydantic import BaseModel, Field, validator
|
|
10
|
+
|
|
11
|
+
from rasa.cli.scaffold import ProjectTemplateName
|
|
12
|
+
from rasa.shared.importers.importer import TrainingDataImporter
|
|
13
|
+
|
|
14
|
+
structlogger = structlog.get_logger()
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class PromptRequest(BaseModel):
|
|
18
|
+
"""Request model for prompt-to-bot endpoint."""
|
|
19
|
+
|
|
20
|
+
prompt: str = Field(
|
|
21
|
+
..., min_length=1, max_length=10000, description="The skill description prompt"
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
@validator("prompt")
|
|
25
|
+
def validate_prompt(cls, v: str) -> str:
|
|
26
|
+
if not v.strip():
|
|
27
|
+
raise ValueError("Prompt cannot be empty or whitespace only")
|
|
28
|
+
return v.strip()
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class TemplateRequest(BaseModel):
|
|
32
|
+
"""Request model for template-to-bot endpoint."""
|
|
33
|
+
|
|
34
|
+
template_name: ProjectTemplateName = Field(
|
|
35
|
+
...,
|
|
36
|
+
description=(
|
|
37
|
+
f"The template name to use ({ProjectTemplateName.supported_values()})"
|
|
38
|
+
),
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
@validator("template_name")
|
|
42
|
+
def validate_template_name(cls, v: Any) -> Any:
|
|
43
|
+
if v not in ProjectTemplateName:
|
|
44
|
+
raise ValueError(
|
|
45
|
+
f"Template name must be one of {ProjectTemplateName.supported_values()}"
|
|
46
|
+
)
|
|
47
|
+
return v
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class BotDataUpdateRequest(BaseModel):
|
|
51
|
+
"""Request model for bot data updates."""
|
|
52
|
+
|
|
53
|
+
domain_yml: Optional[str] = Field(None, alias="domain.yml")
|
|
54
|
+
flows_yml: Optional[str] = Field(None, alias="flows.yml")
|
|
55
|
+
config_yml: Optional[str] = Field(None, alias="config.yml")
|
|
56
|
+
|
|
57
|
+
class Config:
|
|
58
|
+
"""Config for BotDataUpdateRequest."""
|
|
59
|
+
|
|
60
|
+
allow_population_by_field_name = True
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class BotData(BaseModel):
|
|
64
|
+
"""Data of a running assistant."""
|
|
65
|
+
|
|
66
|
+
domain: Dict[str, Any] = Field(..., description="The domain of the assistant.")
|
|
67
|
+
flows: Dict[str, Any] = Field(..., description="The flows of the assistant.")
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class AssistantInfo(BaseModel):
|
|
71
|
+
"""Basic information about the loaded assistant."""
|
|
72
|
+
|
|
73
|
+
assistant_id: Optional[str] = Field(
|
|
74
|
+
None,
|
|
75
|
+
description=(
|
|
76
|
+
"Assistant identifier coming from `assistant_id` in the model "
|
|
77
|
+
"metadata (config.yml)."
|
|
78
|
+
),
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class ApiErrorResponse(BaseModel):
|
|
83
|
+
"""API error response model."""
|
|
84
|
+
|
|
85
|
+
status: Literal["error"] = "error"
|
|
86
|
+
error: str = Field(...)
|
|
87
|
+
details: Optional[Dict[str, Any]] = Field(None)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class ServerSentEventType(str, Enum):
|
|
91
|
+
progress = "progress"
|
|
92
|
+
error = "error"
|
|
93
|
+
_EOF = "_EOF"
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class ServerSentEvent(BaseModel):
|
|
97
|
+
"""Generic Server-Sent Event payload."""
|
|
98
|
+
|
|
99
|
+
event: str = Field(..., description="SSE event name / type")
|
|
100
|
+
data: Dict[str, Any] = Field(
|
|
101
|
+
default_factory=dict,
|
|
102
|
+
description="Arbitrary JSON-serializable payload",
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
@classmethod
|
|
106
|
+
def build(cls, event: str, data: Any) -> "ServerSentEvent":
|
|
107
|
+
"""General-purpose constructor.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
event: The event name (e.g. "progress", "error").
|
|
111
|
+
data: Arbitrary key-value pairs to include in the payload.
|
|
112
|
+
|
|
113
|
+
Returns:
|
|
114
|
+
A ServerSentEvent instance with the specified event and data.
|
|
115
|
+
"""
|
|
116
|
+
return cls(event=event, data=data)
|
|
117
|
+
|
|
118
|
+
@classmethod
|
|
119
|
+
def eof(cls) -> "ServerSentEvent":
|
|
120
|
+
"""Helper that returns the special end-of-stream marker."""
|
|
121
|
+
return cls(event=ServerSentEventType._EOF.value, data={})
|
|
122
|
+
|
|
123
|
+
def format(self) -> str:
|
|
124
|
+
"""Return the text representation used by SSE protocols."""
|
|
125
|
+
return (
|
|
126
|
+
f"event: {self.event}\n"
|
|
127
|
+
f"data: {json.dumps(self.data, separators=(', ', ': '))}\n\n"
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class JobStatusEvent(ServerSentEvent):
|
|
132
|
+
"""Job status event with special handling for progress and error states."""
|
|
133
|
+
|
|
134
|
+
@classmethod
|
|
135
|
+
def from_status(
|
|
136
|
+
cls,
|
|
137
|
+
status: str,
|
|
138
|
+
message: Optional[str] = None,
|
|
139
|
+
) -> "JobStatusEvent":
|
|
140
|
+
"""Factory for job-status events.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
status: The job status (e.g. "training", "train_success").
|
|
144
|
+
message: Optional error message for error events.
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
A JobStatusEvent instance with the appropriate event type and data.
|
|
148
|
+
"""
|
|
149
|
+
event_type = (
|
|
150
|
+
ServerSentEventType.error if message else ServerSentEventType.progress
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
payload: Dict[str, Any] = {"status": status}
|
|
154
|
+
if message:
|
|
155
|
+
payload["message"] = message
|
|
156
|
+
|
|
157
|
+
return cls(event=event_type.value, data=payload)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class ValidationResult(BaseModel):
|
|
161
|
+
"""Result of validation operation."""
|
|
162
|
+
|
|
163
|
+
is_valid: bool = Field(...)
|
|
164
|
+
errors: Optional[List[str]] = Field(None)
|
|
165
|
+
warnings: Optional[List[str]] = Field(None)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class TrainingResult(BaseModel):
|
|
169
|
+
"""Result of training operation."""
|
|
170
|
+
|
|
171
|
+
success: bool = Field(...)
|
|
172
|
+
model_path: Optional[str] = Field(None)
|
|
173
|
+
error: Optional[str] = Field(None)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
BotFiles = Dict[str, Optional[str]]
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
class JobStatus(str, Enum):
|
|
180
|
+
received = "received"
|
|
181
|
+
done = "done"
|
|
182
|
+
error = "error"
|
|
183
|
+
|
|
184
|
+
generating = "generating"
|
|
185
|
+
generation_success = "generation_success"
|
|
186
|
+
generation_error = "generation_error"
|
|
187
|
+
|
|
188
|
+
training = "training"
|
|
189
|
+
train_success = "train_success"
|
|
190
|
+
train_error = "train_error"
|
|
191
|
+
|
|
192
|
+
validating = "validating"
|
|
193
|
+
validation_success = "validation_success"
|
|
194
|
+
validation_error = "validation_error"
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class JobCreateResponse(BaseModel):
|
|
198
|
+
job_id: str = Field(...)
|
|
199
|
+
status: JobStatus = JobStatus.received
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class TrainingInput(BaseModel):
|
|
203
|
+
"""Input for training a model."""
|
|
204
|
+
|
|
205
|
+
model_config = {"arbitrary_types_allowed": True}
|
|
206
|
+
|
|
207
|
+
importer: TrainingDataImporter = Field(..., description="Training data importer")
|
|
208
|
+
endpoints_file: Path = Field(..., description="Path to the endpoints file")
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class AgentStatus(str, Enum):
|
|
212
|
+
"""Status of the agent."""
|
|
213
|
+
|
|
214
|
+
not_loaded = "not_loaded"
|
|
215
|
+
ready = "ready"
|
|
216
|
+
not_ready = "not_ready"
|