gitextract_fb4zvf6o/ ├── .dockerignore ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ └── feature.yml │ └── workflows/ │ ├── 2-docker-build.yml │ └── ci.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .prettierignore ├── .prettierrc ├── Dockerfile ├── LICENSE.md ├── README.md ├── components.json ├── docker-compose.yml ├── eslint.config.js ├── index.html ├── inject-env.js ├── package.json ├── public/ │ └── databases/ │ ├── README.md │ └── manifest.json ├── serve.json ├── src/ │ ├── components/ │ │ ├── charts/ │ │ │ ├── ChartVisualizationPro.tsx │ │ │ ├── UPlotChart.tsx │ │ │ └── tooltipPlugin.ts │ │ ├── cloud/ │ │ │ ├── CloudBrowser.tsx │ │ │ └── CloudConnectionModal.tsx │ │ ├── command-palette/ │ │ │ └── CommandPalette.tsx │ │ ├── common/ │ │ │ ├── FloatingActionButton.tsx │ │ │ └── ImportOptionsPopover.tsx │ │ ├── connection/ │ │ │ └── ConnectionsModal.tsx │ │ ├── duck-brain/ │ │ │ ├── DuckBrainCodeBlock.tsx │ │ │ ├── DuckBrainInput.tsx │ │ │ ├── DuckBrainMessages.tsx │ │ │ ├── DuckBrainPanel.tsx │ │ │ ├── MarkdownContent.tsx │ │ │ ├── ResultsArtifact.tsx │ │ │ └── SchemaAutocomplete.tsx │ │ ├── editor/ │ │ │ ├── SqlEditor.tsx │ │ │ └── monacoConfig.ts │ │ ├── explorer/ │ │ │ ├── ColumnNode.tsx │ │ │ ├── DataExplorer.tsx │ │ │ ├── FileImporter.tsx │ │ │ └── TreeNode.tsx │ │ ├── folders/ │ │ │ └── FolderBrowser.tsx │ │ ├── layout/ │ │ │ ├── ConnectionSwitcher.tsx │ │ │ ├── MobileNavDrawer.tsx │ │ │ └── Sidebar.tsx │ │ ├── notebook/ │ │ │ ├── MarkdownRenderer.tsx │ │ │ ├── NotebookCell.tsx │ │ │ ├── NotebookTab.tsx │ │ │ └── NotebookToolbar.tsx │ │ ├── profile/ │ │ │ ├── PasswordDialog.tsx │ │ │ ├── ProfileAvatar.tsx │ │ │ ├── ProfileEditor.tsx │ │ │ └── ProfilePicker.tsx │ │ ├── saved-queries/ │ │ │ ├── SaveQueryDialog.tsx │ │ │ └── SavedQueriesPanel.tsx │ │ ├── table/ │ │ │ ├── CellValueViewer.tsx │ │ │ ├── ColumnStatsPanel.tsx │ │ │ └── DuckUItable.tsx │ │ ├── theme/ │ │ │ ├── mode-toggle.tsx │ │ │ └── theme-provider.tsx │ │ ├── ui/ │ │ │ ├── accordion.tsx │ │ │ ├── alert-dialog.tsx │ │ │ ├── alert.tsx │ │ │ ├── aspect-ratio.tsx │ │ │ ├── badge.tsx │ │ │ ├── breadcrumb.tsx │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── collapsible.tsx │ │ │ ├── command.tsx │ │ │ ├── context-menu.tsx │ │ │ ├── dialog.tsx │ │ │ ├── drawer.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── form.tsx │ │ │ ├── hover-card.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── menubar.tsx │ │ │ ├── multi-select.tsx │ │ │ ├── navigation-menu.tsx │ │ │ ├── pagination.tsx │ │ │ ├── popover.tsx │ │ │ ├── progress.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── resizable.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── sonner.tsx │ │ │ ├── switch.tsx │ │ │ ├── table.tsx │ │ │ ├── tabs.tsx │ │ │ ├── textarea.tsx │ │ │ └── tooltip.tsx │ │ └── workspace/ │ │ ├── BrainTab.tsx │ │ ├── ConnectionsTab.tsx │ │ ├── ExplainPlanViewer.tsx │ │ ├── HomeTab.tsx │ │ ├── QueryHistory.tsx │ │ ├── SettingsTab.tsx │ │ ├── SortableTab.tsx │ │ ├── SqlTab.tsx │ │ └── WorkspaceTabs.tsx │ ├── hooks/ │ │ └── useQueryFromURL.ts │ ├── index.css │ ├── lib/ │ │ ├── chartDataTransform.ts │ │ ├── chartExport.ts │ │ ├── chartUtils.ts │ │ ├── cloudStorage/ │ │ │ ├── index.ts │ │ │ └── testHttpfs.ts │ │ ├── duckBrain/ │ │ │ ├── index.ts │ │ │ ├── models.config.ts │ │ │ ├── prompts/ │ │ │ │ └── text-to-sql.ts │ │ │ ├── providers/ │ │ │ │ ├── anthropic.provider.ts │ │ │ │ ├── index.ts │ │ │ │ ├── openai.provider.ts │ │ │ │ └── types.ts │ │ │ ├── schemaFormatter.ts │ │ │ ├── sqlParser.ts │ │ │ ├── webllm.service.ts │ │ │ └── webllm.worker.ts │ │ ├── fileSystem/ │ │ │ └── index.ts │ │ ├── sqlSanitize.ts │ │ └── utils.ts │ ├── main.tsx │ ├── pages/ │ │ └── Home.tsx │ ├── services/ │ │ ├── duckdb/ │ │ │ ├── __tests__/ │ │ │ │ ├── resultParser.test.ts │ │ │ │ └── utils.test.ts │ │ │ ├── externalConnection.ts │ │ │ ├── index.ts │ │ │ ├── opfsConnection.ts │ │ │ ├── resultParser.ts │ │ │ ├── schemaFetcher.ts │ │ │ ├── utils.ts │ │ │ └── wasmConnection.ts │ │ └── persistence/ │ │ ├── __tests__/ │ │ │ ├── crypto.test.ts │ │ │ └── migrations.test.ts │ │ ├── crypto.ts │ │ ├── fallback.ts │ │ ├── index.ts │ │ ├── migrations.ts │ │ ├── repositories/ │ │ │ ├── aiConfigRepository.ts │ │ │ ├── connectionRepository.ts │ │ │ ├── index.ts │ │ │ ├── profileRepository.ts │ │ │ ├── queryHistoryRepository.ts │ │ │ ├── savedQueryRepository.ts │ │ │ ├── settingsRepository.ts │ │ │ └── workspaceRepository.ts │ │ └── systemDb.ts │ ├── store/ │ │ ├── index.ts │ │ ├── slices/ │ │ │ ├── connectionSlice.ts │ │ │ ├── duckBrainSlice.ts │ │ │ ├── duckdbSlice.ts │ │ │ ├── fileSystemSlice.ts │ │ │ ├── profileSlice.ts │ │ │ ├── querySlice.ts │ │ │ ├── schemaSlice.ts │ │ │ └── tabSlice.ts │ │ └── types.ts │ ├── types/ │ │ └── filesystem.d.ts │ └── vite-env.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── vitest.config.ts