gitextract_kso0ck8g/ ├── .devcontainer/ │ ├── Dockerfile │ ├── devc-welcome.md │ ├── devcontainer.json │ ├── docker-compose-dev.yaml │ ├── docker-compose.override.yaml │ └── post-create-command.sh ├── .env-template ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── feature_request.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ ├── holopin.yml │ ├── labeler.yml │ ├── styles/ │ │ ├── DocsGPT/ │ │ │ └── Spelling.yml │ │ └── config/ │ │ └── vocabularies/ │ │ └── DocsGPT/ │ │ └── accept.txt │ └── workflows/ │ ├── bandit.yaml │ ├── ci.yml │ ├── cife.yml │ ├── docker-develop-build.yml │ ├── docker-develop-fe-build.yml │ ├── labeler.yml │ ├── lint.yml │ ├── pytest.yml │ ├── sync_fork.yaml │ └── vale.yml ├── .gitignore ├── .ruff.toml ├── .vale.ini ├── .vscode/ │ └── launch.json ├── AGENTS.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── HACKTOBERFEST.md ├── LICENSE ├── README.md ├── SECURITY.md ├── application/ │ ├── Dockerfile │ ├── __init__.py │ ├── agents/ │ │ ├── __init__.py │ │ ├── agent_creator.py │ │ ├── base.py │ │ ├── classic_agent.py │ │ ├── react_agent.py │ │ ├── tools/ │ │ │ ├── api_body_serializer.py │ │ │ ├── api_tool.py │ │ │ ├── base.py │ │ │ ├── brave.py │ │ │ ├── cryptoprice.py │ │ │ ├── duckduckgo.py │ │ │ ├── mcp_tool.py │ │ │ ├── memory.py │ │ │ ├── notes.py │ │ │ ├── ntfy.py │ │ │ ├── postgres.py │ │ │ ├── read_webpage.py │ │ │ ├── spec_parser.py │ │ │ ├── telegram.py │ │ │ ├── todo_list.py │ │ │ ├── tool_action_parser.py │ │ │ └── tool_manager.py │ │ ├── workflow_agent.py │ │ └── workflows/ │ │ ├── cel_evaluator.py │ │ ├── node_agent.py │ │ ├── schemas.py │ │ └── workflow_engine.py │ ├── api/ │ │ ├── __init__.py │ │ ├── answer/ │ │ │ ├── __init__.py │ │ │ ├── routes/ │ │ │ │ ├── __init__.py │ │ │ │ ├── answer.py │ │ │ │ ├── base.py │ │ │ │ ├── search.py │ │ │ │ └── stream.py │ │ │ └── services/ │ │ │ ├── __init__.py │ │ │ ├── compression/ │ │ │ │ ├── __init__.py │ │ │ │ ├── message_builder.py │ │ │ │ ├── orchestrator.py │ │ │ │ ├── prompt_builder.py │ │ │ │ ├── service.py │ │ │ │ ├── threshold_checker.py │ │ │ │ ├── token_counter.py │ │ │ │ └── types.py │ │ │ ├── conversation_service.py │ │ │ ├── prompt_renderer.py │ │ │ └── stream_processor.py │ │ ├── connector/ │ │ │ └── routes.py │ │ ├── internal/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ └── user/ │ │ ├── __init__.py │ │ ├── agents/ │ │ │ ├── __init__.py │ │ │ ├── folders.py │ │ │ ├── routes.py │ │ │ ├── sharing.py │ │ │ └── webhooks.py │ │ ├── analytics/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ ├── attachments/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ ├── base.py │ │ ├── conversations/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ ├── prompts/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ ├── routes.py │ │ ├── sharing/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ ├── sources/ │ │ │ ├── __init__.py │ │ │ ├── chunks.py │ │ │ ├── routes.py │ │ │ └── upload.py │ │ ├── tasks.py │ │ ├── tools/ │ │ │ ├── __init__.py │ │ │ ├── mcp.py │ │ │ └── routes.py │ │ ├── utils.py │ │ └── workflows/ │ │ ├── __init__.py │ │ └── routes.py │ ├── app.py │ ├── auth.py │ ├── cache.py │ ├── celery_init.py │ ├── celeryconfig.py │ ├── core/ │ │ ├── __init__.py │ │ ├── json_schema_utils.py │ │ ├── logging_config.py │ │ ├── model_configs.py │ │ ├── model_settings.py │ │ ├── model_utils.py │ │ ├── mongo_db.py │ │ ├── settings.py │ │ └── url_validation.py │ ├── error.py │ ├── index.faiss │ ├── index.pkl │ ├── llm/ │ │ ├── __init__.py │ │ ├── anthropic.py │ │ ├── base.py │ │ ├── docsgpt_provider.py │ │ ├── google_ai.py │ │ ├── groq.py │ │ ├── handlers/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── google.py │ │ │ ├── handler_creator.py │ │ │ └── openai.py │ │ ├── llama_cpp.py │ │ ├── llm_creator.py │ │ ├── novita.py │ │ ├── open_router.py │ │ ├── openai.py │ │ ├── premai.py │ │ └── sagemaker.py │ ├── logging.py │ ├── parser/ │ │ ├── __init__.py │ │ ├── chunking.py │ │ ├── connectors/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── connector_creator.py │ │ │ ├── google_drive/ │ │ │ │ ├── __init__.py │ │ │ │ ├── auth.py │ │ │ │ └── loader.py │ │ │ └── share_point/ │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ └── loader.py │ │ ├── embedding_pipeline.py │ │ ├── file/ │ │ │ ├── __init__.py │ │ │ ├── audio_parser.py │ │ │ ├── base.py │ │ │ ├── base_parser.py │ │ │ ├── bulk.py │ │ │ ├── constants.py │ │ │ ├── docling_parser.py │ │ │ ├── docs_parser.py │ │ │ ├── epub_parser.py │ │ │ ├── html_parser.py │ │ │ ├── image_parser.py │ │ │ ├── json_parser.py │ │ │ ├── markdown_parser.py │ │ │ ├── openapi3_parser.py │ │ │ ├── pptx_parser.py │ │ │ ├── rst_parser.py │ │ │ └── tabular_parser.py │ │ ├── remote/ │ │ │ ├── base.py │ │ │ ├── crawler_loader.py │ │ │ ├── crawler_markdown.py │ │ │ ├── github_loader.py │ │ │ ├── reddit_loader.py │ │ │ ├── remote_creator.py │ │ │ ├── s3_loader.py │ │ │ ├── sitemap_loader.py │ │ │ ├── telegram.py │ │ │ └── web_loader.py │ │ └── schema/ │ │ ├── __init__.py │ │ ├── base.py │ │ └── schema.py │ ├── prompts/ │ │ ├── chat_combine_creative.txt │ │ ├── chat_combine_default.txt │ │ ├── chat_combine_strict.txt │ │ ├── chat_reduce_prompt.txt │ │ ├── compression/ │ │ │ └── v1.0.txt │ │ ├── react_final_prompt.txt │ │ └── react_planning_prompt.txt │ ├── requirements.txt │ ├── retriever/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── classic_rag.py │ │ └── retriever_creator.py │ ├── security/ │ │ ├── __init__.py │ │ └── encryption.py │ ├── seed/ │ │ ├── __init__.py │ │ ├── commands.py │ │ ├── config/ │ │ │ ├── agents_template.yaml │ │ │ └── premade_agents.yaml │ │ └── seeder.py │ ├── storage/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── local.py │ │ ├── s3.py │ │ └── storage_creator.py │ ├── stt/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── constants.py │ │ ├── faster_whisper_stt.py │ │ ├── live_session.py │ │ ├── openai_stt.py │ │ ├── stt_creator.py │ │ └── upload_limits.py │ ├── templates/ │ │ ├── __init__.py │ │ ├── namespaces.py │ │ └── template_engine.py │ ├── tts/ │ │ ├── base.py │ │ ├── elevenlabs.py │ │ ├── google_tts.py │ │ └── tts_creator.py │ ├── usage.py │ ├── utils.py │ ├── vectorstore/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── document_class.py │ │ ├── elasticsearch.py │ │ ├── embeddings_local.py │ │ ├── faiss.py │ │ ├── lancedb.py │ │ ├── milvus.py │ │ ├── mongodb.py │ │ ├── pgvector.py │ │ ├── qdrant.py │ │ └── vector_creator.py │ ├── worker.py │ └── wsgi.py ├── codecov.yml ├── deployment/ │ ├── docker-compose-azure.yaml │ ├── docker-compose-dev.yaml │ ├── docker-compose-hub.yaml │ ├── docker-compose-local.yaml │ ├── docker-compose.yaml │ ├── k8s/ │ │ ├── deployments/ │ │ │ ├── docsgpt-deploy.yaml │ │ │ ├── mongo-deploy.yaml │ │ │ ├── qdrant-deploy.yaml │ │ │ └── redis-deploy.yaml │ │ ├── docsgpt-secrets.yaml │ │ └── services/ │ │ ├── docsgpt-service.yaml │ │ ├── mongo-service.yaml │ │ ├── qdrant-service.yaml │ │ └── redis-service.yaml │ └── optional/ │ ├── docker-compose.optional.ollama-cpu.yaml │ └── docker-compose.optional.ollama-gpu.yaml ├── docs/ │ ├── README.md │ ├── app/ │ │ ├── [[...mdxPath]]/ │ │ │ └── page.jsx │ │ └── layout.jsx │ ├── components/ │ │ ├── DeploymentCards.jsx │ │ └── ToolCards.jsx │ ├── content/ │ │ ├── Agents/ │ │ │ ├── _meta.js │ │ │ ├── api.mdx │ │ │ ├── basics.mdx │ │ │ ├── nodes.mdx │ │ │ └── webhooks.mdx │ │ ├── Deploying/ │ │ │ ├── Amazon-Lightsail.mdx │ │ │ ├── Development-Environment.mdx │ │ │ ├── Docker-Deploying.mdx │ │ │ ├── DocsGPT-Settings.mdx │ │ │ ├── Hosting-the-app.mdx │ │ │ ├── Kubernetes-Deploying.mdx │ │ │ ├── Railway.mdx │ │ │ └── _meta.js │ │ ├── Extensions/ │ │ │ ├── Chatwoot-extension.mdx │ │ │ ├── Chrome-extension.mdx │ │ │ ├── _meta.js │ │ │ ├── api-key-guide.mdx │ │ │ ├── chat-widget.mdx │ │ │ └── search-widget.mdx │ │ ├── Guides/ │ │ │ ├── Architecture.mdx │ │ │ ├── Customising-prompts.mdx │ │ │ ├── How-to-train-on-other-documentation.mdx │ │ │ ├── How-to-use-different-LLM.mdx │ │ │ ├── Integrations/ │ │ │ │ ├── _meta.js │ │ │ │ └── google-drive-connector.mdx │ │ │ ├── My-AI-answers-questions-using-external-knowledge.mdx │ │ │ ├── _meta.js │ │ │ ├── compression.md │ │ │ └── ocr.mdx │ │ ├── Models/ │ │ │ ├── _meta.js │ │ │ ├── cloud-providers.mdx │ │ │ ├── embeddings.md │ │ │ └── local-inference.mdx │ │ ├── Tools/ │ │ │ ├── _meta.js │ │ │ ├── api-tool.mdx │ │ │ ├── basics.mdx │ │ │ └── creating-a-tool.mdx │ │ ├── _meta.js │ │ ├── changelog.mdx │ │ ├── index.mdx │ │ └── quickstart.mdx │ ├── mdx-components.jsx │ ├── next.config.js │ ├── package.json │ ├── public/ │ │ ├── favicons/ │ │ │ └── site.webmanifest │ │ └── llms.txt │ └── theme.config.jsx ├── extensions/ │ ├── chatwoot/ │ │ ├── .env_sample │ │ ├── __init__.py │ │ └── app.py │ ├── chrome/ │ │ ├── _locales/ │ │ │ └── en/ │ │ │ └── messages.json │ │ ├── dist/ │ │ │ └── output.css │ │ ├── js/ │ │ │ └── jquery/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── component.json │ │ │ ├── composer.json │ │ │ ├── jquery.js │ │ │ └── package.json │ │ ├── manifest.json │ │ ├── package.json │ │ ├── popup.html │ │ ├── popup.js │ │ ├── src/ │ │ │ └── bg/ │ │ │ └── service-worker.js │ │ ├── styles.css │ │ └── tailwind.config.js │ ├── discord/ │ │ ├── __init__.py │ │ └── bot.py │ ├── react-widget/ │ │ ├── .gitignore │ │ ├── .parcelrc │ │ ├── README.md │ │ ├── custom.d.ts │ │ ├── package.json │ │ ├── publish.sh │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── browser.tsx │ │ │ ├── components/ │ │ │ │ ├── DocsGPTWidget.tsx │ │ │ │ └── SearchBar.tsx │ │ │ ├── index.html │ │ │ ├── index.ts │ │ │ ├── main.tsx │ │ │ ├── requests/ │ │ │ │ ├── searchAPI.ts │ │ │ │ └── streamingApi.ts │ │ │ ├── types/ │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ └── helper.ts │ │ └── tsconfig.json │ ├── slack-bot/ │ │ ├── .gitignore │ │ ├── Readme.md │ │ ├── app.py │ │ └── requirements.txt │ └── web-widget/ │ ├── README.md │ ├── dist/ │ │ ├── chat-widget.js │ │ └── output.css │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── html/ │ │ │ └── widget.html │ │ ├── input.css │ │ └── js/ │ │ └── script.js │ └── tailwind.config.js ├── frontend/ │ ├── .husky/ │ │ └── pre-commit │ ├── .prettierignore │ ├── Dockerfile │ ├── components.json │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── postcss.config.cjs │ ├── prettier.config.cjs │ ├── src/ │ │ ├── App.tsx │ │ ├── Hero.tsx │ │ ├── Navigation.tsx │ │ ├── PageNotFound.tsx │ │ ├── agents/ │ │ │ ├── AgentCard.tsx │ │ │ ├── AgentLogs.tsx │ │ │ ├── AgentPreview.tsx │ │ │ ├── AgentsList.tsx │ │ │ ├── FolderCard.tsx │ │ │ ├── NewAgent.tsx │ │ │ ├── SharedAgent.tsx │ │ │ ├── SharedAgentCard.tsx │ │ │ ├── SharedAgentGate.tsx │ │ │ ├── WorkflowBuilder.tsx │ │ │ ├── agentPreviewSlice.ts │ │ │ ├── agents.config.ts │ │ │ ├── components/ │ │ │ │ └── AgentTypeModal.tsx │ │ │ ├── hooks/ │ │ │ │ ├── useAgentSearch.ts │ │ │ │ └── useAgentsFetch.ts │ │ │ ├── index.tsx │ │ │ ├── types/ │ │ │ │ ├── index.ts │ │ │ │ └── workflow.ts │ │ │ └── workflow/ │ │ │ ├── WorkflowBuilder.tsx │ │ │ ├── WorkflowPreview.tsx │ │ │ ├── components/ │ │ │ │ ├── MobileBlocker.tsx │ │ │ │ └── PromptTextArea.tsx │ │ │ ├── nodes/ │ │ │ │ ├── BaseNode.tsx │ │ │ │ ├── ConditionNode.tsx │ │ │ │ ├── SetStateNode.tsx │ │ │ │ └── index.tsx │ │ │ └── workflowPreviewSlice.ts │ │ ├── api/ │ │ │ ├── client.ts │ │ │ ├── endpoints.ts │ │ │ └── services/ │ │ │ ├── conversationService.ts │ │ │ ├── modelService.ts │ │ │ └── userService.ts │ │ ├── components/ │ │ │ ├── Accordion.tsx │ │ │ ├── ActionButtons.tsx │ │ │ ├── AgentImage.tsx │ │ │ ├── ArtifactSidebar.tsx │ │ │ ├── Avatar.tsx │ │ │ ├── Chunks.tsx │ │ │ ├── ConfigFields.tsx │ │ │ ├── ConnectedStateSkeleton.tsx │ │ │ ├── ConnectorAuth.tsx │ │ │ ├── ConnectorTree.tsx │ │ │ ├── ContextMenu.tsx │ │ │ ├── CopyButton.tsx │ │ │ ├── DocumentPagination.tsx │ │ │ ├── Dropdown.tsx │ │ │ ├── DropdownMenu.tsx │ │ │ ├── DropdownModel.tsx │ │ │ ├── FilePicker.tsx │ │ │ ├── FileSelectionSkeleton.tsx │ │ │ ├── FileTree.tsx │ │ │ ├── FileUpload.tsx │ │ │ ├── GoogleDrivePicker.tsx │ │ │ ├── Head.tsx │ │ │ ├── Help.tsx │ │ │ ├── Input.tsx │ │ │ ├── MermaidRenderer.tsx │ │ │ ├── MessageInput.tsx │ │ │ ├── MultiSelectPopup.tsx │ │ │ ├── Notification.tsx │ │ │ ├── RetryIcon.tsx │ │ │ ├── SearchableDropdown.tsx │ │ │ ├── SendArrowIcon.tsx │ │ │ ├── SettingsBar.tsx │ │ │ ├── Sidebar.tsx │ │ │ ├── SkeletonLoader.tsx │ │ │ ├── SourcesPopup.tsx │ │ │ ├── Spinner.tsx │ │ │ ├── Table.tsx │ │ │ ├── TextToSpeechButton.tsx │ │ │ ├── ToggleSwitch.tsx │ │ │ ├── ToolsPopup.tsx │ │ │ ├── UploadToast.tsx │ │ │ ├── types/ │ │ │ │ ├── Dropdown.types.ts │ │ │ │ └── index.ts │ │ │ └── ui/ │ │ │ ├── alert.tsx │ │ │ ├── button.tsx │ │ │ ├── command.tsx │ │ │ ├── dialog.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── multi-select.tsx │ │ │ ├── popover.tsx │ │ │ ├── select.tsx │ │ │ └── sheet.tsx │ │ ├── constants/ │ │ │ └── fileUpload.ts │ │ ├── conversation/ │ │ │ ├── Conversation.tsx │ │ │ ├── ConversationBubble.module.css │ │ │ ├── ConversationBubble.tsx │ │ │ ├── ConversationMessages.tsx │ │ │ ├── ConversationTile.tsx │ │ │ ├── SharedConversation.tsx │ │ │ ├── conversationHandlers.ts │ │ │ ├── conversationModels.ts │ │ │ ├── conversationSlice.ts │ │ │ ├── sharedConversationSlice.ts │ │ │ └── types/ │ │ │ └── index.ts │ │ ├── hooks/ │ │ │ ├── index.ts │ │ │ ├── useDataInitializer.ts │ │ │ └── useTokenAuth.ts │ │ ├── index.css │ │ ├── lib/ │ │ │ └── utils.ts │ │ ├── locale/ │ │ │ ├── de.json │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── i18n.ts │ │ │ ├── jp.json │ │ │ ├── ru.json │ │ │ ├── zh-TW.json │ │ │ └── zh.json │ │ ├── main.tsx │ │ ├── modals/ │ │ │ ├── AddActionModal.tsx │ │ │ ├── AddToolModal.tsx │ │ │ ├── AgentDetailsModal.tsx │ │ │ ├── ConfigToolModal.tsx │ │ │ ├── ConfirmationModal.tsx │ │ │ ├── DeleteConvModal.tsx │ │ │ ├── FolderManagementModal.tsx │ │ │ ├── ImportSpecModal.tsx │ │ │ ├── JWTModal.tsx │ │ │ ├── MCPServerModal.tsx │ │ │ ├── MoveToFolderModal.tsx │ │ │ ├── ShareConversationModal.tsx │ │ │ ├── WrapperModal.tsx │ │ │ └── types/ │ │ │ └── index.ts │ │ ├── models/ │ │ │ ├── misc.ts │ │ │ └── types.ts │ │ ├── preferences/ │ │ │ ├── PromptsModal.tsx │ │ │ ├── preferenceApi.ts │ │ │ ├── preferenceSlice.ts │ │ │ └── types/ │ │ │ └── index.ts │ │ ├── settings/ │ │ │ ├── Analytics.tsx │ │ │ ├── General.tsx │ │ │ ├── Logs.tsx │ │ │ ├── Prompts.tsx │ │ │ ├── Sources.tsx │ │ │ ├── ToolConfig.tsx │ │ │ ├── Tools.tsx │ │ │ ├── index.tsx │ │ │ └── types/ │ │ │ └── index.ts │ │ ├── store.ts │ │ ├── upload/ │ │ │ ├── Upload.tsx │ │ │ ├── types/ │ │ │ │ └── ingestor.ts │ │ │ └── uploadSlice.ts │ │ ├── utils/ │ │ │ ├── browserUtils.ts │ │ │ ├── chartUtils.ts │ │ │ ├── dateTimeUtils.ts │ │ │ ├── objectUtils.ts │ │ │ ├── providerUtils.ts │ │ │ └── stringUtils.ts │ │ └── vite-env.d.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── md-gen.py ├── pytest.ini ├── scripts/ │ ├── migrate_conversation_id_dbref_to_objectid.py │ └── migrate_to_v1_vectorstore.py ├── setup.ps1 ├── setup.sh └── tests/ ├── __init__.py ├── agents/ │ ├── __init__.py │ ├── test_agent_creator.py │ ├── test_base_agent.py │ ├── test_classic_agent.py │ ├── test_get_artifact.py │ ├── test_react_agent.py │ ├── test_tool_action_parser.py │ ├── test_tool_manager.py │ ├── test_workflow_engine.py │ └── test_workflow_template.py ├── api/ │ ├── __init__.py │ ├── answer/ │ │ ├── __init__.py │ │ ├── routes/ │ │ │ ├── __init__.py │ │ │ ├── test_base.py │ │ │ └── test_search.py │ │ └── services/ │ │ ├── __init__.py │ │ ├── test_conversation_service.py │ │ ├── test_prompt_renderer.py │ │ └── test_stream_processor.py │ ├── conftest.py │ └── user/ │ ├── attachments/ │ │ └── test_routes.py │ ├── sources/ │ │ ├── __init__.py │ │ ├── test_audio_upload.py │ │ └── test_routes.py │ ├── test_base.py │ └── test_exception_sanitization.py ├── conftest.py ├── core/ │ └── test_url_validation.py ├── integration/ │ ├── __init__.py │ ├── base.py │ ├── run_all.py │ ├── test_agents.py │ ├── test_analytics.py │ ├── test_chat.py │ ├── test_connectors.py │ ├── test_conversations.py │ ├── test_mcp.py │ ├── test_misc.py │ ├── test_prompts.py │ ├── test_sources.py │ └── test_tools.py ├── llm/ │ ├── handlers/ │ │ ├── test_google.py │ │ ├── test_handler_creator.py │ │ ├── test_llm_handlers.py │ │ └── test_openai.py │ ├── test_anthropic_llm.py │ ├── test_google_llm.py │ ├── test_openai_llm.py │ └── test_sagemaker.py ├── parser/ │ ├── file/ │ │ ├── test_audio_parser.py │ │ ├── test_docs_parser.py │ │ ├── test_embedding_pipeline.py │ │ ├── test_epub_parser.py │ │ ├── test_html_parser.py │ │ ├── test_image_parser.py │ │ ├── test_json_parser.py │ │ ├── test_markdown_parser.py │ │ ├── test_pptx_parser.py │ │ ├── test_rst_parser.py │ │ └── test_tabular_parser.py │ └── remote/ │ ├── test_crawler_loader.py │ ├── test_crawler_markdown.py │ ├── test_github_loader.py │ ├── test_reddit_loader.py │ ├── test_s3_loader.py │ ├── test_share_point_loader.py │ └── test_web_loader.py ├── requirements.txt ├── security/ │ └── test_encryption.py ├── storage/ │ ├── test_local_storage.py │ └── test_s3_storage.py ├── stt/ │ ├── test_live_session.py │ ├── test_stt_creator.py │ └── test_upload_limits.py ├── test_agent_token_tracking.py ├── test_app.py ├── test_attachment_worker_audio.py ├── test_cache.py ├── test_celery.py ├── test_compression_service.py ├── test_error.py ├── test_integration.py ├── test_memory_tool.py ├── test_model_validation.py ├── test_notes_tool.py ├── test_openapi3.yaml ├── test_openapi3parser.py ├── test_todo_tool.py ├── test_token_management.py ├── test_usage.py ├── test_zip_extraction_security.py └── tts/ ├── test_elevenlabs_tts.py ├── test_google_tts.py └── test_tts_creator.py