gitextract_k__2zx16/ ├── .eslintrc.json ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ └── workflows/ │ └── release.yml ├── .gitignore ├── .vscode/ │ └── settings.json ├── LICENSE ├── README.md ├── components.json ├── messages/ │ ├── en.json │ ├── ja.json │ ├── pt-BR.json │ ├── zh-TW.json │ └── zh.json ├── next.config.ts ├── package.json ├── postcss.config.mjs ├── public/ │ └── markdown/ │ ├── github-markdown-dark.css │ └── github-markdown-light.css ├── scripts/ │ └── sync-version.sh ├── src/ │ ├── app/ │ │ ├── core/ │ │ │ ├── index.d.ts │ │ │ ├── layout.tsx │ │ │ ├── main/ │ │ │ │ ├── chat/ │ │ │ │ │ ├── agent-execution-status.tsx │ │ │ │ │ ├── agent-history.tsx │ │ │ │ │ ├── agent-panel-with-rag.tsx │ │ │ │ │ ├── chat-clipboard.tsx │ │ │ │ │ ├── chat-content.tsx │ │ │ │ │ ├── chat-empty.tsx │ │ │ │ │ ├── chat-footer.tsx │ │ │ │ │ ├── chat-header.tsx │ │ │ │ │ ├── chat-images.tsx │ │ │ │ │ ├── chat-input.tsx │ │ │ │ │ ├── chat-preview.tsx │ │ │ │ │ ├── chat-send.tsx │ │ │ │ │ ├── chat-thinking.tsx │ │ │ │ │ ├── chat.css │ │ │ │ │ ├── clear-chat.tsx │ │ │ │ │ ├── clear-context.tsx │ │ │ │ │ ├── clipboard-listener.tsx │ │ │ │ │ ├── clipboard-monitor.tsx │ │ │ │ │ ├── file-link.tsx │ │ │ │ │ ├── file-selector.tsx │ │ │ │ │ ├── history-dropdown.tsx │ │ │ │ │ ├── image-attachments.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── mcp-button.tsx │ │ │ │ │ ├── mcp-tool-call.tsx │ │ │ │ │ ├── message-control/ │ │ │ │ │ │ ├── condensed-indicator.tsx │ │ │ │ │ │ ├── copy-control.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── mark-text.tsx │ │ │ │ │ │ ├── message-info.tsx │ │ │ │ │ │ ├── note-output.tsx │ │ │ │ │ │ ├── read-aloud-control.tsx │ │ │ │ │ │ └── translate-control.tsx │ │ │ │ │ ├── model-select.tsx │ │ │ │ │ ├── new-chat.tsx │ │ │ │ │ ├── onboarding-typing.ts │ │ │ │ │ ├── prompt-select.tsx │ │ │ │ │ ├── quote-display.tsx │ │ │ │ │ ├── quote-preview.ts │ │ │ │ │ ├── rag-switch.tsx │ │ │ │ │ └── streaming-smoother.ts │ │ │ │ ├── editor/ │ │ │ │ │ ├── editor-layout.tsx │ │ │ │ │ ├── empty-state-actions.ts │ │ │ │ │ ├── empty-state.tsx │ │ │ │ │ ├── folder/ │ │ │ │ │ │ ├── folder-stats.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── skill-detail.tsx │ │ │ │ │ │ └── skills-list.tsx │ │ │ │ │ ├── image/ │ │ │ │ │ │ ├── image-editor.css │ │ │ │ │ │ ├── image-editor.tsx │ │ │ │ │ │ └── image-footer.tsx │ │ │ │ │ ├── markdown/ │ │ │ │ │ │ ├── ai-completion.tsx │ │ │ │ │ │ ├── ai-suggestion-floating.tsx │ │ │ │ │ │ ├── ai-suggestion.ts │ │ │ │ │ │ ├── bubble-menu.tsx │ │ │ │ │ │ ├── export-menu.tsx │ │ │ │ │ │ ├── floating-table-menu.tsx │ │ │ │ │ │ ├── footer-bar/ │ │ │ │ │ │ │ ├── copy-button.tsx │ │ │ │ │ │ │ ├── export-button.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── outline-toggle.tsx │ │ │ │ │ │ │ ├── vector-calc.tsx │ │ │ │ │ │ │ └── word-count.tsx │ │ │ │ │ │ ├── image-bubble-menu.tsx │ │ │ │ │ │ ├── markdown-input-rules.ts │ │ │ │ │ │ ├── markdown-paragraph.ts │ │ │ │ │ │ ├── math-editor-dialog.tsx │ │ │ │ │ │ ├── math-extension.tsx │ │ │ │ │ │ ├── md-editor-wrapper.tsx │ │ │ │ │ │ ├── mermaid-extension.tsx │ │ │ │ │ │ ├── mobile-editor-context-bar-view-model.ts │ │ │ │ │ │ ├── mobile-editor-context-bar.tsx │ │ │ │ │ │ ├── mobile-editor-more-sheet.tsx │ │ │ │ │ │ ├── mobile-selection-context.ts │ │ │ │ │ │ ├── outline.tsx │ │ │ │ │ │ ├── quote-mark.ts │ │ │ │ │ │ ├── quote-session.ts │ │ │ │ │ │ ├── search-navigation.ts │ │ │ │ │ │ ├── search-replace-panel.tsx │ │ │ │ │ │ ├── slash-command/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── slash-command-portal.tsx │ │ │ │ │ │ │ ├── slash-menu.tsx │ │ │ │ │ │ │ └── suggestion.tsx │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ ├── sync/ │ │ │ │ │ │ │ ├── conflict-dialog.tsx │ │ │ │ │ │ │ ├── history-sheet.tsx │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── pull-button.tsx │ │ │ │ │ │ │ ├── sync-button.tsx │ │ │ │ │ │ │ └── sync-tools.tsx │ │ │ │ │ │ ├── table-toolbar.tsx │ │ │ │ │ │ └── tiptap-editor.tsx │ │ │ │ │ ├── onboarding-state.ts │ │ │ │ │ ├── tab-bar.tsx │ │ │ │ │ └── unsupported-file.tsx │ │ │ │ ├── file/ │ │ │ │ │ ├── file-actions.tsx │ │ │ │ │ ├── file-footer.tsx │ │ │ │ │ ├── file-item.tsx │ │ │ │ │ ├── file-manager.tsx │ │ │ │ │ ├── file-toolbar.tsx │ │ │ │ │ ├── folder-item/ │ │ │ │ │ │ ├── copy-folder.tsx │ │ │ │ │ │ ├── cut-folder.tsx │ │ │ │ │ │ ├── delete-folder.tsx │ │ │ │ │ │ ├── duplicate-folder.tsx │ │ │ │ │ │ ├── folder-vector-menu.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── new-file.tsx │ │ │ │ │ │ ├── new-folder.tsx │ │ │ │ │ │ ├── paste-in-folder.tsx │ │ │ │ │ │ ├── paste-into-folder.js │ │ │ │ │ │ ├── paste-target.js │ │ │ │ │ │ ├── paste-target.spec.mjs │ │ │ │ │ │ ├── rename-folder.tsx │ │ │ │ │ │ ├── sync-folder.tsx │ │ │ │ │ │ └── view-directory.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── mobile-action-menu.tsx │ │ │ │ │ ├── root-drop.js │ │ │ │ │ ├── root-drop.spec.mjs │ │ │ │ │ ├── vector-knowledge-menu.tsx │ │ │ │ │ └── workspace-selector.tsx │ │ │ │ ├── left-sidebar.tsx │ │ │ │ ├── mark/ │ │ │ │ │ ├── clipboard.tsx │ │ │ │ │ ├── control-file.tsx │ │ │ │ │ ├── control-image.tsx │ │ │ │ │ ├── control-link.tsx │ │ │ │ │ ├── control-recording.tsx │ │ │ │ │ ├── control-scan.tsx │ │ │ │ │ ├── control-text.tsx │ │ │ │ │ ├── control-todo.tsx │ │ │ │ │ ├── crop.css │ │ │ │ │ ├── image-gallery.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── mark-actions.tsx │ │ │ │ │ ├── mark-empty.tsx │ │ │ │ │ ├── mark-filter-popover.tsx │ │ │ │ │ ├── mark-filters.mjs │ │ │ │ │ ├── mark-filters.spec.mjs │ │ │ │ │ ├── mark-header.tsx │ │ │ │ │ ├── mark-item.tsx │ │ │ │ │ ├── mark-list-card-view.tsx │ │ │ │ │ ├── mark-list-compact-view.tsx │ │ │ │ │ ├── mark-list-default-view.tsx │ │ │ │ │ ├── mark-list-item-content.tsx │ │ │ │ │ ├── mark-list.tsx │ │ │ │ │ ├── mark-loading.tsx │ │ │ │ │ ├── mark-mobile-actions.tsx │ │ │ │ │ ├── mark-toolbar.tsx │ │ │ │ │ ├── mark-type-meta.ts │ │ │ │ │ ├── mark-view-mode-toggle.tsx │ │ │ │ │ ├── mark-view-mode.mjs │ │ │ │ │ ├── mark-view-mode.spec.mjs │ │ │ │ │ ├── organize-notes.tsx │ │ │ │ │ ├── organize-onboarding.ts │ │ │ │ │ ├── tag-item.tsx │ │ │ │ │ ├── tag-manage.tsx │ │ │ │ │ ├── tag-mobile-actions.tsx │ │ │ │ │ ├── todo-edit-button.tsx │ │ │ │ │ ├── todo-edit-dialog.tsx │ │ │ │ │ ├── todo-form.tsx │ │ │ │ │ └── todo-item-content.tsx │ │ │ │ └── page.tsx │ │ │ └── setting/ │ │ │ ├── about/ │ │ │ │ ├── page.tsx │ │ │ │ ├── setting-about.tsx │ │ │ │ └── updater.tsx │ │ │ ├── ai/ │ │ │ │ ├── create.tsx │ │ │ │ ├── default-models.tsx │ │ │ │ ├── model-card.tsx │ │ │ │ ├── modelSelect.tsx │ │ │ │ └── page.tsx │ │ │ ├── audio/ │ │ │ │ ├── page.tsx │ │ │ │ └── setting.tsx │ │ │ ├── chat/ │ │ │ │ ├── condense-settings.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── primary-model-settings.tsx │ │ │ │ └── toolbar-settings.tsx │ │ │ ├── components/ │ │ │ │ ├── default-models-settings.tsx │ │ │ │ ├── model-select.tsx │ │ │ │ ├── setting-base.tsx │ │ │ │ ├── setting-tab.tsx │ │ │ │ └── upload-store.tsx │ │ │ ├── config.tsx │ │ │ ├── defaultModel/ │ │ │ │ ├── page.tsx │ │ │ │ └── setting.tsx │ │ │ ├── dev/ │ │ │ │ ├── page.tsx │ │ │ │ ├── set-config.tsx │ │ │ │ └── setting-dev.tsx │ │ │ ├── editor/ │ │ │ │ ├── centered-content.tsx │ │ │ │ ├── commit.tsx │ │ │ │ ├── completion.tsx │ │ │ │ ├── outline.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── show-undo-redo.tsx │ │ │ ├── file/ │ │ │ │ ├── page.tsx │ │ │ │ ├── setting-assets.tsx │ │ │ │ └── setting-workspace.tsx │ │ │ ├── general/ │ │ │ │ ├── interface-settings/ │ │ │ │ │ ├── content-text-scale.tsx │ │ │ │ │ ├── custom-theme.tsx │ │ │ │ │ ├── file-manager-text-size.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── language.tsx │ │ │ │ │ ├── record-text-size.tsx │ │ │ │ │ ├── scale.tsx │ │ │ │ │ ├── theme-color-picker.tsx │ │ │ │ │ ├── theme-presets.tsx │ │ │ │ │ └── theme.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── tool-settings.tsx │ │ │ ├── imageHosting/ │ │ │ │ ├── github.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── picgo.tsx │ │ │ │ ├── s3.tsx │ │ │ │ ├── setting-switch.tsx │ │ │ │ └── smms.tsx │ │ │ ├── imageMethod/ │ │ │ │ ├── ocr.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── setDefault.tsx │ │ │ │ └── vlm.tsx │ │ │ ├── layout.tsx │ │ │ ├── mcp/ │ │ │ │ ├── connection-test.tsx │ │ │ │ ├── json-import-dialog.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── runtime-environment-card.tsx │ │ │ │ ├── server-config-dialog.tsx │ │ │ │ ├── server-list.tsx │ │ │ │ └── tool-browser.tsx │ │ │ ├── memories/ │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── prompt/ │ │ │ │ ├── page.tsx │ │ │ │ └── setting-prompt.tsx │ │ │ ├── rag/ │ │ │ │ ├── model-setting.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── settings.tsx │ │ │ ├── readAloud/ │ │ │ │ ├── page.tsx │ │ │ │ └── setting.tsx │ │ │ ├── record/ │ │ │ │ ├── model-settings.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── toolbar-settings.tsx │ │ │ ├── shortcuts/ │ │ │ │ ├── page.tsx │ │ │ │ └── shorcut-input.tsx │ │ │ ├── skills/ │ │ │ │ ├── components/ │ │ │ │ │ ├── global-skills-manager.tsx │ │ │ │ │ ├── project-skills-list.tsx │ │ │ │ │ ├── skill-card.tsx │ │ │ │ │ └── skills-settings.tsx │ │ │ │ └── page.tsx │ │ │ ├── sync/ │ │ │ │ ├── components/ │ │ │ │ │ └── sync-platform-card.tsx │ │ │ │ ├── gitea-sync.tsx │ │ │ │ ├── gitee-sync.tsx │ │ │ │ ├── github-sync.tsx │ │ │ │ ├── gitlab-sync.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── s3-sync.tsx │ │ │ │ └── webdav-sync.tsx │ │ │ └── template/ │ │ │ ├── page.tsx │ │ │ └── setting-template.tsx │ │ ├── error.tsx │ │ ├── global-error.tsx │ │ ├── globals.css │ │ ├── layout.tsx │ │ ├── mobile/ │ │ │ ├── chat/ │ │ │ │ ├── components/ │ │ │ │ │ ├── chat-attachments-drawer.tsx │ │ │ │ │ ├── chat-settings-drawer.tsx │ │ │ │ │ ├── chat-tools-drawer.tsx │ │ │ │ │ ├── clear-chat.tsx │ │ │ │ │ ├── clear-context.tsx │ │ │ │ │ ├── clipboard-toggle.tsx │ │ │ │ │ ├── mcp-selector.tsx │ │ │ │ │ ├── mobile-chat-header.tsx │ │ │ │ │ ├── model-selector.tsx │ │ │ │ │ ├── new-chat.tsx │ │ │ │ │ ├── prompt-selector.tsx │ │ │ │ │ └── rag-toggle.tsx │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── mobile-styles.css │ │ │ ├── record/ │ │ │ │ ├── mobile-mark-header.tsx │ │ │ │ ├── mobile-record-stream.tsx │ │ │ │ └── page.tsx │ │ │ ├── setting/ │ │ │ │ ├── components/ │ │ │ │ │ └── setting-tab.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── pages/ │ │ │ │ ├── ai/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── audio/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── chat/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── defaultModel/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── dev/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── editor/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── file/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── general/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── imageHosting/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── imageMethod/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ ├── mcp/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── prompt/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── rag/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── readAloud/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── record/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── skills/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── sync/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── template/ │ │ │ │ │ └── page.tsx │ │ │ │ └── theme/ │ │ │ │ └── page.tsx │ │ │ └── writing/ │ │ │ ├── browser-utils.ts │ │ │ ├── custom-header.tsx │ │ │ ├── entry-list-item.tsx │ │ │ ├── mobile-editor.tsx │ │ │ ├── name-input-dialog.tsx │ │ │ ├── page.tsx │ │ │ └── types.ts │ │ ├── model-config.ts │ │ ├── not-found.tsx │ │ └── page.tsx │ ├── components/ │ │ ├── activity/ │ │ │ ├── activity-day-detail.tsx │ │ │ ├── activity-drawer.tsx │ │ │ ├── activity-heatmap.tsx │ │ │ ├── activity-legend.tsx │ │ │ └── activity-panel.tsx │ │ ├── app-footbar.tsx │ │ ├── app-sidebar.tsx │ │ ├── app-status.tsx │ │ ├── audio-player.tsx │ │ ├── bottom-bar-icon-button.tsx │ │ ├── console-filter.tsx │ │ ├── draggable-toolbar-item.tsx │ │ ├── image-viewer.tsx │ │ ├── local-image.tsx │ │ ├── memories/ │ │ │ ├── memory-form.tsx │ │ │ ├── memory-item.tsx │ │ │ ├── memory-list.tsx │ │ │ └── memory-stats.tsx │ │ ├── mobile-record-tools.tsx │ │ ├── mobile-statusbar.tsx │ │ ├── onboarding-spotlight-position.ts │ │ ├── onboarding-spotlight.tsx │ │ ├── open-broswer.tsx │ │ ├── pin-toggle.tsx │ │ ├── providers/ │ │ │ └── NextIntlProvider.tsx │ │ ├── recording-dialog.tsx │ │ ├── recording-indicator.tsx │ │ ├── search-dialog.tsx │ │ ├── simple-mobile-tool.tsx │ │ ├── sync-confirm-dialog.tsx │ │ ├── sync-status-badge.tsx │ │ ├── theme-provider.tsx │ │ ├── title-bar-toolbars/ │ │ │ └── sync-toggle.tsx │ │ ├── title-bar.tsx │ │ ├── tooltip-button.tsx │ │ └── ui/ │ │ ├── accordion.tsx │ │ ├── agent-plan.tsx │ │ ├── alert-dialog.tsx │ │ ├── alert.tsx │ │ ├── avatar.tsx │ │ ├── badge.tsx │ │ ├── breadcrumb.tsx │ │ ├── button.tsx │ │ ├── calendar.tsx │ │ ├── card.tsx │ │ ├── carousel.tsx │ │ ├── checkbox.tsx │ │ ├── collapsible.tsx │ │ ├── command.tsx │ │ ├── context-menu.tsx │ │ ├── dialog.tsx │ │ ├── diff-viewer.tsx │ │ ├── drawer.tsx │ │ ├── dropdown-menu.tsx │ │ ├── empty.tsx │ │ ├── enhanced-context-menu.tsx │ │ ├── expandable-tabs.tsx │ │ ├── form.tsx │ │ ├── hover-card.tsx │ │ ├── input.tsx │ │ ├── item.tsx │ │ ├── kbd.tsx │ │ ├── label.tsx │ │ ├── popover.tsx │ │ ├── progress.tsx │ │ ├── radio-group.tsx │ │ ├── resizable.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── shine-border.tsx │ │ ├── sidebar.tsx │ │ ├── skeleton.tsx │ │ ├── slider.tsx │ │ ├── swipe-back.tsx │ │ ├── switch.tsx │ │ ├── table.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ ├── toast.tsx │ │ ├── toaster.tsx │ │ ├── toggle.tsx │ │ └── tooltip.tsx │ ├── config/ │ │ ├── emitters.ts │ │ ├── shortcut.ts │ │ └── sync-exclusions.ts │ ├── contexts/ │ │ └── text-size-context.tsx │ ├── db/ │ │ ├── activity.ts │ │ ├── chats.ts │ │ ├── conversations.ts │ │ ├── index.ts │ │ ├── marks.ts │ │ ├── memories.ts │ │ ├── notes.ts │ │ ├── tags.ts │ │ └── vector.ts │ ├── hooks/ │ │ ├── use-file-shortcuts.ts │ │ ├── use-mobile.tsx │ │ ├── use-sync-manager.ts │ │ ├── use-sync-settings.ts │ │ ├── use-toast.ts │ │ ├── use-toolbar-shortcuts.ts │ │ ├── use-username.ts │ │ ├── useAiCompletion.ts │ │ └── useI18n.ts │ ├── i18n/ │ │ └── request.ts │ ├── lib/ │ │ ├── activity/ │ │ │ ├── aggregate.ts │ │ │ ├── events.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── agent/ │ │ │ ├── agent-handler.ts │ │ │ ├── auto-final-answer.ts │ │ │ ├── i18n.ts │ │ │ ├── parse-action-input.ts │ │ │ ├── react-diff-helpers.ts │ │ │ ├── react.ts │ │ │ ├── session-approval.ts │ │ │ ├── tool-confirmation-display.ts │ │ │ ├── tool-policy.ts │ │ │ ├── tools/ │ │ │ │ ├── chat-tools.ts │ │ │ │ ├── editor-tools.ts │ │ │ │ ├── folder-tools.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mark-tools.ts │ │ │ │ ├── memory-tools.ts │ │ │ │ ├── note-tools.ts │ │ │ │ ├── system-tools.ts │ │ │ │ └── tag-tools.ts │ │ │ └── types.ts │ │ ├── ai/ │ │ │ ├── chat.ts │ │ │ ├── completion.ts │ │ │ ├── condense.ts │ │ │ ├── description.ts │ │ │ ├── embedding.ts │ │ │ ├── history-messages.ts │ │ │ ├── index.ts │ │ │ ├── placeholder.ts │ │ │ ├── rewrite.ts │ │ │ ├── token-counter.ts │ │ │ ├── translate.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── audio-converter.ts │ │ ├── audio.ts │ │ ├── bm25.ts │ │ ├── check.ts │ │ ├── context/ │ │ │ └── loader.ts │ │ ├── default-filename.ts │ │ ├── editor-layout-styles.ts │ │ ├── emitter.ts │ │ ├── event-report.ts │ │ ├── files.ts │ │ ├── folder-vector.ts │ │ ├── fuzzy-search.ts │ │ ├── image-handler.ts │ │ ├── imageHosting/ │ │ │ ├── github.ts │ │ │ ├── index.ts │ │ │ ├── picgo.ts │ │ │ ├── s3.ts │ │ │ └── smms.ts │ │ ├── infographic.ts │ │ ├── locales.ts │ │ ├── mark-to-markdown.ts │ │ ├── markdown.ts │ │ ├── mcp/ │ │ │ ├── client.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── integration.ts │ │ │ ├── runtime-assistant.ts │ │ │ ├── server-manager.ts │ │ │ ├── tools.ts │ │ │ └── types.ts │ │ ├── ocr.ts │ │ ├── outline-preferences.ts │ │ ├── outline-styles.ts │ │ ├── path.ts │ │ ├── pdf.ts │ │ ├── rag.ts │ │ ├── record-navigation.ts │ │ ├── search-utils.ts │ │ ├── shortcut/ │ │ │ ├── quick-record-text.ts │ │ │ └── show-window.ts │ │ ├── skills/ │ │ │ ├── dependency-installer.ts │ │ │ ├── executor.ts │ │ │ ├── index.ts │ │ │ ├── manager.ts │ │ │ ├── parser.ts │ │ │ ├── path-utils.ts │ │ │ ├── runtime-paths.ts │ │ │ ├── runtime.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── validator.ts │ │ ├── speech/ │ │ │ ├── capabilities.ts │ │ │ ├── preferences.ts │ │ │ ├── resolver.ts │ │ │ ├── runtime.ts │ │ │ ├── transcription-fallback.ts │ │ │ └── types.ts │ │ ├── sync/ │ │ │ ├── auto-sync.ts │ │ │ ├── conflict-resolution.ts │ │ │ ├── encode-fetch.ts │ │ │ ├── filename-utils.ts │ │ │ ├── folder-sync-helper.ts │ │ │ ├── folder-sync.ts │ │ │ ├── gitea.ts │ │ │ ├── gitea.types.ts │ │ │ ├── gitee.ts │ │ │ ├── github.ts │ │ │ ├── github.types.ts │ │ │ ├── gitlab.ts │ │ │ ├── gitlab.types.ts │ │ │ ├── remote-file.ts │ │ │ ├── repo-utils.ts │ │ │ ├── s3.ts │ │ │ ├── sync-manager.ts │ │ │ ├── sync-push-queue.ts │ │ │ └── webdav.ts │ │ ├── template-range-utils.ts │ │ ├── theme-utils.ts │ │ ├── toolbar-shortcuts.ts │ │ ├── utils.ts │ │ ├── vector-document-key.js │ │ ├── vector-document-key.spec.mjs │ │ └── workspace.ts │ ├── stores/ │ │ ├── article.ts │ │ ├── chat.ts │ │ ├── clipboard.ts │ │ ├── imageHosting.ts │ │ ├── mark.ts │ │ ├── mcp.ts │ │ ├── memories.ts │ │ ├── prompt.ts │ │ ├── ragSettings.ts │ │ ├── recording.ts │ │ ├── setting.ts │ │ ├── settingsSync.ts │ │ ├── shortcut.ts │ │ ├── sidebar.ts │ │ ├── skills.ts │ │ ├── speech-recognition.ts │ │ ├── sync-confirm.ts │ │ ├── sync.ts │ │ ├── tag.ts │ │ ├── update.ts │ │ └── vector.ts │ └── types/ │ ├── sync.ts │ └── theme.ts ├── src-tauri/ │ ├── .gitignore │ ├── Cargo.toml │ ├── Info.plist │ ├── build.rs │ ├── capabilities/ │ │ ├── default.json │ │ └── desktop.json │ ├── icons/ │ │ └── icon.icns │ ├── src/ │ │ ├── app_setup.rs │ │ ├── backup.rs │ │ ├── device.rs │ │ ├── fuzzy_search.rs │ │ ├── keywords.rs │ │ ├── lib.rs │ │ ├── main.rs │ │ ├── mcp.rs │ │ ├── mcp_runtime.rs │ │ ├── screenshot.rs │ │ ├── skills.rs │ │ ├── statusbar.rs │ │ ├── tray.rs │ │ └── window.rs │ ├── tauri.conf.json │ └── tauri.ios.conf.json └── tsconfig.json