@libredb/studio 0.9.7 → 0.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-34YQUUCM.mjs +319 -0
- package/dist/chunk-34YQUUCM.mjs.map +1 -0
- package/dist/chunk-4LVB3K53.mjs +37 -0
- package/dist/chunk-4LVB3K53.mjs.map +1 -0
- package/dist/chunk-6DRZXXNT.mjs +100 -0
- package/dist/chunk-6DRZXXNT.mjs.map +1 -0
- package/dist/chunk-CZVV3JJB.mjs +160 -0
- package/dist/chunk-CZVV3JJB.mjs.map +1 -0
- package/dist/chunk-D4WVWWWF.js +332 -0
- package/dist/chunk-D4WVWWWF.js.map +1 -0
- package/dist/chunk-DY3KXE44.mjs +3 -0
- package/dist/chunk-DY3KXE44.mjs.map +1 -0
- package/dist/chunk-DZ2UB3C6.mjs +6679 -0
- package/dist/chunk-DZ2UB3C6.mjs.map +1 -0
- package/dist/chunk-FYSE52VB.js +242 -0
- package/dist/chunk-FYSE52VB.js.map +1 -0
- package/dist/chunk-G4WYE6TI.js +4 -0
- package/dist/chunk-G4WYE6TI.js.map +1 -0
- package/dist/chunk-JOGLIOFO.js +1310 -0
- package/dist/chunk-JOGLIOFO.js.map +1 -0
- package/dist/chunk-JZO5KRZN.js +165 -0
- package/dist/chunk-JZO5KRZN.js.map +1 -0
- package/dist/chunk-KV356UXJ.js +253 -0
- package/dist/chunk-KV356UXJ.js.map +1 -0
- package/dist/chunk-PPODO6HX.mjs +237 -0
- package/dist/chunk-PPODO6HX.mjs.map +1 -0
- package/dist/chunk-PTIRB2JO.js +258 -0
- package/dist/chunk-PTIRB2JO.js.map +1 -0
- package/dist/chunk-Q6LRDBK7.js +42 -0
- package/dist/chunk-Q6LRDBK7.js.map +1 -0
- package/dist/chunk-QJP5FZRY.mjs +255 -0
- package/dist/chunk-QJP5FZRY.mjs.map +1 -0
- package/dist/chunk-R3POCJK6.mjs +248 -0
- package/dist/chunk-R3POCJK6.mjs.map +1 -0
- package/dist/chunk-RBVDMLFV.js +6747 -0
- package/dist/chunk-RBVDMLFV.js.map +1 -0
- package/dist/chunk-RCQB4FCE.js +186 -0
- package/dist/chunk-RCQB4FCE.js.map +1 -0
- package/dist/chunk-SR5DRGBX.mjs +174 -0
- package/dist/chunk-SR5DRGBX.mjs.map +1 -0
- package/dist/chunk-VLCRUZX7.js +102 -0
- package/dist/chunk-VLCRUZX7.js.map +1 -0
- package/dist/chunk-VWVRUCQO.mjs +1289 -0
- package/dist/chunk-VWVRUCQO.mjs.map +1 -0
- package/dist/components.d.mts +273 -0
- package/dist/components.d.ts +273 -0
- package/dist/components.js +59 -0
- package/dist/components.js.map +1 -0
- package/dist/components.mjs +6 -0
- package/dist/components.mjs.map +1 -0
- package/dist/custom-BNDOYC5P.js +134 -0
- package/dist/custom-BNDOYC5P.js.map +1 -0
- package/dist/custom-S2EKFMP3.mjs +132 -0
- package/dist/custom-S2EKFMP3.mjs.map +1 -0
- package/dist/gemini-4ASHNK4H.js +81 -0
- package/dist/gemini-4ASHNK4H.js.map +1 -0
- package/dist/gemini-C5RBLQEJ.mjs +79 -0
- package/dist/gemini-C5RBLQEJ.mjs.map +1 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +10 -0
- package/dist/index.mjs.map +1 -0
- package/dist/mongodb-XMZEZA4A.mjs +748 -0
- package/dist/mongodb-XMZEZA4A.mjs.map +1 -0
- package/dist/mongodb-YQJJTLX3.js +750 -0
- package/dist/mongodb-YQJJTLX3.js.map +1 -0
- package/dist/mssql-PMOU4D36.js +916 -0
- package/dist/mssql-PMOU4D36.js.map +1 -0
- package/{src/lib/db/providers/sql/mssql.ts → dist/mssql-ZH5VP2C5.mjs} +268 -423
- package/dist/mssql-ZH5VP2C5.mjs.map +1 -0
- package/{src/lib/db/providers/sql/mysql.ts → dist/mysql-I3WJQXN2.mjs} +277 -428
- package/dist/mysql-I3WJQXN2.mjs.map +1 -0
- package/dist/mysql-Y3MSA5QY.js +833 -0
- package/dist/mysql-Y3MSA5QY.js.map +1 -0
- package/dist/ollama-26BYLVEV.mjs +115 -0
- package/dist/ollama-26BYLVEV.mjs.map +1 -0
- package/dist/ollama-HVWAGKQC.js +117 -0
- package/dist/ollama-HVWAGKQC.js.map +1 -0
- package/dist/openai-4U56KPG7.mjs +111 -0
- package/dist/openai-4U56KPG7.mjs.map +1 -0
- package/dist/openai-AK3R37BS.js +113 -0
- package/dist/openai-AK3R37BS.js.map +1 -0
- package/dist/oracle-L6VEAVXO.js +917 -0
- package/dist/oracle-L6VEAVXO.js.map +1 -0
- package/{src/lib/db/providers/sql/oracle.ts → dist/oracle-P2G7T4P4.mjs} +321 -454
- package/dist/oracle-P2G7T4P4.mjs.map +1 -0
- package/{src/lib/db/providers/sql/postgres.ts → dist/postgres-O5KOQUVP.mjs} +261 -471
- package/dist/postgres-O5KOQUVP.mjs.map +1 -0
- package/dist/postgres-RLCWNFFX.js +971 -0
- package/dist/postgres-RLCWNFFX.js.map +1 -0
- package/dist/providers.d.mts +149 -0
- package/dist/providers.d.ts +149 -0
- package/dist/providers.js +44 -0
- package/dist/providers.js.map +1 -0
- package/dist/providers.mjs +7 -0
- package/dist/providers.mjs.map +1 -0
- package/dist/redis-4WMQOVLX.mjs +435 -0
- package/dist/redis-4WMQOVLX.mjs.map +1 -0
- package/dist/redis-QVQ6YU62.js +441 -0
- package/dist/redis-QVQ6YU62.js.map +1 -0
- package/dist/sqlite-4I2P2OGQ.js +554 -0
- package/dist/sqlite-4I2P2OGQ.js.map +1 -0
- package/dist/sqlite-OA4YJX5S.mjs +531 -0
- package/dist/sqlite-OA4YJX5S.mjs.map +1 -0
- package/dist/types-BJvJfxSY.d.mts +141 -0
- package/dist/types-BJvJfxSY.d.ts +141 -0
- package/dist/types-ClAg_v5k.d.mts +343 -0
- package/dist/types-Der_X8E8.d.ts +343 -0
- package/dist/types.d.mts +2 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +3 -0
- package/dist/types.mjs.map +1 -0
- package/dist/workspace.d.mts +80 -0
- package/dist/workspace.d.ts +80 -0
- package/dist/workspace.js +4182 -0
- package/dist/workspace.js.map +1 -0
- package/dist/workspace.mjs +4155 -0
- package/dist/workspace.mjs.map +1 -0
- package/package.json +60 -5
- package/.claude/settings.local.json +0 -127
- package/.cursorrules +0 -426
- package/.devin/wiki.json +0 -143
- package/.dockerignore +0 -80
- package/.env.example +0 -159
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -49
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -29
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -57
- package/.github/workflows/ci.yml +0 -185
- package/.github/workflows/codeql.yml +0 -57
- package/.github/workflows/docker-build-push.yml +0 -118
- package/.github/workflows/helm-release.yml +0 -113
- package/CLAUDE.md +0 -265
- package/CODE_OF_CONDUCT.md +0 -124
- package/CONTRIBUTING.md +0 -154
- package/Dockerfile +0 -73
- package/SECURITY.md +0 -107
- package/artifacthub-repo.yml +0 -4
- package/bun.lock +0 -1714
- package/bunfig.toml +0 -3
- package/charts/libredb-studio/.helmignore +0 -11
- package/charts/libredb-studio/Chart.lock +0 -6
- package/charts/libredb-studio/Chart.yaml +0 -50
- package/charts/libredb-studio/README.md +0 -206
- package/charts/libredb-studio/templates/NOTES.txt +0 -59
- package/charts/libredb-studio/templates/_helpers.tpl +0 -135
- package/charts/libredb-studio/templates/configmap.yaml +0 -37
- package/charts/libredb-studio/templates/deployment.yaml +0 -184
- package/charts/libredb-studio/templates/hpa.yaml +0 -32
- package/charts/libredb-studio/templates/ingress.yaml +0 -41
- package/charts/libredb-studio/templates/networkpolicy.yaml +0 -50
- package/charts/libredb-studio/templates/pdb.yaml +0 -18
- package/charts/libredb-studio/templates/pvc.yaml +0 -23
- package/charts/libredb-studio/templates/secret.yaml +0 -30
- package/charts/libredb-studio/templates/seed-configmap.yaml +0 -11
- package/charts/libredb-studio/templates/service.yaml +0 -22
- package/charts/libredb-studio/templates/serviceaccount.yaml +0 -13
- package/charts/libredb-studio/values.schema.json +0 -246
- package/charts/libredb-studio/values.yaml +0 -286
- package/components.json +0 -22
- package/conductor/code_styleguides/typescript.md +0 -43
- package/conductor/product-guidelines.md +0 -43
- package/conductor/product.md +0 -3
- package/conductor/setup_state.json +0 -1
- package/conductor/tech-stack.md +0 -39
- package/conductor/tracks/enhance_postgres_monitoring_20251227/metadata.json +0 -8
- package/conductor/tracks/enhance_postgres_monitoring_20251227/plan.md +0 -44
- package/conductor/tracks/enhance_postgres_monitoring_20251227/spec.md +0 -31
- package/conductor/tracks.md +0 -8
- package/conductor/workflow.md +0 -333
- package/database-compose.yml +0 -55
- package/docker/postgres-init/01-extensions.sql +0 -10
- package/docker/postgres-init/02-sample-data.sql +0 -585
- package/docker/postgres.yml +0 -68
- package/docker-compose.yml +0 -38
- package/docs/AI_PLAN.md +0 -74
- package/docs/API_DOCS.md +0 -875
- package/docs/ARCHITECTURE.md +0 -218
- package/docs/DATABASE_PROVIDERS.md +0 -358
- package/docs/FEATURES.md +0 -116
- package/docs/HELM_CHART.md +0 -252
- package/docs/LOGIN_PAGE.md +0 -178
- package/docs/MONACO_EDITOR_PERFORMANCE.md +0 -315
- package/docs/OIDC_ARCH.md +0 -681
- package/docs/OIDC_SETUP.md +0 -322
- package/docs/POSTGRES_METRICS.md +0 -516
- package/docs/QUERY_OPTIMIZATION.md +0 -370
- package/docs/SEED_CONNECTIONS.md +0 -468
- package/docs/SQL_ALIAS_COMPLETION.md +0 -190
- package/docs/STORAGE_ARCHITECTURE.md +0 -565
- package/docs/STORAGE_QUICK_SETUP.md +0 -419
- package/docs/TECHNICAL_PLAN.md +0 -36
- package/docs/THEMING.md +0 -345
- package/docs/adding-a-new-database-provider.md +0 -642
- package/docs/backlogs/000-PLATFORM_DATA_SYNC_DATABASE.md +0 -360
- package/docs/backlogs/001-INLINE_DATA_EDITING.md +0 -118
- package/docs/backlogs/002-DATA_IMPORT.md +0 -215
- package/docs/backlogs/003-QUERY_TIME_MACHINE.md +0 -183
- package/docs/backlogs/004-AI_DATA_STORYTELLER.md +0 -292
- package/docs/backlogs/005-QUERY_PLAYGROUND.md +0 -352
- package/docs/backlogs/006-DATA_MASKING.md +0 -418
- package/docs/enterprise-features.md +0 -718
- package/docs/kubernetes-helm-chart-artifacthub-plan.md +0 -803
- package/docs/medium-koyeb-article-en.md +0 -215
- package/docs/plans/test-plans.md +0 -445
- package/docs/releases/RELEASE.V0.3.0.md +0 -22
- package/docs/releases/RELEASE.V0.4.0.md +0 -154
- package/docs/releases/RELEASE.V0.5.0.md +0 -252
- package/docs/releases/RELEASE_v0.5.6.md +0 -145
- package/docs/releases/RELEASE_v0.6.1.md +0 -303
- package/docs/releases/RELEASE_v0.6.7.md +0 -292
- package/docs/releases/RELEASE_v0.7.0.md +0 -332
- package/docs/releases/RELEASE_v0.8.0.md +0 -521
- package/docs/sampledb/titanic.sql +0 -1379
- package/docs/superpowers/plans/2026-03-25-seed-connections.md +0 -1362
- package/docs/superpowers/specs/2026-03-25-seed-connections-design.md +0 -590
- package/e2e/admin-dashboard.spec.ts +0 -64
- package/e2e/connection-management.spec.ts +0 -58
- package/e2e/export.spec.ts +0 -34
- package/e2e/login.spec.ts +0 -85
- package/e2e/query-execution.spec.ts +0 -35
- package/e2e/tab-management.spec.ts +0 -64
- package/eslint.config.mjs +0 -28
- package/fly.toml +0 -43
- package/next.config.ts +0 -32
- package/playwright.config.ts +0 -34
- package/postcss.config.mjs +0 -7
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/file.svg +0 -1
- package/public/globe.svg +0 -1
- package/public/logo.svg +0 -32
- package/public/next.svg +0 -1
- package/public/screenshots/code-generator.png +0 -0
- package/public/screenshots/connection-modal.png +0 -0
- package/public/screenshots/data-profiler.png +0 -0
- package/public/screenshots/erd-diagram.png +0 -0
- package/public/screenshots/hero-editor.png +0 -0
- package/public/screenshots/nl2sql.png +0 -0
- package/public/vercel.svg +0 -1
- package/public/window.svg +0 -1
- package/render.yaml +0 -58
- package/scripts/merge-lcov.mjs +0 -239
- package/sonar-project.properties +0 -16
- package/src/app/admin/error.tsx +0 -46
- package/src/app/admin/page.tsx +0 -10
- package/src/app/api/admin/audit/route.ts +0 -52
- package/src/app/api/admin/fleet-health/route.ts +0 -81
- package/src/app/api/ai/autopilot/route.ts +0 -105
- package/src/app/api/ai/chat/route.ts +0 -132
- package/src/app/api/ai/describe-schema/route.ts +0 -52
- package/src/app/api/ai/explain/route.ts +0 -86
- package/src/app/api/ai/impact/route.ts +0 -97
- package/src/app/api/ai/index-advisor/route.ts +0 -98
- package/src/app/api/ai/nl2sql/route.ts +0 -87
- package/src/app/api/ai/query-safety/route.ts +0 -87
- package/src/app/api/auth/login/route.ts +0 -62
- package/src/app/api/auth/logout/route.ts +0 -25
- package/src/app/api/auth/me/route.ts +0 -10
- package/src/app/api/auth/oidc/callback/route.ts +0 -82
- package/src/app/api/auth/oidc/login/route.ts +0 -43
- package/src/app/api/connections/managed/route.ts +0 -35
- package/src/app/api/db/cancel/route.ts +0 -42
- package/src/app/api/db/disconnect/route.ts +0 -28
- package/src/app/api/db/health/route.ts +0 -49
- package/src/app/api/db/maintenance/route.ts +0 -72
- package/src/app/api/db/monitoring/route.ts +0 -62
- package/src/app/api/db/multi-query/route.ts +0 -116
- package/src/app/api/db/pool-stats/route.ts +0 -37
- package/src/app/api/db/profile/route.ts +0 -144
- package/src/app/api/db/provider-meta/route.ts +0 -49
- package/src/app/api/db/query/route.ts +0 -50
- package/src/app/api/db/schema/route.ts +0 -47
- package/src/app/api/db/schema-snapshot/route.ts +0 -42
- package/src/app/api/db/test-connection/route.ts +0 -55
- package/src/app/api/db/transaction/route.ts +0 -111
- package/src/app/api/storage/[collection]/route.ts +0 -67
- package/src/app/api/storage/config/route.ts +0 -17
- package/src/app/api/storage/migrate/route.ts +0 -45
- package/src/app/api/storage/route.ts +0 -32
- package/src/app/error.tsx +0 -49
- package/src/app/global-error.tsx +0 -55
- package/src/app/globals.css +0 -146
- package/src/app/icon.svg +0 -42
- package/src/app/layout.tsx +0 -34
- package/src/app/login/login-form.tsx +0 -301
- package/src/app/login/page.tsx +0 -11
- package/src/app/monitoring/page.tsx +0 -8
- package/src/app/not-found.tsx +0 -29
- package/src/app/page.tsx +0 -5
- package/src/components/AIAutopilotPanel.tsx +0 -238
- package/src/components/CodeGenerator.tsx +0 -271
- package/src/components/CommandPalette.tsx +0 -227
- package/src/components/ConnectionModal.tsx +0 -759
- package/src/components/CreateTableModal.tsx +0 -281
- package/src/components/DataCharts.tsx +0 -962
- package/src/components/DataImportModal.tsx +0 -582
- package/src/components/DataProfiler.tsx +0 -335
- package/src/components/DatabaseDocs.tsx +0 -251
- package/src/components/MaskingSettings.tsx +0 -414
- package/src/components/MobileNav.tsx +0 -50
- package/src/components/NL2SQLPanel.tsx +0 -281
- package/src/components/PivotTable.tsx +0 -257
- package/src/components/QueryEditor.tsx +0 -760
- package/src/components/QueryHistory.tsx +0 -344
- package/src/components/QuerySafetyDialog.tsx +0 -290
- package/src/components/ResultsGrid.tsx +0 -644
- package/src/components/SaveQueryModal.tsx +0 -104
- package/src/components/SavedQueries.tsx +0 -128
- package/src/components/SchemaDiagram.tsx +0 -473
- package/src/components/SchemaDiff.tsx +0 -473
- package/src/components/SnapshotTimeline.tsx +0 -116
- package/src/components/Studio.tsx +0 -639
- package/src/components/TestDataGenerator.tsx +0 -261
- package/src/components/VisualExplain.tsx +0 -820
- package/src/components/admin/AdminDashboard.tsx +0 -163
- package/src/components/admin/tabs/AuditTab.tsx +0 -531
- package/src/components/admin/tabs/MonitoringEmbed.tsx +0 -11
- package/src/components/admin/tabs/OperationsTab.tsx +0 -646
- package/src/components/admin/tabs/OverviewTab.tsx +0 -1328
- package/src/components/admin/tabs/SecurityTab.tsx +0 -284
- package/src/components/community-section.tsx +0 -92
- package/src/components/icons/db-icons.tsx +0 -84
- package/src/components/libredb-logo.tsx +0 -61
- package/src/components/monitoring/MonitoringDashboard.tsx +0 -345
- package/src/components/monitoring/tabs/MetricChart.tsx +0 -82
- package/src/components/monitoring/tabs/OverviewTab.tsx +0 -263
- package/src/components/monitoring/tabs/PerformanceTab.tsx +0 -254
- package/src/components/monitoring/tabs/PoolTab.tsx +0 -174
- package/src/components/monitoring/tabs/QueriesTab.tsx +0 -287
- package/src/components/monitoring/tabs/SessionsTab.tsx +0 -316
- package/src/components/monitoring/tabs/StorageTab.tsx +0 -335
- package/src/components/monitoring/tabs/TablesTab.tsx +0 -300
- package/src/components/results-grid/ResultCard.tsx +0 -111
- package/src/components/results-grid/RowDetailSheet.tsx +0 -178
- package/src/components/results-grid/StatsBar.tsx +0 -201
- package/src/components/results-grid/index.ts +0 -1
- package/src/components/results-grid/utils.ts +0 -23
- package/src/components/schema-explorer/ColumnList.tsx +0 -53
- package/src/components/schema-explorer/SchemaExplorer.tsx +0 -182
- package/src/components/schema-explorer/TableItem.tsx +0 -210
- package/src/components/schema-explorer/index.ts +0 -1
- package/src/components/sidebar/ConnectionItem.tsx +0 -105
- package/src/components/sidebar/ConnectionsList.tsx +0 -62
- package/src/components/sidebar/Sidebar.tsx +0 -130
- package/src/components/sidebar/index.ts +0 -2
- package/src/components/studio/BottomPanel.tsx +0 -286
- package/src/components/studio/QueryToolbar.tsx +0 -180
- package/src/components/studio/StudioDesktopHeader.tsx +0 -114
- package/src/components/studio/StudioMobileHeader.tsx +0 -340
- package/src/components/studio/StudioTabBar.tsx +0 -82
- package/src/components/studio/index.ts +0 -5
- package/src/components/ui/accordion.tsx +0 -66
- package/src/components/ui/alert-dialog.tsx +0 -157
- package/src/components/ui/alert.tsx +0 -66
- package/src/components/ui/aspect-ratio.tsx +0 -11
- package/src/components/ui/avatar.tsx +0 -53
- package/src/components/ui/badge.tsx +0 -46
- package/src/components/ui/breadcrumb.tsx +0 -109
- package/src/components/ui/button-group.tsx +0 -83
- package/src/components/ui/button.tsx +0 -60
- package/src/components/ui/calendar.tsx +0 -216
- package/src/components/ui/card.tsx +0 -92
- package/src/components/ui/carousel.tsx +0 -241
- package/src/components/ui/chart.tsx +0 -357
- package/src/components/ui/checkbox.tsx +0 -32
- package/src/components/ui/collapsible.tsx +0 -33
- package/src/components/ui/command.tsx +0 -184
- package/src/components/ui/context-menu.tsx +0 -252
- package/src/components/ui/dialog.tsx +0 -143
- package/src/components/ui/drawer.tsx +0 -135
- package/src/components/ui/dropdown-menu.tsx +0 -257
- package/src/components/ui/empty.tsx +0 -104
- package/src/components/ui/field.tsx +0 -248
- package/src/components/ui/form.tsx +0 -167
- package/src/components/ui/hover-card.tsx +0 -44
- package/src/components/ui/input-group.tsx +0 -170
- package/src/components/ui/input-otp.tsx +0 -77
- package/src/components/ui/input.tsx +0 -21
- package/src/components/ui/item.tsx +0 -193
- package/src/components/ui/kbd.tsx +0 -28
- package/src/components/ui/label.tsx +0 -24
- package/src/components/ui/menubar.tsx +0 -276
- package/src/components/ui/navigation-menu.tsx +0 -168
- package/src/components/ui/pagination.tsx +0 -127
- package/src/components/ui/popover.tsx +0 -48
- package/src/components/ui/progress.tsx +0 -31
- package/src/components/ui/radio-group.tsx +0 -45
- package/src/components/ui/resizable.tsx +0 -56
- package/src/components/ui/scroll-area.tsx +0 -58
- package/src/components/ui/select.tsx +0 -187
- package/src/components/ui/separator.tsx +0 -28
- package/src/components/ui/sheet.tsx +0 -139
- package/src/components/ui/sidebar.tsx +0 -726
- package/src/components/ui/skeleton.tsx +0 -13
- package/src/components/ui/slider.tsx +0 -63
- package/src/components/ui/sonner.tsx +0 -40
- package/src/components/ui/spinner.tsx +0 -16
- package/src/components/ui/switch.tsx +0 -31
- package/src/components/ui/table.tsx +0 -116
- package/src/components/ui/tabs.tsx +0 -66
- package/src/components/ui/textarea.tsx +0 -18
- package/src/components/ui/toggle-group.tsx +0 -83
- package/src/components/ui/toggle.tsx +0 -47
- package/src/components/ui/tooltip.tsx +0 -61
- package/src/exports/components.ts +0 -15
- package/src/exports/index.ts +0 -4
- package/src/exports/providers.ts +0 -4
- package/src/exports/types.ts +0 -26
- package/src/hooks/use-ai-chat.ts +0 -182
- package/src/hooks/use-all-connections.ts +0 -66
- package/src/hooks/use-api-call.ts +0 -71
- package/src/hooks/use-auth.ts +0 -51
- package/src/hooks/use-connection-form.ts +0 -349
- package/src/hooks/use-connection-manager.ts +0 -169
- package/src/hooks/use-connection-payload.ts +0 -15
- package/src/hooks/use-inline-editing.ts +0 -109
- package/src/hooks/use-mobile.ts +0 -20
- package/src/hooks/use-monitoring-data.ts +0 -270
- package/src/hooks/use-provider-metadata.ts +0 -62
- package/src/hooks/use-query-execution.ts +0 -478
- package/src/hooks/use-storage-sync.ts +0 -259
- package/src/hooks/use-tab-manager.ts +0 -231
- package/src/hooks/use-toast.ts +0 -20
- package/src/hooks/use-transaction-control.ts +0 -64
- package/src/lib/api/error-codes.ts +0 -30
- package/src/lib/api/errors.ts +0 -236
- package/src/lib/api/with-error-handler.ts +0 -41
- package/src/lib/audit.ts +0 -105
- package/src/lib/auth.ts +0 -87
- package/src/lib/connection-string-parser.ts +0 -172
- package/src/lib/data-masking.ts +0 -385
- package/src/lib/db/base-provider.ts +0 -325
- package/src/lib/db/errors.ts +0 -317
- package/src/lib/db/factory.ts +0 -324
- package/src/lib/db/index.ts +0 -123
- package/src/lib/db/providers/document/index.ts +0 -6
- package/src/lib/db/providers/document/mongodb.ts +0 -992
- package/src/lib/db/providers/keyvalue/redis.ts +0 -554
- package/src/lib/db/providers/sql/index.ts +0 -11
- package/src/lib/db/providers/sql/sql-base.ts +0 -174
- package/src/lib/db/providers/sql/sqlite.ts +0 -721
- package/src/lib/db/types.ts +0 -437
- package/src/lib/db/utils/pool-manager.ts +0 -287
- package/src/lib/db/utils/query-limiter.ts +0 -239
- package/src/lib/db-ui-config.ts +0 -86
- package/src/lib/editor/mongodb-completions.ts +0 -172
- package/src/lib/editor/sql-completions.ts +0 -280
- package/src/lib/llm/base-provider.ts +0 -117
- package/src/lib/llm/factory.ts +0 -102
- package/src/lib/llm/index.ts +0 -90
- package/src/lib/llm/providers/custom.ts +0 -181
- package/src/lib/llm/providers/gemini.ts +0 -126
- package/src/lib/llm/providers/ollama.ts +0 -154
- package/src/lib/llm/providers/openai.ts +0 -146
- package/src/lib/llm/types.ts +0 -173
- package/src/lib/llm/utils/config.ts +0 -187
- package/src/lib/llm/utils/retry.ts +0 -119
- package/src/lib/llm/utils/streaming.ts +0 -202
- package/src/lib/logger.ts +0 -127
- package/src/lib/monitoring-thresholds.ts +0 -44
- package/src/lib/oidc.ts +0 -262
- package/src/lib/query-generators.ts +0 -61
- package/src/lib/schema-diff/diff-engine.ts +0 -273
- package/src/lib/schema-diff/migration-generator.ts +0 -208
- package/src/lib/schema-diff/types.ts +0 -55
- package/src/lib/seed/config-loader.ts +0 -79
- package/src/lib/seed/connection-filter.ts +0 -49
- package/src/lib/seed/credential-resolver.ts +0 -62
- package/src/lib/seed/index.ts +0 -40
- package/src/lib/seed/resolve-connection.ts +0 -57
- package/src/lib/seed/types.ts +0 -69
- package/src/lib/sql/alias-extractor.ts +0 -267
- package/src/lib/sql/index.ts +0 -8
- package/src/lib/sql/statement-splitter.ts +0 -167
- package/src/lib/sql/types.ts +0 -40
- package/src/lib/ssh/tunnel.ts +0 -142
- package/src/lib/storage/factory.ts +0 -84
- package/src/lib/storage/index.ts +0 -14
- package/src/lib/storage/local-storage.ts +0 -99
- package/src/lib/storage/providers/postgres.ts +0 -225
- package/src/lib/storage/providers/sqlite.ts +0 -153
- package/src/lib/storage/storage-facade.ts +0 -272
- package/src/lib/storage/types.ts +0 -75
- package/src/lib/time-series-buffer.ts +0 -58
- package/src/lib/types.ts +0 -173
- package/src/lib/utils.ts +0 -6
- package/src/proxy.ts +0 -104
- package/src/types/db-drivers.d.ts +0 -23
- package/src/types/html2canvas.d.ts +0 -9
- package/tests/api/admin/audit.test.ts +0 -178
- package/tests/api/admin/fleet-health.test.ts +0 -183
- package/tests/api/ai/autopilot.test.ts +0 -174
- package/tests/api/ai/chat.test.ts +0 -250
- package/tests/api/ai/describe-schema.test.ts +0 -266
- package/tests/api/ai/explain.test.ts +0 -199
- package/tests/api/ai/impact.test.ts +0 -168
- package/tests/api/ai/index-advisor.test.ts +0 -171
- package/tests/api/ai/nl2sql.test.ts +0 -202
- package/tests/api/ai/query-safety.test.ts +0 -196
- package/tests/api/auth/login.test.ts +0 -170
- package/tests/api/auth/logout.test.ts +0 -140
- package/tests/api/auth/me.test.ts +0 -73
- package/tests/api/auth/oidc-callback.test.ts +0 -215
- package/tests/api/auth/oidc-login.test.ts +0 -127
- package/tests/api/db/cancel.test.ts +0 -198
- package/tests/api/db/disconnect.test.ts +0 -124
- package/tests/api/db/health.test.ts +0 -222
- package/tests/api/db/maintenance.test.ts +0 -263
- package/tests/api/db/monitoring.test.ts +0 -221
- package/tests/api/db/multi-query.test.ts +0 -316
- package/tests/api/db/pool-stats.test.ts +0 -135
- package/tests/api/db/profile.test.ts +0 -330
- package/tests/api/db/provider-meta.test.ts +0 -193
- package/tests/api/db/query.test.ts +0 -314
- package/tests/api/db/schema-snapshot.test.ts +0 -170
- package/tests/api/db/schema.test.ts +0 -191
- package/tests/api/db/test-connection.test.ts +0 -185
- package/tests/api/db/transaction.test.ts +0 -314
- package/tests/api/proxy.test.ts +0 -191
- package/tests/api/seed/managed-route.test.ts +0 -113
- package/tests/api/storage/config.test.ts +0 -42
- package/tests/api/storage/storage-routes.test.ts +0 -309
- package/tests/components/AIAutopilotPanel.test.tsx +0 -756
- package/tests/components/AdminPage.test.tsx +0 -33
- package/tests/components/CodeGenerator.test.tsx +0 -182
- package/tests/components/CommandPalette.test.tsx +0 -428
- package/tests/components/CommunitySection.test.tsx +0 -91
- package/tests/components/ConnectionModal.mobile.test.tsx +0 -284
- package/tests/components/ConnectionModal.test.tsx +0 -570
- package/tests/components/CreateTableModal.test.tsx +0 -383
- package/tests/components/DataCharts.test.tsx +0 -739
- package/tests/components/DataImportModal.test.tsx +0 -751
- package/tests/components/DataProfiler.test.tsx +0 -589
- package/tests/components/DatabaseDocs.test.tsx +0 -353
- package/tests/components/LoginPage.test.tsx +0 -163
- package/tests/components/LoginPageOIDC.test.tsx +0 -92
- package/tests/components/MaskingSettings.test.tsx +0 -498
- package/tests/components/MobileNav.test.tsx +0 -30
- package/tests/components/MonitoringPage.test.tsx +0 -32
- package/tests/components/NL2SQLPanel.test.tsx +0 -621
- package/tests/components/Page.test.tsx +0 -33
- package/tests/components/PivotTable.test.tsx +0 -350
- package/tests/components/QueryEditor.test.tsx +0 -1730
- package/tests/components/QueryHistory.test.tsx +0 -572
- package/tests/components/QuerySafetyDialog.test.tsx +0 -586
- package/tests/components/ResultsGrid.test.tsx +0 -804
- package/tests/components/RootLayout.test.tsx +0 -83
- package/tests/components/SaveQueryModal.test.tsx +0 -25
- package/tests/components/SavedQueries.test.tsx +0 -43
- package/tests/components/SchemaDiagram.test.tsx +0 -1034
- package/tests/components/SchemaDiff.test.tsx +0 -906
- package/tests/components/SnapshotTimeline.test.tsx +0 -174
- package/tests/components/Studio.test.tsx +0 -1030
- package/tests/components/TestDataGenerator.test.tsx +0 -291
- package/tests/components/VisualExplain.test.tsx +0 -704
- package/tests/components/admin/AdminDashboard.test.tsx +0 -205
- package/tests/components/admin/AuditTab.test.tsx +0 -220
- package/tests/components/admin/MonitoringEmbed.test.tsx +0 -58
- package/tests/components/admin/OperationsTab.test.tsx +0 -975
- package/tests/components/admin/OverviewTab.test.tsx +0 -254
- package/tests/components/admin/SecurityTab.test.tsx +0 -467
- package/tests/components/monitoring/MetricChart.test.tsx +0 -111
- package/tests/components/monitoring/MonitoringDashboard.test.tsx +0 -259
- package/tests/components/monitoring/OverviewTab.test.tsx +0 -78
- package/tests/components/monitoring/PerformanceTab.test.tsx +0 -87
- package/tests/components/monitoring/PoolTab.test.tsx +0 -42
- package/tests/components/monitoring/QueriesTab.test.tsx +0 -80
- package/tests/components/monitoring/SessionsTab.test.tsx +0 -154
- package/tests/components/monitoring/StorageTab.test.tsx +0 -127
- package/tests/components/monitoring/TablesTab.test.tsx +0 -153
- package/tests/components/results-grid/ResultCard.test.tsx +0 -105
- package/tests/components/results-grid/RowDetailSheet.test.tsx +0 -308
- package/tests/components/results-grid/StatsBar.test.tsx +0 -162
- package/tests/components/schema-explorer/ColumnList.test.tsx +0 -151
- package/tests/components/schema-explorer/SchemaExplorer.test.tsx +0 -461
- package/tests/components/schema-explorer/TableItem.test.tsx +0 -415
- package/tests/components/sidebar/ConnectionItem.test.tsx +0 -201
- package/tests/components/sidebar/ConnectionsList.test.tsx +0 -176
- package/tests/components/sidebar/Sidebar.test.tsx +0 -187
- package/tests/components/studio/BottomPanel.test.tsx +0 -383
- package/tests/components/studio/QueryToolbar.test.tsx +0 -321
- package/tests/components/studio/StudioDesktopHeader.test.tsx +0 -377
- package/tests/components/studio/StudioMobileHeader.test.tsx +0 -198
- package/tests/components/studio/StudioTabBar.test.tsx +0 -331
- package/tests/fixtures/connections.ts +0 -96
- package/tests/fixtures/masking-configs.ts +0 -86
- package/tests/fixtures/query-results.ts +0 -71
- package/tests/fixtures/schemas.ts +0 -64
- package/tests/fixtures/seed-connections/invalid-config.yaml +0 -7
- package/tests/fixtures/seed-connections/minimal-config.yaml +0 -8
- package/tests/fixtures/seed-connections/mixed-credentials.yaml +0 -23
- package/tests/fixtures/seed-connections/multi-role-config.yaml +0 -30
- package/tests/fixtures/seed-connections/valid-config.json +0 -15
- package/tests/fixtures/seed-connections/valid-config.yaml +0 -51
- package/tests/helpers/mock-fetch.ts +0 -59
- package/tests/helpers/mock-monaco.ts +0 -112
- package/tests/helpers/mock-navigation.ts +0 -28
- package/tests/helpers/mock-next.ts +0 -80
- package/tests/helpers/mock-provider.ts +0 -133
- package/tests/helpers/mock-sonner.ts +0 -29
- package/tests/helpers/render-with-providers.tsx +0 -19
- package/tests/hooks/use-ai-chat.test.ts +0 -600
- package/tests/hooks/use-auth.test.ts +0 -371
- package/tests/hooks/use-connection-form.test.ts +0 -743
- package/tests/hooks/use-connection-manager.test.ts +0 -466
- package/tests/hooks/use-inline-editing.test.ts +0 -321
- package/tests/hooks/use-mobile.test.ts +0 -177
- package/tests/hooks/use-monitoring-data.test.ts +0 -819
- package/tests/hooks/use-provider-metadata.test.ts +0 -228
- package/tests/hooks/use-query-execution.test.ts +0 -1212
- package/tests/hooks/use-tab-manager.test.ts +0 -756
- package/tests/hooks/use-toast.test.ts +0 -74
- package/tests/hooks/use-transaction-control.test.ts +0 -211
- package/tests/integration/db/mongodb-provider.test.ts +0 -698
- package/tests/integration/db/mssql-provider.test.ts +0 -840
- package/tests/integration/db/mysql-provider.test.ts +0 -872
- package/tests/integration/db/oracle-provider.test.ts +0 -843
- package/tests/integration/db/postgres-provider.test.ts +0 -1382
- package/tests/integration/db/redis-provider.test.ts +0 -526
- package/tests/integration/db/sqlite-provider.test.ts +0 -480
- package/tests/integration/seed/seed-pipeline.test.ts +0 -102
- package/tests/isolated/factory-singleton.test.ts +0 -150
- package/tests/isolated/use-storage-sync.test.ts +0 -389
- package/tests/run-components.sh +0 -196
- package/tests/setup-dom.ts +0 -58
- package/tests/setup.ts +0 -40
- package/tests/unit/api-errors.test.ts +0 -210
- package/tests/unit/code-generator-functions.test.ts +0 -271
- package/tests/unit/components/column-list.test.tsx +0 -190
- package/tests/unit/components/data-import-modal.test.tsx +0 -441
- package/tests/unit/components/studio-mobile-header.test.tsx +0 -327
- package/tests/unit/data-charts-functions.test.ts +0 -496
- package/tests/unit/data-import-functions.test.ts +0 -320
- package/tests/unit/data-import-utils.test.ts +0 -125
- package/tests/unit/db/base-provider.test.ts +0 -517
- package/tests/unit/db/errors.test.ts +0 -403
- package/tests/unit/db/factory.test.ts +0 -436
- package/tests/unit/db/pool-manager.test.ts +0 -440
- package/tests/unit/db/query-limiter.test.ts +0 -387
- package/tests/unit/db/sql-base.test.ts +0 -438
- package/tests/unit/lib/api/error-codes.test.ts +0 -39
- package/tests/unit/lib/audit.test.ts +0 -326
- package/tests/unit/lib/auth.test.ts +0 -146
- package/tests/unit/lib/connection-string-parser.test.ts +0 -424
- package/tests/unit/lib/data-masking.test.ts +0 -583
- package/tests/unit/lib/db-icons.test.tsx +0 -41
- package/tests/unit/lib/monitoring-thresholds.test.ts +0 -133
- package/tests/unit/lib/oidc.test.ts +0 -509
- package/tests/unit/lib/query-generators.test.ts +0 -127
- package/tests/unit/lib/storage/factory.test.ts +0 -71
- package/tests/unit/lib/storage/local-storage.test.ts +0 -114
- package/tests/unit/lib/storage/providers/postgres.test.ts +0 -312
- package/tests/unit/lib/storage/providers/sqlite.test.ts +0 -232
- package/tests/unit/lib/storage/storage-facade-extended.test.ts +0 -331
- package/tests/unit/lib/storage/storage-facade.test.ts +0 -184
- package/tests/unit/lib/storage.test.ts +0 -317
- package/tests/unit/lib/time-series-buffer.test.ts +0 -212
- package/tests/unit/lib/utils.test.ts +0 -24
- package/tests/unit/llm/base-provider.test.ts +0 -238
- package/tests/unit/llm/config.test.ts +0 -262
- package/tests/unit/llm/custom-provider.test.ts +0 -281
- package/tests/unit/llm/gemini-provider.test.ts +0 -248
- package/tests/unit/llm/llm-factory.test.ts +0 -155
- package/tests/unit/llm/ollama-provider.test.ts +0 -288
- package/tests/unit/llm/openai-provider.test.ts +0 -324
- package/tests/unit/llm/retry.test.ts +0 -180
- package/tests/unit/llm/streaming.test.ts +0 -355
- package/tests/unit/logger.test.ts +0 -198
- package/tests/unit/mongodb-completions.test.ts +0 -516
- package/tests/unit/pivot-table-functions.test.ts +0 -76
- package/tests/unit/query-cancelled-error.test.ts +0 -81
- package/tests/unit/schema-diff/diff-engine.test.ts +0 -367
- package/tests/unit/schema-diff/migration-generator.test.ts +0 -513
- package/tests/unit/seed/config-loader.test.ts +0 -73
- package/tests/unit/seed/connection-filter.test.ts +0 -91
- package/tests/unit/seed/credential-resolver.test.ts +0 -85
- package/tests/unit/seed/index.test.ts +0 -72
- package/tests/unit/seed/resolve-connection.test.ts +0 -74
- package/tests/unit/seed/types.test.ts +0 -129
- package/tests/unit/sql/alias-extractor.test.ts +0 -444
- package/tests/unit/sql/statement-splitter.test.ts +0 -348
- package/tests/unit/sql-completions.test.ts +0 -463
- package/tests/unit/ssh-tunnel.test.ts +0 -465
- package/tsconfig.json +0 -42
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
# Query Time Machine
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
Compare query results across different points in time. Answer questions like "What did this data look like yesterday vs today?"
|
|
5
|
-
|
|
6
|
-
## Problem Statement
|
|
7
|
-
Data analysts frequently need to understand how data has changed over time:
|
|
8
|
-
- "Why did our sales drop? What changed since last week?"
|
|
9
|
-
- "This customer had 5 orders yesterday, now shows 3. What happened?"
|
|
10
|
-
- "Compare today's active users with last month"
|
|
11
|
-
|
|
12
|
-
Currently, users must:
|
|
13
|
-
- Manually save query results to files/spreadsheets
|
|
14
|
-
- Re-run queries and manually compare
|
|
15
|
-
- Rely on memory or external documentation
|
|
16
|
-
|
|
17
|
-
## Proposed Solution
|
|
18
|
-
Automatic query result snapshots with visual diff comparison.
|
|
19
|
-
|
|
20
|
-
## Features
|
|
21
|
-
|
|
22
|
-
### 1. Automatic Snapshots
|
|
23
|
-
- Save query results with timestamp automatically
|
|
24
|
-
- Configurable retention (7 days, 30 days, custom)
|
|
25
|
-
- Storage optimization (compress, deduplicate)
|
|
26
|
-
- Manual "Pin" option for important snapshots
|
|
27
|
-
|
|
28
|
-
### 2. Time Selector UI
|
|
29
|
-
```
|
|
30
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
31
|
-
│ Query Results [Today ▼] vs [Yesterday ▼] │
|
|
32
|
-
├─────────────────────────────────────────────────────────────┤
|
|
33
|
-
│ Timeline: ───●────●────●────●────●─── │
|
|
34
|
-
│ Dec 20 21 22 23 24 │
|
|
35
|
-
└─────────────────────────────────────────────────────────────┘
|
|
36
|
-
```
|
|
37
|
-
- Dropdown to select comparison dates
|
|
38
|
-
- Visual timeline with snapshot points
|
|
39
|
-
- Quick presets: "vs Yesterday", "vs Last Week", "vs Last Month"
|
|
40
|
-
|
|
41
|
-
### 3. Diff Visualization
|
|
42
|
-
```
|
|
43
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
44
|
-
│ Changes Summary: +12 new rows, -3 removed, ~5 modified │
|
|
45
|
-
├─────────────────────────────────────────────────────────────┤
|
|
46
|
-
│ name │ orders (Dec 23) │ orders (Dec 24) │ diff │
|
|
47
|
-
├─────────────────┼─────────────────┼─────────────────┼───────┤
|
|
48
|
-
│ + Alice Smith │ - │ 15 │ NEW │
|
|
49
|
-
│ ~ John Doe │ 42 │ 45 │ +3 │
|
|
50
|
-
│ ~ Jane Wilson │ 38 │ 35 │ -3 │
|
|
51
|
-
│ - Bob Johnson │ 12 │ - │ DEL │
|
|
52
|
-
└─────────────────────────────────────────────────────────────┘
|
|
53
|
-
|
|
54
|
-
Legend: + Added ~ Modified - Removed
|
|
55
|
-
```
|
|
56
|
-
- Side-by-side comparison
|
|
57
|
-
- Inline diff with color coding
|
|
58
|
-
- Summary statistics (added/removed/modified counts)
|
|
59
|
-
- Filter: "Show only changes"
|
|
60
|
-
|
|
61
|
-
### 4. Trend Analysis
|
|
62
|
-
- Mini sparkline showing value changes over time
|
|
63
|
-
- "This value increased 23% over the last 7 snapshots"
|
|
64
|
-
- Anomaly detection: "Unusual drop detected on Dec 22"
|
|
65
|
-
|
|
66
|
-
### 5. Query History Integration
|
|
67
|
-
- Link snapshots to specific query executions
|
|
68
|
-
- "Show me all snapshots for this query"
|
|
69
|
-
- Compare results from different query versions
|
|
70
|
-
|
|
71
|
-
## Technical Considerations
|
|
72
|
-
|
|
73
|
-
### Storage Strategy
|
|
74
|
-
```typescript
|
|
75
|
-
interface QuerySnapshot {
|
|
76
|
-
id: string;
|
|
77
|
-
queryHash: string; // Hash of the SQL query
|
|
78
|
-
connectionId: string;
|
|
79
|
-
timestamp: Date;
|
|
80
|
-
rowCount: number;
|
|
81
|
-
checksum: string; // For quick equality check
|
|
82
|
-
data: CompressedData; // Compressed row data
|
|
83
|
-
metadata: {
|
|
84
|
-
executionTime: number;
|
|
85
|
-
fields: string[];
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Storage Options
|
|
91
|
-
1. **LocalStorage/IndexedDB** - Client-side, limited capacity
|
|
92
|
-
2. **Server-side SQLite** - Dedicated snapshot database
|
|
93
|
-
3. **Cloud Storage** - S3/GCS for large datasets
|
|
94
|
-
4. **Hybrid** - Recent in browser, older in cloud
|
|
95
|
-
|
|
96
|
-
### Diff Algorithm
|
|
97
|
-
- Use row primary key for matching
|
|
98
|
-
- Hash-based comparison for quick equality check
|
|
99
|
-
- Deep comparison for modified detection
|
|
100
|
-
- Efficient diff for large datasets (streaming)
|
|
101
|
-
|
|
102
|
-
### API Endpoints
|
|
103
|
-
```
|
|
104
|
-
GET /api/snapshots?queryHash=xxx
|
|
105
|
-
POST /api/snapshots
|
|
106
|
-
GET /api/snapshots/:id
|
|
107
|
-
DELETE /api/snapshots/:id
|
|
108
|
-
GET /api/snapshots/diff?from=id1&to=id2
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
## UI Components
|
|
112
|
-
|
|
113
|
-
### New Components
|
|
114
|
-
- `TimelineSelector.tsx` - Visual timeline with snapshot points
|
|
115
|
-
- `SnapshotDiff.tsx` - Side-by-side comparison view
|
|
116
|
-
- `SnapshotManager.tsx` - List and manage saved snapshots
|
|
117
|
-
- `TrendSparkline.tsx` - Mini trend visualization
|
|
118
|
-
|
|
119
|
-
### Integration Points
|
|
120
|
-
- Results toolbar: "Compare with..." button
|
|
121
|
-
- Query history: "View snapshots" action
|
|
122
|
-
- New bottom panel tab: "Time Machine"
|
|
123
|
-
|
|
124
|
-
## User Flow
|
|
125
|
-
|
|
126
|
-
```
|
|
127
|
-
1. User runs query
|
|
128
|
-
↓
|
|
129
|
-
2. System auto-saves snapshot (if enabled)
|
|
130
|
-
↓
|
|
131
|
-
3. User clicks "Compare with..." or "Time Machine" tab
|
|
132
|
-
↓
|
|
133
|
-
4. User selects comparison date/snapshot
|
|
134
|
-
↓
|
|
135
|
-
5. System shows diff view with changes highlighted
|
|
136
|
-
↓
|
|
137
|
-
6. User can drill down into specific changes
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Configuration Options
|
|
141
|
-
- Auto-snapshot: On/Off
|
|
142
|
-
- Retention period: 7/30/90 days
|
|
143
|
-
- Max snapshots per query: 10/50/100
|
|
144
|
-
- Storage limit: 50MB/200MB/1GB
|
|
145
|
-
- Compression level: Low/Medium/High
|
|
146
|
-
|
|
147
|
-
## Edge Cases
|
|
148
|
-
- Query with no primary key (use row index)
|
|
149
|
-
- Schema changes between snapshots
|
|
150
|
-
- Very large result sets (pagination/sampling)
|
|
151
|
-
- Identical results (show "No changes" state)
|
|
152
|
-
|
|
153
|
-
## Empty States
|
|
154
|
-
- "No snapshots yet. Run a query to create your first snapshot."
|
|
155
|
-
- "This is the first snapshot. Run the query again later to compare."
|
|
156
|
-
- "No changes between selected snapshots."
|
|
157
|
-
|
|
158
|
-
## Acceptance Criteria
|
|
159
|
-
- [ ] Query results are automatically saved as snapshots
|
|
160
|
-
- [ ] User can select two snapshots to compare
|
|
161
|
-
- [ ] Diff view shows added, removed, and modified rows
|
|
162
|
-
- [ ] Changes are color-coded for easy identification
|
|
163
|
-
- [ ] Summary shows counts of each change type
|
|
164
|
-
- [ ] User can filter to show only changes
|
|
165
|
-
- [ ] Snapshots can be manually pinned/deleted
|
|
166
|
-
- [ ] Storage limits are enforced
|
|
167
|
-
- [ ] Works with PostgreSQL, MySQL, SQLite
|
|
168
|
-
|
|
169
|
-
## Dependencies
|
|
170
|
-
- Query execution system
|
|
171
|
-
- Storage system (IndexedDB or server-side)
|
|
172
|
-
- Diff algorithm implementation
|
|
173
|
-
|
|
174
|
-
## Estimated Effort
|
|
175
|
-
High complexity
|
|
176
|
-
|
|
177
|
-
## Priority
|
|
178
|
-
P2 - Differentiating feature
|
|
179
|
-
|
|
180
|
-
## Related Features
|
|
181
|
-
- Query History (existing)
|
|
182
|
-
- Data Visualization (existing)
|
|
183
|
-
- AI Data Storyteller (planned)
|
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
# AI Data Storyteller
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
Transform raw query results into meaningful narratives, insights, and executive summaries using AI. Move beyond "what" the data shows to "why it matters."
|
|
5
|
-
|
|
6
|
-
## Problem Statement
|
|
7
|
-
Data analysts spend significant time:
|
|
8
|
-
- Interpreting query results manually
|
|
9
|
-
- Writing reports explaining data findings
|
|
10
|
-
- Identifying trends and anomalies by eye
|
|
11
|
-
- Translating technical data into business language
|
|
12
|
-
|
|
13
|
-
Non-technical stakeholders struggle to:
|
|
14
|
-
- Understand raw data tables
|
|
15
|
-
- Identify what's important in large datasets
|
|
16
|
-
- Make decisions based on numbers alone
|
|
17
|
-
|
|
18
|
-
## Proposed Solution
|
|
19
|
-
AI-powered data interpretation that automatically generates:
|
|
20
|
-
- Natural language summaries
|
|
21
|
-
- Key insights and anomalies
|
|
22
|
-
- Trend analysis
|
|
23
|
-
- Executive-ready reports
|
|
24
|
-
|
|
25
|
-
## Features
|
|
26
|
-
|
|
27
|
-
### 1. One-Click Insights
|
|
28
|
-
```
|
|
29
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
30
|
-
│ Results (1,247 rows) [✨ Tell me a story]│
|
|
31
|
-
├─────────────────────────────────────────────────────────────┤
|
|
32
|
-
│ │
|
|
33
|
-
│ ┌─────────────────────────────────────────────────────┐ │
|
|
34
|
-
│ │ 📊 Data Story │ │
|
|
35
|
-
│ │ │ │
|
|
36
|
-
│ │ Key Findings: │ │
|
|
37
|
-
│ │ • Sales increased 23% compared to last month │ │
|
|
38
|
-
│ │ • Top performer: Electronics category (+45%) │ │
|
|
39
|
-
│ │ • Warning: Returns in Clothing up 12% │ │
|
|
40
|
-
│ │ │ │
|
|
41
|
-
│ │ Anomalies Detected: │ │
|
|
42
|
-
│ │ • Dec 15: Unusual spike in orders (Black Friday?) │ │
|
|
43
|
-
│ │ • Region "West" underperforming by 2 std deviations │ │
|
|
44
|
-
│ │ │ │
|
|
45
|
-
│ │ Recommendation: │ │
|
|
46
|
-
│ │ "Investigate Clothing returns - may indicate │ │
|
|
47
|
-
│ │ quality or sizing issues" │ │
|
|
48
|
-
│ └─────────────────────────────────────────────────────┘ │
|
|
49
|
-
└─────────────────────────────────────────────────────────────┘
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 2. Smart Question Interface
|
|
53
|
-
Instead of writing SQL, ask questions in natural language:
|
|
54
|
-
```
|
|
55
|
-
User: "What's interesting about this data?"
|
|
56
|
-
AI: "I notice three key patterns..."
|
|
57
|
-
|
|
58
|
-
User: "Why did sales drop in March?"
|
|
59
|
-
AI: "Looking at the data, the drop correlates with..."
|
|
60
|
-
|
|
61
|
-
User: "Summarize this for my manager"
|
|
62
|
-
AI: "Executive Summary: Q4 performance exceeded targets..."
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### 3. Automatic Analysis Types
|
|
66
|
-
|
|
67
|
-
#### Statistical Summary
|
|
68
|
-
- Min, max, mean, median, std deviation
|
|
69
|
-
- Distribution analysis
|
|
70
|
-
- Correlation between columns
|
|
71
|
-
|
|
72
|
-
#### Trend Detection
|
|
73
|
-
- Time-series pattern recognition
|
|
74
|
-
- Seasonality identification
|
|
75
|
-
- Growth rate calculations
|
|
76
|
-
|
|
77
|
-
#### Anomaly Detection
|
|
78
|
-
- Outlier identification
|
|
79
|
-
- Unexpected patterns
|
|
80
|
-
- Missing data patterns
|
|
81
|
-
|
|
82
|
-
#### Comparative Analysis
|
|
83
|
-
- Group comparisons
|
|
84
|
-
- Period-over-period changes
|
|
85
|
-
- Benchmark comparisons
|
|
86
|
-
|
|
87
|
-
### 4. Report Generation
|
|
88
|
-
```
|
|
89
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
90
|
-
│ Generate Report │
|
|
91
|
-
├─────────────────────────────────────────────────────────────┤
|
|
92
|
-
│ Format: [Executive Summary ▼] │
|
|
93
|
-
│ Audience: [Non-Technical ▼] │
|
|
94
|
-
│ Include: [✓] Charts [✓] Key Metrics [ ] Raw Data │
|
|
95
|
-
│ Tone: [Professional ▼] │
|
|
96
|
-
│ │
|
|
97
|
-
│ [Generate PDF] [Copy Markdown] │
|
|
98
|
-
└─────────────────────────────────────────────────────────────┘
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Report templates:
|
|
102
|
-
- Executive Summary (1 page, high-level)
|
|
103
|
-
- Detailed Analysis (comprehensive)
|
|
104
|
-
- Technical Report (for data teams)
|
|
105
|
-
- Presentation Slides (bullet points + charts)
|
|
106
|
-
|
|
107
|
-
### 5. Interactive Exploration
|
|
108
|
-
```
|
|
109
|
-
"Tell me more about the Electronics category"
|
|
110
|
-
↓
|
|
111
|
-
AI drills down and shows subcategory breakdown
|
|
112
|
-
|
|
113
|
-
"Compare this with last year"
|
|
114
|
-
↓
|
|
115
|
-
AI generates year-over-year comparison
|
|
116
|
-
|
|
117
|
-
"What should we do about this?"
|
|
118
|
-
↓
|
|
119
|
-
AI provides actionable recommendations
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Technical Considerations
|
|
123
|
-
|
|
124
|
-
### AI Integration
|
|
125
|
-
```typescript
|
|
126
|
-
interface StorytellerRequest {
|
|
127
|
-
result: QueryResult;
|
|
128
|
-
schemaContext: TableSchema[];
|
|
129
|
-
queryContext: string; // The SQL that generated this
|
|
130
|
-
analysisType: 'summary' | 'trends' | 'anomalies' | 'full';
|
|
131
|
-
audience: 'technical' | 'business' | 'executive';
|
|
132
|
-
previousContext?: string; // For follow-up questions
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
interface StorytellerResponse {
|
|
136
|
-
summary: string;
|
|
137
|
-
keyFindings: Finding[];
|
|
138
|
-
anomalies: Anomaly[];
|
|
139
|
-
recommendations: string[];
|
|
140
|
-
charts: ChartSuggestion[];
|
|
141
|
-
confidence: number;
|
|
142
|
-
}
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### LLM Prompting Strategy
|
|
146
|
-
1. **Context Building**
|
|
147
|
-
- Schema information (table/column names, types)
|
|
148
|
-
- Query intent (what user was looking for)
|
|
149
|
-
- Result statistics (row count, value ranges)
|
|
150
|
-
|
|
151
|
-
2. **Analysis Prompt**
|
|
152
|
-
```
|
|
153
|
-
You are a data analyst. Given this query result:
|
|
154
|
-
- Schema: [tables and columns]
|
|
155
|
-
- Query: [SQL]
|
|
156
|
-
- Sample data: [first 100 rows]
|
|
157
|
-
- Statistics: [aggregates]
|
|
158
|
-
|
|
159
|
-
Provide insights in this format:
|
|
160
|
-
1. Key Findings (3-5 bullet points)
|
|
161
|
-
2. Anomalies (if any)
|
|
162
|
-
3. Trends (if time-series)
|
|
163
|
-
4. Recommendations
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
3. **Audience Adaptation**
|
|
167
|
-
- Technical: Include SQL, statistical terms
|
|
168
|
-
- Business: Focus on metrics, KPIs
|
|
169
|
-
- Executive: High-level, actionable
|
|
170
|
-
|
|
171
|
-
### Data Sampling for Large Results
|
|
172
|
-
- First 100 rows + random sample of 100
|
|
173
|
-
- Statistical aggregates (min, max, avg, percentiles)
|
|
174
|
-
- Column value distributions
|
|
175
|
-
- Never send full dataset to LLM
|
|
176
|
-
|
|
177
|
-
### Streaming Response
|
|
178
|
-
- Stream AI response for better UX
|
|
179
|
-
- Show "Analyzing..." with progress
|
|
180
|
-
- Typewriter effect for narrative
|
|
181
|
-
|
|
182
|
-
## UI Components
|
|
183
|
-
|
|
184
|
-
### New Components
|
|
185
|
-
- `DataStoryPanel.tsx` - Main storyteller interface
|
|
186
|
-
- `InsightCard.tsx` - Individual insight display
|
|
187
|
-
- `AnomalyBadge.tsx` - Anomaly highlight component
|
|
188
|
-
- `ReportGenerator.tsx` - Report export modal
|
|
189
|
-
- `QuestionInput.tsx` - Natural language question input
|
|
190
|
-
|
|
191
|
-
### Integration Points
|
|
192
|
-
- Results toolbar: "Tell me a story" button
|
|
193
|
-
- New bottom panel mode or floating panel
|
|
194
|
-
- Context menu on columns: "Analyze this column"
|
|
195
|
-
- Query editor: Natural language input mode
|
|
196
|
-
|
|
197
|
-
## User Flow
|
|
198
|
-
|
|
199
|
-
```
|
|
200
|
-
1. User runs query, sees results
|
|
201
|
-
↓
|
|
202
|
-
2. Clicks "✨ Tell me a story" button
|
|
203
|
-
↓
|
|
204
|
-
3. AI analyzes data (streaming response)
|
|
205
|
-
↓
|
|
206
|
-
4. Insights panel shows findings
|
|
207
|
-
↓
|
|
208
|
-
5. User can ask follow-up questions
|
|
209
|
-
↓
|
|
210
|
-
6. User exports as report (optional)
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Example Outputs
|
|
214
|
-
|
|
215
|
-
### For Sales Data
|
|
216
|
-
```
|
|
217
|
-
📊 Sales Analysis - December 2024
|
|
218
|
-
|
|
219
|
-
Key Findings:
|
|
220
|
-
• Total revenue: $1.2M (+18% vs November)
|
|
221
|
-
• Best day: December 15 ($89K) - likely Black Friday effect
|
|
222
|
-
• Top category: Electronics (42% of revenue)
|
|
223
|
-
|
|
224
|
-
⚠️ Anomalies:
|
|
225
|
-
• Unusually high returns in Clothing (12% vs 5% average)
|
|
226
|
-
• Western region 23% below other regions
|
|
227
|
-
|
|
228
|
-
📈 Trends:
|
|
229
|
-
• Steady growth since October (+8% MoM)
|
|
230
|
-
• Weekend sales 34% higher than weekdays
|
|
231
|
-
|
|
232
|
-
💡 Recommendations:
|
|
233
|
-
1. Investigate Clothing returns - possible sizing issue
|
|
234
|
-
2. Review Western region - may need marketing push
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### For User Analytics
|
|
238
|
-
```
|
|
239
|
-
📊 User Activity Report
|
|
240
|
-
|
|
241
|
-
Key Findings:
|
|
242
|
-
• 15,234 active users this week (+5%)
|
|
243
|
-
• Average session: 12 minutes
|
|
244
|
-
• Most active: Tuesday 2-4 PM
|
|
245
|
-
|
|
246
|
-
⚠️ Concerns:
|
|
247
|
-
• 23% bounce rate on mobile (desktop: 8%)
|
|
248
|
-
• New user retention dropped to 34%
|
|
249
|
-
|
|
250
|
-
💡 Recommendations:
|
|
251
|
-
1. Prioritize mobile experience optimization
|
|
252
|
-
2. Review onboarding flow for new users
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
## Configuration Options
|
|
256
|
-
- Default analysis depth: Quick / Standard / Deep
|
|
257
|
-
- Preferred language style: Casual / Professional / Academic
|
|
258
|
-
- Auto-analyze on query: On / Off
|
|
259
|
-
- Include chart suggestions: On / Off
|
|
260
|
-
|
|
261
|
-
## Privacy & Security
|
|
262
|
-
- Data sampling (never full dataset to LLM)
|
|
263
|
-
- Option to disable for sensitive queries
|
|
264
|
-
- No PII in prompts (mask if detected)
|
|
265
|
-
- Local-only mode (Ollama) for sensitive data
|
|
266
|
-
|
|
267
|
-
## Acceptance Criteria
|
|
268
|
-
- [ ] "Tell me a story" button appears on results
|
|
269
|
-
- [ ] AI generates natural language summary
|
|
270
|
-
- [ ] Key findings are extracted and highlighted
|
|
271
|
-
- [ ] Anomalies are detected and flagged
|
|
272
|
-
- [ ] User can ask follow-up questions
|
|
273
|
-
- [ ] Reports can be exported as PDF/Markdown
|
|
274
|
-
- [ ] Analysis adapts to audience type
|
|
275
|
-
- [ ] Streaming response for better UX
|
|
276
|
-
- [ ] Works with existing LLM providers
|
|
277
|
-
|
|
278
|
-
## Dependencies
|
|
279
|
-
- LLM integration (existing)
|
|
280
|
-
- Data Visualization (for chart suggestions)
|
|
281
|
-
- Export functionality
|
|
282
|
-
|
|
283
|
-
## Estimated Effort
|
|
284
|
-
High complexity
|
|
285
|
-
|
|
286
|
-
## Priority
|
|
287
|
-
P1 - Core differentiator
|
|
288
|
-
|
|
289
|
-
## Related Features
|
|
290
|
-
- AI Query Assistant (existing)
|
|
291
|
-
- Data Visualization (existing)
|
|
292
|
-
- Query Time Machine (planned)
|