gitextract_dhtxbcma/ ├── .dockerignore ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ └── feature.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ └── workflows/ │ ├── build-and-push-python-pg.yml │ ├── build-and-push-vector-model.yml │ ├── build-and-push.yml │ ├── create-pr-from-push.yml │ ├── issue-translator.yml │ ├── llm-code-review.yml │ ├── sync2gitee.yml │ └── typos_check.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── README_CN.md ├── SECURITY.md ├── USE-CASES.md ├── apps/ │ ├── __init__.py │ ├── application/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── api/ │ │ │ ├── application_access_token.py │ │ │ ├── application_api.py │ │ │ ├── application_api_key.py │ │ │ ├── application_chat.py │ │ │ ├── application_chat_link.py │ │ │ ├── application_chat_record.py │ │ │ ├── application_stats.py │ │ │ └── application_version.py │ │ ├── apps.py │ │ ├── chat_pipeline/ │ │ │ ├── I_base_chat_pipeline.py │ │ │ ├── __init__.py │ │ │ ├── pipeline_manage.py │ │ │ └── step/ │ │ │ ├── __init__.py │ │ │ ├── chat_step/ │ │ │ │ ├── __init__.py │ │ │ │ ├── i_chat_step.py │ │ │ │ └── impl/ │ │ │ │ └── base_chat_step.py │ │ │ ├── generate_human_message_step/ │ │ │ │ ├── __init__.py │ │ │ │ ├── i_generate_human_message_step.py │ │ │ │ └── impl/ │ │ │ │ └── base_generate_human_message_step.py │ │ │ ├── reset_problem_step/ │ │ │ │ ├── __init__.py │ │ │ │ ├── i_reset_problem_step.py │ │ │ │ └── impl/ │ │ │ │ └── base_reset_problem_step.py │ │ │ └── search_dataset_step/ │ │ │ ├── __init__.py │ │ │ ├── i_search_dataset_step.py │ │ │ └── impl/ │ │ │ └── base_search_dataset_step.py │ │ ├── flow/ │ │ │ ├── __init__.py │ │ │ ├── backend/ │ │ │ │ ├── __init__.py │ │ │ │ └── sandbox_shell.py │ │ │ ├── common.py │ │ │ ├── compare/ │ │ │ │ ├── __init__.py │ │ │ │ ├── compare.py │ │ │ │ ├── contain_compare.py │ │ │ │ ├── end_with.py │ │ │ │ ├── equal_compare.py │ │ │ │ ├── ge_compare.py │ │ │ │ ├── gt_compare.py │ │ │ │ ├── is_not_null_compare.py │ │ │ │ ├── is_not_true.py │ │ │ │ ├── is_null_compare.py │ │ │ │ ├── is_true.py │ │ │ │ ├── le_compare.py │ │ │ │ ├── len_equal_compare.py │ │ │ │ ├── len_ge_compare.py │ │ │ │ ├── len_gt_compare.py │ │ │ │ ├── len_le_compare.py │ │ │ │ ├── len_lt_compare.py │ │ │ │ ├── lt_compare.py │ │ │ │ ├── not_contain_compare.py │ │ │ │ ├── not_equal_compare.py │ │ │ │ └── start_with.py │ │ │ ├── default_workflow.json │ │ │ ├── default_workflow_en.json │ │ │ ├── default_workflow_zh.json │ │ │ ├── default_workflow_zh_Hant.json │ │ │ ├── i_step_node.py │ │ │ ├── knowledge_loop_workflow_manage.py │ │ │ ├── knowledge_workflow_manage.py │ │ │ ├── loop_workflow_manage.py │ │ │ ├── step_node/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ai_chat_step_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_chat_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_chat_node.py │ │ │ │ ├── application_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_application_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_application_node.py │ │ │ │ ├── condition_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_condition_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_condition_node.py │ │ │ │ ├── data_source_local_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_data_source_local_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_data_source_local_node.py │ │ │ │ ├── data_source_web_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_data_source_web_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_data_source_web_node.py │ │ │ │ ├── direct_reply_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_reply_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_reply_node.py │ │ │ │ ├── document_extract_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_document_extract_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_document_extract_node.py │ │ │ │ ├── document_split_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_document_split_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_document_split_node.py │ │ │ │ ├── form_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_form_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_form_node.py │ │ │ │ ├── image_generate_step_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_image_generate_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_image_generate_node.py │ │ │ │ ├── image_to_video_step_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_image_to_video_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_image_to_video_node.py │ │ │ │ ├── image_understand_step_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_image_understand_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_image_understand_node.py │ │ │ │ ├── intent_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_intent_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_intent_node.py │ │ │ │ │ └── prompt_template.py │ │ │ │ ├── knowledge_write_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_knowledge_write_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_knowledge_write_node.py │ │ │ │ ├── loop_break_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_loop_break_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_loop_break_node.py │ │ │ │ ├── loop_continue_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_loop_continue_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_loop_continue_node.py │ │ │ │ ├── loop_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_loop_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_loop_node.py │ │ │ │ ├── loop_start_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_loop_start_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_start_node.py │ │ │ │ ├── mcp_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_mcp_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_mcp_node.py │ │ │ │ ├── parameter_extraction_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_parameter_extraction_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_parameter_extraction_node.py │ │ │ │ ├── question_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_question_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_question_node.py │ │ │ │ ├── reranker_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_reranker_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_reranker_node.py │ │ │ │ ├── search_document_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_search_document_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_search_document_node.py │ │ │ │ ├── search_knowledge_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_search_knowledge_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_search_knowledge_node.py │ │ │ │ ├── speech_to_text_step_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_speech_to_text_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_speech_to_text_node.py │ │ │ │ ├── start_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_start_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_start_node.py │ │ │ │ ├── text_to_speech_step_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_text_to_speech_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_text_to_speech_node.py │ │ │ │ ├── text_to_video_step_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_text_to_video_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_text_to_video_node.py │ │ │ │ ├── tool_lib_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_tool_lib_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_tool_lib_node.py │ │ │ │ ├── tool_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_tool_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_tool_node.py │ │ │ │ ├── tool_start_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_tool_start_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_tool_start_node.py │ │ │ │ ├── tool_workflow_lib_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_tool_workflow_lib_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_tool_workflow_lib_node.py │ │ │ │ ├── variable_aggregation_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_variable_aggregation_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_variable_aggregation_node.py │ │ │ │ ├── variable_assign_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_variable_assign_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_variable_assign_node.py │ │ │ │ ├── variable_splitting_node/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── i_variable_splitting_node.py │ │ │ │ │ └── impl/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── base_variable_splitting_node.py │ │ │ │ └── video_understand_step_node/ │ │ │ │ ├── __init__.py │ │ │ │ ├── i_video_understand_node.py │ │ │ │ └── impl/ │ │ │ │ ├── __init__.py │ │ │ │ └── base_video_understand_node.py │ │ │ ├── tool_loop_workflow_manage.py │ │ │ ├── tool_workflow_manage.py │ │ │ ├── tools.py │ │ │ └── workflow_manage.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_application_simple_mcp.py │ │ │ ├── 0003_application_stt_model_params_setting_and_more.py │ │ │ ├── 0004_application_application_enable_and_more.py │ │ │ ├── 0005_chatrecord_vote_other_content_chatrecord_vote_reason.py │ │ │ ├── 0006_application_file_clean_time.py │ │ │ ├── 0007_applicationapikey_expire_time_and_more.py │ │ │ ├── 0008_chat_ip_address_chat_source_chatrecord_ip_address_and_more.py │ │ │ ├── 0009_clean_application_knowledge_mapping.py │ │ │ ├── 0010_chatsharelink.py │ │ │ ├── 0011_application_skill_tool_ids.py │ │ │ ├── 0012_remove_applicationapikey_user.py │ │ │ └── __init__.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── application.py │ │ │ ├── application_access_token.py │ │ │ ├── application_api_key.py │ │ │ └── application_chat.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ ├── application.py │ │ │ ├── application_access_token.py │ │ │ ├── application_api_key.py │ │ │ ├── application_chat.py │ │ │ ├── application_chat_link.py │ │ │ ├── application_chat_record.py │ │ │ ├── application_folder.py │ │ │ ├── application_stats.py │ │ │ ├── application_version.py │ │ │ └── common.py │ │ ├── sql/ │ │ │ ├── chat_record_count_trend.sql │ │ │ ├── count_chat_record.sql │ │ │ ├── customer_count_trend.sql │ │ │ ├── export_application_chat.sql │ │ │ ├── export_application_chat_ee.sql │ │ │ ├── get_token_usage.sql │ │ │ ├── get_token_usage_ee.sql │ │ │ ├── list_application.sql │ │ │ ├── list_application_chat.sql │ │ │ ├── list_application_chat_ee.sql │ │ │ ├── list_application_user.sql │ │ │ ├── list_application_user_ee.sql │ │ │ ├── list_knowledge_paragraph_by_paragraph_id.sql │ │ │ ├── top_questions.sql │ │ │ └── top_questions_ee.sql │ │ ├── tests.py │ │ ├── urls.py │ │ └── views/ │ │ ├── __init__.py │ │ ├── application.py │ │ ├── application_access_token.py │ │ ├── application_api_key.py │ │ ├── application_chat.py │ │ ├── application_chat_link.py │ │ ├── application_chat_record.py │ │ ├── application_stats.py │ │ └── application_version.py │ ├── chat/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── api/ │ │ │ ├── chat_api.py │ │ │ ├── chat_authentication_api.py │ │ │ ├── chat_embed_api.py │ │ │ └── vote_api.py │ │ ├── apps.py │ │ ├── mcp/ │ │ │ ├── __init__.py │ │ │ └── tools.py │ │ ├── migrations/ │ │ │ └── __init__.py │ │ ├── models/ │ │ │ └── __init__.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ ├── chat.py │ │ │ ├── chat_authentication.py │ │ │ ├── chat_embed_serializers.py │ │ │ └── chat_record.py │ │ ├── template/ │ │ │ ├── embed.js │ │ │ └── generate_prompt_system │ │ ├── tests.py │ │ ├── urls.py │ │ └── views/ │ │ ├── __init__.py │ │ ├── chat.py │ │ ├── chat_embed.py │ │ ├── chat_record.py │ │ └── mcp.py │ ├── common/ │ │ ├── __init__.py │ │ ├── auth/ │ │ │ ├── __init__.py │ │ │ ├── authenticate.py │ │ │ ├── authentication.py │ │ │ ├── common.py │ │ │ └── handle/ │ │ │ ├── __init__.py │ │ │ ├── auth_base_handle.py │ │ │ └── impl/ │ │ │ ├── __init__.py │ │ │ ├── application_key.py │ │ │ ├── chat_anonymous_user_token.py │ │ │ └── user_token.py │ │ ├── cache/ │ │ │ ├── __init__.py │ │ │ └── mem_cache.py │ │ ├── cache_data/ │ │ │ ├── __init__.py │ │ │ ├── application_access_token_cache.py │ │ │ └── application_api_key_cache.py │ │ ├── chunk/ │ │ │ ├── __init__.py │ │ │ ├── i_chunk_handle.py │ │ │ └── impl/ │ │ │ ├── __init__.py │ │ │ └── mark_chunk_handle.py │ │ ├── config/ │ │ │ ├── __init__.py │ │ │ ├── embedding_config.py │ │ │ └── tokenizer_manage_config.py │ │ ├── constants/ │ │ │ ├── __init__.py │ │ │ ├── authentication_type.py │ │ │ ├── cache_version.py │ │ │ ├── exception_code_constants.py │ │ │ └── permission_constants.py │ │ ├── database_model_manage/ │ │ │ ├── __init__.py │ │ │ ├── database_model_manage.py │ │ │ └── handle/ │ │ │ ├── __init__.py │ │ │ ├── base_handle.py │ │ │ └── impl/ │ │ │ ├── __init__.py │ │ │ └── default_base_model_handle.py │ │ ├── db/ │ │ │ ├── __init__.py │ │ │ ├── compiler.py │ │ │ ├── search.py │ │ │ └── sql_execute.py │ │ ├── encoder/ │ │ │ ├── __init__.py │ │ │ └── encoder.py │ │ ├── event/ │ │ │ ├── __init__.py │ │ │ ├── common.py │ │ │ └── listener_manage.py │ │ ├── exception/ │ │ │ ├── __init__.py │ │ │ ├── app_exception.py │ │ │ └── handle_exception.py │ │ ├── field/ │ │ │ ├── __init__.py │ │ │ └── common.py │ │ ├── forms/ │ │ │ ├── __init__.py │ │ │ ├── array_object_card.py │ │ │ ├── base_field.py │ │ │ ├── base_form.py │ │ │ ├── label/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_label.py │ │ │ │ └── tooltip_label.py │ │ │ ├── multi_select.py │ │ │ ├── object_card.py │ │ │ ├── password_input.py │ │ │ ├── radio_button_field.py │ │ │ ├── radio_card_field.py │ │ │ ├── radio_field.py │ │ │ ├── single_select_field.py │ │ │ ├── slider_field.py │ │ │ ├── switch_field.py │ │ │ ├── tab_card.py │ │ │ ├── table_checkbox.py │ │ │ ├── table_radio.py │ │ │ └── text_input_field.py │ │ ├── handle/ │ │ │ ├── __init__.py │ │ │ ├── base_parse_qa_handle.py │ │ │ ├── base_parse_table_handle.py │ │ │ ├── base_split_handle.py │ │ │ ├── base_to_response.py │ │ │ ├── handle_exception.py │ │ │ └── impl/ │ │ │ ├── __init__.py │ │ │ ├── common_handle.py │ │ │ ├── qa/ │ │ │ │ ├── __init__.py │ │ │ │ ├── csv_parse_qa_handle.py │ │ │ │ ├── md_parse_qa_handle.py │ │ │ │ ├── xls_parse_qa_handle.py │ │ │ │ ├── xlsx_parse_qa_handle.py │ │ │ │ └── zip_parse_qa_handle.py │ │ │ ├── response/ │ │ │ │ ├── __init__.py │ │ │ │ ├── loop_to_response.py │ │ │ │ ├── openai_to_response.py │ │ │ │ └── system_to_response.py │ │ │ ├── table/ │ │ │ │ ├── __init__.py │ │ │ │ ├── csv_parse_table_handle.py │ │ │ │ ├── xls_parse_table_handle.py │ │ │ │ └── xlsx_parse_table_handle.py │ │ │ └── text/ │ │ │ ├── __init__.py │ │ │ ├── csv_split_handle.py │ │ │ ├── doc_split_handle.py │ │ │ ├── html_split_handle.py │ │ │ ├── pdf_split_handle.py │ │ │ ├── text_split_handle.py │ │ │ ├── xls_split_handle.py │ │ │ ├── xlsx_split_handle.py │ │ │ └── zip_split_handle.py │ │ ├── init/ │ │ │ ├── init_doc.py │ │ │ └── init_template.py │ │ ├── job/ │ │ │ ├── __init__.py │ │ │ ├── clean_chat_job.py │ │ │ ├── clean_debug_file_job.py │ │ │ ├── client_access_num_job.py │ │ │ └── scheduler.py │ │ ├── lock/ │ │ │ ├── __init__.py │ │ │ ├── base_lock.py │ │ │ └── impl/ │ │ │ └── __init__.py │ │ ├── log/ │ │ │ ├── __init__.py │ │ │ └── log.py │ │ ├── management/ │ │ │ ├── __init__.py │ │ │ └── commands/ │ │ │ ├── __init__.py │ │ │ ├── celery.py │ │ │ ├── restart.py │ │ │ ├── services/ │ │ │ │ ├── __init__.py │ │ │ │ ├── command.py │ │ │ │ ├── hands.py │ │ │ │ ├── services/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── celery_base.py │ │ │ │ │ ├── celery_default.py │ │ │ │ │ ├── gunicorn.py │ │ │ │ │ ├── local_model.py │ │ │ │ │ └── scheduler.py │ │ │ │ └── utils.py │ │ │ ├── start.py │ │ │ ├── status.py │ │ │ └── stop.py │ │ ├── middleware/ │ │ │ ├── __init__.py │ │ │ ├── chat_headers_middleware.py │ │ │ ├── cross_domain_middleware.py │ │ │ ├── doc_headers_middleware.py │ │ │ └── gzip.py │ │ ├── mixins/ │ │ │ ├── __init__.py │ │ │ ├── api_mixin.py │ │ │ └── app_model_mixin.py │ │ ├── result/ │ │ │ ├── __init__.py │ │ │ ├── api.py │ │ │ └── result.py │ │ ├── sql/ │ │ │ └── list_embedding_text.sql │ │ ├── template/ │ │ │ ├── email_template_en.html │ │ │ ├── email_template_zh.html │ │ │ └── email_template_zh_Hant.html │ │ └── utils/ │ │ ├── __init__.py │ │ ├── cache_util.py │ │ ├── chat_link_code.py │ │ ├── common.py │ │ ├── fork.py │ │ ├── lock.py │ │ ├── logger.py │ │ ├── page_utils.py │ │ ├── rsa_util.py │ │ ├── shared_resource_auth.py │ │ ├── split_model.py │ │ ├── tool_code.py │ │ └── ts_vecto_util.py │ ├── folders/ │ │ ├── __init__.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ └── folder.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ └── folder.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ └── folder.py │ │ ├── urls.py │ │ └── views/ │ │ ├── __init__.py │ │ └── folder.py │ ├── knowledge/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ ├── document.py │ │ │ ├── file.py │ │ │ ├── knowledge.py │ │ │ ├── knowledge_version.py │ │ │ ├── knowledge_workflow.py │ │ │ ├── paragraph.py │ │ │ ├── problem.py │ │ │ └── tag.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_alter_file_source_type.py │ │ │ ├── 0003_tag_documenttag.py │ │ │ ├── 0004_alter_document_type_alter_knowledge_type_and_more.py │ │ │ ├── 0005_knowledgeaction.py │ │ │ ├── 0006_paragraph_chunks.py │ │ │ ├── 0007_remove_knowledgeworkflowversion_workflow_and_more.py │ │ │ └── __init__.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── knowledge.py │ │ │ └── knowledge_action.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ ├── common.py │ │ │ ├── document.py │ │ │ ├── knowledge.py │ │ │ ├── knowledge_folder.py │ │ │ ├── knowledge_version.py │ │ │ ├── knowledge_workflow.py │ │ │ ├── paragraph.py │ │ │ ├── problem.py │ │ │ └── tag.py │ │ ├── sql/ │ │ │ ├── blend_search.sql │ │ │ ├── embedding_search.sql │ │ │ ├── hit_test.sql │ │ │ ├── keywords_search.sql │ │ │ ├── list_document.sql │ │ │ ├── list_knowledge.sql │ │ │ ├── list_knowledge_application.sql │ │ │ ├── list_knowledge_user.sql │ │ │ ├── list_knowledge_user_ee.sql │ │ │ ├── list_paragraph.sql │ │ │ ├── list_paragraph_document_name.sql │ │ │ ├── list_problem.sql │ │ │ ├── list_problem_mapping.sql │ │ │ ├── update_document_char_length.sql │ │ │ ├── update_document_status_meta.sql │ │ │ └── update_paragraph_status.sql │ │ ├── task/ │ │ │ ├── __init__.py │ │ │ ├── embedding.py │ │ │ ├── generate.py │ │ │ ├── handler.py │ │ │ └── sync.py │ │ ├── template/ │ │ │ ├── csv_template_en.csv │ │ │ ├── csv_template_zh.csv │ │ │ ├── csv_template_zh_Hant.csv │ │ │ ├── excel_template_en.xlsx │ │ │ ├── excel_template_zh.xlsx │ │ │ ├── excel_template_zh_Hant.xlsx │ │ │ ├── table_template_en.csv │ │ │ ├── table_template_en.xlsx │ │ │ ├── table_template_zh.csv │ │ │ ├── table_template_zh.xlsx │ │ │ ├── table_template_zh_Hant.csv │ │ │ └── table_template_zh_Hant.xlsx │ │ ├── tests.py │ │ ├── urls.py │ │ ├── vector/ │ │ │ ├── __init__.py │ │ │ ├── base_vector.py │ │ │ └── pg_vector.py │ │ └── views/ │ │ ├── __init__.py │ │ ├── common.py │ │ ├── document.py │ │ ├── knowledge.py │ │ ├── knowledge_workflow.py │ │ ├── knowledge_workflow_version.py │ │ ├── paragraph.py │ │ ├── problem.py │ │ └── tag.py │ ├── local_model/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ └── __init__.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── model_management.py │ │ │ ├── system_setting.py │ │ │ └── user.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ ├── model_apply_serializers.py │ │ │ └── rsa_util.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views/ │ │ ├── __init__.py │ │ └── model_apply.py │ ├── locales/ │ │ ├── en_US/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ ├── zh_CN/ │ │ │ └── LC_MESSAGES/ │ │ │ └── django.po │ │ └── zh_Hant/ │ │ └── LC_MESSAGES/ │ │ └── django.po │ ├── manage.py │ ├── maxkb/ │ │ ├── __init__.py │ │ ├── asgi.py │ │ ├── conf.py │ │ ├── const.py │ │ ├── settings/ │ │ │ ├── __init__.py │ │ │ ├── auth/ │ │ │ │ ├── __init__.py │ │ │ │ ├── model.py │ │ │ │ └── web.py │ │ │ ├── base/ │ │ │ │ ├── __init__.py │ │ │ │ ├── model.py │ │ │ │ └── web.py │ │ │ ├── lib.py │ │ │ ├── logging.py │ │ │ └── mem.py │ │ ├── urls/ │ │ │ ├── __init__.py │ │ │ ├── model.py │ │ │ └── web.py │ │ └── wsgi/ │ │ ├── __init__.py │ │ ├── model.py │ │ └── web.py │ ├── models_provider/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ ├── model.py │ │ │ └── provide.py │ │ ├── apps.py │ │ ├── base_model_provider.py │ │ ├── base_ttv.py │ │ ├── constants/ │ │ │ ├── __init__.py │ │ │ └── model_provider_constants.py │ │ ├── impl/ │ │ │ ├── __init__.py │ │ │ ├── aliyun_bai_lian_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── aliyun_bai_lian_model_provider.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── itv.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── reranker.py │ │ │ │ │ ├── stt/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── asr_stt.py │ │ │ │ │ │ ├── default_stt.py │ │ │ │ │ │ ├── omni_stt.py │ │ │ │ │ │ └── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ ├── tts.py │ │ │ │ │ └── ttv.py │ │ │ │ └── model/ │ │ │ │ ├── __init__.py │ │ │ │ ├── embedding.py │ │ │ │ ├── image.py │ │ │ │ ├── llm.py │ │ │ │ ├── reranker.py │ │ │ │ ├── stt/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── asr_stt.py │ │ │ │ │ ├── default_stt.py │ │ │ │ │ ├── omni_stt.py │ │ │ │ │ └── stt.py │ │ │ │ ├── tti.py │ │ │ │ ├── tts.py │ │ │ │ └── ttv.py │ │ │ ├── anthropic_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── anthropic_model_provider.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── image.py │ │ │ │ │ └── llm.py │ │ │ │ └── model/ │ │ │ │ ├── __init__.py │ │ │ │ ├── image.py │ │ │ │ └── llm.py │ │ │ ├── aws_bedrock_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── aws_bedrock_model_provider.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ └── reranker.py │ │ │ │ └── model/ │ │ │ │ ├── __init__.py │ │ │ │ ├── embedding.py │ │ │ │ ├── image.py │ │ │ │ ├── llm.py │ │ │ │ └── reranker.py │ │ │ ├── azure_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── azure_model_provider.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ └── tts.py │ │ │ │ └── model/ │ │ │ │ ├── __init__.py │ │ │ │ ├── azure_chat_model.py │ │ │ │ ├── embedding.py │ │ │ │ ├── image.py │ │ │ │ ├── stt.py │ │ │ │ ├── tti.py │ │ │ │ └── tts.py │ │ │ ├── base_chat_open_ai.py │ │ │ ├── base_stt.py │ │ │ ├── base_tti.py │ │ │ ├── base_tts.py │ │ │ ├── deepseek_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── llm.py │ │ │ │ ├── deepseek_model_provider.py │ │ │ │ └── model/ │ │ │ │ ├── __init__.py │ │ │ │ └── llm.py │ │ │ ├── docker_ai_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── reranker.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ └── tts.py │ │ │ │ ├── docker_ai_model_provider.py │ │ │ │ └── model/ │ │ │ │ ├── __init__.py │ │ │ │ ├── embedding.py │ │ │ │ ├── image.py │ │ │ │ ├── llm.py │ │ │ │ ├── reranker.py │ │ │ │ ├── stt.py │ │ │ │ ├── tti.py │ │ │ │ └── tts.py │ │ │ ├── gemini_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── stt.py │ │ │ │ │ └── tti.py │ │ │ │ ├── gemini_model_provider.py │ │ │ │ └── model/ │ │ │ │ ├── __init__.py │ │ │ │ ├── embedding.py │ │ │ │ ├── image.py │ │ │ │ ├── llm.py │ │ │ │ ├── stt.py │ │ │ │ └── tti.py │ │ │ ├── kimi_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── llm.py │ │ │ │ ├── kimi_model_provider.py │ │ │ │ └── model/ │ │ │ │ ├── __init__.py │ │ │ │ └── llm.py │ │ │ ├── local_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── model.py │ │ │ │ │ │ └── web.py │ │ │ │ │ └── reranker/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── model.py │ │ │ │ │ └── web.py │ │ │ │ ├── local_model_provider.py │ │ │ │ └── model/ │ │ │ │ ├── embedding/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── model.py │ │ │ │ │ └── web.py │ │ │ │ └── reranker/ │ │ │ │ ├── __init__.py │ │ │ │ ├── model.py │ │ │ │ └── web.py │ │ │ ├── ollama_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ └── reranker.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ └── reranker.py │ │ │ │ └── ollama_model_provider.py │ │ │ ├── openai_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ └── tts.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ └── tts.py │ │ │ │ └── openai_model_provider.py │ │ │ ├── qwen_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ └── __init__.py │ │ │ │ └── model/ │ │ │ │ └── __init__.py │ │ │ ├── regolo_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ └── tti.py │ │ │ │ ├── model/ │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ └── tti.py │ │ │ │ └── regolo_model_provider.py │ │ │ ├── siliconCloud_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── reranker.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ └── tts.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── reranker.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ └── tts.py │ │ │ │ └── siliconCloud_model_provider.py │ │ │ ├── tencent_cloud_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── llm.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── llm.py │ │ │ │ └── tencent_cloud_model_provider.py │ │ │ ├── tencent_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ └── tti.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── hunyuan.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ └── tti.py │ │ │ │ └── tencent_model_provider.py │ │ │ ├── vllm_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── reranker.py │ │ │ │ │ └── whisper_stt.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── reranker.py │ │ │ │ │ └── whisper_sst.py │ │ │ │ └── vllm_model_provider.py │ │ │ ├── volcanic_engine_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── bigModel_stt.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ ├── tts.py │ │ │ │ │ └── ttv.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── bigModel_stt.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ ├── tts.py │ │ │ │ │ └── ttv.py │ │ │ │ └── volcanic_engine_model_provider.py │ │ │ ├── wenxin_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ └── llm.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ └── llm.py │ │ │ │ └── wenxin_model_provider.py │ │ │ ├── xf_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tts/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── default_tts.py │ │ │ │ │ │ ├── super_humanoid_tts.py │ │ │ │ │ │ └── tts.py │ │ │ │ │ └── zh_en_stt.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tts/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── default_tts.py │ │ │ │ │ │ ├── super_humanoid_tts.py │ │ │ │ │ │ └── tts.py │ │ │ │ │ └── zh_en_stt.py │ │ │ │ └── xf_model_provider.py │ │ │ ├── xinference_model_provider/ │ │ │ │ ├── __init__.py │ │ │ │ ├── credential/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── reranker.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ └── tts.py │ │ │ │ ├── model/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── embedding.py │ │ │ │ │ ├── image.py │ │ │ │ │ ├── llm.py │ │ │ │ │ ├── reranker.py │ │ │ │ │ ├── stt.py │ │ │ │ │ ├── tti.py │ │ │ │ │ └── tts.py │ │ │ │ └── xinference_model_provider.py │ │ │ └── zhipu_model_provider/ │ │ │ ├── __init__.py │ │ │ ├── credential/ │ │ │ │ ├── __init__.py │ │ │ │ ├── image.py │ │ │ │ ├── llm.py │ │ │ │ └── tti.py │ │ │ ├── model/ │ │ │ │ ├── __init__.py │ │ │ │ ├── image.py │ │ │ │ ├── llm.py │ │ │ │ └── tti.py │ │ │ └── zhipu_model_provider.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ └── __init__.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ └── model_management.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ ├── model_apply_serializers.py │ │ │ └── model_serializer.py │ │ ├── sql/ │ │ │ ├── list_model.sql │ │ │ ├── list_model_user.sql │ │ │ └── list_model_user_ee.sql │ │ ├── tests.py │ │ ├── tools.py │ │ ├── urls.py │ │ └── views/ │ │ ├── __init__.py │ │ ├── model.py │ │ ├── model_apply.py │ │ └── provide.py │ ├── ops/ │ │ ├── __init__.py │ │ └── celery/ │ │ ├── __init__.py │ │ ├── const.py │ │ ├── decorator.py │ │ ├── heartbeat.py │ │ ├── hmac_signed_serializer.py │ │ ├── logger.py │ │ ├── signal_handler.py │ │ └── utils.py │ ├── oss/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── retrieval_urls.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ └── file.py │ │ ├── tests.py │ │ ├── urls.py │ │ ├── views/ │ │ │ ├── __init__.py │ │ │ └── file.py │ │ └── views.py │ ├── system_manage/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ ├── email_setting.py │ │ │ ├── resource_mapping.py │ │ │ ├── system.py │ │ │ └── user_resource_permission.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_refresh_collation_reindex.py │ │ │ ├── 0003_alter_workspaceuserresourcepermission_target.py │ │ │ ├── 0004_alter_systemsetting_type_and_more.py │ │ │ ├── 0005_resourcemapping.py │ │ │ └── __init__.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── chat_user.py │ │ │ ├── log_management.py │ │ │ ├── resource_mapping.py │ │ │ ├── system_setting.py │ │ │ └── workspace_user_permission.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ ├── email_setting.py │ │ │ ├── resource_mapping_serializers.py │ │ │ ├── system.py │ │ │ ├── user_resource_permission.py │ │ │ └── valid_serializers.py │ │ ├── sql/ │ │ │ ├── check_member_permission_target_exists.sql │ │ │ ├── get_application_user_resource_permission.sql │ │ │ ├── get_knowledge_user_resource_permission.sql │ │ │ ├── get_model_user_resource_permission.sql │ │ │ ├── get_resource_user_permission_detail.sql │ │ │ ├── get_resource_user_permission_detail_ee.sql │ │ │ ├── get_tool_user_resource_permission.sql │ │ │ ├── get_user_resource_permission.sql │ │ │ ├── list_resource_mapping.sql │ │ │ └── list_resource_mapping_ee.sql │ │ ├── tests.py │ │ ├── urls.py │ │ └── views/ │ │ ├── __init__.py │ │ ├── email_setting.py │ │ ├── log_management.py │ │ ├── resource_mapping.py │ │ ├── system_profile.py │ │ ├── user_resource_permission.py │ │ └── valid.py │ ├── tools/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ ├── tool.py │ │ │ └── tool_workflow.py │ │ ├── apps.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_alter_tool_tool_type.py │ │ │ ├── 0003_alter_tool_template_id.py │ │ │ ├── 0004_alter_tool_tool_type.py │ │ │ ├── 0005_taskrecord.py │ │ │ ├── 0006_alter_tool_tool_type.py │ │ │ ├── 0007_alter_tool_tool_type_toolworkflow_and_more.py │ │ │ ├── __init__.py │ │ │ └── internal_tool.sql │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── tool.py │ │ │ └── tool_workflow.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ ├── tool.py │ │ │ ├── tool_folder.py │ │ │ ├── tool_version.py │ │ │ └── tool_workflow.py │ │ ├── sql/ │ │ │ ├── list_tool.sql │ │ │ ├── list_tool_user.sql │ │ │ └── list_tool_user_ee.sql │ │ ├── tests.py │ │ ├── urls.py │ │ └── views/ │ │ ├── __init__.py │ │ ├── tool.py │ │ ├── tool_workflow.py │ │ └── tool_workflow_version.py │ ├── trigger/ │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ ├── trigger.py │ │ │ └── trigger_task.py │ │ ├── apps.py │ │ ├── handler/ │ │ │ ├── base_task.py │ │ │ ├── base_trigger.py │ │ │ ├── impl/ │ │ │ │ ├── task/ │ │ │ │ │ ├── application_task.py │ │ │ │ │ └── tool_task.py │ │ │ │ └── trigger/ │ │ │ │ ├── event_trigger.py │ │ │ │ └── scheduled_trigger.py │ │ │ └── simple_tools.py │ │ ├── migrations/ │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_remove_taskrecord_trigger_task_and_more.py │ │ │ └── __init__.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ └── trigger.py │ │ ├── serializers/ │ │ │ ├── __init__.py │ │ │ ├── task_source_trigger.py │ │ │ ├── trigger.py │ │ │ └── trigger_task.py │ │ ├── sql/ │ │ │ ├── get_trigger_page_list.sql │ │ │ └── get_trigger_task_record_page_list.sql │ │ ├── tasks.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views/ │ │ ├── __init__.py │ │ ├── trigger.py │ │ └── trigger_task.py │ └── users/ │ ├── __init__.py │ ├── admin.py │ ├── api/ │ │ ├── __init__.py │ │ ├── login.py │ │ └── user.py │ ├── apps.py │ ├── migrations/ │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models/ │ │ ├── __init__.py │ │ └── user.py │ ├── serializers/ │ │ ├── __init__.py │ │ ├── login.py │ │ └── user.py │ ├── tests.py │ ├── urls.py │ └── views/ │ ├── __init__.py │ ├── login.py │ └── user.py ├── installer/ │ ├── Dockerfile │ ├── Dockerfile-base │ ├── Dockerfile-vector-model │ ├── init.sql │ ├── install_model.py │ ├── install_model_bert_base_cased.py │ ├── sandbox.c │ ├── start-all.sh │ ├── start-maxkb.sh │ ├── start-postgres.sh │ └── start-redis.sh ├── main.py ├── pyproject.toml └── ui/ ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .prettierrc.json ├── README.md ├── admin.html ├── chat.html ├── env.d.ts ├── eslint.config.ts ├── package.json ├── public/ │ └── tool/ │ ├── bochaai/ │ │ └── detail.md │ ├── google_search/ │ │ └── detail.md │ ├── langsearch/ │ │ └── detail.md │ ├── mysql/ │ │ └── detail.md │ └── postgresql/ │ └── detail.md ├── src/ │ ├── App.vue │ ├── api/ │ │ ├── application/ │ │ │ ├── application-key.ts │ │ │ ├── application.ts │ │ │ ├── chat-log.ts │ │ │ └── workflow-version.ts │ │ ├── chat/ │ │ │ └── chat.ts │ │ ├── chat-user/ │ │ │ ├── auth-setting.ts │ │ │ └── chat-user.ts │ │ ├── image.ts │ │ ├── knowledge/ │ │ │ ├── document.ts │ │ │ ├── knowledge.ts │ │ │ ├── paragraph.ts │ │ │ └── problem.ts │ │ ├── model/ │ │ │ ├── model.ts │ │ │ └── provider.ts │ │ ├── shared-workspace.ts │ │ ├── system/ │ │ │ ├── api-key.ts │ │ │ ├── auth.ts │ │ │ ├── chat-user.ts │ │ │ ├── license.ts │ │ │ ├── operate-log.ts │ │ │ ├── platform-source.ts │ │ │ ├── resource-authorization.ts │ │ │ ├── role.ts │ │ │ ├── user-group.ts │ │ │ ├── user-manage.ts │ │ │ └── workspace.ts │ │ ├── system-resource-management/ │ │ │ ├── application-key.ts │ │ │ ├── application.ts │ │ │ ├── chat-log.ts │ │ │ ├── chat-user.ts │ │ │ ├── document.ts │ │ │ ├── folder.ts │ │ │ ├── knowledge.ts │ │ │ ├── model.ts │ │ │ ├── paragraph.ts │ │ │ ├── problem.ts │ │ │ ├── resource-authorization.ts │ │ │ ├── resource-mapping.ts │ │ │ ├── tool.ts │ │ │ ├── trigger.ts │ │ │ └── workflow-version.ts │ │ ├── system-settings/ │ │ │ ├── auth-setting.ts │ │ │ ├── email-setting.ts │ │ │ ├── platform-source.ts │ │ │ └── theme.ts │ │ ├── system-shared/ │ │ │ ├── authorization.ts │ │ │ ├── chat-user.ts │ │ │ ├── document.ts │ │ │ ├── knowledge.ts │ │ │ ├── model.ts │ │ │ ├── paragraph.ts │ │ │ ├── problem.ts │ │ │ ├── resource-mapping.ts │ │ │ └── tool.ts │ │ ├── tool/ │ │ │ ├── store.ts │ │ │ └── tool.ts │ │ ├── trigger/ │ │ │ └── trigger.ts │ │ ├── type/ │ │ │ ├── application.ts │ │ │ ├── chat.ts │ │ │ ├── common.ts │ │ │ ├── knowledge.ts │ │ │ ├── login.ts │ │ │ ├── model.ts │ │ │ ├── role.ts │ │ │ ├── systemChatUser.ts │ │ │ ├── tool.ts │ │ │ ├── trigger.ts │ │ │ ├── user.ts │ │ │ ├── workspace.ts │ │ │ └── workspaceChatUser.ts │ │ ├── user/ │ │ │ ├── login.ts │ │ │ └── user.ts │ │ └── workspace/ │ │ ├── chat-user.ts │ │ ├── folder.ts │ │ ├── resource-authorization.ts │ │ ├── resource-mapping.ts │ │ ├── role.ts │ │ ├── user-group.ts │ │ └── workspace.ts │ ├── bus/ │ │ └── index.ts │ ├── chat.ts │ ├── components/ │ │ ├── ai-chat/ │ │ │ ├── component/ │ │ │ │ ├── answer-content/ │ │ │ │ │ └── index.vue │ │ │ │ ├── chat-input-operate/ │ │ │ │ │ ├── TouchChat.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── control/ │ │ │ │ │ └── index.vue │ │ │ │ ├── knowledge-source-component/ │ │ │ │ │ ├── ExecutionDetailContent.vue │ │ │ │ │ ├── ParagraphCard.vue │ │ │ │ │ ├── ParagraphDocumentContent.vue │ │ │ │ │ ├── ParagraphSourceContent.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── operation-button/ │ │ │ │ │ ├── ChatOperationButton.vue │ │ │ │ │ ├── LogOperationButton.vue │ │ │ │ │ ├── MobileVoteReasonDrawer.vue │ │ │ │ │ ├── ShareOperationButton.vue │ │ │ │ │ ├── VoteReasonContent.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── prologue-content/ │ │ │ │ │ └── index.vue │ │ │ │ ├── question-content/ │ │ │ │ │ └── index.vue │ │ │ │ ├── transition-content/ │ │ │ │ │ └── index.vue │ │ │ │ └── user-form/ │ │ │ │ └── index.vue │ │ │ ├── index.scss │ │ │ └── index.vue │ │ ├── app-charts/ │ │ │ ├── components/ │ │ │ │ ├── BarCharts.vue │ │ │ │ └── LineCharts.vue │ │ │ └── index.vue │ │ ├── app-icon/ │ │ │ ├── AppIcon.vue │ │ │ ├── KnowledgeIcon.vue │ │ │ ├── ToolIcon.vue │ │ │ ├── TriggerIcon.vue │ │ │ ├── icons/ │ │ │ │ ├── about.ts │ │ │ │ ├── application.ts │ │ │ │ ├── document.ts │ │ │ │ ├── folder.ts │ │ │ │ ├── knowledge.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── system.ts │ │ │ │ ├── tool.ts │ │ │ │ └── trigger.ts │ │ │ └── index.ts │ │ ├── app-table/ │ │ │ └── index.vue │ │ ├── app-table-infinite-scroll/ │ │ │ └── index.vue │ │ ├── auto-tooltip/ │ │ │ └── index.vue │ │ ├── back-button/ │ │ │ └── index.vue │ │ ├── card-box/ │ │ │ └── index.vue │ │ ├── card-checkbox/ │ │ │ └── index.vue │ │ ├── codemirror-editor/ │ │ │ └── index.vue │ │ ├── common-list/ │ │ │ └── index.vue │ │ ├── dynamics-form/ │ │ │ ├── Demo.vue │ │ │ ├── DemoConstructor.vue │ │ │ ├── FormItem.vue │ │ │ ├── FormItemLabel.vue │ │ │ ├── constructor/ │ │ │ │ ├── data.ts │ │ │ │ ├── index.vue │ │ │ │ └── items/ │ │ │ │ ├── DatePickerConstructor.vue │ │ │ │ ├── JsonInputConstructor.vue │ │ │ │ ├── ModelConstructor.vue │ │ │ │ ├── MultiRowConstructor.vue │ │ │ │ ├── MultiSelectConstructor.vue │ │ │ │ ├── PasswordInputConstructor.vue │ │ │ │ ├── RadioCardConstructor.vue │ │ │ │ ├── RadioRowConstructor.vue │ │ │ │ ├── SingleSelectConstructor.vue │ │ │ │ ├── SliderConstructor.vue │ │ │ │ ├── SwitchInputConstructor.vue │ │ │ │ ├── TextInputConstructor.vue │ │ │ │ ├── TextareaInputConstructor.vue │ │ │ │ └── UploadInputConstructor.vue │ │ │ ├── index.ts │ │ │ ├── index.vue │ │ │ ├── items/ │ │ │ │ ├── DatePicker.vue │ │ │ │ ├── JsonInput.vue │ │ │ │ ├── MultiRow.vue │ │ │ │ ├── PasswordInput.vue │ │ │ │ ├── TextInput.vue │ │ │ │ ├── TextareaInput.vue │ │ │ │ ├── complex/ │ │ │ │ │ ├── ArrayObjectCard.vue │ │ │ │ │ ├── ObjectCard.vue │ │ │ │ │ └── TabCard.vue │ │ │ │ ├── label/ │ │ │ │ │ ├── SettingLabel.vue │ │ │ │ │ └── TooltipLabel.vue │ │ │ │ ├── layout/ │ │ │ │ │ └── RowLayout.vue │ │ │ │ ├── model/ │ │ │ │ │ ├── Model.vue │ │ │ │ │ └── provider-data.ts │ │ │ │ ├── radio/ │ │ │ │ │ ├── Radio.vue │ │ │ │ │ ├── RadioButton.vue │ │ │ │ │ ├── RadioCard.vue │ │ │ │ │ └── RadioRow.vue │ │ │ │ ├── select/ │ │ │ │ │ ├── MultiSelect.vue │ │ │ │ │ └── SingleSelect.vue │ │ │ │ ├── slider/ │ │ │ │ │ └── Slider.vue │ │ │ │ ├── switch/ │ │ │ │ │ └── SwitchInput.vue │ │ │ │ ├── table/ │ │ │ │ │ ├── ProgressTableItem.vue │ │ │ │ │ ├── TableCheckbox.vue │ │ │ │ │ ├── TableColumn.vue │ │ │ │ │ └── TableRadio.vue │ │ │ │ ├── tree/ │ │ │ │ │ └── Tree.vue │ │ │ │ └── upload/ │ │ │ │ ├── LocalFileUpload.vue │ │ │ │ └── UploadInput.vue │ │ │ └── type.ts │ │ ├── execution-detail-card/ │ │ │ └── index.vue │ │ ├── folder-breadcrumb/ │ │ │ └── index.vue │ │ ├── folder-tree/ │ │ │ ├── CreateFolderDialog.vue │ │ │ ├── MoveToDialog.vue │ │ │ ├── constant.ts │ │ │ └── index.vue │ │ ├── generate-related-dialog/ │ │ │ └── index.vue │ │ ├── index.ts │ │ ├── infinite-scroll/ │ │ │ └── index.vue │ │ ├── layout-container/ │ │ │ ├── ContentContainer.vue │ │ │ └── index.vue │ │ ├── loading/ │ │ │ └── DownloadLoading.vue │ │ ├── logo/ │ │ │ ├── LogoFull.vue │ │ │ ├── LogoIcon.vue │ │ │ └── SendIcon.vue │ │ ├── markdown/ │ │ │ ├── EchartsRander.vue │ │ │ ├── FormRander.vue │ │ │ ├── HtmlRander.vue │ │ │ ├── IframeRender.vue │ │ │ ├── MdEditor.vue │ │ │ ├── MdEditorMagnify.vue │ │ │ ├── MdPreview.vue │ │ │ ├── MdRenderer.vue │ │ │ ├── ReasoningRander.vue │ │ │ ├── assets/ │ │ │ │ └── markdown-iconfont.js │ │ │ └── tool-calls-render/ │ │ │ ├── content/ │ │ │ │ ├── index.vue │ │ │ │ └── simple-tool-calls/ │ │ │ │ └── index.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── model-select/ │ │ │ └── index.vue │ │ ├── pdf-export/ │ │ │ └── index.vue │ │ ├── read-write/ │ │ │ └── index.vue │ │ ├── resource-authorization-drawer/ │ │ │ └── index.vue │ │ ├── resource_mapping/ │ │ │ └── index.vue │ │ ├── select-knowledge-document/ │ │ │ └── index.vue │ │ ├── tag-ellipsis/ │ │ │ └── index.vue │ │ ├── tag-group/ │ │ │ └── index.vue │ │ ├── workflow-dropdown-menu/ │ │ │ ├── application/ │ │ │ │ ├── NodeContent.vue │ │ │ │ └── index.vue │ │ │ ├── index.scss │ │ │ ├── index.vue │ │ │ ├── knowledge/ │ │ │ │ ├── NodeContent.vue │ │ │ │ └── index.vue │ │ │ ├── knowledge-inner/ │ │ │ │ ├── NodeContent.vue │ │ │ │ └── index.vue │ │ │ └── tool/ │ │ │ ├── NodeContent.vue │ │ │ └── index.vue │ │ └── workspace-dropdown/ │ │ └── index.vue │ ├── directives/ │ │ ├── clickoutside.ts │ │ ├── hasPermission.ts │ │ ├── index.ts │ │ ├── infiniteScrollUp.ts │ │ └── resize.ts │ ├── enums/ │ │ ├── application.ts │ │ ├── common.ts │ │ ├── document.ts │ │ ├── model.ts │ │ ├── system.ts │ │ ├── tool.ts │ │ └── trigger.ts │ ├── layout/ │ │ ├── app-main/ │ │ │ └── index.vue │ │ ├── components/ │ │ │ ├── breadcrumb/ │ │ │ │ └── index.vue │ │ │ └── sidebar/ │ │ │ ├── SidebarItem.vue │ │ │ └── index.vue │ │ ├── hooks/ │ │ │ └── useResize.ts │ │ ├── layout-header/ │ │ │ ├── SystemHeader.vue │ │ │ ├── UserHeader.vue │ │ │ ├── avatar/ │ │ │ │ ├── APIKeyDialog.vue │ │ │ │ ├── AboutDialog.vue │ │ │ │ ├── ResetPassword.vue │ │ │ │ └── index.vue │ │ │ ├── top-about/ │ │ │ │ └── index.vue │ │ │ └── top-menu/ │ │ │ ├── MenuItem.vue │ │ │ └── index.vue │ │ ├── layout-template/ │ │ │ ├── MainLayout.vue │ │ │ ├── SimpleLayout.vue │ │ │ ├── SystemMainLayout.vue │ │ │ └── index.scss │ │ └── login-layout/ │ │ ├── LoginContainer.vue │ │ ├── LoginLayout.vue │ │ └── UserLoginLayout.vue │ ├── locales/ │ │ ├── index.ts │ │ ├── lang/ │ │ │ ├── en-US/ │ │ │ │ ├── ai-chat.ts │ │ │ │ ├── common.ts │ │ │ │ ├── components.ts │ │ │ │ ├── dynamics-form.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layout.ts │ │ │ │ ├── theme.ts │ │ │ │ ├── views/ │ │ │ │ │ ├── application-overview.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── chat-log.ts │ │ │ │ │ ├── chat-user.ts │ │ │ │ │ ├── document.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── knowledge.ts │ │ │ │ │ ├── login.ts │ │ │ │ │ ├── model.ts │ │ │ │ │ ├── operate-log.ts │ │ │ │ │ ├── paragraph.ts │ │ │ │ │ ├── problem.ts │ │ │ │ │ ├── role.ts │ │ │ │ │ ├── shared.ts │ │ │ │ │ ├── system.ts │ │ │ │ │ ├── tool.ts │ │ │ │ │ ├── trigger.ts │ │ │ │ │ ├── user-manage.ts │ │ │ │ │ └── workspace.ts │ │ │ │ └── workflow.ts │ │ │ ├── zh-CN/ │ │ │ │ ├── ai-chat.ts │ │ │ │ ├── common.ts │ │ │ │ ├── components.ts │ │ │ │ ├── dynamics-form.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layout.ts │ │ │ │ ├── theme.ts │ │ │ │ ├── views/ │ │ │ │ │ ├── application-overview.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── chat-log.ts │ │ │ │ │ ├── chat-user.ts │ │ │ │ │ ├── document.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── knowledge.ts │ │ │ │ │ ├── login.ts │ │ │ │ │ ├── model.ts │ │ │ │ │ ├── operate-log.ts │ │ │ │ │ ├── paragraph.ts │ │ │ │ │ ├── problem.ts │ │ │ │ │ ├── role.ts │ │ │ │ │ ├── shared.ts │ │ │ │ │ ├── system.ts │ │ │ │ │ ├── tool.ts │ │ │ │ │ ├── trigger.ts │ │ │ │ │ ├── user-manage.ts │ │ │ │ │ └── workspace.ts │ │ │ │ └── workflow.ts │ │ │ └── zh-Hant/ │ │ │ ├── ai-chat.ts │ │ │ ├── common.ts │ │ │ ├── components.ts │ │ │ ├── dynamics-form.ts │ │ │ ├── index.ts │ │ │ ├── layout.ts │ │ │ ├── theme.ts │ │ │ ├── views/ │ │ │ │ ├── application-overview.ts │ │ │ │ ├── application.ts │ │ │ │ ├── chat-log.ts │ │ │ │ ├── chat-user.ts │ │ │ │ ├── document.ts │ │ │ │ ├── index.ts │ │ │ │ ├── knowledge.ts │ │ │ │ ├── login.ts │ │ │ │ ├── model.ts │ │ │ │ ├── operate-log.ts │ │ │ │ ├── paragraph.ts │ │ │ │ ├── problem.ts │ │ │ │ ├── role.ts │ │ │ │ ├── shared.ts │ │ │ │ ├── system.ts │ │ │ │ ├── tool.ts │ │ │ │ ├── trigger.ts │ │ │ │ ├── user-manage.ts │ │ │ │ └── workspace.ts │ │ │ └── workflow.ts │ │ └── useLocale.ts │ ├── main.ts │ ├── permission/ │ │ ├── application/ │ │ │ ├── index.ts │ │ │ ├── system-manage.ts │ │ │ └── workspace.ts │ │ ├── index.ts │ │ ├── knowledge/ │ │ │ ├── index.ts │ │ │ ├── system-manage.ts │ │ │ ├── system-share.ts │ │ │ ├── workspace-share.ts │ │ │ └── workspace.ts │ │ ├── model/ │ │ │ ├── index.ts │ │ │ ├── system-manage.ts │ │ │ ├── system-share.ts │ │ │ └── workspace.ts │ │ └── tool/ │ │ ├── index.ts │ │ ├── system-manage.ts │ │ ├── system-share.ts │ │ └── workspace.ts │ ├── request/ │ │ ├── Result.ts │ │ ├── chat/ │ │ │ ├── Result.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── router/ │ │ ├── chat/ │ │ │ ├── index.ts │ │ │ └── routes.ts │ │ ├── common.ts │ │ ├── index.ts │ │ ├── modules/ │ │ │ ├── application-detail.ts │ │ │ ├── application.ts │ │ │ ├── document.ts │ │ │ ├── knowledge.ts │ │ │ ├── model.ts │ │ │ ├── paragraph.ts │ │ │ ├── system.ts │ │ │ ├── tool.ts │ │ │ └── trigger.ts │ │ └── routes.ts │ ├── stores/ │ │ ├── index.ts │ │ └── modules/ │ │ ├── application.ts │ │ ├── chat-user.ts │ │ ├── common.ts │ │ ├── folder.ts │ │ ├── knowledge.ts │ │ ├── login.ts │ │ ├── model.ts │ │ ├── prompt.ts │ │ ├── theme.ts │ │ ├── tool.ts │ │ └── user.ts │ ├── styles/ │ │ ├── app.scss │ │ ├── component.scss │ │ ├── element-plus.scss │ │ ├── font/ │ │ │ └── AlibabaPuHuiTi-3-55-Regular.otf │ │ ├── index.scss │ │ ├── md-editor.scss │ │ └── variables.scss │ ├── utils/ │ │ ├── application.ts │ │ ├── array.ts │ │ ├── bus.ts │ │ ├── clipboard.ts │ │ ├── common.ts │ │ ├── dynamics-api/ │ │ │ ├── permission-api.ts │ │ │ └── shared-api.ts │ │ ├── folder.ts │ │ ├── message.ts │ │ ├── permission/ │ │ │ ├── data.ts │ │ │ ├── index.ts │ │ │ └── type.ts │ │ ├── status.ts │ │ ├── theme.ts │ │ ├── time.ts │ │ └── trigger.ts │ ├── views/ │ │ ├── Permission.vue │ │ ├── application/ │ │ │ ├── ApplicationAccess.vue │ │ │ ├── ApplicationSetting.vue │ │ │ ├── component/ │ │ │ │ ├── AIModeParamSettingDialog.vue │ │ │ │ ├── AccessSettingDrawer.vue │ │ │ │ ├── AddKnowledgeDialog.vue │ │ │ │ ├── ApplicationDialog.vue │ │ │ │ ├── CopyApplicationDialog.vue │ │ │ │ ├── CreateApplicationDialog.vue │ │ │ │ ├── GeneratePromptDialog.vue │ │ │ │ ├── McpServersDialog.vue │ │ │ │ ├── ParamSettingDialog.vue │ │ │ │ ├── ReasoningParamSettingDialog.vue │ │ │ │ ├── STTModelParamSettingDialog.vue │ │ │ │ ├── TTSModeParamSettingDialog.vue │ │ │ │ └── ToolDialog.vue │ │ │ ├── index.vue │ │ │ └── template-store/ │ │ │ ├── InternalDescDrawer.vue │ │ │ ├── TemplateCard.vue │ │ │ └── TemplateStoreDialog.vue │ │ ├── application-overview/ │ │ │ ├── component/ │ │ │ │ ├── APIKeyDialog.vue │ │ │ │ ├── DisplaySettingDialog.vue │ │ │ │ ├── EmbedDialog.vue │ │ │ │ ├── LimitDialog.vue │ │ │ │ ├── SettingAPIKeyDialog.vue │ │ │ │ ├── SettingAPIKeyDrawer.vue │ │ │ │ └── StatisticsCharts.vue │ │ │ ├── index.vue │ │ │ └── xpack-component/ │ │ │ ├── XPackDisplaySettingDialog.vue │ │ │ └── XPackLimitDrawer.vue │ │ ├── application-workflow/ │ │ │ ├── component/ │ │ │ │ └── PublishHistory.vue │ │ │ └── index.vue │ │ ├── chat/ │ │ │ ├── Share.vue │ │ │ ├── auth/ │ │ │ │ ├── component/ │ │ │ │ │ └── password.vue │ │ │ │ └── index.vue │ │ │ ├── component/ │ │ │ │ ├── EditTitleDialog.vue │ │ │ │ └── HistoryPanel.vue │ │ │ ├── embed/ │ │ │ │ ├── component/ │ │ │ │ │ └── ChatHistoryDrawer.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ ├── mobile/ │ │ │ │ ├── component/ │ │ │ │ │ ├── ChatHistoryDrawer.vue │ │ │ │ │ ├── ResetPasswordDrawer.vue │ │ │ │ │ └── UserCenterDrawer.vue │ │ │ │ └── index.vue │ │ │ ├── no-service/ │ │ │ │ └── index.vue │ │ │ ├── pc/ │ │ │ │ └── index.vue │ │ │ └── user-login/ │ │ │ ├── index.vue │ │ │ └── scanCompinents/ │ │ │ ├── QrCodeTab.vue │ │ │ ├── dingtalkQrCode.vue │ │ │ ├── larkQrCode.vue │ │ │ └── wecomQrCode.vue │ │ ├── chat-log/ │ │ │ ├── component/ │ │ │ │ ├── ChatRecordDrawer.vue │ │ │ │ ├── EditContentDialog.vue │ │ │ │ └── EditMarkDialog.vue │ │ │ └── index.vue │ │ ├── chat-user/ │ │ │ └── index.vue │ │ ├── demo/ │ │ │ └── index.vue │ │ ├── document/ │ │ │ ├── ImportLarkDocument.vue │ │ │ ├── ImportWorkflowDocument.vue │ │ │ ├── UploadDocument.vue │ │ │ ├── component/ │ │ │ │ ├── EmbeddingContentDialog.vue │ │ │ │ ├── ImportDocumentDialog.vue │ │ │ │ ├── SelectKnowledgeDialog.vue │ │ │ │ ├── Status.vue │ │ │ │ └── StatusTable.vue │ │ │ ├── index.scss │ │ │ ├── index.vue │ │ │ ├── tag/ │ │ │ │ ├── CreateTagDialog.vue │ │ │ │ ├── EditTagDialog.vue │ │ │ │ ├── MulAddTagDialog.vue │ │ │ │ ├── TagDrawer.vue │ │ │ │ ├── TagSettingDrawer.vue │ │ │ │ └── TaglinkedDocumentDialog.vue │ │ │ └── upload/ │ │ │ ├── ResultSuccess.vue │ │ │ ├── SetRules.vue │ │ │ └── UploadComponent.vue │ │ ├── error/ │ │ │ ├── 404.vue │ │ │ ├── NoPermission.vue │ │ │ └── NoService.vue │ │ ├── hit-test/ │ │ │ └── index.vue │ │ ├── knowledge/ │ │ │ ├── KnowledgeSetting.vue │ │ │ ├── WorkflowTransform.vue │ │ │ ├── component/ │ │ │ │ ├── BaseForm.vue │ │ │ │ ├── EditParagraphDialog.vue │ │ │ │ ├── KnowledgeListContainer.vue │ │ │ │ ├── ParagraphList.vue │ │ │ │ ├── ParagraphPreview.vue │ │ │ │ └── SyncWebDialog.vue │ │ │ ├── create-component/ │ │ │ │ ├── CreateKnowledgeDialog.vue │ │ │ │ ├── CreateLarkKnowledgeDialog.vue │ │ │ │ ├── CreateWebKnowledgeDialog.vue │ │ │ │ └── CreateWorkflowKnowledgeDialog.vue │ │ │ ├── index.vue │ │ │ └── template-store/ │ │ │ ├── InternalDescDrawer.vue │ │ │ ├── TemplateCard.vue │ │ │ └── TemplateStoreDialog.vue │ │ ├── knowledge-workflow/ │ │ │ ├── component/ │ │ │ │ ├── DebugDrawer.vue │ │ │ │ ├── PublishHistory.vue │ │ │ │ ├── action/ │ │ │ │ │ ├── DataSource.vue │ │ │ │ │ ├── KnowledgeBase.vue │ │ │ │ │ └── Result.vue │ │ │ │ └── execution-record/ │ │ │ │ ├── ExecutionDetailDrawer.vue │ │ │ │ └── ExecutionRecordDrawer.vue │ │ │ └── index.vue │ │ ├── login/ │ │ │ ├── ForgotPassword.vue │ │ │ ├── ResetPassword.vue │ │ │ ├── index.vue │ │ │ └── scanCompinents/ │ │ │ ├── QrCodeTab.vue │ │ │ ├── dingtalkQrCode.vue │ │ │ ├── larkQrCode.vue │ │ │ └── wecomQrCode.vue │ │ ├── model/ │ │ │ ├── component/ │ │ │ │ ├── AddParamDrawer.vue │ │ │ │ ├── CreateModelDialog.vue │ │ │ │ ├── EditModel.vue │ │ │ │ ├── ModelCard.vue │ │ │ │ ├── ParamSettingDialog.vue │ │ │ │ ├── Provider.vue │ │ │ │ ├── SelectProviderDialog.vue │ │ │ │ └── data.ts │ │ │ └── index.vue │ │ ├── paragraph/ │ │ │ ├── component/ │ │ │ │ ├── ParagraphCard.vue │ │ │ │ ├── ParagraphDialog.vue │ │ │ │ ├── ParagraphForm.vue │ │ │ │ ├── ProblemComponent.vue │ │ │ │ └── SelectDocumentDialog.vue │ │ │ └── index.vue │ │ ├── problem/ │ │ │ ├── component/ │ │ │ │ ├── CreateProblemDialog.vue │ │ │ │ ├── DetailProblemDrawer.vue │ │ │ │ └── RelateProblemDialog.vue │ │ │ └── index.vue │ │ ├── system/ │ │ │ ├── operate-log/ │ │ │ │ ├── component/ │ │ │ │ │ └── DetailDialog.vue │ │ │ │ └── index.vue │ │ │ ├── resource-authorization/ │ │ │ │ ├── component/ │ │ │ │ │ └── PermissionTable.vue │ │ │ │ ├── constant.ts │ │ │ │ └── index.vue │ │ │ ├── role/ │ │ │ │ ├── component/ │ │ │ │ │ ├── AddMemberDrawer.vue │ │ │ │ │ ├── CreateOrUpdateRoleDialog.vue │ │ │ │ │ ├── Member.vue │ │ │ │ │ ├── MemberFormContent.vue │ │ │ │ │ └── PermissionConfiguration.vue │ │ │ │ ├── index.ts │ │ │ │ └── index.vue │ │ │ ├── user-manage/ │ │ │ │ ├── component/ │ │ │ │ │ ├── SetUserRoleDialog.vue │ │ │ │ │ ├── UserDrawer.vue │ │ │ │ │ └── UserPwdDialog.vue │ │ │ │ └── index.vue │ │ │ └── workspace/ │ │ │ ├── component/ │ │ │ │ ├── AddMemberDrawer.vue │ │ │ │ ├── CreateOrUpdateWorkspaceDialog.vue │ │ │ │ └── Member.vue │ │ │ └── index.vue │ │ ├── system-chat-user/ │ │ │ ├── authentication/ │ │ │ │ ├── component/ │ │ │ │ │ ├── CAS.vue │ │ │ │ │ ├── EditModal.vue │ │ │ │ │ ├── LDAP.vue │ │ │ │ │ ├── OAuth2.vue │ │ │ │ │ ├── OIDC.vue │ │ │ │ │ └── SCAN.vue │ │ │ │ └── index.vue │ │ │ ├── chat-user/ │ │ │ │ ├── component/ │ │ │ │ │ ├── SetUserGroupsDialog.vue │ │ │ │ │ ├── SyncUsersDialog.vue │ │ │ │ │ ├── UserDrawer.vue │ │ │ │ │ └── UserPwdDialog.vue │ │ │ │ └── index.vue │ │ │ └── group/ │ │ │ ├── component/ │ │ │ │ ├── CreateGroupUserDialog.vue │ │ │ │ └── CreateOrUpdateGroupDialog.vue │ │ │ └── index.vue │ │ ├── system-resource-management/ │ │ │ ├── ApplicationResourceIndex.vue │ │ │ ├── KnowledgeResourceIndex.vue │ │ │ ├── ModelResourceIndex.vue │ │ │ └── ToolResourceIndex.vue │ │ ├── system-setting/ │ │ │ ├── authentication/ │ │ │ │ ├── component/ │ │ │ │ │ ├── CAS.vue │ │ │ │ │ ├── EditModal.vue │ │ │ │ │ ├── LDAP.vue │ │ │ │ │ ├── OAuth2.vue │ │ │ │ │ ├── OIDC.vue │ │ │ │ │ ├── SCAN.vue │ │ │ │ │ ├── Saml2.vue │ │ │ │ │ └── Setting.vue │ │ │ │ └── index.vue │ │ │ ├── email/ │ │ │ │ └── index.vue │ │ │ └── theme/ │ │ │ ├── LoginPreview.vue │ │ │ └── index.vue │ │ ├── system-shared/ │ │ │ ├── AuthorizedWorkspaceDialog.vue │ │ │ ├── KnowLedgeSharedIndex.vue │ │ │ ├── ModelSharedIndex.vue │ │ │ └── ToolSharedIndex.vue │ │ ├── tool/ │ │ │ ├── DataSourceToolFormDrawer.vue │ │ │ ├── McpToolFormDrawer.vue │ │ │ ├── SkillToolFormDrawer.vue │ │ │ ├── ToolDebugDrawer.vue │ │ │ ├── ToolFormDrawer.vue │ │ │ ├── WorkflowFormDialog.vue │ │ │ ├── component/ │ │ │ │ ├── EditAvatarDialog.vue │ │ │ │ ├── FieldFormDialog.vue │ │ │ │ ├── InitParamDrawer.vue │ │ │ │ ├── McpToolConfigDialog.vue │ │ │ │ ├── ToolListContainer.vue │ │ │ │ ├── ToolStoreDescDrawer.vue │ │ │ │ └── UserFieldFormDialog.vue │ │ │ ├── execution-record/ │ │ │ │ ├── ExecutionDetailDrawer.vue │ │ │ │ └── TriggerRecordDrawer.vue │ │ │ ├── index.vue │ │ │ └── tool-store/ │ │ │ ├── AddInternalToolDialog.vue │ │ │ ├── InternalDescDrawer.vue │ │ │ ├── ToolCard.vue │ │ │ └── ToolStoreDialog.vue │ │ ├── tool-workflow/ │ │ │ ├── component/ │ │ │ │ ├── PublishHistory.vue │ │ │ │ ├── debug/ │ │ │ │ │ ├── index.vue │ │ │ │ │ ├── parameters/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── result/ │ │ │ │ │ └── index.vue │ │ │ │ └── debug-drawer/ │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ └── trigger/ │ │ ├── ResourceTriggerDrawer.vue │ │ ├── TriggerDrawer.vue │ │ ├── component/ │ │ │ ├── ApplicationParameter.vue │ │ │ └── ToolParameter.vue │ │ ├── execution-record/ │ │ │ ├── ExecutionDetailDrawer.vue │ │ │ └── TriggerTaskRecordDrawer.vue │ │ └── index.vue │ └── workflow/ │ ├── common/ │ │ ├── AddFormCollect.vue │ │ ├── CustomLine.vue │ │ ├── EditFormCollect.vue │ │ ├── NodeCascader.vue │ │ ├── NodeContainer.vue │ │ ├── NodeControl.vue │ │ ├── NodeSearch.vue │ │ ├── app-node.ts │ │ ├── data.ts │ │ ├── edge.ts │ │ ├── loopEdge.ts │ │ ├── shortcut.ts │ │ ├── teleport.ts │ │ ├── template.ts │ │ └── validate.ts │ ├── icons/ │ │ ├── ai-chat-node-icon.vue │ │ ├── application-node-icon.vue │ │ ├── base-node-icon.vue │ │ ├── chat-icon.vue │ │ ├── condition-node-icon.vue │ │ ├── data-source-local-node-icon.vue │ │ ├── data-source-web-node-icon.vue │ │ ├── document-extract-node-icon.vue │ │ ├── document-split-node-icon.vue │ │ ├── form-node-icon.vue │ │ ├── global-icon.vue │ │ ├── image-generate-node-icon.vue │ │ ├── image-to-video-node-icon.vue │ │ ├── image-understand-node-icon.vue │ │ ├── intent-node-icon.vue │ │ ├── knowledge-base-node-icon.vue │ │ ├── knowledge-write-node-icon.vue │ │ ├── loop-break-node-icon.vue │ │ ├── loop-continue-node-icon.vue │ │ ├── loop-icon.vue │ │ ├── loop-node-icon.vue │ │ ├── loop-start-node-icon.vue │ │ ├── mcp-node-icon.vue │ │ ├── output-icon.vue │ │ ├── parameter-extraction-node-icon.vue │ │ ├── question-node-icon.vue │ │ ├── reply-node-icon.vue │ │ ├── reranker-node-icon.vue │ │ ├── search-document-node-icon.vue │ │ ├── search-knowledge-node-icon.vue │ │ ├── speech-to-text-node-icon.vue │ │ ├── start-node-icon.vue │ │ ├── text-to-speech-node-icon.vue │ │ ├── text-to-video-node-icon.vue │ │ ├── tool-base-node-icon.vue │ │ ├── tool-lib-node-icon.vue │ │ ├── tool-node-icon.vue │ │ ├── tool-start-node-icon.vue │ │ ├── tool-workflow-lib-node-icon.vue │ │ ├── utils.ts │ │ ├── variable-aggregation-node-icon.vue │ │ ├── variable-assign-node-icon.vue │ │ ├── variable-splitting-node-icon.vue │ │ └── video-understand-node-icon.vue │ ├── index.vue │ ├── nodes/ │ │ ├── ai-chat-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── application-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── base-node/ │ │ │ ├── component/ │ │ │ │ ├── ApiFieldFormDialog.vue │ │ │ │ ├── ApiInputFieldTable.vue │ │ │ │ ├── ChatFieldDialog.vue │ │ │ │ ├── ChatFieldTable.vue │ │ │ │ ├── FileUploadSettingDialog.vue │ │ │ │ ├── UserFieldFormDialog.vue │ │ │ │ ├── UserInputFieldTable.vue │ │ │ │ └── UserInputTitleDialog.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── condition-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── data-source-local-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── data-source-web-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── document-extract-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── document-split-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── form-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── image-generate/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── image-to-video/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── image-understand/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── intent-classify-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── knowledge-base-node/ │ │ │ ├── component/ │ │ │ │ ├── UserFieldFormDialog.vue │ │ │ │ ├── UserInputFieldTable.vue │ │ │ │ └── UserInputTitleDialog.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── knowledge-write-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── loop-body-node/ │ │ │ ├── LoopBodyContainer.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── loop-break-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── loop-continue-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── loop-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── loop-start-node/ │ │ │ ├── component/ │ │ │ │ ├── LoopFieldDialog.vue │ │ │ │ └── LoopFieldTable.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── mcp-node/ │ │ │ ├── component/ │ │ │ │ └── McpServerInputDialog.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── parameter-extraction-node/ │ │ │ ├── component/ │ │ │ │ ├── ParametersFieldDialog.vue │ │ │ │ └── ParametersFieldTable.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── question-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── reply-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── reranker-node/ │ │ │ ├── ParamSettingDialog.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── search-document-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── search-knowledge-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── speech-to-text-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── start-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── text-to-speech-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── text-to-video/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── tool-base-node/ │ │ │ ├── component/ │ │ │ │ ├── input/ │ │ │ │ │ ├── InputFieldFormDialog.vue │ │ │ │ │ ├── InputFieldTable.vue │ │ │ │ │ └── InputTitleDialog.vue │ │ │ │ └── output/ │ │ │ │ ├── OutputFieldFormDialog.vue │ │ │ │ ├── OutputFieldTable.vue │ │ │ │ └── OutputTitleDialog.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── tool-lib-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── tool-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── tool-start-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── tool-workflow-lib-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── variable-aggregation-node/ │ │ │ ├── component/ │ │ │ │ └── GroupFieldDialog.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── variable-assign-node/ │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── variable-splitting/ │ │ │ ├── component/ │ │ │ │ ├── VariableFieldDialog.vue │ │ │ │ └── VariableFieldTable.vue │ │ │ ├── index.ts │ │ │ └── index.vue │ │ └── video-understand/ │ │ ├── index.ts │ │ └── index.vue │ └── plugins/ │ └── dagre.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts