rasa-pro 3.14.0.dev6__py3-none-any.whl → 3.14.0.dev8__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/agents/agent_manager.py +1 -1
- rasa/agents/constants.py +2 -2
- rasa/agents/exceptions.py +31 -1
- rasa/agents/protocol/a2a/a2a_agent.py +385 -227
- rasa/agents/protocol/mcp/mcp_base_agent.py +37 -19
- rasa/agents/protocol/mcp/mcp_open_agent.py +31 -8
- rasa/agents/protocol/mcp/mcp_task_agent.py +33 -10
- rasa/agents/schemas/agent_output.py +1 -1
- rasa/agents/utils.py +95 -1
- rasa/agents/validation.py +484 -0
- rasa/api.py +9 -6
- rasa/builder/README.md +120 -0
- rasa/builder/__init__.py +0 -0
- rasa/builder/auth.py +176 -0
- rasa/builder/config.py +92 -0
- rasa/builder/copilot/__init__.py +0 -0
- rasa/builder/copilot/constants.py +31 -0
- rasa/builder/copilot/copilot.py +450 -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 +500 -0
- rasa/builder/copilot/prompts/__init__.py +0 -0
- rasa/builder/copilot/prompts/copilot_system_prompt.jinja2 +766 -0
- rasa/builder/copilot/prompts/latest_user_message_context_prompt.jinja2 +61 -0
- rasa/builder/copilot/signing.py +305 -0
- rasa/builder/copilot/telemetry.py +210 -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 +140 -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 +282 -0
- rasa/builder/llm_service.py +246 -0
- rasa/builder/logging_utils.py +265 -0
- rasa/builder/main.py +243 -0
- rasa/builder/models.py +216 -0
- rasa/builder/project_generator.py +458 -0
- rasa/builder/project_info.py +72 -0
- rasa/builder/scrape_rasa_docs.py +97 -0
- rasa/builder/service.py +1345 -0
- rasa/builder/shared/tracker_context.py +212 -0
- rasa/builder/skill_to_bot_prompt.jinja2 +164 -0
- rasa/builder/template_cache.py +244 -0
- rasa/builder/training_service.py +194 -0
- rasa/builder/validation_service.py +97 -0
- rasa/cli/arguments/train.py +2 -0
- rasa/cli/interactive.py +2 -0
- rasa/cli/project_templates/basic/README.md +23 -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/actions/actions.md +10 -0
- rasa/cli/project_templates/basic/config.yml +29 -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 +8 -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 +67 -0
- rasa/cli/project_templates/basic/prompts/rephraser_demo_personality_prompt.jinja2 +38 -0
- rasa/cli/project_templates/default/config.yml +4 -0
- rasa/cli/project_templates/default/endpoints.yml +4 -0
- rasa/cli/project_templates/finance/README.md +25 -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/actions.md +15 -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 +23 -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/data.md +11 -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/domain.md +10 -0
- rasa/cli/project_templates/finance/domain/general/agent_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 +66 -0
- rasa/cli/project_templates/finance/prompts/rephraser_demo_personality_prompt.jinja2 +19 -0
- rasa/cli/project_templates/telco/README.md +25 -0
- rasa/cli/project_templates/telco/actions/__init__.py +0 -0
- rasa/cli/project_templates/telco/actions/actions.md +12 -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 +29 -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/data.md +11 -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/understand_bill.yml +102 -0
- rasa/cli/project_templates/telco/domain/domain.md +14 -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 +26 -0
- rasa/cli/project_templates/telco/domain/general/patterns.yml +33 -0
- rasa/cli/project_templates/telco/domain/network/reboot_router.yml +21 -0
- rasa/cli/project_templates/telco/domain/network/reset_router.yml +12 -0
- rasa/cli/project_templates/telco/domain/network/run_speed_test.yml +25 -0
- rasa/cli/project_templates/telco/domain/network/solve_internet_issue.yml +75 -0
- rasa/cli/project_templates/telco/domain/shared.yml +129 -0
- rasa/cli/project_templates/telco/endpoints.yml +67 -0
- rasa/cli/project_templates/telco/prompts/rephraser_demo_personality_prompt.jinja2 +40 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/billing/understand_bill.yml +67 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/bot_challenge.yml +8 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/feedback.yml +46 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/goodbye.yml +9 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/hello.yml +8 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/human_handoff.yml +35 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/general/patterns.yml +23 -0
- rasa/cli/project_templates/telco/tests/e2e_test_cases/network/solve_internet_issue.yml +57 -0
- rasa/cli/project_templates/tutorial/config.yml +2 -1
- rasa/cli/scaffold.py +46 -2
- rasa/cli/train.py +2 -0
- rasa/cli/utils.py +85 -1
- rasa/core/actions/action.py +2 -7
- rasa/core/available_agents.py +49 -26
- rasa/core/available_endpoints.py +17 -2
- rasa/core/channels/channel.py +4 -3
- rasa/core/channels/constants.py +3 -0
- rasa/core/channels/development_inspector.py +2 -22
- rasa/core/channels/inspector/README.md +26 -14
- rasa/core/channels/inspector/dist/assets/{arc-63212852.js → arc-edef10dd.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-eecf6b13.js → blockDiagram-38ab4fdb-49f6762b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-8f798a9a.js → c4Diagram-3d4e48cf-313c08e6.js} +1 -1
- rasa/core/channels/inspector/dist/assets/channel-63aa27d1.js +1 -0
- rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-df71a04c.js → classDiagram-70f12bd4-35e41ce9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-9b275968.js → classDiagram-v2-f2320105-f346068d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/clone-5566bae8.js +1 -0
- rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-1c669cad.js → createText-2e5e7dd3-7a44bce8.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-b1553799.js → edges-e0da2a9e-d7cf78c7.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-112388d6.js → erDiagram-9861fffd-9813e81c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-fdebec47.js → flowDb-956e92f1-d8ba0870.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-6280ede1.js → flowDiagram-66a62f08-51f0db4d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-32936074.js +1 -0
- rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-e1dc03e5.js → flowchart-elk-definition-4a651766-ff9ea384.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-83f68c51.js → ganttDiagram-c361ad54-a8e13b6b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-22f8666f.js → gitGraphDiagram-72cf32ee-3b171c6d.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{graph-ca9e6217.js → graph-790ef78b.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{index-3862675e-c5ceb692.js → index-3862675e-ecdce073.js} +1 -1
- rasa/core/channels/inspector/dist/assets/index-d705da80.js +1352 -0
- rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-faa9999b.js → infoDiagram-f8f76790-f5a422fe.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-c4dda8d9.js → journeyDiagram-49397b02-3185b7ac.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{layout-d4307784.js → layout-837fd3aa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{line-0567aaa7.js → line-7e05afcb.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{linear-c11b95cf.js → linear-162eb295.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-0c7d3ca9.js → mindmap-definition-fc14e90a-f4978aee.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-34b433fa.js → pieDiagram-8a3498a8-b25d0a52.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-4cab816e.js → quadrantDiagram-120e2f19-63db1afa.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-8c22fa9e.js → requirementDiagram-deff3bca-1b486cc9.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-70ce9e8e.js → sankeyDiagram-04a897e0-7e795291.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-fbcd7fc9.js → sequenceDiagram-704730f1-b8aba159.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-45f05ea6.js → stateDiagram-587899a1-41529fd5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-beab1ea6.js → stateDiagram-v2-d93cdb3a-b241043c.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-2f29dbd5.js → styles-6aaf32cf-b5b53234.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-9a916d00-951eac83.js → styles-9a916d00-13d138e5.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{styles-c10674c1-897fbfdd.js → styles-c10674c1-94cbde3f.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-d667fac1.js → svgDrawCommon-08f97a94-453ae764.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-e3205144.js → timeline-definition-85554ec2-8dcb88a4.js} +1 -1
- rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-4abeb0e2.js → xychartDiagram-e933f94c-376af5f0.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 +42 -44
- rasa/core/channels/inspector/src/components/Chat.tsx +2 -3
- rasa/core/channels/inspector/src/components/DialogueAgentStack.tsx +108 -0
- rasa/core/channels/inspector/src/components/{DialogueStack.tsx → DialogueHistoryStack.tsx} +8 -8
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +20 -3
- rasa/core/channels/inspector/src/components/LatencyDisplay.tsx +63 -35
- rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +14 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -0
- 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/types.ts +49 -7
- rasa/core/channels/socketio.py +212 -51
- rasa/core/channels/studio_chat.py +59 -57
- rasa/core/channels/voice_stream/asr/asr_event.py +1 -1
- rasa/core/channels/voice_stream/asr/azure.py +6 -3
- rasa/core/channels/voice_stream/asr/deepgram.py +1 -1
- rasa/core/channels/voice_stream/audiocodes.py +3 -0
- rasa/core/channels/voice_stream/browser_audio.py +53 -3
- rasa/core/channels/voice_stream/genesys.py +2 -1
- rasa/core/channels/voice_stream/jambonz.py +9 -1
- rasa/core/channels/voice_stream/twilio_media_streams.py +16 -0
- rasa/core/channels/voice_stream/voice_channel.py +66 -3
- rasa/core/constants.py +6 -0
- rasa/core/iam_credentials_providers/__init__.py +0 -0
- rasa/core/iam_credentials_providers/aws_iam_credentials_providers.py +66 -0
- rasa/core/iam_credentials_providers/credentials_provider_protocol.py +89 -0
- rasa/core/policies/enterprise_search_policy.py +4 -7
- rasa/core/policies/flows/flow_executor.py +66 -36
- rasa/core/policies/ted_policy.py +7 -5
- rasa/core/processor.py +32 -0
- rasa/core/redis_connection_factory.py +411 -0
- rasa/core/run.py +13 -3
- rasa/core/tracker_stores/redis_tracker_store.py +32 -14
- rasa/core/tracker_stores/sql_tracker_store.py +57 -1
- rasa/dialogue_understanding/commands/cancel_flow_command.py +2 -81
- rasa/dialogue_understanding/commands/start_flow_command.py +18 -113
- rasa/dialogue_understanding/commands/utils.py +118 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +10 -9
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_claude_3_5_sonnet_20240620_template.jinja2 +10 -5
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +10 -5
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_claude_3_5_sonnet_20240620_template.jinja2 +20 -12
- rasa/dialogue_understanding/generator/prompt_templates/agent_command_prompt_v3_gpt_4o_2024_11_20_template.jinja2 +19 -12
- rasa/dialogue_understanding/generator/single_step/single_step_based_llm_command_generator.py +6 -35
- rasa/dialogue_understanding/patterns/cancel.py +27 -6
- rasa/dialogue_understanding/patterns/clarify.py +3 -14
- rasa/dialogue_understanding/patterns/continue_interrupted.py +185 -114
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +18 -24
- rasa/dialogue_understanding/processor/command_processor.py +35 -0
- rasa/dialogue_understanding/stack/utils.py +43 -4
- rasa/dialogue_understanding/utils.py +24 -4
- rasa/engine/graph.py +5 -1
- rasa/engine/recipes/default_components.py +78 -10
- rasa/engine/recipes/default_recipe.py +41 -1
- rasa/engine/storage/local_model_storage.py +83 -3
- rasa/graph_components/validators/default_recipe_validator.py +153 -135
- rasa/model_manager/model_api.py +4 -5
- rasa/model_manager/runner_service.py +1 -1
- rasa/model_manager/socket_bridge.py +20 -15
- rasa/model_manager/trainer_service.py +12 -9
- rasa/model_manager/utils.py +1 -29
- rasa/model_manager/warm_rasa_process.py +1 -1
- rasa/model_training.py +22 -6
- rasa/nlu/classifiers/diet_classifier.py +22 -6
- rasa/nlu/classifiers/logistic_regression_classifier.py +18 -0
- rasa/nlu/extractors/extractor.py +1 -2
- rasa/shared/agents/auth/__init__.py +0 -0
- rasa/shared/agents/auth/agent_auth_factory.py +74 -0
- rasa/shared/agents/auth/agent_auth_manager.py +86 -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 +159 -0
- rasa/shared/agents/auth/constants.py +11 -0
- rasa/shared/agents/auth/types.py +11 -0
- rasa/shared/constants.py +3 -0
- rasa/shared/core/constants.py +6 -6
- rasa/shared/core/domain.py +58 -11
- rasa/shared/core/events.py +2 -0
- rasa/shared/core/flows/constants.py +5 -0
- rasa/shared/core/flows/flow_step.py +7 -1
- rasa/shared/core/flows/flows_list.py +6 -0
- rasa/shared/core/flows/steps/call.py +15 -12
- rasa/shared/core/flows/validation.py +238 -44
- rasa/shared/core/flows/yaml_flows_io.py +15 -6
- rasa/shared/core/slots.py +4 -0
- rasa/shared/exceptions.py +12 -0
- rasa/shared/importers/importer.py +6 -0
- rasa/shared/importers/utils.py +77 -1
- rasa/shared/nlu/training_data/schemas/responses.yml +3 -0
- rasa/shared/providers/_utils.py +60 -44
- rasa/shared/providers/embedding/default_litellm_embedding_client.py +2 -0
- rasa/shared/providers/llm/_base_litellm_client.py +2 -2
- rasa/shared/providers/llm/default_litellm_llm_client.py +2 -0
- rasa/shared/providers/llm/llm_response.py +4 -4
- rasa/shared/utils/common.py +24 -0
- rasa/shared/utils/health_check/health_check.py +7 -3
- rasa/shared/utils/llm.py +2 -1
- rasa/shared/utils/mcp/server_connection.py +108 -27
- rasa/shared/utils/mcp/utils.py +20 -0
- rasa/studio/upload.py +16 -47
- rasa/telemetry.py +97 -23
- rasa/tracing/config.py +38 -12
- rasa/tracing/instrumentation/attribute_extractors.py +5 -1
- rasa/tracing/instrumentation/instrumentation.py +85 -8
- rasa/utils/common.py +1 -1
- 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/utils/tensorflow/__init__.py +29 -0
- rasa/utils/tensorflow/callback.py +1 -1
- rasa/utils/tensorflow/crf.py +1 -1
- rasa/utils/tensorflow/data_generator.py +21 -8
- rasa/utils/tensorflow/layers.py +11 -4
- rasa/utils/tensorflow/metrics.py +7 -3
- rasa/utils/tensorflow/models.py +41 -6
- rasa/utils/tensorflow/rasa_layers.py +6 -4
- rasa/utils/tensorflow/transformer.py +2 -3
- rasa/utils/train_utils.py +68 -38
- rasa/validator.py +18 -16
- rasa/version.py +1 -1
- rasa_pro-3.14.0.dev8.dist-info/METADATA +199 -0
- {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/RECORD +486 -173
- rasa/core/channels/inspector/dist/assets/channel-0cd70adf.js +0 -1
- rasa/core/channels/inspector/dist/assets/clone-a0f9c4ed.js +0 -1
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-de9cc4aa.js +0 -1
- rasa/core/channels/inspector/dist/assets/index-3e293924.js +0 -1353
- rasa_pro-3.14.0.dev6.dist-info/METADATA +0 -190
- {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/NOTICE +0 -0
- {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/WHEEL +0 -0
- {rasa_pro-3.14.0.dev6.dist-info → rasa_pro-3.14.0.dev8.dist-info}/entry_points.txt +0 -0
|
@@ -5,32 +5,34 @@ import {
|
|
|
5
5
|
useColorModeValue,
|
|
6
6
|
useToast,
|
|
7
7
|
} from '@chakra-ui/react'
|
|
8
|
-
import { useEffect, useState, useCallback } from 'react'
|
|
9
8
|
import axios from 'axios'
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
9
|
+
import queryString from 'query-string'
|
|
10
|
+
import { useCallback, useEffect, useState } from 'react'
|
|
11
|
+
import useWebSocket, { ReadyState } from 'react-use-websocket'
|
|
12
|
+
import { Chat } from './components/Chat'
|
|
13
|
+
import { DiagramFlow } from './components/DiagramFlow'
|
|
13
14
|
import { DialougeInformation } from './components/DialogueInformation'
|
|
15
|
+
import { DialogueHistoryStack } from './components/DialogueHistoryStack'
|
|
14
16
|
import { LoadingSpinner } from './components/LoadingSpinner'
|
|
15
|
-
import { DiagramFlow } from './components/DiagramFlow'
|
|
16
17
|
import { RecruitmentPanel } from './components/RecruitmentPanel'
|
|
18
|
+
import { Welcome } from './components/Welcome'
|
|
17
19
|
import { formatSlots } from './helpers/formatters'
|
|
18
|
-
import { Slot, Stack, Event, Flow, SelectedStack, Tracker } from './types'
|
|
19
20
|
import {
|
|
20
21
|
createHistoricalStack,
|
|
21
|
-
flowStepTrail,
|
|
22
|
+
flowStepTrail, updateAgentsStatus,
|
|
22
23
|
updatedActiveFrame,
|
|
23
24
|
} from './helpers/utils'
|
|
24
|
-
import
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
|
|
25
|
+
import { useOurTheme } from './theme'
|
|
26
|
+
import { Event, Flow, SelectedStack, Slot, Stack, Tracker, Agent } from './types'
|
|
27
|
+
import {DialogueAgentStack} from "./components/DialogueAgentStack.tsx";
|
|
28
|
+
|
|
28
29
|
|
|
29
30
|
export function App() {
|
|
30
31
|
const toast = useToast()
|
|
31
32
|
const { rasaSpace, rasaRadii } = useOurTheme()
|
|
32
33
|
const [rasaChatSessionId, setRasaChatSessionId] = useState<string>('')
|
|
33
34
|
const [flows, setFlows] = useState<Flow[]>([])
|
|
35
|
+
const [agents, setAgents] = useState<Agent[]>([])
|
|
34
36
|
const [slots, setSlots] = useState<Slot[]>([])
|
|
35
37
|
const [events, setEvents] = useState<Event[]>([])
|
|
36
38
|
const [story, setStory] = useState<string>('')
|
|
@@ -102,6 +104,23 @@ export function App() {
|
|
|
102
104
|
})
|
|
103
105
|
}, [toast])
|
|
104
106
|
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
axios
|
|
109
|
+
.get('/sub-agents', { params: { token } })
|
|
110
|
+
.then((response) => setAgents((response.data)))
|
|
111
|
+
.catch((error) => {
|
|
112
|
+
if (toast.isActive('agents')) return
|
|
113
|
+
toast({
|
|
114
|
+
id: 'agents',
|
|
115
|
+
title: 'Agents could not be retrieved',
|
|
116
|
+
description: error?.message || 'An unknown error happened.',
|
|
117
|
+
status: 'error',
|
|
118
|
+
duration: 4000,
|
|
119
|
+
isClosable: true,
|
|
120
|
+
})
|
|
121
|
+
})
|
|
122
|
+
}, [toast])
|
|
123
|
+
|
|
105
124
|
function fetchStory() {
|
|
106
125
|
axios
|
|
107
126
|
.get(`/conversations/${rasaChatSessionId}/story`, { params: { token } })
|
|
@@ -129,19 +148,13 @@ export function App() {
|
|
|
129
148
|
!rasaChatSessionId ||
|
|
130
149
|
lastJsonMessage?.sender_id === rasaChatSessionId
|
|
131
150
|
) {
|
|
132
|
-
if (lastJsonMessage.latency) {
|
|
133
|
-
console.log('Latency update:', lastJsonMessage.latency)
|
|
134
|
-
setLatency((prevLatency: any) => ({
|
|
135
|
-
...prevLatency,
|
|
136
|
-
...lastJsonMessage.latency,
|
|
137
|
-
}))
|
|
138
|
-
}
|
|
139
151
|
setSlots(formatSlots(lastJsonMessage.slots))
|
|
140
152
|
setEvents(lastJsonMessage.events)
|
|
141
153
|
const updatedStack = createHistoricalStack(
|
|
142
154
|
lastJsonMessage.stack,
|
|
143
155
|
lastJsonMessage.events,
|
|
144
156
|
)
|
|
157
|
+
setAgents(prevAgents => updateAgentsStatus(prevAgents, lastJsonMessage.events))
|
|
145
158
|
setStack(updatedStack)
|
|
146
159
|
setFrame(updatedActiveFrame(frame, updatedStack, lastJsonMessage.events))
|
|
147
160
|
setRasaChatSessionId(lastJsonMessage.sender_id)
|
|
@@ -184,21 +197,6 @@ export function App() {
|
|
|
184
197
|
: 'max-content minmax(10rem, 17.5rem) minmax(10rem, auto)',
|
|
185
198
|
gridRowGap: rasaSpace[1],
|
|
186
199
|
}
|
|
187
|
-
const rightColumnSx = {
|
|
188
|
-
height: '100%',
|
|
189
|
-
overflow: 'hidden',
|
|
190
|
-
gridTemplateColumns: '1fr',
|
|
191
|
-
gridTemplateRows: 'max-content 1fr',
|
|
192
|
-
gridRowGap: rasaSpace[1],
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
const chatContainerSx = {
|
|
196
|
-
...borderRadiusSx,
|
|
197
|
-
padding: rasaSpace[1],
|
|
198
|
-
bg: useColorModeValue('neutral.50', 'neutral.50'),
|
|
199
|
-
overflow: 'auto', // Allow scrolling for chat
|
|
200
|
-
height: '100%',
|
|
201
|
-
}
|
|
202
200
|
|
|
203
201
|
const onFrameSelected = (stack: Stack) => {
|
|
204
202
|
setFrame({
|
|
@@ -240,18 +238,23 @@ export function App() {
|
|
|
240
238
|
{showRecruitmentPanel && (
|
|
241
239
|
<RecruitmentPanel onClose={handleCloseRecruitmentPanel} />
|
|
242
240
|
)}
|
|
243
|
-
<
|
|
241
|
+
<DialogueHistoryStack
|
|
244
242
|
sx={boxSx}
|
|
245
243
|
stack={stack}
|
|
246
244
|
active={frame?.stack}
|
|
247
245
|
onItemClick={onFrameSelected}
|
|
248
246
|
/>
|
|
247
|
+
{agents.length > 0 ? (<DialogueAgentStack
|
|
248
|
+
sx={boxSx}
|
|
249
|
+
agents={agents}
|
|
250
|
+
/>):null}
|
|
249
251
|
<DialougeInformation
|
|
250
252
|
sx={boxSx}
|
|
251
253
|
rasaChatSessionId={rasaChatSessionId}
|
|
252
254
|
slots={slots}
|
|
253
255
|
events={events}
|
|
254
256
|
story={story}
|
|
257
|
+
latency={latency}
|
|
255
258
|
/>
|
|
256
259
|
</Grid>
|
|
257
260
|
</GridItem>
|
|
@@ -263,16 +266,11 @@ export function App() {
|
|
|
263
266
|
slots={slots}
|
|
264
267
|
/>
|
|
265
268
|
</GridItem>
|
|
266
|
-
|
|
267
|
-
<
|
|
268
|
-
<
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
<Chat events={events || []} />
|
|
272
|
-
</GridItem>
|
|
273
|
-
)}
|
|
274
|
-
</Grid>
|
|
275
|
-
</GridItem>
|
|
269
|
+
{shouldShowTranscript && (
|
|
270
|
+
<GridItem>
|
|
271
|
+
<Chat events={events || []} />
|
|
272
|
+
</GridItem>
|
|
273
|
+
)}
|
|
276
274
|
</Grid>
|
|
277
275
|
)
|
|
278
276
|
}
|
|
@@ -5,7 +5,6 @@ import { Command, Event } from '../types'
|
|
|
5
5
|
|
|
6
6
|
interface Props extends FlexProps {
|
|
7
7
|
events: Event[]
|
|
8
|
-
hasLatencyDisplay?: boolean
|
|
9
8
|
}
|
|
10
9
|
|
|
11
10
|
export const Chat = ({ sx, events, ...props }: Props) => {
|
|
@@ -13,9 +12,9 @@ export const Chat = ({ sx, events, ...props }: Props) => {
|
|
|
13
12
|
...sx,
|
|
14
13
|
p: 0,
|
|
15
14
|
flexDirection: 'column',
|
|
16
|
-
height: '100%',
|
|
17
15
|
}
|
|
18
16
|
|
|
17
|
+
const maxHeight = document.documentElement.scrollHeight - 64
|
|
19
18
|
// 21 and 25 are the rem number we're using for the columns. We add 0.75rem for the padding
|
|
20
19
|
// A potential improvement would be to add a onresize event for both width and height
|
|
21
20
|
let remReference = 21.75
|
|
@@ -111,7 +110,7 @@ export const Chat = ({ sx, events, ...props }: Props) => {
|
|
|
111
110
|
borderRadius: '10px',
|
|
112
111
|
border: 'none',
|
|
113
112
|
width: columnWidth,
|
|
114
|
-
height:
|
|
113
|
+
height: maxHeight,
|
|
115
114
|
}}
|
|
116
115
|
history={messages}
|
|
117
116
|
demo={true}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Box,
|
|
3
|
+
FlexProps,
|
|
4
|
+
Heading,
|
|
5
|
+
Table,
|
|
6
|
+
Thead,
|
|
7
|
+
Tbody,
|
|
8
|
+
Tr,
|
|
9
|
+
Th,
|
|
10
|
+
Td,
|
|
11
|
+
Text,
|
|
12
|
+
Flex,
|
|
13
|
+
} from '@chakra-ui/react'
|
|
14
|
+
import { useOurTheme } from '../theme'
|
|
15
|
+
import {Agent, Stack} from '../types'
|
|
16
|
+
|
|
17
|
+
function mapStatusToHumanReadableName(status: Agent['status']) {
|
|
18
|
+
switch (status) {
|
|
19
|
+
case 'running':
|
|
20
|
+
return 'Running'
|
|
21
|
+
case 'completed':
|
|
22
|
+
return 'Completed'
|
|
23
|
+
case 'interrupted':
|
|
24
|
+
return 'Interrupted'
|
|
25
|
+
case 'cancelled':
|
|
26
|
+
return 'Cancelled'
|
|
27
|
+
default:
|
|
28
|
+
return '-'
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
interface Props extends FlexProps {
|
|
33
|
+
agents: Agent[]
|
|
34
|
+
active?: Stack
|
|
35
|
+
onItemClick?: (stack: Stack) => void
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function AgentRow({
|
|
39
|
+
agent,
|
|
40
|
+
}: {
|
|
41
|
+
agent: Agent
|
|
42
|
+
}) {
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<Tr>
|
|
46
|
+
<Td>
|
|
47
|
+
<Text noOfLines={1}>{agent.name}</Text>
|
|
48
|
+
</Td>
|
|
49
|
+
<Td>
|
|
50
|
+
<Text noOfLines={1}>{mapStatusToHumanReadableName(agent.status)}</Text>
|
|
51
|
+
</Td>
|
|
52
|
+
</Tr>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const DialogueAgentStack = ({
|
|
57
|
+
sx,
|
|
58
|
+
agents,
|
|
59
|
+
active,
|
|
60
|
+
onItemClick,
|
|
61
|
+
...props
|
|
62
|
+
}: Props) => {
|
|
63
|
+
const { rasaSpace } = useOurTheme()
|
|
64
|
+
|
|
65
|
+
const containerSx = {
|
|
66
|
+
...sx,
|
|
67
|
+
pr: 0,
|
|
68
|
+
pb: 0,
|
|
69
|
+
flexDirection: 'column',
|
|
70
|
+
}
|
|
71
|
+
const overflowBox = {
|
|
72
|
+
height: '100%',
|
|
73
|
+
overflow: 'auto',
|
|
74
|
+
pr: rasaSpace[1],
|
|
75
|
+
pb: rasaSpace[0.5],
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<Flex sx={containerSx} {...props}>
|
|
80
|
+
<Flex>
|
|
81
|
+
<Heading size="lg" mb={rasaSpace[0.5]}>
|
|
82
|
+
Agents
|
|
83
|
+
</Heading>
|
|
84
|
+
<Text ml={rasaSpace[0.25]}>({agents.length} {agents.length === 1 ? 'agent' : 'agents'})</Text>
|
|
85
|
+
</Flex>
|
|
86
|
+
<Box sx={overflowBox}>
|
|
87
|
+
<Table width="100%" layout="fixed">
|
|
88
|
+
<Thead>
|
|
89
|
+
<Tr>
|
|
90
|
+
<Th>Name</Th>
|
|
91
|
+
<Th width="40%">Status</Th>
|
|
92
|
+
</Tr>
|
|
93
|
+
</Thead>
|
|
94
|
+
<Tbody>
|
|
95
|
+
{agents.length > 0 &&
|
|
96
|
+
[...agents]
|
|
97
|
+
.reverse()
|
|
98
|
+
.map((agent) => (
|
|
99
|
+
<AgentRow
|
|
100
|
+
agent={agent}
|
|
101
|
+
/>
|
|
102
|
+
))}
|
|
103
|
+
</Tbody>
|
|
104
|
+
</Table>
|
|
105
|
+
</Box>
|
|
106
|
+
</Flex>
|
|
107
|
+
)
|
|
108
|
+
}
|
|
@@ -52,8 +52,6 @@ function StackRow({
|
|
|
52
52
|
},
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
const agentOrStep = stack.agent_id ?? stack.step_id;
|
|
56
|
-
|
|
57
55
|
return (
|
|
58
56
|
<Tr
|
|
59
57
|
sx={
|
|
@@ -67,19 +65,19 @@ function StackRow({
|
|
|
67
65
|
</Tooltip>
|
|
68
66
|
</Td>
|
|
69
67
|
<Td>
|
|
70
|
-
{shouldShowTooltip(
|
|
71
|
-
<Tooltip label={
|
|
72
|
-
<Text noOfLines={1}>{
|
|
68
|
+
{shouldShowTooltip(stack.step_id) ? (
|
|
69
|
+
<Tooltip label={stack.step_id} hasArrow>
|
|
70
|
+
<Text noOfLines={1}>{stack.step_id}</Text>
|
|
73
71
|
</Tooltip>
|
|
74
72
|
) : (
|
|
75
|
-
<Text noOfLines={1}>{
|
|
73
|
+
<Text noOfLines={1}>{stack.step_id}</Text>
|
|
76
74
|
)}
|
|
77
75
|
</Td>
|
|
78
76
|
</Tr>
|
|
79
77
|
)
|
|
80
78
|
}
|
|
81
79
|
|
|
82
|
-
export const
|
|
80
|
+
export const DialogueHistoryStack = ({
|
|
83
81
|
sx,
|
|
84
82
|
stack,
|
|
85
83
|
active,
|
|
@@ -107,7 +105,7 @@ export const DialogueStack = ({
|
|
|
107
105
|
<Heading size="lg" mb={rasaSpace[0.5]}>
|
|
108
106
|
History
|
|
109
107
|
</Heading>
|
|
110
|
-
<Text ml={rasaSpace[0.25]}>({stack.length} flows)</Text>
|
|
108
|
+
<Text ml={rasaSpace[0.25]}>({stack.length} {stack.length === 1 ? 'flow' : 'flows'})</Text>
|
|
111
109
|
</Flex>
|
|
112
110
|
<Box sx={overflowBox}>
|
|
113
111
|
<Table width="100%" layout="fixed">
|
|
@@ -120,6 +118,7 @@ export const DialogueStack = ({
|
|
|
120
118
|
<Tbody>
|
|
121
119
|
{stack.length > 0 &&
|
|
122
120
|
[...stack]
|
|
121
|
+
.filter(frame => !frame.agent_id)
|
|
123
122
|
.reverse()
|
|
124
123
|
.map((stack) => (
|
|
125
124
|
<StackRow
|
|
@@ -136,6 +135,7 @@ export const DialogueStack = ({
|
|
|
136
135
|
flow_id: '-',
|
|
137
136
|
step_id: '-',
|
|
138
137
|
ended: false,
|
|
138
|
+
type: "flow"
|
|
139
139
|
}}
|
|
140
140
|
/>
|
|
141
141
|
)}
|
|
@@ -13,13 +13,14 @@ import {
|
|
|
13
13
|
useTab,
|
|
14
14
|
useToast,
|
|
15
15
|
} from '@chakra-ui/react'
|
|
16
|
+
import { useEffect } from 'react'
|
|
16
17
|
import { Light as SyntaxHighlighter } from 'react-syntax-highlighter'
|
|
18
|
+
import { useCopyToClipboard } from 'usehooks-ts'
|
|
19
|
+
import { formatTestCases } from '../helpers/formatters'
|
|
17
20
|
import { useOurTheme } from '../theme'
|
|
18
21
|
import { Event, Slot } from '../types'
|
|
19
|
-
import { formatTestCases } from '../helpers/formatters'
|
|
20
|
-
import { useCopyToClipboard } from 'usehooks-ts'
|
|
21
|
-
import { useEffect } from 'react'
|
|
22
22
|
import { FullscreenButton } from './FullscreenButton'
|
|
23
|
+
import { LatencyDisplay } from './LatencyDisplay'
|
|
23
24
|
import { SlotTable, Slots } from './Slots'
|
|
24
25
|
|
|
25
26
|
interface Props extends FlexProps {
|
|
@@ -27,6 +28,7 @@ interface Props extends FlexProps {
|
|
|
27
28
|
events: Event[]
|
|
28
29
|
story: string
|
|
29
30
|
slots: Slot[]
|
|
31
|
+
latency: any
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
export const DialougeInformation = ({
|
|
@@ -35,6 +37,7 @@ export const DialougeInformation = ({
|
|
|
35
37
|
events,
|
|
36
38
|
story,
|
|
37
39
|
slots,
|
|
40
|
+
latency,
|
|
38
41
|
...props
|
|
39
42
|
}: Props) => {
|
|
40
43
|
const toast = useToast()
|
|
@@ -92,6 +95,7 @@ export const DialougeInformation = ({
|
|
|
92
95
|
}, [copiedText, toast])
|
|
93
96
|
|
|
94
97
|
const testCases = formatTestCases(events, rasaChatSessionId)
|
|
98
|
+
const rasaLatency = getLastActionListenEvent(events)?.metadata?.execution_times
|
|
95
99
|
|
|
96
100
|
return (
|
|
97
101
|
<Flex sx={containerSx} {...props}>
|
|
@@ -105,6 +109,7 @@ export const DialougeInformation = ({
|
|
|
105
109
|
<CustomTab>Slots</CustomTab>
|
|
106
110
|
<CustomTab>End-2-end test</CustomTab>
|
|
107
111
|
<CustomTab>Tracker state</CustomTab>
|
|
112
|
+
<CustomTab>Latency</CustomTab>
|
|
108
113
|
</TabList>
|
|
109
114
|
<TabPanels height="100%" overflow="hidden">
|
|
110
115
|
<TabPanel sx={tabPanelSx}>
|
|
@@ -160,6 +165,14 @@ export const DialougeInformation = ({
|
|
|
160
165
|
</FullscreenButton>
|
|
161
166
|
</HStack>
|
|
162
167
|
</TabPanel>
|
|
168
|
+
<TabPanel sx={tabPanelSx}>
|
|
169
|
+
<Box sx={overflowBox}>
|
|
170
|
+
<LatencyDisplay
|
|
171
|
+
voiceLatency={latency}
|
|
172
|
+
rasaLatency={rasaLatency}
|
|
173
|
+
/>
|
|
174
|
+
</Box>
|
|
175
|
+
</TabPanel>
|
|
163
176
|
</TabPanels>
|
|
164
177
|
</Tabs>
|
|
165
178
|
</Flex>
|
|
@@ -185,3 +198,7 @@ const CustomTab = (props: TabProps) => {
|
|
|
185
198
|
</Button>
|
|
186
199
|
)
|
|
187
200
|
}
|
|
201
|
+
|
|
202
|
+
const getLastActionListenEvent = (events: Event[]): Event | undefined => {
|
|
203
|
+
return [...events].reverse().find((event) => event.name === 'action_listen')
|
|
204
|
+
}
|
|
@@ -2,40 +2,47 @@ import {
|
|
|
2
2
|
Box,
|
|
3
3
|
Flex,
|
|
4
4
|
FlexProps,
|
|
5
|
-
Text,
|
|
6
|
-
useColorModeValue,
|
|
7
|
-
Tooltip,
|
|
8
5
|
Table,
|
|
9
6
|
Tbody,
|
|
10
|
-
Tr,
|
|
11
7
|
Td,
|
|
8
|
+
Text,
|
|
9
|
+
Tooltip,
|
|
10
|
+
Tr,
|
|
11
|
+
useColorModeValue,
|
|
12
12
|
} from '@chakra-ui/react'
|
|
13
13
|
import { useOurTheme } from '../theme'
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
isRasaLatency,
|
|
16
|
+
isVoiceLatency,
|
|
17
|
+
RasaLatency,
|
|
18
|
+
VoiceLatency,
|
|
19
|
+
} from '../types'
|
|
15
20
|
|
|
16
|
-
interface
|
|
17
|
-
latency:
|
|
21
|
+
interface MinimalDisplayProps extends FlexProps {
|
|
22
|
+
latency: RasaLatency
|
|
18
23
|
}
|
|
19
24
|
|
|
20
25
|
/**
|
|
21
26
|
* Simple latency display for text-only conversations.
|
|
22
27
|
* Shows a single response time value.
|
|
23
28
|
*/
|
|
24
|
-
const MinimalDisplay = ({ latency, sx, ...props }:
|
|
29
|
+
const MinimalDisplay = ({ latency, sx, ...props }: MinimalDisplayProps) => {
|
|
25
30
|
const containerSx = {
|
|
26
31
|
...sx,
|
|
27
32
|
display: 'flex',
|
|
28
33
|
alignItems: 'center',
|
|
29
34
|
}
|
|
30
|
-
|
|
35
|
+
|
|
31
36
|
const getLatencyColor = (latency: number) => {
|
|
32
37
|
if (latency < 1500) return 'green.500'
|
|
33
38
|
if (latency < 2500) return 'orange.500'
|
|
34
39
|
return 'red.500'
|
|
35
40
|
}
|
|
36
|
-
|
|
37
|
-
const value = Math.round(
|
|
38
|
-
|
|
41
|
+
|
|
42
|
+
const value = Math.round(
|
|
43
|
+
(latency.command_processor || 0) + (latency.prediction_loop || 0),
|
|
44
|
+
)
|
|
45
|
+
const color = getLatencyColor(value)
|
|
39
46
|
|
|
40
47
|
return (
|
|
41
48
|
<Flex sx={containerSx} {...props}>
|
|
@@ -49,11 +56,15 @@ const MinimalDisplay = ({ latency, sx, ...props }: Props) => {
|
|
|
49
56
|
)
|
|
50
57
|
}
|
|
51
58
|
|
|
59
|
+
interface WaterfallDisplayProps extends FlexProps {
|
|
60
|
+
latency: VoiceLatency
|
|
61
|
+
}
|
|
62
|
+
|
|
52
63
|
/**
|
|
53
64
|
* Detailed latency waterfall chart for voice conversations.
|
|
54
65
|
* Displays processing times for ASR, Rasa, and TTS components.
|
|
55
66
|
*/
|
|
56
|
-
const WaterfallDisplay = ({ latency, sx, ...props }:
|
|
67
|
+
const WaterfallDisplay = ({ latency, sx, ...props }: WaterfallDisplayProps) => {
|
|
57
68
|
const { rasaSpace } = useOurTheme()
|
|
58
69
|
|
|
59
70
|
const containerSx = {
|
|
@@ -61,13 +72,13 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
|
|
|
61
72
|
flexDirection: 'column',
|
|
62
73
|
gap: rasaSpace[1],
|
|
63
74
|
}
|
|
64
|
-
|
|
75
|
+
|
|
65
76
|
const headerSx = {
|
|
66
77
|
fontSize: 'sm',
|
|
67
78
|
fontWeight: 'bold',
|
|
68
79
|
color: useColorModeValue('gray.700', 'gray.300'),
|
|
69
80
|
}
|
|
70
|
-
|
|
81
|
+
|
|
71
82
|
const waterfallBarSx = {
|
|
72
83
|
height: '24px',
|
|
73
84
|
borderRadius: '4px',
|
|
@@ -75,10 +86,10 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
|
|
|
75
86
|
border: '1px solid',
|
|
76
87
|
borderColor: useColorModeValue('gray.200', 'gray.600'),
|
|
77
88
|
}
|
|
78
|
-
|
|
89
|
+
|
|
79
90
|
const legendTableSx = {
|
|
80
91
|
size: 'sm',
|
|
81
|
-
mt: rasaSpace[0.5]
|
|
92
|
+
mt: rasaSpace[0.5],
|
|
82
93
|
}
|
|
83
94
|
|
|
84
95
|
const getLatencyColor = (type: string) => {
|
|
@@ -95,8 +106,10 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
|
|
|
95
106
|
const descriptions: { [key: string]: string } = {
|
|
96
107
|
asr: 'Time from the first Partial Transcript event to the Final Transcript event from Speech Recognition. It also includes the time taken by the user to speak.',
|
|
97
108
|
rasa: 'Time taken by Rasa to process the text from the Final Transcript event from Speech Recognition until a text response is generated.',
|
|
98
|
-
tts_first:
|
|
99
|
-
|
|
109
|
+
tts_first:
|
|
110
|
+
'Time between the request sent to Text-to-Speech processing and the first byte of audio received by Rasa.',
|
|
111
|
+
tts_complete:
|
|
112
|
+
'Time taken by Text-to-Speech to complete audio generation. It depends on the length of the text and could overlap with the Bot speaking time.',
|
|
100
113
|
}
|
|
101
114
|
return descriptions[type] || ''
|
|
102
115
|
}
|
|
@@ -151,10 +164,10 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
|
|
|
151
164
|
)
|
|
152
165
|
|
|
153
166
|
// Calculate total latency for title (Rasa + TTS First Byte)
|
|
154
|
-
const totalDisplayLatency =
|
|
155
|
-
(latency.rasa_processing_latency_ms || 0) +
|
|
156
|
-
(latency.tts_first_byte_latency_ms || 0)
|
|
157
|
-
|
|
167
|
+
const totalDisplayLatency =
|
|
168
|
+
(latency.rasa_processing_latency_ms || 0) +
|
|
169
|
+
(latency.tts_first_byte_latency_ms || 0)
|
|
170
|
+
|
|
158
171
|
return (
|
|
159
172
|
<Flex sx={containerSx} {...props}>
|
|
160
173
|
<Text sx={headerSx}>
|
|
@@ -241,28 +254,43 @@ const WaterfallDisplay = ({ latency, sx, ...props }: Props) => {
|
|
|
241
254
|
)
|
|
242
255
|
}
|
|
243
256
|
|
|
257
|
+
interface LatencyDisplayProps extends FlexProps {
|
|
258
|
+
voiceLatency?: any
|
|
259
|
+
rasaLatency?: any
|
|
260
|
+
}
|
|
261
|
+
|
|
244
262
|
/**
|
|
245
263
|
* Displays processing latency information for the conversation.
|
|
246
|
-
* Shows either a detailed waterfall chart for voice conversations or
|
|
264
|
+
* Shows either a detailed waterfall chart for voice conversations or
|
|
247
265
|
* a simpler display for text-only conversations.
|
|
248
266
|
*/
|
|
249
267
|
export const LatencyDisplay = ({
|
|
250
268
|
sx,
|
|
251
|
-
|
|
269
|
+
voiceLatency,
|
|
270
|
+
rasaLatency,
|
|
252
271
|
...props
|
|
253
|
-
}:
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
return
|
|
272
|
+
}: LatencyDisplayProps) => {
|
|
273
|
+
// We give priority to voice latency as most comprehensive.
|
|
274
|
+
if (isVoiceLatency(voiceLatency)) {
|
|
275
|
+
return <WaterfallDisplay latency={voiceLatency} sx={sx} {...props} />
|
|
257
276
|
}
|
|
258
277
|
|
|
259
|
-
//
|
|
260
|
-
|
|
261
|
-
latency
|
|
278
|
+
// If voice latency is not available, we use rasa latency.
|
|
279
|
+
if (isRasaLatency(rasaLatency)) {
|
|
280
|
+
return <MinimalDisplay latency={rasaLatency} sx={sx} {...props} />
|
|
281
|
+
}
|
|
262
282
|
|
|
263
|
-
|
|
264
|
-
|
|
283
|
+
// If rasa latency is not available, we are either waiting for first data from voice stream or the conversation is not started yet.
|
|
284
|
+
if (!rasaLatency) {
|
|
285
|
+
return <Text>Rasa latency data is not available yet</Text>
|
|
265
286
|
}
|
|
266
287
|
|
|
267
|
-
|
|
288
|
+
// If rasa latency is available but did not pass type guard, we are in an unexpected state
|
|
289
|
+
// and we should log an error but gracefully fallback to showing no data.
|
|
290
|
+
console.warn(
|
|
291
|
+
`Latency data has unexpected format. Raw data of rasaLatency: ${rasaLatency},
|
|
292
|
+
raw data of voice latency: ${voiceLatency}`,
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
return <Text>Latency data is not available yet</Text>
|
|
268
296
|
}
|
|
@@ -52,6 +52,7 @@ interface AudioQueue {
|
|
|
52
52
|
addMarker: (id: string) => void
|
|
53
53
|
reduceMarkers: (bytesRead: number) => void
|
|
54
54
|
popMarkers: () => void
|
|
55
|
+
clear: () => void
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
const createAudioQueue = (socket: WebSocket): AudioQueue => {
|
|
@@ -108,6 +109,14 @@ const createAudioQueue = (socket: WebSocket): AudioQueue => {
|
|
|
108
109
|
}
|
|
109
110
|
})
|
|
110
111
|
},
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Clears the audio queue, removing all buffered audio and markers.
|
|
115
|
+
*/
|
|
116
|
+
clear: function () {
|
|
117
|
+
this.buffer = new Float32Array(0)
|
|
118
|
+
this.marks = []
|
|
119
|
+
},
|
|
111
120
|
}
|
|
112
121
|
}
|
|
113
122
|
|
|
@@ -204,7 +213,12 @@ const addDataToAudioQueue =
|
|
|
204
213
|
}
|
|
205
214
|
console.log('Voice Latency Metrics:', data['latency'])
|
|
206
215
|
audioQueue.addMarker(data['marker'])
|
|
216
|
+
} else if (data['interruptPlayback']) {
|
|
217
|
+
// User interrupted the bot, immediately clear the audio queue
|
|
218
|
+
audioQueue.clear()
|
|
219
|
+
console.log('Audio queue cleared due to user interruption.')
|
|
207
220
|
}
|
|
221
|
+
|
|
208
222
|
} catch (error) {
|
|
209
223
|
console.error('Error processing server incoming audio data:', error)
|
|
210
224
|
}
|
|
@@ -294,6 +294,7 @@ describe('helpers', () => {
|
|
|
294
294
|
step_id: 'step_id',
|
|
295
295
|
collect: fieldValue,
|
|
296
296
|
ended: false,
|
|
297
|
+
type: 'flow',
|
|
297
298
|
}),
|
|
298
299
|
).toEqual(fieldValue)
|
|
299
300
|
})
|
|
@@ -307,6 +308,7 @@ describe('helpers', () => {
|
|
|
307
308
|
flow_id: 'flow_id',
|
|
308
309
|
step_id: 'step_id',
|
|
309
310
|
ended: false,
|
|
311
|
+
type: 'flow',
|
|
310
312
|
}),
|
|
311
313
|
).toEqual(fieldValue)
|
|
312
314
|
})
|
|
@@ -321,6 +323,7 @@ describe('helpers', () => {
|
|
|
321
323
|
step_id: 'step_id',
|
|
322
324
|
collect: fieldValue,
|
|
323
325
|
ended: false,
|
|
326
|
+
type: 'flow',
|
|
324
327
|
}),
|
|
325
328
|
).toEqual(`${fieldValue} is not null`)
|
|
326
329
|
})
|
|
@@ -335,6 +338,7 @@ describe('helpers', () => {
|
|
|
335
338
|
step_id: 'step_id',
|
|
336
339
|
collect: fieldValue,
|
|
337
340
|
ended: false,
|
|
341
|
+
type: 'flow',
|
|
338
342
|
}),
|
|
339
343
|
).toEqual(`not ${fieldValue}`)
|
|
340
344
|
})
|