gitextract_qs6a0kl7/ ├── .agents/ │ └── skills/ │ ├── add-provider-doc/ │ │ └── SKILL.md │ ├── add-setting-env/ │ │ └── SKILL.md │ ├── agent-tracing/ │ │ └── SKILL.md │ ├── chat-sdk/ │ │ └── SKILL.md │ ├── cli/ │ │ ├── SKILL.md │ │ └── references/ │ │ ├── agent.md │ │ ├── conversation.md │ │ ├── generate.md │ │ ├── knowledge.md │ │ ├── memory.md │ │ ├── models-providers.md │ │ ├── search-config.md │ │ └── skills-plugins.md │ ├── code-review/ │ │ └── SKILL.md │ ├── data-fetching/ │ │ └── SKILL.md │ ├── db-migrations/ │ │ └── SKILL.md │ ├── debug/ │ │ └── SKILL.md │ ├── desktop/ │ │ ├── SKILL.md │ │ └── references/ │ │ ├── feature-implementation.md │ │ ├── local-tools.md │ │ ├── menu-config.md │ │ └── window-management.md │ ├── drizzle/ │ │ └── SKILL.md │ ├── hotkey/ │ │ └── SKILL.md │ ├── i18n/ │ │ └── SKILL.md │ ├── linear/ │ │ └── SKILL.md │ ├── local-testing/ │ │ ├── SKILL.md │ │ └── scripts/ │ │ ├── capture-app-window.sh │ │ ├── record-electron-demo.sh │ │ ├── test-discord-bot.sh │ │ ├── test-lark-bot.sh │ │ ├── test-qq-bot.sh │ │ ├── test-slack-bot.sh │ │ ├── test-telegram-bot.sh │ │ └── test-wechat-bot.sh │ ├── microcopy/ │ │ ├── SKILL.md │ │ ├── microcopy-cn.md │ │ └── microcopy-en.md │ ├── modal/ │ │ └── SKILL.md │ ├── pr/ │ │ └── SKILL.md │ ├── project-overview/ │ │ └── SKILL.md │ ├── react/ │ │ ├── SKILL.md │ │ └── references/ │ │ └── layout-kit.md │ ├── recent-data/ │ │ └── SKILL.md │ ├── response-compliance/ │ │ └── SKILL.md │ ├── spa-routes/ │ │ └── SKILL.md │ ├── store-data-structures/ │ │ └── SKILL.md │ ├── testing/ │ │ ├── SKILL.md │ │ └── references/ │ │ ├── agent-runtime-e2e.md │ │ ├── db-model-test.md │ │ ├── desktop-controller-test.md │ │ ├── electron-ipc-test.md │ │ └── zustand-store-action-test.md │ ├── trpc-router/ │ │ └── SKILL.md │ ├── typescript/ │ │ └── SKILL.md │ ├── upstash-workflow/ │ │ ├── SKILL.md │ │ └── reference/ │ │ └── cloud.md │ ├── version-release/ │ │ ├── SKILL.md │ │ └── reference/ │ │ ├── changelog-example/ │ │ │ ├── db-migration.md │ │ │ └── weekly-release.md │ │ └── patch-release-scenarios.md │ └── zustand/ │ ├── SKILL.md │ └── references/ │ ├── action-patterns.md │ └── slice-organization.md ├── .bunfig.toml ├── .changelogrc.cjs ├── .conductor/ │ └── setup.sh ├── .console-log-whitelist.json ├── .cursor/ │ └── docs/ │ └── createStaticStyles_migration_guide.md ├── .cursorindexingignore ├── .devcontainer/ │ └── devcontainer.json ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── 1_bug_report.yml │ │ ├── 2_feature_request.yml │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ ├── desktop-build-setup/ │ │ │ └── action.yml │ │ ├── desktop-cleanup-s3/ │ │ │ └── action.yml │ │ ├── desktop-publish-s3/ │ │ │ └── action.yml │ │ ├── desktop-upload-artifacts/ │ │ │ └── action.yml │ │ ├── setup-env/ │ │ │ └── action.yml │ │ ├── setup-node-bun/ │ │ │ └── action.yml │ │ └── setup-node-pnpm/ │ │ └── action.yml │ ├── scripts/ │ │ ├── auto-close-duplicates.ts │ │ ├── create-failure-issue.js │ │ ├── docker-pr-comment.js │ │ ├── lock-closed-issues.js │ │ ├── pr-comment.js │ │ └── pr-release-body.js │ └── workflows/ │ ├── auto-i18n.yml │ ├── auto-tag-release.yml │ ├── bundle-analyzer.yml │ ├── claude-auto-e2e-testing.yml │ ├── claude-auto-testing.yml │ ├── claude-dedupe-issues.yml │ ├── claude-issue-triage.yml │ ├── claude-migration-support.yml │ ├── claude-pr-assign.yml │ ├── claude-translate-comments.yml │ ├── claude-translator.yml │ ├── claude.yml │ ├── e2e.yml │ ├── issue-auto-close-duplicates.yml │ ├── issue-auto-comments.yml │ ├── issue-close-require.yml │ ├── lighthouse.yml │ ├── lock-closed-issues.yml │ ├── manual-build-desktop.yml │ ├── pr-build-desktop.yml │ ├── pr-build-docker.yml │ ├── release-desktop-beta.yml │ ├── release-desktop-canary.yml │ ├── release-desktop-nightly.yml │ ├── release-desktop-stable.yml │ ├── release-docker.yml │ ├── release.yml │ ├── revalidate-docs.yml │ ├── sync-database-schema.yml │ ├── sync-main-to-canary.yaml │ ├── sync.yml │ └── test.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .i18nrc.js ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .releaserc.cjs ├── .remarkrc.mdx.mjs ├── .remarkrc.mjs ├── .seorc.cjs ├── .stylelintignore ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── AGENTS.md ├── CHANGELOG.md ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── GEMINI.md ├── LICENSE ├── README.md ├── README.zh-CN.md ├── __mocks__/ │ └── zustand/ │ └── traditional.ts ├── apps/ │ ├── cli/ │ │ ├── .npmrc │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── agent.e2e.test.ts │ │ │ ├── doc.e2e.test.ts │ │ │ ├── file.e2e.test.ts │ │ │ ├── generate.e2e.test.ts │ │ │ ├── kb.e2e.test.ts │ │ │ ├── memory.e2e.test.ts │ │ │ ├── message.e2e.test.ts │ │ │ ├── model.e2e.test.ts │ │ │ ├── plugin.e2e.test.ts │ │ │ ├── provider.e2e.test.ts │ │ │ ├── search.e2e.test.ts │ │ │ ├── skill.e2e.test.ts │ │ │ └── topic.e2e.test.ts │ │ ├── man/ │ │ │ └── man1/ │ │ │ ├── lh.1 │ │ │ ├── lobe.1 │ │ │ └── lobehub.1 │ │ ├── package.json │ │ ├── pnpm-workspace.yaml │ │ ├── src/ │ │ │ ├── api/ │ │ │ │ ├── client.ts │ │ │ │ └── http.ts │ │ │ ├── auth/ │ │ │ │ ├── apiKey.ts │ │ │ │ ├── credentials.test.ts │ │ │ │ ├── credentials.ts │ │ │ │ ├── refresh.test.ts │ │ │ │ ├── refresh.ts │ │ │ │ ├── resolveToken.test.ts │ │ │ │ └── resolveToken.ts │ │ │ ├── commands/ │ │ │ │ ├── agent-group.test.ts │ │ │ │ ├── agent-group.ts │ │ │ │ ├── agent.test.ts │ │ │ │ ├── agent.ts │ │ │ │ ├── bot.test.ts │ │ │ │ ├── bot.ts │ │ │ │ ├── botMessage.ts │ │ │ │ ├── brief.ts │ │ │ │ ├── completion.test.ts │ │ │ │ ├── completion.ts │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── connect.test.ts │ │ │ │ ├── connect.ts │ │ │ │ ├── cron.test.ts │ │ │ │ ├── cron.ts │ │ │ │ ├── device.ts │ │ │ │ ├── doc.test.ts │ │ │ │ ├── doc.ts │ │ │ │ ├── eval.test.ts │ │ │ │ ├── eval.ts │ │ │ │ ├── file.test.ts │ │ │ │ ├── file.ts │ │ │ │ ├── generate/ │ │ │ │ │ ├── asr.ts │ │ │ │ │ ├── image.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── text.ts │ │ │ │ │ ├── tts.ts │ │ │ │ │ └── video.ts │ │ │ │ ├── generate.test.ts │ │ │ │ ├── kb.test.ts │ │ │ │ ├── kb.ts │ │ │ │ ├── login.test.ts │ │ │ │ ├── login.ts │ │ │ │ ├── logout.test.ts │ │ │ │ ├── logout.ts │ │ │ │ ├── man.test.ts │ │ │ │ ├── man.ts │ │ │ │ ├── memory.test.ts │ │ │ │ ├── memory.ts │ │ │ │ ├── message.test.ts │ │ │ │ ├── message.ts │ │ │ │ ├── model.test.ts │ │ │ │ ├── model.ts │ │ │ │ ├── plugin.test.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── provider.test.ts │ │ │ │ ├── provider.ts │ │ │ │ ├── search.test.ts │ │ │ │ ├── search.ts │ │ │ │ ├── session-group.test.ts │ │ │ │ ├── session-group.ts │ │ │ │ ├── skill.test.ts │ │ │ │ ├── skill.ts │ │ │ │ ├── status.test.ts │ │ │ │ ├── status.ts │ │ │ │ ├── task/ │ │ │ │ │ ├── checkpoint.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── doc.ts │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lifecycle.ts │ │ │ │ │ ├── review.ts │ │ │ │ │ └── topic.ts │ │ │ │ ├── thread.test.ts │ │ │ │ ├── thread.ts │ │ │ │ ├── topic.test.ts │ │ │ │ ├── topic.ts │ │ │ │ ├── user.test.ts │ │ │ │ └── user.ts │ │ │ ├── constants/ │ │ │ │ ├── auth.ts │ │ │ │ └── urls.ts │ │ │ ├── daemon/ │ │ │ │ ├── manager.test.ts │ │ │ │ └── manager.ts │ │ │ ├── index.ts │ │ │ ├── man/ │ │ │ │ ├── generate.ts │ │ │ │ ├── roff.test.ts │ │ │ │ └── roff.ts │ │ │ ├── program.ts │ │ │ ├── settings/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── tools/ │ │ │ │ ├── file.test.ts │ │ │ │ ├── file.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── shell.test.ts │ │ │ │ └── shell.ts │ │ │ └── utils/ │ │ │ ├── __snapshots__/ │ │ │ │ └── format.test.ts.snap │ │ │ ├── agentStream.test.ts │ │ │ ├── agentStream.ts │ │ │ ├── completion.ts │ │ │ ├── format.test.ts │ │ │ ├── format.ts │ │ │ ├── logger.test.ts │ │ │ └── logger.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.mts │ ├── desktop/ │ │ ├── .gitignore │ │ ├── .i18nrc.js │ │ ├── .npmrc │ │ ├── .prettierignore │ │ ├── .remarkrc.mjs │ │ ├── .stylelintignore │ │ ├── Development.md │ │ ├── README.md │ │ ├── README.zh-CN.md │ │ ├── build/ │ │ │ ├── Icon-beta.Assets.car │ │ │ ├── Icon-beta.icns │ │ │ ├── Icon-dev.Assets.car │ │ │ ├── Icon-nightly.Assets.car │ │ │ ├── Icon-nightly.icns │ │ │ ├── Icon.Assets.car │ │ │ ├── Icon.icns │ │ │ └── entitlements.mac.plist │ │ ├── dev-app-update.yml │ │ ├── electron-builder.mjs │ │ ├── electron.vite.config.ts │ │ ├── index.html │ │ ├── native-deps.config.mjs │ │ ├── package.json │ │ ├── pnpm-workspace.yaml │ │ ├── prettier.config.mjs │ │ ├── resources/ │ │ │ ├── error.html │ │ │ ├── locales/ │ │ │ │ ├── ar/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── bg-BG/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── de-DE/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── en/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── es-ES/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── fa-IR/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── fr-FR/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── it-IT/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── ja-JP/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── ko-KR/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── nl-NL/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── pl-PL/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── pt-BR/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── ru-RU/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── tr-TR/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── vi-VN/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ ├── zh-CN/ │ │ │ │ │ ├── common.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ └── menu.json │ │ │ │ └── zh-TW/ │ │ │ │ ├── common.json │ │ │ │ ├── dialog.json │ │ │ │ └── menu.json │ │ │ └── splash.html │ │ ├── scripts/ │ │ │ ├── download-agent-browser.mjs │ │ │ ├── i18nWorkflow/ │ │ │ │ ├── const.ts │ │ │ │ ├── genDefaultLocale.ts │ │ │ │ ├── genDiff.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ └── update-test/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── dev-app-update.local.yml │ │ │ ├── generate-manifest.sh │ │ │ ├── run-test.sh │ │ │ ├── setup.sh │ │ │ ├── start-server.sh │ │ │ └── stop-server.sh │ │ ├── src/ │ │ │ ├── common/ │ │ │ │ └── routes.ts │ │ │ ├── main/ │ │ │ │ ├── __mocks__/ │ │ │ │ │ ├── node-mac-permissions.ts │ │ │ │ │ └── setup.ts │ │ │ │ ├── appBrowsers.ts │ │ │ │ ├── const/ │ │ │ │ │ ├── dir.ts │ │ │ │ │ ├── env.ts │ │ │ │ │ ├── protocol.ts │ │ │ │ │ ├── store.ts │ │ │ │ │ └── theme.ts │ │ │ │ ├── controllers/ │ │ │ │ │ ├── AuthCtr.ts │ │ │ │ │ ├── BrowserWindowsCtr.ts │ │ │ │ │ ├── DevtoolsCtr.ts │ │ │ │ │ ├── GatewayConnectionCtr.ts │ │ │ │ │ ├── LocalFileCtr.ts │ │ │ │ │ ├── McpCtr.ts │ │ │ │ │ ├── McpInstallCtr.ts │ │ │ │ │ ├── MenuCtr.ts │ │ │ │ │ ├── NetworkProxyCtr.ts │ │ │ │ │ ├── NotificationCtr.ts │ │ │ │ │ ├── RemoteServerConfigCtr.ts │ │ │ │ │ ├── RemoteServerSyncCtr.ts │ │ │ │ │ ├── ShellCommandCtr.ts │ │ │ │ │ ├── ShortcutCtr.ts │ │ │ │ │ ├── SystemCtr.ts │ │ │ │ │ ├── ToolDetectorCtr.ts │ │ │ │ │ ├── TrayMenuCtr.ts │ │ │ │ │ ├── UpdaterCtr.ts │ │ │ │ │ ├── UploadFileCtr.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── AuthCtr.test.ts │ │ │ │ │ │ ├── BrowserWindowsCtr.test.ts │ │ │ │ │ │ ├── DevtoolsCtr.test.ts │ │ │ │ │ │ ├── GatewayConnectionCtr.test.ts │ │ │ │ │ │ ├── LocalFileCtr.test.ts │ │ │ │ │ │ ├── McpInstallCtr.test.ts │ │ │ │ │ │ ├── MenuCtr.test.ts │ │ │ │ │ │ ├── NetworkProxyCtr.test.ts │ │ │ │ │ │ ├── NotificationCtr.test.ts │ │ │ │ │ │ ├── RemoteServerConfigCtr.test.ts │ │ │ │ │ │ ├── ShellCommandCtr.test.ts │ │ │ │ │ │ ├── ShortcutCtr.test.ts │ │ │ │ │ │ ├── SystemCtr.test.ts │ │ │ │ │ │ ├── TrayMenuCtr.test.ts │ │ │ │ │ │ ├── UpdaterCtr.test.ts │ │ │ │ │ │ └── UploadFileCtr.test.ts │ │ │ │ │ ├── _template.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── registry.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── App.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── App.test.ts │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── Browser.ts │ │ │ │ │ │ ├── BrowserManager.ts │ │ │ │ │ │ ├── WindowStateManager.ts │ │ │ │ │ │ ├── WindowThemeManager.ts │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ ├── Browser.test.ts │ │ │ │ │ │ ├── BrowserManager.test.ts │ │ │ │ │ │ ├── WindowStateManager.test.ts │ │ │ │ │ │ └── WindowThemeManager.test.ts │ │ │ │ │ ├── infrastructure/ │ │ │ │ │ │ ├── BackendProxyProtocolManager.ts │ │ │ │ │ │ ├── I18nManager.ts │ │ │ │ │ │ ├── IoCContainer.ts │ │ │ │ │ │ ├── ProtocolManager.ts │ │ │ │ │ │ ├── RendererProtocolManager.ts │ │ │ │ │ │ ├── RendererUrlManager.ts │ │ │ │ │ │ ├── StaticFileServerManager.ts │ │ │ │ │ │ ├── StoreManager.ts │ │ │ │ │ │ ├── ToolDetectorManager.ts │ │ │ │ │ │ ├── UpdaterManager.ts │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ ├── BackendProxyProtocolManager.test.ts │ │ │ │ │ │ ├── I18nManager.test.ts │ │ │ │ │ │ ├── IoCContainer.test.ts │ │ │ │ │ │ ├── ProtocolManager.test.ts │ │ │ │ │ │ ├── RendererProtocolManager.test.ts │ │ │ │ │ │ ├── RendererUrlManager.test.ts │ │ │ │ │ │ ├── StaticFileServerManager.test.ts │ │ │ │ │ │ ├── StoreManager.test.ts │ │ │ │ │ │ └── UpdaterManager.test.ts │ │ │ │ │ └── ui/ │ │ │ │ │ ├── MenuManager.ts │ │ │ │ │ ├── ShortcutManager.ts │ │ │ │ │ ├── Tray.ts │ │ │ │ │ ├── TrayManager.ts │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── MenuManager.test.ts │ │ │ │ │ ├── ShortcutManager.test.ts │ │ │ │ │ ├── Tray.test.ts │ │ │ │ │ └── TrayManager.test.ts │ │ │ │ ├── env.ts │ │ │ │ ├── exports.d.ts │ │ │ │ ├── exports.ts │ │ │ │ ├── global.d.ts │ │ │ │ ├── index.ts │ │ │ │ ├── libs/ │ │ │ │ │ └── mcp/ │ │ │ │ │ ├── client.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── locales/ │ │ │ │ │ ├── default/ │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ ├── dialog.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── menu.ts │ │ │ │ │ └── resources.ts │ │ │ │ ├── menus/ │ │ │ │ │ ├── impls/ │ │ │ │ │ │ ├── BaseMenuPlatform.test.ts │ │ │ │ │ │ ├── BaseMenuPlatform.ts │ │ │ │ │ │ ├── linux.test.ts │ │ │ │ │ │ ├── linux.ts │ │ │ │ │ │ ├── macOS.test.ts │ │ │ │ │ │ ├── macOS.ts │ │ │ │ │ │ ├── windows.test.ts │ │ │ │ │ │ └── windows.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── modules/ │ │ │ │ │ ├── contentSearch/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── base.test.ts │ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ │ ├── base.ts │ │ │ │ │ │ ├── impl/ │ │ │ │ │ │ │ ├── linux.ts │ │ │ │ │ │ │ ├── macOS.ts │ │ │ │ │ │ │ ├── unix.ts │ │ │ │ │ │ │ └── windows.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── fileSearch/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── base.test.ts │ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ │ └── macOS.integration.test.ts │ │ │ │ │ │ ├── base.ts │ │ │ │ │ │ ├── impl/ │ │ │ │ │ │ │ ├── linux.ts │ │ │ │ │ │ │ ├── macOS.ts │ │ │ │ │ │ │ ├── unix.ts │ │ │ │ │ │ │ └── windows.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── networkProxy/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── dispatcher.test.ts │ │ │ │ │ │ │ ├── tester.test.ts │ │ │ │ │ │ │ ├── urlBuilder.test.ts │ │ │ │ │ │ │ └── validator.test.ts │ │ │ │ │ │ ├── dispatcher.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── tester.ts │ │ │ │ │ │ ├── urlBuilder.ts │ │ │ │ │ │ └── validator.ts │ │ │ │ │ ├── toolDetectors/ │ │ │ │ │ │ ├── agentBrowserDetectors.ts │ │ │ │ │ │ ├── contentSearchDetectors.ts │ │ │ │ │ │ ├── fileSearchDetectors.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── runtimeEnvironmentDetectors.ts │ │ │ │ │ └── updater/ │ │ │ │ │ ├── configs.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── package.json │ │ │ │ ├── services/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── fileSearchSrv.test.ts │ │ │ │ │ │ └── fileSrv.test.ts │ │ │ │ │ ├── contentSearchSrv.ts │ │ │ │ │ ├── fileSearchSrv.ts │ │ │ │ │ ├── fileSrv.ts │ │ │ │ │ ├── gatewayConnectionSrv.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── shortcuts/ │ │ │ │ │ ├── config.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── types/ │ │ │ │ │ ├── protocol.ts │ │ │ │ │ └── store.ts │ │ │ │ └── utils/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── file-system.test.ts │ │ │ │ │ ├── http-headers.test.ts │ │ │ │ │ ├── logger.test.ts │ │ │ │ │ └── protocol.test.ts │ │ │ │ ├── file-system.ts │ │ │ │ ├── http-headers.ts │ │ │ │ ├── ipc/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── base.test.ts │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utility.ts │ │ │ │ ├── logger.ts │ │ │ │ ├── mime.ts │ │ │ │ ├── path.ts │ │ │ │ ├── permissions.ts │ │ │ │ └── protocol.ts │ │ │ └── preload/ │ │ │ ├── electronApi.test.ts │ │ │ ├── electronApi.ts │ │ │ ├── index.ts │ │ │ ├── invoke.test.ts │ │ │ ├── invoke.ts │ │ │ ├── routeInterceptor.test.ts │ │ │ ├── routeInterceptor.ts │ │ │ ├── streamer.test.ts │ │ │ └── streamer.ts │ │ ├── stylelint.config.mjs │ │ ├── tsconfig.json │ │ └── vitest.config.mts │ └── device-gateway/ │ ├── package.json │ ├── scripts/ │ │ └── extract-public-key.mjs │ ├── src/ │ │ ├── DeviceGatewayDO.ts │ │ ├── auth.test.ts │ │ ├── auth.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tsconfig.json │ └── wrangler.toml ├── changelog/ │ ├── CHANGELOG.v0.md │ ├── CHANGELOG.v1.md │ ├── v0.json │ ├── v1.json │ └── v2.json ├── codecov.yml ├── commitlint.config.mjs ├── conductor.json ├── docker-compose/ │ ├── deploy/ │ │ ├── bucket.config.json │ │ ├── docker-compose.yml │ │ └── searxng-settings.yml │ ├── dev/ │ │ ├── .gitignore │ │ ├── bucket.config.json │ │ ├── docker-compose.yml │ │ └── searxng-settings.yml │ ├── production/ │ │ └── grafana/ │ │ ├── docker-compose.yml │ │ ├── grafana/ │ │ │ ├── dashboards/ │ │ │ │ └── .gitkeep │ │ │ └── datasources/ │ │ │ ├── datasource-prometheus.yaml │ │ │ └── datasource-tempo.yaml │ │ ├── init_data.json │ │ ├── otel-collector/ │ │ │ └── collector-config.yaml │ │ ├── prometheus/ │ │ │ └── prometheus.yml │ │ ├── searxng-settings.yml │ │ └── tempo/ │ │ └── tempo.yaml │ └── setup.sh ├── docs/ │ ├── .cdn.cache.json │ ├── changelog/ │ │ ├── 2023-09-09-plugin-system.mdx │ │ ├── 2023-09-09-plugin-system.zh-CN.mdx │ │ ├── 2023-11-14-gpt4-vision.mdx │ │ ├── 2023-11-14-gpt4-vision.zh-CN.mdx │ │ ├── 2023-11-19-tts-stt.mdx │ │ ├── 2023-11-19-tts-stt.zh-CN.mdx │ │ ├── 2023-12-22-dalle-3.mdx │ │ ├── 2023-12-22-dalle-3.zh-CN.mdx │ │ ├── 2024-02-08-sso-oauth.mdx │ │ ├── 2024-02-08-sso-oauth.zh-CN.mdx │ │ ├── 2024-02-14-ollama.mdx │ │ ├── 2024-02-14-ollama.zh-CN.mdx │ │ ├── 2024-06-19-lobe-chat-v1.mdx │ │ ├── 2024-06-19-lobe-chat-v1.zh-CN.mdx │ │ ├── 2024-07-19-gpt-4o-mini.mdx │ │ ├── 2024-07-19-gpt-4o-mini.zh-CN.mdx │ │ ├── 2024-08-02-lobe-chat-database-docker.mdx │ │ ├── 2024-08-02-lobe-chat-database-docker.zh-CN.mdx │ │ ├── 2024-08-21-file-upload-and-knowledge-base.mdx │ │ ├── 2024-08-21-file-upload-and-knowledge-base.zh-CN.mdx │ │ ├── 2024-09-13-openai-o1-models.mdx │ │ ├── 2024-09-13-openai-o1-models.zh-CN.mdx │ │ ├── 2024-09-20-artifacts.mdx │ │ ├── 2024-09-20-artifacts.zh-CN.mdx │ │ ├── 2024-10-27-pin-assistant.mdx │ │ ├── 2024-10-27-pin-assistant.zh-CN.mdx │ │ ├── 2024-11-06-share-text-json.mdx │ │ ├── 2024-11-06-share-text-json.zh-CN.mdx │ │ ├── 2024-11-25-november-providers.mdx │ │ ├── 2024-11-25-november-providers.zh-CN.mdx │ │ ├── 2024-11-27-forkable-chat.mdx │ │ ├── 2024-11-27-forkable-chat.zh-CN.mdx │ │ ├── 2025-01-03-user-profile.mdx │ │ ├── 2025-01-03-user-profile.zh-CN.mdx │ │ ├── 2025-01-22-new-ai-provider.mdx │ │ ├── 2025-01-22-new-ai-provider.zh-CN.mdx │ │ ├── 2025-02-02-deepseek-r1.mdx │ │ ├── 2025-02-02-deepseek-r1.zh-CN.mdx │ │ ├── 2025-03-02-new-models.mdx │ │ ├── 2025-03-02-new-models.zh-CN.mdx │ │ ├── 2025-04-06-exports.mdx │ │ ├── 2025-04-06-exports.zh-CN.mdx │ │ ├── 2025-05-08-desktop-app.mdx │ │ ├── 2025-05-08-desktop-app.zh-CN.mdx │ │ ├── 2025-06-08-claude-4.mdx │ │ ├── 2025-06-08-claude-4.zh-CN.mdx │ │ ├── 2025-07-08-mcp-market.mdx │ │ ├── 2025-07-08-mcp-market.zh-CN.mdx │ │ ├── 2025-08-08-image-generation.mdx │ │ ├── 2025-08-08-image-generation.zh-CN.mdx │ │ ├── 2025-09-08-gemini.mdx │ │ ├── 2025-09-08-gemini.zh-CN.mdx │ │ ├── 2025-10-08-python.mdx │ │ ├── 2025-10-08-python.zh-CN.mdx │ │ ├── 2025-11-08-comfy-ui.mdx │ │ ├── 2025-11-08-comfy-ui.zh-CN.mdx │ │ ├── 2025-12-20-mcp.mdx │ │ ├── 2025-12-20-mcp.zh-CN.mdx │ │ ├── 2026-01-27-v2.mdx │ │ ├── 2026-01-27-v2.zh-CN.mdx │ │ ├── 2026-02-08-runtime-auth.mdx │ │ ├── 2026-02-08-runtime-auth.zh-CN.mdx │ │ ├── 2026-03-16-search.mdx │ │ ├── 2026-03-16-search.zh-CN.mdx │ │ ├── 2026-03-23-media-memory.mdx │ │ ├── 2026-03-23-media-memory.zh-CN.mdx │ │ ├── 2026-03-30-agent-tasks.mdx │ │ ├── 2026-03-30-agent-tasks.zh-CN.mdx │ │ ├── index.json │ │ └── schema.json │ ├── development/ │ │ ├── basic/ │ │ │ ├── add-new-authentication-providers.mdx │ │ │ ├── add-new-authentication-providers.zh-CN.mdx │ │ │ ├── add-new-bot-platform.mdx │ │ │ ├── add-new-bot-platform.zh-CN.mdx │ │ │ ├── add-new-image-model.mdx │ │ │ ├── add-new-image-model.zh-CN.mdx │ │ │ ├── architecture.mdx │ │ │ ├── architecture.zh-CN.mdx │ │ │ ├── chat-api.mdx │ │ │ ├── chat-api.zh-CN.mdx │ │ │ ├── comfyui-development.mdx │ │ │ ├── comfyui-development.zh-CN.mdx │ │ │ ├── contributing-guidelines.mdx │ │ │ ├── contributing-guidelines.zh-CN.mdx │ │ │ ├── feature-development.mdx │ │ │ ├── feature-development.zh-CN.mdx │ │ │ ├── folder-structure.mdx │ │ │ ├── folder-structure.zh-CN.mdx │ │ │ ├── resources.mdx │ │ │ ├── resources.zh-CN.mdx │ │ │ ├── setup-development.mdx │ │ │ ├── setup-development.zh-CN.mdx │ │ │ ├── test.mdx │ │ │ └── test.zh-CN.mdx │ │ ├── database-schema.dbml │ │ ├── internationalization/ │ │ │ ├── add-new-locale.mdx │ │ │ ├── add-new-locale.zh-CN.mdx │ │ │ ├── internationalization-implementation.mdx │ │ │ └── internationalization-implementation.zh-CN.mdx │ │ ├── others/ │ │ │ ├── lighthouse.mdx │ │ │ └── lighthouse.zh-CN.mdx │ │ ├── start.mdx │ │ ├── start.zh-CN.mdx │ │ ├── state-management/ │ │ │ ├── state-management-intro.mdx │ │ │ ├── state-management-intro.zh-CN.mdx │ │ │ ├── state-management-selectors.mdx │ │ │ └── state-management-selectors.zh-CN.mdx │ │ └── tests/ │ │ ├── integration-testing.mdx │ │ └── integration-testing.zh-CN.mdx │ ├── glossary.md │ ├── glossary.zh-CN.md │ ├── self-hosting/ │ │ ├── advanced/ │ │ │ ├── analytics.mdx │ │ │ ├── analytics.zh-CN.mdx │ │ │ ├── desktop.mdx │ │ │ ├── desktop.zh-CN.mdx │ │ │ ├── feature-flags.mdx │ │ │ ├── feature-flags.zh-CN.mdx │ │ │ ├── knowledge-base.mdx │ │ │ ├── knowledge-base.zh-CN.mdx │ │ │ ├── model-list.mdx │ │ │ ├── model-list.zh-CN.mdx │ │ │ ├── observability/ │ │ │ │ ├── grafana.mdx │ │ │ │ ├── grafana.zh-CN.mdx │ │ │ │ ├── langfuse.mdx │ │ │ │ └── langfuse.zh-CN.mdx │ │ │ ├── online-search.mdx │ │ │ ├── online-search.zh-CN.mdx │ │ │ ├── redis/ │ │ │ │ ├── upstash.mdx │ │ │ │ └── upstash.zh-CN.mdx │ │ │ ├── redis.mdx │ │ │ ├── redis.zh-CN.mdx │ │ │ ├── s3/ │ │ │ │ ├── cloudflare-r2.mdx │ │ │ │ ├── cloudflare-r2.zh-CN.mdx │ │ │ │ ├── rustfs.mdx │ │ │ │ ├── rustfs.zh-CN.mdx │ │ │ │ ├── tencent-cloud.mdx │ │ │ │ └── tencent-cloud.zh-CN.mdx │ │ │ ├── s3.mdx │ │ │ ├── s3.zh-CN.mdx │ │ │ ├── settings-url-share.mdx │ │ │ ├── settings-url-share.zh-CN.mdx │ │ │ ├── upstream-sync.mdx │ │ │ └── upstream-sync.zh-CN.mdx │ │ ├── auth/ │ │ │ ├── clerk.mdx │ │ │ ├── clerk.zh-CN.mdx │ │ │ ├── email.mdx │ │ │ ├── email.zh-CN.mdx │ │ │ ├── legacy.mdx │ │ │ ├── legacy.zh-CN.mdx │ │ │ ├── next-auth/ │ │ │ │ ├── auth0.mdx │ │ │ │ ├── auth0.zh-CN.mdx │ │ │ │ ├── authelia.mdx │ │ │ │ ├── authelia.zh-CN.mdx │ │ │ │ ├── authentik.mdx │ │ │ │ ├── authentik.zh-CN.mdx │ │ │ │ ├── casdoor.mdx │ │ │ │ ├── casdoor.zh-CN.mdx │ │ │ │ ├── cloudflare-zero-trust.mdx │ │ │ │ ├── cloudflare-zero-trust.zh-CN.mdx │ │ │ │ ├── github.mdx │ │ │ │ ├── github.zh-CN.mdx │ │ │ │ ├── google.mdx │ │ │ │ ├── google.zh-CN.mdx │ │ │ │ ├── keycloak.mdx │ │ │ │ ├── keycloak.zh-CN.mdx │ │ │ │ ├── logto.mdx │ │ │ │ ├── logto.zh-CN.mdx │ │ │ │ ├── microsoft-entra-id.mdx │ │ │ │ ├── microsoft-entra-id.zh-CN.mdx │ │ │ │ ├── okta.mdx │ │ │ │ ├── okta.zh-CN.mdx │ │ │ │ ├── wechat.mdx │ │ │ │ ├── wechat.zh-CN.mdx │ │ │ │ ├── zitadel.mdx │ │ │ │ └── zitadel.zh-CN.mdx │ │ │ └── providers/ │ │ │ ├── apple.mdx │ │ │ ├── apple.zh-CN.mdx │ │ │ ├── auth0.mdx │ │ │ ├── auth0.zh-CN.mdx │ │ │ ├── authelia.mdx │ │ │ ├── authelia.zh-CN.mdx │ │ │ ├── authentik.mdx │ │ │ ├── authentik.zh-CN.mdx │ │ │ ├── casdoor.mdx │ │ │ ├── casdoor.zh-CN.mdx │ │ │ ├── cloudflare-zero-trust.mdx │ │ │ ├── cloudflare-zero-trust.zh-CN.mdx │ │ │ ├── cognito.mdx │ │ │ ├── cognito.zh-CN.mdx │ │ │ ├── feishu.mdx │ │ │ ├── feishu.zh-CN.mdx │ │ │ ├── generic-oidc.mdx │ │ │ ├── generic-oidc.zh-CN.mdx │ │ │ ├── github.mdx │ │ │ ├── github.zh-CN.mdx │ │ │ ├── google.mdx │ │ │ ├── google.zh-CN.mdx │ │ │ ├── keycloak.mdx │ │ │ ├── keycloak.zh-CN.mdx │ │ │ ├── logto.mdx │ │ │ ├── logto.zh-CN.mdx │ │ │ ├── microsoft.mdx │ │ │ ├── microsoft.zh-CN.mdx │ │ │ ├── okta.mdx │ │ │ ├── okta.zh-CN.mdx │ │ │ ├── password.mdx │ │ │ ├── password.zh-CN.mdx │ │ │ ├── wechat.mdx │ │ │ ├── wechat.zh-CN.mdx │ │ │ ├── zitadel.mdx │ │ │ └── zitadel.zh-CN.mdx │ │ ├── auth.mdx │ │ ├── auth.zh-CN.mdx │ │ ├── environment-variables/ │ │ │ ├── analytics.mdx │ │ │ ├── analytics.zh-CN.mdx │ │ │ ├── auth.mdx │ │ │ ├── auth.zh-CN.mdx │ │ │ ├── basic.mdx │ │ │ ├── basic.zh-CN.mdx │ │ │ ├── model-provider.mdx │ │ │ ├── model-provider.zh-CN.mdx │ │ │ ├── redis.mdx │ │ │ ├── redis.zh-CN.mdx │ │ │ ├── s3.mdx │ │ │ └── s3.zh-CN.mdx │ │ ├── environment-variables.mdx │ │ ├── environment-variables.zh-CN.mdx │ │ ├── examples/ │ │ │ ├── azure-openai.mdx │ │ │ ├── azure-openai.zh-CN.mdx │ │ │ ├── ollama.mdx │ │ │ └── ollama.zh-CN.mdx │ │ ├── faq/ │ │ │ ├── no-v1-suffix.mdx │ │ │ ├── no-v1-suffix.zh-CN.mdx │ │ │ ├── proxy-with-unable-to-verify-leaf-signature.mdx │ │ │ ├── proxy-with-unable-to-verify-leaf-signature.zh-CN.mdx │ │ │ ├── vercel-ai-image-timeout.mdx │ │ │ └── vercel-ai-image-timeout.zh-CN.mdx │ │ ├── migration/ │ │ │ └── v2/ │ │ │ ├── auth/ │ │ │ │ ├── clerk-to-betterauth.mdx │ │ │ │ ├── clerk-to-betterauth.zh-CN.mdx │ │ │ │ ├── migration-internals.mdx │ │ │ │ ├── migration-internals.zh-CN.mdx │ │ │ │ ├── nextauth-to-betterauth.mdx │ │ │ │ └── nextauth-to-betterauth.zh-CN.mdx │ │ │ ├── breaking-changes.mdx │ │ │ └── breaking-changes.zh-CN.mdx │ │ ├── platform/ │ │ │ ├── docker-compose.mdx │ │ │ ├── docker-compose.zh-CN.mdx │ │ │ ├── docker.mdx │ │ │ ├── docker.zh-CN.mdx │ │ │ ├── dokploy.mdx │ │ │ ├── dokploy.zh-CN.mdx │ │ │ ├── repocloud.mdx │ │ │ ├── repocloud.zh-CN.mdx │ │ │ ├── sealos.mdx │ │ │ ├── sealos.zh-CN.mdx │ │ │ ├── vercel.mdx │ │ │ ├── vercel.zh-CN.mdx │ │ │ ├── zeabur.mdx │ │ │ └── zeabur.zh-CN.mdx │ │ ├── start.mdx │ │ └── start.zh-CN.mdx │ ├── usage/ │ │ ├── agent/ │ │ │ ├── agent-team.mdx │ │ │ ├── agent-team.zh-CN.mdx │ │ │ ├── artifacts.mdx │ │ │ ├── artifacts.zh-CN.mdx │ │ │ ├── chain-of-thought.mdx │ │ │ ├── chain-of-thought.zh-CN.mdx │ │ │ ├── gtd.mdx │ │ │ ├── gtd.zh-CN.mdx │ │ │ ├── notebook.mdx │ │ │ ├── notebook.zh-CN.mdx │ │ │ ├── sandbox.mdx │ │ │ ├── sandbox.zh-CN.mdx │ │ │ ├── scheduled-task.mdx │ │ │ ├── scheduled-task.zh-CN.mdx │ │ │ ├── share.mdx │ │ │ ├── share.zh-CN.mdx │ │ │ ├── topic.mdx │ │ │ ├── topic.zh-CN.mdx │ │ │ ├── translate.mdx │ │ │ ├── translate.zh-CN.mdx │ │ │ ├── tts-stt.mdx │ │ │ ├── tts-stt.zh-CN.mdx │ │ │ ├── web-search.mdx │ │ │ └── web-search.zh-CN.mdx │ │ ├── channels/ │ │ │ ├── discord.mdx │ │ │ ├── discord.zh-CN.mdx │ │ │ ├── feishu.mdx │ │ │ ├── feishu.zh-CN.mdx │ │ │ ├── lark.mdx │ │ │ ├── lark.zh-CN.mdx │ │ │ ├── overview.mdx │ │ │ ├── overview.zh-CN.mdx │ │ │ ├── qq.mdx │ │ │ ├── qq.zh-CN.mdx │ │ │ ├── slack.mdx │ │ │ ├── slack.zh-CN.mdx │ │ │ ├── telegram.mdx │ │ │ ├── telegram.zh-CN.mdx │ │ │ ├── wechat.mdx │ │ │ └── wechat.zh-CN.mdx │ │ ├── community/ │ │ │ ├── agent-market.mdx │ │ │ ├── agent-market.zh-CN.mdx │ │ │ ├── become-a-creator.mdx │ │ │ ├── become-a-creator.zh-CN.mdx │ │ │ ├── custom-mcp.mdx │ │ │ ├── custom-mcp.zh-CN.mdx │ │ │ ├── mcp-market.mdx │ │ │ ├── mcp-market.zh-CN.mdx │ │ │ ├── publish-agent.mdx │ │ │ ├── publish-agent.zh-CN.mdx │ │ │ ├── skill-management.mdx │ │ │ ├── skill-management.zh-CN.mdx │ │ │ └── skills-and-tools.mdx │ │ ├── getting-started/ │ │ │ ├── agent.mdx │ │ │ ├── agent.zh-CN.mdx │ │ │ ├── chat.mdx │ │ │ ├── file-upload.mdx │ │ │ ├── get-lobehub.mdx │ │ │ ├── get-lobehub.zh-CN.mdx │ │ │ ├── image-generation.mdx │ │ │ ├── image-generation.zh-CN.mdx │ │ │ ├── lobe-ai.mdx │ │ │ ├── lobe-ai.zh-CN.mdx │ │ │ ├── memory.mdx │ │ │ ├── memory.zh-CN.mdx │ │ │ ├── page.mdx │ │ │ ├── page.zh-CN.mdx │ │ │ ├── resource.mdx │ │ │ ├── resource.zh-CN.mdx │ │ │ ├── vision.mdx │ │ │ └── vision.zh-CN.mdx │ │ ├── help.mdx │ │ ├── help.zh-CN.mdx │ │ ├── migrate-from-local-database.mdx │ │ ├── migrate-from-local-database.zh-CN.mdx │ │ ├── providers/ │ │ │ ├── ai21.mdx │ │ │ ├── ai21.zh-CN.mdx │ │ │ ├── ai302.mdx │ │ │ ├── ai302.zh-CN.mdx │ │ │ ├── ai360.mdx │ │ │ ├── ai360.zh-CN.mdx │ │ │ ├── aihubmix.mdx │ │ │ ├── aihubmix.zh-CN.mdx │ │ │ ├── anthropic.mdx │ │ │ ├── anthropic.zh-CN.mdx │ │ │ ├── azure.mdx │ │ │ ├── azure.zh-CN.mdx │ │ │ ├── azureai.mdx │ │ │ ├── azureai.zh-CN.mdx │ │ │ ├── baichuan.mdx │ │ │ ├── baichuan.zh-CN.mdx │ │ │ ├── bedrock.mdx │ │ │ ├── bedrock.zh-CN.mdx │ │ │ ├── bfl.mdx │ │ │ ├── bfl.zh-CN.mdx │ │ │ ├── cloudflare.mdx │ │ │ ├── cloudflare.zh-CN.mdx │ │ │ ├── comfyui.mdx │ │ │ ├── comfyui.zh-CN.mdx │ │ │ ├── deepseek.mdx │ │ │ ├── deepseek.zh-CN.mdx │ │ │ ├── fal.mdx │ │ │ ├── fal.zh-CN.mdx │ │ │ ├── fireworksai.mdx │ │ │ ├── fireworksai.zh-CN.mdx │ │ │ ├── giteeai.mdx │ │ │ ├── giteeai.zh-CN.mdx │ │ │ ├── github.mdx │ │ │ ├── github.zh-CN.mdx │ │ │ ├── google.mdx │ │ │ ├── google.zh-CN.mdx │ │ │ ├── groq.mdx │ │ │ ├── groq.zh-CN.mdx │ │ │ ├── hunyuan.mdx │ │ │ ├── hunyuan.zh-CN.mdx │ │ │ ├── infiniai.mdx │ │ │ ├── infiniai.zh-CN.mdx │ │ │ ├── internlm.mdx │ │ │ ├── internlm.zh-CN.mdx │ │ │ ├── jina.mdx │ │ │ ├── jina.zh-CN.mdx │ │ │ ├── lmstudio.mdx │ │ │ ├── lmstudio.zh-CN.mdx │ │ │ ├── minimax.mdx │ │ │ ├── minimax.zh-CN.mdx │ │ │ ├── mistral.mdx │ │ │ ├── mistral.zh-CN.mdx │ │ │ ├── modelscope.mdx │ │ │ ├── modelscope.zh-CN.mdx │ │ │ ├── moonshot.mdx │ │ │ ├── moonshot.zh-CN.mdx │ │ │ ├── novita.mdx │ │ │ ├── novita.zh-CN.mdx │ │ │ ├── nvidia.mdx │ │ │ ├── nvidia.zh-CN.mdx │ │ │ ├── ollama/ │ │ │ │ ├── gemma.mdx │ │ │ │ ├── gemma.zh-CN.mdx │ │ │ │ ├── qwen.mdx │ │ │ │ └── qwen.zh-CN.mdx │ │ │ ├── ollama.mdx │ │ │ ├── ollama.zh-CN.mdx │ │ │ ├── openai.mdx │ │ │ ├── openai.zh-CN.mdx │ │ │ ├── openrouter.mdx │ │ │ ├── openrouter.zh-CN.mdx │ │ │ ├── perplexity.mdx │ │ │ ├── perplexity.zh-CN.mdx │ │ │ ├── ppio.mdx │ │ │ ├── ppio.zh-CN.mdx │ │ │ ├── qiniu.mdx │ │ │ ├── qiniu.zh-CN.mdx │ │ │ ├── qwen.mdx │ │ │ ├── qwen.zh-CN.mdx │ │ │ ├── sambanova.mdx │ │ │ ├── sambanova.zh-CN.mdx │ │ │ ├── sensenova.mdx │ │ │ ├── sensenova.zh-CN.mdx │ │ │ ├── siliconcloud.mdx │ │ │ ├── siliconcloud.zh-CN.mdx │ │ │ ├── spark.mdx │ │ │ ├── spark.zh-CN.mdx │ │ │ ├── stepfun.mdx │ │ │ ├── stepfun.zh-CN.mdx │ │ │ ├── taichu.mdx │ │ │ ├── taichu.zh-CN.mdx │ │ │ ├── tencentcloud.mdx │ │ │ ├── tencentcloud.zh-CN.mdx │ │ │ ├── togetherai.mdx │ │ │ ├── togetherai.zh-CN.mdx │ │ │ ├── upstage.mdx │ │ │ ├── upstage.zh-CN.mdx │ │ │ ├── vercel-ai-gateway.mdx │ │ │ ├── vercel-ai-gateway.zh-CN.mdx │ │ │ ├── vertexai.mdx │ │ │ ├── vertexai.zh-CN.mdx │ │ │ ├── vllm.mdx │ │ │ ├── vllm.zh-CN.mdx │ │ │ ├── volcengine.mdx │ │ │ ├── volcengine.zh-CN.mdx │ │ │ ├── wenxin.mdx │ │ │ ├── wenxin.zh-CN.mdx │ │ │ ├── xai.mdx │ │ │ ├── xai.zh-CN.mdx │ │ │ ├── zeroone.mdx │ │ │ ├── zeroone.zh-CN.mdx │ │ │ ├── zhipu.mdx │ │ │ └── zhipu.zh-CN.mdx │ │ ├── providers.mdx │ │ ├── providers.zh-CN.mdx │ │ ├── start.mdx │ │ ├── start.zh-CN.mdx │ │ └── user-interface/ │ │ ├── appearance.mdx │ │ ├── appearance.zh-CN.mdx │ │ ├── command-menu.mdx │ │ ├── command-menu.zh-CN.mdx │ │ ├── shortcuts.mdx │ │ ├── shortcuts.zh-CN.mdx │ │ ├── stats.mdx │ │ └── stats.zh-CN.mdx │ └── wiki/ │ ├── HOME.md │ └── HOME.zh-CN.md ├── drizzle.config.ts ├── e2e/ │ ├── .gitignore │ ├── CLAUDE.md │ ├── README.md │ ├── cucumber.config.js │ ├── docs/ │ │ ├── llm-mock.md │ │ ├── local-setup.md │ │ └── testing-tips.md │ ├── package.json │ ├── scripts/ │ │ └── setup.ts │ ├── src/ │ │ ├── features/ │ │ │ ├── community/ │ │ │ │ ├── detail-pages.feature │ │ │ │ ├── interactions.feature │ │ │ │ └── smoke.feature │ │ │ ├── home/ │ │ │ │ ├── sidebarAgent.feature │ │ │ │ ├── sidebarGroup.feature │ │ │ │ └── starter.feature │ │ │ ├── journeys/ │ │ │ │ └── agent/ │ │ │ │ ├── agent-conversation-mgmt.feature │ │ │ │ ├── agent-conversation.feature │ │ │ │ └── agent-message-ops.feature │ │ │ ├── page/ │ │ │ │ ├── README.md │ │ │ │ ├── crud.feature │ │ │ │ ├── editor-content.feature │ │ │ │ └── editor-meta.feature │ │ │ └── routes/ │ │ │ └── core-routes.feature │ │ ├── mocks/ │ │ │ ├── community/ │ │ │ │ ├── data.ts │ │ │ │ ├── handlers.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ └── llm/ │ │ │ └── index.ts │ │ ├── steps/ │ │ │ ├── agent/ │ │ │ │ ├── conversation-mgmt.steps.ts │ │ │ │ ├── conversation.steps.ts │ │ │ │ └── message-ops.steps.ts │ │ │ ├── common/ │ │ │ │ ├── auth.steps.ts │ │ │ │ └── navigation.steps.ts │ │ │ ├── community/ │ │ │ │ ├── detail-pages.steps.ts │ │ │ │ ├── interactions.steps.ts │ │ │ │ └── smoke.steps.ts │ │ │ ├── home/ │ │ │ │ ├── sidebarAgent.steps.ts │ │ │ │ ├── sidebarGroup.steps.ts │ │ │ │ └── starter.steps.ts │ │ │ ├── hooks.ts │ │ │ ├── page/ │ │ │ │ ├── editor-content.steps.ts │ │ │ │ ├── editor-meta.steps.ts │ │ │ │ └── page-crud.steps.ts │ │ │ └── routes/ │ │ │ └── routes.steps.ts │ │ └── support/ │ │ ├── seedTestUser.ts │ │ ├── webServer.ts │ │ └── world.ts │ └── tsconfig.json ├── eslint.config.mjs ├── index.html ├── index.mobile.html ├── knip.ts ├── locales/ │ ├── ar/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── bg-BG/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── de-DE/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── en-US/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── es-ES/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── fa-IR/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── fr-FR/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── it-IT/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── ja-JP/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── ko-KR/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── nl-NL/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── pl-PL/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── pt-BR/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── ru-RU/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── tr-TR/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── vi-VN/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ ├── zh-CN/ │ │ ├── agent.json │ │ ├── agentGroup.json │ │ ├── auth.json │ │ ├── authError.json │ │ ├── changelog.json │ │ ├── chat.json │ │ ├── color.json │ │ ├── common.json │ │ ├── components.json │ │ ├── desktop-onboarding.json │ │ ├── discover.json │ │ ├── editor.json │ │ ├── electron.json │ │ ├── error.json │ │ ├── eval.json │ │ ├── file.json │ │ ├── home.json │ │ ├── hotkey.json │ │ ├── image.json │ │ ├── knowledgeBase.json │ │ ├── labs.json │ │ ├── marketAuth.json │ │ ├── memory.json │ │ ├── metadata.json │ │ ├── migration.json │ │ ├── modelProvider.json │ │ ├── models.json │ │ ├── notification.json │ │ ├── oauth.json │ │ ├── onboarding.json │ │ ├── plugin.json │ │ ├── portal.json │ │ ├── providers.json │ │ ├── ragEval.json │ │ ├── setting.json │ │ ├── spend.json │ │ ├── subscription.json │ │ ├── suggestQuestions.json │ │ ├── thread.json │ │ ├── tool.json │ │ ├── topic.json │ │ ├── ui.json │ │ ├── video.json │ │ └── welcome.json │ └── zh-TW/ │ ├── agent.json │ ├── agentGroup.json │ ├── auth.json │ ├── authError.json │ ├── changelog.json │ ├── chat.json │ ├── color.json │ ├── common.json │ ├── components.json │ ├── desktop-onboarding.json │ ├── discover.json │ ├── editor.json │ ├── electron.json │ ├── error.json │ ├── eval.json │ ├── file.json │ ├── home.json │ ├── hotkey.json │ ├── image.json │ ├── knowledgeBase.json │ ├── labs.json │ ├── marketAuth.json │ ├── memory.json │ ├── metadata.json │ ├── migration.json │ ├── modelProvider.json │ ├── models.json │ ├── notification.json │ ├── oauth.json │ ├── onboarding.json │ ├── plugin.json │ ├── portal.json │ ├── providers.json │ ├── ragEval.json │ ├── setting.json │ ├── spend.json │ ├── subscription.json │ ├── suggestQuestions.json │ ├── thread.json │ ├── tool.json │ ├── topic.json │ ├── ui.json │ ├── video.json │ └── welcome.json ├── netlify.toml ├── next.config.ts ├── package.json ├── packages/ │ ├── agent-manager-runtime/ │ │ ├── package.json │ │ └── src/ │ │ ├── AgentManagerRuntime.ts │ │ ├── __tests__/ │ │ │ └── AgentManagerRuntime.test.ts │ │ ├── index.ts │ │ └── types.ts │ ├── agent-runtime/ │ │ ├── examples/ │ │ │ └── tools-calling.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agents/ │ │ │ │ ├── GeneralChatAgent.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── GeneralChatAgent.test.ts │ │ │ │ └── index.ts │ │ │ ├── audit/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── createSecurityBlacklistAudit.test.ts │ │ │ │ ├── createSecurityBlacklistAudit.ts │ │ │ │ ├── defaultSecurityBlacklist.ts │ │ │ │ ├── globalAudit.ts │ │ │ │ └── index.ts │ │ │ ├── core/ │ │ │ │ ├── InterventionChecker.ts │ │ │ │ ├── UsageCounter.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── InterventionChecker.test.ts │ │ │ │ │ ├── UsageCounter.test.ts │ │ │ │ │ └── runtime.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── runtime.ts │ │ │ ├── groupOrchestration/ │ │ │ │ ├── GroupOrchestrationRuntime.ts │ │ │ │ ├── GroupOrchestrationSupervisor.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── GroupOrchestrationSupervisor.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── types/ │ │ │ │ ├── event.ts │ │ │ │ ├── generalAgent.ts │ │ │ │ ├── index.ts │ │ │ │ ├── instruction.ts │ │ │ │ ├── runtime.ts │ │ │ │ ├── state.ts │ │ │ │ └── usage.ts │ │ │ └── utils/ │ │ │ ├── index.ts │ │ │ ├── messageSelectors.test.ts │ │ │ ├── messageSelectors.ts │ │ │ ├── stepContextComputer.test.ts │ │ │ ├── stepContextComputer.ts │ │ │ ├── tokenCounter.test.ts │ │ │ └── tokenCounter.ts │ │ └── vitest.config.mts │ ├── agent-templates/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.ts │ │ ├── template.ts │ │ ├── templates/ │ │ │ ├── claw/ │ │ │ │ ├── AGENTS.md │ │ │ │ ├── BOOTSTRAP.md │ │ │ │ ├── IDENTITY.md │ │ │ │ ├── SOUL.md │ │ │ │ ├── agent.ts │ │ │ │ ├── bootstrap.ts │ │ │ │ ├── identity.ts │ │ │ │ ├── index.ts │ │ │ │ ├── raw.d.ts │ │ │ │ └── soul.ts │ │ │ └── index.ts │ │ └── types.ts │ ├── agent-tracing/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cli/ │ │ │ │ ├── index.ts │ │ │ │ ├── inspect.ts │ │ │ │ ├── list.ts │ │ │ │ └── partial.ts │ │ │ ├── index.ts │ │ │ ├── recorder/ │ │ │ │ └── index.ts │ │ │ ├── store/ │ │ │ │ ├── file-store.ts │ │ │ │ └── types.ts │ │ │ ├── types.ts │ │ │ ├── utils/ │ │ │ │ ├── reconstruct.test.ts │ │ │ │ └── reconstruct.ts │ │ │ └── viewer/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── builtin-agent-onboarding/ │ │ ├── package.json │ │ └── src/ │ │ ├── client/ │ │ │ ├── QuestionRenderer.tsx │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── systemRole.ts │ │ └── toolSystemRole.ts │ ├── builtin-agents/ │ │ ├── package.json │ │ └── src/ │ │ ├── agents/ │ │ │ ├── agent-builder/ │ │ │ │ ├── index.ts │ │ │ │ └── systemRole.ts │ │ │ ├── group-agent-builder/ │ │ │ │ ├── index.ts │ │ │ │ └── systemRole.ts │ │ │ ├── group-supervisor/ │ │ │ │ ├── index.ts │ │ │ │ ├── systemRole.ts │ │ │ │ └── type.ts │ │ │ ├── inbox/ │ │ │ │ ├── index.ts │ │ │ │ └── systemRole.ts │ │ │ ├── page-agent/ │ │ │ │ ├── README.md │ │ │ │ ├── index.ts │ │ │ │ └── systemRole.ts │ │ │ └── web-onboarding/ │ │ │ └── index.ts │ │ ├── index.ts │ │ └── types.ts │ ├── builtin-skills/ │ │ ├── package.json │ │ └── src/ │ │ ├── agent-browser/ │ │ │ ├── content.ts │ │ │ └── index.ts │ │ ├── artifacts/ │ │ │ ├── content.ts │ │ │ └── index.ts │ │ ├── find-skills/ │ │ │ ├── content.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── lobehub/ │ │ │ ├── content.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ └── references/ │ │ │ ├── agent.ts │ │ │ ├── bot.ts │ │ │ ├── config.ts │ │ │ ├── doc.ts │ │ │ ├── eval.ts │ │ │ ├── file.ts │ │ │ ├── generate.ts │ │ │ ├── kb.ts │ │ │ ├── memory.ts │ │ │ ├── message.ts │ │ │ ├── model.ts │ │ │ ├── plugin.ts │ │ │ ├── provider.ts │ │ │ ├── search.ts │ │ │ ├── skill.ts │ │ │ └── topic.ts │ │ ├── raw.d.ts │ │ └── task/ │ │ ├── SKILL.md │ │ ├── index.ts │ │ └── references/ │ │ └── commands.md │ ├── builtin-tool-activator/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── ActivateSkill/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ActivateTools/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── ActivateSkill/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-agent-builder/ │ │ ├── package.json │ │ └── src/ │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── GetAvailableModels/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── InstallPlugin/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchMarketTools/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateConfig/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdatePrompt/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Intervention/ │ │ │ │ ├── InstallPlugin.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── GetAvailableModels.tsx │ │ │ │ ├── InstallPlugin.tsx │ │ │ │ ├── SearchMarketTools.tsx │ │ │ │ ├── UpdateConfig.tsx │ │ │ │ ├── UpdatePrompt.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── ConfigCard.tsx │ │ │ │ │ └── ConfigDiffView.tsx │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ ├── UpdatePrompt/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-agent-documents/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── AgentDocumentsInspector/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-agent-management/ │ │ ├── package.json │ │ └── src/ │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── CallAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreateAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── CallAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreateAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ ├── CreateAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-brief/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-calculator/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ExecutionRuntime/ │ │ │ │ └── index.ts │ │ │ ├── calculate.test.ts │ │ │ ├── client/ │ │ │ │ └── index.ts │ │ │ ├── executor/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── manifest.ts │ │ │ ├── systemRole.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── builtin-tool-cloud-sandbox/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── EditLocalFile/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteCode/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── GlobLocalFiles/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── GrepContent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ListLocalFiles/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ReadLocalFile/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── RunCommand/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchLocalFiles/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── WriteLocalFile/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Intervention/ │ │ │ │ ├── EditLocalFile/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteCode/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── MoveLocalFiles/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── RunCommand/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── WriteFile/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── EditLocalFile/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteCode/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExportFile/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ListFiles/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── MoveLocalFiles/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ReadLocalFile/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── RunCommand/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchFiles/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── WriteFile/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ ├── ExecuteCode/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── components/ │ │ │ │ └── FilePathDisplay.tsx │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types/ │ │ ├── api.ts │ │ ├── index.ts │ │ ├── params.ts │ │ ├── service.ts │ │ └── state.ts │ ├── builtin-tool-creds/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── helpers.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-group-agent-builder/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── BatchCreateAgents/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreateAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreateGroup/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── GetAgentInfo/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── InviteAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── RemoveAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchAgent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateAgentPrompt/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateGroup/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateGroupPrompt/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── BatchCreateAgents.tsx │ │ │ │ ├── UpdateAgentPrompt/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateGroupPrompt/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ ├── BatchCreateAgents/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateAgentPrompt/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateGroupPrompt/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-group-management/ │ │ ├── package.json │ │ └── src/ │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── Broadcast/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteAgentTask/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteAgentTasks/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Speak/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Intervention/ │ │ │ │ ├── ExecuteTask.tsx │ │ │ │ ├── ExecuteTasks.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── Broadcast/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteTask/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteTasks/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Speak/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ ├── Broadcast/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteTask/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecuteTasks/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Speak/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── const.ts │ │ ├── executor.test.ts │ │ ├── executor.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-gtd/ │ │ ├── package.json │ │ └── src/ │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── ClearTodos/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreatePlan/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CreateTodos/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecTask/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecTasks/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdatePlan/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateTodos/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Intervention/ │ │ │ │ ├── AddTodo.tsx │ │ │ │ ├── ClearTodos.tsx │ │ │ │ ├── CreatePlan.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── CreatePlan/ │ │ │ │ │ ├── PlanCard.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecTask/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecTasks/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── TodoList/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ ├── CreatePlan/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecTask/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ExecTasks/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── components/ │ │ │ │ ├── SortableTodoList/ │ │ │ │ │ ├── AddItemRow.tsx │ │ │ │ │ ├── SortableItem.tsx │ │ │ │ │ ├── TodoItemRow.tsx │ │ │ │ │ ├── TodoList.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── store/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── store.test.ts │ │ │ │ │ └── types.ts │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── const.ts │ │ ├── executor/ │ │ │ ├── helper.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-knowledge-base/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── ReadKnowledge/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchKnowledgeBase/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── ReadKnowledge/ │ │ │ │ │ ├── FileCard.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchKnowledgeBase/ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-local-system/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ └── interventionAudit.test.ts │ │ │ ├── client/ │ │ │ │ ├── Inspector/ │ │ │ │ │ ├── EditLocalFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GlobLocalFiles/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GrepContent/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ListLocalFiles/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ReadLocalFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RenameLocalFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RunCommand/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SearchLocalFiles/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WriteLocalFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Intervention/ │ │ │ │ │ ├── EditLocalFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GlobLocalFiles/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GrepContent/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ListLocalFiles/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── MoveLocalFiles/ │ │ │ │ │ │ ├── MoveFileItem.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── OutOfScopeWarning.tsx │ │ │ │ │ ├── ReadLocalFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RenameLocalFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RunCommand/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SearchLocalFiles/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WriteFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Placeholder/ │ │ │ │ │ ├── ListFiles.tsx │ │ │ │ │ └── SearchFiles.tsx │ │ │ │ ├── Render/ │ │ │ │ │ ├── EditLocalFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ListFiles/ │ │ │ │ │ │ ├── Result.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── MoveLocalFiles/ │ │ │ │ │ │ ├── MoveFileItem.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ReadLocalFile/ │ │ │ │ │ │ ├── ReadFileSkeleton.tsx │ │ │ │ │ │ ├── ReadFileView.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RunCommand/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SearchFiles/ │ │ │ │ │ │ ├── Result.tsx │ │ │ │ │ │ ├── SearchQuery/ │ │ │ │ │ │ │ ├── SearchView.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WriteFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Streaming/ │ │ │ │ │ ├── RunCommand/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WriteFile/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── FileItem.tsx │ │ │ │ │ ├── FilePathDisplay.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── executor/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── interventionAudit.ts │ │ │ ├── manifest.ts │ │ │ ├── systemRole.desktop.ts │ │ │ ├── systemRole.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── __tests__/ │ │ │ │ └── path.test.ts │ │ │ └── path.ts │ │ └── vitest.config.mts │ ├── builtin-tool-memory/ │ │ ├── package.json │ │ ├── promptfoo/ │ │ │ ├── evals/ │ │ │ │ └── preferences/ │ │ │ │ └── tool-call/ │ │ │ │ └── basic/ │ │ │ │ ├── buildMessages.ts │ │ │ │ ├── eval.yaml │ │ │ │ ├── prompt.ts │ │ │ │ └── tests/ │ │ │ │ └── cases.ts │ │ │ └── tool-calls/ │ │ │ ├── memory-addContextMemory.json │ │ │ ├── memory-addExperienceMemory.json │ │ │ ├── memory-addIdentityMemory.json │ │ │ ├── memory-addPreferenceMemory.json │ │ │ ├── memory-removeIdentityMemory.json │ │ │ ├── memory-searchUserMemory.json │ │ │ └── memory-updateIdentityMemory.json │ │ ├── promptfooconfig.yaml │ │ ├── scripts/ │ │ │ └── generate-tool-call.ts │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── AddContextMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── AddExperienceMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── AddIdentityMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── AddPreferenceMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── RemoveIdentityMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchUserMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateIdentityMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Intervention/ │ │ │ │ ├── AddExperienceMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── AddExperienceMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── AddPreferenceMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchUserMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ ├── AddExperienceMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── AddPreferenceMemory/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── components/ │ │ │ │ ├── ExperienceMemoryCard.tsx │ │ │ │ ├── PreferenceMemoryCard.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-message/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ └── index.ts │ │ │ ├── Intervention/ │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-notebook/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── CreateDocument/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Intervention/ │ │ │ │ └── index.ts │ │ │ ├── Placeholder/ │ │ │ │ ├── CreateDocument.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── CreateDocument/ │ │ │ │ │ ├── DocumentCard.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Streaming/ │ │ │ │ ├── CreateDocument/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── components/ │ │ │ │ └── AnimatedNumber.tsx │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-page-agent/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── client/ │ │ │ │ ├── Inspector/ │ │ │ │ │ ├── EditTitle/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GetPageContent/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── InitPage/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ModifyNodes/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ReplaceText/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Placeholder/ │ │ │ │ │ └── index.ts │ │ │ │ ├── Render/ │ │ │ │ │ └── index.ts │ │ │ │ ├── Streaming/ │ │ │ │ │ └── index.ts │ │ │ │ ├── components/ │ │ │ │ │ └── AnimatedNumber.tsx │ │ │ │ └── index.ts │ │ │ ├── executor/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── manifest.ts │ │ │ ├── systemRole.ts │ │ │ └── types.ts │ │ └── vitest.config.mts │ ├── builtin-tool-remote-device/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-skill-store/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── ImportFromMarket/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ImportSkill/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchSkill/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Render/ │ │ │ │ ├── ImportSkill/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchSkill/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── executor/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-skills/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ExecutionRuntime/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── client/ │ │ │ │ ├── Inspector/ │ │ │ │ │ ├── ExecScript/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ReadReference/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RunCommand/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RunSkill/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Render/ │ │ │ │ │ ├── ExecScript/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ReadReference/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RunCommand/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RunSkill/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── executor/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── manifest.base.ts │ │ │ ├── manifest.desktop.ts │ │ │ ├── manifest.ts │ │ │ ├── systemRole.desktop.ts │ │ │ ├── systemRole.ts │ │ │ └── types.ts │ │ └── vitest.config.mts │ ├── builtin-tool-task/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-topic-reference/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── executor/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── manifest.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── builtin-tool-user-interaction/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ExecutionRuntime/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── client/ │ │ │ │ ├── Intervention/ │ │ │ │ │ ├── AskUserQuestion/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── executor/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── manifest.ts │ │ │ ├── systemRole.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── vitest.config.mts │ ├── builtin-tool-web-browsing/ │ │ ├── package.json │ │ └── src/ │ │ ├── ExecutionRuntime/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── client/ │ │ │ ├── Inspector/ │ │ │ │ ├── CrawlMultiPages/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── CrawlSinglePage/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Search/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Placeholder/ │ │ │ │ ├── CrawlMultiPages.tsx │ │ │ │ ├── CrawlSinglePage.tsx │ │ │ │ ├── Search.tsx │ │ │ │ └── index.ts │ │ │ ├── Portal/ │ │ │ │ ├── PageContent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── PageContents/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Search/ │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ ├── ResultList/ │ │ │ │ │ │ ├── SearchItem/ │ │ │ │ │ │ │ ├── CategoryAvatar.tsx │ │ │ │ │ │ │ ├── TitleExtra.tsx │ │ │ │ │ │ │ ├── Video.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Render/ │ │ │ │ ├── CrawlMultiPages.tsx │ │ │ │ ├── CrawlSinglePage.tsx │ │ │ │ ├── PageContent/ │ │ │ │ │ ├── Loading.tsx │ │ │ │ │ ├── Result.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Search/ │ │ │ │ │ ├── ConfigForm/ │ │ │ │ │ │ ├── Form.tsx │ │ │ │ │ │ ├── SearchXNGIcon.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.tsx │ │ │ │ │ ├── SearchQuery/ │ │ │ │ │ │ ├── SearchView.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SearchResult/ │ │ │ │ │ │ ├── SearchResultItem.tsx │ │ │ │ │ │ ├── ShowMore.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── components/ │ │ │ │ ├── CategoryAvatar.tsx │ │ │ │ ├── EngineAvatar.tsx │ │ │ │ ├── SearchBar.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── const.ts │ │ ├── index.ts │ │ ├── manifest.ts │ │ ├── systemRole.ts │ │ └── types.ts │ ├── builtin-tool-web-onboarding/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.ts │ │ ├── manifest.ts │ │ └── types.ts │ ├── builtin-tools/ │ │ ├── package.json │ │ └── src/ │ │ ├── dynamicInterventionAudits.ts │ │ ├── identifiers.ts │ │ ├── index.ts │ │ ├── inspectors.ts │ │ ├── interventions.ts │ │ ├── placeholders.ts │ │ ├── portals.ts │ │ ├── renders.ts │ │ └── streamings.ts │ ├── business/ │ │ ├── config/ │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── index.ts │ │ │ ├── llm.ts │ │ │ └── server/ │ │ │ ├── edge-config.ts │ │ │ ├── index.ts │ │ │ └── route.ts │ │ ├── const/ │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── bedrock-model-mapping.ts │ │ │ ├── branding.ts │ │ │ ├── index.ts │ │ │ ├── llm.ts │ │ │ └── url.ts │ │ └── model-runtime/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.ts │ │ └── router-runtime-options.ts │ ├── chat-adapter-feishu/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapter.ts │ │ │ ├── api.ts │ │ │ ├── crypto.ts │ │ │ ├── format-converter.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── tsup.config.ts │ ├── chat-adapter-qq/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapter.ts │ │ │ ├── api.ts │ │ │ ├── crypto.ts │ │ │ ├── format-converter.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── tsup.config.ts │ ├── chat-adapter-wechat/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapter.test.ts │ │ │ ├── adapter.ts │ │ │ ├── api.test.ts │ │ │ ├── api.ts │ │ │ ├── format-converter.test.ts │ │ │ ├── format-converter.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vitest.config.mts │ ├── config/ │ │ ├── package.json │ │ └── src/ │ │ └── index.ts │ ├── const/ │ │ ├── package.json │ │ └── src/ │ │ ├── analytics.ts │ │ ├── bot.ts │ │ ├── cacheControl.ts │ │ ├── currency.ts │ │ ├── desktop.ts │ │ ├── discover.ts │ │ ├── editor.ts │ │ ├── fetch.ts │ │ ├── file.ts │ │ ├── hotkeys.ts │ │ ├── index.ts │ │ ├── klavis.ts │ │ ├── layoutTokens.test.ts │ │ ├── layoutTokens.ts │ │ ├── lobehubSkill.ts │ │ ├── message.ts │ │ ├── meta.ts │ │ ├── plugin.test.ts │ │ ├── plugin.ts │ │ ├── protocol.ts │ │ ├── rbac.ts │ │ ├── recommendedSkill.ts │ │ ├── session.ts │ │ ├── settings/ │ │ │ ├── agent.ts │ │ │ ├── common.ts │ │ │ ├── group.ts │ │ │ ├── hotkey.ts │ │ │ ├── image.ts │ │ │ ├── index.ts │ │ │ ├── knowledge.ts │ │ │ ├── llm.ts │ │ │ ├── memory.ts │ │ │ ├── notification.ts │ │ │ ├── systemAgent.ts │ │ │ ├── tool.ts │ │ │ └── tts.ts │ │ ├── theme.ts │ │ ├── trace.ts │ │ ├── url.ts │ │ ├── user.ts │ │ ├── userMemory.ts │ │ ├── utils/ │ │ │ ├── merge.test.ts │ │ │ └── merge.ts │ │ └── version.ts │ ├── context-engine/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── metadata.types.test.ts │ │ │ │ └── pipeline.test.ts │ │ │ ├── base/ │ │ │ │ ├── BaseEveryUserContentProvider.ts │ │ │ │ ├── BaseFirstUserContentProvider.ts │ │ │ │ ├── BaseLastUserContentProvider.ts │ │ │ │ ├── BaseProcessor.ts │ │ │ │ ├── BaseProvider.ts │ │ │ │ ├── BaseSystemRoleProvider.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── BaseEveryUserContentProvider.test.ts │ │ │ │ │ ├── BaseFirstUserContentProvider.test.ts │ │ │ │ │ ├── BaseLastUserContentProvider.test.ts │ │ │ │ │ ├── BaseProcessor.test.ts │ │ │ │ │ └── BaseProvider.test.ts │ │ │ │ └── constants.ts │ │ │ ├── engine/ │ │ │ │ ├── index.ts │ │ │ │ ├── messages/ │ │ │ │ │ ├── MessagesEngine.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── MessagesEngine.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── skills/ │ │ │ │ │ ├── SkillEngine.ts │ │ │ │ │ ├── SkillResolver.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── SkillEngine.test.ts │ │ │ │ │ │ └── SkillResolver.test.ts │ │ │ │ │ ├── buildStepSkillDelta.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── tools/ │ │ │ │ │ ├── ManifestLoader.ts │ │ │ │ │ ├── ToolArgumentsRepairer.ts │ │ │ │ │ ├── ToolNameResolver.ts │ │ │ │ │ ├── ToolResolver.ts │ │ │ │ │ ├── ToolsEngine.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── ManifestLoader.test.ts │ │ │ │ │ │ ├── ToolArgumentsRepairer.test.ts │ │ │ │ │ │ ├── ToolNameResolver.test.ts │ │ │ │ │ │ ├── ToolResolver.test.ts │ │ │ │ │ │ ├── ToolsEngine.test.ts │ │ │ │ │ │ ├── buildStepToolDelta.test.ts │ │ │ │ │ │ ├── enableCheckerFactory.test.ts │ │ │ │ │ │ └── utils.test.ts │ │ │ │ │ ├── buildStepToolDelta.ts │ │ │ │ │ ├── enableCheckerFactory.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── topicReference/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── resolveTopicReferences.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── resolveTopicReferences.ts │ │ │ ├── index.ts │ │ │ ├── pipeline.ts │ │ │ ├── processors/ │ │ │ │ ├── AgentCouncilFlatten.ts │ │ │ │ ├── CompressedGroupRoleTransform.ts │ │ │ │ ├── GroupMessageFlatten.ts │ │ │ │ ├── GroupOrchestrationFilter.ts │ │ │ │ ├── GroupRoleTransform.ts │ │ │ │ ├── HistoryTruncate.ts │ │ │ │ ├── InputTemplate.ts │ │ │ │ ├── MessageCleanup.ts │ │ │ │ ├── MessageContent.ts │ │ │ │ ├── PlaceholderVariables.ts │ │ │ │ ├── ReactionFeedback.ts │ │ │ │ ├── SupervisorRoleRestore.ts │ │ │ │ ├── TaskMessage.ts │ │ │ │ ├── TasksFlatten.ts │ │ │ │ ├── ToolCall.ts │ │ │ │ ├── ToolMessageReorder.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── AgentCouncilFlatten.test.ts │ │ │ │ │ ├── GroupMessageFlatten.test.ts │ │ │ │ │ ├── GroupOrchestrationFilter.test.ts │ │ │ │ │ ├── GroupRoleTransform.test.ts │ │ │ │ │ ├── HistoryTruncate.test.ts │ │ │ │ │ ├── InputTemplate.test.ts │ │ │ │ │ ├── MessageCleanup.test.ts │ │ │ │ │ ├── MessageContent.test.ts │ │ │ │ │ ├── PlaceholderVariables.test.ts │ │ │ │ │ ├── ReactionFeedback.test.ts │ │ │ │ │ ├── SupervisorRoleRestore.test.ts │ │ │ │ │ ├── TaskMessage.test.ts │ │ │ │ │ ├── TasksFlatten.test.ts │ │ │ │ │ ├── ToolCall.test.ts │ │ │ │ │ └── ToolMessageReorder.test.ts │ │ │ │ └── index.ts │ │ │ ├── providers/ │ │ │ │ ├── AgentBuilderContextInjector.ts │ │ │ │ ├── AgentDocumentInjector/ │ │ │ │ │ ├── BeforeSystemInjector.ts │ │ │ │ │ ├── ContextInjector.ts │ │ │ │ │ ├── MessageInjector.ts │ │ │ │ │ ├── SystemAppendInjector.ts │ │ │ │ │ ├── SystemReplaceInjector.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shared.ts │ │ │ │ ├── AgentManagementContextInjector.ts │ │ │ │ ├── BotPlatformContextInjector.ts │ │ │ │ ├── DiscordContextProvider.ts │ │ │ │ ├── EvalContextSystemInjector.ts │ │ │ │ ├── ForceFinishSummaryInjector.ts │ │ │ │ ├── GTDPlanInjector.ts │ │ │ │ ├── GTDTodoInjector.ts │ │ │ │ ├── GroupAgentBuilderContextInjector.ts │ │ │ │ ├── GroupContextInjector.ts │ │ │ │ ├── HistorySummary.ts │ │ │ │ ├── KnowledgeInjector.ts │ │ │ │ ├── PageEditorContextInjector.ts │ │ │ │ ├── PageSelectionsInjector.ts │ │ │ │ ├── SelectedSkillInjector.ts │ │ │ │ ├── SkillContextProvider.ts │ │ │ │ ├── SystemDateProvider.ts │ │ │ │ ├── SystemRoleInjector.ts │ │ │ │ ├── ToolDiscoveryProvider.ts │ │ │ │ ├── ToolSystemRole.ts │ │ │ │ ├── TopicReferenceContextInjector.ts │ │ │ │ ├── UserMemoryInjector.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── AgentDocumentInjector.test.ts │ │ │ │ │ ├── AgentManagementContextInjector.test.ts │ │ │ │ │ ├── DiscordContextProvider.test.ts │ │ │ │ │ ├── EvalContextSystemInjector.test.ts │ │ │ │ │ ├── GroupAgentBuilderContextInjector.test.ts │ │ │ │ │ ├── GroupContextInjector.test.ts │ │ │ │ │ ├── HistorySummaryProvider.test.ts │ │ │ │ │ ├── KnowledgeInjector.test.ts │ │ │ │ │ ├── PageEditorContextInjector.test.ts │ │ │ │ │ ├── PageSelectionsInjector.test.ts │ │ │ │ │ ├── SelectedSkillInjector.test.ts │ │ │ │ │ ├── SkillContextProvider.test.ts │ │ │ │ │ ├── SystemDateProvider.test.ts │ │ │ │ │ ├── SystemRoleInjector.test.ts │ │ │ │ │ ├── ToolSystemRoleProvider.test.ts │ │ │ │ │ ├── TopicReferenceContextInjector.test.ts │ │ │ │ │ ├── UserMemoryInjector.test.ts │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── GroupContextInjector.test.ts.snap │ │ │ │ │ ├── KnowledgeInjector.test.ts.snap │ │ │ │ │ ├── SkillContextProvider.test.ts.snap │ │ │ │ │ └── UserMemoryInjector.test.ts.snap │ │ │ │ └── index.ts │ │ │ └── types.ts │ │ └── vitest.config.mts │ ├── conversation-flow/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inputs/ │ │ │ │ │ │ ├── agentCouncil/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── simple.json │ │ │ │ │ │ │ └── with-supervisor-reply.json │ │ │ │ │ │ ├── agentGroup/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── speak-different-agent.json │ │ │ │ │ │ │ ├── supervisor-after-multi-tasks.json │ │ │ │ │ │ │ └── supervisor-content-only.json │ │ │ │ │ │ ├── assistant-chain-with-followup.json │ │ │ │ │ │ ├── assistantGroup/ │ │ │ │ │ │ │ ├── assistant-with-tools.json │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── tools-with-branches.json │ │ │ │ │ │ ├── branch/ │ │ │ │ │ │ │ ├── active-index-1.json │ │ │ │ │ │ │ ├── assistant-branch.json │ │ │ │ │ │ │ ├── assistant-group-branches.json │ │ │ │ │ │ │ ├── assistant-user-branch.json │ │ │ │ │ │ │ ├── conversation.json │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── multi-assistant-group.json │ │ │ │ │ │ │ └── nested.json │ │ │ │ │ │ ├── compare/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── simple.json │ │ │ │ │ │ │ └── with-tools.json │ │ │ │ │ │ ├── compression/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── mixed-groups.json │ │ │ │ │ │ │ ├── multiple-compressions.json │ │ │ │ │ │ │ ├── parallel-group.json │ │ │ │ │ │ │ └── simple-compression.json │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── linear-conversation.json │ │ │ │ │ │ └── tasks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── multi-tasks-with-summary.json │ │ │ │ │ │ ├── simple.json │ │ │ │ │ │ ├── single-task-with-tool-chain.json │ │ │ │ │ │ ├── with-assistant-group.json │ │ │ │ │ │ └── with-summary.json │ │ │ │ │ └── outputs/ │ │ │ │ │ ├── agentCouncil/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── simple.json │ │ │ │ │ │ └── with-supervisor-reply.json │ │ │ │ │ ├── agentGroup/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── speak-different-agent.json │ │ │ │ │ ├── assistant-chain-with-followup.json │ │ │ │ │ ├── assistantGroup/ │ │ │ │ │ │ ├── assistant-with-tools.json │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── tools-with-branches.json │ │ │ │ │ ├── branch/ │ │ │ │ │ │ ├── active-index-1.json │ │ │ │ │ │ ├── assistant-branch.json │ │ │ │ │ │ ├── assistant-group-branches.json │ │ │ │ │ │ ├── assistant-user-branch.json │ │ │ │ │ │ ├── conversation.json │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── multi-assistant-group.json │ │ │ │ │ │ └── nested.json │ │ │ │ │ ├── compare/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── simple.json │ │ │ │ │ │ └── with-tools.json │ │ │ │ │ ├── linear-conversation.json │ │ │ │ │ └── tasks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── simple.json │ │ │ │ │ ├── single-task-with-tool-chain.json │ │ │ │ │ └── with-summary.json │ │ │ │ ├── indexing.test.ts │ │ │ │ ├── parse.test.ts │ │ │ │ └── structuring.test.ts │ │ │ ├── index.ts │ │ │ ├── indexing.ts │ │ │ ├── parse.ts │ │ │ ├── structuring.ts │ │ │ ├── transformation/ │ │ │ │ ├── BranchResolver.ts │ │ │ │ ├── ContextTreeBuilder.ts │ │ │ │ ├── FlatListBuilder.ts │ │ │ │ ├── MessageCollector.ts │ │ │ │ ├── MessageTransformer.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── BranchResolver.test.ts │ │ │ │ │ ├── ContextTreeBuilder.test.ts │ │ │ │ │ ├── FlatListBuilder.test.ts │ │ │ │ │ ├── MessageCollector.test.ts │ │ │ │ │ └── MessageTransformer.test.ts │ │ │ │ └── index.ts │ │ │ └── types/ │ │ │ ├── contextTree.ts │ │ │ ├── flatMessageList.ts │ │ │ ├── index.ts │ │ │ └── shared.ts │ │ └── vitest.config.mts │ ├── database/ │ │ ├── migrations/ │ │ │ ├── 0000_init.sql │ │ │ ├── 0001_add_client_id.sql │ │ │ ├── 0002_amusing_puma.sql │ │ │ ├── 0003_naive_echo.sql │ │ │ ├── 0004_add_next_auth.sql │ │ │ ├── 0005_pgvector.sql │ │ │ ├── 0006_add_knowledge_base.sql │ │ │ ├── 0007_fix_embedding_table.sql │ │ │ ├── 0008_add_rag_evals.sql │ │ │ ├── 0009_remove_unused_user_tables.sql │ │ │ ├── 0010_add_accessed_at_and_clean_tables.sql │ │ │ ├── 0011_add_topic_history_summary.sql │ │ │ ├── 0012_add_thread.sql │ │ │ ├── 0013_add_ai_infra.sql │ │ │ ├── 0014_add_message_reasoning.sql │ │ │ ├── 0015_add_message_search_metadata.sql │ │ │ ├── 0016_add_message_index.sql │ │ │ ├── 0017_add_user_id_to_tables.sql │ │ │ ├── 0018_add_client_id_for_entities.sql │ │ │ ├── 0019_add_hotkey_user_settings.sql │ │ │ ├── 0020_add_oidc.sql │ │ │ ├── 0021_add_agent_opening_settings.sql │ │ │ ├── 0022_add_documents.sql │ │ │ ├── 0023_remove_param_and_doubao.sql │ │ │ ├── 0024_add_rbac_tables.sql │ │ │ ├── 0025_add_provider_config.sql │ │ │ ├── 0026_add_autovacuum_tuning.sql │ │ │ ├── 0027_ai_image.sql │ │ │ ├── 0028_oauth_handoffs.sql │ │ │ ├── 0029_add_apikey_manage.sql │ │ │ ├── 0030_add_group_chat.sql │ │ │ ├── 0031_add_agent_index.sql │ │ │ ├── 0032_improve_agents_field.sql │ │ │ ├── 0033_add_table_index.sql │ │ │ ├── 0034_fix_chat_group.sql │ │ │ ├── 0035_add_virtual.sql │ │ │ ├── 0036_add_group_messages.sql │ │ │ ├── 0037_add_user_memory.sql │ │ │ ├── 0038_add_image_user_settings.sql │ │ │ ├── 0039_add_editor_data.sql │ │ │ ├── 0040_improve_user_memory_field.sql │ │ │ ├── 0041_improve_index.sql │ │ │ ├── 0042_improve_agent_index.sql │ │ │ ├── 0043_add_ai_model_settings.sql │ │ │ ├── 0044_high_toxin.sql │ │ │ ├── 0045_add_tool_intervention.sql │ │ │ ├── 0046_add_parent_id.sql │ │ │ ├── 0047_add_slug_document.sql │ │ │ ├── 0048_add_editor_data.sql │ │ │ ├── 0049_better_auth.sql │ │ │ ├── 0050_thread_and_user_id.sql │ │ │ ├── 0051_add_market_into_user_settings.sql │ │ │ ├── 0052_topic_and_messages.sql │ │ │ ├── 0053_better_auth_admin.sql │ │ │ ├── 0054_better_auth_two_factor.sql │ │ │ ├── 0055_rename_phone_number_to_phone.sql │ │ │ ├── 0056_update_agent_slug_index.sql │ │ │ ├── 0057_add_topic_user_memory_extract_status.sql │ │ │ ├── 0058_add_source_into_user_plugins.sql │ │ │ ├── 0059_add_normalized_email_indexes.sql │ │ │ ├── 0060_add_user_last_active_at.sql │ │ │ ├── 0061_add_document_and_memory_index.sql │ │ │ ├── 0062_add_more_index.sql │ │ │ ├── 0063_add_columns_for_several_tables.sql │ │ │ ├── 0064_add_agents_session_group_id.sql │ │ │ ├── 0065_add_document_fields.sql │ │ │ ├── 0065_add_passkey.sql │ │ │ ├── 0066_add_document_fields.sql │ │ │ ├── 0067_add_agent_cron_tables.sql │ │ │ ├── 0068_update_group_data.sql │ │ │ ├── 0069_add_topic_shares_table.sql │ │ │ ├── 0070_add_user_memory_activities.sql │ │ │ ├── 0071_add_async_task_extend.sql │ │ │ ├── 0072_add_market_identifier_chat_group.sql │ │ │ ├── 0073_add_message_group_metadata.sql │ │ │ ├── 0074_add_fk_indexes_for_cascade_delete.sql │ │ │ ├── 0075_add_user_memory_persona.sql │ │ │ ├── 0076_add_message_group_index.sql │ │ │ ├── 0077_add_agent_skills.sql │ │ │ ├── 0078_added_id_nanoid_for_replacing_id.sql │ │ │ ├── 0079_update_id_nanoid_from_casted_id.sql │ │ │ ├── 0080_add_constraint_unique_not_null_to_id_nanoid.sql │ │ │ ├── 0081_switch_forgien_key_to_id_nanoid.sql │ │ │ ├── 0082_set_id_nanoid_as_primary.sql │ │ │ ├── 0083_remove_id_seq_identity_column.sql │ │ │ ├── 0084_rename_id_nanoid_to_id.sql │ │ │ ├── 0085_remove_id_unique_constraint.sql │ │ │ ├── 0086_video_generation_schema.sql │ │ │ ├── 0087_add_eval_benchmark.sql │ │ │ ├── 0088_fix_benchmark_add_bot_provider.sql │ │ │ ├── 0089_add_api_key_hash.sql │ │ │ ├── 0090_enable_pg_search.sql │ │ │ ├── 0091_topics_add_description.sql │ │ │ ├── 0092_add_agent_documents.sql │ │ │ ├── 0093_add_bm25_indexes_with_icu.sql │ │ │ ├── 0094_agent_bot_providers_add_settings.sql │ │ │ ├── 0095_add_agent_task_system.sql │ │ │ ├── 0096_add_notification_tables.sql │ │ │ ├── 0097_add_agent_onboarding.sql │ │ │ └── meta/ │ │ │ ├── 0000_snapshot.json │ │ │ ├── 0001_snapshot.json │ │ │ ├── 0002_snapshot.json │ │ │ ├── 0003_snapshot.json │ │ │ ├── 0004_snapshot.json │ │ │ ├── 0005_snapshot.json │ │ │ ├── 0006_snapshot.json │ │ │ ├── 0007_snapshot.json │ │ │ ├── 0008_snapshot.json │ │ │ ├── 0009_snapshot.json │ │ │ ├── 0010_snapshot.json │ │ │ ├── 0011_snapshot.json │ │ │ ├── 0012_snapshot.json │ │ │ ├── 0013_snapshot.json │ │ │ ├── 0014_snapshot.json │ │ │ ├── 0015_snapshot.json │ │ │ ├── 0016_snapshot.json │ │ │ ├── 0017_snapshot.json │ │ │ ├── 0018_snapshot.json │ │ │ ├── 0019_snapshot.json │ │ │ ├── 0020_snapshot.json │ │ │ ├── 0021_snapshot.json │ │ │ ├── 0022_snapshot.json │ │ │ ├── 0023_snapshot.json │ │ │ ├── 0024_snapshot.json │ │ │ ├── 0025_snapshot.json │ │ │ ├── 0026_snapshot.json │ │ │ ├── 0027_snapshot.json │ │ │ ├── 0028_snapshot.json │ │ │ ├── 0029_snapshot.json │ │ │ ├── 0030_snapshot.json │ │ │ ├── 0031_snapshot.json │ │ │ ├── 0032_snapshot.json │ │ │ ├── 0033_snapshot.json │ │ │ ├── 0034_snapshot.json │ │ │ ├── 0035_snapshot.json │ │ │ ├── 0036_snapshot.json │ │ │ ├── 0037_snapshot.json │ │ │ ├── 0038_snapshot.json │ │ │ ├── 0039_snapshot.json │ │ │ ├── 0040_snapshot.json │ │ │ ├── 0041_snapshot.json │ │ │ ├── 0042_snapshot.json │ │ │ ├── 0043_snapshot.json │ │ │ ├── 0044_snapshot.json │ │ │ ├── 0045_snapshot.json │ │ │ ├── 0046_snapshot.json │ │ │ ├── 0047_snapshot.json │ │ │ ├── 0048_snapshot.json │ │ │ ├── 0049_snapshot.json │ │ │ ├── 0050_snapshot.json │ │ │ ├── 0051_snapshot.json │ │ │ ├── 0052_snapshot.json │ │ │ ├── 0053_snapshot.json │ │ │ ├── 0054_snapshot.json │ │ │ ├── 0055_snapshot.json │ │ │ ├── 0056_snapshot.json │ │ │ ├── 0057_snapshot.json │ │ │ ├── 0058_snapshot.json │ │ │ ├── 0059_snapshot.json │ │ │ ├── 0060_snapshot.json │ │ │ ├── 0061_snapshot.json │ │ │ ├── 0062_snapshot.json │ │ │ ├── 0063_snapshot.json │ │ │ ├── 0064_snapshot.json │ │ │ ├── 0065_snapshot.json │ │ │ ├── 0066_snapshot.json │ │ │ ├── 0067_snapshot.json │ │ │ ├── 0068_snapshot.json │ │ │ ├── 0069_snapshot.json │ │ │ ├── 0070_snapshot.json │ │ │ ├── 0071_snapshot.json │ │ │ ├── 0072_snapshot.json │ │ │ ├── 0073_snapshot.json │ │ │ ├── 0074_snapshot.json │ │ │ ├── 0075_snapshot.json │ │ │ ├── 0076_snapshot.json │ │ │ ├── 0077_snapshot.json │ │ │ ├── 0078_snapshot.json │ │ │ ├── 0079_snapshot.json │ │ │ ├── 0080_snapshot.json │ │ │ ├── 0081_snapshot.json │ │ │ ├── 0082_snapshot.json │ │ │ ├── 0083_snapshot.json │ │ │ ├── 0084_snapshot.json │ │ │ ├── 0085_snapshot.json │ │ │ ├── 0086_snapshot.json │ │ │ ├── 0087_snapshot.json │ │ │ ├── 0088_snapshot.json │ │ │ ├── 0089_snapshot.json │ │ │ ├── 0090_snapshot.json │ │ │ ├── 0091_snapshot.json │ │ │ ├── 0092_snapshot.json │ │ │ ├── 0093_snapshot.json │ │ │ ├── 0094_snapshot.json │ │ │ ├── 0095_snapshot.json │ │ │ ├── 0096_snapshot.json │ │ │ ├── 0097_snapshot.json │ │ │ └── _journal.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── core/ │ │ │ │ ├── db-adaptor.ts │ │ │ │ ├── getTestDB.ts │ │ │ │ └── web-server.ts │ │ │ ├── index.ts │ │ │ ├── models/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── _test_template.ts │ │ │ │ │ ├── agent.test.ts │ │ │ │ │ ├── agentBotProvider.test.ts │ │ │ │ │ ├── agentCronJob.test.ts │ │ │ │ │ ├── agentSkill.test.ts │ │ │ │ │ ├── aiModel.test.ts │ │ │ │ │ ├── aiProvider.test.ts │ │ │ │ │ ├── apiKey.test.ts │ │ │ │ │ ├── asyncTask.test.ts │ │ │ │ │ ├── brief.test.ts │ │ │ │ │ ├── chatGroup.test.ts │ │ │ │ │ ├── chunk.test.ts │ │ │ │ │ ├── document.test.ts │ │ │ │ │ ├── drizzleMigration.test.ts │ │ │ │ │ ├── embedding.test.ts │ │ │ │ │ ├── file.test.ts │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ └── embedding.ts │ │ │ │ │ ├── generation.test.ts │ │ │ │ │ ├── generationBatch.test.ts │ │ │ │ │ ├── generationTopic.test.ts │ │ │ │ │ ├── knowledgeBase.test.ts │ │ │ │ │ ├── messages/ │ │ │ │ │ │ ├── message.create.test.ts │ │ │ │ │ │ ├── message.delete.test.ts │ │ │ │ │ │ ├── message.query.test.ts │ │ │ │ │ │ ├── message.stats.test.ts │ │ │ │ │ │ ├── message.thread-query.test.ts │ │ │ │ │ │ ├── message.update.test.ts │ │ │ │ │ │ ├── messageWithTask.test.ts │ │ │ │ │ │ ├── queryWithMessageGroup.perf.test.ts │ │ │ │ │ │ └── queryWithMessageGroup.test.ts │ │ │ │ │ ├── oauthHandoff.test.ts │ │ │ │ │ ├── plugin.test.ts │ │ │ │ │ ├── session.test.ts │ │ │ │ │ ├── sessionGroup.test.ts │ │ │ │ │ ├── task.test.ts │ │ │ │ │ ├── taskTopic.test.ts │ │ │ │ │ ├── thread.test.ts │ │ │ │ │ ├── topicDocument.test.ts │ │ │ │ │ ├── topicShare.test.ts │ │ │ │ │ ├── topics/ │ │ │ │ │ │ ├── topic.create.test.ts │ │ │ │ │ │ ├── topic.delete.test.ts │ │ │ │ │ │ ├── topic.memoryExtractor.test.ts │ │ │ │ │ │ ├── topic.query.test.ts │ │ │ │ │ │ ├── topic.stats.test.ts │ │ │ │ │ │ └── topic.update.test.ts │ │ │ │ │ ├── user.test.ts │ │ │ │ │ ├── userMemories.test.ts │ │ │ │ │ └── userMemoryIdentity.test.ts │ │ │ │ ├── _template.ts │ │ │ │ ├── agent.ts │ │ │ │ ├── agentBotProvider.ts │ │ │ │ ├── agentCronJob.ts │ │ │ │ ├── agentDocuments/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── agentDocument.test.ts │ │ │ │ │ │ └── template.test.ts │ │ │ │ │ ├── agentDocument.ts │ │ │ │ │ ├── filename.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── policy/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── checks.test.ts │ │ │ │ │ │ │ └── loadPolicy.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── loadPolicy.ts │ │ │ │ │ │ ├── loadRule.ts │ │ │ │ │ │ ├── permission.ts │ │ │ │ │ │ └── policy.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── agentEval/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── benchmark.test.ts │ │ │ │ │ │ ├── dataset.test.ts │ │ │ │ │ │ ├── run.test.ts │ │ │ │ │ │ ├── runTopic.test.ts │ │ │ │ │ │ └── testCase.test.ts │ │ │ │ │ ├── benchmark.ts │ │ │ │ │ ├── dataset.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── run.ts │ │ │ │ │ ├── runTopic.ts │ │ │ │ │ └── testCase.ts │ │ │ │ ├── agentSkill.ts │ │ │ │ ├── aiModel.ts │ │ │ │ ├── aiProvider.ts │ │ │ │ ├── apiKey.ts │ │ │ │ ├── asyncTask.ts │ │ │ │ ├── brief.ts │ │ │ │ ├── chatGroup.ts │ │ │ │ ├── chunk.ts │ │ │ │ ├── document.ts │ │ │ │ ├── drizzleMigration.ts │ │ │ │ ├── embedding.ts │ │ │ │ ├── file.ts │ │ │ │ ├── generation.ts │ │ │ │ ├── generationBatch.ts │ │ │ │ ├── generationTopic.ts │ │ │ │ ├── knowledgeBase.ts │ │ │ │ ├── message.ts │ │ │ │ ├── notification.ts │ │ │ │ ├── oauthHandoff.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── ragEval/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── dataset.test.ts │ │ │ │ │ │ ├── datasetRecord.test.ts │ │ │ │ │ │ ├── evaluation.test.ts │ │ │ │ │ │ └── evaluationRecord.test.ts │ │ │ │ │ ├── dataset.ts │ │ │ │ │ ├── datasetRecord.ts │ │ │ │ │ ├── evaluation.ts │ │ │ │ │ ├── evaluationRecord.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── rbac.ts │ │ │ │ ├── session.ts │ │ │ │ ├── sessionGroup.ts │ │ │ │ ├── task.ts │ │ │ │ ├── taskTopic.ts │ │ │ │ ├── thread.ts │ │ │ │ ├── topic.ts │ │ │ │ ├── topicDocument.ts │ │ │ │ ├── topicShare.ts │ │ │ │ ├── user.ts │ │ │ │ └── userMemory/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── activity.test.ts │ │ │ │ │ ├── context.test.ts │ │ │ │ │ ├── experience.test.ts │ │ │ │ │ ├── identity.test.ts │ │ │ │ │ ├── model.test.ts │ │ │ │ │ ├── persona.test.ts │ │ │ │ │ └── preference.test.ts │ │ │ │ ├── activity.ts │ │ │ │ ├── context.ts │ │ │ │ ├── experience.ts │ │ │ │ ├── identity.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model.ts │ │ │ │ ├── persona.ts │ │ │ │ ├── preference.ts │ │ │ │ └── sources/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── benchmarkLoCoMo.test.ts │ │ │ │ ├── benchmarkLoCoMo.ts │ │ │ │ ├── index.ts │ │ │ │ └── shared.ts │ │ │ ├── repositories/ │ │ │ │ ├── agentGroup/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── agentMigration/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── agentMigrationRepo.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── aiInfra/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── compression/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dataExporter/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dataImporter/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ │ ├── agents.json │ │ │ │ │ │ │ ├── agentsToSessions.json │ │ │ │ │ │ │ ├── topic.json │ │ │ │ │ │ │ ├── userSettings.json │ │ │ │ │ │ │ └── with-client-id.json │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── deprecated/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ │ │ └── messages.json │ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── home/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── knowledge/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── search/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── topicImporter/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ │ └── exported-topic.json │ │ │ │ │ │ └── importTopic.test.ts │ │ │ │ │ └── index.ts │ │ │ │ └── userMemory/ │ │ │ │ ├── UserMemoryTopicRepository.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── UserMemoryTopicRepository.test.ts │ │ │ │ └── index.ts │ │ │ ├── schemas/ │ │ │ │ ├── _helpers.ts │ │ │ │ ├── agent.ts │ │ │ │ ├── agentBotProvider.ts │ │ │ │ ├── agentCronJob.ts │ │ │ │ ├── agentDocuments.ts │ │ │ │ ├── agentEvals.ts │ │ │ │ ├── agentSkill.ts │ │ │ │ ├── aiInfra.ts │ │ │ │ ├── apiKey.ts │ │ │ │ ├── asyncTask.ts │ │ │ │ ├── betterAuth.ts │ │ │ │ ├── chatGroup.ts │ │ │ │ ├── file.ts │ │ │ │ ├── generation.ts │ │ │ │ ├── index.ts │ │ │ │ ├── message.ts │ │ │ │ ├── nextauth.ts │ │ │ │ ├── notification.ts │ │ │ │ ├── oidc.ts │ │ │ │ ├── rag.ts │ │ │ │ ├── ragEvals.ts │ │ │ │ ├── rbac.ts │ │ │ │ ├── relations.ts │ │ │ │ ├── session.ts │ │ │ │ ├── task.ts │ │ │ │ ├── topic.ts │ │ │ │ ├── user.ts │ │ │ │ └── userMemories/ │ │ │ │ ├── index.ts │ │ │ │ └── persona.ts │ │ │ ├── server/ │ │ │ │ ├── index.ts │ │ │ │ └── models/ │ │ │ │ └── __tests__/ │ │ │ │ ├── adapter.test.ts │ │ │ │ └── user.test.ts │ │ │ ├── type.ts │ │ │ ├── types/ │ │ │ │ ├── chatGroup.ts │ │ │ │ └── generation.ts │ │ │ └── utils/ │ │ │ ├── bm25.test.ts │ │ │ ├── bm25.ts │ │ │ ├── columns.ts │ │ │ ├── genWhere.test.ts │ │ │ ├── genWhere.ts │ │ │ ├── idGenerator.test.ts │ │ │ └── idGenerator.ts │ │ ├── tests/ │ │ │ ├── setup-db.ts │ │ │ └── test-utils.ts │ │ ├── vitest.config.mts │ │ └── vitest.config.server.mts │ ├── desktop-bridge/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.ts │ │ └── routeVariants.ts │ ├── device-gateway-client/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── client.test.ts │ │ │ ├── client.ts │ │ │ ├── http.test.ts │ │ │ ├── http.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── vitest.config.mts │ ├── edge-config/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.ts │ │ └── types.ts │ ├── editor-runtime/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── EditorRuntime.ts │ │ │ ├── __tests__/ │ │ │ │ ├── EditorRuntime.real.test.ts │ │ │ │ ├── EditorRuntime.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── EditorRuntime.real.test.ts.snap │ │ │ │ │ └── EditorRuntime.test.ts.snap │ │ │ │ └── fixtures/ │ │ │ │ ├── edit-all.json │ │ │ │ ├── remove-then-add.json │ │ │ │ └── remove.json │ │ │ ├── index.ts │ │ │ └── types.ts │ │ └── vitest.config.mts │ ├── electron-client-ipc/ │ │ ├── README.md │ │ ├── README.zh-CN.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── events/ │ │ │ │ ├── gatewayConnection.ts │ │ │ │ ├── index.ts │ │ │ │ ├── navigation.ts │ │ │ │ ├── protocol.ts │ │ │ │ ├── remoteServer.ts │ │ │ │ ├── system.ts │ │ │ │ ├── update.ts │ │ │ │ └── windows.ts │ │ │ ├── index.ts │ │ │ ├── ipc.test.ts │ │ │ ├── ipc.ts │ │ │ ├── streamInvoke.ts │ │ │ ├── types/ │ │ │ │ ├── dataSync.ts │ │ │ │ ├── index.ts │ │ │ │ ├── localSystem.ts │ │ │ │ ├── mcpInstall.ts │ │ │ │ ├── notification.ts │ │ │ │ ├── proxy.ts │ │ │ │ ├── proxyTRPCRequest.ts │ │ │ │ ├── route.ts │ │ │ │ ├── shortcut.ts │ │ │ │ ├── system.ts │ │ │ │ ├── toolDetector.ts │ │ │ │ ├── tray.ts │ │ │ │ ├── update.ts │ │ │ │ ├── upload.ts │ │ │ │ └── window.ts │ │ │ ├── useWatchBroadcast.ts │ │ │ └── utils/ │ │ │ ├── headers.ts │ │ │ └── request.ts │ │ └── vitest.config.mts │ ├── electron-server-ipc/ │ │ ├── README.md │ │ ├── README.zh-CN.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── const.ts │ │ │ ├── index.ts │ │ │ ├── ipcClient.test.ts │ │ │ ├── ipcClient.ts │ │ │ ├── ipcServer.test.ts │ │ │ ├── ipcServer.ts │ │ │ └── types/ │ │ │ ├── file.ts │ │ │ └── index.ts │ │ └── vitest.config.mts │ ├── eval-dataset-parser/ │ │ ├── __tests__/ │ │ │ ├── detectFormat.edge.test.ts │ │ │ ├── detectFormat.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── sample.csv │ │ │ │ ├── sample.json │ │ │ │ └── sample.jsonl │ │ │ ├── parseDataset.edge.test.ts │ │ │ ├── parseDataset.test.ts │ │ │ └── parsers.test.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── detect.ts │ │ │ ├── index.ts │ │ │ ├── parseDataset.ts │ │ │ ├── parsers/ │ │ │ │ ├── csv.ts │ │ │ │ ├── index.ts │ │ │ │ ├── json.ts │ │ │ │ ├── jsonl.ts │ │ │ │ └── xlsx.ts │ │ │ └── types.ts │ │ └── vitest.config.mts │ ├── eval-rubric/ │ │ ├── __tests__/ │ │ │ ├── evaluate.test.ts │ │ │ └── extractors.test.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── evaluate.ts │ │ │ ├── extractors.ts │ │ │ ├── index.ts │ │ │ ├── matchers/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── anyOf.test.ts │ │ │ │ │ ├── contains.test.ts │ │ │ │ │ ├── endsWith.test.ts │ │ │ │ │ ├── equals.test.ts │ │ │ │ │ ├── jsonSchema.test.ts │ │ │ │ │ ├── levenshtein.test.ts │ │ │ │ │ ├── llmRubric.test.ts │ │ │ │ │ ├── numeric.test.ts │ │ │ │ │ ├── regex.test.ts │ │ │ │ │ └── startsWith.test.ts │ │ │ │ ├── anyOf.ts │ │ │ │ ├── contains.ts │ │ │ │ ├── endsWith.ts │ │ │ │ ├── equals.ts │ │ │ │ ├── external.ts │ │ │ │ ├── index.ts │ │ │ │ ├── jsonSchema.ts │ │ │ │ ├── levenshtein.ts │ │ │ │ ├── llmEq.ts │ │ │ │ ├── llmRubric.ts │ │ │ │ ├── numeric.ts │ │ │ │ ├── regex.ts │ │ │ │ ├── startsWith.ts │ │ │ │ └── types.ts │ │ │ └── normalize.ts │ │ └── tsconfig.json │ ├── fetch-sse/ │ │ ├── package.json │ │ └── src/ │ │ ├── __tests__/ │ │ │ ├── fetchSSE.test.ts │ │ │ ├── headers.test.ts │ │ │ ├── parseError.test.ts │ │ │ └── request.test.ts │ │ ├── fetchSSE.ts │ │ ├── headers.ts │ │ ├── index.ts │ │ ├── parseError.ts │ │ └── request.ts │ ├── file-loaders/ │ │ ├── README.md │ │ ├── README.zh-CN.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── blackList.ts │ │ │ ├── index.ts │ │ │ ├── loadFile.test.ts │ │ │ ├── loadFile.ts │ │ │ ├── loaders/ │ │ │ │ ├── doc/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── docx/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── excel/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── prompt.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pdf/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── prompt.ts │ │ │ │ ├── pptx/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ └── text/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ └── test.txt │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── types/ │ │ │ │ └── word-extractor.d.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── isTextReadableFile.test.ts │ │ │ ├── isTextReadableFile.ts │ │ │ ├── parser-utils.test.ts │ │ │ └── parser-utils.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── loaders.test.ts.snap │ │ │ ├── fixtures/ │ │ │ │ ├── test.csv │ │ │ │ ├── test.epub │ │ │ │ ├── test.md │ │ │ │ └── test.txt │ │ │ ├── loaders.test.ts │ │ │ └── setup.ts │ │ └── vitest.config.mts │ ├── local-file-shell/ │ │ ├── package.json │ │ └── src/ │ │ ├── file/ │ │ │ ├── __tests__/ │ │ │ │ └── file.test.ts │ │ │ ├── edit.ts │ │ │ ├── glob.ts │ │ │ ├── grep.ts │ │ │ ├── index.ts │ │ │ ├── list.ts │ │ │ ├── move.ts │ │ │ ├── read.ts │ │ │ ├── rename.ts │ │ │ ├── search.ts │ │ │ └── write.ts │ │ ├── index.ts │ │ ├── shell/ │ │ │ ├── __tests__/ │ │ │ │ ├── process-manager.test.ts │ │ │ │ ├── runner.test.ts │ │ │ │ └── utils.test.ts │ │ │ ├── index.ts │ │ │ ├── process-manager.ts │ │ │ ├── runner.ts │ │ │ └── utils.ts │ │ └── types.ts │ ├── memory-user-memory/ │ │ ├── .gitignore │ │ ├── benchmarks/ │ │ │ └── locomo/ │ │ │ ├── README.md │ │ │ └── run.ts │ │ ├── package.json │ │ ├── promptfoo/ │ │ │ ├── evals/ │ │ │ │ ├── activity/ │ │ │ │ │ ├── basic/ │ │ │ │ │ │ ├── buildMessages.ts │ │ │ │ │ │ ├── eval.yaml │ │ │ │ │ │ ├── prompt.ts │ │ │ │ │ │ └── tests/ │ │ │ │ │ │ └── cases.ts │ │ │ │ │ └── locomo/ │ │ │ │ │ ├── buildMessages.ts │ │ │ │ │ ├── eval.yaml │ │ │ │ │ ├── prompt.ts │ │ │ │ │ └── tests/ │ │ │ │ │ ├── benchmark-locomo-payload-conv-26.json │ │ │ │ │ └── cases.ts │ │ │ │ ├── identity/ │ │ │ │ │ └── with-s3-trace/ │ │ │ │ │ ├── buildMessages.ts │ │ │ │ │ ├── eval.yaml │ │ │ │ │ ├── prompt.ts │ │ │ │ │ └── tests/ │ │ │ │ │ └── cases.ts │ │ │ │ └── persona/ │ │ │ │ ├── eval.yaml │ │ │ │ ├── prompt.ts │ │ │ │ └── tests/ │ │ │ │ └── cases.ts │ │ │ └── response-formats/ │ │ │ ├── activity.json │ │ │ ├── context.json │ │ │ ├── experience.json │ │ │ ├── identity.json │ │ │ ├── persona-tools.json │ │ │ ├── persona.json │ │ │ └── preference.json │ │ ├── promptfooconfig.yaml │ │ ├── scripts/ │ │ │ └── generate-response-formats.ts │ │ ├── src/ │ │ │ ├── converters/ │ │ │ │ ├── index.ts │ │ │ │ └── locomo.ts │ │ │ ├── extractors/ │ │ │ │ ├── activity.ts │ │ │ │ ├── base.ts │ │ │ │ ├── context.test.ts │ │ │ │ ├── context.ts │ │ │ │ ├── experience.test.ts │ │ │ │ ├── experience.ts │ │ │ │ ├── gatekeeper.test.ts │ │ │ │ ├── gatekeeper.ts │ │ │ │ ├── identity.test.ts │ │ │ │ ├── identity.ts │ │ │ │ ├── index.ts │ │ │ │ ├── persona.test.ts │ │ │ │ ├── persona.ts │ │ │ │ ├── preference.test.ts │ │ │ │ └── preference.ts │ │ │ ├── index.ts │ │ │ ├── prompts/ │ │ │ │ ├── gatekeeper.ts │ │ │ │ ├── index.ts │ │ │ │ ├── layers/ │ │ │ │ │ ├── activity.ts │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── experience.ts │ │ │ │ │ ├── identity.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── preference.ts │ │ │ │ └── persona.ts │ │ │ ├── providers/ │ │ │ │ ├── benchmarkLocomo.test.ts │ │ │ │ ├── benchmarkLocomo.ts │ │ │ │ ├── chatTopic.test.ts │ │ │ │ ├── chatTopic.ts │ │ │ │ ├── existingUserMemory.test.ts │ │ │ │ ├── existingUserMemory.ts │ │ │ │ ├── index.ts │ │ │ │ └── tests/ │ │ │ │ └── benchmark-locomo-converted.json │ │ │ ├── schemas/ │ │ │ │ ├── activity.ts │ │ │ │ ├── common.ts │ │ │ │ ├── context.ts │ │ │ │ ├── experience.ts │ │ │ │ ├── gatekeeper.ts │ │ │ │ ├── identity.ts │ │ │ │ ├── index.ts │ │ │ │ └── preference.ts │ │ │ ├── services/ │ │ │ │ └── extractExecutor.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ └── zod.ts │ │ └── vitest.config.ts │ ├── model-bank/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── aiModels/ │ │ │ │ ├── ai21.ts │ │ │ │ ├── ai302.ts │ │ │ │ ├── ai360.ts │ │ │ │ ├── aihubmix.ts │ │ │ │ ├── akashchat.ts │ │ │ │ ├── anthropic.ts │ │ │ │ ├── azure.ts │ │ │ │ ├── azureai.ts │ │ │ │ ├── baichuan.ts │ │ │ │ ├── bailianCodingPlan.ts │ │ │ │ ├── bedrock.ts │ │ │ │ ├── bfl.ts │ │ │ │ ├── cerebras.ts │ │ │ │ ├── cloudflare.ts │ │ │ │ ├── cohere.ts │ │ │ │ ├── cometapi.ts │ │ │ │ ├── comfyui.ts │ │ │ │ ├── deepseek.ts │ │ │ │ ├── fal.ts │ │ │ │ ├── fireworksai.ts │ │ │ │ ├── giteeai.ts │ │ │ │ ├── github.ts │ │ │ │ ├── githubCopilot.ts │ │ │ │ ├── glmCodingPlan.ts │ │ │ │ ├── google.ts │ │ │ │ ├── groq.ts │ │ │ │ ├── higress.ts │ │ │ │ ├── huggingface.ts │ │ │ │ ├── hunyuan.ts │ │ │ │ ├── index.ts │ │ │ │ ├── infiniai.ts │ │ │ │ ├── internlm.ts │ │ │ │ ├── jina.ts │ │ │ │ ├── kimiCodingPlan.ts │ │ │ │ ├── lmstudio.ts │ │ │ │ ├── lobehub/ │ │ │ │ │ ├── chat/ │ │ │ │ │ │ ├── anthropic.ts │ │ │ │ │ │ ├── deepseek.ts │ │ │ │ │ │ ├── google.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── minimax.ts │ │ │ │ │ │ ├── moonshot.ts │ │ │ │ │ │ ├── openai.ts │ │ │ │ │ │ ├── xai.ts │ │ │ │ │ │ ├── xiaomimimo.ts │ │ │ │ │ │ └── zhipu.ts │ │ │ │ │ ├── embedding.ts │ │ │ │ │ ├── image.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── video.ts │ │ │ │ ├── longcat.ts │ │ │ │ ├── minimax.ts │ │ │ │ ├── minimaxCodingPlan.ts │ │ │ │ ├── mistral.ts │ │ │ │ ├── modelscope.ts │ │ │ │ ├── moonshot.ts │ │ │ │ ├── nebius.ts │ │ │ │ ├── newapi.ts │ │ │ │ ├── novita.ts │ │ │ │ ├── nvidia.ts │ │ │ │ ├── ollama.ts │ │ │ │ ├── ollamacloud.ts │ │ │ │ ├── openai.ts │ │ │ │ ├── openrouter.ts │ │ │ │ ├── perplexity.ts │ │ │ │ ├── ppio.ts │ │ │ │ ├── qiniu.ts │ │ │ │ ├── qwen.ts │ │ │ │ ├── replicate.ts │ │ │ │ ├── sambanova.ts │ │ │ │ ├── search1api.ts │ │ │ │ ├── sensenova.ts │ │ │ │ ├── siliconcloud.ts │ │ │ │ ├── spark.ts │ │ │ │ ├── stepfun.ts │ │ │ │ ├── straico.ts │ │ │ │ ├── taichu.ts │ │ │ │ ├── tencentcloud.ts │ │ │ │ ├── togetherai.ts │ │ │ │ ├── upstage.ts │ │ │ │ ├── v0.ts │ │ │ │ ├── vercelaigateway.ts │ │ │ │ ├── vertexai.ts │ │ │ │ ├── vllm.ts │ │ │ │ ├── volcengine.ts │ │ │ │ ├── volcengineCodingPlan.ts │ │ │ │ ├── wenxin.ts │ │ │ │ ├── xai.ts │ │ │ │ ├── xiaomimimo.ts │ │ │ │ ├── xinference.ts │ │ │ │ ├── zenmux.ts │ │ │ │ ├── zeroone.ts │ │ │ │ └── zhipu.ts │ │ │ ├── const/ │ │ │ │ └── modelProvider.ts │ │ │ ├── exports.test.ts │ │ │ ├── index.ts │ │ │ ├── modelProviders/ │ │ │ │ ├── ai21.ts │ │ │ │ ├── ai302.ts │ │ │ │ ├── ai360.ts │ │ │ │ ├── aihubmix.ts │ │ │ │ ├── akashchat.ts │ │ │ │ ├── anthropic.ts │ │ │ │ ├── azure.ts │ │ │ │ ├── azureai.ts │ │ │ │ ├── baichuan.ts │ │ │ │ ├── bailianCodingPlan.ts │ │ │ │ ├── bedrock.ts │ │ │ │ ├── bfl.ts │ │ │ │ ├── cerebras.ts │ │ │ │ ├── cloudflare.ts │ │ │ │ ├── cohere.ts │ │ │ │ ├── cometapi.ts │ │ │ │ ├── comfyui.ts │ │ │ │ ├── deepseek.ts │ │ │ │ ├── fal.ts │ │ │ │ ├── fireworksai.ts │ │ │ │ ├── giteeai.ts │ │ │ │ ├── github.ts │ │ │ │ ├── githubCopilot.ts │ │ │ │ ├── glmCodingPlan.ts │ │ │ │ ├── google.ts │ │ │ │ ├── groq.ts │ │ │ │ ├── higress.ts │ │ │ │ ├── huggingface.ts │ │ │ │ ├── hunyuan.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── infiniai.ts │ │ │ │ ├── internlm.ts │ │ │ │ ├── jina.ts │ │ │ │ ├── kimiCodingPlan.ts │ │ │ │ ├── lmstudio.ts │ │ │ │ ├── lobehub.ts │ │ │ │ ├── longcat.ts │ │ │ │ ├── minimax.ts │ │ │ │ ├── minimaxCodingPlan.ts │ │ │ │ ├── mistral.ts │ │ │ │ ├── modelscope.ts │ │ │ │ ├── moonshot.ts │ │ │ │ ├── nebius.ts │ │ │ │ ├── newapi.ts │ │ │ │ ├── novita.ts │ │ │ │ ├── nvidia.ts │ │ │ │ ├── ollama.ts │ │ │ │ ├── ollamacloud.ts │ │ │ │ ├── openai.ts │ │ │ │ ├── openrouter.ts │ │ │ │ ├── perplexity.ts │ │ │ │ ├── ppio.ts │ │ │ │ ├── qiniu.ts │ │ │ │ ├── qwen.ts │ │ │ │ ├── replicate.ts │ │ │ │ ├── sambanova.ts │ │ │ │ ├── search1api.ts │ │ │ │ ├── sensenova.ts │ │ │ │ ├── siliconcloud.ts │ │ │ │ ├── spark.ts │ │ │ │ ├── stepfun.ts │ │ │ │ ├── straico.ts │ │ │ │ ├── taichu.ts │ │ │ │ ├── tencentcloud.ts │ │ │ │ ├── togetherai.ts │ │ │ │ ├── upstage.ts │ │ │ │ ├── v0.ts │ │ │ │ ├── vercelaigateway.ts │ │ │ │ ├── vertexai.ts │ │ │ │ ├── vllm.ts │ │ │ │ ├── volcengine.ts │ │ │ │ ├── volcengineCodingPlan.ts │ │ │ │ ├── wenxin.ts │ │ │ │ ├── xai.ts │ │ │ │ ├── xiaomimimo.ts │ │ │ │ ├── xinference.ts │ │ │ │ ├── zenmux.ts │ │ │ │ ├── zeroone.ts │ │ │ │ └── zhipu.ts │ │ │ ├── standard-parameters/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── video.test.ts │ │ │ │ └── video.ts │ │ │ └── types/ │ │ │ ├── aiModel.ts │ │ │ └── index.ts │ │ └── vitest.config.mts │ ├── model-runtime/ │ │ ├── CLAUDE.md │ │ ├── docs/ │ │ │ └── test-coverage.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── const/ │ │ │ │ ├── models.ts │ │ │ │ └── type.test.ts │ │ │ ├── core/ │ │ │ │ ├── BaseAI.ts │ │ │ │ ├── ModelRuntime.test.ts │ │ │ │ ├── ModelRuntime.ts │ │ │ │ ├── RouterRuntime/ │ │ │ │ │ ├── apiTypes.ts │ │ │ │ │ ├── baseRuntimeMap.ts │ │ │ │ │ ├── createRuntime.test.ts │ │ │ │ │ ├── createRuntime.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── anthropicCompatibleFactory/ │ │ │ │ │ ├── generateObject.test.ts │ │ │ │ │ ├── generateObject.ts │ │ │ │ │ ├── handleAnthropicError.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── resolveCacheTTL.ts │ │ │ │ │ └── resolveMaxTokens.ts │ │ │ │ ├── contextBuilders/ │ │ │ │ │ ├── anthropic.test.ts │ │ │ │ │ ├── anthropic.ts │ │ │ │ │ ├── google.test.ts │ │ │ │ │ ├── google.ts │ │ │ │ │ ├── huggingface.test.ts │ │ │ │ │ ├── huggingface.ts │ │ │ │ │ ├── openai.test.ts │ │ │ │ │ └── openai.ts │ │ │ │ ├── openaiCompatibleFactory/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── nonStreamToStream.test.ts │ │ │ │ │ └── nonStreamToStream.ts │ │ │ │ ├── parameterResolver.test.ts │ │ │ │ ├── parameterResolver.ts │ │ │ │ ├── streams/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── protocol.test.ts.snap │ │ │ │ │ ├── anthropic.test.ts │ │ │ │ │ ├── anthropic.ts │ │ │ │ │ ├── bedrock/ │ │ │ │ │ │ ├── claude.ts │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── llama.test.ts │ │ │ │ │ │ └── llama.ts │ │ │ │ │ ├── cloudflare.test.ts │ │ │ │ │ ├── cloudflare.ts │ │ │ │ │ ├── google/ │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ ├── google-ai.test.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── model.test.ts │ │ │ │ │ ├── model.ts │ │ │ │ │ ├── ollama.test.ts │ │ │ │ │ ├── ollama.ts │ │ │ │ │ ├── openai/ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── responsesStream.test.ts.snap │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── openai.test.ts │ │ │ │ │ │ ├── openai.ts │ │ │ │ │ │ ├── responsesStream.test.ts │ │ │ │ │ │ └── responsesStream.ts │ │ │ │ │ ├── protocol.test.ts │ │ │ │ │ ├── protocol.ts │ │ │ │ │ ├── qwen.test.ts │ │ │ │ │ ├── qwen.ts │ │ │ │ │ ├── spark.test.ts │ │ │ │ │ ├── spark.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── vertex-ai.test.ts │ │ │ │ └── usageConverters/ │ │ │ │ ├── anthropic.test.ts │ │ │ │ ├── anthropic.ts │ │ │ │ ├── google-ai.test.ts │ │ │ │ ├── google-ai.ts │ │ │ │ ├── index.ts │ │ │ │ ├── openai.test.ts │ │ │ │ ├── openai.ts │ │ │ │ └── utils/ │ │ │ │ ├── computeChatCost.test.ts │ │ │ │ ├── computeChatCost.ts │ │ │ │ ├── computeImageCost.test.ts │ │ │ │ ├── computeImageCost.ts │ │ │ │ ├── computeVideoCost.test.ts │ │ │ │ ├── computeVideoCost.ts │ │ │ │ ├── index.ts │ │ │ │ ├── resolveImageSinglePrice.ts │ │ │ │ ├── resolveVideoSinglePrice.test.ts │ │ │ │ ├── resolveVideoSinglePrice.ts │ │ │ │ └── withUsageCost.ts │ │ │ ├── helpers/ │ │ │ │ ├── index.ts │ │ │ │ ├── mergeChatMethodOptions.test.ts │ │ │ │ ├── mergeChatMethodOptions.ts │ │ │ │ ├── parseToolCalls.test.ts │ │ │ │ └── parseToolCalls.ts │ │ │ ├── index.ts │ │ │ ├── providerTestUtils.test.ts │ │ │ ├── providerTestUtils.ts │ │ │ ├── providers/ │ │ │ │ ├── ai21/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── ai302/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── ai360/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── aihubmix/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── akashchat/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── anthropic/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── azureOpenai/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── azureai/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── baichuan/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── bailianCodingPlan/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── bedrock/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── bfl/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── cerebras/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── cloudflare/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── cohere/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── cometapi/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── comfyui/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── auth/ │ │ │ │ │ │ └── AuthManager.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── deepseek/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── fal/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── fireworksai/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── giteeai/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── github/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── githubCopilot/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── glmCodingPlan/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── google/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── generateObject.test.ts │ │ │ │ │ ├── generateObject.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── thinkingResolver.test.ts │ │ │ │ │ └── thinkingResolver.ts │ │ │ │ ├── groq/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── higress/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── huggingface/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── hunyuan/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── infiniai/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── internlm/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── jina/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── kimiCodingPlan/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── lmstudio/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── lobehub/ │ │ │ │ │ └── index.ts │ │ │ │ ├── longcat/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── minimax/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── minimaxCodingPlan/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── mistral/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── modelscope/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── moonshot/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── nebius/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── newapi/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── novita/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ └── models.json │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── nvidia/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── ollama/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── ollamacloud/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── openai/ │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ └── openai-models.json │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── openrouter/ │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ ├── frontendModels.json │ │ │ │ │ │ └── models.json │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── perplexity/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── ppio/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ └── models.json │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── qiniu/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── qwen/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── replicate/ │ │ │ │ │ └── index.ts │ │ │ │ ├── sambanova/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── search1api/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── sensenova/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── siliconcloud/ │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── spark/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── stepfun/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── straico/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── taichu/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── tencentcloud/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── togetherai/ │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ └── models.json │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── upstage/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── v0/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── vercelaigateway/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── vertexai/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── vllm/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── volcengine/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── video/ │ │ │ │ │ ├── createVideo.test.ts │ │ │ │ │ ├── createVideo.ts │ │ │ │ │ ├── handleCreateVideoWebhook.test.ts │ │ │ │ │ └── handleCreateVideoWebhook.ts │ │ │ │ ├── volcengineCodingPlan/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── wenxin/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── xai/ │ │ │ │ │ ├── createImage.test.ts │ │ │ │ │ ├── createImage.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── xiaomimimo/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── xinference/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── zenmux/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── zeroone/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ └── zhipu/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── runtimeMap.ts │ │ │ ├── types/ │ │ │ │ ├── chat.ts │ │ │ │ ├── embeddings.ts │ │ │ │ ├── error.ts │ │ │ │ ├── image.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model.ts │ │ │ │ ├── structureOutput.ts │ │ │ │ ├── toolsCalling.ts │ │ │ │ ├── tts.ts │ │ │ │ ├── type.ts │ │ │ │ └── video.ts │ │ │ └── utils/ │ │ │ ├── asyncifyPolling.test.ts │ │ │ ├── asyncifyPolling.ts │ │ │ ├── comfyuiErrorParser.test.ts │ │ │ ├── comfyuiErrorParser.ts │ │ │ ├── consumeStream.test.ts │ │ │ ├── consumeStream.ts │ │ │ ├── createError.test.ts │ │ │ ├── createError.ts │ │ │ ├── debugStream.test.ts │ │ │ ├── debugStream.ts │ │ │ ├── desensitizeUrl.test.ts │ │ │ ├── desensitizeUrl.ts │ │ │ ├── errorResponse.test.ts │ │ │ ├── errorResponse.ts │ │ │ ├── getFallbackModelProperty.test.ts │ │ │ ├── getFallbackModelProperty.ts │ │ │ ├── getModelMaxOutputs.test.ts │ │ │ ├── getModelMaxOutputs.ts │ │ │ ├── getModelPricing.ts │ │ │ ├── googleErrorParser.test.ts │ │ │ ├── googleErrorParser.ts │ │ │ ├── handleOpenAIError.test.ts │ │ │ ├── handleOpenAIError.ts │ │ │ ├── isExceededContextWindowError.test.ts │ │ │ ├── isExceededContextWindowError.ts │ │ │ ├── isQuotaLimitError.test.ts │ │ │ ├── isQuotaLimitError.ts │ │ │ ├── modelParse.test.ts │ │ │ ├── modelParse.ts │ │ │ ├── postProcessModelList.test.ts │ │ │ ├── postProcessModelList.ts │ │ │ ├── response.test.ts │ │ │ ├── response.ts │ │ │ ├── safeParseJSON.test.ts │ │ │ ├── safeParseJSON.ts │ │ │ ├── sanitizeError.test.ts │ │ │ ├── sanitizeError.ts │ │ │ ├── uriParser.test.ts │ │ │ ├── uriParser.ts │ │ │ └── uuid.ts │ │ └── vitest.config.mts │ ├── observability-otel/ │ │ ├── package.json │ │ └── src/ │ │ ├── api.ts │ │ ├── gen-ai/ │ │ │ ├── index.ts │ │ │ └── semconv.ts │ │ ├── modules/ │ │ │ ├── index.ts │ │ │ ├── memory-user-memory/ │ │ │ │ ├── extract.ts │ │ │ │ └── index.ts │ │ │ └── upstash-workflow/ │ │ │ └── index.ts │ │ ├── node.ts │ │ └── trpc/ │ │ ├── convention.ts │ │ ├── index.test.ts │ │ ├── index.ts │ │ └── metrics.ts │ ├── openapi/ │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── .gitignore │ │ │ └── compliance-test.sh │ │ └── src/ │ │ ├── app.ts │ │ ├── common/ │ │ │ ├── base.controller.ts │ │ │ └── base.service.ts │ │ ├── controllers/ │ │ │ ├── agent-group.controller.ts │ │ │ ├── agent.controller.ts │ │ │ ├── chat.controller.ts │ │ │ ├── file.controller.ts │ │ │ ├── index.ts │ │ │ ├── knowledge-base.controller.ts │ │ │ ├── message-translation.controller.ts │ │ │ ├── message.controller.ts │ │ │ ├── model.controller.ts │ │ │ ├── permission.controller.ts │ │ │ ├── provider.controller.ts │ │ │ ├── responses.controller.ts │ │ │ ├── role.controller.ts │ │ │ ├── topic.controller.ts │ │ │ └── user.controller.ts │ │ ├── helpers/ │ │ │ ├── file.ts │ │ │ ├── pagination.ts │ │ │ ├── permission.ts │ │ │ └── translate.ts │ │ ├── index.ts │ │ ├── middleware/ │ │ │ ├── auth.ts │ │ │ ├── index.ts │ │ │ └── permission-check.ts │ │ ├── routes/ │ │ │ ├── agent-groups.route.ts │ │ │ ├── agents.route.ts │ │ │ ├── files.route.ts │ │ │ ├── index.ts │ │ │ ├── knowledge-bases.route.ts │ │ │ ├── message-translations.route.ts │ │ │ ├── messages.route.ts │ │ │ ├── models.route.ts │ │ │ ├── permissions.route.ts │ │ │ ├── providers.route.ts │ │ │ ├── responses.route.ts │ │ │ ├── roles.route.ts │ │ │ ├── topics.route.ts │ │ │ └── users.route.ts │ │ ├── services/ │ │ │ ├── agent-group.service.ts │ │ │ ├── agent.service.ts │ │ │ ├── chat.service.ts │ │ │ ├── file.service.ts │ │ │ ├── index.ts │ │ │ ├── knowledge-base.service.ts │ │ │ ├── message-translations.service.ts │ │ │ ├── message.service.ts │ │ │ ├── model.service.ts │ │ │ ├── permission.service.ts │ │ │ ├── provider.service.ts │ │ │ ├── responses.service.ts │ │ │ ├── role.service.ts │ │ │ ├── topic.service.ts │ │ │ └── user.service.ts │ │ └── types/ │ │ ├── agent-group.type.ts │ │ ├── agent.type.ts │ │ ├── chat.type.ts │ │ ├── common.type.ts │ │ ├── file.type.ts │ │ ├── index.ts │ │ ├── knowledge-base.type.ts │ │ ├── message-translations.type.ts │ │ ├── message.type.ts │ │ ├── model.type.ts │ │ ├── permission.type.ts │ │ ├── provider.type.ts │ │ ├── responses.type.ts │ │ ├── role.type.ts │ │ ├── topic.type.ts │ │ └── user.type.ts │ ├── prompts/ │ │ ├── .gitignore │ │ ├── CLAUDE.md │ │ ├── README.md │ │ ├── package.json │ │ ├── promptfoo/ │ │ │ ├── abstract-chunk/ │ │ │ │ ├── eval.yaml │ │ │ │ └── prompt.ts │ │ │ ├── emoji-picker/ │ │ │ │ ├── eval.yaml │ │ │ │ └── prompt.ts │ │ │ ├── knowledge-qa/ │ │ │ │ ├── eval.yaml │ │ │ │ └── prompt.ts │ │ │ ├── language-detection/ │ │ │ │ ├── eval.yaml │ │ │ │ └── prompt.ts │ │ │ ├── summary-title/ │ │ │ │ ├── eval.yaml │ │ │ │ └── prompt.ts │ │ │ ├── supervisor/ │ │ │ │ └── productive/ │ │ │ │ ├── eval.yaml │ │ │ │ ├── prompt.ts │ │ │ │ ├── tests/ │ │ │ │ │ ├── basic-case.ts │ │ │ │ │ └── role.ts │ │ │ │ └── tools.json │ │ │ └── translate/ │ │ │ ├── eval.yaml │ │ │ └── prompt.ts │ │ ├── promptfooconfig.yaml │ │ ├── src/ │ │ │ ├── agents/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── pageContentContext.test.ts.snap │ │ │ │ ├── index.ts │ │ │ │ ├── pageContentContext.test.ts │ │ │ │ ├── pageContentContext.ts │ │ │ │ └── pageSelectionContext.ts │ │ │ ├── chains/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── abstractChunk.test.ts.snap │ │ │ │ │ │ ├── answerWithContext.test.ts.snap │ │ │ │ │ │ ├── pickEmoji.test.ts.snap │ │ │ │ │ │ ├── summaryHistory.test.ts.snap │ │ │ │ │ │ ├── summaryTitle.test.ts.snap │ │ │ │ │ │ └── translate.test.ts.snap │ │ │ │ │ ├── abstractChunk.test.ts │ │ │ │ │ ├── answerWithContext.test.ts │ │ │ │ │ ├── langDetect.test.ts │ │ │ │ │ ├── pickEmoji.test.ts │ │ │ │ │ ├── rewriteQuery.test.ts │ │ │ │ │ ├── summaryAgentName.test.ts │ │ │ │ │ ├── summaryDescription.test.ts │ │ │ │ │ ├── summaryGenerationTitle.test.ts │ │ │ │ │ ├── summaryHistory.test.ts │ │ │ │ │ ├── summaryTags.test.ts │ │ │ │ │ ├── summaryTitle.test.ts │ │ │ │ │ └── translate.test.ts │ │ │ │ ├── abstractChunk.ts │ │ │ │ ├── answerWithContext.ts │ │ │ │ ├── compressContext.ts │ │ │ │ ├── index.ts │ │ │ │ ├── langDetect.ts │ │ │ │ ├── pickEmoji.ts │ │ │ │ ├── rewriteQuery.ts │ │ │ │ ├── summaryAgentName.ts │ │ │ │ ├── summaryDescription.ts │ │ │ │ ├── summaryGenerationTitle.ts │ │ │ │ ├── summaryHistory.ts │ │ │ │ ├── summaryTags.ts │ │ │ │ ├── summaryTitle.ts │ │ │ │ ├── taskTopicHandoff.ts │ │ │ │ └── translate.ts │ │ │ ├── contexts/ │ │ │ │ ├── index.ts │ │ │ │ └── supervisor/ │ │ │ │ ├── index.ts │ │ │ │ ├── makeDecision.ts │ │ │ │ └── tools.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ └── prompts/ │ │ │ ├── agentBuilder/ │ │ │ │ ├── index.ts │ │ │ │ ├── modelsResultsPrompt.ts │ │ │ │ └── toolsResultsPrompt.ts │ │ │ ├── agentGroup/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── agentProfile.ts │ │ │ │ ├── groupContext.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── botPlatformContext/ │ │ │ │ └── index.ts │ │ │ ├── chatMessages/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── compressContext/ │ │ │ │ └── index.ts │ │ │ ├── discordContext/ │ │ │ │ └── index.ts │ │ │ ├── fileSystem/ │ │ │ │ ├── formatCommandOutput.test.ts │ │ │ │ ├── formatCommandOutput.ts │ │ │ │ ├── formatCommandResult.test.ts │ │ │ │ ├── formatCommandResult.ts │ │ │ │ ├── formatEditResult.test.ts │ │ │ │ ├── formatEditResult.ts │ │ │ │ ├── formatFileContent.test.ts │ │ │ │ ├── formatFileContent.ts │ │ │ │ ├── formatFileList.test.ts │ │ │ │ ├── formatFileList.ts │ │ │ │ ├── formatFileSearchResults.test.ts │ │ │ │ ├── formatFileSearchResults.ts │ │ │ │ ├── formatGlobResults.test.ts │ │ │ │ ├── formatGlobResults.ts │ │ │ │ ├── formatGrepResults.test.ts │ │ │ │ ├── formatGrepResults.ts │ │ │ │ ├── formatKillResult.test.ts │ │ │ │ ├── formatKillResult.ts │ │ │ │ ├── formatMoveResults.test.ts │ │ │ │ ├── formatMoveResults.ts │ │ │ │ ├── formatMultipleFiles.test.ts │ │ │ │ ├── formatMultipleFiles.ts │ │ │ │ ├── formatRenameResult.test.ts │ │ │ │ ├── formatRenameResult.ts │ │ │ │ ├── formatWriteResult.test.ts │ │ │ │ ├── formatWriteResult.ts │ │ │ │ └── index.ts │ │ │ ├── files/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── knowledgeBase.test.ts.snap │ │ │ │ ├── file.ts │ │ │ │ ├── image.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── knowledgeBase.test.ts │ │ │ │ ├── knowledgeBase.ts │ │ │ │ └── video.ts │ │ │ ├── groupChat/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── gtd/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── knowledgeBaseQA/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── formatFileContents.test.ts.snap │ │ │ │ │ ├── formatNoSearchResults.test.ts.snap │ │ │ │ │ ├── formatSearchResults.test.ts.snap │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── chunk.ts │ │ │ │ ├── formatFileContents.test.ts │ │ │ │ ├── formatFileContents.ts │ │ │ │ ├── formatNoSearchResults.test.ts │ │ │ │ ├── formatNoSearchResults.ts │ │ │ │ ├── formatSearchResults.test.ts │ │ │ │ ├── formatSearchResults.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── knowledge.ts │ │ │ │ └── userQuery.ts │ │ │ ├── messagesToText/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── plugin/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── tools.test.ts │ │ │ │ └── tools.ts │ │ │ ├── remoteDevice/ │ │ │ │ └── index.ts │ │ │ ├── search/ │ │ │ │ ├── crawlResults.test.ts │ │ │ │ ├── crawlResults.ts │ │ │ │ ├── index.ts │ │ │ │ ├── searchResults.test.ts │ │ │ │ ├── searchResults.ts │ │ │ │ └── xmlEscape.ts │ │ │ ├── skills/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── resourcesTree.ts │ │ │ ├── speaker/ │ │ │ │ └── index.ts │ │ │ ├── systemRole/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── task/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── toolDiscovery/ │ │ │ │ └── index.ts │ │ │ └── userMemory/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── formatSearchResults.test.ts.snap │ │ │ │ └── index.test.ts.snap │ │ │ ├── formatSearchResults.test.ts │ │ │ ├── formatSearchResults.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ └── vitest.config.mts │ ├── python-interpreter/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── interpreter.test.ts │ │ │ │ └── worker.test.ts │ │ │ ├── index.ts │ │ │ ├── interpreter.ts │ │ │ ├── types.ts │ │ │ └── worker.ts │ │ └── vitest.config.mts │ ├── ssrf-safe-fetch/ │ │ ├── index.browser.ts │ │ ├── index.test.ts │ │ ├── index.ts │ │ ├── package.json │ │ └── vitest.config.mts │ ├── types/ │ │ ├── package.json │ │ └── src/ │ │ ├── agent/ │ │ │ ├── agencyConfig.ts │ │ │ ├── agentConfig.ts │ │ │ ├── chatConfig.ts │ │ │ ├── index.ts │ │ │ ├── item.ts │ │ │ └── tts.ts │ │ ├── agentCronJob/ │ │ │ └── index.ts │ │ ├── agentExecution/ │ │ │ └── index.ts │ │ ├── agentGroup/ │ │ │ └── index.ts │ │ ├── agentRuntime.ts │ │ ├── aiChat.ts │ │ ├── aiProvider.ts │ │ ├── apiKey.ts │ │ ├── artifact.ts │ │ ├── asyncTask.ts │ │ ├── auth.ts │ │ ├── brief/ │ │ │ └── index.ts │ │ ├── changelog.ts │ │ ├── chunk/ │ │ │ ├── document.ts │ │ │ └── index.ts │ │ ├── clientDB.ts │ │ ├── conversation.ts │ │ ├── creds/ │ │ │ └── index.ts │ │ ├── discover/ │ │ │ ├── assistants.ts │ │ │ ├── fork.ts │ │ │ ├── groupAgents.ts │ │ │ ├── index.ts │ │ │ ├── mcp.ts │ │ │ ├── models.ts │ │ │ ├── plugins.ts │ │ │ ├── providers.ts │ │ │ └── skills.ts │ │ ├── document/ │ │ │ └── index.ts │ │ ├── eval/ │ │ │ ├── agentEval.ts │ │ │ ├── agentEvalDataset.ts │ │ │ ├── agentEvalRun.ts │ │ │ ├── benchmark.ts │ │ │ ├── dataset.ts │ │ │ ├── evaluation.ts │ │ │ ├── index.ts │ │ │ ├── ragas.ts │ │ │ └── rubric.ts │ │ ├── export.ts │ │ ├── exportConfig.ts │ │ ├── fetch.ts │ │ ├── files/ │ │ │ ├── index.ts │ │ │ ├── list.ts │ │ │ └── upload.ts │ │ ├── generation/ │ │ │ └── index.ts │ │ ├── home.ts │ │ ├── hotkey.ts │ │ ├── importer.ts │ │ ├── index.ts │ │ ├── knowledgeBase/ │ │ │ └── index.ts │ │ ├── llm.ts │ │ ├── message/ │ │ │ ├── common/ │ │ │ │ ├── base.ts │ │ │ │ ├── image.ts │ │ │ │ ├── index.ts │ │ │ │ ├── messageGroup.ts │ │ │ │ ├── metadata.ts │ │ │ │ ├── pageSelection.ts │ │ │ │ ├── tools.ts │ │ │ │ └── translate.ts │ │ │ ├── db/ │ │ │ │ ├── index.ts │ │ │ │ ├── item.ts │ │ │ │ └── params.ts │ │ │ ├── index.ts │ │ │ └── ui/ │ │ │ ├── chat.ts │ │ │ ├── extra.ts │ │ │ ├── index.ts │ │ │ ├── params.ts │ │ │ ├── rag.ts │ │ │ └── video.ts │ │ ├── meta.ts │ │ ├── openai/ │ │ │ ├── chat.ts │ │ │ ├── functionCall.ts │ │ │ ├── image.ts │ │ │ └── plugin.ts │ │ ├── plugins/ │ │ │ ├── index.ts │ │ │ ├── mcp.ts │ │ │ ├── mcpDeps.ts │ │ │ └── protocol.ts │ │ ├── rag.ts │ │ ├── search.ts │ │ ├── serverConfig.ts │ │ ├── service.ts │ │ ├── session/ │ │ │ ├── agentSession.ts │ │ │ ├── index.ts │ │ │ └── sessionGroup.ts │ │ ├── skill/ │ │ │ └── index.ts │ │ ├── stepContext.ts │ │ ├── subscription.ts │ │ ├── task/ │ │ │ └── index.ts │ │ ├── tool/ │ │ │ ├── builtin.ts │ │ │ ├── crawler.ts │ │ │ ├── dalle.ts │ │ │ ├── index.ts │ │ │ ├── interpreter.ts │ │ │ ├── intervention.ts │ │ │ ├── plugin.ts │ │ │ ├── search/ │ │ │ │ └── index.ts │ │ │ └── tool.ts │ │ ├── topic/ │ │ │ ├── index.ts │ │ │ ├── thread.ts │ │ │ └── topic.ts │ │ ├── trace/ │ │ │ ├── action.ts │ │ │ ├── enum.ts │ │ │ └── index.ts │ │ ├── usage/ │ │ │ └── usageRecord.ts │ │ ├── user/ │ │ │ ├── agentOnboarding.test.ts │ │ │ ├── agentOnboarding.ts │ │ │ ├── index.ts │ │ │ ├── onboarding.ts │ │ │ ├── preference.ts │ │ │ └── settings/ │ │ │ ├── filesConfig.ts │ │ │ ├── general.ts │ │ │ ├── hotkey.ts │ │ │ ├── image.ts │ │ │ ├── index.ts │ │ │ ├── keyVaults.ts │ │ │ ├── market.ts │ │ │ ├── memory.ts │ │ │ ├── modelProvider.ts │ │ │ ├── notification.ts │ │ │ ├── sync.ts │ │ │ ├── systemAgent.ts │ │ │ ├── tool.ts │ │ │ └── tts.ts │ │ ├── userMemory/ │ │ │ ├── activity.ts │ │ │ ├── base.ts │ │ │ ├── experience.ts │ │ │ ├── identity.ts │ │ │ ├── index.ts │ │ │ ├── layers.ts │ │ │ ├── list.ts │ │ │ ├── server.ts │ │ │ ├── shared.ts │ │ │ ├── tools.ts │ │ │ └── trace.ts │ │ ├── util.ts │ │ └── zustand.ts │ ├── utils/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── apiKey.test.ts │ │ │ ├── apiKey.ts │ │ │ ├── base64.test.ts │ │ │ ├── base64.ts │ │ │ ├── chunkers/ │ │ │ │ ├── index.ts │ │ │ │ └── trimBatchProbe/ │ │ │ │ ├── index.ts │ │ │ │ ├── trimBatchProbe.test.ts │ │ │ │ └── trimBatchProbe.ts │ │ │ ├── client/ │ │ │ │ ├── apiKeyManager.test.ts │ │ │ │ ├── apiKeyManager.ts │ │ │ │ ├── clipboard.ts │ │ │ │ ├── cookie.test.ts │ │ │ │ ├── cookie.ts │ │ │ │ ├── downloadFile.ts │ │ │ │ ├── exportFile.ts │ │ │ │ ├── fetchEventSource/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── imageDimensions.test.ts │ │ │ │ ├── imageDimensions.ts │ │ │ │ ├── index.ts │ │ │ │ ├── sanitize.test.ts │ │ │ │ ├── sanitize.ts │ │ │ │ ├── topic.test.ts │ │ │ │ ├── topic.ts │ │ │ │ ├── videoValidation.test.ts │ │ │ │ ├── videoValidation.ts │ │ │ │ ├── xor-obfuscation.test.ts │ │ │ │ └── xor-obfuscation.ts │ │ │ ├── clientIP.test.ts │ │ │ ├── clientIP.ts │ │ │ ├── colorUtils.test.ts │ │ │ ├── colorUtils.ts │ │ │ ├── compass.ts │ │ │ ├── compressImage.test.ts │ │ │ ├── compressImage.ts │ │ │ ├── dedupeBy.test.ts │ │ │ ├── dedupeBy.ts │ │ │ ├── detectChinese.test.ts │ │ │ ├── detectChinese.ts │ │ │ ├── difference.test.ts │ │ │ ├── difference.ts │ │ │ ├── env.ts │ │ │ ├── error.test.ts │ │ │ ├── error.ts │ │ │ ├── esm/ │ │ │ │ └── unwrapESMModule.ts │ │ │ ├── folderStructure.test.ts │ │ │ ├── folderStructure.ts │ │ │ ├── format.test.ts │ │ │ ├── format.ts │ │ │ ├── genOG.test.ts │ │ │ ├── genOG.ts │ │ │ ├── imageToBase64.test.ts │ │ │ ├── imageToBase64.ts │ │ │ ├── index.ts │ │ │ ├── isChunkingUnsupported.test.ts │ │ │ ├── isChunkingUnsupported.ts │ │ │ ├── keyboard.test.ts │ │ │ ├── keyboard.ts │ │ │ ├── localStorage.ts │ │ │ ├── merge.test.ts │ │ │ ├── merge.ts │ │ │ ├── mimeType.test.ts │ │ │ ├── mimeType.ts │ │ │ ├── multimodalContent.test.ts │ │ │ ├── multimodalContent.ts │ │ │ ├── number.test.ts │ │ │ ├── number.ts │ │ │ ├── object.test.ts │ │ │ ├── object.ts │ │ │ ├── parseMarkdown.ts │ │ │ ├── platform.test.ts │ │ │ ├── platform.ts │ │ │ ├── pricing.test.ts │ │ │ ├── pricing.ts │ │ │ ├── promptTemplate.test.ts │ │ │ ├── promptTemplate.ts │ │ │ ├── safeParseJSON.test.ts │ │ │ ├── safeParseJSON.ts │ │ │ ├── sanitizeNullBytes.test.ts │ │ │ ├── sanitizeNullBytes.ts │ │ │ ├── sanitizeUTF8.test.ts │ │ │ ├── sanitizeUTF8.ts │ │ │ ├── server/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── auth.test.ts │ │ │ │ │ ├── response.test.ts │ │ │ │ │ └── sse.test.ts │ │ │ │ ├── apiKeyHash.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── index.ts │ │ │ │ ├── response.ts │ │ │ │ ├── responsive.ts │ │ │ │ ├── sse.ts │ │ │ │ ├── xor.test.ts │ │ │ │ └── xor.ts │ │ │ ├── sleep.ts │ │ │ ├── storeDebug.test.ts │ │ │ ├── storeDebug.ts │ │ │ ├── time.test.ts │ │ │ ├── time.ts │ │ │ ├── tokenizer/ │ │ │ │ └── index.ts │ │ │ ├── toolManifest.ts │ │ │ ├── trace.test.ts │ │ │ ├── trace.ts │ │ │ ├── units.ts │ │ │ ├── uploadFIle.ts │ │ │ ├── uriParser.test.ts │ │ │ ├── uriParser.ts │ │ │ ├── url.test.ts │ │ │ ├── url.ts │ │ │ ├── uuid.ts │ │ │ ├── videoToBase64.test.ts │ │ │ └── videoToBase64.ts │ │ ├── tests/ │ │ │ └── setup.ts │ │ └── vitest.config.mts │ └── web-crawler/ │ ├── README.md │ ├── README.zh-CN.md │ ├── package.json │ ├── src/ │ │ ├── __tests__/ │ │ │ ├── crawler.test.ts │ │ │ └── urlRules.test.ts │ │ ├── crawImpl/ │ │ │ ├── __tests__/ │ │ │ │ ├── browserless.test.ts │ │ │ │ ├── exa.test.ts │ │ │ │ ├── firecrawl.test.ts │ │ │ │ ├── jina.test.ts │ │ │ │ ├── naive.test.ts │ │ │ │ ├── search1api.test.ts │ │ │ │ └── tavily.test.ts │ │ │ ├── browserless.ts │ │ │ ├── exa.ts │ │ │ ├── firecrawl.ts │ │ │ ├── index.ts │ │ │ ├── jina.ts │ │ │ ├── naive.ts │ │ │ ├── search1api.ts │ │ │ └── tavily.ts │ │ ├── crawler.ts │ │ ├── index.ts │ │ ├── test-utils.ts │ │ ├── type.ts │ │ ├── urlRules.ts │ │ └── utils/ │ │ ├── __snapshots__/ │ │ │ └── htmlToMarkdown.test.ts.snap │ │ ├── __tests__/ │ │ │ ├── appUrlRules.test.ts │ │ │ ├── errorType.test.ts │ │ │ ├── response.test.ts │ │ │ └── withTimeout.test.ts │ │ ├── appUrlRules.ts │ │ ├── errorType.ts │ │ ├── html/ │ │ │ ├── terms.html │ │ │ └── yingchao.html │ │ ├── htmlToMarkdown.test.ts │ │ ├── htmlToMarkdown.ts │ │ ├── response.ts │ │ └── withTimeout.ts │ ├── tsconfig.json │ └── vitest.config.mts ├── patches/ │ ├── @swagger-api__apidom-reference.patch │ └── @upstash__qstash.patch ├── plugins/ │ └── vite/ │ ├── emotionSpeedy.ts │ ├── envRestartKeys.ts │ ├── markdownImport.test.ts │ ├── markdownImport.ts │ ├── nodeModuleStub.ts │ ├── platformResolve.ts │ ├── sharedRendererConfig.ts │ └── vercelSkewProtection.ts ├── pnpm-workspace.yaml ├── prettier.config.mjs ├── public/ │ ├── .well-known/ │ │ ├── apple-app-site-association │ │ └── assetlinks.json │ ├── _dangerous_local_dev_proxy.html │ └── not-compatible.html ├── renovate.json ├── scripts/ │ ├── _shared/ │ │ ├── checkDeprecatedAuth.js │ │ └── checkDeprecatedAuth.test.ts │ ├── buildSitemapIndex/ │ │ └── index.ts │ ├── cdnWorkflow/ │ │ ├── index.ts │ │ ├── optimized.ts │ │ ├── s3/ │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── uploader.ts │ │ └── utils.ts │ ├── changelogWorkflow/ │ │ ├── buildStaticChangelog.ts │ │ ├── const.ts │ │ ├── generateChangelog.ts │ │ └── index.ts │ ├── checkConsoleLog.mts │ ├── clerk-to-betterauth/ │ │ ├── __tests__/ │ │ │ └── parseCsvLine.test.ts │ │ ├── _internal/ │ │ │ ├── config.ts │ │ │ ├── db.ts │ │ │ ├── env.ts │ │ │ ├── load-data-from-files.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── export-clerk-users-with-api.ts │ │ ├── index.ts │ │ ├── prod/ │ │ │ └── put_clerk_exported_users_csv_here.txt │ │ ├── test/ │ │ │ └── put_clerk_exported_users_csv_here.txt │ │ └── verify.ts │ ├── copySpaBuild.mts │ ├── countEnWord.ts │ ├── dbmlWorkflow/ │ │ └── index.ts │ ├── devStartupSequence.mts │ ├── dockerPrebuild.mts │ ├── docsWorkflow/ │ │ ├── autoCDN.ts │ │ ├── const.ts │ │ ├── index.ts │ │ ├── optimized.ts │ │ ├── toc.ts │ │ └── utils.ts │ ├── electronWorkflow/ │ │ ├── buildDesktopChannel.ts │ │ ├── buildElectron.ts │ │ ├── mergeMacReleaseFiles.js │ │ └── setDesktopVersion.ts │ ├── generate-oidc-jwk.mjs │ ├── generateSpaTemplates.mts │ ├── hotfixWorkflow/ │ │ └── index.ts │ ├── i18nWorkflow/ │ │ ├── analyzeUnusedKeys.ts │ │ ├── cleanUnusedKeys.ts │ │ ├── const.ts │ │ ├── flattenLocaleKeys.ts │ │ ├── genDefaultLocale.ts │ │ ├── genDiff.ts │ │ ├── i18nConfig.ts │ │ ├── index.ts │ │ ├── protectedPatterns.ts │ │ └── utils.ts │ ├── mdxWorkflow/ │ │ └── index.ts │ ├── migrate-spa-navigation.ts │ ├── migrateServerDB/ │ │ ├── docker.cjs │ │ ├── errorHint.js │ │ └── index.ts │ ├── mobileSpaWorkflow/ │ │ ├── index.ts │ │ ├── template.ts │ │ └── upload.ts │ ├── nextauth-to-betterauth/ │ │ ├── _internal/ │ │ │ ├── config.ts │ │ │ ├── db.ts │ │ │ └── env.ts │ │ ├── index.ts │ │ └── verify.ts │ ├── readmeWorkflow/ │ │ ├── const.ts │ │ ├── index.ts │ │ ├── syncAgentIndex.ts │ │ ├── syncPluginIndex.ts │ │ ├── syncProviderIndex.ts │ │ └── utlis.ts │ ├── registerDesktopEnv.cjs │ ├── releaseWorkflow/ │ │ └── index.ts │ ├── replaceComponentImports.ts │ ├── runNextDesktop.mts │ ├── serverLauncher/ │ │ └── startServer.js │ ├── setup-test-postgres-db.sh │ └── vercelIgnoredBuildStep.js ├── src/ │ ├── app/ │ │ ├── (backend)/ │ │ │ ├── _deprecated/ │ │ │ │ └── createBizOpenAI/ │ │ │ │ ├── auth.test.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── createAzureOpenai.ts │ │ │ │ ├── createOpenai.ts │ │ │ │ └── index.ts │ │ │ ├── api/ │ │ │ │ ├── agent/ │ │ │ │ │ ├── gateway/ │ │ │ │ │ │ ├── route.ts │ │ │ │ │ │ └── start/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ ├── run/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── stream/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── route.test.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── webhooks/ │ │ │ │ │ ├── [platform]/ │ │ │ │ │ │ └── [[...appId]]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── bot-callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── auth/ │ │ │ │ │ ├── [...all]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── check-user/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── resolve-username/ │ │ │ │ │ └── route.ts │ │ │ │ ├── dev/ │ │ │ │ │ └── memory-user-memory/ │ │ │ │ │ └── benchmark-locomo/ │ │ │ │ │ └── route.ts │ │ │ │ ├── v1/ │ │ │ │ │ └── [[...route]]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── version/ │ │ │ │ │ └── route.ts │ │ │ │ ├── webhooks/ │ │ │ │ │ ├── casdoor/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── route.test.ts │ │ │ │ │ │ ├── route.ts │ │ │ │ │ │ └── validateRequest.ts │ │ │ │ │ ├── logto/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── route.test.ts │ │ │ │ │ │ ├── route.ts │ │ │ │ │ │ └── validateRequest.ts │ │ │ │ │ ├── memory-extraction/ │ │ │ │ │ │ ├── benchmark-locomo/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── memory-user-memory/ │ │ │ │ │ │ └── persona/ │ │ │ │ │ │ └── update-writing/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── video/ │ │ │ │ │ └── [provider]/ │ │ │ │ │ └── route.ts │ │ │ │ └── workflows/ │ │ │ │ ├── agent-eval-run/ │ │ │ │ │ ├── execute-test-case/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── finalize-run/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── on-thread-complete/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── on-trajectory-complete/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── paginate-test-cases/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── run-agent-trajectory/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── run-benchmark/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── run-thread-trajectory/ │ │ │ │ │ └── route.ts │ │ │ │ └── memory-user-memory/ │ │ │ │ ├── call-cron-hourly-analysis/ │ │ │ │ │ └── route.ts │ │ │ │ └── pipelines/ │ │ │ │ ├── chat-topic/ │ │ │ │ │ ├── [...any]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── process-topic/ │ │ │ │ │ │ └── workflows/ │ │ │ │ │ │ └── topic.ts │ │ │ │ │ ├── process-topics/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── process-user-topics/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── process-users/ │ │ │ │ │ └── route.ts │ │ │ │ └── persona/ │ │ │ │ └── update-writing/ │ │ │ │ └── route.ts │ │ │ ├── f/ │ │ │ │ └── [id]/ │ │ │ │ └── route.ts │ │ │ ├── market/ │ │ │ │ ├── agent/ │ │ │ │ │ └── [[...segments]]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── oidc/ │ │ │ │ │ └── [[...segments]]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── social/ │ │ │ │ │ └── [[...segments]]/ │ │ │ │ │ └── route.ts │ │ │ │ └── user/ │ │ │ │ ├── [username]/ │ │ │ │ │ └── route.ts │ │ │ │ └── me/ │ │ │ │ └── route.ts │ │ │ ├── middleware/ │ │ │ │ ├── auth/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── validate/ │ │ │ │ ├── createValidator.test.ts │ │ │ │ ├── createValidator.ts │ │ │ │ └── index.ts │ │ │ ├── oidc/ │ │ │ │ ├── [...oidc]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── callback/ │ │ │ │ │ └── desktop/ │ │ │ │ │ └── route.ts │ │ │ │ ├── consent/ │ │ │ │ │ └── route.ts │ │ │ │ └── handoff/ │ │ │ │ └── route.ts │ │ │ ├── trpc/ │ │ │ │ ├── async/ │ │ │ │ │ └── [trpc]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── lambda/ │ │ │ │ │ └── [trpc]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── mobile/ │ │ │ │ │ └── [trpc]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── tools/ │ │ │ │ │ └── [trpc]/ │ │ │ │ │ └── route.ts │ │ │ │ └── trpc.test.ts │ │ │ └── webapi/ │ │ │ ├── chat/ │ │ │ │ └── [provider]/ │ │ │ │ ├── route.test.ts │ │ │ │ └── route.ts │ │ │ ├── create-image/ │ │ │ │ └── comfyui/ │ │ │ │ └── route.ts │ │ │ ├── models/ │ │ │ │ └── [provider]/ │ │ │ │ ├── pull/ │ │ │ │ │ └── route.ts │ │ │ │ ├── route.test.ts │ │ │ │ └── route.ts │ │ │ ├── plugin/ │ │ │ │ └── gateway/ │ │ │ │ └── route.ts │ │ │ ├── proxy/ │ │ │ │ └── route.ts │ │ │ ├── revalidate/ │ │ │ │ └── route.ts │ │ │ ├── stt/ │ │ │ │ └── openai/ │ │ │ │ └── route.ts │ │ │ ├── trace/ │ │ │ │ └── route.ts │ │ │ ├── tts/ │ │ │ │ ├── edge/ │ │ │ │ │ └── route.ts │ │ │ │ ├── microsoft/ │ │ │ │ │ └── route.ts │ │ │ │ └── openai/ │ │ │ │ └── route.ts │ │ │ └── user/ │ │ │ └── avatar/ │ │ │ └── [id]/ │ │ │ └── [image]/ │ │ │ └── route.ts │ │ ├── [variants]/ │ │ │ ├── (auth)/ │ │ │ │ ├── _layout/ │ │ │ │ │ ├── AuthGlobalProvider.tsx │ │ │ │ │ ├── AuthLangButton.tsx │ │ │ │ │ ├── AuthLocale.tsx │ │ │ │ │ ├── AuthServerConfigProvider.tsx │ │ │ │ │ ├── AuthThemeButton.tsx │ │ │ │ │ ├── AuthThemeLite.tsx │ │ │ │ │ ├── createAuthI18n.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── auth-error/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ ├── loading.tsx │ │ │ │ ├── market-auth-callback/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── oauth/ │ │ │ │ │ ├── callback/ │ │ │ │ │ │ ├── error/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── social/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ └── success/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── consent/ │ │ │ │ │ │ └── [uid]/ │ │ │ │ │ │ ├── ClientError.tsx │ │ │ │ │ │ ├── Consent/ │ │ │ │ │ │ │ ├── BuiltinConsent.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Login.tsx │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── OAuthApplicationLogo.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── device/ │ │ │ │ │ ├── DeviceCodeInput.tsx │ │ │ │ │ ├── confirm/ │ │ │ │ │ │ ├── DeviceCodeConfirm.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── success/ │ │ │ │ │ ├── DeviceSuccess.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── reset-password/ │ │ │ │ │ ├── ResetPasswordContent.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── useResetPassword.ts │ │ │ │ ├── signin/ │ │ │ │ │ ├── SignInEmailStep.tsx │ │ │ │ │ ├── SignInPasswordStep.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── useSignIn.test.ts │ │ │ │ │ └── useSignIn.ts │ │ │ │ ├── signup/ │ │ │ │ │ └── [[...signup]]/ │ │ │ │ │ ├── BetterAuthSignUpForm.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── useSignUp.test.ts │ │ │ │ │ └── useSignUp.ts │ │ │ │ └── verify-email/ │ │ │ │ ├── VerifyEmailContent.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── useVerifyEmail.ts │ │ │ └── metadata.ts │ │ ├── layout.tsx │ │ ├── manifest.ts │ │ ├── not-found.tsx │ │ ├── robots.tsx │ │ ├── sitemap.tsx │ │ └── spa/ │ │ └── [variants]/ │ │ └── [[...path]]/ │ │ ├── mobileHtmlTemplate.source.ts │ │ ├── route.ts │ │ └── spaHtmlTemplates.d.ts │ ├── auth.ts │ ├── business/ │ │ ├── client/ │ │ │ ├── BusinessAuthProvider.tsx │ │ │ ├── BusinessDesktopRoutes.tsx │ │ │ ├── BusinessGlobalProvider.tsx │ │ │ ├── BusinessMobileRoutes.tsx │ │ │ ├── BusinessSettingPages/ │ │ │ │ ├── Billing.tsx │ │ │ │ ├── Credits.tsx │ │ │ │ ├── Notification.tsx │ │ │ │ ├── Plans.tsx │ │ │ │ ├── Referral.tsx │ │ │ │ ├── SubscriptionIframeWrapper.tsx │ │ │ │ └── Usage.tsx │ │ │ ├── ReferralProvider.tsx │ │ │ ├── features/ │ │ │ │ ├── AccountDeletion/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── BrandingProviderCard.tsx │ │ │ │ ├── FileSidePanel/ │ │ │ │ │ └── UsageFooter.tsx │ │ │ │ ├── User/ │ │ │ │ │ ├── BusinessPanelContent.tsx │ │ │ │ │ └── useBusinessMenuItems.tsx │ │ │ │ └── VideoFreeQuotaInfo.tsx │ │ │ ├── hooks/ │ │ │ │ ├── useBusinessErrorAlertConfig.ts │ │ │ │ ├── useBusinessErrorContent.ts │ │ │ │ ├── useBusinessModelListGuard.ts │ │ │ │ ├── useBusinessSignin.ts │ │ │ │ ├── useBusinessSignup.tsx │ │ │ │ ├── useBusinessTTSProvider.ts │ │ │ │ ├── useRenderBusinessBatchItem.tsx │ │ │ │ ├── useRenderBusinessChatErrorMessageExtra.tsx │ │ │ │ └── useRenderBusinessVideoBatchItem.tsx │ │ │ ├── markUserValidAction.ts │ │ │ └── services/ │ │ │ └── BusinessGlobalService.ts │ │ └── server/ │ │ ├── better-auth.ts │ │ ├── image-generation/ │ │ │ ├── chargeAfterGenerate.ts │ │ │ ├── chargeBeforeGenerate.ts │ │ │ └── notifyImageCompleted.ts │ │ ├── lambda-routers/ │ │ │ ├── accountDeletion.ts │ │ │ ├── config.ts │ │ │ ├── file.ts │ │ │ ├── referral.ts │ │ │ ├── spend.ts │ │ │ ├── subscription.ts │ │ │ └── topUp.ts │ │ ├── model-runtime.ts │ │ ├── trpc-middlewares/ │ │ │ ├── async.ts │ │ │ └── lambda.ts │ │ ├── user.ts │ │ └── video-generation/ │ │ ├── chargeAfterGenerate.ts │ │ ├── chargeBeforeGenerate.ts │ │ ├── getVideoFreeQuota.ts │ │ └── notifyVideoCompleted.ts │ ├── components/ │ │ ├── 404/ │ │ │ └── index.tsx │ │ ├── Analytics/ │ │ │ ├── Clarity.tsx │ │ │ ├── Desktop.tsx │ │ │ ├── Google.tsx │ │ │ ├── LobeAnalyticsProvider.tsx │ │ │ ├── LobeAnalyticsProviderWrapper.tsx │ │ │ ├── MainInterfaceTracker.tsx │ │ │ ├── Plausible.tsx │ │ │ ├── Posthog.tsx │ │ │ ├── ReactScan.tsx │ │ │ ├── Umami.tsx │ │ │ ├── Vercel.tsx │ │ │ └── index.tsx │ │ ├── AnimatedCollapsed/ │ │ │ └── index.tsx │ │ ├── AntdStaticMethods/ │ │ │ ├── index.test.tsx │ │ │ └── index.tsx │ │ ├── AuthIcons.tsx │ │ ├── BootErrorBoundary/ │ │ │ └── index.tsx │ │ ├── BrandWatermark/ │ │ │ └── index.tsx │ │ ├── Branding/ │ │ │ ├── OrgBrand/ │ │ │ │ └── index.tsx │ │ │ ├── ProductLogo/ │ │ │ │ ├── Custom.tsx │ │ │ │ └── index.tsx │ │ │ └── index.ts │ │ ├── BrowserIcon/ │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── BubblesLoading/ │ │ │ └── index.tsx │ │ ├── Cell/ │ │ │ ├── Divider.tsx │ │ │ └── index.tsx │ │ ├── ChangelogModal/ │ │ │ ├── ChangelogContent.tsx │ │ │ ├── VersionTag.tsx │ │ │ └── index.tsx │ │ ├── ChatGroupWizard/ │ │ │ ├── ChatGroupWizard.tsx │ │ │ ├── index.ts │ │ │ └── templates.ts │ │ ├── CircleLoader/ │ │ │ └── index.tsx │ │ ├── CopyableLabel/ │ │ │ └── index.tsx │ │ ├── DataStyleModal/ │ │ │ └── index.tsx │ │ ├── DebugNode.tsx │ │ ├── Descriptions/ │ │ │ └── index.tsx │ │ ├── DragUpload/ │ │ │ ├── index.tsx │ │ │ ├── useDragUpload.test.tsx │ │ │ └── useDragUpload.tsx │ │ ├── DragUploadZone/ │ │ │ ├── DragUploadProvider.tsx │ │ │ ├── index.tsx │ │ │ ├── useLocalDragUpload.ts │ │ │ ├── usePasteFile.ts │ │ │ └── useUploadFiles.ts │ │ ├── Editor/ │ │ │ └── AutoSaveHint.tsx │ │ ├── EmojiPicker/ │ │ │ └── index.tsx │ │ ├── Error/ │ │ │ ├── Description.tsx │ │ │ ├── RedirectLogin.tsx │ │ │ ├── fetchErrorNotification.tsx │ │ │ ├── index.tsx │ │ │ └── loginRequiredNotification.tsx │ │ ├── ErrorBoundary/ │ │ │ ├── AlertFallback.tsx │ │ │ ├── SilentFallback.tsx │ │ │ └── index.tsx │ │ ├── FeatureList/ │ │ │ └── index.tsx │ │ ├── FeedbackModal/ │ │ │ └── index.tsx │ │ ├── FileIcon/ │ │ │ ├── config.ts │ │ │ └── index.tsx │ │ ├── FileParsingStatus/ │ │ │ ├── EmbeddingStatus.tsx │ │ │ └── index.tsx │ │ ├── FormAction/ │ │ │ └── index.tsx │ │ ├── FormInput/ │ │ │ ├── FormInput.test.tsx │ │ │ ├── FormInput.tsx │ │ │ ├── FormPassword.tsx │ │ │ ├── FormSliderWithInput.tsx │ │ │ └── index.ts │ │ ├── GalleyGrid/ │ │ │ ├── Grid.tsx │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ ├── GoBack/ │ │ │ └── index.tsx │ │ ├── GroupIcon/ │ │ │ └── index.tsx │ │ ├── GuideModal/ │ │ │ └── index.tsx │ │ ├── GuideVideo/ │ │ │ └── index.tsx │ │ ├── HighlightNotification/ │ │ │ └── index.tsx │ │ ├── HtmlPreview/ │ │ │ ├── HtmlPreviewAction.tsx │ │ │ ├── PreviewDrawer.tsx │ │ │ └── index.ts │ │ ├── ImageItem/ │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ ├── IndexCard/ │ │ │ └── index.tsx │ │ ├── InfoTooltip/ │ │ │ └── index.tsx │ │ ├── InitProgress/ │ │ │ └── index.tsx │ │ ├── InlineRename/ │ │ │ └── index.tsx │ │ ├── InlineTable/ │ │ │ └── index.tsx │ │ ├── InstantSwitch/ │ │ │ └── index.tsx │ │ ├── InvalidAPIKey/ │ │ │ ├── Bedrock.tsx │ │ │ ├── ComfyUIForm.tsx │ │ │ ├── LoadingContext.ts │ │ │ ├── ProviderApiKeyForm.tsx │ │ │ ├── __tests__/ │ │ │ │ └── ComfyUIForm.test.tsx │ │ │ ├── index.tsx │ │ │ └── useApiKey.ts │ │ ├── JSONSchemaConfig/ │ │ │ └── ItemRender.tsx │ │ ├── KeyValueEditor/ │ │ │ ├── index.tsx │ │ │ └── utils.ts │ │ ├── KnowledgeIcon/ │ │ │ └── index.tsx │ │ ├── LibIcon/ │ │ │ └── index.tsx │ │ ├── Link.tsx │ │ ├── Loading/ │ │ │ ├── BrandTextLoading/ │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── CircleLoading/ │ │ │ │ └── index.tsx │ │ │ ├── FullscreenLoading/ │ │ │ │ └── index.tsx │ │ │ ├── SkeletonLoading/ │ │ │ │ └── index.tsx │ │ │ ├── UpdateLoading/ │ │ │ │ └── index.tsx │ │ │ └── index.ts │ │ ├── MCPDepsIcon/ │ │ │ ├── Java.tsx │ │ │ ├── PowerShell.tsx │ │ │ ├── Terminal.tsx │ │ │ ├── UV.tsx │ │ │ └── index.tsx │ │ ├── MCPStdioCommandInput/ │ │ │ └── index.tsx │ │ ├── ManifestPreviewer/ │ │ │ └── index.tsx │ │ ├── MaxTokenSlider.tsx │ │ ├── MemberSelectionModal/ │ │ │ ├── MemberSelectionModal.tsx │ │ │ └── index.ts │ │ ├── Menu/ │ │ │ └── index.tsx │ │ ├── ModelSelect/ │ │ │ ├── NewModelBadge.tsx │ │ │ └── index.tsx │ │ ├── NProgress/ │ │ │ └── index.tsx │ │ ├── NeuralNetworkLoading/ │ │ │ └── index.tsx │ │ ├── Notification/ │ │ │ └── index.tsx │ │ ├── OfficialIcon.tsx │ │ ├── OllamaSetupGuide/ │ │ │ └── index.tsx │ │ ├── PageTitle/ │ │ │ └── index.tsx │ │ ├── PanelTitle/ │ │ │ └── index.tsx │ │ ├── Plugins/ │ │ │ ├── MCPTag.tsx │ │ │ ├── PluginAvatar.tsx │ │ │ └── PluginTag.tsx │ │ ├── ProgressItem/ │ │ │ └── index.tsx │ │ ├── PublishedTime.tsx │ │ ├── SafeSpacing/ │ │ │ └── index.tsx │ │ ├── SidebarHeader/ │ │ │ └── index.tsx │ │ ├── Skeleton/ │ │ │ ├── SkeletonInput.tsx │ │ │ ├── SkeletonSwitch.tsx │ │ │ └── index.ts │ │ ├── SkillAvatar/ │ │ │ └── index.tsx │ │ ├── SkillSourceTag/ │ │ │ └── index.tsx │ │ ├── Statistic/ │ │ │ └── index.tsx │ │ ├── StatisticCard/ │ │ │ ├── TitleWithPercentage.tsx │ │ │ ├── growthPercentage.tsx │ │ │ └── index.tsx │ │ ├── StopLoading.tsx │ │ ├── StreamingMarkdown/ │ │ │ └── index.tsx │ │ ├── StructuredData/ │ │ │ └── index.tsx │ │ ├── TextArea/ │ │ │ └── index.tsx │ │ ├── TipGuide/ │ │ │ └── index.tsx │ │ ├── TodoList.tsx │ │ ├── WebFavicon/ │ │ │ └── index.tsx │ │ ├── client/ │ │ │ ├── ClientOnly.tsx │ │ │ ├── ClientResponsiveContent/ │ │ │ │ └── index.tsx │ │ │ └── ClientResponsiveLayout.tsx │ │ ├── mdx/ │ │ │ ├── CodeBlock.tsx │ │ │ ├── Image.tsx │ │ │ ├── Image.vite.tsx │ │ │ ├── Link.tsx │ │ │ ├── constants.ts │ │ │ └── index.tsx │ │ ├── server/ │ │ │ ├── MobileNavLayout.tsx │ │ │ └── ServerLayout.tsx │ │ └── withSuspense.tsx │ ├── config/ │ │ ├── db.ts │ │ ├── featureFlags/ │ │ │ ├── index.ts │ │ │ ├── schema.test.ts │ │ │ ├── schema.ts │ │ │ └── utils/ │ │ │ ├── parser.test.ts │ │ │ └── parser.ts │ │ ├── klavis.ts │ │ └── routes/ │ │ └── index.ts │ ├── const/ │ │ ├── locale.ts │ │ ├── messageActionPortal.ts │ │ └── onboarding.ts │ ├── envs/ │ │ ├── __tests__/ │ │ │ ├── analytics.test.ts │ │ │ ├── app.test.ts │ │ │ └── client.test.ts │ │ ├── analytics.ts │ │ ├── app.ts │ │ ├── auth.ts │ │ ├── debug.ts │ │ ├── email.ts │ │ ├── file.ts │ │ ├── gateway.ts │ │ ├── image.ts │ │ ├── knowledge.ts │ │ ├── langfuse.ts │ │ ├── llm.ts │ │ ├── python.ts │ │ ├── redis.ts │ │ └── tools.ts │ ├── features/ │ │ ├── AgentBuilder/ │ │ │ ├── AgentBuilderConversation.tsx │ │ │ ├── AgentBuilderProvider.tsx │ │ │ ├── AgentBuilderWelcome.tsx │ │ │ ├── TopicSelector.tsx │ │ │ └── index.tsx │ │ ├── AgentGroupAvatar/ │ │ │ └── index.tsx │ │ ├── AgentInfo/ │ │ │ └── index.tsx │ │ ├── AgentSelectionEmpty.tsx │ │ ├── AgentSetting/ │ │ │ ├── AgentCategory/ │ │ │ │ ├── index.tsx │ │ │ │ └── useCategory.tsx │ │ │ ├── AgentChat/ │ │ │ │ └── index.tsx │ │ │ ├── AgentDocuments/ │ │ │ │ └── index.tsx │ │ │ ├── AgentMeta/ │ │ │ │ ├── AutoGenerateAvatar.tsx │ │ │ │ ├── AutoGenerateInput.tsx │ │ │ │ ├── AutoGenerateSelect.tsx │ │ │ │ ├── BackgroundSwatches.tsx │ │ │ │ └── index.tsx │ │ │ ├── AgentModal/ │ │ │ │ ├── ModelSelect.tsx │ │ │ │ └── index.tsx │ │ │ ├── AgentOpening/ │ │ │ │ ├── OpeningMessage.tsx │ │ │ │ ├── OpeningQuestions.tsx │ │ │ │ └── index.tsx │ │ │ ├── AgentPlugin/ │ │ │ │ ├── AddPluginButton.tsx │ │ │ │ ├── LoadingList.tsx │ │ │ │ ├── LocalPluginItem.tsx │ │ │ │ ├── PluginAction/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── AgentPrompt/ │ │ │ │ ├── TokenTag.tsx │ │ │ │ └── index.tsx │ │ │ ├── AgentSettings.tsx │ │ │ ├── AgentSettingsContent.tsx │ │ │ ├── AgentSettingsProvider.tsx │ │ │ ├── AgentTTS/ │ │ │ │ ├── SelectWithTTSPreview.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── options.tsx │ │ │ ├── StoreUpdater.tsx │ │ │ ├── hooks/ │ │ │ │ └── useAgentSettings.ts │ │ │ ├── index.tsx │ │ │ └── store/ │ │ │ ├── action.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── reducers/ │ │ │ │ ├── config.ts │ │ │ │ └── meta.ts │ │ │ └── selectors.ts │ │ ├── AgentSkillDetail/ │ │ │ ├── ContentViewer.tsx │ │ │ ├── FileTree.tsx │ │ │ └── index.tsx │ │ ├── AgentSkillEdit/ │ │ │ ├── SkillEditForm.tsx │ │ │ └── index.tsx │ │ ├── AlertBanner/ │ │ │ └── CloudBanner.tsx │ │ ├── AuthCard/ │ │ │ └── index.tsx │ │ ├── AvatarWithUpload/ │ │ │ └── index.tsx │ │ ├── ChangelogModal/ │ │ │ └── index.tsx │ │ ├── ChatInput/ │ │ │ ├── ActionBar/ │ │ │ │ ├── AgentMode/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Clear/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── History/ │ │ │ │ │ ├── Controls.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Knowledge/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useControls.tsx │ │ │ │ ├── Memory/ │ │ │ │ │ ├── Controls.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useMemoryEnabled.ts │ │ │ │ ├── Mention/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Model/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Params/ │ │ │ │ │ ├── Controls.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── STT/ │ │ │ │ │ ├── browser.tsx │ │ │ │ │ ├── common.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── openai.tsx │ │ │ │ ├── SaveTopic/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Search/ │ │ │ │ │ ├── Controls.tsx │ │ │ │ │ ├── FCSearchModel.tsx │ │ │ │ │ ├── FunctionCallingModelSelect/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ModelBuiltinSearch.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Token/ │ │ │ │ │ ├── TokenProgress.test.ts │ │ │ │ │ ├── TokenProgress.tsx │ │ │ │ │ ├── TokenTag.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Tools/ │ │ │ │ │ ├── KlavisServerItem.tsx │ │ │ │ │ ├── KlavisSkillIcon.tsx │ │ │ │ │ ├── LobehubSkillIcon.tsx │ │ │ │ │ ├── LobehubSkillServerItem.tsx │ │ │ │ │ ├── PopoverContent.tsx │ │ │ │ │ ├── SkillActivateMode.tsx │ │ │ │ │ ├── ToolItem.tsx │ │ │ │ │ ├── ToolsList.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useControls.tsx │ │ │ │ ├── Typo/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Upload/ │ │ │ │ │ ├── ServerMode.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── Action.tsx │ │ │ │ │ ├── ActionDropdown.tsx │ │ │ │ │ ├── ActionPopover.tsx │ │ │ │ │ └── CheckboxWithLoading.tsx │ │ │ │ ├── config.ts │ │ │ │ ├── context.ts │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── ChatInputProvider.tsx │ │ │ ├── Desktop/ │ │ │ │ ├── ContextContainer/ │ │ │ │ │ ├── ContextItem/ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ ├── FilePreviewModal.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── ContextList.tsx │ │ │ │ │ ├── SelectionItem.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ContextItem/ │ │ │ │ │ └── FileItem/ │ │ │ │ │ └── utils.ts │ │ │ │ ├── FilePreview/ │ │ │ │ │ ├── FileItem/ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── FileList.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── MentionedUsers/ │ │ │ │ │ ├── MentionedUserItem.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── InputEditor/ │ │ │ │ ├── ActionTag/ │ │ │ │ │ ├── ActionTag.tsx │ │ │ │ │ ├── ActionTagNode.ts │ │ │ │ │ ├── ActionTagPlugin.ts │ │ │ │ │ ├── ActionTagView.tsx │ │ │ │ │ ├── ReactActionTagPlugin.tsx │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── selectionObserver.ts │ │ │ │ │ ├── style.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── useEnabledSkills.ts │ │ │ │ │ └── useSlashActionItems.ts │ │ │ │ ├── MentionMenu/ │ │ │ │ │ ├── CategoryView.tsx │ │ │ │ │ ├── HomeView.tsx │ │ │ │ │ ├── MenuItem.tsx │ │ │ │ │ ├── SearchView.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── useKeyboardNav.ts │ │ │ │ │ └── useMenuPosition.ts │ │ │ │ ├── Placeholder.tsx │ │ │ │ ├── ReferTopic/ │ │ │ │ │ ├── ReactReferTopicPlugin.tsx │ │ │ │ │ ├── ReferTopic.tsx │ │ │ │ │ ├── ReferTopicNode.ts │ │ │ │ │ ├── ReferTopicPlugin.ts │ │ │ │ │ ├── ReferTopicView.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── plugins.ts │ │ │ │ ├── useAgentMentionItems.tsx │ │ │ │ ├── useMentionCategories.tsx │ │ │ │ └── useTopicMentionItems.tsx │ │ │ ├── Mobile/ │ │ │ │ ├── FilePreview/ │ │ │ │ │ ├── FileItem/ │ │ │ │ │ │ ├── File.tsx │ │ │ │ │ │ ├── Image.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── RuntimeConfig/ │ │ │ │ ├── ApprovalMode.tsx │ │ │ │ ├── WorkingDirectory.tsx │ │ │ │ └── index.tsx │ │ │ ├── SendArea/ │ │ │ │ ├── ExpandButton.tsx │ │ │ │ ├── SendButton.tsx │ │ │ │ ├── ShortcutHint.tsx │ │ │ │ └── index.tsx │ │ │ ├── StoreUpdater.tsx │ │ │ ├── TypoBar/ │ │ │ │ └── index.tsx │ │ │ ├── components/ │ │ │ │ └── UploadDetail/ │ │ │ │ ├── UploadStatus.tsx │ │ │ │ └── index.tsx │ │ │ ├── hooks/ │ │ │ │ ├── useAgentEnableSearch.ts │ │ │ │ ├── useAgentId.ts │ │ │ │ ├── useChatInputEditor.ts │ │ │ │ └── useUpdateAgentConfig.ts │ │ │ ├── index.ts │ │ │ ├── store/ │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ ├── initialState.ts │ │ │ │ └── selectors.ts │ │ │ └── types.ts │ │ ├── ChatMiniMap/ │ │ │ ├── MinimapIndicator.tsx │ │ │ ├── index.tsx │ │ │ ├── styles.ts │ │ │ ├── types.ts │ │ │ ├── useMinimapData.ts │ │ │ └── utils.ts │ │ ├── CommandMenu/ │ │ │ ├── AskAIMenu.tsx │ │ │ ├── AskAgentCommands.tsx │ │ │ ├── ChatList.tsx │ │ │ ├── CommandMenuContext.tsx │ │ │ ├── ContextCommands.tsx │ │ │ ├── MainMenu.tsx │ │ │ ├── README.md │ │ │ ├── SearchResults.tsx │ │ │ ├── ThemeMenu.tsx │ │ │ ├── components/ │ │ │ │ ├── CommandFooter.tsx │ │ │ │ ├── CommandInput.tsx │ │ │ │ ├── CommandItem.tsx │ │ │ │ └── index.ts │ │ │ ├── index.tsx │ │ │ ├── styles.ts │ │ │ ├── types.ts │ │ │ ├── useCommandMenu.ts │ │ │ └── utils/ │ │ │ ├── context.ts │ │ │ ├── contextCommands.ts │ │ │ ├── queryParser.test.ts │ │ │ └── queryParser.ts │ │ ├── Conversation/ │ │ │ ├── ChatInput/ │ │ │ │ ├── QueueTray.tsx │ │ │ │ └── index.tsx │ │ │ ├── ChatItem/ │ │ │ │ ├── ChatItem.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ ├── Avatar.tsx │ │ │ │ │ ├── ErrorContent.tsx │ │ │ │ │ ├── Loading.tsx │ │ │ │ │ ├── MessageContent/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── Title.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── style.ts │ │ │ │ └── type.ts │ │ │ ├── ChatList/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AutoScroll/ │ │ │ │ │ │ ├── DebugInspector.tsx │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useAutoScrollEnabled.ts │ │ │ │ │ ├── BackBottom/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ └── VirtualizedList.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useConversationSpacer.test.ts │ │ │ │ │ ├── useConversationSpacer.ts │ │ │ │ │ ├── useScrollToUserMessage.test.ts │ │ │ │ │ └── useScrollToUserMessage.ts │ │ │ │ └── index.tsx │ │ │ ├── ConversationProvider.tsx │ │ │ ├── Error/ │ │ │ │ ├── BaseErrorForm.tsx │ │ │ │ ├── ChatInvalidApiKey.tsx │ │ │ │ ├── ExceededContextWindowError.tsx │ │ │ │ ├── OllamaBizError/ │ │ │ │ │ ├── InvalidOllamaModel.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── OllamaSetupGuide/ │ │ │ │ │ ├── Desktop.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style.tsx │ │ │ ├── InterventionBar/ │ │ │ │ ├── InterventionContent.tsx │ │ │ │ ├── InterventionTabBar.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── Markdown/ │ │ │ │ ├── index.tsx │ │ │ │ └── plugins/ │ │ │ │ ├── ImageSearchRef/ │ │ │ │ │ ├── Render.test.tsx │ │ │ │ │ ├── Render.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── rehypePlugin.test.ts │ │ │ │ │ └── rehypePlugin.ts │ │ │ │ ├── LobeArtifact/ │ │ │ │ │ ├── Render/ │ │ │ │ │ │ ├── Icon.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── rehypePlugin.test.ts │ │ │ │ │ └── rehypePlugin.ts │ │ │ │ ├── LobeThinking/ │ │ │ │ │ ├── Render.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── LocalFile/ │ │ │ │ │ ├── Render/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Mention/ │ │ │ │ │ ├── Render.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Thinking/ │ │ │ │ │ ├── Render.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── remarkPlugins/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── createRemarkSelfClosingTagPlugin.test.ts.snap │ │ │ │ │ ├── createRemarkCustomTagPlugin.ts │ │ │ │ │ ├── createRemarkCustomTagWithAttributesPlugin.ts │ │ │ │ │ ├── createRemarkSelfClosingTagPlugin.test.ts │ │ │ │ │ ├── createRemarkSelfClosingTagPlugin.ts │ │ │ │ │ ├── getNodeContent.test.ts │ │ │ │ │ └── getNodeContent.ts │ │ │ │ ├── type.ts │ │ │ │ └── utils.ts │ │ │ ├── Messages/ │ │ │ │ ├── AgentCouncil/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AutoScrollShadow.tsx │ │ │ │ │ │ ├── CouncilList.tsx │ │ │ │ │ │ ├── CouncilMember.tsx │ │ │ │ │ │ └── ScrollShadowWithButton.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Assistant/ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ ├── Error.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useAssistantActions.ts │ │ │ │ │ ├── Extra/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── InterruptedHint.tsx │ │ │ │ │ │ └── MessageContent.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useMarkdown.tsx │ │ │ │ ├── AssistantGroup/ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useGroupActions.ts │ │ │ │ │ ├── Tool/ │ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ │ ├── Settings.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Debug/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ ├── AbortResponse.tsx │ │ │ │ │ │ │ ├── Arguments/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── ErrorResponse.tsx │ │ │ │ │ │ │ ├── Intervention/ │ │ │ │ │ │ │ │ ├── ApprovalActions.tsx │ │ │ │ │ │ │ │ ├── Fallback.tsx │ │ │ │ │ │ │ │ ├── KeyValueEditor.tsx │ │ │ │ │ │ │ │ ├── SecurityBlacklistWarning.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── LoadingPlaceholder/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── PluginSettings.tsx │ │ │ │ │ │ │ ├── RejectedResponse.tsx │ │ │ │ │ │ │ ├── Render/ │ │ │ │ │ │ │ │ ├── CustomRender.tsx │ │ │ │ │ │ │ │ ├── FallbacktArgumentRender.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Inspector/ │ │ │ │ │ │ │ ├── ExecutionTime.tsx │ │ │ │ │ │ │ ├── StatusIndicator.tsx │ │ │ │ │ │ │ ├── ToolTitle.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Tools.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── CollapsedMessage.tsx │ │ │ │ │ │ ├── ContentBlock.tsx │ │ │ │ │ │ ├── EditState.tsx │ │ │ │ │ │ ├── Group.tsx │ │ │ │ │ │ ├── GroupItem.tsx │ │ │ │ │ │ └── MessageContent.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useMarkdown.tsx │ │ │ │ ├── CompressedGroup/ │ │ │ │ │ ├── CompressedMessageItem.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── logic.test.ts │ │ │ │ │ └── logic.ts │ │ │ │ ├── Contexts/ │ │ │ │ │ ├── MessageActionProvider.tsx │ │ │ │ │ ├── MessageAggregationContext.ts │ │ │ │ │ └── message-action-context.ts │ │ │ │ ├── GroupTasks/ │ │ │ │ │ ├── TaskItem/ │ │ │ │ │ │ ├── ClientTaskItem.tsx │ │ │ │ │ │ ├── ServerTaskItem.tsx │ │ │ │ │ │ ├── TaskTitle.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useClientTaskStats.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── Supervisor/ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useGroupActions.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── CollapsedMessage.tsx │ │ │ │ │ │ ├── ContentBlock.tsx │ │ │ │ │ │ └── Group.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Task/ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ ├── Error.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useAssistantActions.ts │ │ │ │ │ ├── ClientTaskDetail/ │ │ │ │ │ │ ├── InitializingState.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── TaskDetailPanel/ │ │ │ │ │ │ ├── StatusContent.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── MessageContent.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Tasks/ │ │ │ │ │ ├── TaskItem/ │ │ │ │ │ │ ├── ClientTaskItem.tsx │ │ │ │ │ │ ├── ServerTaskItem.tsx │ │ │ │ │ │ ├── TaskTitle.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useClientTaskStats.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── shared/ │ │ │ │ │ ├── CompletedState.tsx │ │ │ │ │ ├── ErrorState.tsx │ │ │ │ │ ├── InitializingState.tsx │ │ │ │ │ ├── ProcessingState.tsx │ │ │ │ │ ├── TaskAvatar.tsx │ │ │ │ │ ├── TaskContent.tsx │ │ │ │ │ ├── TaskMessages.tsx │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useTaskPolling.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── Tool/ │ │ │ │ │ ├── ErrorBoundary/ │ │ │ │ │ │ ├── ErrorResult.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Tool/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── preload.ts │ │ │ │ ├── User/ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useUserActions.ts │ │ │ │ │ ├── Extra.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ContentPreview.tsx │ │ │ │ │ │ ├── FileListViewer/ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ImageFileListViewer.tsx │ │ │ │ │ │ ├── MessageContent.test.tsx │ │ │ │ │ │ ├── MessageContent.tsx │ │ │ │ │ │ ├── PageSelections.tsx │ │ │ │ │ │ ├── RichTextMessage.test.tsx │ │ │ │ │ │ ├── RichTextMessage.tsx │ │ │ │ │ │ └── VideoFileListViewer.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useMarkdown.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── ContentLoading.tsx │ │ │ │ │ ├── DisplayContent.tsx │ │ │ │ │ ├── Extras/ │ │ │ │ │ │ ├── ExtraContainer.tsx │ │ │ │ │ │ ├── TTS/ │ │ │ │ │ │ │ ├── FilePlayer.tsx │ │ │ │ │ │ │ ├── InitPlayer.tsx │ │ │ │ │ │ │ ├── Player.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Translate.tsx │ │ │ │ │ │ └── Usage/ │ │ │ │ │ │ ├── UsageDetail/ │ │ │ │ │ │ │ ├── AnimatedNumber.tsx │ │ │ │ │ │ │ ├── ModelCard.tsx │ │ │ │ │ │ │ ├── TokenProgress.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── pricing.ts │ │ │ │ │ │ │ └── tokens.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── FileChunks/ │ │ │ │ │ │ ├── ChunkItem.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── ImageFileListViewer.tsx │ │ │ │ │ ├── IntentUnderstanding.tsx │ │ │ │ │ ├── MessageBranch.tsx │ │ │ │ │ ├── Reasoning.tsx │ │ │ │ │ ├── RichContentRenderer.tsx │ │ │ │ │ └── SearchGrounding.tsx │ │ │ │ └── index.tsx │ │ │ ├── StoreUpdater.tsx │ │ │ ├── TodoProgress/ │ │ │ │ └── index.tsx │ │ │ ├── components/ │ │ │ │ ├── History/ │ │ │ │ │ ├── HistoryDivider.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Reaction/ │ │ │ │ │ ├── ReactionDisplay.tsx │ │ │ │ │ ├── ReactionPicker.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ShareMessageModal/ │ │ │ │ │ ├── ShareImage/ │ │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── ShareText/ │ │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── template.test.ts │ │ │ │ │ │ ├── template.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── SkeletonList.tsx │ │ │ │ └── Thinking/ │ │ │ │ ├── StatusIndicator.tsx │ │ │ │ ├── Title.tsx │ │ │ │ └── index.tsx │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── useAgentMeta.test.ts │ │ │ │ ├── useAgentMeta.ts │ │ │ │ ├── useChatItemContextMenu.tsx │ │ │ │ ├── useChatListActionsBar.tsx │ │ │ │ └── useDoubleClickEdit.ts │ │ │ ├── index.ts │ │ │ ├── store/ │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ ├── initialState.ts │ │ │ │ ├── selectors.test.ts │ │ │ │ ├── selectors.ts │ │ │ │ └── slices/ │ │ │ │ ├── context/ │ │ │ │ │ └── selectors.ts │ │ │ │ ├── data/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── pendingInterventions.ts │ │ │ │ │ ├── reducer.test.ts │ │ │ │ │ ├── reducer.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── generation/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ └── action.ts │ │ │ │ ├── input/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── message/ │ │ │ │ │ └── action/ │ │ │ │ │ ├── crud.test.ts │ │ │ │ │ ├── crud.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reaction.ts │ │ │ │ │ ├── sendMessage.ts │ │ │ │ │ ├── state.test.ts │ │ │ │ │ └── state.ts │ │ │ │ ├── messageState/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── tool/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ └── action.ts │ │ │ │ └── virtuaList/ │ │ │ │ ├── action.ts │ │ │ │ ├── initialState.ts │ │ │ │ └── selectors.ts │ │ │ ├── store.test.ts │ │ │ ├── types/ │ │ │ │ ├── context.ts │ │ │ │ ├── hooks.ts │ │ │ │ ├── index.ts │ │ │ │ ├── operation.ts │ │ │ │ └── ui.ts │ │ │ └── utils/ │ │ │ ├── localMessages.ts │ │ │ ├── markdown.test.ts │ │ │ └── markdown.ts │ │ ├── DataImporter/ │ │ │ ├── Error.tsx │ │ │ ├── FileUploading.tsx │ │ │ ├── ImportDetail.tsx │ │ │ ├── Loading.tsx │ │ │ ├── SuccessResult.tsx │ │ │ ├── config.ts │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ ├── DesktopFileMenuBridge/ │ │ │ └── index.tsx │ │ ├── DesktopNavigationBridge/ │ │ │ └── index.tsx │ │ ├── DevPanel/ │ │ │ ├── CacheViewer/ │ │ │ │ ├── DataTable/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── cacheProvider.tsx │ │ │ │ ├── getCacheEntries.ts │ │ │ │ ├── index.tsx │ │ │ │ └── schema.ts │ │ │ ├── FeatureFlagViewer/ │ │ │ │ ├── Form.tsx │ │ │ │ └── index.tsx │ │ │ ├── MetadataViewer/ │ │ │ │ ├── Ld.tsx │ │ │ │ ├── MetaData.tsx │ │ │ │ ├── Og.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── useHead.ts │ │ │ ├── SystemInspector/ │ │ │ │ ├── AiProviderRuntimeConfig.tsx │ │ │ │ ├── JsonViewer.tsx │ │ │ │ ├── ServerConfig.tsx │ │ │ │ └── index.tsx │ │ │ ├── features/ │ │ │ │ ├── FloatPanel.tsx │ │ │ │ ├── Header.tsx │ │ │ │ └── Table/ │ │ │ │ ├── TableCell.tsx │ │ │ │ ├── TooltipContent.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── EditingPopover/ │ │ │ ├── AgentContent.tsx │ │ │ ├── GroupContent.tsx │ │ │ ├── index.tsx │ │ │ └── store.ts │ │ ├── EditorCanvas/ │ │ │ ├── AutoSaveHint.tsx │ │ │ ├── DiffAllToolbar.tsx │ │ │ ├── DocumentIdMode.tsx │ │ │ ├── EditorCanvas.test.tsx │ │ │ ├── EditorCanvas.tsx │ │ │ ├── EditorDataMode.tsx │ │ │ ├── ErrorBoundary.tsx │ │ │ ├── InlineToolbar.tsx │ │ │ ├── InternalEditor.test.tsx │ │ │ ├── InternalEditor.tsx │ │ │ ├── UnsavedChangesGuard.test.tsx │ │ │ ├── UnsavedChangesGuard.tsx │ │ │ ├── actions.ts │ │ │ ├── index.ts │ │ │ └── useImageUpload.ts │ │ ├── EditorModal/ │ │ │ ├── EditorCanvas.test.tsx │ │ │ ├── EditorCanvas.tsx │ │ │ ├── TextArea.tsx │ │ │ ├── Typobar.tsx │ │ │ └── index.tsx │ │ ├── Electron/ │ │ │ ├── AuthRequiredModal/ │ │ │ │ └── index.tsx │ │ │ ├── connection/ │ │ │ │ ├── Connection.tsx │ │ │ │ ├── ConnectionMode.tsx │ │ │ │ ├── DeviceGateway.tsx │ │ │ │ ├── Option.tsx │ │ │ │ ├── RemoteStatus.tsx │ │ │ │ ├── Waiting.tsx │ │ │ │ └── WaitingAnim.tsx │ │ │ ├── navigation/ │ │ │ │ ├── cachedData.ts │ │ │ │ ├── routeMetadata.ts │ │ │ │ ├── useNavigationHistory.ts │ │ │ │ └── useTabNavigation.ts │ │ │ ├── system/ │ │ │ │ └── useWatchThemeUpdate.ts │ │ │ ├── titlebar/ │ │ │ │ ├── NavigationBar.tsx │ │ │ │ ├── RecentlyViewed/ │ │ │ │ │ ├── PageItem.tsx │ │ │ │ │ ├── Section.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── usePluginContext.ts │ │ │ │ │ │ └── useResolvedPages.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ ├── agentPlugin.ts │ │ │ │ │ │ ├── agentTopicPlugin.ts │ │ │ │ │ │ ├── communityPlugin.ts │ │ │ │ │ │ ├── groupPlugin.ts │ │ │ │ │ │ ├── groupTopicPlugin.ts │ │ │ │ │ │ ├── homePlugin.ts │ │ │ │ │ │ ├── imagePlugin.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── memoryPlugin.ts │ │ │ │ │ │ ├── pagePlugin.ts │ │ │ │ │ │ ├── registry.ts │ │ │ │ │ │ ├── resourcePlugin.ts │ │ │ │ │ │ ├── settingsPlugin.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── storage.ts │ │ │ │ │ ├── styles.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── SimpleTitleBar.tsx │ │ │ │ ├── TabBar/ │ │ │ │ │ ├── TabItem.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ └── useResolvedTabs.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── storage.ts │ │ │ │ │ └── styles.ts │ │ │ │ ├── TitleBar.tsx │ │ │ │ ├── WinControl.tsx │ │ │ │ ├── layout.test.ts │ │ │ │ └── layout.ts │ │ │ └── updater/ │ │ │ └── UpdateNotification.tsx │ │ ├── FileSidePanel/ │ │ │ └── index.tsx │ │ ├── FileViewer/ │ │ │ ├── NotSupport/ │ │ │ │ └── index.tsx │ │ │ ├── Renderer/ │ │ │ │ ├── Code/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Image/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── MSDoc/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Markdown/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── PDF/ │ │ │ │ │ ├── HighlightLayer.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style.ts │ │ │ │ │ └── useResizeObserver.ts │ │ │ │ └── Video/ │ │ │ │ └── index.tsx │ │ │ ├── hooks/ │ │ │ │ └── useTextFileLoader.ts │ │ │ └── index.tsx │ │ ├── Follow/ │ │ │ └── index.tsx │ │ ├── GroupAvatar/ │ │ │ └── index.tsx │ │ ├── GroupInfo/ │ │ │ └── index.tsx │ │ ├── HotkeyHelperPanel/ │ │ │ ├── HotkeyContent.tsx │ │ │ └── index.tsx │ │ ├── LibraryModal/ │ │ │ ├── AddFilesToKnowledgeBase/ │ │ │ │ ├── SelectForm.tsx │ │ │ │ ├── index.test.tsx │ │ │ │ └── index.tsx │ │ │ ├── AssignKnowledgeBase/ │ │ │ │ ├── Item/ │ │ │ │ │ ├── Action.tsx │ │ │ │ │ ├── EditCustomPlugin.tsx │ │ │ │ │ ├── MasonryItem.tsx │ │ │ │ │ ├── MasonryItemWrapper.tsx │ │ │ │ │ ├── PluginTag.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── List.tsx │ │ │ │ ├── Loading.tsx │ │ │ │ ├── MasonrySkeleton.tsx │ │ │ │ ├── ViewSwitcher.tsx │ │ │ │ └── index.tsx │ │ │ ├── CreateNew/ │ │ │ │ ├── CreateForm.tsx │ │ │ │ └── index.tsx │ │ │ └── index.ts │ │ ├── LocalFile/ │ │ │ ├── LocalFile.tsx │ │ │ ├── LocalFolder.tsx │ │ │ └── index.tsx │ │ ├── MCP/ │ │ │ ├── MCPDetail/ │ │ │ │ ├── Loading.tsx │ │ │ │ └── index.tsx │ │ │ ├── MCPInstallProgress/ │ │ │ │ ├── InstallError/ │ │ │ │ │ ├── ErrorDetails.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── MCPConfigForm.tsx │ │ │ │ ├── MCPDependenciesGuide.tsx │ │ │ │ └── index.tsx │ │ │ ├── MCPSettings/ │ │ │ │ ├── McpSettingsModal.tsx │ │ │ │ └── index.tsx │ │ │ ├── Scores.tsx │ │ │ ├── calculateScore.ts │ │ │ ├── useScoreList.ts │ │ │ ├── utils.test.ts │ │ │ └── utils.ts │ │ ├── MCPPluginDetail/ │ │ │ ├── Agents.tsx │ │ │ ├── CollapseDesc.tsx │ │ │ ├── CollapseLayout.tsx │ │ │ ├── Deployment/ │ │ │ │ ├── Platform/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── DetailProvider.tsx │ │ │ ├── Header.tsx │ │ │ ├── Nav.tsx │ │ │ ├── Overview/ │ │ │ │ ├── TagList.tsx │ │ │ │ └── index.tsx │ │ │ ├── Schema/ │ │ │ │ ├── Block.tsx │ │ │ │ ├── Prompts.tsx │ │ │ │ ├── Resources.tsx │ │ │ │ ├── Tools.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── types.ts │ │ │ └── Score/ │ │ │ ├── GithubBadge/ │ │ │ │ └── index.tsx │ │ │ ├── ScoreItem.tsx │ │ │ ├── ScoreList.tsx │ │ │ ├── TotalScore.tsx │ │ │ └── index.tsx │ │ ├── MobileSwitchLoading/ │ │ │ └── index.tsx │ │ ├── MobileTabBar/ │ │ │ └── index.tsx │ │ ├── ModelParamsControl/ │ │ │ ├── FrequencyPenalty.tsx │ │ │ ├── PresencePenalty.tsx │ │ │ ├── Temperature.tsx │ │ │ ├── TopP.tsx │ │ │ └── index.ts │ │ ├── ModelSelect/ │ │ │ └── index.tsx │ │ ├── ModelSwitchPanel/ │ │ │ ├── __mocks__/ │ │ │ │ └── mockEnabledChatModels.ts │ │ │ ├── components/ │ │ │ │ ├── ControlsForm/ │ │ │ │ │ ├── CodexMaxReasoningEffortSlider.tsx │ │ │ │ │ ├── ContextCachingSwitch.tsx │ │ │ │ │ ├── ControlsForm.tsx │ │ │ │ │ ├── EffortSlider.tsx │ │ │ │ │ ├── GPT51ReasoningEffortSlider.tsx │ │ │ │ │ ├── GPT52ProReasoningEffortSlider.tsx │ │ │ │ │ ├── GPT52ReasoningEffortSlider.tsx │ │ │ │ │ ├── GPT5ReasoningEffortSlider.tsx │ │ │ │ │ ├── Grok420ReasoningEffortSlider.tsx │ │ │ │ │ ├── ImageAspectRatio2Select.tsx │ │ │ │ │ ├── ImageAspectRatioSelect.tsx │ │ │ │ │ ├── ImageResolution2Slider.tsx │ │ │ │ │ ├── ImageResolutionSlider.tsx │ │ │ │ │ ├── LevelSlider.tsx │ │ │ │ │ ├── ReasoningEffortSlider.tsx │ │ │ │ │ ├── ReasoningTokenSlider.tsx │ │ │ │ │ ├── ReasoningTokenSlider32k.tsx │ │ │ │ │ ├── ReasoningTokenSlider80k.tsx │ │ │ │ │ ├── TextVerbositySlider.tsx │ │ │ │ │ ├── ThinkingBudgetSlider.tsx │ │ │ │ │ ├── ThinkingLevel2Slider.tsx │ │ │ │ │ ├── ThinkingLevel3Slider.tsx │ │ │ │ │ ├── ThinkingLevel4Slider.tsx │ │ │ │ │ ├── ThinkingLevel5Slider.tsx │ │ │ │ │ ├── ThinkingLevelSlider.tsx │ │ │ │ │ ├── ThinkingSlider.tsx │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── createLevelSlider.test.tsx │ │ │ │ │ ├── createLevelSlider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Footer.tsx │ │ │ │ ├── List/ │ │ │ │ │ ├── GenerationListItemRenderer.tsx │ │ │ │ │ ├── GenerationMultipleProvidersItem.tsx │ │ │ │ │ ├── ListItemRenderer.tsx │ │ │ │ │ ├── MultipleProvidersModelItem.tsx │ │ │ │ │ ├── SingleProviderModelItem.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ModelDetailPanel.tsx │ │ │ │ ├── PanelContent.tsx │ │ │ │ └── Toolbar.tsx │ │ │ ├── const.ts │ │ │ ├── hooks/ │ │ │ │ ├── useBuildListItems.ts │ │ │ │ ├── useCurrentModelName.ts │ │ │ │ ├── useModelAndProvider.ts │ │ │ │ ├── usePanelHandlers.ts │ │ │ │ ├── usePanelSize.ts │ │ │ │ └── usePanelState.ts │ │ │ ├── index.tsx │ │ │ ├── styles.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── NavHeader/ │ │ │ └── index.tsx │ │ ├── NavPanel/ │ │ │ ├── OverlayContainer.ts │ │ │ ├── SideBarDrawer.tsx │ │ │ ├── SideBarHeaderLayout.tsx │ │ │ ├── SideBarLayout.tsx │ │ │ ├── ToggleLeftPanelButton.tsx │ │ │ ├── components/ │ │ │ │ ├── BackButton.tsx │ │ │ │ ├── BackNav.tsx │ │ │ │ ├── EmptyNavItem.tsx │ │ │ │ ├── NavItem.tsx │ │ │ │ ├── NavPanelDraggable.tsx │ │ │ │ ├── SessionHydration.tsx │ │ │ │ └── SkeletonList.tsx │ │ │ ├── hooks/ │ │ │ │ └── useNavPanel.ts │ │ │ └── index.tsx │ │ ├── OllamaModelDownloader/ │ │ │ ├── index.tsx │ │ │ └── useDownloadMonitor.ts │ │ ├── OllamaSetupGuide/ │ │ │ ├── Desktop.tsx │ │ │ └── index.tsx │ │ ├── Onboarding/ │ │ │ ├── Agent/ │ │ │ │ ├── Conversation.test.tsx │ │ │ │ ├── Conversation.tsx │ │ │ │ ├── DebugExportButton.tsx │ │ │ │ ├── HistoryPanel.tsx │ │ │ │ ├── OnboardingConversationProvider.test.tsx │ │ │ │ ├── OnboardingConversationProvider.tsx │ │ │ │ ├── context.test.ts │ │ │ │ ├── context.ts │ │ │ │ ├── history.test.ts │ │ │ │ ├── history.ts │ │ │ │ ├── index.tsx │ │ │ │ └── staticStyle.ts │ │ │ ├── Classic/ │ │ │ │ └── index.tsx │ │ │ └── components/ │ │ │ ├── ModeSwitch.test.tsx │ │ │ └── ModeSwitch.tsx │ │ ├── PWAInstall/ │ │ │ ├── Install.tsx │ │ │ └── index.tsx │ │ ├── PageEditor/ │ │ │ ├── Copilot/ │ │ │ │ ├── AgentSelector/ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ ├── AgentItem.tsx │ │ │ │ │ ├── AgentSelectorAction.tsx │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ ├── Conversation.tsx │ │ │ │ ├── CopilotModelSelector.tsx │ │ │ │ ├── Toolbar.tsx │ │ │ │ ├── TopicSelector/ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ ├── TopicItem.tsx │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ ├── Welcome.tsx │ │ │ │ └── index.tsx │ │ │ ├── EditorCanvas/ │ │ │ │ ├── index.tsx │ │ │ │ ├── useAskCopilotItem.tsx │ │ │ │ └── useSlashItems.tsx │ │ │ ├── Header/ │ │ │ │ ├── Breadcrumb.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── useMenu.tsx │ │ │ ├── PageAgentProvider.tsx │ │ │ ├── PageEditor.test.tsx │ │ │ ├── PageEditor.tsx │ │ │ ├── PageEditorProvider.tsx │ │ │ ├── PageTitle/ │ │ │ │ └── index.tsx │ │ │ ├── StoreUpdater.tsx │ │ │ ├── TitleSection.tsx │ │ │ ├── index.ts │ │ │ └── store/ │ │ │ ├── action.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ └── selectors.ts │ │ ├── PageEmpty.tsx │ │ ├── PageExplorer/ │ │ │ ├── PageExplorerPlaceholder.tsx │ │ │ └── index.tsx │ │ ├── Pages/ │ │ │ ├── PageLayout/ │ │ │ │ ├── Body/ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ ├── AllPagesDrawer/ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── List/ │ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ ├── Editing.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ ├── DataSync.tsx │ │ │ │ ├── Header/ │ │ │ │ │ ├── AddButton.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Sidebar.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── PageTitle.tsx │ │ │ └── index.ts │ │ ├── PlanIcon/ │ │ │ └── index.tsx │ │ ├── PluginAvatar/ │ │ │ └── index.tsx │ │ ├── PluginDetailModal/ │ │ │ ├── APIs.tsx │ │ │ ├── Meta.tsx │ │ │ └── index.tsx │ │ ├── PluginDevModal/ │ │ │ ├── LocalForm.tsx │ │ │ ├── MCPManifestForm/ │ │ │ │ ├── ArgsInput.tsx │ │ │ │ ├── CollapsibleSection.tsx │ │ │ │ ├── MCPTypeSelect.tsx │ │ │ │ ├── QuickImportSection.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ │ ├── PluginPreview/ │ │ │ │ ├── ApiVisualizer.tsx │ │ │ │ ├── EmptyState.tsx │ │ │ │ └── index.tsx │ │ │ ├── UrlManifestForm.tsx │ │ │ └── index.tsx │ │ ├── PluginSettings/ │ │ │ └── index.tsx │ │ ├── PluginTag/ │ │ │ ├── PluginStatus.tsx │ │ │ └── index.tsx │ │ ├── PluginsUI/ │ │ │ └── Render/ │ │ │ ├── BuiltinType/ │ │ │ │ ├── index.test.tsx │ │ │ │ └── index.tsx │ │ │ ├── DefaultType/ │ │ │ │ ├── IFrameRender/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Loading.tsx │ │ │ ├── MCPType/ │ │ │ │ └── index.tsx │ │ │ ├── MarkdownType/ │ │ │ │ └── index.tsx │ │ │ ├── StandaloneType/ │ │ │ │ ├── Iframe.tsx │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── useParseContent.ts │ │ │ └── utils/ │ │ │ ├── iframeOnReady.test.ts │ │ │ ├── iframeOnReady.ts │ │ │ ├── listenToPlugin.test.ts │ │ │ ├── listenToPlugin.ts │ │ │ ├── pluginSettings.test.ts │ │ │ ├── pluginSettings.ts │ │ │ ├── pluginState.test.ts │ │ │ ├── pluginState.ts │ │ │ ├── postMessage.test.ts │ │ │ └── postMessage.ts │ │ ├── Portal/ │ │ │ ├── Artifacts/ │ │ │ │ ├── Body/ │ │ │ │ │ ├── Renderer/ │ │ │ │ │ │ ├── HTML.tsx │ │ │ │ │ │ ├── React/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── template.ts │ │ │ │ │ │ ├── SVG.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Title.tsx │ │ │ │ └── index.ts │ │ │ ├── Document/ │ │ │ │ ├── AutoSaveHint.tsx │ │ │ │ ├── Body.tsx │ │ │ │ ├── EditorCanvas.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── TodoList.tsx │ │ │ │ ├── Wrapper.tsx │ │ │ │ └── index.ts │ │ │ ├── FilePreview/ │ │ │ │ ├── Body/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Title.tsx │ │ │ │ └── index.ts │ │ │ ├── GroupThread/ │ │ │ │ ├── Body/ │ │ │ │ │ ├── ThreadChatItem.tsx │ │ │ │ │ ├── ThreadChatList.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Header/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Title/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── Home/ │ │ │ │ ├── Body/ │ │ │ │ │ ├── Files/ │ │ │ │ │ │ ├── FileList/ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Plugins/ │ │ │ │ │ │ ├── ArtifactList/ │ │ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Title.tsx │ │ │ │ └── index.ts │ │ │ ├── MessageDetail/ │ │ │ │ ├── Body/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Title.tsx │ │ │ │ └── index.ts │ │ │ ├── Notebook/ │ │ │ │ ├── Body.tsx │ │ │ │ ├── DocumentItem.tsx │ │ │ │ ├── Title.tsx │ │ │ │ └── index.ts │ │ │ ├── Plugins/ │ │ │ │ ├── Body/ │ │ │ │ │ ├── ToolRender.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Title.tsx │ │ │ │ └── index.ts │ │ │ ├── Thread/ │ │ │ │ ├── Chat/ │ │ │ │ │ ├── ThreadDivider/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useThreadActionsBarConfig.ts │ │ │ │ ├── Header/ │ │ │ │ │ ├── Active.tsx │ │ │ │ │ ├── New.tsx │ │ │ │ │ ├── Title.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── components/ │ │ │ │ ├── Header.tsx │ │ │ │ └── SkeletonLoading.tsx │ │ │ ├── router.tsx │ │ │ └── type.ts │ │ ├── ProfileEditor/ │ │ │ ├── AgentTool.tsx │ │ │ ├── Empty.tsx │ │ │ ├── PluginTag.tsx │ │ │ ├── PopoverContent.tsx │ │ │ └── index.ts │ │ ├── ProtocolUrlHandler/ │ │ │ ├── InstallPlugin/ │ │ │ │ ├── ConfigDisplay.tsx │ │ │ │ ├── CustomPluginInstallModal.tsx │ │ │ │ ├── OfficialPluginInstallModal/ │ │ │ │ │ ├── Detail.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── types.ts │ │ │ └── index.tsx │ │ ├── ResourceManager/ │ │ │ ├── components/ │ │ │ │ ├── ChunkDrawer/ │ │ │ │ │ ├── ChunkList/ │ │ │ │ │ │ ├── ChunkItem.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Content.tsx │ │ │ │ │ ├── Loading/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SimilaritySearchList/ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Editor/ │ │ │ │ │ ├── FileContent.tsx │ │ │ │ │ ├── FileCopilot.tsx │ │ │ │ │ ├── FileDetail.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Explorer/ │ │ │ │ │ ├── EmptyPlaceholder.tsx │ │ │ │ │ ├── Header/ │ │ │ │ │ │ ├── Breadcrumb.tsx │ │ │ │ │ │ ├── SearchInput.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ItemDropdown/ │ │ │ │ │ │ ├── DropdownMenu.tsx │ │ │ │ │ │ └── useFileItemDropdown.tsx │ │ │ │ │ ├── ListView/ │ │ │ │ │ │ ├── ColumnResizeHandle.tsx │ │ │ │ │ │ ├── ListItem/ │ │ │ │ │ │ │ ├── ChunkTag.tsx │ │ │ │ │ │ │ ├── FileListItemActions.tsx │ │ │ │ │ │ │ ├── FileListItemName.tsx │ │ │ │ │ │ │ ├── TruncatedFileName.tsx │ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── styles.ts │ │ │ │ │ │ │ ├── useFileListItemDrag.ts │ │ │ │ │ │ │ ├── useFileListItemMeta.ts │ │ │ │ │ │ │ └── useFileListItemRename.ts │ │ │ │ │ │ ├── ListViewDropZone.tsx │ │ │ │ │ │ ├── ListViewHeader.tsx │ │ │ │ │ │ ├── ListViewSelectAllHint.tsx │ │ │ │ │ │ ├── Skeleton.tsx │ │ │ │ │ │ ├── VirtualizedFileList.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.ts │ │ │ │ │ │ ├── useExplorerDropZone.ts │ │ │ │ │ │ ├── useExplorerInfiniteScroll.tsx │ │ │ │ │ │ └── useExplorerListData.ts │ │ │ │ │ ├── MasonryView/ │ │ │ │ │ │ ├── MasonryItem/ │ │ │ │ │ │ │ ├── DefaultFileItem.tsx │ │ │ │ │ │ │ ├── ImageFileItem.tsx │ │ │ │ │ │ │ ├── MarkdownFileItem.tsx │ │ │ │ │ │ │ ├── MasonryItemWrapper.tsx │ │ │ │ │ │ │ ├── NoteFileItem.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Skeleton.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useMasonryViewState.ts │ │ │ │ │ ├── MoveToFolderModal.tsx │ │ │ │ │ ├── SearchResultsOverlay.tsx │ │ │ │ │ ├── ToolBar/ │ │ │ │ │ │ ├── ActionIconWithChevron.tsx │ │ │ │ │ │ ├── BatchActionsDropdown.tsx │ │ │ │ │ │ ├── Config.tsx │ │ │ │ │ │ ├── MultiSelectActions.tsx │ │ │ │ │ │ ├── SortDropdown.tsx │ │ │ │ │ │ └── ViewSwitcher.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── useExplorerSelection.test.tsx │ │ │ │ │ │ ├── useExplorerSelection.ts │ │ │ │ │ │ ├── useFileItemClick.ts │ │ │ │ │ │ ├── useResetSelectionOnQueryChange.test.tsx │ │ │ │ │ │ ├── useResetSelectionOnQueryChange.ts │ │ │ │ │ │ └── useViewMode.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── useCheckTaskStatus.ts │ │ │ │ │ └── useMasonryColumnCount.ts │ │ │ │ ├── FolderTree/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Header/ │ │ │ │ │ ├── AddButton.tsx │ │ │ │ │ └── hooks/ │ │ │ │ │ ├── useNotionImport.ts │ │ │ │ │ └── useUploadFolder.ts │ │ │ │ ├── KnowledgeBaseListProvider.tsx │ │ │ │ ├── LibraryHierarchy/ │ │ │ │ │ ├── HierarchyNode.tsx │ │ │ │ │ ├── TreeSkeleton.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles.ts │ │ │ │ │ ├── treeState.ts │ │ │ │ │ └── types.ts │ │ │ │ └── UploadDock/ │ │ │ │ ├── Item.tsx │ │ │ │ └── index.tsx │ │ │ ├── constants.ts │ │ │ └── index.tsx │ │ ├── RightPanel/ │ │ │ ├── ToggleRightPanelButton.tsx │ │ │ └── index.tsx │ │ ├── Setting/ │ │ │ ├── Footer.tsx │ │ │ └── SettingContainer.tsx │ │ ├── ShareModal/ │ │ │ ├── Modal.tsx │ │ │ ├── ShareDataProvider.tsx │ │ │ ├── ShareImage/ │ │ │ │ ├── ChatList/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Preview.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── type.ts │ │ │ ├── ShareJSON/ │ │ │ │ ├── Preview.tsx │ │ │ │ ├── generateFullExport.test.ts │ │ │ │ ├── generateFullExport.ts │ │ │ │ ├── generateMessages.test.ts │ │ │ │ ├── generateMessages.ts │ │ │ │ ├── index.tsx │ │ │ │ └── type.ts │ │ │ ├── SharePdf/ │ │ │ │ ├── PdfPreview.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── usePdfGeneration.ts │ │ │ ├── ShareText/ │ │ │ │ ├── Preview.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── template.test.ts │ │ │ │ ├── template.ts │ │ │ │ └── type.ts │ │ │ ├── index.tsx │ │ │ ├── style.ts │ │ │ ├── useContainerStyles.ts │ │ │ └── useShareModal.tsx │ │ ├── SharePopover/ │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ ├── SkillStore/ │ │ │ ├── Search/ │ │ │ │ └── index.tsx │ │ │ ├── SkillDetail/ │ │ │ │ ├── AgentItem.tsx │ │ │ │ ├── Agents.tsx │ │ │ │ ├── BuiltinAgentSkillDetailContent.tsx │ │ │ │ ├── BuiltinAgentSkillDetailProvider.tsx │ │ │ │ ├── BuiltinDetailProvider.tsx │ │ │ │ ├── BuiltinSkillDetailContent.tsx │ │ │ │ ├── DetailContext.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── KlavisDetailProvider.tsx │ │ │ │ ├── KlavisSkillDetailContent.tsx │ │ │ │ ├── LobehubDetailProvider.tsx │ │ │ │ ├── LobehubSkillDetailContent.tsx │ │ │ │ ├── Nav.tsx │ │ │ │ ├── Overview.tsx │ │ │ │ ├── Schema.tsx │ │ │ │ ├── SkillDetailInner.tsx │ │ │ │ ├── VirtuosoLoading.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── styles.ts │ │ │ ├── SkillList/ │ │ │ │ ├── AddSkillButton.tsx │ │ │ │ ├── AgentSkillItem.tsx │ │ │ │ ├── Builtin/ │ │ │ │ │ └── Item.tsx │ │ │ │ ├── Community/ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Custom/ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Empty.tsx │ │ │ │ ├── ImportFromGithubModal.tsx │ │ │ │ ├── ImportFromUrlModal.tsx │ │ │ │ ├── Loading.tsx │ │ │ │ ├── LobeHub/ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useSkillConnect.ts │ │ │ │ ├── UploadSkillModal.tsx │ │ │ │ ├── VirtuosoLoading.tsx │ │ │ │ ├── WantMoreSkills.tsx │ │ │ │ └── style.ts │ │ │ ├── SkillStoreContent.tsx │ │ │ └── index.tsx │ │ ├── SuggestQuestions/ │ │ │ ├── Item.tsx │ │ │ ├── List.tsx │ │ │ ├── Skeleton.tsx │ │ │ ├── index.tsx │ │ │ └── useRandomQuestions.ts │ │ ├── ToolTag/ │ │ │ └── index.tsx │ │ ├── TopicEmpty.tsx │ │ ├── User/ │ │ │ ├── DataStatistics.tsx │ │ │ ├── PlanTag.tsx │ │ │ ├── UserAvatar.tsx │ │ │ ├── UserInfo.tsx │ │ │ ├── UserLoginOrSignup/ │ │ │ │ ├── Community.tsx │ │ │ │ └── index.tsx │ │ │ ├── UserPanel/ │ │ │ │ ├── LangButton.tsx │ │ │ │ ├── PanelContent.tsx │ │ │ │ ├── PanelContentSkeleton.tsx │ │ │ │ ├── ThemeButton.tsx │ │ │ │ ├── UpgradeBadge.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── useMenu.tsx │ │ │ │ └── useNewVersion.tsx │ │ │ └── __tests__/ │ │ │ ├── PanelContent.test.tsx │ │ │ ├── UserAvatar.test.tsx │ │ │ └── useMenu.test.tsx │ │ ├── WideScreenContainer/ │ │ │ ├── WideScreenButton.tsx │ │ │ └── index.tsx │ │ └── ZenModeToast/ │ │ ├── Toast.tsx │ │ └── index.tsx │ ├── helpers/ │ │ ├── GlobalAgentContextManager.ts │ │ ├── getSearchConfig.test.ts │ │ ├── getSearchConfig.ts │ │ ├── isCanUseFC.ts │ │ ├── parserPlaceholder/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── skillFilters.test.ts │ │ ├── skillFilters.ts │ │ ├── toolAvailability.test.ts │ │ ├── toolAvailability.ts │ │ ├── toolEngineering/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ └── toolFilters.ts │ ├── hooks/ │ │ ├── useActiveTabKey.ts │ │ ├── useAgentEnableSearch.ts │ │ ├── useAgentOwnershipCheck.ts │ │ ├── useAppOrigin.ts │ │ ├── useAutoScroll.test.ts │ │ ├── useAutoScroll.ts │ │ ├── useBidirectionalQuerySync.ts │ │ ├── useCheckPluginsIsInstalled.ts │ │ ├── useDiscoverTab.ts │ │ ├── useDownloadImage.ts │ │ ├── useEnabledChatModels.ts │ │ ├── useEventCallback.ts │ │ ├── useFeedbackModal.ts │ │ ├── useFetchAgentList.ts │ │ ├── useFetchAiImageConfig.ts │ │ ├── useFetchAiVideoConfig.ts │ │ ├── useFetchCronTopics.ts │ │ ├── useFetchGroups.ts │ │ ├── useFetchInstalledPlugins.ts │ │ ├── useFetchMemoryForTopic.ts │ │ ├── useFetchNotebookDocuments.ts │ │ ├── useFetchSessions.ts │ │ ├── useFetchThreads.ts │ │ ├── useFetchTopics.test.ts │ │ ├── useFetchTopics.ts │ │ ├── useGreeting/ │ │ │ ├── greetingTime.ts │ │ │ └── index.ts │ │ ├── useHotkeys/ │ │ │ ├── chatScope.ts │ │ │ ├── filesScope.ts │ │ │ ├── globalScope.ts │ │ │ ├── imageScope.ts │ │ │ ├── index.ts │ │ │ ├── useHotkeyById.test.ts │ │ │ └── useHotkeyById.ts │ │ ├── useIMECompositionEvent.ts │ │ ├── useImgToClipboard.ts │ │ ├── useInitAgentConfig.ts │ │ ├── useInitBuiltinAgent.ts │ │ ├── useInitGroupConfig.ts │ │ ├── useInitRecentPage.ts │ │ ├── useInitRecentResource.ts │ │ ├── useInitRecentTopic.ts │ │ ├── useInterceptingRoutes.test.ts │ │ ├── useInterceptingRoutes.ts │ │ ├── useIsCloudActive.ts │ │ ├── useIsDark.ts │ │ ├── useIsMobile.ts │ │ ├── useIsSingleMode.test.ts │ │ ├── useIsSingleMode.ts │ │ ├── useIsSubSlug.ts │ │ ├── useMCPCategory.tsx │ │ ├── useModelContextWindowTokens.ts │ │ ├── useModelHasContextWindowToken.ts │ │ ├── useModelSupportFiles.ts │ │ ├── useModelSupportReasoning.ts │ │ ├── useModelSupportToolUse.ts │ │ ├── useModelSupportVideo.ts │ │ ├── useModelSupportVision.ts │ │ ├── useNavLayout.ts │ │ ├── useNavigateToAgent.ts │ │ ├── useOperationState.test.ts │ │ ├── useOperationState.ts │ │ ├── usePWAInstall.test.ts │ │ ├── usePWAInstall.ts │ │ ├── usePinnedAgentState.ts │ │ ├── usePlatform.test.ts │ │ ├── usePlatform.ts │ │ ├── useProviderName.ts │ │ ├── useQuery.ts │ │ ├── useQueryParam.ts │ │ ├── useQueryRoute.test.ts │ │ ├── useQueryRoute.ts │ │ ├── useScreenshot.ts │ │ ├── useShare.tsx │ │ ├── useShowMobileWorkspace.ts │ │ ├── useSkillCategory.tsx │ │ ├── useTTS.ts │ │ ├── useTokenCount.test.ts │ │ ├── useTokenCount.ts │ │ ├── useTypeScriptHappyCallback.ts │ │ ├── useUserAvatar.test.ts │ │ ├── useUserAvatar.ts │ │ ├── useWorkspaceModal.tsx │ │ └── useYamlArguments.ts │ ├── initialize.ts │ ├── instrumentation.node.ts │ ├── instrumentation.ts │ ├── layout/ │ │ ├── AuthProvider/ │ │ │ ├── BetterAuth/ │ │ │ │ ├── UserUpdater.tsx │ │ │ │ └── index.tsx │ │ │ ├── Desktop/ │ │ │ │ └── index.tsx │ │ │ ├── MarketAuth/ │ │ │ │ ├── ClaimResourcesModal.test.tsx │ │ │ │ ├── ClaimResourcesModal.tsx │ │ │ │ ├── MarketAuthConfirmModal.tsx │ │ │ │ ├── MarketAuthProvider.tsx │ │ │ │ ├── ProfileSetupModal.tsx │ │ │ │ ├── SocialConnectButton.tsx │ │ │ │ ├── errors.ts │ │ │ │ ├── events.ts │ │ │ │ ├── handoff.test.ts │ │ │ │ ├── handoff.ts │ │ │ │ ├── index.ts │ │ │ │ ├── oidc.test.ts │ │ │ │ ├── oidc.ts │ │ │ │ ├── types.ts │ │ │ │ ├── useMarketUserProfile.ts │ │ │ │ ├── useSocialConnect.test.ts │ │ │ │ └── useSocialConnect.ts │ │ │ ├── NoAuth/ │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ └── index.vite.tsx │ │ ├── GlobalProvider/ │ │ │ ├── AppTheme.tsx │ │ │ ├── CmdkLazy.tsx │ │ │ ├── DeferredStoreInitialization.tsx │ │ │ ├── DynamicFavicon.tsx │ │ │ ├── Editor.tsx │ │ │ ├── FaviconProvider.tsx │ │ │ ├── GroupWizardProvider.tsx │ │ │ ├── ImportSettings.tsx │ │ │ ├── NextThemeProvider.tsx │ │ │ ├── Query.tsx │ │ │ ├── SWRMutateInitializer.desktop.tsx │ │ │ ├── SWRMutateInitializer.tsx │ │ │ ├── ServerVersionOutdatedAlert.tsx │ │ │ ├── StoreInitialization.tsx │ │ │ ├── StyleRegistry.tsx │ │ │ └── useUserStateRedirect.ts │ │ └── SPAGlobalProvider/ │ │ ├── Locale.tsx │ │ └── index.tsx │ ├── libs/ │ │ ├── analytics/ │ │ │ └── index.ts │ │ ├── better-auth/ │ │ │ ├── auth-client.desktop.ts │ │ │ ├── auth-client.ts │ │ │ ├── constants.ts │ │ │ ├── define-config.ts │ │ │ ├── email-templates/ │ │ │ │ ├── change-email.ts │ │ │ │ ├── index.ts │ │ │ │ ├── magic-link.ts │ │ │ │ ├── reset-password.ts │ │ │ │ ├── verification-otp.ts │ │ │ │ └── verification.ts │ │ │ ├── plugins/ │ │ │ │ ├── email-whitelist.test.ts │ │ │ │ └── email-whitelist.ts │ │ │ ├── sso/ │ │ │ │ ├── helpers.ts │ │ │ │ ├── index.ts │ │ │ │ ├── providers/ │ │ │ │ │ ├── apple.ts │ │ │ │ │ ├── auth0.ts │ │ │ │ │ ├── authelia.ts │ │ │ │ │ ├── authentik.ts │ │ │ │ │ ├── casdoor.ts │ │ │ │ │ ├── cloudflare-zero-trust.ts │ │ │ │ │ ├── cognito.ts │ │ │ │ │ ├── feishu.ts │ │ │ │ │ ├── generic-oidc.ts │ │ │ │ │ ├── github.ts │ │ │ │ │ ├── google.ts │ │ │ │ │ ├── keycloak.ts │ │ │ │ │ ├── logto.ts │ │ │ │ │ ├── microsoft.ts │ │ │ │ │ ├── okta.ts │ │ │ │ │ ├── wechat.ts │ │ │ │ │ └── zitadel.ts │ │ │ │ └── types.ts │ │ │ └── utils/ │ │ │ ├── client.ts │ │ │ ├── common.ts │ │ │ ├── config.ts │ │ │ ├── server.test.ts │ │ │ └── server.ts │ │ ├── debug-file-logger.ts │ │ ├── document-loaders/ │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── loaders/ │ │ │ │ ├── code/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ ├── long.json │ │ │ │ │ │ └── long.txt │ │ │ │ │ └── index.ts │ │ │ │ ├── config.ts │ │ │ │ ├── csv/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── demo.csv │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── docx/ │ │ │ │ │ └── index.ts │ │ │ │ ├── epub/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── demo.epub │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── latex/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── demo.tex │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── markdown/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── demo.mdx │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── pdf/ │ │ │ │ │ └── index.ts │ │ │ │ ├── pptx/ │ │ │ │ │ └── index.ts │ │ │ │ └── txt/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── long.json │ │ │ │ │ └── pg24022.txt │ │ │ │ └── index.ts │ │ │ ├── splitter/ │ │ │ │ ├── index.ts │ │ │ │ └── separators.ts │ │ │ └── types.ts │ │ ├── editor/ │ │ │ └── constants.ts │ │ ├── getUILocaleAndResources.desktop.ts │ │ ├── getUILocaleAndResources.test.ts │ │ ├── getUILocaleAndResources.ts │ │ ├── getUILocaleAndResources.vite.ts │ │ ├── klavis/ │ │ │ └── index.ts │ │ ├── mcp/ │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ ├── client.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── next/ │ │ │ ├── Image.tsx │ │ │ ├── Link.tsx │ │ │ ├── config/ │ │ │ │ └── define-config.ts │ │ │ ├── dynamic.tsx │ │ │ ├── index.ts │ │ │ ├── navigation.ts │ │ │ ├── navigation.vite.ts │ │ │ ├── nextjsOnlyRoutes.ts │ │ │ └── proxy/ │ │ │ ├── createRouteMatcher.test.ts │ │ │ ├── createRouteMatcher.ts │ │ │ └── define-config.ts │ │ ├── observability/ │ │ │ ├── traceparent.test.ts │ │ │ └── traceparent.ts │ │ ├── oidc-provider/ │ │ │ ├── adapter.ts │ │ │ ├── config.ts │ │ │ ├── http-adapter.ts │ │ │ ├── interaction-policy.ts │ │ │ ├── jwt.ts │ │ │ ├── provider.test.ts │ │ │ └── provider.ts │ │ ├── pdfjs/ │ │ │ └── index.tsx │ │ ├── qstash/ │ │ │ └── index.ts │ │ ├── redis/ │ │ │ ├── index.ts │ │ │ ├── keys.ts │ │ │ ├── manager.test.ts │ │ │ ├── manager.ts │ │ │ ├── redis.test.ts │ │ │ ├── redis.ts │ │ │ ├── types.ts │ │ │ ├── utils.test.ts │ │ │ └── utils.ts │ │ ├── router/ │ │ │ ├── Link.tsx │ │ │ ├── index.ts │ │ │ └── navigation.ts │ │ ├── swr/ │ │ │ ├── index.ts │ │ │ ├── localStorageProvider.test.ts │ │ │ ├── localStorageProvider.ts │ │ │ ├── mutate.ts │ │ │ └── useClientDataSWRWithSync.ts │ │ ├── traces/ │ │ │ ├── event.test.ts │ │ │ ├── event.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── trpc/ │ │ │ ├── async/ │ │ │ │ ├── asyncAuth.ts │ │ │ │ ├── context.ts │ │ │ │ ├── index.ts │ │ │ │ └── init.ts │ │ │ ├── client/ │ │ │ │ ├── async.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lambda.ts │ │ │ │ └── tools.ts │ │ │ ├── lambda/ │ │ │ │ ├── context.test.ts │ │ │ │ ├── context.ts │ │ │ │ ├── index.ts │ │ │ │ ├── init.ts │ │ │ │ └── middleware/ │ │ │ │ ├── index.ts │ │ │ │ ├── keyVaults.ts │ │ │ │ ├── marketSDK.ts │ │ │ │ ├── marketUserInfo.ts │ │ │ │ ├── oidcAuth.ts │ │ │ │ ├── serverDatabase.ts │ │ │ │ ├── telemetry.test.ts │ │ │ │ └── telemetry.ts │ │ │ ├── middleware/ │ │ │ │ ├── openTelemetry.test.ts │ │ │ │ ├── openTelemetry.ts │ │ │ │ ├── userAuth.test.ts │ │ │ │ └── userAuth.ts │ │ │ ├── mock.ts │ │ │ ├── mock.vite.ts │ │ │ └── utils/ │ │ │ ├── internalJwt.ts │ │ │ ├── request-adapter.ts │ │ │ ├── responseMeta.test.ts │ │ │ └── responseMeta.ts │ │ └── trusted-client/ │ │ ├── getSessionUser.ts │ │ └── index.ts │ ├── locales/ │ │ ├── create.ts │ │ ├── default/ │ │ │ ├── agent.ts │ │ │ ├── agentGroup.ts │ │ │ ├── auth.ts │ │ │ ├── authError.ts │ │ │ ├── changelog.ts │ │ │ ├── chat.ts │ │ │ ├── color.ts │ │ │ ├── common.ts │ │ │ ├── components.ts │ │ │ ├── desktop-onboarding.ts │ │ │ ├── discover.ts │ │ │ ├── editor.ts │ │ │ ├── electron.ts │ │ │ ├── error.ts │ │ │ ├── eval.ts │ │ │ ├── file.ts │ │ │ ├── home.ts │ │ │ ├── hotkey.ts │ │ │ ├── image.ts │ │ │ ├── index.ts │ │ │ ├── knowledgeBase.ts │ │ │ ├── labs.ts │ │ │ ├── marketAuth.ts │ │ │ ├── memory.ts │ │ │ ├── metadata.ts │ │ │ ├── migration.ts │ │ │ ├── modelProvider.ts │ │ │ ├── models.ts │ │ │ ├── notification.ts │ │ │ ├── oauth.ts │ │ │ ├── onboarding.ts │ │ │ ├── plugin.ts │ │ │ ├── portal.ts │ │ │ ├── providers.ts │ │ │ ├── ragEval.ts │ │ │ ├── setting.ts │ │ │ ├── spend.ts │ │ │ ├── subscription.ts │ │ │ ├── suggestQuestions.ts │ │ │ ├── thread.ts │ │ │ ├── tool.ts │ │ │ ├── topic.ts │ │ │ ├── ui.ts │ │ │ ├── video.ts │ │ │ └── welcome.ts │ │ ├── resources.test.ts │ │ ├── resources.ts │ │ └── utils.ts │ ├── proxy.ts │ ├── routes/ │ │ ├── (desktop)/ │ │ │ └── desktop-onboarding/ │ │ │ ├── _layout/ │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── components/ │ │ │ │ ├── LobeMessage.tsx │ │ │ │ └── OnboardingFooterActions.tsx │ │ │ ├── features/ │ │ │ │ ├── DataModeStep.tsx │ │ │ │ ├── LoginStep.tsx │ │ │ │ ├── PermissionsStep.tsx │ │ │ │ └── WelcomeStep.tsx │ │ │ ├── index.tsx │ │ │ ├── navigation.ts │ │ │ ├── storage.ts │ │ │ └── types.ts │ │ ├── (main)/ │ │ │ ├── (create)/ │ │ │ │ ├── components/ │ │ │ │ │ ├── GenerationModelItem.tsx │ │ │ │ │ └── PromptTitle.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── CreateGenerationPage.tsx │ │ │ │ │ ├── GenerationFeed/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GenerationInput/ │ │ │ │ │ │ ├── ConfigAction.tsx │ │ │ │ │ │ ├── GenerationInvalidAPIKey.tsx │ │ │ │ │ │ ├── GenerationMediaModeSegment.tsx │ │ │ │ │ │ ├── GenerationPromptInput.tsx │ │ │ │ │ │ ├── ImagePreviewHeader.tsx │ │ │ │ │ │ ├── InlineImageReference.tsx │ │ │ │ │ │ ├── InlineVideoFrames.tsx │ │ │ │ │ │ ├── ModelAction.tsx │ │ │ │ │ │ ├── UploadCard.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── GenerationLayout/ │ │ │ │ │ │ ├── Body/ │ │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ │ │ │ ├── GridItem.tsx │ │ │ │ │ │ │ │ │ ├── ListItem.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── NewTopicButton.tsx │ │ │ │ │ │ │ │ ├── SkeletonList.tsx │ │ │ │ │ │ │ │ ├── StoreContext.tsx │ │ │ │ │ │ │ │ ├── TopicList.tsx │ │ │ │ │ │ │ │ ├── TopicUrlSync.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── AddButton.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Sidebar.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ └── GenerationWorkspace/ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── image/ │ │ │ │ │ ├── NotSupportClient.tsx │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ ├── RegisterHotkeys.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── ConfigPanel/ │ │ │ │ │ │ │ ├── ImageConfigSkeleton.tsx │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── AspectRatioSelect/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── CfgSliderInput.tsx │ │ │ │ │ │ │ │ ├── DimensionControlGroup.tsx │ │ │ │ │ │ │ │ ├── ImageNum.tsx │ │ │ │ │ │ │ │ ├── ImageUpload.tsx │ │ │ │ │ │ │ │ ├── ImageUrl.tsx │ │ │ │ │ │ │ │ ├── ImageUrlsUpload.tsx │ │ │ │ │ │ │ │ ├── InputNumber/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── ModelSelect/ │ │ │ │ │ │ │ │ │ ├── ImageModelItem.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── MultiImagesUpload/ │ │ │ │ │ │ │ │ │ ├── ImageManageModal.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── QualitySelect.tsx │ │ │ │ │ │ │ │ ├── ResolutionSelect.tsx │ │ │ │ │ │ │ │ ├── SeedNumberInput.tsx │ │ │ │ │ │ │ │ ├── Select/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── SizeSelect.tsx │ │ │ │ │ │ │ │ └── StepsSliderInput.tsx │ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── useAutoDimensions.ts │ │ │ │ │ │ │ │ ├── useDragAndDrop.ts │ │ │ │ │ │ │ │ └── useUploadFilesValidation.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── style.ts │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ │ ├── dimensionConstraints.test.ts │ │ │ │ │ │ │ │ └── imageValidation.test.ts │ │ │ │ │ │ │ ├── dimensionConstraints.ts │ │ │ │ │ │ │ └── imageValidation.ts │ │ │ │ │ │ ├── GenerationFeed/ │ │ │ │ │ │ │ ├── BatchItem.tsx │ │ │ │ │ │ │ ├── GenerationItem/ │ │ │ │ │ │ │ │ ├── ActionButtons.tsx │ │ │ │ │ │ │ │ ├── ElapsedTime.tsx │ │ │ │ │ │ │ │ ├── ErrorState.tsx │ │ │ │ │ │ │ │ ├── LoadingState.tsx │ │ │ │ │ │ │ │ ├── SuccessState.tsx │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ ├── styles.ts │ │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ ├── ReferenceImages.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ImageWorkspace/ │ │ │ │ │ │ │ ├── SkeletonList.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── PromptInput/ │ │ │ │ │ │ ├── Title.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── loading.tsx │ │ │ │ └── video/ │ │ │ │ ├── _layout/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── ConfigPanel/ │ │ │ │ │ │ ├── VideoConfigSkeleton.tsx │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── FrameUpload.tsx │ │ │ │ │ │ │ └── ModelSelect/ │ │ │ │ │ │ │ ├── VideoModelItem.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── GenerationFeed/ │ │ │ │ │ │ ├── BatchItem.tsx │ │ │ │ │ │ ├── VideoErrorItem.tsx │ │ │ │ │ │ ├── VideoLoadingItem.tsx │ │ │ │ │ │ ├── VideoReferenceFrames.tsx │ │ │ │ │ │ ├── VideoSuccessItem.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── PromptInput/ │ │ │ │ │ │ ├── Title.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── VideoWorkspace/ │ │ │ │ │ ├── SkeletonList.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── loading.tsx │ │ │ ├── _layout/ │ │ │ │ ├── DesktopAutoOidcOnFirstOpen.tsx │ │ │ │ ├── DesktopLayoutContainer/ │ │ │ │ │ └── style.ts │ │ │ │ ├── DesktopLayoutContainer.tsx │ │ │ │ ├── RegisterHotkeys.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── agent/ │ │ │ │ ├── _layout/ │ │ │ │ │ ├── AgentIdSync.tsx │ │ │ │ │ ├── RegisterHotkeys.tsx │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ ├── Body.tsx │ │ │ │ │ │ ├── Cron/ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ ├── CronTopicGroup.tsx │ │ │ │ │ │ │ ├── CronTopicItem.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── Agent/ │ │ │ │ │ │ │ │ ├── SwitchPanel.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Topic/ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ ├── AllTopicsDrawer/ │ │ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ │ ├── Editing.tsx │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── TopicListContent/ │ │ │ │ │ │ │ │ ├── ByTimeMode/ │ │ │ │ │ │ │ │ │ ├── GroupItem.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── FlatMode/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── SearchResult/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── ThreadList/ │ │ │ │ │ │ │ │ │ ├── ThreadItem/ │ │ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ │ │ ├── Editing.tsx │ │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── TopicSearchBar/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── useThreadNavigation.ts │ │ │ │ │ │ │ │ └── useTopicNavigation.ts │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── channel/ │ │ │ │ │ ├── const.ts │ │ │ │ │ ├── detail/ │ │ │ │ │ │ ├── Body.tsx │ │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ ├── formState.test.ts │ │ │ │ │ │ ├── formState.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── list.tsx │ │ │ │ │ └── platform/ │ │ │ │ │ ├── registry.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── wechat/ │ │ │ │ │ ├── ConnectedInfo.tsx │ │ │ │ │ ├── CredentialBody.tsx │ │ │ │ │ └── QrCodeAuth.tsx │ │ │ │ ├── cron/ │ │ │ │ │ └── [cronId]/ │ │ │ │ │ ├── CronConfig.ts │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── CronJobContentEditor.tsx │ │ │ │ │ │ ├── CronJobHeader.tsx │ │ │ │ │ │ ├── CronJobSaveButton.tsx │ │ │ │ │ │ └── CronJobScheduleConfig.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── ChangelogModal.tsx │ │ │ │ │ ├── Conversation/ │ │ │ │ │ │ ├── AgentWelcome/ │ │ │ │ │ │ │ ├── OpeningQuestions.tsx │ │ │ │ │ │ │ ├── ToolAuthAlert.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ChatHydration/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ConversationArea.tsx │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── HeaderActions/ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ └── useMenu.tsx │ │ │ │ │ │ │ ├── NotebookButton/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── ShareButton/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Tags/ │ │ │ │ │ │ │ │ ├── KnowledgeTag.tsx │ │ │ │ │ │ │ │ ├── MemberCountTag.tsx │ │ │ │ │ │ │ │ ├── SearchTags.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── MainChatInput/ │ │ │ │ │ │ │ ├── MessageFromUrl.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useSendMenuItems.tsx │ │ │ │ │ │ ├── ThreadHydration.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── useActionsBarConfig.ts │ │ │ │ │ │ └── useAgentContext.ts │ │ │ │ │ ├── PageTitle/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Portal/ │ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ │ ├── Desktop.tsx │ │ │ │ │ │ │ └── Mobile.tsx │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── Body.tsx │ │ │ │ │ │ │ ├── Portal.tsx │ │ │ │ │ │ │ └── PortalPanel.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── TelemetryNotification.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── profile/ │ │ │ │ ├── features/ │ │ │ │ │ ├── AgentCronJobs/ │ │ │ │ │ │ ├── CronJobCards.tsx │ │ │ │ │ │ ├── CronJobForm.tsx │ │ │ │ │ │ ├── CronJobList.tsx │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ └── useAgentCronJobs.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AgentSettings/ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditorCanvas/ │ │ │ │ │ │ ├── TypoBar.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useSlashItems.tsx │ │ │ │ │ ├── Header/ │ │ │ │ │ │ ├── AgentForkTag.tsx │ │ │ │ │ │ ├── AgentPublishButton/ │ │ │ │ │ │ │ ├── ForkConfirmModal.tsx │ │ │ │ │ │ │ ├── PublishButton.tsx │ │ │ │ │ │ │ ├── PublishResultModal.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ ├── useMarketPublish.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── AgentStatusTag.tsx │ │ │ │ │ │ ├── AgentVersionReviewTag.tsx │ │ │ │ │ │ ├── AutoSaveHint.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ProfileEditor/ │ │ │ │ │ │ ├── AgentHeader.tsx │ │ │ │ │ │ ├── AgentTool.tsx │ │ │ │ │ │ ├── MentionList/ │ │ │ │ │ │ │ ├── MentionDropdown.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ └── useMentionItems.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ProfileHydration.tsx │ │ │ │ │ ├── ProfileProvider.tsx │ │ │ │ │ ├── StoreUpdater.tsx │ │ │ │ │ └── store/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── index.tsx │ │ │ ├── community/ │ │ │ │ ├── (detail)/ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── agent/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── AgentForkTag.tsx │ │ │ │ │ │ │ ├── DetailProvider.tsx │ │ │ │ │ │ │ ├── Details/ │ │ │ │ │ │ │ │ ├── Capabilities/ │ │ │ │ │ │ │ │ │ ├── Block.tsx │ │ │ │ │ │ │ │ │ ├── Knowledge.tsx │ │ │ │ │ │ │ │ │ ├── KnowledgeItem.tsx │ │ │ │ │ │ │ │ │ ├── PluginItem.tsx │ │ │ │ │ │ │ │ │ ├── Plugins.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ │ │ │ ├── TagList.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── SystemRole/ │ │ │ │ │ │ │ │ │ ├── TagList.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Versions/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ │ │ ├── ActionButton/ │ │ │ │ │ │ │ │ │ ├── AddAgent.tsx │ │ │ │ │ │ │ │ │ ├── ForkAndChat.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Summary/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── TocList/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── StatusPage/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── NotFound.tsx │ │ │ │ │ ├── error.tsx │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── Back.tsx │ │ │ │ │ │ ├── Block.tsx │ │ │ │ │ │ ├── Breadcrumb.tsx │ │ │ │ │ │ ├── DetailLayout.tsx │ │ │ │ │ │ ├── HighlightBlock.tsx │ │ │ │ │ │ ├── MakedownRender.tsx │ │ │ │ │ │ ├── ShareButton.tsx │ │ │ │ │ │ ├── SidebarContainer.tsx │ │ │ │ │ │ └── Toc/ │ │ │ │ │ │ ├── Heading.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useToc.tsx │ │ │ │ │ ├── group_agent/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── DetailProvider.tsx │ │ │ │ │ │ │ ├── Details/ │ │ │ │ │ │ │ │ ├── Members/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── SystemRole/ │ │ │ │ │ │ │ │ │ ├── TagList.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Versions/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── GroupAgentForkTag.tsx │ │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ │ │ ├── ActionButton/ │ │ │ │ │ │ │ │ │ ├── AddGroupAgent.tsx │ │ │ │ │ │ │ │ │ ├── ForkGroupAndChat.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Summary/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── StatusPage/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── mcp/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── Details/ │ │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Versions/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── Sidebar/ │ │ │ │ │ │ │ ├── ActionButton/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── ConnectionTypeAlert.tsx │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── ServerConfig.tsx │ │ │ │ │ │ │ ├── TocList/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── DetailProvider.tsx │ │ │ │ │ │ │ ├── Details/ │ │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ │ │ │ ├── ProviderList/ │ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Parameter/ │ │ │ │ │ │ │ │ │ ├── ParameterItem.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ │ └── Sidebar/ │ │ │ │ │ │ │ ├── ActionButton/ │ │ │ │ │ │ │ │ ├── ChatWithModel.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── RelatedProviders/ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── not-found.tsx │ │ │ │ │ ├── provider/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── DetailProvider.tsx │ │ │ │ │ │ │ ├── Details/ │ │ │ │ │ │ │ │ ├── Guide/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ │ │ │ ├── ModelList/ │ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ │ └── Sidebar/ │ │ │ │ │ │ │ ├── ActionButton/ │ │ │ │ │ │ │ │ ├── ProviderConfig.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── RelatedModels/ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── skill/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── DetailProvider.tsx │ │ │ │ │ │ │ ├── Details/ │ │ │ │ │ │ │ │ ├── Installation/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Related/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Resources/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Versions/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ │ │ ├── FileTree.tsx │ │ │ │ │ │ │ │ ├── InstallationConfig.tsx │ │ │ │ │ │ │ │ ├── Platform.tsx │ │ │ │ │ │ │ │ ├── VsCodeIcon.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ └── user/ │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── DetailProvider.tsx │ │ │ │ │ │ ├── FollowButton.tsx │ │ │ │ │ │ ├── FollowStats.tsx │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── Banner.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── StatusFilter.tsx │ │ │ │ │ │ ├── SubmitRepoModal.tsx │ │ │ │ │ │ ├── UserAgentCard.tsx │ │ │ │ │ │ ├── UserAgentList.tsx │ │ │ │ │ │ ├── UserContent.tsx │ │ │ │ │ │ ├── UserFavoriteAgents.tsx │ │ │ │ │ │ ├── UserFavoritePlugins.tsx │ │ │ │ │ │ ├── UserForkedAgentGroups.tsx │ │ │ │ │ │ ├── UserForkedAgents.tsx │ │ │ │ │ │ ├── UserGroupCard.tsx │ │ │ │ │ │ ├── UserGroupList.tsx │ │ │ │ │ │ ├── UserPluginCard.tsx │ │ │ │ │ │ ├── UserPluginList.tsx │ │ │ │ │ │ ├── UserSkillCard.tsx │ │ │ │ │ │ ├── UserSkillList.tsx │ │ │ │ │ │ └── useUserDetail.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── loading.tsx │ │ │ │ ├── (list)/ │ │ │ │ │ ├── (home)/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ └── CreatorRewardBanner.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── agent/ │ │ │ │ │ │ ├── Client.tsx │ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── Category/ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ └── useCategory.tsx │ │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ ├── TokenTag.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── MarketSourceSwitch.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── error.tsx │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── Pagination.tsx │ │ │ │ │ │ └── SortButton/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── mcp/ │ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── Category/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── List/ │ │ │ │ │ │ │ ├── ConnectionTypeTag.tsx │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ ├── MetaInfo.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── Category/ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ └── useCategory.tsx │ │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ ├── ModelTypeIcon.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── const.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ ├── not-found.tsx │ │ │ │ │ ├── provider/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ └── List/ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── loading.tsx │ │ │ │ │ └── skill/ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── Category/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ ├── MetaInfo.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── loading.tsx │ │ │ │ ├── _layout/ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── CardBanner.tsx │ │ │ │ │ ├── CategoryContainer.tsx │ │ │ │ │ ├── CategoryMenu.tsx │ │ │ │ │ ├── GitHubAvatar.tsx │ │ │ │ │ ├── GridLoadingCard.tsx │ │ │ │ │ ├── ListLoading.tsx │ │ │ │ │ ├── Loading.tsx │ │ │ │ │ ├── SearchResultCount.tsx │ │ │ │ │ ├── Statistic.tsx │ │ │ │ │ ├── Title.tsx │ │ │ │ │ └── VirtuosoGridList/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useScrollParent.ts │ │ │ │ └── features/ │ │ │ │ ├── AssistantEmpty.tsx │ │ │ │ ├── CreateButton/ │ │ │ │ │ ├── Inner.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── LikeButton.tsx │ │ │ │ ├── McpEmpty.tsx │ │ │ │ ├── ModelEmpty.tsx │ │ │ │ ├── ProviderEmpty.tsx │ │ │ │ ├── Search.tsx │ │ │ │ ├── SkillEmpty.tsx │ │ │ │ ├── Title.tsx │ │ │ │ ├── UserAvatar/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── calculateScore.test.ts │ │ │ │ ├── const.ts │ │ │ │ └── useNav.tsx │ │ │ ├── components/ │ │ │ │ └── Link.tsx │ │ │ ├── eval/ │ │ │ │ ├── (home)/ │ │ │ │ │ └── _layout/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── _layout/ │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ ├── Body/ │ │ │ │ │ │ │ ├── BenchmarkList.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── bench/ │ │ │ │ │ └── [benchmarkId]/ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ │ ├── Body/ │ │ │ │ │ │ │ │ ├── DatasetList.tsx │ │ │ │ │ │ │ │ ├── RunList.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ │ ├── BenchmarkHead.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── datasets/ │ │ │ │ │ │ └── [datasetId]/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── BenchmarkHeader/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── DatasetRunCreateModal/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── DatasetTabs/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── DatasetsTab/ │ │ │ │ │ │ │ ├── DatasetCard.tsx │ │ │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ │ │ ├── TestCaseEmptyState.tsx │ │ │ │ │ │ │ ├── TestCasePreviewModal.tsx │ │ │ │ │ │ │ ├── TestCasePreviewPanel.tsx │ │ │ │ │ │ │ ├── TestCaseTable.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RunCards/ │ │ │ │ │ │ │ ├── RunSummaryCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RunCreateModal/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RunEditModal/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RunsTab/ │ │ │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ │ │ ├── RunCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── TestCaseList/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── TestCasesTab/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── runs/ │ │ │ │ │ └── [runId]/ │ │ │ │ │ ├── cases/ │ │ │ │ │ │ └── [caseId]/ │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ ├── CaseBanner/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── ChatArea/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── InfoSidebar/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── CaseResultsTable/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Charts/ │ │ │ │ │ │ │ ├── BenchmarkCharts.tsx │ │ │ │ │ │ │ ├── ScatterPlot.tsx │ │ │ │ │ │ │ └── StatusDonut.tsx │ │ │ │ │ │ ├── IdleState/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── PendingState/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RunHeader/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RunInfo/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RunningState/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── StatsCards/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── config/ │ │ │ │ │ └── datasetPresets.ts │ │ │ │ ├── features/ │ │ │ │ │ ├── BenchmarkCard/ │ │ │ │ │ │ ├── RunRow.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── BenchmarkEditModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CreateBenchmarkModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DatasetCreateModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DatasetEditModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DatasetImportModal/ │ │ │ │ │ │ ├── MappingStep.tsx │ │ │ │ │ │ ├── UploadStep.tsx │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StatusBadge.tsx │ │ │ │ │ ├── TestCaseCreateModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── TestCaseEditModal/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── utils.ts │ │ │ ├── group/ │ │ │ │ ├── _layout/ │ │ │ │ │ ├── GroupIdSync.tsx │ │ │ │ │ ├── RegisterHotkeys.tsx │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ ├── AddGroupMemberModal/ │ │ │ │ │ │ │ ├── AgentItem.tsx │ │ │ │ │ │ │ ├── AvailableAgentList.tsx │ │ │ │ │ │ │ ├── SelectedAgentList.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── store.ts │ │ │ │ │ │ ├── Body.tsx │ │ │ │ │ │ ├── GroupConfig/ │ │ │ │ │ │ │ ├── AgentProfilePopup.tsx │ │ │ │ │ │ │ ├── GroupMember.tsx │ │ │ │ │ │ │ ├── GroupMemberItem.tsx │ │ │ │ │ │ │ ├── GroupRole.tsx │ │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ │ ├── Avatar.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── style.ts │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── Agent/ │ │ │ │ │ │ │ │ ├── SwitchPanel.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Members/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Topic/ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ ├── AllTopicsDrawer/ │ │ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ │ ├── Editing.tsx │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── TopicListContent/ │ │ │ │ │ │ │ │ ├── ByTimeMode/ │ │ │ │ │ │ │ │ │ ├── GroupItem.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── FlatMode/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── SearchResult/ │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── ThreadList/ │ │ │ │ │ │ │ │ │ ├── ThreadItem/ │ │ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ │ │ ├── Editing.tsx │ │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── TopicSearchBar/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ └── useThreadNavigation.ts │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── features/ │ │ │ │ │ ├── Conversation/ │ │ │ │ │ │ ├── AgentWelcome/ │ │ │ │ │ │ │ ├── OpeningQuestions.tsx │ │ │ │ │ │ │ ├── ToolAuthAlert.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ChatHydration/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ChatItem/ │ │ │ │ │ │ │ ├── Thread.tsx │ │ │ │ │ │ │ └── ThreadItem.tsx │ │ │ │ │ │ ├── ConversationArea.tsx │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── ShareButton/ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Tags/ │ │ │ │ │ │ │ │ ├── KnowledgeTag.tsx │ │ │ │ │ │ │ │ ├── MemberCountTag.tsx │ │ │ │ │ │ │ │ ├── SearchTags.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── MainChatInput/ │ │ │ │ │ │ │ ├── GroupChat.tsx │ │ │ │ │ │ │ ├── MessageFromUrl.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useSendMenuItems.tsx │ │ │ │ │ │ ├── ThreadHydration.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── useActionsBarConfig.ts │ │ │ │ │ │ ├── useGroupContext.ts │ │ │ │ │ │ └── useGroupHooks.ts │ │ │ │ │ ├── GroupAvatar.tsx │ │ │ │ │ ├── PageTitle/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Portal/ │ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ │ ├── Desktop.tsx │ │ │ │ │ │ │ └── Mobile.tsx │ │ │ │ │ │ ├── features/ │ │ │ │ │ │ │ └── Body.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── TelemetryNotification.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── profile/ │ │ │ │ ├── StoreSync.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── AgentBuilder/ │ │ │ │ │ │ ├── AgentBuilderConversation.tsx │ │ │ │ │ │ ├── AgentBuilderProvider.tsx │ │ │ │ │ │ ├── TopicSelector.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AgentSettings/ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GroupProfile/ │ │ │ │ │ │ ├── GroupForkTag.tsx │ │ │ │ │ │ ├── GroupHeader.tsx │ │ │ │ │ │ ├── GroupStatusTag.tsx │ │ │ │ │ │ ├── GroupVersionReviewTag.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Header/ │ │ │ │ │ │ ├── AgentBuilderToggle.tsx │ │ │ │ │ │ ├── AgentPublishButton/ │ │ │ │ │ │ │ ├── PublishButton.tsx │ │ │ │ │ │ │ ├── PublishResultModal.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ ├── useMarketPublish.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── AutoSaveHint.tsx │ │ │ │ │ │ ├── ChromeTabs/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── GroupPublishButton/ │ │ │ │ │ │ │ ├── GroupForkConfirmModal.tsx │ │ │ │ │ │ │ ├── GroupPublishResultModal.tsx │ │ │ │ │ │ │ ├── PublishButton.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ ├── useMarketGroupPublish.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── MemberProfile/ │ │ │ │ │ ├── AgentHeader.tsx │ │ │ │ │ ├── AgentTool.tsx │ │ │ │ │ ├── MentionList/ │ │ │ │ │ │ ├── MentionDropdown.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── useMentionItems.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── home/ │ │ │ │ ├── _layout/ │ │ │ │ │ ├── Body/ │ │ │ │ │ │ ├── Agent/ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ ├── AllAgentsDrawer/ │ │ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ │ ├── AgentGroupItem/ │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ │ ├── AgentItem/ │ │ │ │ │ │ │ │ │ ├── Avatar.tsx │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ │ ├── Group/ │ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ │ ├── InboxItem.tsx │ │ │ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ │ │ │ └── Actions.tsx │ │ │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ └── useAgentList.tsx │ │ │ │ │ │ │ ├── ModalProvider.tsx │ │ │ │ │ │ │ ├── Modals/ │ │ │ │ │ │ │ │ ├── ConfigGroupModal/ │ │ │ │ │ │ │ │ │ ├── GroupItem.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ └── CreateGroupModal.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ ├── BottomMenu/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Project/ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ ├── Editing.tsx │ │ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CreateGroupModal/ │ │ │ │ │ │ ├── AgentItem.tsx │ │ │ │ │ │ ├── AvailableAgentList.tsx │ │ │ │ │ │ ├── SelectedAgentList.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── store.ts │ │ │ │ │ ├── Footer/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Header/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AddButton.tsx │ │ │ │ │ │ │ ├── InboxButton.tsx │ │ │ │ │ │ │ ├── InboxDrawer/ │ │ │ │ │ │ │ │ ├── Content.tsx │ │ │ │ │ │ │ │ ├── NotificationItem.tsx │ │ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ └── User.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── HomeAgentIdSync.tsx │ │ │ │ │ ├── RecentHydration.tsx │ │ │ │ │ ├── Sidebar.tsx │ │ │ │ │ ├── SidebarContent.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── useCreateMenuItems.tsx │ │ │ │ │ │ ├── useProjectMenuItems.tsx │ │ │ │ │ │ └── useSessionGroupMenuItems.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── features/ │ │ │ │ │ ├── CommunityAgents/ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CommunityRecommend/ │ │ │ │ │ │ ├── AssistantList.tsx │ │ │ │ │ │ ├── GroupList.tsx │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── FeaturedPlugins/ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── InputArea/ │ │ │ │ │ │ ├── ModeTag.tsx │ │ │ │ │ │ ├── SkillInstallBanner.tsx │ │ │ │ │ │ ├── StarterList.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useSend.ts │ │ │ │ │ ├── RecentPage/ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RecentResource/ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RecentTopic/ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SuggestQuestions/ │ │ │ │ │ │ ├── Item.tsx │ │ │ │ │ │ ├── List.tsx │ │ │ │ │ │ ├── Skeleton.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useRandomQuestions.ts │ │ │ │ │ ├── WelcomeText/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── GroupBlock/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── GroupSkeleton.tsx │ │ │ │ │ │ ├── ScrollShadowWithButton/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── Time.tsx │ │ │ │ │ ├── const.ts │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── hooks/ │ │ │ │ └── useActiveTabKey.ts │ │ │ ├── memory/ │ │ │ │ ├── (home)/ │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── Persona/ │ │ │ │ │ │ │ ├── PersonaDetail.tsx │ │ │ │ │ │ │ ├── PersonaHeader.tsx │ │ │ │ │ │ │ ├── PersonaSummary.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── RoleTagCloud/ │ │ │ │ │ │ ├── TagCloudCanvas.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── _layout/ │ │ │ │ │ ├── Sidebar/ │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── activities/ │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── ActivityDropdown.tsx │ │ │ │ │ │ ├── ActivityRightPanel.tsx │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── GridView/ │ │ │ │ │ │ │ ├── ActivityCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── TimelineView/ │ │ │ │ │ │ │ ├── ActivityCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── contexts/ │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── ContextDropdown.tsx │ │ │ │ │ │ ├── ContextRightPanel.tsx │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── GridView/ │ │ │ │ │ │ │ ├── ContextCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── TimelineView/ │ │ │ │ │ │ │ ├── ContextCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── experiences/ │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── ExperienceDropdown.tsx │ │ │ │ │ │ ├── ExperienceRightPanel.tsx │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── GridView/ │ │ │ │ │ │ │ ├── ExperienceCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── TimelineView/ │ │ │ │ │ │ │ ├── ExperienceCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── ActionBar/ │ │ │ │ │ │ ├── PurgeButton.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CateTag.tsx │ │ │ │ │ ├── DetailLoading.tsx │ │ │ │ │ ├── DetailPanel.tsx │ │ │ │ │ ├── EditableModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── FilterBar.tsx │ │ │ │ │ ├── GridView/ │ │ │ │ │ │ ├── GridCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── HashTags.tsx │ │ │ │ │ ├── HighlightedContent.tsx │ │ │ │ │ ├── Loading.tsx │ │ │ │ │ ├── MemoryAnalysis/ │ │ │ │ │ │ ├── Action.tsx │ │ │ │ │ │ ├── AnalysisTrigger.tsx │ │ │ │ │ │ ├── DateRangeModal.tsx │ │ │ │ │ │ ├── Status.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useTask.ts │ │ │ │ │ ├── MemoryEmpty.tsx │ │ │ │ │ ├── ProgressIcon.tsx │ │ │ │ │ ├── SourceLink.tsx │ │ │ │ │ ├── Time.tsx │ │ │ │ │ ├── TimeLineView/ │ │ │ │ │ │ ├── PeriodGroup.tsx │ │ │ │ │ │ ├── TimeLineCard.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── useScrollParent.ts │ │ │ │ │ ├── ViewModeSwitcher.tsx │ │ │ │ │ └── useCateColor.ts │ │ │ │ ├── identities/ │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── IdentityDropdown.tsx │ │ │ │ │ │ ├── IdentityRightPanel.tsx │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ ├── GridView/ │ │ │ │ │ │ │ │ ├── IdentityCard.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── TimelineView/ │ │ │ │ │ │ │ │ ├── IdentityCard.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── SegmentedBar.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── preferences/ │ │ │ │ ├── features/ │ │ │ │ │ ├── List/ │ │ │ │ │ │ ├── GridView/ │ │ │ │ │ │ │ ├── PreferenceCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── TimelineView/ │ │ │ │ │ │ │ ├── PreferenceCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── PreferenceDropdown.tsx │ │ │ │ │ └── PreferenceRightPanel.tsx │ │ │ │ └── index.tsx │ │ │ ├── page/ │ │ │ │ ├── [id]/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── _layout/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── resource/ │ │ │ │ ├── (home)/ │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ ├── Body/ │ │ │ │ │ │ │ ├── LibraryList/ │ │ │ │ │ │ │ │ ├── EmptyStatus.tsx │ │ │ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ │ ├── Editing.tsx │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── CategoryMenu.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Sidebar.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── _layout/ │ │ │ │ │ ├── RegisterHotkeys.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── DndContextWrapper.tsx │ │ │ │ │ ├── FileDetail.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── useCurrentFolderId.ts │ │ │ │ │ │ ├── useFileQueryParam.ts │ │ │ │ │ │ ├── useFolderPath.ts │ │ │ │ │ │ ├── useInitFileCheck.ts │ │ │ │ │ │ ├── useKnowledgeItem.ts │ │ │ │ │ │ └── useResourceManagerUrlSync.ts │ │ │ │ │ ├── modal/ │ │ │ │ │ │ ├── FileDetail.tsx │ │ │ │ │ │ ├── FilePreview.tsx │ │ │ │ │ │ ├── FullscreenModal.tsx │ │ │ │ │ │ ├── ModalPageClient.tsx │ │ │ │ │ │ └── useFilesQueryParam.ts │ │ │ │ │ └── store/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── library/ │ │ │ │ │ ├── [slug]/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── _layout/ │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── LibraryHead.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Sidebar.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── Container.tsx │ │ │ │ │ │ ├── LibraryMenu.tsx │ │ │ │ │ │ └── RegisterHotkeys.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── store/ │ │ │ │ ├── action.ts │ │ │ │ └── initialState.ts │ │ │ └── settings/ │ │ │ ├── _layout/ │ │ │ │ ├── Body/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ContextProvider/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── SideBar.tsx │ │ │ │ ├── SidebarContent.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── type.ts │ │ │ ├── about/ │ │ │ │ ├── features/ │ │ │ │ │ ├── About.tsx │ │ │ │ │ ├── AboutList.tsx │ │ │ │ │ ├── Analytics.tsx │ │ │ │ │ ├── ItemCard.tsx │ │ │ │ │ ├── ItemLink.tsx │ │ │ │ │ ├── Version.tsx │ │ │ │ │ ├── appVersion.desktop.ts │ │ │ │ │ └── appVersion.ts │ │ │ │ └── index.tsx │ │ │ ├── advanced/ │ │ │ │ └── index.tsx │ │ │ ├── agent/ │ │ │ │ ├── features/ │ │ │ │ │ ├── SystemAgentForm.tsx │ │ │ │ │ └── useSync.ts │ │ │ │ └── index.tsx │ │ │ ├── apikey/ │ │ │ │ ├── features/ │ │ │ │ │ ├── ApiKey.tsx │ │ │ │ │ ├── ApiKeyDatePicker/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ApiKeyDisplay/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ApiKeyModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditableCell/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── index.tsx │ │ │ ├── appearance/ │ │ │ │ └── index.tsx │ │ │ ├── chat-appearance/ │ │ │ │ ├── features/ │ │ │ │ │ └── ChatAppearance/ │ │ │ │ │ ├── ChatPreview.tsx │ │ │ │ │ ├── ChatTransitionPreview.tsx │ │ │ │ │ ├── HighlighterPreview.tsx │ │ │ │ │ ├── MermaidPreview.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── common/ │ │ │ │ ├── features/ │ │ │ │ │ ├── Appearance/ │ │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ │ ├── ThemeSwatches/ │ │ │ │ │ │ │ ├── ThemeSwatchesNeutral.tsx │ │ │ │ │ │ │ ├── ThemeSwatchesPrimary.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── Common/ │ │ │ │ │ └── Common.tsx │ │ │ │ └── index.tsx │ │ │ ├── creds/ │ │ │ │ ├── features/ │ │ │ │ │ ├── CreateCredModal/ │ │ │ │ │ │ ├── CredTypeSelector.tsx │ │ │ │ │ │ ├── FileCredForm.tsx │ │ │ │ │ │ ├── KVCredForm.tsx │ │ │ │ │ │ ├── OAuthCredForm.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CredDisplay.tsx │ │ │ │ │ ├── CredItem.tsx │ │ │ │ │ ├── CredsList.tsx │ │ │ │ │ ├── EditCredModal/ │ │ │ │ │ │ ├── EditKVForm.tsx │ │ │ │ │ │ ├── EditMetaForm.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ViewCredModal.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── style.ts │ │ │ │ └── index.tsx │ │ │ ├── features/ │ │ │ │ ├── SettingHeader.tsx │ │ │ │ ├── SettingsContent.tsx │ │ │ │ ├── UpgradeAlert.tsx │ │ │ │ ├── componentMap.desktop.ts │ │ │ │ ├── componentMap.sync.test.ts │ │ │ │ └── componentMap.ts │ │ │ ├── hooks/ │ │ │ │ ├── useCategory.tsx │ │ │ │ └── useSyncSettings.ts │ │ │ ├── hotkey/ │ │ │ │ ├── features/ │ │ │ │ │ ├── Conversation.tsx │ │ │ │ │ ├── Desktop.tsx │ │ │ │ │ └── Essential.tsx │ │ │ │ └── index.tsx │ │ │ ├── image/ │ │ │ │ ├── features/ │ │ │ │ │ └── Image.tsx │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── memory/ │ │ │ │ ├── features/ │ │ │ │ │ └── Memory.tsx │ │ │ │ └── index.tsx │ │ │ ├── profile/ │ │ │ │ ├── features/ │ │ │ │ │ ├── AvatarRow.tsx │ │ │ │ │ ├── EmailRow.tsx │ │ │ │ │ ├── FullNameRow.tsx │ │ │ │ │ ├── InterestsRow.tsx │ │ │ │ │ ├── KlavisAuthorizationList/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── PasswordRow.tsx │ │ │ │ │ ├── ProfileRow.tsx │ │ │ │ │ ├── SSOProvidersList/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── UsernameRow.tsx │ │ │ │ └── index.tsx │ │ │ ├── provider/ │ │ │ │ ├── (list)/ │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ ├── ProviderGrid/ │ │ │ │ │ │ ├── Card.tsx │ │ │ │ │ │ ├── EnableSwitch.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── ProviderMenu/ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ ├── AddNew.tsx │ │ │ │ │ ├── All.tsx │ │ │ │ │ ├── Item.tsx │ │ │ │ │ ├── List.tsx │ │ │ │ │ ├── SearchResult.tsx │ │ │ │ │ ├── SortProviderModal/ │ │ │ │ │ │ ├── GroupItem.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useDropdownMenu.tsx │ │ │ │ ├── _layout/ │ │ │ │ │ ├── Desktop/ │ │ │ │ │ │ ├── Container.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.ts │ │ │ │ │ └── Mobile.tsx │ │ │ │ ├── const.ts │ │ │ │ ├── detail/ │ │ │ │ │ ├── azure/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── azureai/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── bedrock/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── cloudflare/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── comfyui/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── default/ │ │ │ │ │ │ ├── ClientMode.tsx │ │ │ │ │ │ ├── ProviderDetialPage.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── github/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── newapi/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ollama/ │ │ │ │ │ │ ├── CheckError.tsx │ │ │ │ │ │ ├── Container.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── openai/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── vertexai/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── CreateNewProvider/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ModelList/ │ │ │ │ │ │ ├── CreateNewModelModal/ │ │ │ │ │ │ │ ├── ExtendParamsSelect.tsx │ │ │ │ │ │ │ ├── Form.tsx │ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ │ └── ExtendParamsSelect.test.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── DisabledModels.tsx │ │ │ │ │ │ ├── EmptyModels.tsx │ │ │ │ │ │ ├── EnabledModelList/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ModelConfigModal/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ModelItem.tsx │ │ │ │ │ │ ├── ModelTitle/ │ │ │ │ │ │ │ ├── Search.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ProviderSettingsContext.ts │ │ │ │ │ │ ├── SearchResult.tsx │ │ │ │ │ │ ├── SkeletonList.tsx │ │ │ │ │ │ ├── SortModelModal/ │ │ │ │ │ │ │ ├── ListItem.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ProviderConfig/ │ │ │ │ │ │ ├── Checker.tsx │ │ │ │ │ │ ├── EnableSwitch.tsx │ │ │ │ │ │ ├── OAuthDeviceFlowAuth/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── useOAuthDeviceFlow.ts │ │ │ │ │ │ ├── UpdateProviderInfo/ │ │ │ │ │ │ │ ├── SettingModal.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── customProviderSdkOptions.ts │ │ │ │ ├── index.tsx │ │ │ │ └── type.ts │ │ │ ├── proxy/ │ │ │ │ ├── features/ │ │ │ │ │ └── ProxyForm.tsx │ │ │ │ └── index.tsx │ │ │ ├── security/ │ │ │ │ └── index.tsx │ │ │ ├── service-model/ │ │ │ │ └── index.tsx │ │ │ ├── skill/ │ │ │ │ ├── features/ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ ├── AgentSkillItem.tsx │ │ │ │ │ ├── BuiltinSkillItem.tsx │ │ │ │ │ ├── EditCustomPlugin.tsx │ │ │ │ │ ├── KlavisSkillItem.tsx │ │ │ │ │ ├── LobehubSkillItem.tsx │ │ │ │ │ ├── McpSkillItem.tsx │ │ │ │ │ ├── SkillList.tsx │ │ │ │ │ └── style.ts │ │ │ │ └── index.tsx │ │ │ ├── stats/ │ │ │ │ ├── features/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── StatsFormGroup.tsx │ │ │ │ │ │ ├── TimeLabel.tsx │ │ │ │ │ │ └── UsageBarChart.tsx │ │ │ │ │ ├── overview/ │ │ │ │ │ │ ├── ShareButton/ │ │ │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ │ │ ├── ShareModal.tsx │ │ │ │ │ │ │ ├── TotalCard.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── TotalAssistants.tsx │ │ │ │ │ │ ├── TotalMessages.tsx │ │ │ │ │ │ ├── TotalTopics.tsx │ │ │ │ │ │ ├── TotalWords.tsx │ │ │ │ │ │ ├── Welcome.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── rankings/ │ │ │ │ │ │ ├── AssistantsRank.tsx │ │ │ │ │ │ ├── ModelsRank.tsx │ │ │ │ │ │ ├── TopicsRank.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── usage/ │ │ │ │ │ │ ├── UsageCards/ │ │ │ │ │ │ │ ├── ActiveModels/ │ │ │ │ │ │ │ │ ├── ModelTable.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── MonthSpend.tsx │ │ │ │ │ │ │ ├── TodaySpend.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── UsageTable.tsx │ │ │ │ │ │ ├── UsageTrends.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── visualization/ │ │ │ │ │ ├── AiHeatmaps.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.tsx │ │ │ │ └── types.ts │ │ │ ├── storage/ │ │ │ │ ├── features/ │ │ │ │ │ └── Advanced.tsx │ │ │ │ └── index.tsx │ │ │ ├── system-tools/ │ │ │ │ ├── features/ │ │ │ │ │ └── ToolDetectorSection.tsx │ │ │ │ └── index.tsx │ │ │ └── tts/ │ │ │ ├── features/ │ │ │ │ ├── OpenAI.tsx │ │ │ │ ├── STT.tsx │ │ │ │ └── const.tsx │ │ │ └── index.tsx │ │ ├── (mobile)/ │ │ │ ├── (home)/ │ │ │ │ ├── _layout/ │ │ │ │ │ ├── MobileLayout/ │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── MobileLayout.tsx │ │ │ │ │ ├── SessionHeader/ │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── SessionHeader.tsx │ │ │ │ │ ├── SessionHydration.tsx │ │ │ │ │ ├── SessionSearchBar.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── SessionListContent/ │ │ │ │ │ │ ├── CollapseGroup/ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── DefaultMode.tsx │ │ │ │ │ │ ├── Inbox/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ ├── AddButton.tsx │ │ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ListItem/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Modals/ │ │ │ │ │ │ │ ├── ConfigGroupModal/ │ │ │ │ │ │ │ │ ├── GroupItem.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── CreateGroupModal.tsx │ │ │ │ │ │ │ └── RenameGroupModal.tsx │ │ │ │ │ │ ├── SearchMode.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── SkeletonList.tsx │ │ │ │ └── index.tsx │ │ │ ├── _layout/ │ │ │ │ ├── NavBar.tsx │ │ │ │ └── index.tsx │ │ │ ├── chat/ │ │ │ │ ├── _layout/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ ├── features/ │ │ │ │ │ ├── ChatHeader/ │ │ │ │ │ │ ├── ChatHeaderTitle.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── Topic/ │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── AgentConfig/ │ │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ │ ├── Avatar.tsx │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── SystemRole.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ConfigLayout.tsx │ │ │ │ │ │ └── TopicModal.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── settings/ │ │ │ │ ├── _layout/ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── features/ │ │ │ │ │ ├── AgentInfoDescription/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── SettingButton.tsx │ │ │ │ └── index.tsx │ │ │ ├── community/ │ │ │ │ ├── (detail)/ │ │ │ │ │ └── _layout/ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── (list)/ │ │ │ │ │ └── _layout/ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── Nav.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.ts │ │ │ │ └── _layout/ │ │ │ │ └── index.tsx │ │ │ ├── me/ │ │ │ │ ├── (home)/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── UserBanner.test.tsx │ │ │ │ │ │ └── useCategory.test.tsx │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── Category.tsx │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ ├── UserBanner.tsx │ │ │ │ │ │ └── useCategory.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── layout.tsx │ │ │ │ ├── profile/ │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── Category.tsx │ │ │ │ │ │ └── Header.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── layout.tsx │ │ │ │ └── settings/ │ │ │ │ ├── features/ │ │ │ │ │ ├── Category.tsx │ │ │ │ │ ├── Header.tsx │ │ │ │ │ └── useCategory.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── layout.tsx │ │ │ └── settings/ │ │ │ ├── _layout/ │ │ │ │ ├── Header.tsx │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ └── provider/ │ │ │ └── _layout/ │ │ │ └── index.tsx │ │ ├── onboarding/ │ │ │ ├── _layout/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── agent/ │ │ │ │ ├── index.test.tsx │ │ │ │ └── index.tsx │ │ │ ├── classic/ │ │ │ │ └── index.tsx │ │ │ ├── components/ │ │ │ │ ├── KlavisServerList/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── KlavisServerItem.tsx │ │ │ │ │ │ ├── ServerIcon.tsx │ │ │ │ │ │ └── ServerStatusControl.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── useKlavisOAuth.ts │ │ │ │ │ │ └── useKlavisServerActions.ts │ │ │ │ │ └── index.tsx │ │ │ │ └── LobeMessage.tsx │ │ │ ├── config.ts │ │ │ ├── features/ │ │ │ │ ├── FullNameStep.tsx │ │ │ │ ├── InterestsStep.tsx │ │ │ │ ├── ModeSelectionStep.tsx │ │ │ │ ├── ProSettingsStep.tsx │ │ │ │ ├── ResponseLanguageStep.tsx │ │ │ │ └── TelemetryStep.tsx │ │ │ └── index.tsx │ │ └── share/ │ │ └── t/ │ │ └── [id]/ │ │ ├── SharedMessageList.tsx │ │ ├── _layout/ │ │ │ ├── Title.tsx │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ ├── features/ │ │ │ ├── ActionBar.tsx │ │ │ └── Portal/ │ │ │ └── index.tsx │ │ └── index.tsx │ ├── server/ │ │ ├── featureFlags/ │ │ │ └── index.ts │ │ ├── globalConfig/ │ │ │ ├── genServerAiProviderConfig.test.ts │ │ │ ├── genServerAiProviderConfig.ts │ │ │ ├── getServerAuthConfig.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── parseDefaultAgent.test.ts │ │ │ ├── parseDefaultAgent.ts │ │ │ ├── parseFilesConfig.test.ts │ │ │ ├── parseFilesConfig.ts │ │ │ ├── parseMemoryExtractionConfig.ts │ │ │ ├── parseSystemAgent.test.ts │ │ │ └── parseSystemAgent.ts │ │ ├── ld.test.ts │ │ ├── ld.ts │ │ ├── manifest.test.ts │ │ ├── manifest.ts │ │ ├── metadata.test.ts │ │ ├── metadata.ts │ │ ├── modules/ │ │ │ ├── AgentRuntime/ │ │ │ │ ├── AgentRuntimeCoordinator.ts │ │ │ │ ├── AgentStateManager.ts │ │ │ │ ├── InMemoryAgentStateManager.ts │ │ │ │ ├── InMemoryStreamEventManager.ts │ │ │ │ ├── RuntimeExecutors.ts │ │ │ │ ├── StreamEventManager.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── AgentRuntimeCoordinator.feature │ │ │ │ │ ├── AgentRuntimeCoordinator.test.ts │ │ │ │ │ ├── AgentStateManager.test.ts │ │ │ │ │ ├── InMemoryAgentStateManager.test.ts │ │ │ │ │ ├── InMemoryStreamEventManager.test.ts │ │ │ │ │ ├── RuntimeExecutors.test.ts │ │ │ │ │ ├── StreamEventManager.test.ts │ │ │ │ │ ├── factory.test.ts │ │ │ │ │ └── llmErrorClassification.test.ts │ │ │ │ ├── factory.ts │ │ │ │ ├── index.ts │ │ │ │ ├── llmErrorClassification.ts │ │ │ │ ├── redis.ts │ │ │ │ └── types.ts │ │ │ ├── AgentTracing/ │ │ │ │ ├── S3SnapshotStore.ts │ │ │ │ └── index.ts │ │ │ ├── AssistantStore/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── ContentChunk/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── rules.test.ts │ │ │ │ └── rules.ts │ │ │ ├── GitHub/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── KeyVaultsEncrypt/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── Mecha/ │ │ │ │ ├── AgentToolsEngine/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── ContextEngineering/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── serverMessagesEngine.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ └── index.ts │ │ │ ├── ModelRuntime/ │ │ │ │ ├── apiKeyManager.test.ts │ │ │ │ ├── apiKeyManager.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── trace.ts │ │ │ ├── PluginStore/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ └── S3/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── routers/ │ │ │ ├── async/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── caller.test.ts │ │ │ │ ├── caller.ts │ │ │ │ ├── file.ts │ │ │ │ ├── image.ts │ │ │ │ ├── index.ts │ │ │ │ └── ragEval.ts │ │ │ ├── lambda/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── agent.test.ts │ │ │ │ │ ├── agentGroup.test.ts │ │ │ │ │ ├── aiAgent.execGroupSubAgentTask.test.ts │ │ │ │ │ ├── aiAgent.getTaskStatus.test.ts │ │ │ │ │ ├── aiAgent.interruptTask.test.ts │ │ │ │ │ ├── aiAgent.test.ts │ │ │ │ │ ├── aiChat.test.ts │ │ │ │ │ ├── aiModel.test.ts │ │ │ │ │ ├── aiProvider.test.ts │ │ │ │ │ ├── file.test.ts │ │ │ │ │ ├── generation.test.ts │ │ │ │ │ ├── generationBatch.test.ts │ │ │ │ │ ├── generationTopic.test.ts │ │ │ │ │ ├── importer.test.ts │ │ │ │ │ ├── integration/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── agentEval.integration.test.ts │ │ │ │ │ │ ├── agentEval.run.integration.test.ts │ │ │ │ │ │ ├── agentSkills.integration.test.ts │ │ │ │ │ │ ├── aiAgent/ │ │ │ │ │ │ │ ├── execAgent.integration.test.ts │ │ │ │ │ │ │ ├── execAgents.integration.test.ts │ │ │ │ │ │ │ ├── execGroupAgent.integration.test.ts │ │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ │ └── multiRoundTools.integration.test.ts │ │ │ │ │ │ ├── aiAgent.createClientGroupAgentTaskThread.integration.test.ts │ │ │ │ │ │ ├── aiAgent.createClientTaskThread.integration.test.ts │ │ │ │ │ │ ├── aiAgent.task.integration.test.ts │ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ │ └── openaiMock.ts │ │ │ │ │ │ ├── message.integration.test.ts │ │ │ │ │ │ ├── setup.ts │ │ │ │ │ │ ├── task.integration.test.ts │ │ │ │ │ │ └── topic.integration.test.ts │ │ │ │ │ ├── message.test.ts │ │ │ │ │ ├── share.test.ts │ │ │ │ │ ├── topic.test.ts │ │ │ │ │ ├── user.test.ts │ │ │ │ │ └── userMemory.test.ts │ │ │ │ ├── _helpers/ │ │ │ │ │ ├── resolveContext.test.ts │ │ │ │ │ └── resolveContext.ts │ │ │ │ ├── _schema/ │ │ │ │ │ └── context.ts │ │ │ │ ├── _template.ts │ │ │ │ ├── agent.ts │ │ │ │ ├── agentBotProvider.ts │ │ │ │ ├── agentCronJob.ts │ │ │ │ ├── agentDocument.ts │ │ │ │ ├── agentEval.ts │ │ │ │ ├── agentEvalExternal.ts │ │ │ │ ├── agentGroup.ts │ │ │ │ ├── agentSkills.ts │ │ │ │ ├── aiAgent.ts │ │ │ │ ├── aiChat.ts │ │ │ │ ├── aiModel.ts │ │ │ │ ├── aiProvider.ts │ │ │ │ ├── apiKey.ts │ │ │ │ ├── botMessage.ts │ │ │ │ ├── brief.ts │ │ │ │ ├── chunk.ts │ │ │ │ ├── comfyui.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── device.ts │ │ │ │ ├── document.ts │ │ │ │ ├── exporter.ts │ │ │ │ ├── file.ts │ │ │ │ ├── generation.ts │ │ │ │ ├── generationBatch.ts │ │ │ │ ├── generationTopic.ts │ │ │ │ ├── home.ts │ │ │ │ ├── image/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── importer.ts │ │ │ │ ├── index.ts │ │ │ │ ├── klavis.ts │ │ │ │ ├── knowledge.ts │ │ │ │ ├── knowledgeBase.ts │ │ │ │ ├── market/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ ├── agentGroup.ts │ │ │ │ │ ├── creds.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── oidc.ts │ │ │ │ │ ├── skill.ts │ │ │ │ │ ├── social.ts │ │ │ │ │ ├── socialProfile.ts │ │ │ │ │ └── user.ts │ │ │ │ ├── message.ts │ │ │ │ ├── notebook.ts │ │ │ │ ├── notification.ts │ │ │ │ ├── oauthDeviceFlow.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── ragEval.ts │ │ │ │ ├── search.ts │ │ │ │ ├── session.ts │ │ │ │ ├── sessionGroup.ts │ │ │ │ ├── share.ts │ │ │ │ ├── task.ts │ │ │ │ ├── thread.ts │ │ │ │ ├── topic.ts │ │ │ │ ├── upload.ts │ │ │ │ ├── usage.ts │ │ │ │ ├── user.ts │ │ │ │ ├── userMemories.test.ts │ │ │ │ ├── userMemories.ts │ │ │ │ ├── userMemory.ts │ │ │ │ └── video/ │ │ │ │ └── index.ts │ │ │ ├── mobile/ │ │ │ │ ├── index.ts │ │ │ │ └── topic.ts │ │ │ └── tools/ │ │ │ ├── _helpers/ │ │ │ │ ├── index.ts │ │ │ │ ├── scheduleToolCallReport.test.ts │ │ │ │ └── scheduleToolCallReport.ts │ │ │ ├── index.ts │ │ │ ├── klavis.ts │ │ │ ├── market.ts │ │ │ ├── mcp.ts │ │ │ ├── search.test.ts │ │ │ └── search.ts │ │ ├── services/ │ │ │ ├── agent/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── type.ts │ │ │ ├── agentDocuments.test.ts │ │ │ ├── agentDocuments.ts │ │ │ ├── agentEvalRun/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── _setup.ts │ │ │ │ │ ├── agentEvalRunService.createRun.test.ts │ │ │ │ │ ├── agentEvalRunService.evaluate.test.ts │ │ │ │ │ ├── agentEvalRunService.filter.test.ts │ │ │ │ │ ├── agentEvalRunService.lifecycle.test.ts │ │ │ │ │ ├── agentEvalRunService.thread.test.ts │ │ │ │ │ ├── agentEvalRunService.timeout.test.ts │ │ │ │ │ ├── agentEvalRunService.trajectory.test.ts │ │ │ │ │ ├── evaluateCase.integration.test.ts │ │ │ │ │ └── trajectoryMethods.test.ts │ │ │ │ └── index.ts │ │ │ ├── agentGroup/ │ │ │ │ └── index.ts │ │ │ ├── agentRuntime/ │ │ │ │ ├── AgentRuntimeService.test.ts │ │ │ │ ├── AgentRuntimeService.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── completionWebhook.test.ts │ │ │ │ │ ├── executeStep.test.ts │ │ │ │ │ ├── executeSync.test.ts │ │ │ │ │ └── stepLifecycleCallbacks.test.ts │ │ │ │ ├── abort.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── HookDispatcher.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── HookDispatcher.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── aiAgent/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── execAgent.builtinRuntime.test.ts │ │ │ │ │ ├── execAgent.device.test.ts │ │ │ │ │ ├── execAgent.deviceToolPipeline.test.ts │ │ │ │ │ ├── execAgent.disableTools.test.ts │ │ │ │ │ ├── execAgent.files.test.ts │ │ │ │ │ ├── execAgent.memory.test.ts │ │ │ │ │ ├── execAgent.modelOverride.test.ts │ │ │ │ │ ├── execAgent.threadId.test.ts │ │ │ │ │ ├── execAgent.topicHistory.test.ts │ │ │ │ │ └── execGroupSubAgentTask.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── ingestAttachment.ts │ │ │ ├── aiChat/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── bot/ │ │ │ │ ├── AgentBridgeService.ts │ │ │ │ ├── BotCallbackService.ts │ │ │ │ ├── BotMessageRouter.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── AgentBridgeService.test.ts │ │ │ │ │ ├── BotCallbackService.test.ts │ │ │ │ │ ├── BotMessageRouter.test.ts │ │ │ │ │ ├── formatPrompt.test.ts │ │ │ │ │ └── replyTemplate.test.ts │ │ │ │ ├── ackPhrases/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── vibeMatrix.ts │ │ │ │ ├── formatPrompt.ts │ │ │ │ ├── index.ts │ │ │ │ ├── platforms/ │ │ │ │ │ ├── const.ts │ │ │ │ │ ├── discord/ │ │ │ │ │ │ ├── api.ts │ │ │ │ │ │ ├── client.test.ts │ │ │ │ │ │ ├── client.ts │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ ├── definition.ts │ │ │ │ │ │ ├── patch/ │ │ │ │ │ │ │ ├── forwardedInteractions.test.ts │ │ │ │ │ │ │ ├── forwardedInteractions.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── threadRecovery.test.ts │ │ │ │ │ │ │ └── threadRecovery.ts │ │ │ │ │ │ ├── protocol-spec.md │ │ │ │ │ │ ├── schema.ts │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── feishu/ │ │ │ │ │ │ ├── client.ts │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ ├── definitions/ │ │ │ │ │ │ │ ├── feishu.ts │ │ │ │ │ │ │ ├── lark.ts │ │ │ │ │ │ │ ├── schema.ts │ │ │ │ │ │ │ └── shared.ts │ │ │ │ │ │ ├── protocol-spec.md │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── qq/ │ │ │ │ │ │ ├── client.ts │ │ │ │ │ │ ├── definition.ts │ │ │ │ │ │ ├── protocol-spec.md │ │ │ │ │ │ ├── schema.ts │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── registry.test.ts │ │ │ │ │ ├── registry.ts │ │ │ │ │ ├── slack/ │ │ │ │ │ │ ├── api.ts │ │ │ │ │ │ ├── client.ts │ │ │ │ │ │ ├── const.ts │ │ │ │ │ │ ├── definition.ts │ │ │ │ │ │ ├── markdownToMrkdwn.test.ts │ │ │ │ │ │ ├── markdownToMrkdwn.ts │ │ │ │ │ │ ├── protocol-spec.md │ │ │ │ │ │ ├── schema.ts │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── stripMarkdown.test.ts │ │ │ │ │ ├── stripMarkdown.ts │ │ │ │ │ ├── telegram/ │ │ │ │ │ │ ├── api.ts │ │ │ │ │ │ ├── client.ts │ │ │ │ │ │ ├── definition.ts │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ ├── markdownToHTML.test.ts │ │ │ │ │ │ ├── markdownToHTML.ts │ │ │ │ │ │ ├── protocol-spec.md │ │ │ │ │ │ ├── schema.ts │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── wechat/ │ │ │ │ │ ├── client.test.ts │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── definition.ts │ │ │ │ │ ├── protocol-spec.md │ │ │ │ │ ├── schema.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── replyTemplate.ts │ │ │ │ └── types.ts │ │ │ ├── changelog/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── chunk/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── comfyui/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── constants.test.ts │ │ │ │ │ │ ├── modelRegistry.test.ts │ │ │ │ │ │ ├── promptToolConst.test.ts │ │ │ │ │ │ └── systemComponents.test.ts │ │ │ │ │ ├── core/ │ │ │ │ │ │ ├── comfyUIAuthService.test.ts │ │ │ │ │ │ ├── comfyUIConnectionService.test.ts │ │ │ │ │ │ ├── comfyuiClient.test.ts │ │ │ │ │ │ ├── errorHandler.test.ts │ │ │ │ │ │ ├── errorHandling.test.ts │ │ │ │ │ │ ├── imageService.test.ts │ │ │ │ │ │ ├── modelResolver.test.ts │ │ │ │ │ │ └── workflowBuilder.test.ts │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ ├── parameters.fixture.ts │ │ │ │ │ │ ├── supported.fixture.ts │ │ │ │ │ │ └── testModels.ts │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── mockContext.ts │ │ │ │ │ │ ├── realConfigData.ts │ │ │ │ │ │ └── testSetup.ts │ │ │ │ │ ├── integration/ │ │ │ │ │ │ ├── parameterMapping.test.ts │ │ │ │ │ │ ├── parameterTransformation.test.ts │ │ │ │ │ │ └── serviceIntegration.test.ts │ │ │ │ │ ├── setup/ │ │ │ │ │ │ └── unifiedMocks.ts │ │ │ │ │ ├── utils/ │ │ │ │ │ │ ├── cacheManager.test.ts │ │ │ │ │ │ ├── componentInfo.test.ts │ │ │ │ │ │ ├── imageResizer.test.ts │ │ │ │ │ │ ├── promptSplitter.test.ts │ │ │ │ │ │ ├── weightDType.test.ts │ │ │ │ │ │ └── workflowDetector.test.ts │ │ │ │ │ └── workflows/ │ │ │ │ │ ├── flux-kontext.test.ts │ │ │ │ │ ├── simple-sd.test.ts │ │ │ │ │ └── unified-workflows.test.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── fluxModelRegistry.ts │ │ │ │ │ ├── modelRegistry.ts │ │ │ │ │ ├── promptToolConst.ts │ │ │ │ │ ├── sdModelRegistry.ts │ │ │ │ │ ├── systemComponents.ts │ │ │ │ │ └── workflowRegistry.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── comfyUIAuthService.ts │ │ │ │ │ ├── comfyUIClientService.ts │ │ │ │ │ ├── comfyUIConnectionService.ts │ │ │ │ │ ├── errorHandlerService.ts │ │ │ │ │ ├── imageService.ts │ │ │ │ │ ├── modelResolverService.ts │ │ │ │ │ └── workflowBuilderService.ts │ │ │ │ ├── errors/ │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── configError.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modelResolverError.ts │ │ │ │ │ ├── servicesError.ts │ │ │ │ │ ├── typeGuards.ts │ │ │ │ │ ├── utilsError.ts │ │ │ │ │ └── workflowError.ts │ │ │ │ ├── types/ │ │ │ │ │ └── index.ts │ │ │ │ ├── utils/ │ │ │ │ │ ├── cacheManager.ts │ │ │ │ │ ├── componentInfo.ts │ │ │ │ │ ├── imageResizer.ts │ │ │ │ │ ├── promptSplitter.ts │ │ │ │ │ ├── staticModelLookup.ts │ │ │ │ │ ├── weightDType.ts │ │ │ │ │ ├── workflowDetector.ts │ │ │ │ │ └── workflowUtils.ts │ │ │ │ └── workflows/ │ │ │ │ ├── flux-dev.ts │ │ │ │ ├── flux-kontext.ts │ │ │ │ ├── flux-schnell.ts │ │ │ │ ├── index.ts │ │ │ │ ├── sd35.ts │ │ │ │ └── simple-sd.ts │ │ │ ├── desktopRelease/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── discover/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── doc/ │ │ │ │ └── index.tsx │ │ │ ├── document/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── email/ │ │ │ │ ├── README.md │ │ │ │ ├── impls/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── nodemailer/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── resend/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── file/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── index.test.ts │ │ │ │ ├── impls/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── s3.test.ts │ │ │ │ │ ├── s3.ts │ │ │ │ │ └── type.ts │ │ │ │ └── index.ts │ │ │ ├── gateway/ │ │ │ │ ├── GatewayManager.test.ts │ │ │ │ ├── GatewayManager.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── GatewayManager.test.ts │ │ │ │ ├── botConnectQueue.test.ts │ │ │ │ ├── botConnectQueue.ts │ │ │ │ ├── index.ts │ │ │ │ ├── runtimeStatus.test.ts │ │ │ │ └── runtimeStatus.ts │ │ │ ├── generation/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── latency.test.ts │ │ │ │ ├── latency.ts │ │ │ │ └── video.ts │ │ │ ├── klavis/ │ │ │ │ └── index.ts │ │ │ ├── market/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── mcp/ │ │ │ │ ├── contentProcessor.test.ts │ │ │ │ ├── contentProcessor.ts │ │ │ │ ├── deps/ │ │ │ │ │ ├── MCPSystemDepsCheckService.test.ts │ │ │ │ │ ├── MCPSystemDepsCheckService.ts │ │ │ │ │ ├── checkers/ │ │ │ │ │ │ ├── ManualInstallationChecker.test.ts │ │ │ │ │ │ ├── ManualInstallationChecker.ts │ │ │ │ │ │ ├── NpmInstallationChecker.test.ts │ │ │ │ │ │ ├── NpmInstallationChecker.ts │ │ │ │ │ │ ├── PythonInstallationChecker.test.ts │ │ │ │ │ │ └── PythonInstallationChecker.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── memory/ │ │ │ │ └── userMemory/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── extract.payload.test.ts │ │ │ │ │ ├── extract.runtime.test.ts │ │ │ │ │ └── topicBatching.test.ts │ │ │ │ ├── extract.ts │ │ │ │ ├── persona/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── service.test.ts │ │ │ │ │ └── service.ts │ │ │ │ └── topicBatching.ts │ │ │ ├── message/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── index.integration.test.ts │ │ │ │ │ └── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── notebook/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── oauthDeviceFlow/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── providers/ │ │ │ │ │ └── githubCopilot.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── providers/ │ │ │ │ └── githubCopilot.ts │ │ │ ├── oidc/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── oidcProvider.ts │ │ │ ├── onboarding/ │ │ │ │ ├── documentHelpers.test.ts │ │ │ │ ├── documentHelpers.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── nodeHandlers.ts │ │ │ │ ├── nodeSchema.test.ts │ │ │ │ └── nodeSchema.ts │ │ │ ├── pluginGateway/ │ │ │ │ ├── index.ts │ │ │ │ ├── settings.test.ts │ │ │ │ └── settings.ts │ │ │ ├── queue/ │ │ │ │ ├── QueueService.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── QueueService.test.ts │ │ │ │ ├── impls/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── local.ts │ │ │ │ │ ├── qstash.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── riskControl/ │ │ │ │ └── routerAlertNotification.ts │ │ │ ├── sandbox/ │ │ │ │ └── index.ts │ │ │ ├── search/ │ │ │ │ ├── impls/ │ │ │ │ │ ├── anspire/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── bocha/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── brave/ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── exa/ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── firecrawl/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── google/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── jina/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── kagi/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── search1api/ │ │ │ │ │ │ ├── index.integration.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ ├── searxng/ │ │ │ │ │ │ ├── client.test.ts │ │ │ │ │ │ ├── client.ts │ │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ │ └── searXNG.ts │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── tavily/ │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── type.ts │ │ │ │ │ └── type.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── skill/ │ │ │ │ ├── errors.ts │ │ │ │ ├── importer.test.ts │ │ │ │ ├── importer.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parser.test.ts │ │ │ │ ├── parser.ts │ │ │ │ ├── resource.test.ts │ │ │ │ └── resource.ts │ │ │ ├── systemAgent/ │ │ │ │ └── index.ts │ │ │ ├── task/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── taskLifecycle/ │ │ │ │ └── index.ts │ │ │ ├── taskReview/ │ │ │ │ └── index.ts │ │ │ ├── taskScheduler/ │ │ │ │ ├── impls/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── local.test.ts │ │ │ │ │ ├── local.ts │ │ │ │ │ └── type.ts │ │ │ │ └── index.ts │ │ │ ├── toolExecution/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── deviceProxy.test.ts │ │ │ │ │ ├── errorClassification.test.ts │ │ │ │ │ └── preprocessLhCommand.test.ts │ │ │ │ ├── builtin.ts │ │ │ │ ├── deviceProxy.ts │ │ │ │ ├── errorClassification.ts │ │ │ │ ├── index.ts │ │ │ │ ├── preprocessLhCommand.ts │ │ │ │ ├── serverRuntimes/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── localSystem.test.ts │ │ │ │ │ │ ├── message.test.ts │ │ │ │ │ │ ├── notebook.test.ts │ │ │ │ │ │ ├── remoteDevice.test.ts │ │ │ │ │ │ └── topicReference.test.ts │ │ │ │ │ ├── activator.ts │ │ │ │ │ ├── agentDocuments.test.ts │ │ │ │ │ ├── agentDocuments.ts │ │ │ │ │ ├── brief.ts │ │ │ │ │ ├── calculator.ts │ │ │ │ │ ├── cloudSandbox.ts │ │ │ │ │ ├── creds.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── localSystem.ts │ │ │ │ │ ├── memory.ts │ │ │ │ │ ├── message/ │ │ │ │ │ │ ├── MessageDispatcherService.ts │ │ │ │ │ │ ├── PlatformUnsupportedError.ts │ │ │ │ │ │ ├── adapters/ │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── notebook.ts │ │ │ │ │ ├── remoteDevice.ts │ │ │ │ │ ├── skillStore.ts │ │ │ │ │ ├── skills.ts │ │ │ │ │ ├── task.ts │ │ │ │ │ ├── topicReference.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── userInteraction.ts │ │ │ │ │ └── webBrowsing.ts │ │ │ │ └── types.ts │ │ │ ├── usage/ │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── user/ │ │ │ │ └── index.ts │ │ │ └── webhookUser/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── sitemap.test.ts │ │ ├── sitemap.ts │ │ ├── translation.test.ts │ │ ├── translation.ts │ │ ├── utils/ │ │ │ ├── __tests__/ │ │ │ │ └── tempFileManager.test.ts │ │ │ ├── createSpeechResponse.ts │ │ │ ├── serializeForHtml.ts │ │ │ ├── tempFileManager.ts │ │ │ ├── truncateToolResult.ts │ │ │ ├── url.test.ts │ │ │ └── url.ts │ │ └── workflows/ │ │ └── agentEvalRun/ │ │ └── index.ts │ ├── services/ │ │ ├── __tests__/ │ │ │ ├── __snapshots__/ │ │ │ │ └── tool.test.ts.snap │ │ │ ├── _auth.test.ts │ │ │ ├── _url.test.ts │ │ │ ├── generation.test.ts │ │ │ ├── generationBatch.test.ts │ │ │ ├── generationTopic.test.ts │ │ │ ├── global.test.ts │ │ │ ├── models.test.ts │ │ │ ├── openai/ │ │ │ │ ├── OpenAPI_V3.json │ │ │ │ └── plugin.json │ │ │ ├── tool.test.ts │ │ │ └── upload.test.ts │ │ ├── _auth.ts │ │ ├── _header.ts │ │ ├── _url.ts │ │ ├── agent.ts │ │ ├── agentBotProvider.ts │ │ ├── agentCronJob.ts │ │ ├── agentDocument.ts │ │ ├── agentEval.ts │ │ ├── agentRuntime/ │ │ │ ├── __tests__/ │ │ │ │ └── client.test.ts │ │ │ ├── client.ts │ │ │ ├── index.ts │ │ │ └── type.ts │ │ ├── aiAgent.ts │ │ ├── aiChat.ts │ │ ├── aiModel/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── aiProvider/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── chat/ │ │ │ ├── chat.test.ts │ │ │ ├── helper.ts │ │ │ ├── index.ts │ │ │ ├── mecha/ │ │ │ │ ├── agentConfigResolver.test.ts │ │ │ │ ├── agentConfigResolver.ts │ │ │ │ ├── clientModelRuntime.test.ts │ │ │ │ ├── clientModelRuntime.ts │ │ │ │ ├── contextEngineering.test.ts │ │ │ │ ├── contextEngineering.ts │ │ │ │ ├── index.ts │ │ │ │ ├── memoryManager.ts │ │ │ │ ├── modelParamsResolver.test.ts │ │ │ │ ├── modelParamsResolver.ts │ │ │ │ ├── skillEngineering.ts │ │ │ │ ├── skillPreload.test.ts │ │ │ │ └── skillPreload.ts │ │ │ └── types.ts │ │ ├── chatGroup/ │ │ │ └── index.ts │ │ ├── cloudSandbox.ts │ │ ├── config.ts │ │ ├── debug.ts │ │ ├── discover.ts │ │ ├── document/ │ │ │ └── index.ts │ │ ├── electron/ │ │ │ ├── __tests__/ │ │ │ │ ├── desktopSkillRuntime.test.ts │ │ │ │ └── devtools.test.ts │ │ │ ├── autoUpdate.ts │ │ │ ├── desktopExportService.tsx │ │ │ ├── desktopNotification.ts │ │ │ ├── desktopSkillRuntime.ts │ │ │ ├── devtools.ts │ │ │ ├── gatewayConnection.ts │ │ │ ├── localFileService.ts │ │ │ ├── remoteServer.ts │ │ │ ├── settings.ts │ │ │ ├── system.ts │ │ │ └── toolDetector.ts │ │ ├── export/ │ │ │ └── index.ts │ │ ├── file/ │ │ │ └── index.ts │ │ ├── generation.ts │ │ ├── generationBatch.ts │ │ ├── generationTopic.ts │ │ ├── github.ts │ │ ├── global.ts │ │ ├── home/ │ │ │ └── index.ts │ │ ├── image.ts │ │ ├── import/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── knowledgeBase.ts │ │ ├── marketApi.ts │ │ ├── mcp.test.ts │ │ ├── mcp.ts │ │ ├── message/ │ │ │ ├── __tests__/ │ │ │ │ └── metadata-race-condition.test.ts │ │ │ ├── index.ts │ │ │ └── server.test.ts │ │ ├── models.ts │ │ ├── notebook.ts │ │ ├── notification.ts │ │ ├── plugin/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── python.ts │ │ ├── rag.ts │ │ ├── ragEval.ts │ │ ├── resource/ │ │ │ └── index.ts │ │ ├── search.ts │ │ ├── session/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── share.ts │ │ ├── skill/ │ │ │ └── index.ts │ │ ├── social.ts │ │ ├── tableViewer/ │ │ │ ├── client.ts │ │ │ └── index.ts │ │ ├── thread/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── tool.ts │ │ ├── topic/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── trace.ts │ │ ├── upload.ts │ │ ├── usage.ts │ │ ├── user/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── userMemory/ │ │ │ ├── crud.ts │ │ │ ├── extraction.ts │ │ │ └── index.ts │ │ ├── utils/ │ │ │ ├── abortableRequest.test.ts │ │ │ └── abortableRequest.ts │ │ └── video.ts │ ├── spa/ │ │ ├── entry.desktop.tsx │ │ ├── entry.mobile.tsx │ │ ├── entry.web.tsx │ │ └── router/ │ │ ├── desktopRouter.config.desktop.tsx │ │ ├── desktopRouter.config.tsx │ │ ├── desktopRouter.sync.test.tsx │ │ └── mobileRouter.config.tsx │ ├── store/ │ │ ├── agent/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors/ │ │ │ │ ├── agentByIdSelectors.test.ts │ │ │ │ ├── agentByIdSelectors.ts │ │ │ │ ├── builtinAgentSelectors.test.ts │ │ │ │ ├── builtinAgentSelectors.ts │ │ │ │ ├── chatConfigByIdSelectors.test.ts │ │ │ │ ├── chatConfigByIdSelectors.ts │ │ │ │ ├── chatConfigSelectors.test.ts │ │ │ │ ├── chatConfigSelectors.ts │ │ │ │ ├── index.ts │ │ │ │ ├── selectors.test.ts │ │ │ │ └── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── agent/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── bot/ │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── builtin/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── cron/ │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── knowledge/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ └── plugin/ │ │ │ │ ├── action.test.ts │ │ │ │ ├── action.ts │ │ │ │ └── index.ts │ │ │ └── store.ts │ │ ├── agentGroup/ │ │ │ ├── action.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── reducers.ts │ │ │ ├── selectors/ │ │ │ │ ├── byId.test.ts │ │ │ │ ├── byId.ts │ │ │ │ ├── current.ts │ │ │ │ └── index.ts │ │ │ ├── slices/ │ │ │ │ ├── curd.test.ts │ │ │ │ ├── curd.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lifecycle.test.ts │ │ │ │ ├── lifecycle.ts │ │ │ │ ├── member.test.ts │ │ │ │ └── member.ts │ │ │ └── store.ts │ │ ├── aiInfra/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── aiModel/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── aiProvider/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ └── selectors.test.ts │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ ├── initialState.ts │ │ │ │ └── selectors.ts │ │ │ └── store.ts │ │ ├── chat/ │ │ │ ├── agents/ │ │ │ │ ├── GroupOrchestration/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── batch-exec-async-tasks.test.ts │ │ │ │ │ │ └── call-supervisor.test.ts │ │ │ │ │ ├── createGroupOrchestrationExecutors.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── StreamingHandler.test.ts │ │ │ │ ├── StreamingHandler.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── createAgentExecutors/ │ │ │ │ │ ├── call-llm.test.ts │ │ │ │ │ ├── call-tool.test.ts │ │ │ │ │ ├── exec-task.test.ts │ │ │ │ │ ├── exec-tasks.test.ts │ │ │ │ │ ├── finish.test.ts │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── mockInstructions.ts │ │ │ │ │ │ ├── mockMessages.ts │ │ │ │ │ │ ├── mockOperations.ts │ │ │ │ │ │ └── mockStore.ts │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── assertions.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── operationTestUtils.ts │ │ │ │ │ │ └── testExecutor.ts │ │ │ │ │ ├── request-human-approve.test.ts │ │ │ │ │ └── resolve-aborted-tools.test.ts │ │ │ │ ├── createAgentExecutors.ts │ │ │ │ └── types/ │ │ │ │ └── streaming.ts │ │ │ ├── helpers.test.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── aiAgent/ │ │ │ │ │ ├── actions/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── agentGroup.test.ts │ │ │ │ │ │ │ ├── groupOrchestration.test.ts │ │ │ │ │ │ │ └── runAgent.test.ts │ │ │ │ │ │ ├── agentGroup.ts │ │ │ │ │ │ ├── groupOrchestration.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── runAgent.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── aiChat/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── ai-chat.integration.test.ts │ │ │ │ │ ├── actions/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── cancel-functionality.test.ts │ │ │ │ │ │ │ ├── conversationControl.test.ts │ │ │ │ │ │ │ ├── conversationLifecycle.test.ts │ │ │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ │ ├── streamingExecutor.test.ts │ │ │ │ │ │ │ └── streamingStates.test.ts │ │ │ │ │ │ ├── commandBus/ │ │ │ │ │ │ │ ├── editorDataHelpers.ts │ │ │ │ │ │ │ ├── handlers.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── parseCommands.test.ts │ │ │ │ │ │ │ ├── parseCommands.ts │ │ │ │ │ │ │ ├── processCommands.test.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── conversationControl.ts │ │ │ │ │ │ ├── conversationLifecycle.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── memory.ts │ │ │ │ │ │ ├── streamingExecutor.ts │ │ │ │ │ │ └── streamingStates.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── builtinTool/ │ │ │ │ │ ├── actions/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── search.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── interpreter.ts │ │ │ │ │ │ └── search.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── message/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── actions/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── internals.ts │ │ │ │ │ │ ├── optimisticUpdate.ts │ │ │ │ │ │ ├── publicApi.ts │ │ │ │ │ │ ├── query.ts │ │ │ │ │ │ └── runtimeState.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── reducer.test.ts │ │ │ │ │ ├── reducer.ts │ │ │ │ │ ├── selectors/ │ │ │ │ │ │ ├── chat.test.ts │ │ │ │ │ │ ├── chat.ts │ │ │ │ │ │ ├── dbMessage.test.ts │ │ │ │ │ │ ├── dbMessage.ts │ │ │ │ │ │ ├── displayMessage.test.ts │ │ │ │ │ │ ├── displayMessage.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── messageState.test.ts │ │ │ │ │ │ └── messageState.ts │ │ │ │ │ ├── supervisor.test.ts │ │ │ │ │ └── supervisor.ts │ │ │ │ ├── operation/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── actions.test.ts │ │ │ │ │ │ ├── integration.test.ts │ │ │ │ │ │ └── selectors.test.ts │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── plugin/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ └── actions/ │ │ │ │ │ ├── exector.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── internals.ts │ │ │ │ │ ├── optimisticUpdate.ts │ │ │ │ │ ├── pluginTypes.ts │ │ │ │ │ ├── publicApi.ts │ │ │ │ │ └── workflow.ts │ │ │ │ ├── portal/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors/ │ │ │ │ │ │ └── thread.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── thread/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── reducer.ts │ │ │ │ │ └── selectors/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── util.ts │ │ │ │ ├── topic/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── reducer.test.ts │ │ │ │ │ ├── reducer.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── translate/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ └── action.ts │ │ │ │ └── tts/ │ │ │ │ ├── action.test.ts │ │ │ │ └── action.ts │ │ │ ├── store.ts │ │ │ └── utils/ │ │ │ ├── cleanSpeakerTag.test.ts │ │ │ ├── cleanSpeakerTag.ts │ │ │ ├── compression.test.ts │ │ │ ├── compression.ts │ │ │ ├── index.ts │ │ │ ├── messageMapKey.test.ts │ │ │ ├── messageMapKey.ts │ │ │ ├── topicMapKey.test.ts │ │ │ └── topicMapKey.ts │ │ ├── discover/ │ │ │ ├── index.ts │ │ │ ├── slices/ │ │ │ │ ├── assistant/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── groupAgent/ │ │ │ │ │ └── action.ts │ │ │ │ ├── mcp/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── plugin/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── provider/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── skill/ │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── social/ │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ └── user/ │ │ │ │ ├── action.ts │ │ │ │ └── index.ts │ │ │ └── store.ts │ │ ├── document/ │ │ │ ├── index.ts │ │ │ ├── slices/ │ │ │ │ ├── document/ │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ └── editor/ │ │ │ │ ├── action.test.ts │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ ├── initialState.ts │ │ │ │ ├── reducer.test.ts │ │ │ │ ├── reducer.ts │ │ │ │ ├── selectors.test.ts │ │ │ │ └── selectors.ts │ │ │ └── store.ts │ │ ├── electron/ │ │ │ ├── actions/ │ │ │ │ ├── app.ts │ │ │ │ ├── gateway.ts │ │ │ │ ├── navigationHistory.ts │ │ │ │ ├── recentPages.ts │ │ │ │ ├── settings.ts │ │ │ │ ├── sync.ts │ │ │ │ └── tabPages.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── desktopState.test.ts │ │ │ │ ├── desktopState.ts │ │ │ │ ├── hotkey.ts │ │ │ │ ├── index.ts │ │ │ │ └── sync.ts │ │ │ └── store.ts │ │ ├── eval/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── benchmark/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── reducer.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── dataset/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── reducer.ts │ │ │ │ ├── run/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── reducer.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── testCase/ │ │ │ │ ├── action.ts │ │ │ │ └── initialState.ts │ │ │ └── store.ts │ │ ├── file/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── reducers/ │ │ │ │ ├── uploadFileList.test.ts │ │ │ │ └── uploadFileList.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── chat/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── chunk/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── document/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── fileManager/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── resource/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── tts/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── upload/ │ │ │ │ ├── action.test.ts │ │ │ │ └── action.ts │ │ │ └── store.ts │ │ ├── global/ │ │ │ ├── action.test.ts │ │ │ ├── actions/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── general.test.ts │ │ │ │ ├── general.ts │ │ │ │ └── workspacePane.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors/ │ │ │ │ ├── clientDB.ts │ │ │ │ ├── general.test.ts │ │ │ │ ├── general.ts │ │ │ │ ├── index.ts │ │ │ │ ├── systemStatus.test.ts │ │ │ │ └── systemStatus.ts │ │ │ └── store.ts │ │ ├── groupProfile/ │ │ │ ├── action.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ └── selectors.ts │ │ ├── home/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── agentList/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── group/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── homeInput/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── recent/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── sidebarUI/ │ │ │ │ ├── action.test.ts │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ └── initialState.ts │ │ │ └── store.ts │ │ ├── image/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── createImage/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── generationBatch/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── reducer.test.ts │ │ │ │ │ ├── reducer.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── generationConfig/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── hooks.test.ts │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── generationTopic/ │ │ │ │ ├── action.test.ts │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ ├── initialState.ts │ │ │ │ ├── reducer.test.ts │ │ │ │ ├── reducer.ts │ │ │ │ ├── selectors.test.ts │ │ │ │ └── selectors.ts │ │ │ ├── store.ts │ │ │ └── utils/ │ │ │ ├── aspectRatio.test.ts │ │ │ ├── aspectRatio.ts │ │ │ ├── size.test.ts │ │ │ └── size.ts │ │ ├── library/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── content/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── crud/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── ragEval/ │ │ │ │ ├── actions/ │ │ │ │ │ ├── dataset.ts │ │ │ │ │ ├── evaluation.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── initialState.ts │ │ │ └── store.ts │ │ ├── mention/ │ │ │ ├── action.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ └── store.ts │ │ ├── middleware/ │ │ │ ├── createDevtools.ts │ │ │ └── expose.ts │ │ ├── notebook/ │ │ │ ├── action.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ └── store.ts │ │ ├── page/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── crud/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── internal/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reducer.ts │ │ │ │ ├── list/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── selection/ │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ └── initialState.ts │ │ │ └── store.ts │ │ ├── serverConfig/ │ │ │ ├── Provider.tsx │ │ │ ├── action.test.ts │ │ │ ├── action.ts │ │ │ ├── index.ts │ │ │ ├── selectors.test.ts │ │ │ ├── selectors.ts │ │ │ ├── store.test.ts │ │ │ └── store.ts │ │ ├── session/ │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── homeInput/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── recent/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── session/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── reducers.test.ts │ │ │ │ │ ├── reducers.ts │ │ │ │ │ └── selectors/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── list.test.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── meta.test.ts │ │ │ │ │ └── meta.ts │ │ │ │ └── sessionGroup/ │ │ │ │ ├── action.test.ts │ │ │ │ ├── action.ts │ │ │ │ ├── initialState.ts │ │ │ │ ├── reducer.test.ts │ │ │ │ ├── reducer.ts │ │ │ │ └── selectors.ts │ │ │ └── store.ts │ │ ├── test-coverage.md │ │ ├── tool/ │ │ │ ├── builtinToolRegistry.test.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors/ │ │ │ │ ├── index.ts │ │ │ │ ├── tool.test.ts │ │ │ │ └── tool.ts │ │ │ ├── slices/ │ │ │ │ ├── agentSkills/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── builtin/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── executors/ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── BaseExecutor.test.ts │ │ │ │ │ │ │ ├── lobe-activator.test.ts │ │ │ │ │ │ │ └── lobe-web-browsing.test.ts │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── lobe-activator.ts │ │ │ │ │ │ ├── lobe-agent-documents.ts │ │ │ │ │ │ ├── lobe-message.ts │ │ │ │ │ │ ├── lobe-notebook.ts │ │ │ │ │ │ ├── lobe-page-agent.ts │ │ │ │ │ │ ├── lobe-skill-store.ts │ │ │ │ │ │ ├── lobe-skills.desktop.ts │ │ │ │ │ │ ├── lobe-skills.ts │ │ │ │ │ │ ├── lobe-topic-reference.ts │ │ │ │ │ │ ├── lobe-user-interaction.ts │ │ │ │ │ │ ├── lobe-web-browsing.ts │ │ │ │ │ │ ├── lobe-web-onboarding.test.ts │ │ │ │ │ │ └── lobe-web-onboarding.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ ├── selectors.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── customPlugin/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── reducers/ │ │ │ │ │ │ └── customPluginList.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── klavisStore/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ ├── selectors.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── lobehubSkillStore/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ ├── selectors.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── mcpStore/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── oldStore/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── plugin/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── action.test.ts.snap │ │ │ │ ├── action.test.ts │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ ├── initialState.ts │ │ │ │ ├── reducers/ │ │ │ │ │ └── manifest.ts │ │ │ │ ├── selectors.test.ts │ │ │ │ └── selectors.ts │ │ │ └── store.ts │ │ ├── types.ts │ │ ├── user/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── agentOnboarding/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── auth/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── common/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── onboarding/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors.test.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── preference/ │ │ │ │ │ ├── action.test.ts │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ ├── selectors/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── labPrefer.ts │ │ │ │ │ │ └── preference.ts │ │ │ │ │ └── selectors.test.ts │ │ │ │ └── settings/ │ │ │ │ ├── action.test.ts │ │ │ │ ├── action.ts │ │ │ │ ├── initialState.ts │ │ │ │ └── selectors/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── settings.test.ts.snap │ │ │ │ ├── general.test.ts │ │ │ │ ├── general.ts │ │ │ │ ├── index.ts │ │ │ │ ├── keyVaults.ts │ │ │ │ ├── settings.test.ts │ │ │ │ ├── settings.ts │ │ │ │ ├── systemAgent.ts │ │ │ │ ├── toolIntervention.test.ts │ │ │ │ └── toolIntervention.ts │ │ │ └── store.ts │ │ ├── userMemory/ │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── selectors.ts │ │ │ ├── slices/ │ │ │ │ ├── activity/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── agent/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── base/ │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── context/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── experience/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── initialState.ts │ │ │ │ ├── home/ │ │ │ │ │ ├── action.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── identity/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── initialState.ts │ │ │ │ │ └── selectors.ts │ │ │ │ └── preference/ │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ └── initialState.ts │ │ │ ├── store.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── cacheKey.ts │ │ │ └── searchParams.ts │ │ ├── utils/ │ │ │ ├── flattenActions.ts │ │ │ ├── optimisticEngine.test.ts │ │ │ └── optimisticEngine.ts │ │ └── video/ │ │ ├── index.ts │ │ ├── initialState.ts │ │ ├── selectors.ts │ │ ├── slices/ │ │ │ ├── createVideo/ │ │ │ │ ├── action.ts │ │ │ │ ├── initialState.ts │ │ │ │ └── selectors.ts │ │ │ ├── generationBatch/ │ │ │ │ ├── action.ts │ │ │ │ ├── initialState.ts │ │ │ │ ├── reducer.ts │ │ │ │ └── selectors.ts │ │ │ ├── generationConfig/ │ │ │ │ ├── action.ts │ │ │ │ ├── hooks.ts │ │ │ │ ├── initialState.ts │ │ │ │ └── selectors.ts │ │ │ └── generationTopic/ │ │ │ ├── action.ts │ │ │ ├── index.ts │ │ │ ├── initialState.ts │ │ │ ├── reducer.ts │ │ │ └── selectors.ts │ │ └── store.ts │ ├── styles/ │ │ ├── antdOverride.ts │ │ ├── electron.ts │ │ ├── global.ts │ │ ├── index.ts │ │ ├── loading.ts │ │ ├── mobileHeader.ts │ │ └── text.ts │ ├── types/ │ │ ├── botRuntimeStatus.ts │ │ ├── global.d.ts │ │ ├── i18next.d.ts │ │ ├── locale.ts │ │ ├── next.ts │ │ ├── resource.ts │ │ ├── shim-lobe-ui.d.ts │ │ ├── spaServerConfig.ts │ │ └── worker.d.ts │ ├── utils/ │ │ ├── __tests__/ │ │ │ └── deviceFingerprint.test.ts │ │ ├── chunkError.ts │ │ ├── client/ │ │ │ ├── switchLang.test.ts │ │ │ └── switchLang.ts │ │ ├── deviceFingerprint.ts │ │ ├── electron/ │ │ │ ├── autoOidc.ts │ │ │ └── ipc.ts │ │ ├── errorResponse.test.ts │ │ ├── errorResponse.ts │ │ ├── gitignore.test.ts │ │ ├── gitignore.ts │ │ ├── i18n/ │ │ │ ├── createI18n.test.ts │ │ │ ├── loadI18nNamespaceModule.desktop.ts │ │ │ ├── loadI18nNamespaceModule.ts │ │ │ └── loadI18nNamespaceModule.vite.ts │ │ ├── identifier.test.ts │ │ ├── identifier.ts │ │ ├── locale.desktop.ts │ │ ├── locale.test.ts │ │ ├── locale.ts │ │ ├── locale.vite.ts │ │ ├── markdownToTxt.test.ts │ │ ├── markdownToTxt.ts │ │ ├── navigation.ts │ │ ├── platform.ts │ │ ├── rbac.test.ts │ │ ├── rbac.ts │ │ ├── router.tsx │ │ ├── sanitizeFileName.test.ts │ │ ├── sanitizeFileName.ts │ │ ├── server/ │ │ │ ├── __snapshots__/ │ │ │ │ └── parseModels.test.ts.snap │ │ │ ├── pageProps.ts │ │ │ ├── parseModels.test.ts │ │ │ ├── parseModels.ts │ │ │ ├── routeVariants.test.ts │ │ │ └── routeVariants.ts │ │ ├── styles.ts │ │ ├── textLength.test.ts │ │ ├── textLength.ts │ │ ├── unzipFile.test.ts │ │ ├── unzipFile.ts │ │ ├── webOnboardingToolResult.test.ts │ │ └── webOnboardingToolResult.ts │ └── vite.d.ts ├── stylelint.config.mjs ├── tests/ │ ├── i18n/ │ │ └── createI18nNext.test.ts │ ├── mocks/ │ │ ├── emojiMartData.ts │ │ ├── emojiMartReact.tsx │ │ └── lru_map.ts │ ├── setup.ts │ └── utils.tsx ├── tsconfig.json ├── vercel.json ├── vite.config.ts └── vitest.config.mts