SYMBOL INDEX (1980 symbols across 517 files) FILE: src-tauri/build.rs function main (line 1) | fn main() { FILE: src-tauri/src/app_setup.rs function setup_app (line 7) | pub fn setup_app(app: &mut App) -> Result<(), Box> { FILE: src-tauri/src/backup.rs function import_app_data_from_file (line 13) | pub async fn import_app_data_from_file( function export_app_data (line 86) | pub async fn export_app_data(app_handle: AppHandle, output_path: String)... function import_app_data (line 127) | pub async fn import_app_data(app_handle: AppHandle, zip_path: String) ->... function copy_dir_recursive (line 189) | fn copy_dir_recursive(src: &Path, dest: &Path) -> Result<(), String> { function compress_dir (line 211) | fn compress_dir(src_dir: &Path, dest_file: &Path) -> Result<(), String> { function add_dir_to_zip (line 233) | fn add_dir_to_zip( function extract_zip (line 276) | fn extract_zip(zip_path: &Path, dest_dir: &Path) -> Result<(), String> { FILE: src-tauri/src/device.rs function get_device_id (line 6) | pub fn get_device_id() -> Result { function get_device_id (line 14) | pub fn get_device_id() -> Result { function get_device_id (line 21) | pub fn get_device_id() -> Result { function get_or_create_device_id (line 27) | fn get_or_create_device_id() -> Result { FILE: src-tauri/src/fuzzy_search.rs type SearchItem (line 9) | pub struct SearchItem { type MatchInfo (line 22) | pub struct MatchInfo { type FuzzySearchResult (line 29) | pub struct FuzzySearchResult { function search_item (line 36) | fn search_item( function fuzzy_search (line 96) | pub fn fuzzy_search( function fuzzy_search_parallel (line 139) | pub fn fuzzy_search_parallel( FILE: src-tauri/src/keywords.rs type Keyword (line 11) | pub struct Keyword { function get_jieba (line 16) | fn get_jieba() -> &'static Jieba { function get_text_rank (line 24) | fn get_text_rank() -> TextRank { function get_stop_words (line 30) | fn get_stop_words() -> HashSet<&'static str> { function is_stop_word (line 49) | fn is_stop_word(word: &str) -> bool { function extract_english_words (line 58) | fn extract_english_words(text: &str) -> Vec { function rank_keywords (line 78) | pub fn rank_keywords(text: &str, top_k: usize, allowed_pos: Option Self { function encode_mcp_message (line 24) | fn encode_mcp_message(message: &str) -> Vec { function read_mcp_message (line 28) | fn read_mcp_message(reader: &mut R) -> Result { function find_npx_path (line 94) | fn find_npx_path() -> Option { function start_mcp_stdio_server (line 172) | pub async fn start_mcp_stdio_server( function stop_mcp_server (line 277) | pub async fn stop_mcp_server( function send_mcp_message (line 299) | pub async fn send_mcp_message( function writes_newline_delimited_message (line 337) | fn writes_newline_delimited_message() { function reads_single_json_line_message (line 348) | fn reads_single_json_line_message() { function reads_single_framed_message (line 359) | fn reads_single_framed_message() { function rejects_missing_content_length_header (line 370) | fn rejects_missing_content_length_header() { function rejects_truncated_framed_message (line 380) | fn rejects_truncated_framed_message() { FILE: src-tauri/src/mcp_runtime.rs type RuntimeKind (line 15) | pub enum RuntimeKind { type RuntimeRequirement (line 25) | pub struct RuntimeRequirement { type InstallRecipe (line 32) | pub struct InstallRecipe { type RuntimeCheckResult (line 43) | pub struct RuntimeCheckResult { type RuntimeInspection (line 53) | pub struct RuntimeInspection { type InstallExecutionResult (line 62) | pub struct InstallExecutionResult { type RuntimeInstallManager (line 71) | pub struct RuntimeInstallManager { method new (line 77) | pub fn new() -> Self { type InstallProgressStage (line 84) | pub enum InstallProgressStage { type InstallProgressEvent (line 94) | pub struct InstallProgressEvent { type CancelInstallResult (line 104) | pub struct CancelInstallResult { function normalize_launcher (line 109) | fn normalize_launcher(command: &str, args: &[String]) -> String { function classify_runtime_requirement (line 130) | pub fn classify_runtime_requirement(command: &str, args: &[String]) -> R... function install_recipe_for (line 144) | pub fn install_recipe_for(kind: &RuntimeKind, platform: &str) -> Option<... function current_platform (line 227) | fn current_platform() -> &'static str { function find_command_path (line 237) | fn find_command_path(command: &str) -> Option { function version_args_for (line 258) | fn version_args_for(command: &str) -> &'static [&'static str] { function read_command_version (line 265) | fn read_command_version(command: &str, path: &Path) -> Result RuntimeInspe... function install_recipe_command (line 310) | fn install_recipe_command(recipe_id: &str) -> Option<(&'static str, Vec<... function configure_install_command (line 344) | fn configure_install_command(command: &mut TokioCommand) { function configure_install_command (line 349) | fn configure_install_command(_command: &mut TokioCommand) {} function configure_install_command (line 352) | fn configure_install_command(_command: &mut TokioCommand) {} function kill_install_process (line 355) | async fn kill_install_process(pid: u32) -> Result<(), String> { function kill_install_process (line 366) | async fn kill_install_process(pid: u32) -> Result<(), String> { function kill_install_process (line 376) | async fn kill_install_process(_pid: u32) -> Result<(), String> { function final_install_stage (line 380) | fn final_install_stage(success: bool, cancelled: bool) -> InstallProgres... function emit_install_event (line 390) | fn emit_install_event( function collect_process_output (line 411) | async fn collect_process_output( function inspect_mcp_runtime (line 444) | pub async fn inspect_mcp_runtime(command: String, args: Vec) -> ... function install_mcp_runtime (line 450) | pub async fn install_mcp_runtime( function cancel_mcp_runtime_install (line 573) | pub async fn cancel_mcp_runtime_install( function classifies_combined_npx_command (line 620) | fn classifies_combined_npx_command() { function classifies_python_command_with_args (line 631) | fn classifies_python_command_with_args() { function returns_macos_recipe_for_uvx (line 642) | fn returns_macos_recipe_for_uvx() { function uses_bun_dot_com_installer_for_bun (line 650) | fn uses_bun_dot_com_installer_for_bun() { function returns_none_for_unknown_runtime (line 658) | fn returns_none_for_unknown_runtime() { function final_install_stage_returns_completed_on_success (line 665) | fn final_install_stage_returns_completed_on_success() { function final_install_stage_returns_failed_on_error (line 673) | fn final_install_stage_returns_failed_on_error() { function final_install_stage_returns_cancelled_when_requested (line 678) | fn final_install_stage_returns_cancelled_when_requested() { function runtime_install_manager_starts_empty (line 683) | fn runtime_install_manager_starts_empty() { FILE: src-tauri/src/screenshot.rs type ScreenshotImage (line 9) | pub struct ScreenshotImage { function normalized (line 19) | fn normalized(s: &str) -> String { function screenshot (line 33) | pub fn screenshot(app: AppHandle) -> Vec { FILE: src-tauri/src/skills.rs function import_skill_zip (line 7) | pub async fn import_skill_zip(app_handle: AppHandle, zip_path: String) -... function copy_dir_recursive (line 110) | fn copy_dir_recursive(src: &Path, dest: &Path) -> Result<(), String> { FILE: src-tauri/src/statusbar.rs function set_statusbar_color (line 4) | pub fn set_statusbar_color(color: String, is_dark: bool) -> Result<(), S... FILE: src-tauri/src/tray.rs constant ID_SHOW_MAIN (line 9) | pub const ID_SHOW_MAIN: &str = "show-main"; constant ID_SETTINGS (line 10) | pub const ID_SETTINGS: &str = "settings"; constant ID_QUIT (line 11) | pub const ID_QUIT: &str = "quit"; function create_tray (line 13) | pub fn create_tray(app: &AppHandle) -> tauri::Result(app: &AppHandle, id: &str) { FILE: src-tauri/src/window.rs function setup_window_events (line 3) | pub fn setup_window_events(app: &AppHandle) -> tauri::Result<()> { function handle_window_event (line 15) | fn handle_window_event(event: &WindowEvent, window: &tauri::WebviewWindo... function handle_window_event (line 27) | fn handle_window_event(event: &WindowEvent, window: &tauri::WebviewWindo... function handle_single_instance (line 38) | pub fn handle_single_instance(app: &AppHandle, _argv: Vec, _cwd:... function handle_macos_reopen (line 64) | pub fn handle_macos_reopen(app_handle: &AppHandle, has_visible_windows: ... FILE: src/app/core/index.d.ts type ScreenshotImage (line 2) | interface ScreenshotImage { FILE: src/app/core/layout.tsx function RootLayout (line 29) | function RootLayout({ FILE: src/app/core/main/chat/agent-execution-status.tsx function AgentExecutionStatus (line 9) | function AgentExecutionStatus() { FILE: src/app/core/main/chat/agent-history.tsx type AgentHistoryProps (line 4) | interface AgentHistoryProps { function AgentHistory (line 12) | function AgentHistory({ historyJson }: AgentHistoryProps) { FILE: src/app/core/main/chat/agent-panel-with-rag.tsx type RagSourceDetail (line 9) | interface RagSourceDetail { type AgentPanelWithRagProps (line 15) | interface AgentPanelWithRagProps { function AgentPanelWithRag (line 71) | function AgentPanelWithRag({ FILE: src/app/core/main/chat/chat-clipboard.tsx function ChatClipboard (line 20) | function ChatClipboard({chat}: { chat: Chat }) { FILE: src/app/core/main/chat/chat-content.tsx constant BOTTOM_THRESHOLD (line 24) | const BOTTOM_THRESHOLD = 24 constant USER_SCROLL_GRACE_MS (line 25) | const USER_SCROLL_GRACE_MS = 300 FILE: src/app/core/main/chat/chat-empty.tsx function formatRelativeTime (line 20) | function formatRelativeTime(timestamp: number, locale: string): string { function ChatEmpty (line 25) | function ChatEmpty() { FILE: src/app/core/main/chat/chat-footer.tsx function ChatFooter (line 9) | function ChatFooter() { FILE: src/app/core/main/chat/chat-header.tsx function formatRelativeTime (line 25) | function formatRelativeTime(timestamp: number, locale: string): string { function ChatHeader (line 30) | function ChatHeader() { FILE: src/app/core/main/chat/chat-images.tsx type ChatImagesProps (line 6) | interface ChatImagesProps { function ChatImages (line 10) | function ChatImages({ images }: ChatImagesProps) { FILE: src/app/core/main/chat/chat-input.tsx type SortableToolbarItemProps (line 51) | interface SortableToolbarItemProps { function addToHistory (line 162) | function addToHistory(input: string) { function navigateHistory (line 172) | function navigateHistory(direction: 'up' | 'down', currentText: string) { function removeLinkedFile (line 203) | function removeLinkedFile() { function removeImage (line 208) | function removeImage(id: string) { function removeQuote (line 212) | function removeQuote() { function handleSelectLocalImages (line 216) | async function handleSelectLocalImages() { function handleSelectFromGallery (line 250) | async function handleSelectFromGallery() { function handleImageInputChange (line 260) | async function handleImageInputChange(event: React.ChangeEvent[... function FolderView (line 67) | function FolderView({ folderPath }: FolderViewProps) { FILE: src/app/core/main/editor/folder/skill-detail.tsx type SkillDetailViewProps (line 7) | interface SkillDetailViewProps { function SkillDetailView (line 11) | function SkillDetailView({ skillContent }: SkillDetailViewProps) { FILE: src/app/core/main/editor/folder/skills-list.tsx type SkillsListViewProps (line 8) | interface SkillsListViewProps { function SkillsListView (line 12) | function SkillsListView({ skills }: SkillsListViewProps) { FILE: src/app/core/main/editor/image/image-editor.tsx type ImageEditorProps (line 27) | interface ImageEditorProps { function ImageEditor (line 31) | function ImageEditor({ filePath }: ImageEditorProps) { FILE: src/app/core/main/editor/image/image-footer.tsx type ImageFooterProps (line 7) | interface ImageFooterProps { function ImageFooter (line 13) | function ImageFooter({ filePath, imageWidth, imageHeight }: ImageFooterP... FILE: src/app/core/main/editor/markdown/ai-completion.tsx type AICompletionProps (line 9) | interface AICompletionProps { type SuggestionItem (line 15) | interface SuggestionItem { function AICompletionPopup (line 21) | function AICompletionPopup({ items, onSelect, onDismiss }: { function useAIAutocomplete (line 96) | function useAIAutocomplete({ editor, isEnabled, onComplete }: AICompleti... FILE: src/app/core/main/editor/markdown/ai-suggestion-floating.tsx type AISuggestionFloatingProps (line 9) | interface AISuggestionFloatingProps { type SuggestionData (line 13) | interface SuggestionData { type PositionData (line 20) | interface PositionData { function AISuggestionFloating (line 24) | function AISuggestionFloating({ editor }: AISuggestionFloatingProps) { FILE: src/app/core/main/editor/markdown/ai-suggestion.ts type AISuggestionOptions (line 3) | interface AISuggestionOptions { type Commands (line 8) | interface Commands { method addOptions (line 20) | addOptions() { method addAttributes (line 26) | addAttributes() { method parseHTML (line 49) | parseHTML() { method renderHTML (line 57) | renderHTML({ HTMLAttributes }) { method addCommands (line 68) | addCommands() { FILE: src/app/core/main/editor/markdown/bubble-menu.tsx constant POPULAR_LANGUAGES (line 29) | const POPULAR_LANGUAGES = [ type BubbleMenuProps (line 41) | interface BubbleMenuProps { function BubbleMenu (line 49) | function BubbleMenu({ FILE: src/app/core/main/editor/markdown/export-menu.tsx type ExportMenuProps (line 17) | interface ExportMenuProps { function ExportMenu (line 21) | function ExportMenu({ editor }: ExportMenuProps) { FILE: src/app/core/main/editor/markdown/floating-table-menu.tsx type FloatingTableMenuProps (line 16) | interface FloatingTableMenuProps { function FloatingTableMenu (line 20) | function FloatingTableMenu({ editor }: FloatingTableMenuProps) { FILE: src/app/core/main/editor/markdown/footer-bar/copy-button.tsx type CopyButtonProps (line 14) | interface CopyButtonProps { type CopyFormat (line 18) | type CopyFormat = 'markdown' | 'html' | 'json' | 'text' function CopyButton (line 20) | function CopyButton({ editor }: CopyButtonProps) { FILE: src/app/core/main/editor/markdown/footer-bar/export-button.tsx type ExportButtonProps (line 16) | interface ExportButtonProps { function ExportButton (line 20) | function ExportButton({ editor }: ExportButtonProps) { FILE: src/app/core/main/editor/markdown/footer-bar/index.tsx type FooterBarProps (line 10) | interface FooterBarProps { function FooterBar (line 16) | function FooterBar({ FILE: src/app/core/main/editor/markdown/footer-bar/outline-toggle.tsx type OutlineToggleProps (line 7) | interface OutlineToggleProps { function OutlineToggle (line 13) | function OutlineToggle({ FILE: src/app/core/main/editor/markdown/footer-bar/vector-calc.tsx type VectorCalcProps (line 8) | interface VectorCalcProps { function VectorCalc (line 13) | function VectorCalc({ FILE: src/app/core/main/editor/markdown/footer-bar/word-count.tsx type WordCountProps (line 6) | interface WordCountProps { function WordCount (line 10) | function WordCount({ editor }: WordCountProps) { FILE: src/app/core/main/editor/markdown/image-bubble-menu.tsx type ImageBubbleMenuProps (line 8) | interface ImageBubbleMenuProps { type ImageInfo (line 12) | interface ImageInfo { type EditMode (line 19) | type EditMode = 'none' | 'alt' | 'src' function ImageBubbleMenu (line 21) | function ImageBubbleMenu({ editor }: ImageBubbleMenuProps) { FILE: src/app/core/main/editor/markdown/markdown-input-rules.ts method addInputRules (line 12) | addInputRules() { FILE: src/app/core/main/editor/markdown/markdown-paragraph.ts type MarkdownParagraphOptions (line 3) | interface MarkdownParagraphOptions { type Commands (line 8) | interface Commands { constant EMPTY_PARAGRAPH_MARKDOWN (line 15) | const EMPTY_PARAGRAPH_MARKDOWN = ' ' constant NBSP_CHAR (line 16) | const NBSP_CHAR = '\u00A0' method addOptions (line 23) | addOptions() { method parseHTML (line 33) | parseHTML() { method renderHTML (line 37) | renderHTML({ HTMLAttributes }) { method addCommands (line 70) | addCommands() { method addKeyboardShortcuts (line 80) | addKeyboardShortcuts() { FILE: src/app/core/main/editor/markdown/math-editor-dialog.tsx type MathEditorDialogProps (line 10) | interface MathEditorDialogProps { function MathEditorDialog (line 19) | function MathEditorDialog({ FILE: src/app/core/main/editor/markdown/math-extension.tsx function InlineMathView (line 10) | function InlineMathView({ node, updateAttributes }: ReactNodeViewProps) { function BlockMathView (line 76) | function BlockMathView({ node, updateAttributes }: ReactNodeViewProps) { method addAttributes (line 147) | addAttributes() { method parseHTML (line 155) | parseHTML() { method renderHTML (line 168) | renderHTML({ HTMLAttributes }) { method addNodeView (line 172) | addNodeView() { method renderMarkdown (line 202) | renderMarkdown(node, _helpers) { method parseMarkdown (line 207) | parseMarkdown(token, _helpers) { method addAttributes (line 221) | addAttributes() { method parseHTML (line 229) | parseHTML() { method renderHTML (line 242) | renderHTML({ HTMLAttributes }) { method addNodeView (line 246) | addNodeView() { method renderMarkdown (line 276) | renderMarkdown(node, _helpers) { method parseMarkdown (line 281) | parseMarkdown(token, _helpers) { FILE: src/app/core/main/editor/markdown/md-editor-wrapper.tsx type MdEditorProps (line 13) | interface MdEditorProps { function MdEditor (line 18) | function MdEditor({ tabContentsRef, filePath }: MdEditorProps) { FILE: src/app/core/main/editor/markdown/mermaid-extension.tsx constant DIAGRAM_TYPES (line 27) | const DIAGRAM_TYPES = [ function detectDiagramType (line 39) | function detectDiagramType(code: string): string { function MermaidDiagramView (line 52) | function MermaidDiagramView({ node, updateAttributes }: ReactNodeViewPro... method addAttributes (line 217) | addAttributes() { method parseHTML (line 228) | parseHTML() { method renderHTML (line 235) | renderHTML({ HTMLAttributes }) { method addNodeView (line 239) | addNodeView() { method renderMarkdown (line 270) | renderMarkdown(node, _helpers) { method parseMarkdown (line 275) | parseMarkdown(token, _helpers) { FILE: src/app/core/main/editor/markdown/mobile-editor-context-bar-view-model.ts constant ACTION_META (line 23) | const ACTION_META = { function buildMobileEditorContextBarViewModel (line 46) | function buildMobileEditorContextBarViewModel(actions: string[] = []) { FILE: src/app/core/main/editor/markdown/mobile-editor-context-bar.tsx type MobileContextMode (line 7) | type MobileContextMode = 'text' | 'image' | 'table' type MobileContextAction (line 9) | type MobileContextAction = type MobileEditorContextBarProps (line 22) | interface MobileEditorContextBarProps { function MobileEditorContextBar (line 29) | function MobileEditorContextBar({ FILE: src/app/core/main/editor/markdown/mobile-editor-more-sheet.tsx type MobileSheetMode (line 7) | type MobileSheetMode = 'ai' | 'image-src' | 'image-alt' | 'table-align' ... type MobileEditorMoreSheetProps (line 9) | interface MobileEditorMoreSheetProps { function ActionButton (line 22) | function ActionButton({ label, onClick, destructive = false }: { label: ... function MobileEditorMoreSheet (line 34) | function MobileEditorMoreSheet({ FILE: src/app/core/main/editor/markdown/mobile-selection-context.ts constant PRIMARY_ACTIONS (line 1) | const PRIMARY_ACTIONS = { type TextSelectionContextInput (line 7) | type TextSelectionContextInput = { type ImageSelectionContextInput (line 14) | type ImageSelectionContextInput = { type TableSelectionContextInput (line 21) | type TableSelectionContextInput = { type MobileSelectionContextInput (line 26) | type MobileSelectionContextInput = function getMobileContextPrimaryActions (line 33) | function getMobileContextPrimaryActions(mode: keyof typeof PRIMARY_ACTIO... function buildMobileSelectionContext (line 37) | function buildMobileSelectionContext(input: MobileSelectionContextInput) { function isMobileSelectionContextStale (line 82) | function isMobileSelectionContextStale( FILE: src/app/core/main/editor/markdown/outline.tsx type HeadingItem (line 10) | interface HeadingItem { type OutlineProps (line 18) | interface OutlineProps { function Outline (line 24) | function Outline({ editor, isOpen, position = 'right' }: OutlineProps) { FILE: src/app/core/main/editor/markdown/quote-mark.ts type QuoteOptions (line 3) | interface QuoteOptions { type Commands (line 8) | interface Commands { method addOptions (line 19) | addOptions() { method addAttributes (line 25) | addAttributes() { method parseHTML (line 33) | parseHTML() { method renderHTML (line 41) | renderHTML({ HTMLAttributes }) { method addCommands (line 49) | addCommands() { FILE: src/app/core/main/editor/markdown/quote-session.ts function shouldRestorePendingQuote (line 3) | function shouldRestorePendingQuote( FILE: src/app/core/main/editor/markdown/search-navigation.ts function getResultIndexToFocus (line 1) | function getResultIndexToFocus( FILE: src/app/core/main/editor/markdown/search-replace-panel.tsx type SearchAndReplaceStorage (line 11) | interface SearchAndReplaceStorage { type SearchReplacePanelProps (line 19) | interface SearchReplacePanelProps { function getSearchAndReplaceStorage (line 26) | function getSearchAndReplaceStorage(editor: Editor): SearchAndReplaceSto... function setSearchTerm (line 32) | function setSearchTerm(editor: Editor, term: string) { function setReplaceTerm (line 44) | function setReplaceTerm(editor: Editor, term: string) { function setSearchCaseSensitive (line 55) | function setSearchCaseSensitive(editor: Editor, value: boolean) { function nextResult (line 66) | function nextResult(editor: Editor) { function prevResult (line 94) | function prevResult(editor: Editor) { function replaceCurrent (line 122) | function replaceCurrent(editor: Editor) { function replaceAll (line 138) | function replaceAll(editor: Editor) { function clearSearch (line 159) | function clearSearch(editor: Editor) { function SearchReplacePanel (line 173) | function SearchReplacePanel({ editor, open, onOpenChange }: SearchReplac... FILE: src/app/core/main/editor/markdown/slash-command/index.ts type Commands (line 9) | interface Commands { method addOptions (line 19) | addOptions() { method addProseMirrorPlugins (line 31) | addProseMirrorPlugins() { method addCommands (line 43) | addCommands() { FILE: src/app/core/main/editor/markdown/slash-command/slash-command-portal.tsx type MenuState (line 8) | interface MenuState { constant MENU_MAX_HEIGHT (line 16) | const MENU_MAX_HEIGHT = 256 // max-h-64 = 256px constant MENU_MIN_WIDTH (line 17) | const MENU_MIN_WIDTH = 144 // min-w-36 = 144px constant MARGIN (line 18) | const MARGIN = 8 function calculateMenuPosition (line 20) | function calculateMenuPosition(clientRect: DOMRect): { top: number; left... FILE: src/app/core/main/editor/markdown/slash-command/slash-menu.tsx type SlashMenuProps (line 9) | interface SlashMenuProps { type SlashMenuRef (line 15) | interface SlashMenuRef { FILE: src/app/core/main/editor/markdown/slash-command/suggestion.tsx type SlashCommandItem (line 32) | interface SlashCommandItem { type SlashCommandTranslations (line 64) | interface SlashCommandTranslations { function filterItems (line 130) | function filterItems(items: SlashCommandItem[], query: string): SlashCom... function findSlashMatch (line 496) | function findSlashMatch(config: { function setMenuKeyDownHandler (line 536) | function setMenuKeyDownHandler(handler: ((props: { event: KeyboardEvent ... FILE: src/app/core/main/editor/markdown/sync/conflict-dialog.tsx type ConflictDialogProps (line 18) | interface ConflictDialogProps { function computeDiff (line 27) | function computeDiff(oldText: string, newText: string): { type: 'equal' ... function ConflictDialog (line 69) | function ConflictDialog({ FILE: src/app/core/main/editor/markdown/sync/history-sheet.tsx type CommitInfo (line 19) | interface CommitInfo { type SyncProvider (line 28) | type SyncProvider = 'github' | 'gitee' | 'gitlab' | 'gitea' type HistorySheetProps (line 30) | interface HistorySheetProps { function HistorySheet (line 34) | function HistorySheet({ editor }: HistorySheetProps) { FILE: src/app/core/main/editor/markdown/sync/pull-button.tsx type PullButtonProps (line 15) | interface PullButtonProps { type PullStatus (line 20) | type PullStatus = 'idle' | 'checking' | 'update-available' | 'pulling' |... function PullButton (line 22) | function PullButton({ editor }: PullButtonProps) { FILE: src/app/core/main/editor/markdown/sync/sync-button.tsx function SyncButton (line 15) | function SyncButton() { FILE: src/app/core/main/editor/markdown/sync/sync-tools.tsx type SyncToolsProps (line 11) | interface SyncToolsProps { function SyncTools (line 15) | function SyncTools({ editor }: SyncToolsProps) { FILE: src/app/core/main/editor/markdown/table-toolbar.tsx type TableToolbarProps (line 15) | interface TableToolbarProps { function TableToolbar (line 19) | function TableToolbar({ editor }: TableToolbarProps) { FILE: src/app/core/main/editor/markdown/tiptap-editor.tsx function lineToPosition (line 70) | function lineToPosition(doc: ProseMirrorNode, line: number): number { method addProseMirrorPlugins (line 107) | addProseMirrorPlugins() { function looksLikeMarkdown (line 138) | function looksLikeMarkdown(text: string): boolean { type TipTapEditorProps (line 152) | interface TipTapEditorProps { type MobileSelectionContext (line 168) | type MobileSelectionContext = type MobileSheetMode (line 190) | type MobileSheetMode = 'ai' | 'image-src' | 'image-alt' | 'table-align' ... function TipTapEditor (line 192) | function TipTapEditor({ FILE: src/app/core/main/editor/onboarding-state.ts type OnboardingStepId (line 1) | type OnboardingStepId = 'create-record' | 'organize-note' | 'ai-polish' type OnboardingCompletionFeedbackMode (line 2) | type OnboardingCompletionFeedbackMode = 'inline' | 'dialog' type OnboardingProgress (line 4) | interface OnboardingProgress { constant ONBOARDING_STEP_ORDER (line 9) | const ONBOARDING_STEP_ORDER: OnboardingStepId[] = [ function createDefaultOnboardingProgress (line 15) | function createDefaultOnboardingProgress(): OnboardingProgress { function normalizeOnboardingProgress (line 26) | function normalizeOnboardingProgress(value: unknown): OnboardingProgress { function markOnboardingStepDone (line 48) | function markOnboardingStepDone( function getActiveOnboardingStep (line 61) | function getActiveOnboardingStep(progress: OnboardingProgress): Onboardi... function getNextOnboardingStep (line 65) | function getNextOnboardingStep( function isOnboardingComplete (line 76) | function isOnboardingComplete(progress: OnboardingProgress): boolean { function shouldShowOnboardingTasks (line 80) | function shouldShowOnboardingTasks(progress: OnboardingProgress): boolean { function getCompletionFeedbackMode (line 84) | function getCompletionFeedbackMode( FILE: src/app/core/main/editor/tab-bar.tsx type TabInfo (line 36) | interface TabInfo { type TabBarProps (line 43) | interface TabBarProps { function SortableTabWithMenu (line 57) | function SortableTabWithMenu({ function TabBar (line 207) | function TabBar({ FILE: src/app/core/main/editor/unsupported-file.tsx type FileMetadata (line 11) | interface FileMetadata { type UnsupportedFileProps (line 17) | interface UnsupportedFileProps { function UnsupportedFile (line 21) | function UnsupportedFile({ filePath }: UnsupportedFileProps) { FILE: src/app/core/main/file/file-actions.tsx function FileActions (line 15) | function FileActions() { FILE: src/app/core/main/file/file-footer.tsx function FileFooter (line 23) | function FileFooter() { FILE: src/app/core/main/file/file-item.tsx type Platform (line 33) | type Platform = 'macos' | 'windows' | 'linux' | 'unknown' function FileItem (line 35) | function FileItem({ item, focusSidebar }: { item: DirTree; focusSidebar?... FILE: src/app/core/main/file/file-manager.tsx function filterFileTree (line 12) | function filterFileTree(tree: DirTree[], showCloud: boolean): DirTree[] { function Tree (line 23) | function Tree({ item, focusSidebar }: { item: DirTree; focusSidebar: () ... function FileManager (line 56) | function FileManager({ focusSidebar }: { focusSidebar: () => void }) { FILE: src/app/core/main/file/file-toolbar.tsx function FileToolbar (line 19) | function FileToolbar() { FILE: src/app/core/main/file/folder-item/copy-folder.tsx type CopyFolderProps (line 10) | interface CopyFolderProps { function CopyFolder (line 15) | function CopyFolder({ item, shortcut }: CopyFolderProps) { FILE: src/app/core/main/file/folder-item/cut-folder.tsx type CutFolderProps (line 10) | interface CutFolderProps { function CutFolder (line 15) | function CutFolder({ item, shortcut }: CutFolderProps) { FILE: src/app/core/main/file/folder-item/delete-folder.tsx type DeleteFolderProps (line 13) | interface DeleteFolderProps { function DeleteFolder (line 18) | function DeleteFolder({ item, shortcut }: DeleteFolderProps) { FILE: src/app/core/main/file/folder-item/duplicate-folder.tsx type DuplicateFolderProps (line 9) | interface DuplicateFolderProps { function DuplicateFolder (line 14) | function DuplicateFolder({ item, shortcut }: DuplicateFolderProps) { FILE: src/app/core/main/file/folder-item/folder-vector-menu.tsx type FolderVectorMenuProps (line 11) | interface FolderVectorMenuProps { function FolderVectorMenu (line 15) | function FolderVectorMenu({ item }: FolderVectorMenuProps) { FILE: src/app/core/main/file/folder-item/index.tsx function FolderItem (line 32) | function FolderItem({ item, focusSidebar }: { item: DirTree; focusSideba... FILE: src/app/core/main/file/folder-item/new-file.tsx type NewFileProps (line 8) | interface NewFileProps { function NewFile (line 12) | function NewFile({ item }: NewFileProps) { FILE: src/app/core/main/file/folder-item/new-folder.tsx type NewFolderProps (line 7) | interface NewFolderProps { function NewFolder (line 11) | function NewFolder({ item }: NewFolderProps) { FILE: src/app/core/main/file/folder-item/paste-in-folder.tsx type PasteInFolderProps (line 10) | interface PasteInFolderProps { function PasteInFolder (line 15) | function PasteInFolder({ item, shortcut }: PasteInFolderProps) { FILE: src/app/core/main/file/folder-item/paste-into-folder.js function pasteIntoFolder (line 9) | async function pasteIntoFolder({ FILE: src/app/core/main/file/folder-item/paste-target.js function getPasteTargetDirectory (line 1) | function getPasteTargetDirectory(folderPath) { FILE: src/app/core/main/file/folder-item/rename-folder.tsx type RenameFolderProps (line 8) | interface RenameFolderProps { function RenameFolder (line 15) | function RenameFolder({ item, onStartRename, shortcut }: RenameFolderPro... FILE: src/app/core/main/file/folder-item/sync-folder.tsx function SyncFolder (line 9) | function SyncFolder({ item }: { item: DirTree }) { FILE: src/app/core/main/file/folder-item/view-directory.tsx type ViewDirectoryProps (line 9) | interface ViewDirectoryProps { function ViewDirectory (line 13) | function ViewDirectory({ item }: ViewDirectoryProps) { FILE: src/app/core/main/file/index.tsx type Platform (line 11) | type Platform = 'macos' | 'windows' | 'linux' | 'unknown' function useFileManagerShortcuts (line 17) | function useFileManagerShortcuts() { function FileSidebar (line 245) | function FileSidebar() { FILE: src/app/core/main/file/mobile-action-menu.tsx type MobileActionMenuProps (line 11) | interface MobileActionMenuProps { function MobileActionMenu (line 16) | function MobileActionMenu({ children, className }: MobileActionMenuProps) { FILE: src/app/core/main/file/root-drop.js function sanitizeDroppedFileName (line 1) | function sanitizeDroppedFileName(fileName) { function writeDroppedFileToRoot (line 5) | async function writeDroppedFileToRoot(deps, payload) { FILE: src/app/core/main/file/vector-knowledge-menu.tsx type VectorKnowledgeMenuProps (line 12) | interface VectorKnowledgeMenuProps { function VectorKnowledgeMenu (line 18) | function VectorKnowledgeMenu({ item, hasVector, onVectorUpdated }: Vecto... FILE: src/app/core/main/file/workspace-selector.tsx function WorkspaceSelector (line 10) | function WorkspaceSelector() { FILE: src/app/core/main/left-sidebar.tsx constant SIDEBAR_TABS (line 14) | const SIDEBAR_TABS = [ function LeftSidebar (line 19) | function LeftSidebar() { FILE: src/app/core/main/mark/clipboard.tsx function Clipboard (line 20) | function Clipboard() { FILE: src/app/core/main/mark/control-file.tsx function ControlFile (line 33) | function ControlFile() { FILE: src/app/core/main/mark/control-image.tsx function ControlImage (line 20) | function ControlImage() { FILE: src/app/core/main/mark/control-link.tsx function ControlLink (line 40) | function ControlLink() { FILE: src/app/core/main/mark/control-recording.tsx function ControlRecording (line 23) | function ControlRecording() { FILE: src/app/core/main/mark/control-scan.tsx function ControlScan (line 38) | function ControlScan() { FILE: src/app/core/main/mark/control-text.tsx function ControlText (line 39) | function ControlText() { FILE: src/app/core/main/mark/control-todo.tsx function ControlTodo (line 34) | function ControlTodo() { FILE: src/app/core/main/mark/image-gallery.tsx type ImageGalleryProps (line 27) | interface ImageGalleryProps { function ImageItem (line 32) | function ImageItem({ mark }: { mark: Mark }) { function ImageGallery (line 171) | function ImageGallery({ marks }: ImageGalleryProps) { FILE: src/app/core/main/mark/index.tsx function NoteSidebar (line 15) | function NoteSidebar() { FILE: src/app/core/main/mark/mark-actions.tsx function MarkActions (line 11) | function MarkActions() { FILE: src/app/core/main/mark/mark-empty.tsx function MarkEmpty (line 4) | function MarkEmpty() { FILE: src/app/core/main/mark/mark-filter-popover.tsx constant TIME_OPTIONS (line 16) | const TIME_OPTIONS: RecordTimePreset[] = ['all', 'today', 'last7Days', '... function MarkFilterPopover (line 18) | function MarkFilterPopover() { FILE: src/app/core/main/mark/mark-filters.mjs constant DAY_IN_MS (line 1) | const DAY_IN_MS = 24 * 60 * 60 * 1000 constant VALID_TYPES (line 2) | const VALID_TYPES = new Set(['scan', 'text', 'image', 'link', 'file', 'r... constant VALID_TIME_PRESETS (line 3) | const VALID_TIME_PRESETS = new Set(['all', 'today', 'last7Days', 'last30... function normalizeText (line 5) | function normalizeText(value) { function matchesTimePreset (line 9) | function matchesTimePreset(createdAt, timePreset, now) { function matchesSearch (line 41) | function matchesSearch(mark, search) { function normalizeRecordFilters (line 53) | function normalizeRecordFilters(filters) { function buildRecordFilterSummary (line 70) | function buildRecordFilterSummary(filters) { function filterMarks (line 87) | function filterMarks(marks, filters) { FILE: src/app/core/main/mark/mark-header.tsx function MarkHeader (line 39) | function MarkHeader() { type SortableToolbarItemProps (line 137) | interface SortableToolbarItemProps { function SortableToolbarItem (line 141) | function SortableToolbarItem({ id }: SortableToolbarItemProps) { FILE: src/app/core/main/mark/mark-item.tsx type MarkItemVariant (line 147) | type MarkItemVariant = 'list' | 'compact' | 'cards' FILE: src/app/core/main/mark/mark-list-card-view.tsx function MarkListCardView (line 6) | function MarkListCardView({ marks }: { marks: Mark[] }) { FILE: src/app/core/main/mark/mark-list-compact-view.tsx function MarkListCompactView (line 6) | function MarkListCompactView({ marks }: { marks: Mark[] }) { FILE: src/app/core/main/mark/mark-list-default-view.tsx function MarkListDefaultView (line 6) | function MarkListDefaultView({ marks }: { marks: Mark[] }) { FILE: src/app/core/main/mark/mark-list-item-content.tsx type ParsedTodoMark (line 4) | type ParsedTodoMark = { type MarkListItemContent (line 11) | type MarkListItemContent = { constant DEFAULT_TODO (line 19) | const DEFAULT_TODO: ParsedTodoMark = { function compactText (line 26) | function compactText(value?: string) { function splitTitleAndPreview (line 30) | function splitTitleAndPreview(value?: string) { function parseTodoMarkContent (line 42) | function parseTodoMarkContent(mark: Mark): ParsedTodoMark { function getMarkListItemContent (line 59) | function getMarkListItemContent(mark: Mark): MarkListItemContent { FILE: src/app/core/main/mark/mark-loading.tsx function MarkLoading (line 7) | function MarkLoading({mark}: {mark: MarkQueue}){ FILE: src/app/core/main/mark/mark-mobile-actions.tsx type MarkMobileActionsProps (line 20) | interface MarkMobileActionsProps { function MarkMobileActions (line 37) | function MarkMobileActions({ FILE: src/app/core/main/mark/mark-toolbar.tsx function MarkToolbar (line 9) | function MarkToolbar() { FILE: src/app/core/main/mark/mark-type-meta.ts constant MARK_TYPE_OPTIONS (line 4) | const MARK_TYPE_OPTIONS: Mark["type"][] = ['text', 'recording', 'scan', ... type MarkTypeTone (line 6) | type MarkTypeTone = { constant MARK_TYPE_TONES (line 12) | const MARK_TYPE_TONES: Record = { function getMarkTypeChipClasses (line 50) | function getMarkTypeChipClasses(type: Mark["type"], active: boolean) { function getMarkTypeListBadgeClasses (line 54) | function getMarkTypeListBadgeClasses(type: Mark["type"], textSize?: stri... FILE: src/app/core/main/mark/mark-view-mode-toggle.tsx type MarkViewModeToggleProps (line 9) | type MarkViewModeToggleProps = { constant VIEW_MODE_ITEMS (line 14) | const VIEW_MODE_ITEMS: Array<{ function MarkViewModeToggle (line 23) | function MarkViewModeToggle({ value, onChange }: MarkViewModeToggleProps) { FILE: src/app/core/main/mark/mark-view-mode.mjs constant RECORD_VIEW_MODES (line 1) | const RECORD_VIEW_MODES = ["list", "compact", "cards"] function normalizeRecordViewMode (line 3) | function normalizeRecordViewMode(value) { FILE: src/app/core/main/mark/organize-notes.tsx type OrganizeNotesProps (line 36) | interface OrganizeNotesProps { function initGenTemplates (line 56) | async function initGenTemplates() { FILE: src/app/core/main/mark/organize-onboarding.ts function shouldEmitOrganizeOnboardingComplete (line 1) | function shouldEmitOrganizeOnboardingComplete({ FILE: src/app/core/main/mark/tag-item.tsx function ItemIcon (line 16) | function ItemIcon({ isLocked=false, isPin=false }) { function ItemContent (line 28) | function ItemContent({ value, isEditing, onChange }: { value: string, is... function TagItem (line 51) | function TagItem( FILE: src/app/core/main/mark/tag-manage.tsx function AccordionItemWrapper (line 60) | function AccordionItemWrapper({ function SortableTagItem (line 100) | function SortableTagItem({ tag, children }: { tag: Tag; children: React.... function TagManage (line 129) | function TagManage() { FILE: src/app/core/main/mark/tag-mobile-actions.tsx type TagMobileActionsProps (line 14) | interface TagMobileActionsProps { function TagMobileActions (line 21) | function TagMobileActions({ tag, onRename, onDelete, isEditing }: TagMob... FILE: src/app/core/main/mark/todo-edit-button.tsx type TodoEditTriggerProps (line 8) | type TodoEditTriggerProps = { function TodoEditTrigger (line 14) | function TodoEditTrigger({ mark, className, children }: TodoEditTriggerP... FILE: src/app/core/main/mark/todo-edit-dialog.tsx type Priority (line 22) | type Priority = 'low' | 'medium' | 'high' type TodoData (line 24) | interface TodoData { type TodoEditDialogProps (line 31) | interface TodoEditDialogProps { function TodoEditDialog (line 37) | function TodoEditDialog({ mark, open, onOpenChange }: TodoEditDialogProp... FILE: src/app/core/main/mark/todo-form.tsx type Priority (line 8) | type Priority = 'low' | 'medium' | 'high' type TodoFormData (line 10) | interface TodoFormData { type TodoFormProps (line 16) | interface TodoFormProps { function TodoForm (line 26) | function TodoForm({ FILE: src/app/core/main/mark/todo-item-content.tsx type TodoData (line 18) | interface TodoData { function TodoItemContent (line 25) | function TodoItemContent({ mark }: { mark: Mark }) { FILE: src/app/core/main/page.tsx function getDefaultLayout (line 17) | function getDefaultLayout(layoutKey: string) { function ResizableWrapper (line 58) | function ResizableWrapper() { function Page (line 237) | function Page() { FILE: src/app/core/setting/about/page.tsx function AboutPage (line 6) | function AboutPage() { FILE: src/app/core/setting/about/setting-about.tsx function SettingAbout (line 10) | function SettingAbout({id, icon}: {id: string, icon?: React.ReactNode}) { function AboutItem (line 70) | function AboutItem({url, title, desc, icon, buttonName}: {url: string, t... FILE: src/app/core/setting/about/updater.tsx function Updater (line 15) | function Updater() { FILE: src/app/core/setting/ai/create.tsx type CreateConfigProps (line 32) | interface CreateConfigProps { function CreateConfigDialog (line 38) | function CreateConfigDialog({ open, setOpen, onConfigCreated }: { open: ... function CreateConfig (line 130) | function CreateConfig({ hasCustomModels = false, onConfigCreated }: Crea... function ProviderItem (line 169) | function ProviderItem({item, onClick}: {item: AiConfig, onClick: (model:... FILE: src/app/core/setting/ai/default-models.tsx function DefaultModelsSection (line 10) | function DefaultModelsSection() { FILE: src/app/core/setting/ai/model-card.tsx type ModelCardProps (line 23) | interface ModelCardProps { function ModelCard (line 30) | function ModelCard({ modelConfig, aiConfig, onUpdate, onDelete }: ModelC... FILE: src/app/core/setting/ai/modelSelect.tsx function ModelSelect (line 22) | function ModelSelect( FILE: src/app/core/setting/ai/page.tsx function AiPage (line 32) | function AiPage() { FILE: src/app/core/setting/audio/page.tsx function AudioPage (line 7) | function AudioPage() { FILE: src/app/core/setting/audio/setting.tsx function Setting (line 12) | function Setting() { FILE: src/app/core/setting/chat/condense-settings.tsx function CondenseSettings (line 17) | function CondenseSettings() { FILE: src/app/core/setting/chat/page.tsx function ChatSettingsPage (line 10) | function ChatSettingsPage() { FILE: src/app/core/setting/chat/primary-model-settings.tsx function PrimaryModelSettings (line 15) | function PrimaryModelSettings() { FILE: src/app/core/setting/chat/toolbar-settings.tsx constant TOOL_CONFIGS (line 31) | const TOOL_CONFIGS = { type SortableItemProps (line 60) | interface SortableItemProps { function SortableItem (line 67) | function SortableItem({ item, config, onToggle, t }: SortableItemProps) { function ToolbarSettings (line 114) | function ToolbarSettings() { FILE: src/app/core/setting/components/default-models-settings.tsx type DefaultModelsSettingsProps (line 15) | interface DefaultModelsSettingsProps { function DefaultModelsSettings (line 19) | function DefaultModelsSettings({ type }: DefaultModelsSettingsProps) { FILE: src/app/core/setting/components/model-select.tsx type GroupedModel (line 28) | interface GroupedModel { function ModelSelect (line 34) | function ModelSelect({modelKey}: {modelKey: string}) { FILE: src/app/core/setting/components/setting-base.tsx function SettingType (line 1) | function SettingType( function FormItem (line 17) | function FormItem({title, desc, children}: { title: string, desc?: strin... FILE: src/app/core/setting/components/setting-tab.tsx function SettingTab (line 10) | function SettingTab() { FILE: src/app/core/setting/components/upload-store.tsx function UploadStore (line 19) | function UploadStore() { FILE: src/app/core/setting/config.tsx type ModelType (line 108) | type ModelType = 'chat' | 'image' | 'video' | 'tts' | 'stt' | 'embedding... type ModelConfig (line 110) | interface ModelConfig { type AiConfig (line 120) | interface AiConfig { type Model (line 139) | interface Model { FILE: src/app/core/setting/defaultModel/page.tsx function DefaultModelPage (line 7) | function DefaultModelPage() { FILE: src/app/core/setting/defaultModel/setting.tsx function Setting (line 6) | function Setting() { FILE: src/app/core/setting/dev/page.tsx function DevPage (line 6) | function DevPage() { FILE: src/app/core/setting/dev/set-config.tsx function SetConfig (line 12) | function SetConfig() { FILE: src/app/core/setting/dev/setting-dev.tsx function SettingDev (line 15) | function SettingDev({id, icon}: {id: string, icon?: React.ReactNode}) { FILE: src/app/core/setting/editor/centered-content.tsx function CenteredContent (line 8) | function CenteredContent() { FILE: src/app/core/setting/editor/commit.tsx function Commit (line 15) | function Commit() { FILE: src/app/core/setting/editor/completion.tsx function Completion (line 15) | function Completion() { FILE: src/app/core/setting/editor/outline.tsx function Outline (line 15) | function Outline() { FILE: src/app/core/setting/editor/page.tsx function EditorSettingPage (line 10) | function EditorSettingPage() { FILE: src/app/core/setting/editor/show-undo-redo.tsx function ShowUndoRedo (line 8) | function ShowUndoRedo() { FILE: src/app/core/setting/file/page.tsx function SettingFilePage (line 8) | function SettingFilePage() { FILE: src/app/core/setting/file/setting-assets.tsx function SettingAssets (line 7) | function SettingAssets() { FILE: src/app/core/setting/file/setting-workspace.tsx function SettingWorkspace (line 16) | function SettingWorkspace() { FILE: src/app/core/setting/general/interface-settings/content-text-scale.tsx function ContentTextScaleSettings (line 8) | function ContentTextScaleSettings() { FILE: src/app/core/setting/general/interface-settings/custom-theme.tsx type ColorScheme (line 19) | interface ColorScheme { function CustomThemeSettings (line 42) | function CustomThemeSettings() { FILE: src/app/core/setting/general/interface-settings/file-manager-text-size.tsx function FileManagerTextSizeSettings (line 16) | function FileManagerTextSizeSettings() { FILE: src/app/core/setting/general/interface-settings/index.tsx function InterfaceSettings (line 10) | function InterfaceSettings() { FILE: src/app/core/setting/general/interface-settings/language.tsx function LanguageSettings (line 15) | function LanguageSettings() { FILE: src/app/core/setting/general/interface-settings/record-text-size.tsx function RecordTextSizeSettings (line 16) | function RecordTextSizeSettings() { FILE: src/app/core/setting/general/interface-settings/scale.tsx function ScaleSettings (line 10) | function ScaleSettings() { FILE: src/app/core/setting/general/interface-settings/theme-color-picker.tsx type ThemeColorPickerProps (line 9) | interface ThemeColorPickerProps { function ThemeColorPicker (line 32) | function ThemeColorPicker({ colors, onColorChange, t }: ThemeColorPicker... type ColorInputProps (line 85) | interface ColorInputProps { function ColorInput (line 92) | function ColorInput({ label, value, defaultColor, onChange }: ColorInput... FILE: src/app/core/setting/general/interface-settings/theme-presets.tsx type ColorScheme (line 5) | interface ColorScheme { type ThemePresetsProps (line 29) | interface ThemePresetsProps { function ThemePresets (line 35) | function ThemePresets({ onApplyPreset, onResetDefault, t }: ThemePresets... FILE: src/app/core/setting/general/interface-settings/theme.tsx function ThemeSettings (line 9) | function ThemeSettings() { FILE: src/app/core/setting/general/page.tsx function GeneralSettingsPage (line 8) | function GeneralSettingsPage() { FILE: src/app/core/setting/general/tool-settings.tsx function ToolSettings (line 5) | function ToolSettings() { FILE: src/app/core/setting/imageHosting/github.tsx function GithubImageHosting (line 23) | function GithubImageHosting() { FILE: src/app/core/setting/imageHosting/page.tsx function ImageHostingPage (line 22) | function ImageHostingPage() { FILE: src/app/core/setting/imageHosting/picgo.tsx constant DEFAULT_URL (line 10) | const DEFAULT_URL = 'http://127.0.0.1:36677' function PicgoImageHosting (line 12) | function PicgoImageHosting() { FILE: src/app/core/setting/imageHosting/s3.tsx type S3Config (line 15) | interface S3Config { function S3ImageHosting (line 25) | function S3ImageHosting() { FILE: src/app/core/setting/imageHosting/setting-switch.tsx function SettingSwitch (line 6) | function SettingSwitch() { FILE: src/app/core/setting/imageHosting/smms.tsx constant CREATE_TOKEN_URL (line 13) | const CREATE_TOKEN_URL = 'https://sm.ms/home/apitoken' function SMMSImageHosting (line 15) | function SMMSImageHosting() { FILE: src/app/core/setting/imageMethod/ocr.tsx function OcrSetting (line 10) | function OcrSetting() { FILE: src/app/core/setting/imageMethod/page.tsx function ImageMethod (line 17) | function ImageMethod() { FILE: src/app/core/setting/imageMethod/setDefault.tsx function SetDefault (line 7) | function SetDefault({type}: {type: 'ocr' | 'vlm'}) { FILE: src/app/core/setting/imageMethod/vlm.tsx function VlmSetting (line 7) | function VlmSetting() { FILE: src/app/core/setting/layout.tsx function SettingLayout (line 5) | function SettingLayout({ FILE: src/app/core/setting/mcp/connection-test.tsx type ConnectionTestProps (line 10) | interface ConnectionTestProps { function ConnectionTest (line 14) | function ConnectionTest({ server }: ConnectionTestProps) { FILE: src/app/core/setting/mcp/json-import-dialog.tsx type JsonImportDialogProps (line 32) | interface JsonImportDialogProps { function JsonImportDialog (line 37) | function JsonImportDialog({ open, onOpenChange }: JsonImportDialogProps) { FILE: src/app/core/setting/mcp/page.tsx function McpSettingPage (line 12) | function McpSettingPage() { FILE: src/app/core/setting/mcp/runtime-environment-card.tsx type RuntimeDefinition (line 31) | type RuntimeDefinition = { constant RUNTIMES (line 37) | const RUNTIMES: RuntimeDefinition[] = [ function RuntimeEnvironmentCard (line 44) | function RuntimeEnvironmentCard() { FILE: src/app/core/setting/mcp/server-config-dialog.tsx type ServerConfigDialogProps (line 40) | interface ServerConfigDialogProps { function ServerConfigDialog (line 46) | function ServerConfigDialog({ FILE: src/app/core/setting/mcp/server-list.tsx function ServerList (line 38) | function ServerList() { FILE: src/app/core/setting/mcp/tool-browser.tsx function ToolBrowser (line 13) | function ToolBrowser() { FILE: src/app/core/setting/memories/page.tsx function MemoriesSettingsPage (line 8) | function MemoriesSettingsPage() { FILE: src/app/core/setting/page.tsx function Page (line 7) | function Page() { FILE: src/app/core/setting/prompt/page.tsx function PromptSetting (line 6) | function PromptSetting() { FILE: src/app/core/setting/prompt/setting-prompt.tsx function SettingPrompt (line 37) | function SettingPrompt({id, icon}: {id: string, icon?: React.ReactNode}) { FILE: src/app/core/setting/rag/model-setting.tsx function ModelSetting (line 6) | function ModelSetting() { FILE: src/app/core/setting/rag/page.tsx function PromptSetting (line 9) | function PromptSetting() { FILE: src/app/core/setting/rag/settings.tsx function Settings (line 13) | function Settings() { FILE: src/app/core/setting/readAloud/page.tsx function ReadAloudPage (line 7) | function ReadAloudPage() { FILE: src/app/core/setting/readAloud/setting.tsx function Setting (line 12) | function Setting() { FILE: src/app/core/setting/record/model-settings.tsx function ModelSettings (line 15) | function ModelSettings() { FILE: src/app/core/setting/record/page.tsx function RecordSettingPage (line 9) | function RecordSettingPage() { FILE: src/app/core/setting/record/toolbar-settings.tsx constant TOOL_CONFIGS (line 33) | const TOOL_CONFIGS = { type SortableItemProps (line 72) | interface SortableItemProps { function SortableItem (line 79) | function SortableItem({ item, config, onToggle, t }: SortableItemProps) { function ToolbarSettings (line 126) | function ToolbarSettings() { FILE: src/app/core/setting/shortcuts/page.tsx function ShortcutsPage (line 10) | function ShortcutsPage() { FILE: src/app/core/setting/shortcuts/shorcut-input.tsx function ShortcutsInput (line 12) | function ShortcutsInput({ FILE: src/app/core/setting/skills/components/global-skills-manager.tsx function GlobalSkillsManager (line 13) | function GlobalSkillsManager() { FILE: src/app/core/setting/skills/components/project-skills-list.tsx function ProjectSkillsList (line 9) | function ProjectSkillsList() { FILE: src/app/core/setting/skills/components/skill-card.tsx type SkillCardProps (line 23) | interface SkillCardProps { function SkillCard (line 28) | function SkillCard({ skill, onRefresh }: SkillCardProps) { FILE: src/app/core/setting/skills/components/skills-settings.tsx function SkillsSettings (line 5) | function SkillsSettings() { FILE: src/app/core/setting/skills/page.tsx function SkillsSettingPage (line 10) | function SkillsSettingPage() { FILE: src/app/core/setting/sync/components/sync-platform-card.tsx type SyncPlatformConfig (line 14) | interface SyncPlatformConfig { type SyncPlatformCardProps (line 23) | interface SyncPlatformCardProps { function SyncPlatformCard (line 37) | function SyncPlatformCard({ function StatusBadge (line 203) | function StatusBadge({ state }: { state: SyncStateEnum }) { FILE: src/app/core/setting/sync/gitea-sync.tsx function GiteaSync (line 22) | function GiteaSync() { FILE: src/app/core/setting/sync/gitee-sync.tsx function GiteeSync (line 20) | function GiteeSync() { FILE: src/app/core/setting/sync/github-sync.tsx constant GITHUB_CONFIG (line 15) | const GITHUB_CONFIG = { function GithubSync (line 24) | function GithubSync() { FILE: src/app/core/setting/sync/gitlab-sync.tsx function GitlabSync (line 22) | function GitlabSync() { FILE: src/app/core/setting/sync/page.tsx function SyncPage (line 22) | function SyncPage() { FILE: src/app/core/setting/sync/s3-sync.tsx function S3Sync (line 15) | function S3Sync() { FILE: src/app/core/setting/sync/webdav-sync.tsx function WebDAVSync (line 15) | function WebDAVSync() { FILE: src/app/core/setting/template/page.tsx function TemplatePage (line 6) | function TemplatePage() { FILE: src/app/core/setting/template/setting-template.tsx function SettingTemplate (line 36) | function SettingTemplate({id, icon}: {id: string, icon?: React.ReactNode... FILE: src/app/error.tsx function Error (line 6) | function Error({ FILE: src/app/global-error.tsx function GlobalError (line 6) | function GlobalError({ FILE: src/app/layout.tsx function RootLayout (line 11) | function RootLayout({ FILE: src/app/mobile/chat/components/chat-attachments-drawer.tsx type ChatAttachmentsDrawerProps (line 20) | interface ChatAttachmentsDrawerProps { function ChatAttachmentsDrawer (line 26) | function ChatAttachmentsDrawer({ FILE: src/app/mobile/chat/components/chat-settings-drawer.tsx function ChatSettingsDrawer (line 17) | function ChatSettingsDrawer() { FILE: src/app/mobile/chat/components/chat-tools-drawer.tsx function ChatToolsDrawer (line 18) | function ChatToolsDrawer() { FILE: src/app/mobile/chat/components/clear-chat.tsx function MobileClearChat (line 9) | function MobileClearChat() { FILE: src/app/mobile/chat/components/clear-context.tsx function MobileClearContext (line 9) | function MobileClearContext() { FILE: src/app/mobile/chat/components/clipboard-toggle.tsx function ClipboardToggle (line 11) | function ClipboardToggle() { FILE: src/app/mobile/chat/components/mcp-selector.tsx function McpListContent (line 19) | function McpListContent() { function McpSelector (line 94) | function McpSelector() { FILE: src/app/mobile/chat/components/mobile-chat-header.tsx function formatRelativeTime (line 25) | function formatRelativeTime(timestamp: number, locale: string): string { function MobileChatHeader (line 30) | function MobileChatHeader() { FILE: src/app/mobile/chat/components/model-selector.tsx type GroupedModel (line 19) | interface GroupedModel { function ModelListContent (line 25) | function ModelListContent({ function ModelSelector (line 75) | function ModelSelector() { FILE: src/app/mobile/chat/components/new-chat.tsx function MobileNewChat (line 8) | function MobileNewChat() { FILE: src/app/mobile/chat/components/prompt-selector.tsx function PromptListContent (line 17) | function PromptListContent({ function PromptSelector (line 60) | function PromptSelector() { FILE: src/app/mobile/chat/components/rag-toggle.tsx function RagToggle (line 12) | function RagToggle() { FILE: src/app/mobile/chat/page.tsx function Chat (line 7) | function Chat() { FILE: src/app/mobile/layout.tsx function RootLayout (line 28) | function RootLayout({ FILE: src/app/mobile/record/mobile-mark-header.tsx function MobileMarkHeader (line 11) | function MobileMarkHeader() { FILE: src/app/mobile/record/mobile-record-stream.tsx constant TIME_OPTIONS (line 25) | const TIME_OPTIONS: RecordTimePreset[] = ['all', 'today', 'last7Days', '... function getMarkPreview (line 27) | function getMarkPreview(mark: Mark): string { function MobileRecordStream (line 34) | function MobileRecordStream() { FILE: src/app/mobile/record/page.tsx function Record (line 5) | function Record() { FILE: src/app/mobile/setting/components/setting-tab.tsx function SettingTab (line 8) | function SettingTab() { FILE: src/app/mobile/setting/page.tsx function Setting (line 6) | function Setting() { FILE: src/app/mobile/setting/pages/ai/page.tsx function AIPage (line 5) | function AIPage() { FILE: src/app/mobile/setting/pages/audio/page.tsx function AudioPage (line 5) | function AudioPage() { FILE: src/app/mobile/setting/pages/chat/page.tsx function ChatSettingsPage (line 9) | function ChatSettingsPage() { FILE: src/app/mobile/setting/pages/defaultModel/page.tsx function DefaultModelPage (line 5) | function DefaultModelPage() { FILE: src/app/mobile/setting/pages/dev/page.tsx function DevPage (line 5) | function DevPage() { FILE: src/app/mobile/setting/pages/editor/page.tsx function EditorPage (line 5) | function EditorPage() { FILE: src/app/mobile/setting/pages/file/page.tsx function FilePage (line 5) | function FilePage() { FILE: src/app/mobile/setting/pages/general/page.tsx function GeneralSettingsPage (line 7) | function GeneralSettingsPage() { FILE: src/app/mobile/setting/pages/imageHosting/page.tsx function ImageHostingPage (line 5) | function ImageHostingPage() { FILE: src/app/mobile/setting/pages/imageMethod/page.tsx function ImageMethodPage (line 5) | function ImageMethodPage() { FILE: src/app/mobile/setting/pages/layout.tsx function RootLayout (line 8) | function RootLayout({ FILE: src/app/mobile/setting/pages/mcp/page.tsx function McpSettingPage (line 8) | function McpSettingPage() { FILE: src/app/mobile/setting/pages/prompt/page.tsx function PromptPage (line 5) | function PromptPage() { FILE: src/app/mobile/setting/pages/rag/page.tsx function RAGPage (line 5) | function RAGPage() { FILE: src/app/mobile/setting/pages/readAloud/page.tsx function ReadAloudPage (line 5) | function ReadAloudPage() { FILE: src/app/mobile/setting/pages/record/page.tsx function RecordSettingsPage (line 8) | function RecordSettingsPage() { FILE: src/app/mobile/setting/pages/skills/page.tsx function SkillsPage (line 8) | function SkillsPage() { FILE: src/app/mobile/setting/pages/sync/page.tsx function SyncPage (line 5) | function SyncPage() { FILE: src/app/mobile/setting/pages/template/page.tsx function TemplatePage (line 5) | function TemplatePage() { FILE: src/app/mobile/setting/pages/theme/page.tsx type ColorScheme (line 15) | interface ColorScheme { function ThemeSettingsPage (line 305) | function ThemeSettingsPage() { FILE: src/app/mobile/writing/browser-utils.ts function normalizePath (line 3) | function normalizePath(path: string) { function parentPath (line 7) | function parentPath(path: string) { function isMarkdownFile (line 12) | function isMarkdownFile(node: DirTree) { function getNodeByPath (line 16) | function getNodeByPath(tree: DirTree[], path: string): DirTree | null { function getChildrenByPath (line 32) | function getChildrenByPath(tree: DirTree[], path: string): DirTree[] { FILE: src/app/mobile/writing/custom-header.tsx function WritingHeader (line 34) | function WritingHeader() { FILE: src/app/mobile/writing/entry-list-item.tsx type EntryAction (line 8) | type EntryAction = { type EntryListItemProps (line 17) | interface EntryListItemProps { function EntryListItem (line 26) | function EntryListItem({ FILE: src/app/mobile/writing/mobile-editor.tsx function MobileEditor (line 12) | function MobileEditor() { FILE: src/app/mobile/writing/name-input-dialog.tsx type NameInputDialogProps (line 13) | interface NameInputDialogProps { function NameInputDialog (line 26) | function NameInputDialog({ FILE: src/app/mobile/writing/page.tsx function Writing (line 8) | function Writing() { FILE: src/app/mobile/writing/types.ts type BrowserEntry (line 1) | type BrowserEntry = { FILE: src/app/not-found.tsx function NotFound (line 9) | function NotFound() { FILE: src/app/page.tsx function Home (line 7) | function Home() { FILE: src/components/activity/activity-day-detail.tsx type ActivityDayDetailProps (line 6) | interface ActivityDayDetailProps { function getSourceLabel (line 23) | function getSourceLabel(source: ActivityEntry['source'], labels: Activit... function renderSourceBadge (line 31) | function renderSourceBadge(entry: ActivityEntry, labels: ActivityDayDeta... function formatEntryBucket (line 44) | function formatEntryBucket(timestamp: number) { function formatEntryTime (line 51) | function formatEntryTime(timestamp: number) { function normalizeText (line 58) | function normalizeText(value?: string) { function getEntryBodyText (line 62) | function getEntryBodyText(entry: ActivityEntry) { function getWritingMergeKey (line 70) | function getWritingMergeKey(entry: ActivityEntry) { function dedupeGroupEntries (line 74) | function dedupeGroupEntries(entries: ActivityEntry[]) { function groupEntriesByBucket (line 96) | function groupEntriesByBucket(entries: ActivityEntry[]) { function ActivityDayDetail (line 112) | function ActivityDayDetail({ day, compact = false, labels }: ActivityDay... FILE: src/components/activity/activity-drawer.tsx type ActivityDrawerProps (line 10) | interface ActivityDrawerProps { function ActivityDrawer (line 15) | function ActivityDrawer({ open, onOpenChange }: ActivityDrawerProps) { FILE: src/components/activity/activity-heatmap.tsx type ActivityHeatmapProps (line 7) | interface ActivityHeatmapProps { function getIntensityLevel (line 18) | function getIntensityLevel(totalCount: number) { constant LEVEL_CLASSES (line 26) | const LEVEL_CLASSES = [ function ActivityHeatmap (line 34) | function ActivityHeatmap({ FILE: src/components/activity/activity-legend.tsx type ActivityLegendProps (line 3) | interface ActivityLegendProps { constant LEVEL_CLASSES (line 8) | const LEVEL_CLASSES = [ function ActivityLegend (line 16) | function ActivityLegend({ lowLabel, highLabel }: ActivityLegendProps) { FILE: src/components/activity/activity-panel.tsx type ActivityPanelProps (line 13) | interface ActivityPanelProps { function ActivityPanel (line 21) | function ActivityPanel({ FILE: src/components/app-footbar.tsx type NormalNavButtonProps (line 23) | interface NormalNavButtonProps { function NormalNavButton (line 33) | function NormalNavButton({ item, isActive, onClick }: NormalNavButtonPro... type AvatarNavButtonProps (line 52) | interface AvatarNavButtonProps { function AvatarNavButton (line 62) | function AvatarNavButton({ item, isActive, avatarUrl, onClick }: AvatarN... function AppFootbar (line 90) | function AppFootbar() { FILE: src/components/app-sidebar.tsx type AppSidebarProps (line 22) | interface AppSidebarProps { function AppSidebar (line 26) | function AppSidebar({ onSearchClick }: AppSidebarProps) { FILE: src/components/app-status.tsx function AppStatus (line 8) | function AppStatus() { FILE: src/components/audio-player.tsx type AudioPlayerProps (line 9) | interface AudioPlayerProps { function AudioPlayer (line 14) | function AudioPlayer({ audioPath, compact = false }: AudioPlayerProps) { FILE: src/components/bottom-bar-icon-button.tsx type BottomBarIconButtonProps (line 7) | type BottomBarIconButtonProps = { function BottomBarIconButton (line 16) | function BottomBarIconButton({ FILE: src/components/console-filter.tsx function ConsoleFilter (line 5) | function ConsoleFilter() { FILE: src/components/draggable-toolbar-item.tsx type DraggableToolbarItemProps (line 5) | interface DraggableToolbarItemProps { function DraggableToolbarItem (line 12) | function DraggableToolbarItem({ FILE: src/components/image-viewer.tsx function ImageViewer (line 8) | function ImageViewer({url, path, imageClassName}: {url: string, path?: s... FILE: src/components/local-image.tsx function LocalImage (line 6) | function LocalImage({ onLoad, src, ...props }: React.ComponentProps { function encodePath (line 102) | function encodePath(path: string, filename?: string): string { function encodeGitLabPath (line 108) | function encodeGitLabPath(path: string, filename?: string): string { function requestGitHub (line 113) | async function requestGitHub(method: string, url: string, body?: object) { function requestGitee (line 134) | async function requestGitee(method: string, url: string, body?: object) { function requestGitLab (line 152) | async function requestGitLab(method: string, url: string, body?: object) { function requestGitea (line 181) | async function requestGitea(method: string, url: string, body?: object) { function githubUpload (line 201) | async function githubUpload({ file, path, filename, sha, repo, accessTok... function githubGetFile (line 208) | async function githubGetFile({ path, repo, accessToken, githubUsername }: { function giteeUpload (line 216) | async function giteeUpload({ file, path, filename, sha, repo, accessToke... function giteeGetFile (line 223) | async function giteeGetFile({ path, repo, accessToken, giteeUsername }: { function gitlabUpload (line 231) | async function gitlabUpload({ file, path, filename, sha, accessToken, pr... function gitlabGetFile (line 256) | async function gitlabGetFile({ path, accessToken, projectId }: { function giteaUpload (line 265) | async function giteaUpload({ file, path, filename, sha, repo, accessToke... function giteaGetFile (line 290) | async function giteaGetFile({ path, repo, accessToken, giteaUsername }: { type ProviderStatus (line 299) | type ProviderStatus = 'connected' | 'disconnected' | 'failed' | 'unconfi... type ProviderInfo (line 301) | interface ProviderInfo { function SyncToggle (line 307) | function SyncToggle() { FILE: src/components/title-bar.tsx type Platform (line 43) | type Platform = 'macos' | 'windows' | 'linux' | 'unknown' type TitleBarProps (line 45) | interface TitleBarProps { function TitleBar (line 51) | function TitleBar({ onSearchClick, onActivityClick, activityOpen = false... FILE: src/components/tooltip-button.tsx function TooltipButton (line 5) | function TooltipButton( FILE: src/components/ui/agent-plan.tsx type ToolCall (line 27) | interface ToolCall { type ConfirmationRecord (line 41) | interface ConfirmationRecord { type ReActStep (line 51) | interface ReActStep { type AgentPlanProps (line 62) | interface AgentPlanProps { type DisplayStep (line 103) | interface DisplayStep { function AgentPlan (line 117) | function AgentPlan({ FILE: src/components/ui/badge.tsx type BadgeProps (line 26) | interface BadgeProps function Badge (line 30) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: src/components/ui/button.tsx type ButtonProps (line 37) | interface ButtonProps FILE: src/components/ui/calendar.tsx type CalendarProps (line 10) | type CalendarProps = React.ComponentProps function Calendar (line 12) | function Calendar({ FILE: src/components/ui/carousel.tsx type CarouselApi (line 12) | type CarouselApi = UseEmblaCarouselType[1] type UseCarouselParameters (line 13) | type UseCarouselParameters = Parameters type CarouselOptions (line 14) | type CarouselOptions = UseCarouselParameters[0] type CarouselPlugin (line 15) | type CarouselPlugin = UseCarouselParameters[1] type CarouselProps (line 17) | type CarouselProps = { type CarouselContextProps (line 24) | type CarouselContextProps = { function useCarousel (line 35) | function useCarousel() { FILE: src/components/ui/diff-viewer.tsx type DiffViewerProps (line 7) | interface DiffViewerProps { type DiffLine (line 22) | interface DiffLine { function DiffViewer (line 28) | function DiffViewer({ type InlineDiffProps (line 208) | interface InlineDiffProps { function InlineDiff (line 214) | function InlineDiff({ original, modified, className }: InlineDiffProps) { FILE: src/components/ui/empty.tsx function Empty (line 5) | function Empty({ className, ...props }: React.ComponentProps<"div">) { function EmptyHeader (line 18) | function EmptyHeader({ className, ...props }: React.ComponentProps<"div"... function EmptyMedia (line 46) | function EmptyMedia({ function EmptyTitle (line 61) | function EmptyTitle({ className, ...props }: React.ComponentProps<"div">) { function EmptyDescription (line 71) | function EmptyDescription({ className, ...props }: React.ComponentProps<... function EmptyContent (line 84) | function EmptyContent({ className, ...props }: React.ComponentProps<"div... FILE: src/components/ui/enhanced-context-menu.tsx type ContextMenuSubTriggerProps (line 21) | interface ContextMenuSubTriggerProps extends React.ComponentPropsWithout... type ContextMenuItemProps (line 82) | interface ContextMenuItemProps extends React.ComponentPropsWithoutRef) { function ItemSeparator (line 19) | function ItemSeparator({ function Item (line 54) | function Item({ function ItemMedia (line 91) | function ItemMedia({ function ItemContent (line 106) | function ItemContent({ className, ...props }: React.ComponentProps<"div"... function ItemTitle (line 119) | function ItemTitle({ className, ...props }: React.ComponentProps<"div">) { function ItemDescription (line 132) | function ItemDescription({ className, ...props }: React.ComponentProps<"... function ItemActions (line 146) | function ItemActions({ className, ...props }: React.ComponentProps<"div"... function ItemHeader (line 156) | function ItemHeader({ className, ...props }: React.ComponentProps<"div">) { function ItemFooter (line 169) | function ItemFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: src/components/ui/sheet.tsx type SheetContentProps (line 52) | interface SheetContentProps FILE: src/components/ui/shine-border.tsx type ShineBorderProps (line 7) | interface ShineBorderProps extends React.HTMLAttributes { function ShineBorder (line 30) | function ShineBorder({ FILE: src/components/ui/sidebar.tsx constant SIDEBAR_COOKIE_NAME (line 22) | const SIDEBAR_COOKIE_NAME = "sidebar:state" constant SIDEBAR_COOKIE_MAX_AGE (line 23) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 constant SIDEBAR_WIDTH (line 24) | const SIDEBAR_WIDTH = "16rem" constant SIDEBAR_WIDTH_MOBILE (line 25) | const SIDEBAR_WIDTH_MOBILE = "18rem" constant SIDEBAR_WIDTH_ICON (line 26) | const SIDEBAR_WIDTH_ICON = "3rem" constant SIDEBAR_KEYBOARD_SHORTCUT (line 27) | const SIDEBAR_KEYBOARD_SHORTCUT = "b" type SidebarContext (line 29) | type SidebarContext = { function useSidebar (line 41) | function useSidebar() { FILE: src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ FILE: src/components/ui/swipe-back.tsx type SwipeBackProps (line 6) | interface SwipeBackProps { function SwipeBack (line 12) | function SwipeBack({ FILE: src/components/ui/toast.tsx type ToastProps (line 115) | type ToastProps = React.ComponentPropsWithoutRef type ToastActionElement (line 117) | type ToastActionElement = React.ReactElement FILE: src/components/ui/toaster.tsx function Toaster (line 13) | function Toaster() { FILE: src/config/emitters.ts type EmitterShortcutEvents (line 1) | enum EmitterShortcutEvents { type EmitterRecordEvents (line 8) | enum EmitterRecordEvents { FILE: src/config/shortcut.ts type ShortcutSettings (line 1) | enum ShortcutSettings { type ShortcutDefault (line 8) | enum ShortcutDefault { FILE: src/config/sync-exclusions.ts type SyncExcludePattern (line 5) | interface SyncExcludePattern { constant DEFAULT_SYNC_EXCLUDE_PATTERNS (line 11) | const DEFAULT_SYNC_EXCLUDE_PATTERNS: SyncExcludePattern[] = [ function shouldExclude (line 22) | function shouldExclude(path: string): boolean { function matchPattern (line 35) | function matchPattern(pattern: string, path: string): boolean { function getExcludePatterns (line 52) | function getExcludePatterns(): string[] { constant SYNC_EXCLUDED_FIELDS (line 59) | const SYNC_EXCLUDED_FIELDS: string[] = [ function shouldExcludeFromSync (line 69) | function shouldExcludeFromSync(fieldName: string): boolean { function filterSyncData (line 74) | function filterSyncData>(data: T): Partial... function mergeSyncData (line 87) | function mergeSyncData>( FILE: src/contexts/text-size-context.tsx type TextSizeContextType (line 6) | interface TextSizeContextType { function useTextSize (line 15) | function useTextSize() { type TextSizeProviderProps (line 23) | interface TextSizeProviderProps { function TextSizeProvider (line 27) | function TextSizeProvider({ children }: TextSizeProviderProps) { FILE: src/db/activity.ts type ActivityEventSource (line 7) | type ActivityEventSource = 'record' | 'chat' | 'writing' type ActivityEvent (line 9) | interface ActivityEvent { type InsertActivityEventInput (line 20) | interface InsertActivityEventInput { function initActivityDb (line 30) | async function initActivityDb() { function insertActivityEvent (line 68) | async function insertActivityEvent(event: InsertActivityEventInput) { function getAllActivityEvents (line 88) | async function getAllActivityEvents() { function getLatestWritingEventTimestamp (line 97) | async function getLatestWritingEventTimestamp(path: string) { function recordWritingActivity (line 110) | async function recordWritingActivity(params: { function backfillActivityEvents (line 135) | async function backfillActivityEvents() { FILE: src/db/chats.ts type Role (line 5) | type Role = 'system' | 'user' type ChatType (line 6) | type ChatType = 'chat' | 'note' | 'clipboard' | 'clear' | 'condensed' type Chat (line 8) | interface Chat { function initChatsDb (line 30) | async function initChatsDb() { function insertChat (line 163) | async function insertChat(chat: Omit) { function getChats (line 186) | async function getChats(tagId: number) { function getChatsByConversation (line 196) | async function getChatsByConversation(conversationId: number) { function getAllChats (line 206) | async function getAllChats() { function insertChats (line 216) | async function insertChats(chats: Chat[]) { function deleteAllChats (line 235) | async function deleteAllChats() { function updateChat (line 244) | async function updateChat(chat: Chat) { function clearChatsByTagId (line 252) | async function clearChatsByTagId(tagId: number) { function updateChatsInsertedById (line 260) | async function updateChatsInsertedById(id: number) { function deleteChat (line 268) | async function deleteChat(id: number) { function updateChats (line 275) | async function updateChats(chats: Chat[]) { function deleteChats (line 290) | async function deleteChats(ids: number[]) { function updateChatCondensedContent (line 310) | async function updateChatCondensedContent(chatId: number, condensedConte... FILE: src/db/conversations.ts type Conversation (line 3) | interface Conversation { function initConversationsDb (line 13) | async function initConversationsDb() { function migrateExistingChats (line 48) | async function migrateExistingChats() { function createConversation (line 107) | async function createConversation(title: string): Promise { function getAllConversations (line 118) | async function getAllConversations(): Promise { function getConversation (line 128) | async function getConversation(id: number): Promise { function updateConversationTitle (line 138) | async function updateConversationTitle(id: number, title: string): Promi... function updateConversationMessageCount (line 147) | async function updateConversationMessageCount(id: number, delta: number)... function updateConversationTime (line 156) | async function updateConversationTime(id: number): Promise { function deleteConversation (line 165) | async function deleteConversation(id: number): Promise { function toggleConversationPin (line 180) | async function toggleConversationPin(id: number): Promise { function syncConversationMessageCount (line 194) | async function syncConversationMessageCount(conversationId: number): Pro... FILE: src/db/index.ts function getDb (line 8) | async function getDb() { function initAllDatabases (line 13) | async function initAllDatabases() { FILE: src/db/marks.ts type Mark (line 6) | interface Mark { function initMarksDb (line 19) | async function initMarksDb() { function getMarks (line 39) | async function getMarks(id: number) { function insertMark (line 45) | async function insertMark(mark: Partial) { function getAllMarks (line 67) | async function getAllMarks() { function updateMark (line 72) | async function updateMark(mark: Mark) { function restoreMark (line 81) | async function restoreMark(id: number) { function delMark (line 90) | async function delMark(id: number) { function deleteAllMarks (line 104) | async function deleteAllMarks() { function insertMarks (line 109) | async function insertMarks(marks: Partial[]) { function delMarkForever (line 124) | async function delMarkForever(id: number) { function clearTrash (line 129) | async function clearTrash() { function updateMarks (line 134) | async function updateMarks(marks: Mark[]) { function deleteMarks (line 149) | async function deleteMarks(ids: number[]) { function restoreMarks (line 165) | async function restoreMarks(ids: number[]) { FILE: src/db/memories.ts type MemoryCategory (line 4) | type MemoryCategory = 'preference' | 'memory' type Memory (line 6) | interface Memory { constant PREFERENCE_KEYWORDS (line 19) | const PREFERENCE_KEYWORDS = [ function categorizeMemory (line 27) | function categorizeMemory(content: string): MemoryCategory { function cosineSimilarity (line 38) | function cosineSimilarity(vecA: number[], vecB: number[]): number { function generateUUID (line 61) | function generateUUID(): string { function initMemoriesDb (line 72) | async function initMemoriesDb() { function upsertMemory (line 101) | async function upsertMemory( function getAllMemories (line 189) | async function getAllMemories(): Promise { function getMemoriesByCategory (line 203) | async function getMemoriesByCategory(category: MemoryCategory): Promise<... function getSimilarMemories (line 218) | async function getSimilarMemories( function getMemoryById (line 249) | async function getMemoryById(id: string): Promise { function updateMemoryAccess (line 264) | async function updateMemoryAccess(id: string): Promise { function updateMemory (line 275) | async function updateMemory( function deleteMemory (line 307) | async function deleteMemory(id: string): Promise { function clearAllMemories (line 318) | async function clearAllMemories(): Promise { function getMemoryStats (line 328) | async function getMemoryStats(): Promise<{ FILE: src/db/notes.ts type Note (line 4) | interface Note { function initNotesDb (line 14) | async function initNotesDb() { function insertNote (line 32) | async function insertNote(note: Partial) { function getNoteByTagId (line 41) | async function getNoteByTagId(tagId: number) { function getNoteById (line 46) | async function getNoteById(id: number) { function getNotesByTagId (line 52) | async function getNotesByTagId(tagId: number) { function delNote (line 58) | async function delNote(id: number) { FILE: src/db/tags.ts type Tag (line 4) | interface Tag { function initTagsDb (line 14) | async function initTagsDb() { function getTags (line 53) | async function getTags() { function insertTag (line 67) | async function insertTag(tag: Partial) { function updateTag (line 75) | async function updateTag(tag: Tag) { function delTag (line 83) | async function delTag(id: number) { function deleteAllTags (line 88) | async function deleteAllTags() { function insertTags (line 93) | async function insertTags(tags: Tag[]) { function updateTagsOrder (line 113) | async function updateTagsOrder(tags: { id: number; sortOrder: number }[]) { FILE: src/db/vector.ts type VectorDocument (line 4) | interface VectorDocument { type CachedVector (line 14) | interface CachedVector { class VectorCache (line 23) | class VectorCache { method getVersion (line 30) | getVersion(): number { method getAll (line 35) | getAll(): CachedVector[] { method getByFilename (line 40) | getByFilename(filename: string): CachedVector[] { method update (line 46) | async update() { method add (line 83) | add(doc: VectorDocument) { method deleteByFilename (line 106) | deleteByFilename(filename: string) { method needsUpdate (line 116) | needsUpdate(): boolean { function initVectorDb (line 125) | async function initVectorDb() { function upsertVectorDocument (line 149) | async function upsertVectorDocument(doc: Omit) { function getVectorDocumentsByFilename (line 166) | async function getVectorDocumentsByFilename(filename: string) { function deleteVectorDocumentsByFilename (line 173) | async function deleteVectorDocumentsByFilename(filename: string) { function checkVectorDocumentExists (line 183) | async function checkVectorDocumentExists(filename: string) { function getSimilarDocuments (line 192) | async function getSimilarDocuments( function cosineSimilarity (line 228) | function cosineSimilarity(vecA: number[], vecB: number[]): number { function clearVectorDb (line 249) | async function clearVectorDb() { function getAllVectorDocumentFilenames (line 259) | async function getAllVectorDocumentFilenames() { function refreshVectorCache (line 266) | async function refreshVectorCache() { FILE: src/hooks/use-file-shortcuts.ts type Platform (line 6) | type Platform = 'macos' | 'windows' | 'linux' | 'unknown' type FileShortcutsProps (line 8) | interface FileShortcutsProps { function useFileShortcuts (line 25) | function useFileShortcuts({ FILE: src/hooks/use-mobile.tsx constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: src/hooks/use-sync-manager.ts type UseSyncManagerOptions (line 8) | interface UseSyncManagerOptions { function useSyncManager (line 13) | function useSyncManager(path?: string, options: UseSyncManagerOptions = ... FILE: src/hooks/use-sync-settings.ts function getStore (line 11) | async function getStore(): Promise { type SyncPlatformStatus (line 20) | interface SyncPlatformStatus { type UseSyncSettingsReturn (line 27) | interface UseSyncSettingsReturn { function useSyncSettings (line 52) | function useSyncSettings(): UseSyncSettingsReturn { FILE: src/hooks/use-toast.ts constant TOAST_LIMIT (line 11) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 12) | const TOAST_REMOVE_DELAY = 1000000 type ToasterToast (line 14) | type ToasterToast = ToastProps & { function genId (line 31) | function genId() { type ActionType (line 36) | type ActionType = typeof actionTypes type Action (line 38) | type Action = type State (line 56) | interface State { function dispatch (line 137) | function dispatch(action: Action) { type Toast (line 144) | type Toast = Omit function toast (line 146) | function toast({ ...props }: Toast) { function useToast (line 175) | function useToast() { FILE: src/hooks/use-toolbar-shortcuts.ts type Platform (line 7) | type Platform = 'macos' | 'windows' | 'linux' | 'unknown' function useToolbarShortcuts (line 9) | function useToolbarShortcuts() { FILE: src/hooks/use-username.ts function useUsername (line 7) | function useUsername() { function getS3BucketName (line 30) | async function getS3BucketName(): Promise { FILE: src/hooks/useAiCompletion.ts type UseAiCompletionOptions (line 4) | interface UseAiCompletionOptions { function useAiCompletion (line 9) | function useAiCompletion(options: UseAiCompletionOptions = {}) { FILE: src/hooks/useI18n.ts constant LANGUAGE_KEY (line 3) | const LANGUAGE_KEY = 'app-language'; function useI18n (line 5) | function useI18n() { FILE: src/lib/activity/aggregate.ts constant DEFAULT_COUNTS (line 3) | const DEFAULT_COUNTS: Record = Object.freeze({ function formatDayKey (line 9) | function formatDayKey(timestamp: number, timeZone?: string) { function cloneCounts (line 18) | function cloneCounts(): Record { function summarizeActivityEntries (line 26) | function summarizeActivityEntries(entries: ActivityEntry[], options: { t... function shiftDay (line 53) | function shiftDay(day: string, amount: number) { function buildActivityHeatmap (line 59) | function buildActivityHeatmap( FILE: src/lib/activity/events.ts constant DEFAULT_WRITING_SESSION_WINDOW_MS (line 1) | const DEFAULT_WRITING_SESSION_WINDOW_MS = 30 * 60 * 1000 function shouldCreateWritingSession (line 3) | function shouldCreateWritingSession( function truncateActivityText (line 15) | function truncateActivityText(value: string | undefined, maxLength = 120) { FILE: src/lib/activity/index.ts function getBrowserTimeZone (line 7) | function getBrowserTimeZone() { function getDefaultRange (line 11) | function getDefaultRange() { function loadActivityEntries (line 22) | async function loadActivityEntries(): Promise { function buildTotals (line 36) | function buildTotals(days: ActivityDaySummary[]) { function loadActivityCalendarData (line 55) | async function loadActivityCalendarData(): Promise { FILE: src/lib/activity/types.ts type ActivitySource (line 1) | type ActivitySource = 'record' | 'chat' | 'writing' type ActivityEntry (line 3) | interface ActivityEntry { type ActivityDaySummary (line 14) | interface ActivityDaySummary { type ActivityHeatmapWeek (line 21) | interface ActivityHeatmapWeek { type ActivityCalendarData (line 25) | interface ActivityCalendarData { FILE: src/lib/agent/agent-handler.ts type AgentHandlerConfig (line 9) | interface AgentHandlerConfig { class AgentHandler (line 29) | class AgentHandler { method constructor (line 33) | constructor(config: AgentHandlerConfig) { method execute (line 37) | async execute( method stop (line 215) | stop() { method getAvailableSkills (line 226) | private async getAvailableSkills(): Promise { method getSkillsInfo (line 259) | private async getSkillsInfo(): Promise | nu... FILE: src/lib/agent/react-diff-helpers.ts function replaceLinesInRange (line 5) | function replaceLinesInRange( function searchReplaceContent (line 40) | function searchReplaceContent( function insertLinesAtPosition (line 69) | function insertLinesAtPosition( function deleteLinesInRange (line 92) | function deleteLinesInRange( FILE: src/lib/agent/react.ts function buildIterationUserMessage (line 19) | function buildIterationUserMessage( function normalizeLinkedCandidate (line 40) | function normalizeLinkedCandidate(candidate: unknown): string { function getLinkedFileName (line 44) | function getLinkedFileName(path: unknown): string { function matchesLinkedFileCandidate (line 49) | function matchesLinkedFileCandidate( function shouldBlockRedundantLinkedFileRead (line 69) | function shouldBlockRedundantLinkedFileRead( function isExplicitTagOrMarkIntent (line 95) | function isExplicitTagOrMarkIntent(userInput: string): boolean { function shouldKeepFocusOnLinkedNote (line 99) | function shouldKeepFocusOnLinkedNote( function isSuccessfulObservation (line 120) | function isSuccessfulObservation(observation?: string): boolean { function shouldBlockRepeatedNoteExploration (line 130) | function shouldBlockRepeatedNoteExploration( type ReActConfig (line 157) | interface ReActConfig { class ReActAgent (line 183) | class ReActAgent { method constructor (line 198) | constructor(config: ReActConfig) { method stop (line 205) | stop() { method isStopped (line 214) | isStopped(): boolean { method run (line 218) | async run( method buildSystemPrompt (line 443) | private async buildSystemPrompt(): Promise { method think (line 702) | private async think( method parseAction (line 910) | private parseAction(thought: string): { tool: string; params: Record, thoug... method normalizeToolParams (line 1256) | private normalizeToolParams(toolName: string, params: Record): Record... method getQuotedInsertDirective (line 1368) | private getQuotedInsertDirective(): 'before' | 'after' | 'around' | nu... method buildQuotedInsertContent (line 1391) | private buildQuotedInsertContent( method extractTitleFromThought (line 1437) | private extractTitleFromThought(thought: string): string { method formatMcpResult (line 1458) | private formatMcpResult(toolDescription: string, data: any): string { method getSteps (line 1486) | getSteps(): ReActStep[] { method getCurrentIteration (line 1490) | getCurrentIteration(): number { method formatSkillsInstructions (line 1498) | private formatSkillsInstructions(): string { method extractMentionedSkills (line 1643) | private extractMentionedSkills(thought: string): string[] { method extractFinalAnswer (line 1673) | private extractFinalAnswer(content: string): string | null { method isToolAuthorized (line 1706) | isToolAuthorized(toolName: string): boolean { method evaluateToolPolicy (line 1722) | private evaluateToolPolicy( method getPolicyAdjustmentMessage (line 1769) | private getPolicyAdjustmentMessage(toolName: string, reason: string): ... method isPolicyAdjustmentObservation (line 1801) | private isPolicyAdjustmentObservation(observation?: string): boolean { method isRedundantLinkedFileRead (line 1811) | private isRedundantLinkedFileRead(toolName: string, params: Record { function getAllToolsSync (line 144) | function getAllToolsSync(): Tool[] { function reloadMcpTools (line 154) | async function reloadMcpTools(): Promise { function getToolByName (line 160) | function getToolByName(name: string): Tool | undefined { function getToolsByCategory (line 164) | function getToolsByCategory(category: Tool['category']): Tool[] { function getToolDescriptions (line 168) | function getToolDescriptions(): string { FILE: src/lib/agent/tools/mark-tools.ts function getCurrentTagId (line 9) | function getCurrentTagId(tagId?: number): number { FILE: src/lib/agent/tools/note-tools.ts function normalizeLinkedCandidate (line 11) | function normalizeLinkedCandidate(candidate: unknown): string { function getLinkedFileName (line 15) | function getLinkedFileName(path: unknown): string { function matchesLinkedFileCandidate (line 20) | function matchesLinkedFileCandidate( function getBatchLinkedFileReadPlan (line 40) | function getBatchLinkedFileReadPlan( FILE: src/lib/agent/types.ts type ToolParameterType (line 1) | type ToolParameterType = 'string' | 'number' | 'boolean' | 'array' | 'ob... type ToolParameter (line 3) | interface ToolParameter { type Tool (line 11) | interface Tool { type ToolResult (line 20) | interface ToolResult { type ToolCall (line 27) | interface ToolCall { type ConfirmationRecord (line 36) | interface ConfirmationRecord { type AgentState (line 46) | interface AgentState { type ReActStep (line 88) | interface ReActStep { FILE: src/lib/ai/chat.ts function fetchAi (line 10) | async function fetchAi( function fetchAiStream (line 53) | async function fetchAiStream( function fetchAiStreamToken (line 434) | async function fetchAiStreamToken(text: string, onUpdate: (content: stri... FILE: src/lib/ai/completion.ts function cleanupCompletion (line 6) | function cleanupCompletion(text: string): string { function fetchCompletion (line 24) | async function fetchCompletion(context: string, abortSignal?: AbortSigna... function fetchCompletionStream (line 72) | async function fetchCompletionStream( FILE: src/lib/ai/condense.ts constant CONDENSE_THRESHOLD (line 7) | const CONDENSE_THRESHOLD = 3 // AI 消息超过 3 条时检查压缩 constant MIN_TOKEN_TO_CONDENSE (line 8) | const MIN_TOKEN_TO_CONDENSE = 100 // 单条消息超过 100 token 才压缩 function getCondensableChats (line 17) | function getCondensableChats(chats: Chat[], keepLatestCount: number): Ch... function shouldCondense (line 34) | async function shouldCondense(chatsAfterClear: Chat[]): Promise { function condenseChats (line 61) | async function condenseChats(chatsAfterClear: Chat[]): Promise { function fetchEmbedding (line 153) | async function fetchEmbedding(text: string): Promise { function rerankDocuments (line 208) | async function rerankDocuments( FILE: src/lib/ai/history-messages.ts type ChatLike (line 1) | type ChatLike = { type MessageLike (line 8) | type MessageLike = { function getChatsAfterLastClear (line 16) | function getChatsAfterLastClear(chats: T[]): T[] { function buildChatHistoryForAI (line 24) | function buildChatHistoryForAI(chats: ChatLike[], systemPrompt?: string)... function buildMessagesWithHistory (line 56) | function buildMessagesWithHistory( FILE: src/lib/ai/placeholder.ts type QuickPrompt (line 4) | interface QuickPrompt { function getInspirationModelConfig (line 13) | async function getInspirationModelConfig() { function fetchAiPlaceholder (line 43) | async function fetchAiPlaceholder(text: string): Promise { function fetchAiQuickPrompts (line 101) | async function fetchAiQuickPrompts(text: string): Promise { function fetchAiSinglePrompt (line 207) | async function fetchAiSinglePrompt(text: string): Promise { FILE: src/lib/ai/rewrite.ts function fetchAiPolish (line 8) | async function fetchAiPolish(text: string): Promise { function fetchAiConcise (line 44) | async function fetchAiConcise(text: string): Promise { function fetchAiExpand (line 80) | async function fetchAiExpand(text: string): Promise { function fetchAiPolishStream (line 117) | async function fetchAiPolishStream( function fetchAiConciseStream (line 171) | async function fetchAiConciseStream( function fetchAiExpandStream (line 225) | async function fetchAiExpandStream( FILE: src/lib/ai/token-counter.ts function estimateTokens (line 7) | function estimateTokens(text: string): number { function estimateChatTokens (line 17) | function estimateChatTokens(chats: Chat[]): number { function estimateUserTokens (line 26) | function estimateUserTokens(chats: Chat[]): number { FILE: src/lib/ai/translate.ts function fetchAiTranslate (line 9) | async function fetchAiTranslate(text: string, targetLanguage: string): P... FILE: src/lib/ai/types.ts type OpenAIResult (line 1) | interface OpenAIResult { type Usage (line 11) | interface Usage { type OpenAIChoice (line 17) | interface OpenAIChoice { type Message (line 24) | interface Message { type AiModel (line 29) | interface AiModel { type GeminiResult (line 36) | interface GeminiResult { type GeminiCandidate (line 41) | interface GeminiCandidate { type SafetyRating (line 53) | interface SafetyRating { type PromptFeedback (line 58) | interface PromptFeedback { FILE: src/lib/ai/utils.ts function getPromptContent (line 10) | async function getPromptContent(): Promise { function getAISettings (line 31) | async function getAISettings(modelType?: string): Promise { function audioBufferToWav (line 30) | function audioBufferToWav(audioBuffer: AudioBuffer): Blob { function interleave (line 70) | function interleave(leftChannel: Float32Array, rightChannel: Float32Arra... function writeString (line 83) | function writeString(view: DataView, offset: number, string: string) { function floatTo16BitPCM (line 89) | function floatTo16BitPCM(view: DataView, offset: number, input: Float32A... FILE: src/lib/audio.ts function speakWithSystemVoice (line 9) | function speakWithSystemVoice( function stopSystemVoice (line 51) | function stopSystemVoice(): void { type AudioSpeechRequest (line 57) | interface AudioSpeechRequest { type AudioSpeechResponse (line 64) | interface AudioSpeechResponse { function resolveCurrentSpeechEngine (line 68) | function resolveCurrentSpeechEngine(task: SpeechTask) { function fetchAudioSpeech (line 82) | async function fetchAudioSpeech(text: string, customVoice?: string, cust... class AudioController (line 176) | class AudioController { method constructor (line 182) | constructor(onPlayingChange?: (playing: boolean) => void) { method playAudioBuffer (line 189) | async playAudioBuffer(audioBuffer: ArrayBuffer): Promise { method stop (line 234) | stop(): void { method cleanup (line 249) | private cleanup(): void { method getIsPlaying (line 261) | getIsPlaying(): boolean { function playAudioBuffer (line 269) | function playAudioBuffer(audioBuffer: ArrayBuffer): Promise { function textToSpeechAndPlay (line 278) | async function textToSpeechAndPlay( function stopCurrentAudio (line 352) | function stopCurrentAudio(): void { function getCurrentAudioPlayingState (line 364) | function getCurrentAudioPlayingState(): boolean { type AudioTranscriptionRequest (line 371) | interface AudioTranscriptionRequest { type AudioTranscriptionResponse (line 379) | interface AudioTranscriptionResponse { function transcribeRecording (line 385) | async function transcribeRecording(audioBlob: Blob): Promise { function fetchAudioTranscription (line 398) | async function fetchAudioTranscription(audioBlob: Blob): Promise { FILE: src/lib/bm25.ts type BM25Document (line 9) | interface BM25Document { type BM25Result (line 17) | interface BM25Result { class BM25Index (line 25) | class BM25Index { method constructor (line 36) | constructor(k1: number = 1.2, b: number = 0.75) { method tokenize (line 49) | private tokenize(text: string): string[] { method index (line 81) | index(documents: BM25Document[]): void { method calculateIDF (line 119) | private calculateIDF(N: number): void { method search (line 142) | search(query: string, limit: number = 10): BM25Result[] { method update (line 188) | update(document: BM25Document): void { method delete (line 202) | delete(docId: string): void { method size (line 223) | size(): number { method clear (line 230) | clear(): void { function initBM25Index (line 248) | function initBM25Index(documents: BM25Document[]): BM25Index { function getBM25Index (line 259) | function getBM25Index(): BM25Index | null { function clearBM25Index (line 266) | function clearBM25Index(): void { FILE: src/lib/check.ts function isMobileDevice (line 8) | function isMobileDevice() { function checkIsTauri (line 32) | function checkIsTauri(): boolean { FILE: src/lib/context/loader.ts type ContextResult (line 7) | interface ContextResult { class ContextLoader (line 15) | class ContextLoader { method cosineSimilarity (line 22) | private cosineSimilarity(vecA: number[], vecB: number[]): number { method getContextForQuery (line 47) | async getContextForQuery(query: string): Promise { method formatMemoriesForPrompt (line 115) | formatMemoriesForPrompt(context: ContextResult): string { method clearCache (line 137) | clearCache(): void { FILE: src/lib/default-filename.ts function generateUniqueFilename (line 10) | async function generateUniqueFilename(parentPath: string = '', baseName:... function generateCopyFilename (line 51) | async function generateCopyFilename(parentPath: string, originalName: st... function generateCopyFoldername (line 103) | async function generateCopyFoldername(parentPath: string, originalName: ... FILE: src/lib/editor-layout-styles.ts function getEditorContentContainerClass (line 1) | function getEditorContentContainerClass(options: { FILE: src/lib/emitter.ts type Events (line 6) | interface Events { FILE: src/lib/event-report.ts constant API_CONFIG (line 13) | const API_CONFIG = { type EventType (line 21) | enum EventType { type AppStartEventData (line 28) | interface AppStartEventData { type AppUpgradeDownloadEventData (line 37) | interface AppUpgradeDownloadEventData { type AppUpgradeUpgradeEventData (line 47) | interface AppUpgradeUpgradeEventData { type EventData (line 57) | type EventData = AppStartEventData | AppUpgradeDownloadEventData | AppUp... type ReportRequestBody (line 60) | interface ReportRequestBody { function generateRFC3339Timestamp (line 71) | function generateRFC3339Timestamp(): string { function generateNonce (line 79) | function generateNonce(): string { function generateSignature (line 89) | function generateSignature( function getVersionCode (line 106) | async function getVersionCode(): Promise { function getDeviceId (line 130) | async function getDeviceId(): Promise { function getDeviceInfo (line 143) | async function getDeviceInfo() { function reportEvent (line 167) | async function reportEvent( function reportAppStart (line 221) | async function reportAppStart(): Promise { function reportAppUpgradeDownload (line 245) | async function reportAppUpgradeDownload( function reportAppUpgradeUpgrade (line 272) | async function reportAppUpgradeUpgrade( FILE: src/lib/files.ts type MarkdownFile (line 5) | interface MarkdownFile { type LinkedFolder (line 21) | interface LinkedFolder { type LinkedResource (line 30) | type LinkedResource = MarkdownFile | LinkedFolder; function isLinkedFolder (line 33) | function isLinkedFolder(resource: LinkedResource): resource is LinkedFol... function collectMarkdownFiles (line 38) | async function collectMarkdownFiles(folderPath: string): Promise = {}) { method search (line 62) | async search(query: string): Promise { method searchParallel (line 96) | async searchParallel(query: string): Promise { FILE: src/lib/image-handler.ts type ImageUploadResult (line 9) | interface ImageUploadResult { function handleImageUpload (line 24) | async function handleImageUpload( function saveImageLocally (line 78) | async function saveImageLocally(file: File, markdownPath: string): Promi... function ensureDirectoryExists (line 137) | async function ensureDirectoryExists(dirPath: string): Promise { function isImageHostingConfigured (line 161) | async function isImageHostingConfigured(): Promise { function fileToBase64 (line 172) | function fileToBase64(file: File): Promise { FILE: src/lib/imageHosting/github.ts function createImageRepo (line 10) | async function createImageRepo(name: string, isPrivate?: boolean) { function checkImageRepoState (line 54) | async function checkImageRepoState(name: string) { function uploadImageByGithub (line 89) | async function uploadImageByGithub(file: File) { function getImageFiles (line 165) | async function getImageFiles({ path }: { path: string }) { FILE: src/lib/imageHosting/index.ts function uploadImage (line 7) | async function uploadImage(file: File) { FILE: src/lib/imageHosting/picgo.ts type PicgoImageHostingSetting (line 7) | interface PicgoImageHostingSetting { function uploadImageByPicgo (line 12) | async function uploadImageByPicgo(image: File) { function checkPicgoState (line 52) | async function checkPicgoState() { FILE: src/lib/imageHosting/s3.ts type S3Config (line 6) | interface S3Config { function generateSignature (line 17) | async function generateSignature( function sha256Hex (line 84) | async function sha256Hex(data: string): Promise { function hmacSha256 (line 92) | async function hmacSha256(key: CryptoKey, data: string): Promise { function uploadImageByS3 (line 281) | async function uploadImageByS3(file: File): Promise { FILE: src/lib/imageHosting/smms.ts constant BASE_URL (line 4) | const BASE_URL = 'https://sm.ms/api/v2' type SMMSImageHostingSetting (line 6) | interface SMMSImageHostingSetting { type SMMSUserInfo (line 10) | interface SMMSUserInfo { function uploadImageBySmms (line 22) | async function uploadImageBySmms(file: File) { function getUserInfo (line 50) | async function getUserInfo() { FILE: src/lib/infographic.ts type InfographicThemeMode (line 12) | type InfographicThemeMode = 'dark' | 'light'; type InfographicRenderOptions (line 14) | interface InfographicRenderOptions { constant INFOGRAPHIC_LANGUAGE (line 18) | const INFOGRAPHIC_LANGUAGE = 'infographic'; constant INFOGRAPHIC_CONTAINER_CLASS (line 19) | const INFOGRAPHIC_CONTAINER_CLASS = 'infographic-diagram'; constant INFOGRAPHIC_MIN_HEIGHT (line 20) | const INFOGRAPHIC_MIN_HEIGHT = 120; constant DATA_PROCESSED_ATTR (line 22) | const DATA_PROCESSED_ATTR = 'data-infographic-processed'; constant DATA_CODE_ATTR (line 23) | const DATA_CODE_ATTR = 'data-infographic-code'; constant DATA_THEME_ATTR (line 24) | const DATA_THEME_ATTR = 'data-infographic-theme'; constant DATA_RENDER_ID_ATTR (line 25) | const DATA_RENDER_ID_ATTR = 'data-infographic-render-id'; FILE: src/lib/mark-to-markdown.ts function markToMarkdown (line 6) | function markToMarkdown(mark: Mark): string { FILE: src/lib/markdown.ts function extractTitle (line 2) | function extractTitle(content: string) { FILE: src/lib/mcp/client.ts class MCPClient (line 17) | class MCPClient { method constructor (line 22) | constructor(config: MCPServerConfig) { method connect (line 29) | async connect(): Promise { method connectStdio (line 40) | private async connectStdio(): Promise { method connectHttp (line 56) | private async connectHttp(): Promise { method initialize (line 67) | async initialize(): Promise { method listTools (line 84) | async listTools(): Promise { method callTool (line 109) | async callTool(name: string, args: any = {}): Promise { method listResources (line 125) | async listResources(): Promise { method readResource (line 137) | async readResource(uri: string): Promise { method disconnect (line 149) | async disconnect(): Promise { method sendRequest (line 163) | private async sendRequest(method: string, params: any): Promise { method sendStdioRequest (line 181) | private async sendStdioRequest(request: JSONRPCRequest): Promise { method sendHttpRequest (line 203) | private async sendHttpRequest(request: JSONRPCRequest): Promise { FILE: src/lib/mcp/init.ts function initMcp (line 8) | async function initMcp() { function cleanupMcp (line 26) | async function cleanupMcp() { FILE: src/lib/mcp/integration.ts class MCPIntegration (line 10) | class MCPIntegration { method constructor (line 13) | private constructor() {} method getInstance (line 15) | static getInstance(): MCPIntegration { method initialize (line 26) | async initialize(): Promise { method handleToolCall (line 35) | async handleToolCall( method cleanup (line 80) | async cleanup(): Promise { FILE: src/lib/mcp/runtime-assistant.ts type MCPRuntimeKind (line 3) | type MCPRuntimeKind = type MCPInstallRecipe (line 11) | interface MCPInstallRecipe { type MCPRuntimeCheckResult (line 20) | interface MCPRuntimeCheckResult { type MCPRuntimeInspection (line 28) | interface MCPRuntimeInspection { type MCPRuntimeInstallResult (line 35) | interface MCPRuntimeInstallResult { type MCPCancelInstallResult (line 43) | interface MCPCancelInstallResult { type MCPInstallProgressStage (line 48) | type MCPInstallProgressStage = type MCPInstallProgressEvent (line 55) | interface MCPInstallProgressEvent { function inspectMcpRuntime (line 63) | async function inspectMcpRuntime(command: string, args: string[] = []): ... function installMcpRuntime (line 67) | async function installMcpRuntime(recipeId: string): Promise { method disconnectServer (line 102) | async disconnectServer(serverId: string): Promise { method reconnectServer (line 121) | async reconnectServer(config: MCPServerConfig): Promise { method connectEnabledServers (line 126) | async connectEnabledServers(servers: MCPServerConfig[]): Promise { method getServerTools (line 143) | getServerTools(serverId: string): MCPTool[] { method getAllTools (line 152) | getAllTools(): Map { method callTool (line 171) | async callTool( method getServerResources (line 187) | getServerResources(serverId: string): MCPResource[] { method readResource (line 196) | async readResource(serverId: string, uri: string): Promise { method disconnectAll (line 208) | async disconnectAll(): Promise { method testConnection (line 219) | async testConnection(config: MCPServerConfig): Promise { method testConnections (line 267) | async testConnections(configs: MCPServerConfig[]): Promise { FILE: src/lib/outline-preferences.ts type OutlinePosition (line 1) | type OutlinePosition = 'left' | 'right' constant DEFAULT_OUTLINE_POSITION (line 3) | const DEFAULT_OUTLINE_POSITION: OutlinePosition = 'right' function normalizeOutlinePosition (line 5) | function normalizeOutlinePosition(value: unknown): OutlinePosition { function isOutlineOnLeft (line 9) | function isOutlineOnLeft(position: OutlinePosition): boolean { FILE: src/lib/outline-styles.ts function getOutlinePanelClass (line 1) | function getOutlinePanelClass(position: 'left' | 'right' = 'right') { function getOutlineHeadingTextClass (line 5) | function getOutlineHeadingTextClass() { FILE: src/lib/path.ts function computedParentPath (line 4) | function computedParentPath(item: DirTree) { function getCurrentFolder (line 18) | function getCurrentFolder(path: string, fileTree: DirTree[]) { FILE: src/lib/pdf.ts function isTextItem (line 12) | function isTextItem(item: any): item is { str: string; transform: number... function ocrPage (line 19) | async function ocrPage(canvas: HTMLCanvasElement, pageNum: number): Prom... function extractTextFromPDF (line 47) | async function extractTextFromPDF( function extractTextWithOCR (line 145) | async function extractTextWithOCR( function extractTextFromPDFFile (line 185) | async function extractTextFromPDFFile(file: File): Promise { function getPDFInfo (line 220) | async function getPDFInfo(filePath: string): Promise<{ numPages: number ... function getPDFInfoFromFile (line 242) | async function getPDFInfoFromFile(file: File): Promise<{ numPages: numbe... FILE: src/lib/rag.ts function handleRAGError (line 28) | function handleRAGError(error: unknown, context: string, showToast: bool... function generateContentHash (line 44) | function generateContentHash(content: string): string { function runWithConcurrencyLimit (line 51) | async function runWithConcurrencyLimit( function chunkText (line 96) | function chunkText( function initBM25Search (line 181) | async function initBM25Search(): Promise { constant STOP_WORDS (line 203) | const STOP_WORDS = new Set([ constant SYNONYM_DICT (line 221) | const SYNONYM_DICT: Record = { function isStopWord (line 249) | function isStopWord(keyword: string): boolean { type QueryVariant (line 257) | interface QueryVariant { function expandWithSynonyms (line 269) | function expandWithSynonyms(query: string, maxVariants: number = 3): Que... function transformQueries (line 315) | function transformQueries( function expandWithSentenceWindow (line 353) | async function expandWithSentenceWindow( function searchWithBM25 (line 432) | async function searchWithBM25(query: string, limit: number = 10): Promis... function processMarkdownFile (line 445) | async function processMarkdownFile( function getWorkspaceFiles (line 518) | async function getWorkspaceFiles(): Promise { function processAllMarkdownFiles (line 574) | async function processAllMarkdownFiles(onProgress?: (current: number, to... function getFilePath (line 654) | async function getFilePath(item: DirTree): Promise { type SearchItem (line 676) | interface SearchItem { type FuzzySearchResult (line 694) | interface FuzzySearchResult { function collectMarkdownContents (line 708) | async function collectMarkdownContents(): Promise { type SearchResult (line 762) | interface SearchResult { type Keyword (line 775) | interface Keyword { type RagSource (line 783) | interface RagSource { function getContextForQuery (line 794) | async function getContextForQuery(keywords: Keyword[]): Promise<{ type NormalizationConfig (line 1081) | interface NormalizationConfig { function normalizeScore (line 1092) | function normalizeScore( function calculateHybridScore (line 1135) | function calculateHybridScore( function mergeResultsByDocument (line 1176) | function mergeResultsByDocument( function calculateContentOverlap (line 1258) | function calculateContentOverlap(content1: string, content2: string): nu... function handleFileUpdate (line 1281) | async function handleFileUpdate(filePath: string, content: string): Prom... function checkEmbeddingModelAvailable (line 1294) | async function checkEmbeddingModelAvailable(): Promise { function showVectorProcessingToast (line 1308) | function showVectorProcessingToast(message: string) { function collectMarkdownContentsInFolder (line 1318) | async function collectMarkdownContentsInFolder(folderPath: string): Prom... function getContextForQueryInFolder (line 1394) | async function getContextForQueryInFolder( FILE: src/lib/record-navigation.ts function handleRecordComplete (line 9) | function handleRecordComplete(router?: any) { FILE: src/lib/search-utils.ts type SearchMatch (line 1) | interface SearchMatch { type SearchableItem (line 8) | interface SearchableItem { type SearchResult (line 15) | interface SearchResult { function findExactMatches (line 26) | function findExactMatches(text: string, query: string): SearchMatch[] { function findFuzzyMatches (line 54) | function findFuzzyMatches(text: string, query: string): SearchMatch[] { function calculateScore (line 100) | function calculateScore( function generateHighlight (line 125) | function generateHighlight(text: string, matches: SearchMatch[], maxLeng... function search (line 146) | function search( FILE: src/lib/shortcut/quick-record-text.ts function initQuickRecordText (line 4) | function initQuickRecordText() { FILE: src/lib/shortcut/show-window.ts function initShowWindow (line 4) | function initShowWindow() { FILE: src/lib/skills/dependency-installer.ts type DependencyInfo (line 13) | interface DependencyInfo { type InstallResult (line 23) | interface InstallResult { type DependencyInstallRequest (line 30) | interface DependencyInstallRequest { constant MODULE_TO_PACKAGE (line 40) | const MODULE_TO_PACKAGE: Record { function detectNodePackageManager (line 132) | async function detectNodePackageManager(workingDirectory: string): Promi... function detectPythonCommand (line 154) | async function detectPythonCommand(preferred: string): Promise { method reload (line 72) | async reload(): Promise { method discoverSkills (line 86) | async discoverSkills(): Promise { method discoverProjectSkills (line 97) | private async discoverProjectSkills(): Promise { method discoverGlobalSkills (line 121) | private async discoverGlobalSkills(): Promise { method loadSkillFromDirectory (line 145) | private async loadSkillFromDirectory( method loadScriptsFromDirectory (line 333) | private async loadScriptsFromDirectory( method loadReferencesFromDirectory (line 400) | private async loadReferencesFromDirectory( method loadAssetsFromDirectory (line 444) | private async loadAssetsFromDirectory( method loadRootMdFiles (line 507) | private async loadRootMdFiles( method registerSkill (line 555) | registerSkill(skill: SkillContent): void { method unregisterSkill (line 562) | unregisterSkill(skillId: string): void { method getAllSkills (line 574) | getAllSkills(): SkillContent[] { method getSkillsByScope (line 581) | getSkillsByScope(scope: SkillScope): SkillContent[] { method getEnabledSkills (line 590) | async getEnabledSkills(): Promise { method getUserInvocableSkills (line 599) | getUserInvocableSkills(): SkillContent[] { method getSkill (line 608) | getSkill(id: string): SkillContent | undefined { method hasSkill (line 615) | hasSkill(id: string): boolean { method getSkillScripts (line 622) | getSkillScripts(skillId: string): SkillScript[] { method getSkillReferences (line 630) | getSkillReferences(skillId: string): SkillReference[] { method getSkillAssets (line 638) | getSkillAssets(skillId: string): SkillAsset[] { method matchRelevantSkills (line 654) | async matchRelevantSkills( method calculateMatchScore (line 681) | private calculateMatchScore( method extractKeywords (line 722) | private extractKeywords(description: string): string[] { method hasSemanticOverlap (line 760) | private hasSemanticOverlap(text1: string, text2: string): boolean { method validateSkill (line 782) | validateSkill(content: string): { valid: boolean; errors: string[] } { method fileExists (line 806) | private async fileExists( method directoryExists (line 828) | private async directoryExists( method listSkillDirectories (line 838) | private async listSkillDirectories( method readFileContent (line 873) | private async readFileContent( method getSkillFileInfo (line 891) | getSkillFileInfo(id: string): SkillFileInfo | undefined { method getAllSkillFileInfo (line 898) | getAllSkillFileInfo(): SkillFileInfo[] { function resetSkillManager (line 910) | function resetSkillManager(): void { FILE: src/lib/skills/parser.ts function parseSkillFile (line 26) | function parseSkillFile(content: string): ParsedSkillFile { function parseYamlMetadata (line 64) | function parseYamlMetadata(yamlContent: string): SkillYamlMetadata { function parseValue (line 212) | function parseValue(value: string): string { function parseAllowedTools (line 235) | function parseAllowedTools(value: string): string[] { function parseBoolean (line 266) | function parseBoolean(value: string): boolean { function serializeSkillFile (line 282) | function serializeSkillFile( function generateSkillId (line 352) | function generateSkillId(directoryName: string): string { function isValidSkillId (line 371) | function isValidSkillId(id: string): boolean { function isValidSkillName (line 390) | function isValidSkillName(name: string): boolean { function isValidSkillDescription (line 410) | function isValidSkillDescription(description: string): boolean { function detectScriptType (line 421) | function detectScriptType(filename: string, content?: string): ScriptTyp... function extractReferenceLinks (line 453) | function extractReferenceLinks(content: string): string[] { function extractScriptReferences (line 473) | function extractScriptReferences(content: string): string[] { FILE: src/lib/skills/path-utils.ts function resolveSkillDirectory (line 18) | async function resolveSkillDirectory( function resolveScriptRelativePath (line 54) | function resolveScriptRelativePath( function escapeShellArg (line 86) | function escapeShellArg(arg: string): string { function buildShellCommand (line 106) | function buildShellCommand( FILE: src/lib/skills/runtime-paths.ts type ClassifiedSkillScriptPath (line 1) | interface ClassifiedSkillScriptPath { function hasScriptExtension (line 6) | function hasScriptExtension(filePath: string): boolean { function classifySkillScriptPath (line 10) | function classifySkillScriptPath(arg: string): ClassifiedSkillScriptPath { FILE: src/lib/skills/runtime.ts type SkillRuntimeContext (line 10) | interface SkillRuntimeContext { type SkillExecutionRequest (line 22) | interface SkillExecutionRequest { type SkillExecutionData (line 29) | interface SkillExecutionData { type SkillExecutionOutcome (line 42) | interface SkillExecutionOutcome { constant OUTPUT_FILE_EXTENSIONS (line 49) | const OUTPUT_FILE_EXTENSIONS = new Set([ constant SCRIPT_FILE_EXTENSIONS (line 65) | const SCRIPT_FILE_EXTENSIONS = new Set(['js', 'mjs', 'cjs', 'py', 'sh', ... function getExtension (line 67) | function getExtension(filePath: string): string { function isScriptLikeFile (line 73) | function isScriptLikeFile(filePath: string): boolean { function isOutputLikeFile (line 77) | function isOutputLikeFile(filePath: string): boolean { function isAbsolutePath (line 81) | function isAbsolutePath(filePath: string): boolean { function isSkillBuiltInPath (line 85) | function isSkillBuiltInPath(filePath: string): boolean { function isSafeRelativePath (line 89) | function isSafeRelativePath(filePath: string): boolean { function toPosixPath (line 93) | function toPosixPath(filePath: string): string { function pathExists (line 97) | async function pathExists(filePath: string, baseDir?: BaseDirectory): Pr... function ensureDir (line 105) | async function ensureDir(dir: string, baseDir?: BaseDirectory): Promise<... function resolveWritableRuntimeDir (line 115) | async function resolveWritableRuntimeDir( function resolveContext (line 131) | async function resolveContext(skillId: string): Promise = { constant SCRIPT_SHEBANG (line 313) | const SCRIPT_SHEBANG: Record = { FILE: src/lib/skills/utils.ts function isSkillsFolder (line 19) | function isSkillsFolder(folderName: string): boolean { function isInSkillsFolder (line 26) | function isInSkillsFolder(path: string): boolean { function isInSkillSubdirectory (line 37) | function isInSkillSubdirectory(path: string): { function getSkillsFolderIcon (line 90) | function getSkillsFolderIcon(): string { function shouldHideKnowledgeBaseOptions (line 97) | function shouldHideKnowledgeBaseOptions(folderName: string, filePath: st... function filterKnowledgeBaseMenuItems (line 104) | function filterKnowledgeBaseMenuItems( function extractSkillIdFromPath (line 124) | function extractSkillIdFromPath(path: string): string | null { function isSkillSubfolder (line 146) | function isSkillSubfolder(path: string): boolean { function isSkillFile (line 153) | function isSkillFile(fileName: string): boolean { function getSkillDirectoryStructure (line 161) | function getSkillDirectoryStructure(): { function formatSkillList (line 191) | function formatSkillList(skills: Array<{ id: string; name: string; descr... function validateSkillDirectoryStructure (line 211) | function validateSkillDirectoryStructure(files: string[]): { function getMigrationGuide (line 266) | function getMigrationGuide(): { function getSkillTemplate (line 307) | function getSkillTemplate(skillName: string, description: string): string { FILE: src/lib/skills/validator.ts function validateSkillYamlMetadata (line 31) | function validateSkillYamlMetadata(metadata: SkillYamlMetadata): Validat... function validateSkillContent (line 156) | function validateSkillContent(skill: SkillContent): ValidationResult { function validateSkillId (line 233) | function validateSkillId(id: string): boolean { function isValidVersion (line 247) | function isValidVersion(version: string): boolean { function isValidToolName (line 257) | function isValidToolName(toolName: string): boolean { function formatValidationResult (line 273) | function formatValidationResult(result: ValidationResult): string { function getValidationSummary (line 305) | function getValidationSummary(result: ValidationResult): string { FILE: src/lib/speech/capabilities.ts function getSpeechCapabilities (line 3) | function getSpeechCapabilities({ audioModel, sttModel }: SpeechCapabilit... FILE: src/lib/speech/preferences.ts function normalizeSpeechMode (line 3) | function normalizeSpeechMode(value: unknown): SpeechMode { FILE: src/lib/speech/resolver.ts function getAvailability (line 3) | function getAvailability(task: SpeechTask, capabilities: SpeechCapabilit... function resolveSpeechEngine (line 17) | function resolveSpeechEngine( FILE: src/lib/speech/runtime.ts type SpeechPreferenceInput (line 5) | interface SpeechPreferenceInput extends SpeechCapabilityInput { function resolvePreferredSpeechEngine (line 10) | function resolvePreferredSpeechEngine( function shouldFallbackToModelAfterLocalFailure (line 21) | function shouldFallbackToModelAfterLocalFailure(settings: SpeechPreferen... FILE: src/lib/speech/transcription-fallback.ts constant NO_TRANSCRIPTION_MESSAGE (line 1) | const NO_TRANSCRIPTION_MESSAGE = 'No transcription. Configure a speech r... function getTranscriptionFallbackMessage (line 3) | function getTranscriptionFallbackMessage(sttModel: string): string { FILE: src/lib/speech/types.ts type SpeechTask (line 1) | type SpeechTask = 'tts' | 'stt' type SpeechMode (line 3) | type SpeechMode = 'auto' | 'local' | 'model' type SpeechEngine (line 5) | type SpeechEngine = 'local' | 'model' type SpeechCapabilities (line 7) | interface SpeechCapabilities { type SpeechCapabilityInput (line 14) | interface SpeechCapabilityInput { type SpeechEngineResolution (line 19) | interface SpeechEngineResolution { FILE: src/lib/sync/auto-sync.ts function getStore (line 34) | async function getStore(): Promise { function getGitlabBranch (line 44) | async function getGitlabBranch(): Promise { function getGiteaBranch (line 52) | async function getGiteaBranch(): Promise { function getLocalRecordedSha (line 60) | async function getLocalRecordedSha(filePath: string): Promise { function getLocalFileMetadata (line 107) | async function getLocalFileMetadata(path: string): Promise { function getRemoteFileInfo (line 160) | async function getRemoteFileInfo(path: string): Promise<{ sha?: string; ... function compareFileVersions (line 248) | async function compareFileVersions(path: string): Promise { function pullRemoteFile (line 392) | async function pullRemoteFile(path: string): Promise { function ensureDirectoryExists (line 467) | async function ensureDirectoryExists(filePath: string): Promise { function saveLocalFile (line 508) | async function saveLocalFile(path: string, content: string): Promise { function compareS3FileVersions (line 874) | async function compareS3FileVersions(path: string): Promise { function compareWebDAVFileVersions (line 959) | async function compareWebDAVFileVersions(path: string): Promise { function getUserName (line 41) | async function getUserName(): Promise { function checkFileLock (line 49) | async function checkFileLock(filePath: string): Promise { function acquireFileLock (line 80) | async function acquireFileLock(filePath: string): Promise { function releaseFileLock (line 117) | async function releaseFileLock(filePath: string): Promise { function detectAndHandleConflict (line 138) | async function detectAndHandleConflict( function analyzeConflictType (line 186) | function analyzeConflictType(localContent: string, remoteContent: string... function analyzeConflictTypeExported (line 212) | function analyzeConflictTypeExported(localContent: string, remoteContent... function resolveConflict (line 224) | async function resolveConflict( function promptUserForResolution (line 244) | async function promptUserForResolution( function mergeSimpleContent (line 272) | function mergeSimpleContent(localContent: string, remoteContent: string)... function cleanupExpiredLocks (line 306) | async function cleanupExpiredLocks(): Promise { function getFileSyncStatus (line 331) | async function getFileSyncStatus(filePath: string): Promise<{ function updateFileSyncTime (line 355) | async function updateFileSyncTime(filePath: string): Promise { function getFileRestoreTime (line 367) | async function getFileRestoreTime(filePath: string): Promise { FILE: src/lib/sync/encode-fetch.ts constant ERROR_REQUEST_CANCELLED (line 4) | const ERROR_REQUEST_CANCELLED = 'Request canceled'; function fetch (line 6) | async function fetch(input: string, init?: RequestInit & ClientOptions) { FILE: src/lib/sync/filename-utils.ts function sanitizeFileName (line 6) | function sanitizeFileName(fileName: string): string { function sanitizeFilePath (line 52) | function sanitizeFilePath(filePath: string): string { function hasInvalidFileNameChars (line 68) | function hasInvalidFileNameChars(fileName: string): boolean { function getSafeFileName (line 80) | function getSafeFileName(originalFileName: string): string { FILE: src/lib/sync/folder-sync-helper.ts function getFolderSync (line 8) | function getFolderSync(): FolderSync { function syncFolderByItem (line 15) | async function syncFolderByItem(item: DirTree): Promise { function showFolderSyncToast (line 21) | function showFolderSyncToast(result: FolderSyncResult) { FILE: src/lib/sync/folder-sync.ts type FolderSyncResult (line 12) | interface FolderSyncResult { class FolderSync (line 21) | class FolderSync { method constructor (line 24) | constructor() { method init (line 31) | private async init() { method syncFolder (line 36) | async syncFolder(localFolderPath: string): Promise { method _getGithubTreeFiles (line 153) | async _getGithubTreeFiles( method _githubBatchCommit (line 191) | async _githubBatchCommit( method _getGiteeFiles (line 279) | async _getGiteeFiles(repo: string, path: string = ''): Promise { function getCommonHeaders (line 46) | async function getCommonHeaders(): Promise { function getProxyConfig (line 63) | async function getProxyConfig(): Promise { function uploadFile (line 73) | async function uploadFile({ function updateFileContent (line 232) | async function updateFileContent({ function getFiles (line 272) | async function getFiles({ path, repo, sha }: { path: string; repo: strin... function deleteFile (line 351) | async function deleteFile({ path, sha, repo }: { path: string; sha?: str... function getFileCommits (line 417) | async function getFileCommits({ path, repo }: { path: string; repo: stri... function getFileContentFromCommit (line 464) | async function getFileContentFromCommit({ path, ref, repo }: { path: str... function getFileContent (line 545) | async function getFileContent({ path, ref, repo }: { path: string; ref: ... function getUserInfo (line 605) | async function getUserInfo(token?: string): Promise { function checkSyncRepoState (line 657) | async function checkSyncRepoState(name: string): Promise = { type GiteaError (line 32) | interface GiteaError { type GiteaUserInfo (line 38) | interface GiteaUserInfo { type GiteaRepositoryInfo (line 63) | interface GiteaRepositoryInfo { type GiteaFileContent (line 141) | interface GiteaFileContent { type GiteaDirectoryItem (line 161) | interface GiteaDirectoryItem { type GiteaCommit (line 179) | interface GiteaCommit { type GiteaResponse (line 238) | type GiteaResponse = { FILE: src/lib/sync/gitee.ts type GiteeResponse (line 10) | type GiteeResponse = { function fileToBase64 (line 17) | async function fileToBase64(file: File) { type GiteeError (line 31) | interface GiteeError { type GiteeRepoInfo (line 37) | interface GiteeRepoInfo { type GiteeFile (line 102) | interface GiteeFile { type Links (line 115) | interface Links { function looksLikeFilePath (line 120) | function looksLikeFilePath(path?: string) { function uploadFile (line 125) | async function uploadFile( function getFiles (line 231) | async function getFiles({ path, repo, ref }: { path: string, repo: strin... function deleteFile (line 286) | async function deleteFile({ path, sha, repo }: { path: string, sha: stri... function getFileCommits (line 340) | async function getFileCommits({ path, repo }: { path: string, repo: stri... function getUserInfo (line 379) | async function getUserInfo() { function checkSyncRepoState (line 423) | async function checkSyncRepoState(name: string) { function createSyncRepo (line 471) | async function createSyncRepo(name: string, isPrivate?: boolean) { FILE: src/lib/sync/github.ts function uint8ArrayToBase64 (line 8) | function uint8ArrayToBase64(data: Uint8Array) { function fileToBase64 (line 13) | async function fileToBase64(file: File) { type GithubFile (line 26) | interface GithubFile { type Links (line 40) | interface Links { function uploadFile (line 46) | async function uploadFile( function getFiles (line 115) | async function getFiles({ path, repo, ref }: { path: string, repo: strin... function deleteFile (line 173) | async function deleteFile( function getFileCommits (line 230) | async function getFileCommits({ path, repo }: { path: string, repo: stri... function getUserInfo (line 279) | async function getUserInfo(token?: string) { function checkSyncRepoState (line 320) | async function checkSyncRepoState(name: string) { function createSyncRepo (line 356) | async function createSyncRepo(name: string, isPrivate?: boolean) { function getRelease (line 400) | async function getRelease() { FILE: src/lib/sync/github.types.ts type RepoNames (line 1) | enum RepoNames { type GithubError (line 6) | interface GithubError { type UserInfo (line 12) | interface UserInfo { type ResCommit (line 49) | interface ResCommit { type Parent (line 61) | interface Parent { type Author2 (line 67) | interface Author2 { type Commit (line 89) | interface Commit { type Verification (line 99) | interface Verification { type Tree (line 107) | interface Tree { type Author (line 112) | interface Author { type GithubContent (line 118) | interface GithubContent { type Links (line 131) | interface Links { type GithubRepoInfo (line 137) | interface GithubRepoInfo { type Permissions (line 234) | interface Permissions { type Owner (line 242) | interface Owner { type SyncStateEnum (line 264) | enum SyncStateEnum { type OctokitResponse (line 272) | type OctokitResponse = { FILE: src/lib/sync/gitlab.ts function getGitlabApiBaseUrl (line 19) | async function getGitlabApiBaseUrl(): Promise { function getCommonHeaders (line 46) | async function getCommonHeaders(): Promise { function getProxyConfig (line 63) | async function getProxyConfig(): Promise { function uploadFile (line 73) | async function uploadFile({ function getFiles (line 260) | async function getFiles({ path, repo }: { path: string; repo: string }) { function deleteFile (line 357) | async function deleteFile({ path, repo }: { path: string; sha?: string; ... function getFileCommits (line 424) | async function getFileCommits({ path, repo }: { path: string; repo: stri... function getFileContent (line 466) | async function getFileContent({ path, ref, repo }: { path: string; ref: ... function getUserInfo (line 525) | async function getUserInfo(token?: string): Promise { function checkSyncProjectState (line 577) | async function checkSyncProjectState(name: string): Promise... type GitlabError (line 39) | interface GitlabError { type GitlabUserInfo (line 45) | interface GitlabUserInfo { type GitlabProjectInfo (line 64) | interface GitlabProjectInfo { type GitlabFile (line 118) | interface GitlabFile { type GitlabRepositoryFile (line 132) | interface GitlabRepositoryFile { type GitlabCommit (line 141) | interface GitlabCommit { type GitlabResponse (line 159) | type GitlabResponse = { FILE: src/lib/sync/remote-file.ts function normalizeSegment (line 1) | function normalizeSegment(segment: string) { function encodePath (line 5) | function encodePath(path: string) { function buildRepoContentPath (line 13) | function buildRepoContentPath({ function buildRepoContentsEndpoint (line 39) | function buildRepoContentsEndpoint(path?: string) { type RemoteDirectoryEntry (line 47) | type RemoteDirectoryEntry = { function pickNestedFileEntry (line 54) | function pickNestedFileEntry(entries: RemoteDirectoryEntry[], requestedP... function getRemoteFileContent (line 71) | function getRemoteFileContent(file: unknown, path: string) { function decodeBase64ToString (line 88) | function decodeBase64ToString(content: unknown) { FILE: src/lib/sync/repo-utils.ts function getActualRepoName (line 10) | async function getActualRepoName( function getSyncRepoName (line 52) | async function getSyncRepoName(platform: 'github' | 'gitee' | 'gitlab' |... function getImageRepoName (line 60) | async function getImageRepoName(): Promise { FILE: src/lib/sync/s3.ts function generateSignature (line 11) | async function generateSignature( function sha256Hex (line 85) | async function sha256Hex(data: string): Promise { function hmacSha256 (line 93) | async function hmacSha256(key: CryptoKey, data: string): Promise { function getGiteaBranch (line 30) | async function getGiteaBranch(): Promise { function getS3Config (line 38) | async function getS3Config(): Promise { function getWebDAVConfig (line 50) | async function getWebDAVConfig(): Promise { type SyncConfig (line 60) | interface SyncConfig { type SyncState (line 77) | interface SyncState { type SyncResult (line 86) | interface SyncResult { type SyncLog (line 94) | interface SyncLog { class SyncManager (line 103) | class SyncManager { method constructor (line 115) | constructor() { method loadConfig (line 122) | async loadConfig(): Promise { method saveConfig (line 151) | async saveConfig(): Promise { method updateConfig (line 164) | async updateConfig(config: Partial): Promise { method getConfig (line 172) | getConfig(): SyncConfig { method getState (line 179) | getState(): SyncState { method getCurrentPlatform (line 186) | async getCurrentPlatform(): Promise { method calculateSha (line 194) | async calculateSha(content: string): Promise { method getLocalSha (line 201) | async getLocalSha(path: string): Promise { method getRemoteSha (line 209) | async getRemoteSha(path: string): Promise { method pushFile (line 217) | async pushFile(path: string, content: string): Promise { method pullFile (line 306) | async pullFile(path: string): Promise { method deleteRemoteFile (line 396) | async deleteRemoteFile(path: string): Promise { method resolveConflict (line 466) | async resolveConflict(path: string, strategy: 'ask' | 'local' | 'remot... method syncFile (line 515) | async syncFile(path: string, options: { method onSave (line 592) | async onSave(path: string): Promise { method onOpen (line 625) | async onOpen(path: string): Promise<{ updated: boolean; content?: stri... method processSyncQueue (line 674) | private async processSyncQueue(): Promise { method syncAll (line 706) | async syncAll(paths: string[]): Promise { method logSync (line 720) | private async logSync(filePath: string, action: 'push' | 'pull' | 'del... method getLogs (line 747) | async getLogs(limit?: number): Promise { method clearLogs (line 760) | async clearLogs(): Promise { method getFileSyncStatus (line 772) | async getFileSyncStatus(path: string): Promise { function getSyncManager (line 799) | function getSyncManager(): SyncManager { function syncOnSave (line 807) | async function syncOnSave(path: string): Promise { function syncOnOpen (line 812) | async function syncOnOpen(path: string): Promise<{ updated: boolean; con... function syncSingleFile (line 817) | async function syncSingleFile(path: string, onConflict?: (local: string,... function isSyncConfigured (line 826) | async function isSyncConfigured(): Promise { FILE: src/lib/sync/sync-push-queue.ts function getS3Config (line 17) | async function getS3Config(): Promise { function getWebDAVConfig (line 29) | async function getWebDAVConfig(): Promise { function getProxyConfig (line 41) | async function getProxyConfig(): Promise<{ all: string } | undefined> { type PushTask (line 47) | interface PushTask { class SyncPushQueue (line 63) | class SyncPushQueue { method IDLE_THRESHOLD (line 69) | private get IDLE_THRESHOLD(): number { method init (line 87) | init() { method initListeners (line 93) | private initListeners() { method removeListeners (line 122) | private removeListeners() { method addTask (line 145) | addTask(path: string) { method scheduleFlush (line 173) | private scheduleFlush() { method flush (line 203) | private async flush() { method pushToRemote (line 249) | private async pushToRemote(path: string): Promise<{ success: boolean; ... method getRemoteSha (line 524) | private async getRemoteSha(path: string): Promise { method forcePush (line 537) | async forcePush(path: string): Promise<{ success: boolean; sha?: strin... method generateCommitMessage (line 688) | private async generateCommitMessage(path: string, content: string): Pr... method clear (line 706) | clear() { function getSyncPushQueue (line 718) | function getSyncPushQueue(): SyncPushQueue { FILE: src/lib/sync/webdav.ts function buildAuthHeader (line 12) | function buildAuthHeader(username: string, password: string): string { function buildWebDAVUrl (line 19) | function buildWebDAVUrl(config: WebDAVConfig, key: string): string { function testWebDAVConnection (line 29) | async function testWebDAVConnection(config: WebDAVConfig, proxy?: Proxy)... function ensureParentDirsExist (line 51) | async function ensureParentDirsExist( function webdavUpload (line 84) | async function webdavUpload( function webdavDownload (line 125) | async function webdavDownload( function webdavDelete (line 163) | async function webdavDelete(config: WebDAVConfig, key: string, proxy?: P... function webdavHeadObject (line 185) | async function webdavHeadObject( function webdavListObjects (line 223) | async function webdavListObjects( function parsePropfindResponse (line 263) | function parsePropfindResponse( function webdavMkcol (line 336) | async function webdavMkcol( FILE: src/lib/template-range-utils.ts function getTemplateRangeLabel (line 9) | function getTemplateRangeLabel(range: GenTemplateRange, t: (key: string)... function getTemplateRangeOptions (line 30) | function getTemplateRangeOptions(t: (key: string) => string) { FILE: src/lib/theme-utils.ts function hslToCssValue (line 6) | function hslToCssValue(hsl: HSLValue): string { function applyThemeColors (line 16) | function applyThemeColors(colors: CustomThemeColors): void { function removeThemeColors (line 59) | function removeThemeColors(): void { function hexToHsl (line 86) | function hexToHsl(hex: string): HSLValue | null { function hslToHex (line 137) | function hslToHex(hsl: HSLValue): string { FILE: src/lib/toolbar-shortcuts.ts type Platform (line 1) | type Platform = 'macos' | 'windows' | 'linux' | 'unknown' type ToolbarShortcutEventLike (line 3) | interface ToolbarShortcutEventLike { function resolveToolbarShortcutIndex (line 12) | function resolveToolbarShortcutIndex( FILE: src/lib/utils.ts function cn (line 7) | function cn(...inputs: ClassValue[]) { function convertImage (line 11) | async function convertImage(path: string) { function convertImageByWorkspace (line 17) | async function convertImageByWorkspace(path: string) { function convertBytesToSize (line 28) | function convertBytesToSize(bytes: number) { function arrayBuffer2String (line 37) | function arrayBuffer2String(buffer: ArrayBuffer) { function scrollToBottom (line 42) | function scrollToBottom() { FILE: src/lib/vector-document-key.js function getVectorDocumentKey (line 1) | function getVectorDocumentKey(filePath) { function buildVectorIndexedMap (line 5) | function buildVectorIndexedMap(vectorDocuments) { FILE: src/lib/workspace.ts function getWorkspacePath (line 10) | async function getWorkspacePath(): Promise<{ path: string, isCustom: boo... function getFilePathOptions (line 35) | async function getFilePathOptions(relativePath: string): Promise<{ path:... function getDefaultArticleAbsolutePath (line 56) | async function getDefaultArticleAbsolutePath(relativePath: string): Prom... function getGenericPathOptions (line 74) | async function getGenericPathOptions(path: string, prefix?: string): Pro... function toWorkspaceRelativePath (line 111) | async function toWorkspaceRelativePath(path: string): Promise { function normalizeWorkspaceRelativePath (line 137) | async function normalizeWorkspaceRelativePath(relativePath: string): Pro... FILE: src/stores/article.ts function getStore (line 29) | async function getStore(): Promise { type SortType (line 36) | type SortType = 'name' | 'created' | 'modified' | 'none' type SortDirection (line 37) | type SortDirection = 'asc' | 'desc' type DirTree (line 39) | interface DirTree extends DirEntry { type Article (line 52) | interface Article { function isLikelyFilePath (line 72) | function isLikelyFilePath(path: string): boolean { function getFolderPathsToExpand (line 77) | function getFolderPathsToExpand(path: string): string[] { function createLocalTreeNode (line 84) | function createLocalTreeNode(name: string, isDirectory: boolean, parent?... function insertNodeIntoTree (line 100) | function insertNodeIntoTree(tree: DirTree[], relativePath: string, isDir... function removeNodeFromTree (line 129) | function removeNodeFromTree(tree: DirTree[], relativePath: string): DirT... function attachNodeToTree (line 154) | function attachNodeToTree(tree: DirTree[], relativePath: string, node: D... type NoteState (line 183) | interface NoteState { function loadFolderChildren (line 803) | async function loadFolderChildren(workspace: any, folder: DirTree, paren... FILE: src/stores/chat.ts type PendingQuote (line 18) | interface PendingQuote { type McpToolCall (line 30) | interface McpToolCall { type ChatState (line 42) | interface ChatState { FILE: src/stores/clipboard.ts type ClipboardItem (line 3) | interface ClipboardItem { type ClipboardOperation (line 11) | type ClipboardOperation = 'copy' | 'cut' | 'none' type ClipboardState (line 13) | interface ClipboardState { FILE: src/stores/imageHosting.ts type S3Config (line 7) | interface S3Config { type MarkState (line 17) | interface MarkState { method getImages (line 75) | async getImages() { FILE: src/stores/mark.ts type MarkQueue (line 17) | interface MarkQueue { type RecordTimePreset (line 25) | type RecordTimePreset = 'all' | 'today' | 'last7Days' | 'last30Days' type RecordViewMode (line 26) | type RecordViewMode = 'list' | 'compact' | 'cards' type RecordFilters (line 28) | interface RecordFilters { constant DEFAULT_RECORD_FILTERS (line 35) | const DEFAULT_RECORD_FILTERS: RecordFilters = { function persistRecordFilters (line 42) | async function persistRecordFilters(recordFilters: RecordFilters) { function persistRecordViewMode (line 47) | async function persistRecordViewMode(recordViewMode: RecordViewMode) { type MarkState (line 52) | interface MarkState { FILE: src/stores/mcp.ts type MCPState (line 5) | interface MCPState { FILE: src/stores/memories.ts type MemoriesState (line 5) | interface MemoriesState { FILE: src/stores/prompt.ts type Prompt (line 4) | interface Prompt { type PromptState (line 11) | interface PromptState { FILE: src/stores/ragSettings.ts type RagSettings (line 6) | interface RagSettings { constant DEFAULT_RAG_SETTINGS (line 18) | const DEFAULT_RAG_SETTINGS: RagSettings = { type RagSettingsState (line 26) | interface RagSettingsState extends RagSettings { FILE: src/stores/recording.ts type RecordingState (line 3) | interface RecordingState { FILE: src/stores/setting.ts type GenTemplateRange (line 14) | enum GenTemplateRange { type GenTemplate (line 23) | interface GenTemplate { type SettingState (line 31) | interface SettingState { type ChatToolbarItem (line 260) | interface ChatToolbarItem { type RecordToolbarItem (line 266) | interface RecordToolbarItem { FILE: src/stores/settingsSync.ts type SettingsSyncState (line 11) | interface SettingsSyncState { FILE: src/stores/shortcut.ts type Shortcut (line 6) | interface Shortcut { type SettingState (line 11) | interface SettingState { function bindShortcut (line 29) | async function bindShortcut(shortcut: Shortcut) { FILE: src/stores/sidebar.ts type SidebarState (line 5) | interface SidebarState { FILE: src/stores/skills.ts type SkillsState (line 6) | interface SkillsState { FILE: src/stores/speech-recognition.ts type SpeechRecognitionEvent (line 4) | interface SpeechRecognitionEvent extends Event { type SpeechRecognitionResultList (line 9) | interface SpeechRecognitionResultList { type SpeechRecognitionResult (line 15) | interface SpeechRecognitionResult { type SpeechRecognitionAlternative (line 22) | interface SpeechRecognitionAlternative { type SpeechRecognition (line 27) | interface SpeechRecognition extends EventTarget { type Window (line 42) | interface Window { type SpeechRecognitionState (line 48) | interface SpeechRecognitionState { FILE: src/stores/sync-confirm.ts type SyncConfirmState (line 3) | interface SyncConfirmState { FILE: src/stores/sync.ts type SyncState (line 7) | interface SyncState { FILE: src/stores/tag.ts type TagState (line 14) | interface TagState { FILE: src/stores/update.ts type UpdateState (line 5) | interface UpdateState { FILE: src/stores/vector.ts type VectorState (line 7) | interface VectorState { FILE: src/types/sync.ts type SyncPlatform (line 1) | type SyncPlatform = 'github' | 'gitee' | 'gitlab' | 'gitea' | 's3' | 'we... type SyncPlatformType (line 3) | type SyncPlatformType = { constant SYNC_PLATFORMS (line 9) | const SYNC_PLATFORMS: SyncPlatform[] = ['github', 'gitee', 'gitlab', 'gi... constant SYNC_PLATFORM_INFO (line 11) | const SYNC_PLATFORM_INFO: Record = { type S3Config (line 20) | interface S3Config { type WebDAVConfig (line 30) | interface WebDAVConfig { FILE: src/types/theme.ts type CustomThemeColors (line 6) | interface CustomThemeColors { type HSLValue (line 50) | type HSLValue = [number, number, number] constant THEME_VARIABLE_MAP (line 55) | const THEME_VARIABLE_MAP = {