gitextract_4npghok9/ ├── .env.example ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── Makefile ├── README.md ├── README_CN.md ├── README_JA.md ├── README_KO.md ├── SECURITY.md ├── VERSION ├── client/ │ ├── README.md │ ├── README_EN.md │ ├── agent.go │ ├── agent_manage.go │ ├── chunk.go │ ├── client.go │ ├── evaluation.go │ ├── example.go │ ├── faq.go │ ├── go.mod │ ├── go.sum │ ├── initialization.go │ ├── knowledge.go │ ├── knowledgebase.go │ ├── mcp_service.go │ ├── message.go │ ├── model.go │ ├── organization.go │ ├── session.go │ ├── skill.go │ ├── system.go │ ├── tag.go │ ├── tenant.go │ └── web_search.go ├── cmd/ │ └── download/ │ └── duckdb/ │ └── duckdb.go ├── config/ │ ├── builtin_agents.yaml │ ├── config.yaml │ └── prompt_templates/ │ ├── agent_system_prompt.yaml │ ├── context_template.yaml │ ├── fallback.yaml │ ├── generate_questions.yaml │ ├── generate_session_title.yaml │ ├── generate_summary.yaml │ ├── graph_extraction.yaml │ ├── keywords_extraction.yaml │ ├── rewrite.yaml │ └── system_prompt.yaml ├── dataset/ │ ├── README │ ├── README_zh.md │ ├── qa_dataset.py │ └── samples/ │ ├── answers.parquet │ ├── corpus.parquet │ ├── qas.parquet │ ├── qrels.parquet │ └── queries.parquet ├── docker/ │ ├── Dockerfile.app │ ├── Dockerfile.docreader │ ├── Dockerfile.sandbox │ └── config/ │ └── supervisord.conf ├── docker-compose.dev.yml ├── docker-compose.yml ├── docreader/ │ ├── Makefile │ ├── README.md │ ├── client/ │ │ ├── client.go │ │ └── client_test.go │ ├── config.py │ ├── main.py │ ├── models/ │ │ ├── __init__.py │ │ ├── document.py │ │ └── read_config.py │ ├── ocr/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── paddle.py │ │ └── vlm.py │ ├── parser/ │ │ ├── __init__.py │ │ ├── base_parser.py │ │ ├── chain_parser.py │ │ ├── doc_parser.py │ │ ├── docx2_parser.py │ │ ├── docx_parser.py │ │ ├── excel_parser.py │ │ ├── image_parser.py │ │ ├── markdown_parser.py │ │ ├── markitdown_parser.py │ │ ├── parser.py │ │ ├── pdf_parser.py │ │ ├── registry.py │ │ ├── storage.py │ │ └── web_parser.py │ ├── proto/ │ │ ├── docreader.pb.go │ │ ├── docreader.proto │ │ ├── docreader_grpc.pb.go │ │ ├── docreader_pb2.py │ │ ├── docreader_pb2.pyi │ │ └── docreader_pb2_grpc.py │ ├── pyproject.toml │ ├── scripts/ │ │ ├── download_deps.py │ │ └── generate_proto.sh │ ├── splitter/ │ │ ├── header_hook.py │ │ └── splitter.py │ ├── testdata/ │ │ ├── test.html │ │ ├── test.md │ │ ├── test.txt │ │ └── test_download.txt │ └── utils/ │ ├── __init__.py │ ├── endecode.py │ ├── request.py │ ├── split.py │ └── tempfile.py ├── docs/ │ ├── BUILTIN_MCP_SERVICES.md │ ├── BUILTIN_MODELS.md │ ├── IM集成开发文档.md │ ├── KnowledgeGraph.md │ ├── MCP功能使用说明.md │ ├── QA.md │ ├── ROADMAP.md │ ├── WeKnora.md │ ├── agent-skills.md │ ├── api/ │ │ ├── README.md │ │ ├── agent.md │ │ ├── chat.md │ │ ├── chunk.md │ │ ├── evaluation.md │ │ ├── faq.md │ │ ├── initialization.md │ │ ├── knowledge-base.md │ │ ├── knowledge-search.md │ │ ├── knowledge.md │ │ ├── mcp-service.md │ │ ├── message.md │ │ ├── model.md │ │ ├── organization.md │ │ ├── session.md │ │ ├── skill.md │ │ ├── system.md │ │ ├── tag.md │ │ ├── tenant.md │ │ └── web-search.md │ ├── docs.go │ ├── swagger.json │ ├── swagger.yaml │ ├── 使用其他向量数据库.md │ ├── 共享空间说明.md │ ├── 开发指南.md │ ├── 开启知识图谱功能.md │ └── 快速开发模式说明.md ├── examples/ │ └── skills/ │ ├── README.md │ └── pdf-processing/ │ ├── FORMS.md │ ├── SKILL.md │ └── scripts/ │ ├── analyze_form.py │ └── extract_text.py ├── frontend/ │ ├── .gitignore │ ├── Dockerfile │ ├── docker-entrypoint.sh │ ├── env.d.ts │ ├── index.html │ ├── nginx.conf │ ├── package.json │ ├── packages/ │ │ └── xlsx-0.20.2.tgz │ ├── public/ │ │ └── config.js │ ├── src/ │ │ ├── App.vue │ │ ├── api/ │ │ │ ├── agent/ │ │ │ │ └── index.ts │ │ │ ├── auth/ │ │ │ │ └── index.ts │ │ │ ├── chat/ │ │ │ │ ├── index.ts │ │ │ │ └── streame.ts │ │ │ ├── chat-history.ts │ │ │ ├── initialization/ │ │ │ │ └── index.ts │ │ │ ├── knowledge-base/ │ │ │ │ └── index.ts │ │ │ ├── mcp-service.ts │ │ │ ├── model/ │ │ │ │ └── index.ts │ │ │ ├── organization/ │ │ │ │ └── index.ts │ │ │ ├── retrieval.ts │ │ │ ├── skill/ │ │ │ │ └── index.ts │ │ │ ├── system/ │ │ │ │ └── index.ts │ │ │ ├── tenant/ │ │ │ │ └── index.ts │ │ │ └── web-search.ts │ │ ├── assets/ │ │ │ ├── dropdown-menu.less │ │ │ ├── fonts.css │ │ │ └── theme/ │ │ │ └── theme.css │ │ ├── components/ │ │ │ ├── AgentAvatar.vue │ │ │ ├── AgentSelector.vue │ │ │ ├── AgentShareSettings.vue │ │ │ ├── FAQTagTooltip.vue │ │ │ ├── IMChannelPanel.vue │ │ │ ├── Input-field.vue │ │ │ ├── KnowledgeBaseSelector.vue │ │ │ ├── ListSpaceSidebar.vue │ │ │ ├── MentionSelector.vue │ │ │ ├── ModelEditorDialog.vue │ │ │ ├── ModelSelector.vue │ │ │ ├── PromptTemplateSelector.vue │ │ │ ├── ShareKnowledgeBaseDialog.vue │ │ │ ├── SpaceAvatar.vue │ │ │ ├── TenantSelector.vue │ │ │ ├── UserMenu.vue │ │ │ ├── css/ │ │ │ │ ├── chat-message-shared.less │ │ │ │ └── markdown.less │ │ │ ├── doc-content.vue │ │ │ ├── document-preview.vue │ │ │ ├── empty-knowledge.vue │ │ │ ├── manual-knowledge-editor.vue │ │ │ ├── menu.vue │ │ │ ├── picture-preview.vue │ │ │ └── upload-mask.vue │ │ ├── composables/ │ │ │ └── useTheme.ts │ │ ├── hooks/ │ │ │ ├── useKnowledgeBase.ts │ │ │ └── useKnowledgeBaseCreationNavigation.ts │ │ ├── i18n/ │ │ │ ├── index.ts │ │ │ └── locales/ │ │ │ ├── en-US.ts │ │ │ ├── ko-KR.ts │ │ │ ├── ru-RU.ts │ │ │ └── zh-CN.ts │ │ ├── main.ts │ │ ├── router/ │ │ │ └── index.ts │ │ ├── stores/ │ │ │ ├── auth.ts │ │ │ ├── knowledge.ts │ │ │ ├── menu.ts │ │ │ ├── organization.ts │ │ │ ├── settings.ts │ │ │ └── ui.ts │ │ ├── types/ │ │ │ └── tool-results.ts │ │ ├── utils/ │ │ │ ├── caret.ts │ │ │ ├── chatMessageShared.ts │ │ │ ├── index.ts │ │ │ ├── mermaidShared.ts │ │ │ ├── mermaidViewer.ts │ │ │ ├── request.ts │ │ │ ├── security.ts │ │ │ └── tool-icons.ts │ │ └── views/ │ │ ├── agent/ │ │ │ ├── AgentEditorModal.vue │ │ │ └── AgentList.vue │ │ ├── auth/ │ │ │ └── Login.vue │ │ ├── chat/ │ │ │ ├── components/ │ │ │ │ ├── AgentStreamDisplay.vue │ │ │ │ ├── ToolResultRenderer.vue │ │ │ │ ├── botmsg.vue │ │ │ │ ├── deepThink.vue │ │ │ │ ├── docInfo.vue │ │ │ │ ├── sendMsg.vue │ │ │ │ ├── tool-results/ │ │ │ │ │ ├── ChunkDetail.vue │ │ │ │ │ ├── ContentPopup.vue │ │ │ │ │ ├── DatabaseQuery.vue │ │ │ │ │ ├── DocumentInfo.vue │ │ │ │ │ ├── GraphQueryResults.vue │ │ │ │ │ ├── GrepResults.vue │ │ │ │ │ ├── KnowledgeBaseList.vue │ │ │ │ │ ├── PlanDisplay.vue │ │ │ │ │ ├── RelatedChunks.vue │ │ │ │ │ ├── SearchResults.vue │ │ │ │ │ ├── ThinkingDisplay.vue │ │ │ │ │ ├── WebFetchResults.vue │ │ │ │ │ ├── WebSearchResults.vue │ │ │ │ │ └── tool-results.less │ │ │ │ └── usermsg.vue │ │ │ └── index.vue │ │ ├── creatChat/ │ │ │ └── creatChat.vue │ │ ├── knowledge/ │ │ │ ├── KnowledgeBase.vue │ │ │ ├── KnowledgeBaseEditorModal.vue │ │ │ ├── KnowledgeBaseList.vue │ │ │ ├── KnowledgeSearch.vue │ │ │ ├── components/ │ │ │ │ └── FAQEntryManager.vue │ │ │ └── settings/ │ │ │ ├── GraphSettings.vue │ │ │ ├── KBAdvancedSettings.vue │ │ │ ├── KBChunkingSettings.vue │ │ │ ├── KBModelConfig.vue │ │ │ ├── KBParserSettings.vue │ │ │ ├── KBShareSettings.vue │ │ │ └── KBStorageSettings.vue │ │ ├── organization/ │ │ │ ├── JoinOrganization.vue │ │ │ ├── OrganizationEditorModal.vue │ │ │ ├── OrganizationList.vue │ │ │ └── OrganizationSettingsModal.vue │ │ ├── platform/ │ │ │ └── index.vue │ │ └── settings/ │ │ ├── AgentSettings.vue │ │ ├── ApiInfo.vue │ │ ├── ChatHistorySettings.vue │ │ ├── GeneralSettings.vue │ │ ├── McpSettings.vue │ │ ├── ModelSettings.vue │ │ ├── OllamaSettings.vue │ │ ├── ParserEngineSettings.vue │ │ ├── RetrievalSettings.vue │ │ ├── Settings.vue │ │ ├── StorageEngineSettings.vue │ │ ├── SystemInfo.vue │ │ ├── TenantInfo.vue │ │ ├── WebSearchSettings.vue │ │ └── components/ │ │ ├── McpServiceDialog.vue │ │ └── McpTestResult.vue │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── go.mod ├── go.sum ├── helm/ │ ├── Chart.yaml │ ├── README.md │ ├── templates/ │ │ ├── NOTES.txt │ │ ├── _helpers.tpl │ │ ├── app.yaml │ │ ├── docreader.yaml │ │ ├── frontend.yaml │ │ ├── ingress.yaml │ │ ├── neo4j.yaml │ │ ├── postgres.yaml │ │ ├── pvc.yaml │ │ ├── redis.yaml │ │ ├── secrets.yaml │ │ └── serviceaccount.yaml │ └── values.yaml ├── internal/ │ ├── agent/ │ │ ├── const.go │ │ ├── engine.go │ │ ├── prompts.go │ │ ├── skills/ │ │ │ ├── integration_test.go │ │ │ ├── loader.go │ │ │ ├── manager.go │ │ │ ├── skill.go │ │ │ └── skills_test.go │ │ └── tools/ │ │ ├── data_analysis.go │ │ ├── data_schema.go │ │ ├── database_query.go │ │ ├── definitions.go │ │ ├── final_answer.go │ │ ├── get_document_info.go │ │ ├── grep_chunks.go │ │ ├── knowledge_search.go │ │ ├── list_knowledge_chunks.go │ │ ├── mcp_tool.go │ │ ├── query_knowledge_graph.go │ │ ├── registry.go │ │ ├── sequentialthinking.go │ │ ├── skill_execute.go │ │ ├── skill_read.go │ │ ├── todo_write.go │ │ ├── tool.go │ │ ├── web_fetch.go │ │ └── web_search.go │ ├── application/ │ │ ├── repository/ │ │ │ ├── agent_share.go │ │ │ ├── chunk.go │ │ │ ├── custom_agent.go │ │ │ ├── kbshare.go │ │ │ ├── knowledge.go │ │ │ ├── knowledgebase.go │ │ │ ├── mcp_service.go │ │ │ ├── memory/ │ │ │ │ └── neo4j/ │ │ │ │ └── repository.go │ │ │ ├── message.go │ │ │ ├── model.go │ │ │ ├── organization.go │ │ │ ├── retriever/ │ │ │ │ ├── elasticsearch/ │ │ │ │ │ ├── structs.go │ │ │ │ │ ├── v7/ │ │ │ │ │ │ └── repository.go │ │ │ │ │ └── v8/ │ │ │ │ │ └── repository.go │ │ │ │ ├── milvus/ │ │ │ │ │ ├── filter.go │ │ │ │ │ ├── repository.go │ │ │ │ │ └── structs.go │ │ │ │ ├── neo4j/ │ │ │ │ │ └── repository.go │ │ │ │ ├── postgres/ │ │ │ │ │ ├── repository.go │ │ │ │ │ └── structs.go │ │ │ │ ├── qdrant/ │ │ │ │ │ ├── repository.go │ │ │ │ │ └── structs.go │ │ │ │ ├── sqlite/ │ │ │ │ │ └── repository.go │ │ │ │ └── weaviate/ │ │ │ │ ├── repository.go │ │ │ │ └── structs.go │ │ │ ├── session.go │ │ │ ├── tag.go │ │ │ ├── tenant.go │ │ │ ├── tenant_disabled_shared_agent.go │ │ │ └── user.go │ │ └── service/ │ │ ├── agent_service.go │ │ ├── agent_share.go │ │ ├── chat_pipline/ │ │ │ ├── chat_completion.go │ │ │ ├── chat_completion_stream.go │ │ │ ├── chat_pipline.go │ │ │ ├── chat_pipline_test.go │ │ │ ├── common.go │ │ │ ├── data_analysis.go │ │ │ ├── extract_entity.go │ │ │ ├── filter_top_k.go │ │ │ ├── into_chat_message.go │ │ │ ├── load_history.go │ │ │ ├── memory.go │ │ │ ├── merge.go │ │ │ ├── merge_expand.go │ │ │ ├── merge_faq.go │ │ │ ├── merge_history.go │ │ │ ├── merge_overlap.go │ │ │ ├── query_expansion.go │ │ │ ├── rerank.go │ │ │ ├── rerank_clean_test.go │ │ │ ├── rewrite.go │ │ │ ├── search.go │ │ │ ├── search_entity.go │ │ │ ├── search_parallel.go │ │ │ ├── stream_filter.go │ │ │ └── tracing.go │ │ ├── chunk.go │ │ ├── custom_agent.go │ │ ├── dataset.go │ │ ├── evaluation.go │ │ ├── extract.go │ │ ├── file/ │ │ │ ├── cos.go │ │ │ ├── dummy.go │ │ │ ├── factory.go │ │ │ ├── local.go │ │ │ ├── minio.go │ │ │ ├── s3.go │ │ │ └── tos.go │ │ ├── graph.go │ │ ├── image_multimodal.go │ │ ├── kbshare.go │ │ ├── knowledge.go │ │ ├── knowledge_manual_test.go │ │ ├── knowledgebase.go │ │ ├── knowledgebase_search.go │ │ ├── knowledgebase_search_faq.go │ │ ├── knowledgebase_search_fusion.go │ │ ├── knowledgebase_search_results.go │ │ ├── knowledgebase_search_shared.go │ │ ├── llmcontext/ │ │ │ ├── compression_strategies.go │ │ │ ├── context_manager.go │ │ │ ├── context_manager_factory.go │ │ │ ├── memory_storage.go │ │ │ ├── redis_storage.go │ │ │ └── storage.go │ │ ├── mcp_service.go │ │ ├── memory/ │ │ │ └── service.go │ │ ├── message.go │ │ ├── metric/ │ │ │ ├── bleu.go │ │ │ ├── common.go │ │ │ ├── map.go │ │ │ ├── map_test.go │ │ │ ├── mrr.go │ │ │ ├── mrr_test.go │ │ │ ├── ndcg.go │ │ │ ├── precision.go │ │ │ ├── precision_test.go │ │ │ ├── recall.go │ │ │ ├── recall_test.go │ │ │ ├── rouge.go │ │ │ └── rouge_score.go │ │ ├── metric_hook.go │ │ ├── model.go │ │ ├── ocr_sanitizer.go │ │ ├── ocr_sanitizer_test.go │ │ ├── organization.go │ │ ├── retriever/ │ │ │ ├── composite.go │ │ │ ├── keywords_vector_hybrid_indexer.go │ │ │ └── registry.go │ │ ├── session.go │ │ ├── session_agent_qa.go │ │ ├── session_knowledge_qa.go │ │ ├── session_qa_helpers.go │ │ ├── skill_service.go │ │ ├── tag.go │ │ ├── tenant.go │ │ ├── user.go │ │ ├── web_search/ │ │ │ ├── bing.go │ │ │ ├── bing_test.go │ │ │ ├── duckduckgo.go │ │ │ ├── duckduckgo_test.go │ │ │ ├── google.go │ │ │ ├── google_test.go │ │ │ └── registry.go │ │ ├── web_search.go │ │ └── web_search_state.go │ ├── common/ │ │ └── tools.go │ ├── config/ │ │ └── config.go │ ├── container/ │ │ ├── cleanup.go │ │ └── container.go │ ├── database/ │ │ └── migration.go │ ├── errors/ │ │ ├── errors.go │ │ └── session.go │ ├── event/ │ │ ├── SUMMARY.md │ │ ├── adapter.go │ │ ├── event.go │ │ ├── event_data.go │ │ ├── example_test.go │ │ ├── global.go │ │ ├── middleware.go │ │ └── usage_example.md │ ├── handler/ │ │ ├── auth.go │ │ ├── chunk.go │ │ ├── custom_agent.go │ │ ├── evaluation.go │ │ ├── faq.go │ │ ├── im.go │ │ ├── initialization.go │ │ ├── knowledge.go │ │ ├── knowledgebase.go │ │ ├── mcp_service.go │ │ ├── message.go │ │ ├── model.go │ │ ├── organization.go │ │ ├── session/ │ │ │ ├── agent_stream_handler.go │ │ │ ├── handler.go │ │ │ ├── helpers.go │ │ │ ├── image_upload.go │ │ │ ├── qa.go │ │ │ ├── stream.go │ │ │ ├── title.go │ │ │ └── types.go │ │ ├── skill_handler.go │ │ ├── system.go │ │ ├── tag.go │ │ ├── tenant.go │ │ └── web_search.go │ ├── im/ │ │ ├── adapter.go │ │ ├── cmd_clear.go │ │ ├── cmd_help.go │ │ ├── cmd_info.go │ │ ├── cmd_search.go │ │ ├── cmd_stop.go │ │ ├── command.go │ │ ├── command_registry.go │ │ ├── feishu/ │ │ │ ├── adapter.go │ │ │ └── longconn.go │ │ ├── qaqueue.go │ │ ├── ratelimit.go │ │ ├── service.go │ │ ├── slack/ │ │ │ ├── adapter.go │ │ │ └── longconn.go │ │ ├── stream_test.go │ │ ├── types.go │ │ └── wecom/ │ │ ├── longconn.go │ │ ├── webhook_adapter.go │ │ └── ws_adapter.go │ ├── infrastructure/ │ │ ├── chunker/ │ │ │ ├── splitter.go │ │ │ └── splitter_test.go │ │ └── docparser/ │ │ ├── builtin_converter.go │ │ ├── engine_registry.go │ │ ├── grpc_parser.go │ │ ├── helpers.go │ │ ├── http_parser.go │ │ ├── image_resolver.go │ │ ├── image_resolver_test.go │ │ ├── mineru_cloud_converter.go │ │ ├── mineru_converter.go │ │ └── resolve_remote_images_test.go │ ├── logger/ │ │ └── logger.go │ ├── mcp/ │ │ ├── client.go │ │ ├── errors.go │ │ ├── manager.go │ │ └── types.go │ ├── middleware/ │ │ ├── auth.go │ │ ├── error_handler.go │ │ ├── language.go │ │ ├── logger.go │ │ ├── recovery.go │ │ └── trace.go │ ├── models/ │ │ ├── chat/ │ │ │ ├── chat.go │ │ │ ├── image_resolve.go │ │ │ ├── json_field_extractor.go │ │ │ ├── json_field_extractor_test.go │ │ │ ├── lkeap.go │ │ │ ├── nvidia.go │ │ │ ├── ollama.go │ │ │ ├── provider_chat.go │ │ │ ├── qwen.go │ │ │ ├── remote_api.go │ │ │ ├── remote_api_test.go │ │ │ └── sse_reader.go │ │ ├── embedding/ │ │ │ ├── aliyun.go │ │ │ ├── batch.go │ │ │ ├── embedder.go │ │ │ ├── jina.go │ │ │ ├── nvidia.go │ │ │ ├── ollama.go │ │ │ ├── openai.go │ │ │ └── volcengine.go │ │ ├── provider/ │ │ │ ├── aliyun.go │ │ │ ├── deepseek.go │ │ │ ├── gemini.go │ │ │ ├── generic.go │ │ │ ├── gpustack.go │ │ │ ├── hunyuan.go │ │ │ ├── jina.go │ │ │ ├── lkeap.go │ │ │ ├── longcat.go │ │ │ ├── mimo.go │ │ │ ├── minimax.go │ │ │ ├── modelscope.go │ │ │ ├── moonshot.go │ │ │ ├── nvidia.go │ │ │ ├── openai.go │ │ │ ├── openrouter.go │ │ │ ├── provider.go │ │ │ ├── provider_test.go │ │ │ ├── qianfan.go │ │ │ ├── qiniu.go │ │ │ ├── siliconflow.go │ │ │ ├── volcengine.go │ │ │ └── zhipu.go │ │ ├── rerank/ │ │ │ ├── aliyun_reranker.go │ │ │ ├── jina_reranker.go │ │ │ ├── logging.go │ │ │ ├── nvidia_reranker.go │ │ │ ├── remote_api.go │ │ │ ├── reranker.go │ │ │ ├── reranker_test.go │ │ │ └── zhipu_reranker.go │ │ ├── utils/ │ │ │ ├── ollama/ │ │ │ │ └── ollama.go │ │ │ └── slices.go │ │ └── vlm/ │ │ ├── ollama.go │ │ ├── remote_api.go │ │ └── vlm.go │ ├── router/ │ │ ├── router.go │ │ ├── sync_task.go │ │ └── task.go │ ├── runtime/ │ │ └── container.go │ ├── sandbox/ │ │ ├── docker.go │ │ ├── local.go │ │ ├── manager.go │ │ ├── sandbox.go │ │ ├── sandbox_test.go │ │ ├── validator.go │ │ └── validator_test.go │ ├── searchutil/ │ │ ├── conversion.go │ │ ├── normalize.go │ │ └── textutil.go │ ├── stream/ │ │ ├── factory.go │ │ ├── memory_manager.go │ │ └── redis_manager.go │ ├── tracing/ │ │ └── init.go │ ├── types/ │ │ ├── agent.go │ │ ├── builtin_agent_config.go │ │ ├── chat.go │ │ ├── chat_history_config.go │ │ ├── chat_manage.go │ │ ├── chunk.go │ │ ├── cleanup.go │ │ ├── const.go │ │ ├── context_helpers.go │ │ ├── custom_agent.go │ │ ├── dataset.go │ │ ├── docparser.go │ │ ├── embedding.go │ │ ├── errors.go │ │ ├── evaluation.go │ │ ├── event_bus.go │ │ ├── extract_graph.go │ │ ├── faq.go │ │ ├── faq_test.go │ │ ├── graph.go │ │ ├── interfaces/ │ │ │ ├── agent.go │ │ │ ├── chunk.go │ │ │ ├── context_manager.go │ │ │ ├── custom_agent.go │ │ │ ├── document_parser.go │ │ │ ├── evaluation.go │ │ │ ├── file.go │ │ │ ├── knowledge.go │ │ │ ├── knowledgebase.go │ │ │ ├── mcp_service.go │ │ │ ├── memory.go │ │ │ ├── message.go │ │ │ ├── model.go │ │ │ ├── organization.go │ │ │ ├── resource.go │ │ │ ├── retriever.go │ │ │ ├── retriever_graph.go │ │ │ ├── session.go │ │ │ ├── skill.go │ │ │ ├── stream_manager.go │ │ │ ├── tag.go │ │ │ ├── task_enqueuer.go │ │ │ ├── task_handler.go │ │ │ ├── tenant.go │ │ │ ├── user.go │ │ │ ├── web_search.go │ │ │ └── web_search_state.go │ │ ├── json.go │ │ ├── knowledge.go │ │ ├── knowledgebase.go │ │ ├── mcp.go │ │ ├── memory.go │ │ ├── message.go │ │ ├── model.go │ │ ├── organization.go │ │ ├── placeholder.go │ │ ├── qa_request.go │ │ ├── retrieval_config.go │ │ ├── retriever.go │ │ ├── search.go │ │ ├── session.go │ │ ├── tag.go │ │ ├── tenant.go │ │ ├── user.go │ │ └── web_search.go │ └── utils/ │ ├── crypto.go │ ├── debug.go │ ├── filesize.go │ ├── httputil.go │ ├── inject.go │ ├── inject_test.go │ ├── json.go │ ├── log_sanitize.go │ ├── security.go │ ├── security_test.go │ └── taskid.go ├── mcp-server/ │ ├── .gitignore │ ├── CHANGELOG.md │ ├── EXAMPLES.md │ ├── INSTALL.md │ ├── LICENSE │ ├── MANIFEST.in │ ├── MCP_CONFIG.md │ ├── PROJECT_SUMMARY.md │ ├── README.md │ ├── __init__.py │ ├── main.py │ ├── pyproject.toml │ ├── requirements.txt │ ├── run.py │ ├── run_server.py │ ├── setup.py │ ├── test_imports.py │ ├── test_module.py │ └── weknora_mcp_server.py ├── migrations/ │ ├── mysql/ │ │ └── 00-init-db.sql │ ├── paradedb/ │ │ ├── 00-init-db.sql │ │ └── 01-migrate-to-paradedb.sql │ ├── sqlite/ │ │ ├── 000000_init.down.sql │ │ └── 000000_init.up.sql │ └── versioned/ │ ├── 000000_init.down.sql │ ├── 000000_init.up.sql │ ├── 000001_agent.down.sql │ ├── 000001_agent.up.sql │ ├── 000002_embeddings.down.sql │ ├── 000002_embeddings.up.sql │ ├── 000003_chunk_flags.down.sql │ ├── 000003_chunk_flags.up.sql │ ├── 000004_drop_vlm_model_id.down.sql │ ├── 000004_drop_vlm_model_id.up.sql │ ├── 000005_mentioned_items.down.sql │ ├── 000005_mentioned_items.up.sql │ ├── 000006_custom_agents.down.sql │ ├── 000006_custom_agents.up.sql │ ├── 000007_embeddings_tag_id.down.sql │ ├── 000007_embeddings_tag_id.up.sql │ ├── 000008_migrate_untagged_faq.down.sql │ ├── 000008_migrate_untagged_faq.up.sql │ ├── 000009_add_last_faq_import_result.down.sql │ ├── 000009_add_last_faq_import_result.up.sql │ ├── 000010_add_seq_id.down.sql │ ├── 000010_add_seq_id.up.sql │ ├── 000011_pg_search_update.down.sql │ ├── 000011_pg_search_update.up.sql │ ├── 000012_organizations.down.sql │ ├── 000012_organizations.up.sql │ ├── 000013_engine_configs.down.sql │ ├── 000013_engine_configs.up.sql │ ├── 000014_storage_provider_config.down.sql │ ├── 000014_storage_provider_config.up.sql │ ├── 000015_add_is_fallback.down.sql │ ├── 000015_add_is_fallback.up.sql │ ├── 000016_add_kb_pinned.down.sql │ ├── 000016_add_kb_pinned.up.sql │ ├── 000017_mcp_builtin.down.sql │ ├── 000017_mcp_builtin.up.sql │ ├── 000018_extend_tenant_api_key.down.sql │ ├── 000018_extend_tenant_api_key.up.sql │ ├── 000019_add_agent_duration_ms.down.sql │ ├── 000019_add_agent_duration_ms.up.sql │ ├── 000020_add_message_knowledge_id.down.sql │ ├── 000020_add_message_knowledge_id.up.sql │ ├── 000021_im_channel.down.sql │ ├── 000021_im_channel.up.sql │ ├── 000022_message_images.down.sql │ ├── 000022_message_images.up.sql │ ├── 000023_im_channel_kb_id.down.sql │ ├── 000023_im_channel_kb_id.up.sql │ ├── 000024_im_channel_bot_identity.down.sql │ └── 000024_im_channel_bot_identity.up.sql ├── rerank_server_demo.py ├── scripts/ │ ├── build_images.sh │ ├── check-env.sh │ ├── dev.sh │ ├── docker-entrypoint.sh │ ├── get_version.sh │ ├── migrate.sh │ ├── quick-dev.sh │ └── start_all.sh ├── skills/ │ └── preloaded/ │ ├── citation-generator/ │ │ └── SKILL.md │ ├── data-processor/ │ │ ├── SKILL.md │ │ └── scripts/ │ │ ├── analyze.py │ │ ├── extract_info.py │ │ └── format_converter.py │ ├── doc-coauthoring/ │ │ └── SKILL.md │ └── document-analyzer/ │ └── SKILL.md └── test_agent_config.sh