+ {post.metadata.description} +
+ ) : null} +From 9eb1dc2f340a2758ad6c2d0e616b045eb2ebe974 Mon Sep 17 00:00:00 2001 From: fengxiangdebaozi <10845145+fengxiangdebaozi@user.noreply.gitee.com> Date: Wed, 13 May 2026 12:56:52 +0800 Subject: [PATCH] Initial commit --- .gitignore | 56 + frontend-web/index.html | 12 + frontend-web/package-lock.json | 8920 +++++++++++++++++ frontend-web/package.json | 95 + frontend-web/postcss.config.js | 5 + frontend-web/src/App.tsx | 155 + .../src/components/ai-elements/artifact.tsx | 158 + .../src/components/ai-elements/canvas.tsx | 22 + .../ai-elements/chain-of-thought.tsx | 239 + .../src/components/ai-elements/checkpoint.tsx | 71 + .../src/components/ai-elements/code-block.tsx | 178 + .../src/components/ai-elements/connection.tsx | 28 + .../src/components/ai-elements/context.tsx | 408 + .../src/components/ai-elements/controls.tsx | 18 + .../components/ai-elements/conversation.tsx | 100 + .../src/components/ai-elements/edge.tsx | 140 + .../src/components/ai-elements/image.tsx | 24 + .../src/components/ai-elements/loader.tsx | 96 + .../src/components/ai-elements/message.tsx | 446 + .../components/ai-elements/model-selector.tsx | 208 + .../src/components/ai-elements/node.tsx | 71 + .../components/ai-elements/open-in-chat.tsx | 365 + .../src/components/ai-elements/panel.tsx | 15 + .../src/components/ai-elements/plan.tsx | 142 + .../components/ai-elements/prompt-input.tsx | 1474 +++ .../src/components/ai-elements/queue.tsx | 274 + .../src/components/ai-elements/reasoning.tsx | 188 + .../src/components/ai-elements/shimmer.tsx | 64 + .../src/components/ai-elements/sources.tsx | 77 + .../src/components/ai-elements/suggestion.tsx | 80 + .../src/components/ai-elements/task.tsx | 87 + .../src/components/ai-elements/toolbar.tsx | 16 + .../components/ai-elements/web-preview.tsx | 263 + .../src/components/landing/footer.tsx | 19 + .../src/components/landing/header.tsx | 127 + frontend-web/src/components/landing/hero.tsx | 136 + .../src/components/landing/post-list.tsx | 163 + .../landing/progressive-skills-animation.tsx | 701 ++ .../src/components/landing/section.tsx | 29 + .../landing/sections/case-study-section.tsx | 99 + .../landing/sections/community-section.tsx | 35 + .../landing/sections/sandbox-section.tsx | 126 + .../landing/sections/skills-section.tsx | 28 + .../landing/sections/whats-new-section.tsx | 63 + .../src/components/query-client-provider.tsx | 20 + .../src/components/theme-provider.tsx | 19 + frontend-web/src/components/ui/alert.tsx | 66 + .../src/components/ui/aurora-text.tsx | 43 + frontend-web/src/components/ui/avatar.tsx | 53 + frontend-web/src/components/ui/badge.tsx | 46 + frontend-web/src/components/ui/breadcrumb.tsx | 109 + .../src/components/ui/button-group.tsx | 83 + frontend-web/src/components/ui/button.tsx | 63 + frontend-web/src/components/ui/card.tsx | 92 + frontend-web/src/components/ui/carousel.tsx | 241 + .../src/components/ui/collapsible.tsx | 37 + frontend-web/src/components/ui/command.tsx | 181 + .../src/components/ui/confetti-button.tsx | 49 + frontend-web/src/components/ui/dialog.tsx | 143 + .../src/components/ui/dropdown-menu.tsx | 257 + frontend-web/src/components/ui/empty.tsx | 104 + .../src/components/ui/flickering-grid.tsx | 202 + frontend-web/src/components/ui/galaxy.css | 5 + frontend-web/src/components/ui/galaxy.jsx | 361 + frontend-web/src/components/ui/hover-card.tsx | 44 + .../src/components/ui/input-group.tsx | 170 + frontend-web/src/components/ui/input.tsx | 21 + frontend-web/src/components/ui/item.tsx | 193 + .../src/components/ui/magic-bento.css | 217 + .../src/components/ui/magic-bento.tsx | 713 ++ .../src/components/ui/number-ticker.tsx | 67 + frontend-web/src/components/ui/progress.tsx | 31 + frontend-web/src/components/ui/resizable.tsx | 56 + .../src/components/ui/scroll-area.tsx | 58 + frontend-web/src/components/ui/select.tsx | 190 + frontend-web/src/components/ui/separator.tsx | 28 + frontend-web/src/components/ui/sheet.tsx | 139 + .../src/components/ui/shine-border.tsx | 63 + frontend-web/src/components/ui/sidebar.tsx | 726 ++ frontend-web/src/components/ui/skeleton.tsx | 13 + frontend-web/src/components/ui/sonner.tsx | 40 + .../src/components/ui/spotlight-card.css | 33 + .../src/components/ui/spotlight-card.tsx | 49 + frontend-web/src/components/ui/switch.tsx | 31 + frontend-web/src/components/ui/tabs.tsx | 91 + frontend-web/src/components/ui/terminal.tsx | 257 + frontend-web/src/components/ui/textarea.tsx | 18 + .../src/components/ui/toggle-group.tsx | 83 + frontend-web/src/components/ui/toggle.tsx | 47 + frontend-web/src/components/ui/tooltip.tsx | 60 + .../src/components/ui/word-rotate.tsx | 53 + .../components/workspace/agent-welcome.tsx | 36 + .../workspace/agents/agent-card.tsx | 406 + .../workspace/agents/agent-gallery.tsx | 69 + .../artifacts/artifact-file-detail.tsx | 605 ++ .../artifacts/artifact-file-list.tsx | 148 + .../workspace/artifacts/artifact-trigger.tsx | 30 + .../workspace/artifacts/context.tsx | 96 + .../components/workspace/artifacts/index.ts | 4 + .../components/workspace/chats/chat-box.tsx | 183 + .../src/components/workspace/chats/index.ts | 3 + .../workspace/chats/use-chat-mode.ts | 41 + .../workspace/chats/use-thread-chat.ts | 43 + .../workspace/citations/artifact-link.tsx | 33 + .../workspace/citations/citation-link.tsx | 82 + .../src/components/workspace/code-editor.tsx | 114 + .../components/workspace/command-palette.tsx | 134 + .../src/components/workspace/copy-button.tsx | 39 + .../components/workspace/export-trigger.tsx | 81 + .../src/components/workspace/flip-display.tsx | 29 + .../src/components/workspace/github-icon.tsx | 14 + .../src/components/workspace/input-box.tsx | 962 ++ .../components/workspace/messages/context.ts | 21 + .../components/workspace/messages/index.ts | 1 + .../workspace/messages/markdown-content.tsx | 76 + .../workspace/messages/message-group.tsx | 486 + .../workspace/messages/message-list-item.tsx | 426 + .../workspace/messages/message-list.tsx | 242 + .../messages/message-token-usage.tsx | 91 + .../workspace/messages/skeleton.tsx | 79 + .../workspace/messages/subtask-card.tsx | 177 + .../components/workspace/mode-hover-guide.tsx | 65 + .../src/components/workspace/overscroll.tsx | 17 + .../components/workspace/recent-chat-list.tsx | 305 + .../workspace/settings/about-content.ts | 67 + .../settings/about-settings-page.tsx | 9 + .../components/workspace/settings/about.md | 55 + .../settings/appearance-settings-page.tsx | 196 + .../components/workspace/settings/index.ts | 1 + .../settings/memory-settings-page.tsx | 982 ++ .../settings/notification-settings-page.tsx | 92 + .../workspace/settings/settings-dialog.tsx | 143 + .../workspace/settings/settings-section.tsx | 25 + .../settings/skill-settings-page.tsx | 135 + .../workspace/settings/tool-settings-page.tsx | 70 + .../workspace/streaming-indicator.tsx | 34 + .../src/components/workspace/thread-title.tsx | 50 + .../src/components/workspace/todo-list.tsx | 99 + .../workspace/token-usage-indicator.tsx | 88 + .../src/components/workspace/tooltip.tsx | 23 + .../src/components/workspace/welcome.tsx | 74 + .../workspace/workspace-container.tsx | 135 + .../components/workspace/workspace-header.tsx | 97 + .../workspace/workspace-nav-chat-list.tsx | 65 + .../workspace/workspace-nav-menu.tsx | 104 + .../workspace/workspace-sidebar.tsx | 38 + frontend-web/src/core/agents/api.ts | 96 + frontend-web/src/core/agents/hooks.ts | 64 + frontend-web/src/core/agents/index.ts | 3 + frontend-web/src/core/agents/types.ts | 34 + frontend-web/src/core/api/api-client.ts | 56 + frontend-web/src/core/api/fetch-client.ts | 18 + frontend-web/src/core/api/index.ts | 2 + frontend-web/src/core/api/stream-mode.ts | 68 + frontend-web/src/core/artifacts/download.ts | 91 + frontend-web/src/core/artifacts/hooks.ts | 43 + frontend-web/src/core/artifacts/index.ts | 2 + frontend-web/src/core/artifacts/loader.ts | 48 + frontend-web/src/core/artifacts/utils.ts | 27 + frontend-web/src/core/auth/api.ts | 27 + frontend-web/src/core/auth/index.ts | 63 + frontend-web/src/core/blog/index.ts | 357 + frontend-web/src/core/config/index.ts | 40 + frontend-web/src/core/i18n/context.tsx | 41 + frontend-web/src/core/i18n/cookies.ts | 41 + frontend-web/src/core/i18n/hooks.ts | 48 + frontend-web/src/core/i18n/index.ts | 11 + frontend-web/src/core/i18n/locale.ts | 54 + frontend-web/src/core/i18n/locales/en-US.ts | 459 + frontend-web/src/core/i18n/locales/index.ts | 3 + frontend-web/src/core/i18n/locales/types.ts | 377 + frontend-web/src/core/i18n/locales/zh-CN.ts | 440 + frontend-web/src/core/i18n/server.ts | 24 + frontend-web/src/core/i18n/translations.ts | 7 + frontend-web/src/core/mcp/api.ts | 20 + frontend-web/src/core/mcp/hooks.ts | 44 + frontend-web/src/core/mcp/index.ts | 2 + frontend-web/src/core/mcp/types.ts | 8 + frontend-web/src/core/memory/api.ts | 149 + frontend-web/src/core/memory/hooks.ts | 84 + frontend-web/src/core/memory/index.ts | 2 + frontend-web/src/core/memory/types.ts | 54 + frontend-web/src/core/messages/usage.ts | 60 + frontend-web/src/core/messages/utils.ts | 392 + frontend-web/src/core/models/api.ts | 13 + frontend-web/src/core/models/hooks.ts | 18 + frontend-web/src/core/models/index.ts | 2 + frontend-web/src/core/models/types.ts | 18 + frontend-web/src/core/notification/hooks.ts | 98 + frontend-web/src/core/rehype/index.ts | 56 + frontend-web/src/core/scheduled-tasks/api.ts | 216 + .../src/core/scheduled-tasks/hooks.ts | 111 + .../src/core/scheduled-tasks/index.ts | 3 + .../src/core/scheduled-tasks/types.ts | 67 + frontend-web/src/core/settings/hooks.ts | 59 + frontend-web/src/core/settings/index.ts | 2 + frontend-web/src/core/settings/local.ts | 115 + frontend-web/src/core/settings/store.ts | 150 + frontend-web/src/core/skills/api.ts | 63 + frontend-web/src/core/skills/hooks.ts | 31 + frontend-web/src/core/skills/index.ts | 2 + frontend-web/src/core/skills/type.ts | 7 + frontend-web/src/core/streamdown/index.ts | 1 + frontend-web/src/core/streamdown/plugins.ts | 50 + frontend-web/src/core/tasks/context.tsx | 53 + frontend-web/src/core/tasks/index.ts | 1 + frontend-web/src/core/tasks/types.ts | 12 + frontend-web/src/core/threads/export.ts | 140 + frontend-web/src/core/threads/hooks.ts | 683 ++ frontend-web/src/core/threads/index.ts | 1 + frontend-web/src/core/threads/types.ts | 26 + frontend-web/src/core/threads/utils.ts | 58 + frontend-web/src/core/todos/index.ts | 1 + frontend-web/src/core/todos/types.ts | 4 + frontend-web/src/core/tools/utils.ts | 29 + frontend-web/src/core/uploads/api.ts | 107 + .../src/core/uploads/file-validation.ts | 34 + frontend-web/src/core/uploads/hooks.ts | 79 + frontend-web/src/core/uploads/index.ts | 8 + .../src/core/uploads/prompt-input-files.ts | 52 + frontend-web/src/core/utils/datetime.ts | 27 + frontend-web/src/core/utils/files.tsx | 236 + frontend-web/src/core/utils/json.ts | 10 + frontend-web/src/core/utils/markdown.ts | 10 + frontend-web/src/core/utils/uuid.ts | 1 + frontend-web/src/env.ts | 19 + .../src/hooks/use-global-shortcuts.ts | 53 + frontend-web/src/hooks/use-mobile.ts | 21 + frontend-web/src/lib/ime.ts | 10 + frontend-web/src/lib/utils.ts | 12 + frontend-web/src/main.tsx | 13 + frontend-web/src/pages/AgentChatPage.tsx | 224 + frontend-web/src/pages/AgentsPage.tsx | 5 + frontend-web/src/pages/ChatPage.tsx | 211 + frontend-web/src/pages/ChatsPage.tsx | 74 + frontend-web/src/pages/LandingPage.tsx | 25 + frontend-web/src/pages/LoginPage.tsx | 67 + frontend-web/src/pages/NewAgentPage.tsx | 516 + frontend-web/src/pages/NotFoundPage.tsx | 20 + frontend-web/src/pages/ScheduledChatPage.tsx | 31 + .../src/pages/ScheduledTaskRunDetailPage.tsx | 318 + frontend-web/src/pages/ScheduledTasksPage.tsx | 634 ++ frontend-web/src/shims/next-link.tsx | 16 + frontend-web/src/shims/next-navigation.ts | 36 + frontend-web/src/styles/globals.css | 566 ++ frontend-web/src/vite-env.d.ts | 1 + frontend-web/tsconfig.json | 29 + frontend-web/vite.config.ts | 38 + offline-backend-20260512/backend/.gitignore | 28 + .../backend/.python-version | 1 + offline-backend-20260512/backend/AGENTS.md | 2 + offline-backend-20260512/backend/CLAUDE.md | 571 ++ .../backend/CONTRIBUTING.md | 426 + offline-backend-20260512/backend/Dockerfile | 91 + offline-backend-20260512/backend/Makefile | 18 + offline-backend-20260512/backend/README.md | 424 + .../backend/app/__init__.py | 0 .../backend/app/channels/__init__.py | 16 + .../backend/app/channels/base.py | 130 + .../backend/app/channels/commands.py | 20 + .../backend/app/channels/dingtalk.py | 740 ++ .../backend/app/channels/discord.py | 273 + .../backend/app/channels/feishu.py | 698 ++ .../backend/app/channels/manager.py | 1001 ++ .../backend/app/channels/message_bus.py | 173 + .../backend/app/channels/service.py | 230 + .../backend/app/channels/slack.py | 264 + .../backend/app/channels/store.py | 153 + .../backend/app/channels/telegram.py | 317 + .../backend/app/channels/wechat.py | 1370 +++ .../backend/app/channels/wecom.py | 398 + .../backend/app/gateway/__init__.py | 4 + .../backend/app/gateway/app.py | 525 + .../backend/app/gateway/auth/__init__.py | 42 + .../backend/app/gateway/auth/config.py | 57 + .../app/gateway/auth/credential_file.py | 48 + .../backend/app/gateway/auth/disabled_mode.py | 75 + .../backend/app/gateway/auth/errors.py | 45 + .../backend/app/gateway/auth/jwt.py | 55 + .../app/gateway/auth/local_provider.py | 104 + .../backend/app/gateway/auth/models.py | 41 + .../backend/app/gateway/auth/password.py | 81 + .../backend/app/gateway/auth/providers.py | 24 + .../app/gateway/auth/repositories/__init__.py | 0 .../app/gateway/auth/repositories/base.py | 102 + .../app/gateway/auth/repositories/sqlite.py | 127 + .../backend/app/gateway/auth/reset_admin.py | 91 + .../backend/app/gateway/auth_middleware.py | 140 + .../backend/app/gateway/authz.py | 307 + .../backend/app/gateway/config.py | 29 + .../backend/app/gateway/csrf_middleware.py | 129 + .../backend/app/gateway/deps.py | 294 + .../backend/app/gateway/internal_auth.py | 26 + .../backend/app/gateway/langgraph_auth.py | 122 + .../backend/app/gateway/path_utils.py | 29 + .../backend/app/gateway/routers/__init__.py | 3 + .../backend/app/gateway/routers/agents.py | 449 + .../backend/app/gateway/routers/artifacts.py | 183 + .../app/gateway/routers/assistants_compat.py | 199 + .../backend/app/gateway/routers/auth.py | 586 ++ .../backend/app/gateway/routers/channels.py | 52 + .../backend/app/gateway/routers/feedback.py | 188 + .../backend/app/gateway/routers/mcp.py | 169 + .../backend/app/gateway/routers/memory.py | 531 + .../backend/app/gateway/routers/models.py | 132 + .../backend/app/gateway/routers/runs.py | 169 + .../app/gateway/routers/scheduled_tasks.py | 327 + .../backend/app/gateway/routers/skills.py | 352 + .../app/gateway/routers/suggestions.py | 141 + .../app/gateway/routers/thread_runs.py | 377 + .../backend/app/gateway/routers/threads.py | 622 ++ .../backend/app/gateway/routers/uploads.py | 334 + .../backend/app/gateway/services.py | 423 + .../backend/app/gateway/utils.py | 6 + offline-backend-20260512/backend/debug.py | 148 + offline-backend-20260512/backend/docs/API.md | 655 ++ .../backend/docs/APPLE_CONTAINER.md | 238 + .../backend/docs/ARCHITECTURE.md | 484 + .../backend/docs/AUTH_TEST_DOCKER_GAP.md | 77 + .../backend/docs/AUTH_TEST_PLAN.md | 1801 ++++ .../backend/docs/AUTH_UPGRADE.md | 129 + .../backend/docs/AUTO_TITLE_GENERATION.md | 258 + .../backend/docs/CONFIGURATION.md | 376 + .../backend/docs/FILE_UPLOAD.md | 314 + .../backend/docs/GUARDRAILS.md | 385 + .../backend/docs/MCP_SERVER.md | 100 + .../backend/docs/MEMORY_IMPROVEMENTS.md | 65 + .../docs/MEMORY_IMPROVEMENTS_SUMMARY.md | 38 + .../backend/docs/MEMORY_SETTINGS_REVIEW.md | 63 + .../backend/docs/PATH_EXAMPLES.md | 289 + .../backend/docs/README.md | 55 + .../SCHEDULED_TASK_CHANGE_AND_RELEASE_ZH.md | 548 + .../backend/docs/SETUP.md | 98 + .../backend/docs/STREAMING.md | 351 + .../docs/TITLE_GENERATION_IMPLEMENTATION.md | 222 + offline-backend-20260512/backend/docs/TODO.md | 34 + .../backend/docs/memory-settings-sample.json | 114 + .../backend/docs/middleware-execution-flow.md | 291 + .../backend/docs/plan_mode_usage.md | 204 + .../backend/docs/rfc-create-deerflow-agent.md | 503 + .../docs/rfc-extract-shared-modules.md | 190 + .../backend/docs/rfc-grep-glob-tools.md | 446 + .../backend/docs/summarization.md | 381 + .../backend/docs/task_tool_improvements.md | 174 + .../backend/langgraph.json | 17 + .../packages/harness/deerflow/__init__.py | 0 .../harness/deerflow/agents/__init__.py | 20 + .../harness/deerflow/agents/factory.py | 374 + .../harness/deerflow/agents/features.py | 62 + .../deerflow/agents/lead_agent/__init__.py | 3 + .../deerflow/agents/lead_agent/agent.py | 430 + .../deerflow/agents/lead_agent/prompt.py | 852 ++ .../deerflow/agents/memory/__init__.py | 57 + .../agents/memory/message_processing.py | 109 + .../harness/deerflow/agents/memory/prompt.py | 363 + .../harness/deerflow/agents/memory/queue.py | 277 + .../harness/deerflow/agents/memory/storage.py | 231 + .../agents/memory/summarization_hook.py | 31 + .../harness/deerflow/agents/memory/updater.py | 723 ++ .../deerflow/agents/middlewares/__init__.py | 1 + .../middlewares/clarification_middleware.py | 200 + .../dangling_tool_call_middleware.py | 149 + .../deferred_tool_filter_middleware.py | 107 + .../llm_error_handling_middleware.py | 368 + .../middlewares/loop_detection_middleware.py | 389 + .../agents/middlewares/memory_middleware.py | 110 + .../middlewares/sandbox_audit_middleware.py | 363 + .../middlewares/subagent_limit_middleware.py | 75 + .../middlewares/summarization_middleware.py | 354 + .../middlewares/thread_data_middleware.py | 118 + .../agents/middlewares/title_middleware.py | 179 + .../agents/middlewares/todo_middleware.py | 179 + .../middlewares/token_usage_middleware.py | 37 + .../tool_error_handling_middleware.py | 167 + .../agents/middlewares/uploads_middleware.py | 295 + .../middlewares/view_image_middleware.py | 222 + .../harness/deerflow/agents/thread_state.py | 55 + .../packages/harness/deerflow/client.py | 1199 +++ .../community/aio_sandbox/__init__.py | 15 + .../community/aio_sandbox/aio_sandbox.py | 238 + .../aio_sandbox/aio_sandbox_provider.py | 707 ++ .../deerflow/community/aio_sandbox/backend.py | 114 + .../community/aio_sandbox/local_backend.py | 619 ++ .../community/aio_sandbox/remote_backend.py | 156 + .../community/aio_sandbox/sandbox_info.py | 41 + .../deerflow/community/ddg_search/__init__.py | 3 + .../deerflow/community/ddg_search/tools.py | 95 + .../harness/deerflow/community/exa/tools.py | 79 + .../deerflow/community/firecrawl/tools.py | 73 + .../community/image_search/__init__.py | 3 + .../deerflow/community/image_search/tools.py | 135 + .../community/infoquest/infoquest_client.py | 404 + .../deerflow/community/infoquest/tools.py | 93 + .../deerflow/community/jina_ai/jina_client.py | 43 + .../deerflow/community/jina_ai/tools.py | 32 + .../deerflow/community/serper/__init__.py | 3 + .../deerflow/community/serper/tools.py | 95 + .../deerflow/community/tavily/tools.py | 62 + .../harness/deerflow/config/__init__.py | 30 + .../harness/deerflow/config/acp_config.py | 51 + .../deerflow/config/agents_api_config.py | 32 + .../harness/deerflow/config/agents_config.py | 150 + .../harness/deerflow/config/app_config.py | 454 + .../deerflow/config/checkpointer_config.py | 46 + .../deerflow/config/database_config.py | 102 + .../deerflow/config/extensions_config.py | 263 + .../deerflow/config/guardrails_config.py | 48 + .../harness/deerflow/config/memory_config.py | 83 + .../harness/deerflow/config/model_config.py | 41 + .../packages/harness/deerflow/config/paths.py | 337 + .../deerflow/config/run_events_config.py | 33 + .../harness/deerflow/config/runtime_paths.py | 41 + .../harness/deerflow/config/sandbox_config.py | 83 + .../deerflow/config/skill_evolution_config.py | 14 + .../harness/deerflow/config/skills_config.py | 50 + .../deerflow/config/stream_bridge_config.py | 46 + .../deerflow/config/subagents_config.py | 187 + .../deerflow/config/summarization_config.py | 93 + .../harness/deerflow/config/title_config.py | 53 + .../deerflow/config/token_usage_config.py | 7 + .../harness/deerflow/config/tool_config.py | 20 + .../deerflow/config/tool_search_config.py | 35 + .../harness/deerflow/config/tracing_config.py | 149 + .../harness/deerflow/guardrails/__init__.py | 14 + .../harness/deerflow/guardrails/builtin.py | 23 + .../harness/deerflow/guardrails/middleware.py | 98 + .../harness/deerflow/guardrails/provider.py | 56 + .../packages/harness/deerflow/mcp/__init__.py | 14 + .../packages/harness/deerflow/mcp/cache.py | 142 + .../packages/harness/deerflow/mcp/client.py | 68 + .../packages/harness/deerflow/mcp/oauth.py | 150 + .../packages/harness/deerflow/mcp/tools.py | 135 + .../harness/deerflow/models/__init__.py | 3 + .../deerflow/models/claude_provider.py | 359 + .../deerflow/models/credential_loader.py | 219 + .../harness/deerflow/models/factory.py | 163 + .../deerflow/models/mindie_provider.py | 249 + .../deerflow/models/openai_codex_provider.py | 460 + .../deerflow/models/patched_deepseek.py | 73 + .../deerflow/models/patched_minimax.py | 220 + .../harness/deerflow/models/patched_openai.py | 224 + .../harness/deerflow/models/vllm_provider.py | 258 + .../harness/deerflow/persistence/__init__.py | 13 + .../deerflow/persistence/agents/__init__.py | 22 + .../deerflow/persistence/agents/base.py | 40 + .../deerflow/persistence/agents/memory.py | 99 + .../deerflow/persistence/agents/model.py | 24 + .../deerflow/persistence/agents/sql.py | 117 + .../harness/deerflow/persistence/base.py | 40 + .../harness/deerflow/persistence/engine.py | 190 + .../deerflow/persistence/feedback/__init__.py | 6 + .../deerflow/persistence/feedback/model.py | 32 + .../deerflow/persistence/feedback/sql.py | 217 + .../persistence/migrations/alembic.ini | 38 + .../deerflow/persistence/migrations/env.py | 67 + .../persistence/migrations/versions/.gitkeep | 0 .../20260512_01_scheduled_task_run_result.py | 33 + .../versions/20260512_02_element_room_id.py | 36 + .../versions/20260513_01_agents_table.py | 47 + .../deerflow/persistence/models/__init__.py | 37 + .../deerflow/persistence/models/run_event.py | 35 + .../deerflow/persistence/run/__init__.py | 6 + .../harness/deerflow/persistence/run/model.py | 49 + .../harness/deerflow/persistence/run/sql.py | 255 + .../persistence/scheduled_tasks/__init__.py | 25 + .../persistence/scheduled_tasks/base.py | 65 + .../persistence/scheduled_tasks/memory.py | 107 + .../persistence/scheduled_tasks/model.py | 72 + .../persistence/scheduled_tasks/sql.py | 196 + .../persistence/thread_meta/__init__.py | 38 + .../deerflow/persistence/thread_meta/base.py | 76 + .../persistence/thread_meta/memory.py | 151 + .../deerflow/persistence/thread_meta/model.py | 23 + .../deerflow/persistence/thread_meta/sql.py | 217 + .../deerflow/persistence/user/__init__.py | 12 + .../deerflow/persistence/user/model.py | 59 + .../harness/deerflow/reflection/__init__.py | 3 + .../harness/deerflow/reflection/resolvers.py | 95 + .../harness/deerflow/runtime/__init__.py | 46 + .../deerflow/runtime/checkpointer/__init__.py | 9 + .../runtime/checkpointer/async_provider.py | 160 + .../deerflow/runtime/checkpointer/provider.py | 192 + .../harness/deerflow/runtime/converters.py | 136 + .../deerflow/runtime/events/__init__.py | 4 + .../deerflow/runtime/events/store/__init__.py | 26 + .../deerflow/runtime/events/store/base.py | 109 + .../deerflow/runtime/events/store/db.py | 286 + .../deerflow/runtime/events/store/jsonl.py | 187 + .../deerflow/runtime/events/store/memory.py | 128 + .../harness/deerflow/runtime/journal.py | 382 + .../harness/deerflow/runtime/runs/__init__.py | 16 + .../harness/deerflow/runtime/runs/manager.py | 250 + .../harness/deerflow/runtime/runs/schemas.py | 21 + .../deerflow/runtime/runs/store/__init__.py | 4 + .../deerflow/runtime/runs/store/base.py | 95 + .../deerflow/runtime/runs/store/memory.py | 98 + .../harness/deerflow/runtime/runs/worker.py | 569 ++ .../deerflow/runtime/scheduler/__init__.py | 4 + .../deerflow/runtime/scheduler/element.py | 170 + .../deerflow/runtime/scheduler/registry.py | 18 + .../deerflow/runtime/scheduler/service.py | 669 ++ .../harness/deerflow/runtime/serialization.py | 78 + .../deerflow/runtime/store/__init__.py | 31 + .../deerflow/runtime/store/_sqlite_utils.py | 28 + .../deerflow/runtime/store/async_provider.py | 114 + .../deerflow/runtime/store/provider.py | 188 + .../runtime/stream_bridge/__init__.py | 21 + .../runtime/stream_bridge/async_provider.py | 55 + .../deerflow/runtime/stream_bridge/base.py | 72 + .../deerflow/runtime/stream_bridge/memory.py | 133 + .../harness/deerflow/runtime/user_context.py | 167 + .../harness/deerflow/sandbox/__init__.py | 8 + .../harness/deerflow/sandbox/exceptions.py | 71 + .../deerflow/sandbox/file_operation_lock.py | 27 + .../deerflow/sandbox/local/__init__.py | 3 + .../deerflow/sandbox/local/list_dir.py | 68 + .../deerflow/sandbox/local/local_sandbox.py | 436 + .../sandbox/local/local_sandbox_provider.py | 121 + .../harness/deerflow/sandbox/middleware.py | 83 + .../harness/deerflow/sandbox/sandbox.py | 93 + .../deerflow/sandbox/sandbox_provider.py | 98 + .../harness/deerflow/sandbox/search.py | 210 + .../harness/deerflow/sandbox/security.py | 45 + .../harness/deerflow/sandbox/tools.py | 1582 +++ .../harness/deerflow/skills/__init__.py | 17 + .../harness/deerflow/skills/installer.py | 204 + .../harness/deerflow/skills/parser.py | 80 + .../deerflow/skills/security_scanner.py | 70 + .../deerflow/skills/storage/__init__.py | 83 + .../skills/storage/local_skill_storage.py | 195 + .../deerflow/skills/storage/skill_storage.py | 254 + .../packages/harness/deerflow/skills/types.py | 67 + .../harness/deerflow/skills/validation.py | 87 + .../harness/deerflow/subagents/__init__.py | 12 + .../deerflow/subagents/builtins/__init__.py | 15 + .../deerflow/subagents/builtins/bash_agent.py | 50 + .../subagents/builtins/general_purpose.py | 50 + .../harness/deerflow/subagents/config.py | 56 + .../harness/deerflow/subagents/executor.py | 791 ++ .../harness/deerflow/subagents/registry.py | 165 + .../harness/deerflow/tools/__init__.py | 11 + .../deerflow/tools/builtins/__init__.py | 15 + .../tools/builtins/clarification_tool.py | 55 + .../tools/builtins/invoke_acp_agent_tool.py | 257 + .../tools/builtins/present_file_tool.py | 194 + .../tools/builtins/scheduled_task_tool.py | 149 + .../tools/builtins/setup_agent_tool.py | 71 + .../deerflow/tools/builtins/task_tool.py | 308 + .../deerflow/tools/builtins/tool_search.py | 202 + .../tools/builtins/view_image_tool.py | 162 + .../deerflow/tools/skill_manage_tool.py | 239 + .../packages/harness/deerflow/tools/tools.py | 178 + .../harness/deerflow/tracing/__init__.py | 3 + .../harness/deerflow/tracing/factory.py | 54 + .../harness/deerflow/uploads/__init__.py | 29 + .../harness/deerflow/uploads/manager.py | 266 + .../harness/deerflow/utils/file_conversion.py | 315 + .../harness/deerflow/utils/network.py | 139 + .../harness/deerflow/utils/readability.py | 83 + .../packages/harness/deerflow/utils/time.py | 75 + .../backend/packages/harness/pyproject.toml | 56 + .../backend/pyproject.toml | 50 + .../backend/requirements-offline.txt | 3057 ++++++ offline-backend-20260512/backend/ruff.toml | 13 + .../backend/scripts/migrate_user_isolation.py | 159 + .../backend/tests/test_agents_backend.py | 122 + offline-backend-20260512/backend/uv.lock | 4846 +++++++++ 567 files changed, 102132 insertions(+) create mode 100644 .gitignore create mode 100644 frontend-web/index.html create mode 100644 frontend-web/package-lock.json create mode 100644 frontend-web/package.json create mode 100644 frontend-web/postcss.config.js create mode 100644 frontend-web/src/App.tsx create mode 100644 frontend-web/src/components/ai-elements/artifact.tsx create mode 100644 frontend-web/src/components/ai-elements/canvas.tsx create mode 100644 frontend-web/src/components/ai-elements/chain-of-thought.tsx create mode 100644 frontend-web/src/components/ai-elements/checkpoint.tsx create mode 100644 frontend-web/src/components/ai-elements/code-block.tsx create mode 100644 frontend-web/src/components/ai-elements/connection.tsx create mode 100644 frontend-web/src/components/ai-elements/context.tsx create mode 100644 frontend-web/src/components/ai-elements/controls.tsx create mode 100644 frontend-web/src/components/ai-elements/conversation.tsx create mode 100644 frontend-web/src/components/ai-elements/edge.tsx create mode 100644 frontend-web/src/components/ai-elements/image.tsx create mode 100644 frontend-web/src/components/ai-elements/loader.tsx create mode 100644 frontend-web/src/components/ai-elements/message.tsx create mode 100644 frontend-web/src/components/ai-elements/model-selector.tsx create mode 100644 frontend-web/src/components/ai-elements/node.tsx create mode 100644 frontend-web/src/components/ai-elements/open-in-chat.tsx create mode 100644 frontend-web/src/components/ai-elements/panel.tsx create mode 100644 frontend-web/src/components/ai-elements/plan.tsx create mode 100644 frontend-web/src/components/ai-elements/prompt-input.tsx create mode 100644 frontend-web/src/components/ai-elements/queue.tsx create mode 100644 frontend-web/src/components/ai-elements/reasoning.tsx create mode 100644 frontend-web/src/components/ai-elements/shimmer.tsx create mode 100644 frontend-web/src/components/ai-elements/sources.tsx create mode 100644 frontend-web/src/components/ai-elements/suggestion.tsx create mode 100644 frontend-web/src/components/ai-elements/task.tsx create mode 100644 frontend-web/src/components/ai-elements/toolbar.tsx create mode 100644 frontend-web/src/components/ai-elements/web-preview.tsx create mode 100644 frontend-web/src/components/landing/footer.tsx create mode 100644 frontend-web/src/components/landing/header.tsx create mode 100644 frontend-web/src/components/landing/hero.tsx create mode 100644 frontend-web/src/components/landing/post-list.tsx create mode 100644 frontend-web/src/components/landing/progressive-skills-animation.tsx create mode 100644 frontend-web/src/components/landing/section.tsx create mode 100644 frontend-web/src/components/landing/sections/case-study-section.tsx create mode 100644 frontend-web/src/components/landing/sections/community-section.tsx create mode 100644 frontend-web/src/components/landing/sections/sandbox-section.tsx create mode 100644 frontend-web/src/components/landing/sections/skills-section.tsx create mode 100644 frontend-web/src/components/landing/sections/whats-new-section.tsx create mode 100644 frontend-web/src/components/query-client-provider.tsx create mode 100644 frontend-web/src/components/theme-provider.tsx create mode 100644 frontend-web/src/components/ui/alert.tsx create mode 100644 frontend-web/src/components/ui/aurora-text.tsx create mode 100644 frontend-web/src/components/ui/avatar.tsx create mode 100644 frontend-web/src/components/ui/badge.tsx create mode 100644 frontend-web/src/components/ui/breadcrumb.tsx create mode 100644 frontend-web/src/components/ui/button-group.tsx create mode 100644 frontend-web/src/components/ui/button.tsx create mode 100644 frontend-web/src/components/ui/card.tsx create mode 100644 frontend-web/src/components/ui/carousel.tsx create mode 100644 frontend-web/src/components/ui/collapsible.tsx create mode 100644 frontend-web/src/components/ui/command.tsx create mode 100644 frontend-web/src/components/ui/confetti-button.tsx create mode 100644 frontend-web/src/components/ui/dialog.tsx create mode 100644 frontend-web/src/components/ui/dropdown-menu.tsx create mode 100644 frontend-web/src/components/ui/empty.tsx create mode 100644 frontend-web/src/components/ui/flickering-grid.tsx create mode 100644 frontend-web/src/components/ui/galaxy.css create mode 100644 frontend-web/src/components/ui/galaxy.jsx create mode 100644 frontend-web/src/components/ui/hover-card.tsx create mode 100644 frontend-web/src/components/ui/input-group.tsx create mode 100644 frontend-web/src/components/ui/input.tsx create mode 100644 frontend-web/src/components/ui/item.tsx create mode 100644 frontend-web/src/components/ui/magic-bento.css create mode 100644 frontend-web/src/components/ui/magic-bento.tsx create mode 100644 frontend-web/src/components/ui/number-ticker.tsx create mode 100644 frontend-web/src/components/ui/progress.tsx create mode 100644 frontend-web/src/components/ui/resizable.tsx create mode 100644 frontend-web/src/components/ui/scroll-area.tsx create mode 100644 frontend-web/src/components/ui/select.tsx create mode 100644 frontend-web/src/components/ui/separator.tsx create mode 100644 frontend-web/src/components/ui/sheet.tsx create mode 100644 frontend-web/src/components/ui/shine-border.tsx create mode 100644 frontend-web/src/components/ui/sidebar.tsx create mode 100644 frontend-web/src/components/ui/skeleton.tsx create mode 100644 frontend-web/src/components/ui/sonner.tsx create mode 100644 frontend-web/src/components/ui/spotlight-card.css create mode 100644 frontend-web/src/components/ui/spotlight-card.tsx create mode 100644 frontend-web/src/components/ui/switch.tsx create mode 100644 frontend-web/src/components/ui/tabs.tsx create mode 100644 frontend-web/src/components/ui/terminal.tsx create mode 100644 frontend-web/src/components/ui/textarea.tsx create mode 100644 frontend-web/src/components/ui/toggle-group.tsx create mode 100644 frontend-web/src/components/ui/toggle.tsx create mode 100644 frontend-web/src/components/ui/tooltip.tsx create mode 100644 frontend-web/src/components/ui/word-rotate.tsx create mode 100644 frontend-web/src/components/workspace/agent-welcome.tsx create mode 100644 frontend-web/src/components/workspace/agents/agent-card.tsx create mode 100644 frontend-web/src/components/workspace/agents/agent-gallery.tsx create mode 100644 frontend-web/src/components/workspace/artifacts/artifact-file-detail.tsx create mode 100644 frontend-web/src/components/workspace/artifacts/artifact-file-list.tsx create mode 100644 frontend-web/src/components/workspace/artifacts/artifact-trigger.tsx create mode 100644 frontend-web/src/components/workspace/artifacts/context.tsx create mode 100644 frontend-web/src/components/workspace/artifacts/index.ts create mode 100644 frontend-web/src/components/workspace/chats/chat-box.tsx create mode 100644 frontend-web/src/components/workspace/chats/index.ts create mode 100644 frontend-web/src/components/workspace/chats/use-chat-mode.ts create mode 100644 frontend-web/src/components/workspace/chats/use-thread-chat.ts create mode 100644 frontend-web/src/components/workspace/citations/artifact-link.tsx create mode 100644 frontend-web/src/components/workspace/citations/citation-link.tsx create mode 100644 frontend-web/src/components/workspace/code-editor.tsx create mode 100644 frontend-web/src/components/workspace/command-palette.tsx create mode 100644 frontend-web/src/components/workspace/copy-button.tsx create mode 100644 frontend-web/src/components/workspace/export-trigger.tsx create mode 100644 frontend-web/src/components/workspace/flip-display.tsx create mode 100644 frontend-web/src/components/workspace/github-icon.tsx create mode 100644 frontend-web/src/components/workspace/input-box.tsx create mode 100644 frontend-web/src/components/workspace/messages/context.ts create mode 100644 frontend-web/src/components/workspace/messages/index.ts create mode 100644 frontend-web/src/components/workspace/messages/markdown-content.tsx create mode 100644 frontend-web/src/components/workspace/messages/message-group.tsx create mode 100644 frontend-web/src/components/workspace/messages/message-list-item.tsx create mode 100644 frontend-web/src/components/workspace/messages/message-list.tsx create mode 100644 frontend-web/src/components/workspace/messages/message-token-usage.tsx create mode 100644 frontend-web/src/components/workspace/messages/skeleton.tsx create mode 100644 frontend-web/src/components/workspace/messages/subtask-card.tsx create mode 100644 frontend-web/src/components/workspace/mode-hover-guide.tsx create mode 100644 frontend-web/src/components/workspace/overscroll.tsx create mode 100644 frontend-web/src/components/workspace/recent-chat-list.tsx create mode 100644 frontend-web/src/components/workspace/settings/about-content.ts create mode 100644 frontend-web/src/components/workspace/settings/about-settings-page.tsx create mode 100644 frontend-web/src/components/workspace/settings/about.md create mode 100644 frontend-web/src/components/workspace/settings/appearance-settings-page.tsx create mode 100644 frontend-web/src/components/workspace/settings/index.ts create mode 100644 frontend-web/src/components/workspace/settings/memory-settings-page.tsx create mode 100644 frontend-web/src/components/workspace/settings/notification-settings-page.tsx create mode 100644 frontend-web/src/components/workspace/settings/settings-dialog.tsx create mode 100644 frontend-web/src/components/workspace/settings/settings-section.tsx create mode 100644 frontend-web/src/components/workspace/settings/skill-settings-page.tsx create mode 100644 frontend-web/src/components/workspace/settings/tool-settings-page.tsx create mode 100644 frontend-web/src/components/workspace/streaming-indicator.tsx create mode 100644 frontend-web/src/components/workspace/thread-title.tsx create mode 100644 frontend-web/src/components/workspace/todo-list.tsx create mode 100644 frontend-web/src/components/workspace/token-usage-indicator.tsx create mode 100644 frontend-web/src/components/workspace/tooltip.tsx create mode 100644 frontend-web/src/components/workspace/welcome.tsx create mode 100644 frontend-web/src/components/workspace/workspace-container.tsx create mode 100644 frontend-web/src/components/workspace/workspace-header.tsx create mode 100644 frontend-web/src/components/workspace/workspace-nav-chat-list.tsx create mode 100644 frontend-web/src/components/workspace/workspace-nav-menu.tsx create mode 100644 frontend-web/src/components/workspace/workspace-sidebar.tsx create mode 100644 frontend-web/src/core/agents/api.ts create mode 100644 frontend-web/src/core/agents/hooks.ts create mode 100644 frontend-web/src/core/agents/index.ts create mode 100644 frontend-web/src/core/agents/types.ts create mode 100644 frontend-web/src/core/api/api-client.ts create mode 100644 frontend-web/src/core/api/fetch-client.ts create mode 100644 frontend-web/src/core/api/index.ts create mode 100644 frontend-web/src/core/api/stream-mode.ts create mode 100644 frontend-web/src/core/artifacts/download.ts create mode 100644 frontend-web/src/core/artifacts/hooks.ts create mode 100644 frontend-web/src/core/artifacts/index.ts create mode 100644 frontend-web/src/core/artifacts/loader.ts create mode 100644 frontend-web/src/core/artifacts/utils.ts create mode 100644 frontend-web/src/core/auth/api.ts create mode 100644 frontend-web/src/core/auth/index.ts create mode 100644 frontend-web/src/core/blog/index.ts create mode 100644 frontend-web/src/core/config/index.ts create mode 100644 frontend-web/src/core/i18n/context.tsx create mode 100644 frontend-web/src/core/i18n/cookies.ts create mode 100644 frontend-web/src/core/i18n/hooks.ts create mode 100644 frontend-web/src/core/i18n/index.ts create mode 100644 frontend-web/src/core/i18n/locale.ts create mode 100644 frontend-web/src/core/i18n/locales/en-US.ts create mode 100644 frontend-web/src/core/i18n/locales/index.ts create mode 100644 frontend-web/src/core/i18n/locales/types.ts create mode 100644 frontend-web/src/core/i18n/locales/zh-CN.ts create mode 100644 frontend-web/src/core/i18n/server.ts create mode 100644 frontend-web/src/core/i18n/translations.ts create mode 100644 frontend-web/src/core/mcp/api.ts create mode 100644 frontend-web/src/core/mcp/hooks.ts create mode 100644 frontend-web/src/core/mcp/index.ts create mode 100644 frontend-web/src/core/mcp/types.ts create mode 100644 frontend-web/src/core/memory/api.ts create mode 100644 frontend-web/src/core/memory/hooks.ts create mode 100644 frontend-web/src/core/memory/index.ts create mode 100644 frontend-web/src/core/memory/types.ts create mode 100644 frontend-web/src/core/messages/usage.ts create mode 100644 frontend-web/src/core/messages/utils.ts create mode 100644 frontend-web/src/core/models/api.ts create mode 100644 frontend-web/src/core/models/hooks.ts create mode 100644 frontend-web/src/core/models/index.ts create mode 100644 frontend-web/src/core/models/types.ts create mode 100644 frontend-web/src/core/notification/hooks.ts create mode 100644 frontend-web/src/core/rehype/index.ts create mode 100644 frontend-web/src/core/scheduled-tasks/api.ts create mode 100644 frontend-web/src/core/scheduled-tasks/hooks.ts create mode 100644 frontend-web/src/core/scheduled-tasks/index.ts create mode 100644 frontend-web/src/core/scheduled-tasks/types.ts create mode 100644 frontend-web/src/core/settings/hooks.ts create mode 100644 frontend-web/src/core/settings/index.ts create mode 100644 frontend-web/src/core/settings/local.ts create mode 100644 frontend-web/src/core/settings/store.ts create mode 100644 frontend-web/src/core/skills/api.ts create mode 100644 frontend-web/src/core/skills/hooks.ts create mode 100644 frontend-web/src/core/skills/index.ts create mode 100644 frontend-web/src/core/skills/type.ts create mode 100644 frontend-web/src/core/streamdown/index.ts create mode 100644 frontend-web/src/core/streamdown/plugins.ts create mode 100644 frontend-web/src/core/tasks/context.tsx create mode 100644 frontend-web/src/core/tasks/index.ts create mode 100644 frontend-web/src/core/tasks/types.ts create mode 100644 frontend-web/src/core/threads/export.ts create mode 100644 frontend-web/src/core/threads/hooks.ts create mode 100644 frontend-web/src/core/threads/index.ts create mode 100644 frontend-web/src/core/threads/types.ts create mode 100644 frontend-web/src/core/threads/utils.ts create mode 100644 frontend-web/src/core/todos/index.ts create mode 100644 frontend-web/src/core/todos/types.ts create mode 100644 frontend-web/src/core/tools/utils.ts create mode 100644 frontend-web/src/core/uploads/api.ts create mode 100644 frontend-web/src/core/uploads/file-validation.ts create mode 100644 frontend-web/src/core/uploads/hooks.ts create mode 100644 frontend-web/src/core/uploads/index.ts create mode 100644 frontend-web/src/core/uploads/prompt-input-files.ts create mode 100644 frontend-web/src/core/utils/datetime.ts create mode 100644 frontend-web/src/core/utils/files.tsx create mode 100644 frontend-web/src/core/utils/json.ts create mode 100644 frontend-web/src/core/utils/markdown.ts create mode 100644 frontend-web/src/core/utils/uuid.ts create mode 100644 frontend-web/src/env.ts create mode 100644 frontend-web/src/hooks/use-global-shortcuts.ts create mode 100644 frontend-web/src/hooks/use-mobile.ts create mode 100644 frontend-web/src/lib/ime.ts create mode 100644 frontend-web/src/lib/utils.ts create mode 100644 frontend-web/src/main.tsx create mode 100644 frontend-web/src/pages/AgentChatPage.tsx create mode 100644 frontend-web/src/pages/AgentsPage.tsx create mode 100644 frontend-web/src/pages/ChatPage.tsx create mode 100644 frontend-web/src/pages/ChatsPage.tsx create mode 100644 frontend-web/src/pages/LandingPage.tsx create mode 100644 frontend-web/src/pages/LoginPage.tsx create mode 100644 frontend-web/src/pages/NewAgentPage.tsx create mode 100644 frontend-web/src/pages/NotFoundPage.tsx create mode 100644 frontend-web/src/pages/ScheduledChatPage.tsx create mode 100644 frontend-web/src/pages/ScheduledTaskRunDetailPage.tsx create mode 100644 frontend-web/src/pages/ScheduledTasksPage.tsx create mode 100644 frontend-web/src/shims/next-link.tsx create mode 100644 frontend-web/src/shims/next-navigation.ts create mode 100644 frontend-web/src/styles/globals.css create mode 100644 frontend-web/src/vite-env.d.ts create mode 100644 frontend-web/tsconfig.json create mode 100644 frontend-web/vite.config.ts create mode 100644 offline-backend-20260512/backend/.gitignore create mode 100644 offline-backend-20260512/backend/.python-version create mode 100644 offline-backend-20260512/backend/AGENTS.md create mode 100644 offline-backend-20260512/backend/CLAUDE.md create mode 100644 offline-backend-20260512/backend/CONTRIBUTING.md create mode 100644 offline-backend-20260512/backend/Dockerfile create mode 100644 offline-backend-20260512/backend/Makefile create mode 100644 offline-backend-20260512/backend/README.md create mode 100644 offline-backend-20260512/backend/app/__init__.py create mode 100644 offline-backend-20260512/backend/app/channels/__init__.py create mode 100644 offline-backend-20260512/backend/app/channels/base.py create mode 100644 offline-backend-20260512/backend/app/channels/commands.py create mode 100644 offline-backend-20260512/backend/app/channels/dingtalk.py create mode 100644 offline-backend-20260512/backend/app/channels/discord.py create mode 100644 offline-backend-20260512/backend/app/channels/feishu.py create mode 100644 offline-backend-20260512/backend/app/channels/manager.py create mode 100644 offline-backend-20260512/backend/app/channels/message_bus.py create mode 100644 offline-backend-20260512/backend/app/channels/service.py create mode 100644 offline-backend-20260512/backend/app/channels/slack.py create mode 100644 offline-backend-20260512/backend/app/channels/store.py create mode 100644 offline-backend-20260512/backend/app/channels/telegram.py create mode 100644 offline-backend-20260512/backend/app/channels/wechat.py create mode 100644 offline-backend-20260512/backend/app/channels/wecom.py create mode 100644 offline-backend-20260512/backend/app/gateway/__init__.py create mode 100644 offline-backend-20260512/backend/app/gateway/app.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/__init__.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/config.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/credential_file.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/disabled_mode.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/errors.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/jwt.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/local_provider.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/models.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/password.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/providers.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/repositories/__init__.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/repositories/base.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/repositories/sqlite.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth/reset_admin.py create mode 100644 offline-backend-20260512/backend/app/gateway/auth_middleware.py create mode 100644 offline-backend-20260512/backend/app/gateway/authz.py create mode 100644 offline-backend-20260512/backend/app/gateway/config.py create mode 100644 offline-backend-20260512/backend/app/gateway/csrf_middleware.py create mode 100644 offline-backend-20260512/backend/app/gateway/deps.py create mode 100644 offline-backend-20260512/backend/app/gateway/internal_auth.py create mode 100644 offline-backend-20260512/backend/app/gateway/langgraph_auth.py create mode 100644 offline-backend-20260512/backend/app/gateway/path_utils.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/__init__.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/agents.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/artifacts.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/assistants_compat.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/auth.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/channels.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/feedback.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/mcp.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/memory.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/models.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/runs.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/scheduled_tasks.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/skills.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/suggestions.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/thread_runs.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/threads.py create mode 100644 offline-backend-20260512/backend/app/gateway/routers/uploads.py create mode 100644 offline-backend-20260512/backend/app/gateway/services.py create mode 100644 offline-backend-20260512/backend/app/gateway/utils.py create mode 100644 offline-backend-20260512/backend/debug.py create mode 100644 offline-backend-20260512/backend/docs/API.md create mode 100644 offline-backend-20260512/backend/docs/APPLE_CONTAINER.md create mode 100644 offline-backend-20260512/backend/docs/ARCHITECTURE.md create mode 100644 offline-backend-20260512/backend/docs/AUTH_TEST_DOCKER_GAP.md create mode 100644 offline-backend-20260512/backend/docs/AUTH_TEST_PLAN.md create mode 100644 offline-backend-20260512/backend/docs/AUTH_UPGRADE.md create mode 100644 offline-backend-20260512/backend/docs/AUTO_TITLE_GENERATION.md create mode 100644 offline-backend-20260512/backend/docs/CONFIGURATION.md create mode 100644 offline-backend-20260512/backend/docs/FILE_UPLOAD.md create mode 100644 offline-backend-20260512/backend/docs/GUARDRAILS.md create mode 100644 offline-backend-20260512/backend/docs/MCP_SERVER.md create mode 100644 offline-backend-20260512/backend/docs/MEMORY_IMPROVEMENTS.md create mode 100644 offline-backend-20260512/backend/docs/MEMORY_IMPROVEMENTS_SUMMARY.md create mode 100644 offline-backend-20260512/backend/docs/MEMORY_SETTINGS_REVIEW.md create mode 100644 offline-backend-20260512/backend/docs/PATH_EXAMPLES.md create mode 100644 offline-backend-20260512/backend/docs/README.md create mode 100644 offline-backend-20260512/backend/docs/SCHEDULED_TASK_CHANGE_AND_RELEASE_ZH.md create mode 100644 offline-backend-20260512/backend/docs/SETUP.md create mode 100644 offline-backend-20260512/backend/docs/STREAMING.md create mode 100644 offline-backend-20260512/backend/docs/TITLE_GENERATION_IMPLEMENTATION.md create mode 100644 offline-backend-20260512/backend/docs/TODO.md create mode 100644 offline-backend-20260512/backend/docs/memory-settings-sample.json create mode 100644 offline-backend-20260512/backend/docs/middleware-execution-flow.md create mode 100644 offline-backend-20260512/backend/docs/plan_mode_usage.md create mode 100644 offline-backend-20260512/backend/docs/rfc-create-deerflow-agent.md create mode 100644 offline-backend-20260512/backend/docs/rfc-extract-shared-modules.md create mode 100644 offline-backend-20260512/backend/docs/rfc-grep-glob-tools.md create mode 100644 offline-backend-20260512/backend/docs/summarization.md create mode 100644 offline-backend-20260512/backend/docs/task_tool_improvements.md create mode 100644 offline-backend-20260512/backend/langgraph.json create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/factory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/features.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/lead_agent/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/lead_agent/agent.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/lead_agent/prompt.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/memory/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/memory/message_processing.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/memory/prompt.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/memory/queue.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/memory/storage.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/memory/summarization_hook.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/memory/updater.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/clarification_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/dangling_tool_call_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/deferred_tool_filter_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/llm_error_handling_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/loop_detection_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/memory_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/sandbox_audit_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/subagent_limit_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/summarization_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/thread_data_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/title_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/todo_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/token_usage_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/tool_error_handling_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/middlewares/view_image_middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/agents/thread_state.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/client.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/aio_sandbox/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/aio_sandbox/aio_sandbox.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/aio_sandbox/aio_sandbox_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/aio_sandbox/backend.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/aio_sandbox/local_backend.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/aio_sandbox/remote_backend.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/aio_sandbox/sandbox_info.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/ddg_search/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/ddg_search/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/exa/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/firecrawl/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/image_search/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/image_search/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/infoquest/infoquest_client.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/infoquest/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/jina_ai/jina_client.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/jina_ai/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/serper/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/serper/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/community/tavily/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/acp_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/agents_api_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/agents_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/app_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/checkpointer_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/database_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/extensions_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/guardrails_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/memory_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/model_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/paths.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/run_events_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/runtime_paths.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/sandbox_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/skill_evolution_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/skills_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/stream_bridge_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/subagents_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/summarization_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/title_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/token_usage_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/tool_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/tool_search_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/config/tracing_config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/guardrails/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/guardrails/builtin.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/guardrails/middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/guardrails/provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/mcp/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/mcp/cache.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/mcp/client.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/mcp/oauth.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/mcp/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/claude_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/credential_loader.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/factory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/mindie_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/openai_codex_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/patched_deepseek.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/patched_minimax.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/patched_openai.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/models/vllm_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/agents/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/agents/base.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/agents/memory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/agents/model.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/agents/sql.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/base.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/engine.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/feedback/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/feedback/model.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/feedback/sql.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/migrations/alembic.ini create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/migrations/env.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/migrations/versions/.gitkeep create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/migrations/versions/20260512_01_scheduled_task_run_result.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/migrations/versions/20260512_02_element_room_id.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/migrations/versions/20260513_01_agents_table.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/models/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/models/run_event.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/run/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/run/model.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/run/sql.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/scheduled_tasks/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/scheduled_tasks/base.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/scheduled_tasks/memory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/scheduled_tasks/model.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/scheduled_tasks/sql.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/thread_meta/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/thread_meta/base.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/thread_meta/memory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/thread_meta/model.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/thread_meta/sql.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/user/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/persistence/user/model.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/reflection/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/reflection/resolvers.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/checkpointer/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/checkpointer/async_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/checkpointer/provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/converters.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/events/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/events/store/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/events/store/base.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/events/store/db.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/events/store/jsonl.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/events/store/memory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/journal.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/runs/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/runs/manager.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/runs/schemas.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/runs/store/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/runs/store/base.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/runs/store/memory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/runs/worker.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/scheduler/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/scheduler/element.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/scheduler/registry.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/scheduler/service.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/serialization.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/store/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/store/_sqlite_utils.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/store/async_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/store/provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/stream_bridge/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/stream_bridge/async_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/stream_bridge/base.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/stream_bridge/memory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/runtime/user_context.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/exceptions.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/file_operation_lock.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/local/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/local/list_dir.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/local/local_sandbox.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/local/local_sandbox_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/middleware.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/sandbox.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/sandbox_provider.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/search.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/security.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/sandbox/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/installer.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/parser.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/security_scanner.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/storage/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/storage/local_skill_storage.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/storage/skill_storage.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/types.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/skills/validation.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/subagents/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/subagents/builtins/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/subagents/builtins/bash_agent.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/subagents/builtins/general_purpose.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/subagents/config.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/subagents/executor.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/subagents/registry.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/clarification_tool.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/invoke_acp_agent_tool.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/present_file_tool.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/scheduled_task_tool.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/setup_agent_tool.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/task_tool.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/tool_search.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/builtins/view_image_tool.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/skill_manage_tool.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tools/tools.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tracing/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/tracing/factory.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/uploads/__init__.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/uploads/manager.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/utils/file_conversion.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/utils/network.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/utils/readability.py create mode 100644 offline-backend-20260512/backend/packages/harness/deerflow/utils/time.py create mode 100644 offline-backend-20260512/backend/packages/harness/pyproject.toml create mode 100644 offline-backend-20260512/backend/pyproject.toml create mode 100644 offline-backend-20260512/backend/requirements-offline.txt create mode 100644 offline-backend-20260512/backend/ruff.toml create mode 100644 offline-backend-20260512/backend/scripts/migrate_user_isolation.py create mode 100644 offline-backend-20260512/backend/tests/test_agents_backend.py create mode 100644 offline-backend-20260512/backend/uv.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..fa12407a --- /dev/null +++ b/.gitignore @@ -0,0 +1,56 @@ +# Workspace/editor +.vscode/ +frontend-web/.vscode/ + +# Frontend local/runtime artifacts +frontend-web/.env +frontend-web/node_modules/ +frontend-web/tsconfig.tsbuildinfo +frontend-web/vite-dev.log +frontend-web/vite-dev.err.log + +# Frontend local packages/archives/docs (non-source) +frontend-web/pnpm-lock.yaml +frontend-web/README.md +frontend-web/doc.md +frontend-web/src.zip +frontend-web/src9.zip +frontend-web/src-v1.zip +frontend-web/src-*.rar + +# Frontend build artifacts +frontend-web/dist-scheduled-check/ + +# Offline backend bundles and local deployment artifacts +offline-backend-20260505.zip +offline-backend-20260505/output/ +offline-backend-20260505/bundle/.env +offline-backend-20260505/bundle/.env.example +offline-backend-20260505/bundle/DEPLOY_BACKEND_OFFLINE_ZH.md +offline-backend-20260505/bundle/SHA256SUMS +offline-backend-20260505/bundle/config.yaml +offline-backend-20260505/bundle/config.yaml.example +offline-backend-20260505/bundle/data/ +offline-backend-20260505/bundle/deerflow-backend-offline-image-20260505.tar +offline-backend-20260505/bundle/extensions_config.json +offline-backend-20260505/bundle/frontend-vite.zip +offline-backend-20260505/bundle/skills/ +offline-backend-20260505/bundle/start_backend.0509.sh +offline-backend-20260505/bundle/start_backend.sh +offline-backend-20260505/bundle/stop_backend.sh + +# offline-backend-20260512 runtime artifacts (large files, local config, data) +offline-backend-20260512/.env +offline-backend-20260512/.env.example +offline-backend-20260512/DEPLOY_BACKEND_OFFLINE_ZH.md +offline-backend-20260512/SHA256SUMS +offline-backend-20260512/config.yaml +offline-backend-20260512/config.yaml.example +offline-backend-20260512/data/ +offline-backend-20260512/deerflow-backend-offline-image-20260505.tar +offline-backend-20260512/extensions_config.json +offline-backend-20260512/skills/ +offline-backend-20260512/wheelhouse/ +offline-backend-20260512/start_backend.sh +offline-backend-20260512/stop_backend.sh +offline-backend-20260512/check_backend.sh diff --git a/frontend-web/index.html b/frontend-web/index.html new file mode 100644 index 00000000..4d8d6fbb --- /dev/null +++ b/frontend-web/index.html @@ -0,0 +1,12 @@ + + +
+ + +{tooltip}
+{caption}
} +{displayPct}
++ {used} / {total} +
+{description}
+ )} +{tooltip}
+{attachmentLabel}
++ {data.mediaType} +
+ )} +Used {count} sources
+{title}
+{tooltip}
+No console output
+ ) : ( + logs.map((log, index) => ( +
+ An open-source SuperAgent harness that researches, codes, and creates.
+ With
+
+ the help of sandboxes, memories, tools, skills and subagents, it
+ handles
+
+ different levels of tasks that could take minutes to hours.
+
{formattedDate}
+ ) : null} + + {pathname && availableLanguages.length > 1 ? ( +{description}
+ ) : null} ++ {post.metadata.description} +
+ ) : null} ++ Research mRNA delivery, build a landing page, deploy to + Vercel +
++ {caseStudy.description} +
++ Open-source +
++ We recommend using{" "} + + All-in-One Sandbox + {" "} + that combines Browser, Shell, File, MCP and VSCode Server in a + single Docker container. +
+a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", + className, + )} + {...props} + /> + ); +} + +function ItemActions({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function ItemHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( + + ); +} + +function ItemFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( + + ); +} + +export { + Item, + ItemMedia, + ItemContent, + ItemActions, + ItemGroup, + ItemSeparator, + ItemTitle, + ItemDescription, + ItemHeader, + ItemFooter, +}; diff --git a/frontend-web/src/components/ui/magic-bento.css b/frontend-web/src/components/ui/magic-bento.css new file mode 100644 index 00000000..d18e7f3f --- /dev/null +++ b/frontend-web/src/components/ui/magic-bento.css @@ -0,0 +1,217 @@ +:root { + --hue: 27; + --sat: 69%; + --white: hsl(0, 0%, 100%); + --purple-primary: rgba(132, 0, 255, 1); + --purple-glow: rgba(132, 0, 255, 0.2); + --purple-border: rgba(132, 0, 255, 0.8); + --border-color: #392e4e; + --background-dark: #060010; + color-scheme: light dark; +} + +.card-grid { + display: grid; + gap: 0.5em; + padding: 0.75em; + max-width: 54em; + font-size: clamp(1rem, 0.9rem + 0.5vw, 1.5rem); +} + +.magic-bento-card { + display: flex; + flex-direction: column; + justify-content: space-between; + position: relative; + aspect-ratio: 4/3; + min-height: 200px; + width: 100%; + max-width: 100%; + padding: 1.25em; + border-radius: 20px; + border: 1px solid var(--border-color); + background: var(--background-dark); + font-weight: 300; + overflow: hidden; + transition: all 0.3s ease; + + --glow-x: 50%; + --glow-y: 50%; + --glow-intensity: 0; + --glow-radius: 200px; +} + +.magic-bento-card:hover { + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); +} + +.magic-bento-card__header, +.magic-bento-card__content { + display: flex; + position: relative; + color: var(--white); +} + +.magic-bento-card__header { + gap: 0.75em; + justify-content: space-between; +} + +.magic-bento-card__content { + flex-direction: column; +} + +.magic-bento-card__label { + font-size: 16px; +} + +.magic-bento-card__title, +.magic-bento-card__description { + --clamp-title: 1; + --clamp-desc: 2; +} + +.magic-bento-card__title { + font-weight: 400; + font-size: 16px; + margin: 0 0 0.25em; +} + +.magic-bento-card__description { + font-size: 12px; + line-height: 1.2; + opacity: 0.9; +} + +.magic-bento-card--text-autohide .magic-bento-card__title, +.magic-bento-card--text-autohide .magic-bento-card__description { + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} + +.magic-bento-card--text-autohide .magic-bento-card__title { + -webkit-line-clamp: var(--clamp-title); + line-clamp: var(--clamp-title); +} + +.magic-bento-card--text-autohide .magic-bento-card__description { + -webkit-line-clamp: var(--clamp-desc); + line-clamp: var(--clamp-desc); +} + +@media (max-width: 599px) { + .card-grid { + grid-template-columns: 1fr; + width: 90%; + margin: 0 auto; + padding: 0.5em; + } + + .magic-bento-card { + width: 100%; + min-height: 180px; + } +} + +@media (min-width: 600px) { + .card-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1024px) { + .card-grid { + grid-template-columns: repeat(4, 1fr); + } + + .magic-bento-card:nth-child(3) { + grid-column: span 2; + grid-row: span 2; + } + + .magic-bento-card:nth-child(4) { + grid-column: 1 / span 2; + grid-row: 2 / span 2; + } + + .magic-bento-card:nth-child(6) { + grid-column: 4; + grid-row: 3; + } +} + +/* Border glow effect */ +.magic-bento-card--border-glow::after { + content: ""; + position: absolute; + inset: 0; + padding: 6px; + background: radial-gradient( + var(--glow-radius) circle at var(--glow-x) var(--glow-y), + rgba(132, 0, 255, calc(var(--glow-intensity) * 0.8)) 0%, + rgba(132, 0, 255, calc(var(--glow-intensity) * 0.4)) 30%, + transparent 60% + ); + border-radius: inherit; + -webkit-mask: + linear-gradient(#fff 0 0) content-box, + linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask: + linear-gradient(#fff 0 0) content-box, + linear-gradient(#fff 0 0); + mask-composite: exclude; + pointer-events: none; + opacity: 1; + transition: opacity 0.3s ease; + z-index: 1; +} + +.magic-bento-card--border-glow:hover::after { + opacity: 1; +} + +.magic-bento-card--border-glow:hover { + box-shadow: + 0 4px 20px rgba(46, 24, 78, 0.4), + 0 0 30px var(--purple-glow); +} + +.particle-container { + position: relative; + overflow: hidden; +} + +.particle::before { + content: ""; + position: absolute; + top: -2px; + left: -2px; + right: -2px; + bottom: -2px; + background: rgba(132, 0, 255, 0.2); + border-radius: 50%; + z-index: -1; +} + +.particle-container:hover { + box-shadow: + 0 4px 20px rgba(46, 24, 78, 0.2), + 0 0 30px var(--purple-glow); +} + +/* Global spotlight styles */ +.global-spotlight { + mix-blend-mode: screen; + will-change: transform, opacity; + z-index: 200 !important; + pointer-events: none; +} + +.bento-section { + position: relative; + user-select: none; +} diff --git a/frontend-web/src/components/ui/magic-bento.tsx b/frontend-web/src/components/ui/magic-bento.tsx new file mode 100644 index 00000000..637d11b5 --- /dev/null +++ b/frontend-web/src/components/ui/magic-bento.tsx @@ -0,0 +1,713 @@ +import { gsap } from "gsap"; +import React, { useRef, useEffect, useCallback, useState } from "react"; +import "./magic-bento.css"; + +export interface BentoCardProps { + color?: string; + title?: React.ReactNode; + description?: React.ReactNode; + label?: React.ReactNode; + textAutoHide?: boolean; + disableAnimations?: boolean; +} + +export interface BentoProps { + textAutoHide?: boolean; + enableStars?: boolean; + enableSpotlight?: boolean; + enableBorderGlow?: boolean; + disableAnimations?: boolean; + spotlightRadius?: number; + particleCount?: number; + enableTilt?: boolean; + glowColor?: string; + clickEffect?: boolean; + enableMagnetism?: boolean; + data: BentoCardProps[]; +} + +const DEFAULT_PARTICLE_COUNT = 12; +const DEFAULT_SPOTLIGHT_RADIUS = 300; +const DEFAULT_GLOW_COLOR = "132, 0, 255"; +const MOBILE_BREAKPOINT = 768; + +const createParticleElement = ( + x: number, + y: number, + color: string = DEFAULT_GLOW_COLOR, +): HTMLDivElement => { + const el = document.createElement("div"); + el.className = "particle"; + el.style.cssText = ` + position: absolute; + width: 4px; + height: 4px; + border-radius: 50%; + background: rgba(${color}, 1); + box-shadow: 0 0 6px rgba(${color}, 0.6); + pointer-events: none; + z-index: 100; + left: ${x}px; + top: ${y}px; + `; + return el; +}; + +const calculateSpotlightValues = (radius: number) => ({ + proximity: radius * 0.5, + fadeDistance: radius * 0.75, +}); + +const updateCardGlowProperties = ( + card: HTMLElement, + mouseX: number, + mouseY: number, + glow: number, + radius: number, +) => { + const rect = card.getBoundingClientRect(); + const relativeX = ((mouseX - rect.left) / rect.width) * 100; + const relativeY = ((mouseY - rect.top) / rect.height) * 100; + + card.style.setProperty("--glow-x", `${relativeX}%`); + card.style.setProperty("--glow-y", `${relativeY}%`); + card.style.setProperty("--glow-intensity", glow.toString()); + card.style.setProperty("--glow-radius", `${radius}px`); +}; + +const ParticleCard: React.FC<{ + children: React.ReactNode; + className?: string; + disableAnimations?: boolean; + style?: React.CSSProperties; + particleCount?: number; + glowColor?: string; + enableTilt?: boolean; + clickEffect?: boolean; + enableMagnetism?: boolean; +}> = ({ + children, + className = "", + disableAnimations = false, + style, + particleCount = DEFAULT_PARTICLE_COUNT, + glowColor = DEFAULT_GLOW_COLOR, + enableTilt = true, + clickEffect = false, + enableMagnetism = false, +}) => { + const cardRef = useRef+ {card.description} +
+
+ {wrappedChildren}
+
+ {description}
+ )} ++ {t.agents.description} +
+{t.agents.emptyTitle}
++ {t.agents.emptyDescription} +
++ {href} +
+ )} ++ {fact.content} +
++ {t.settings.notification.notSupported} +
++ {t.settings.notification.deniedHint} +
+ )} + + {permission === "granted" && settings.notification.enabled && ( +
+ {t.welcome.createYourOwnSkillDescription}
+
+ ) : (
+ {t.welcome.createYourOwnSkillDescription}
+ )} +
+ {t.welcome.description}
+
+ ) : (
+ {t.welcome.description}
+ )} +