db-mcp 2.0.0 → 3.0.1
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/README.md +96 -91
- package/dist/.tsbuildinfo +1 -0
- package/dist/adapters/database-adapter.d.ts +173 -0
- package/dist/adapters/database-adapter.d.ts.map +1 -0
- package/dist/adapters/query-validation.d.ts +20 -0
- package/dist/adapters/query-validation.d.ts.map +1 -0
- package/dist/adapters/registration/index.d.ts +4 -0
- package/dist/adapters/registration/index.d.ts.map +1 -0
- package/dist/adapters/registration/prompts.d.ts +7 -0
- package/dist/adapters/registration/prompts.d.ts.map +1 -0
- package/dist/adapters/registration/resources.d.ts +7 -0
- package/dist/adapters/registration/resources.d.ts.map +1 -0
- package/dist/adapters/registration/tools.d.ts +9 -0
- package/dist/adapters/registration/tools.d.ts.map +1 -0
- package/dist/adapters/sqlite/index.d.ts +9 -0
- package/dist/adapters/sqlite/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/json-utils.d.ts +100 -0
- package/dist/adapters/sqlite/json-utils.d.ts.map +1 -0
- package/dist/adapters/sqlite/prompts/analysis.d.ts +23 -0
- package/dist/adapters/sqlite/prompts/analysis.d.ts.map +1 -0
- package/dist/adapters/sqlite/prompts/index.d.ts +16 -0
- package/dist/adapters/sqlite/prompts/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/prompts/query.d.ts +19 -0
- package/dist/adapters/sqlite/prompts/query.d.ts.map +1 -0
- package/dist/adapters/sqlite/prompts/schema.d.ts +20 -0
- package/dist/adapters/sqlite/prompts/schema.d.ts.map +1 -0
- package/dist/adapters/sqlite/query-executor.d.ts +38 -0
- package/dist/adapters/sqlite/query-executor.d.ts.map +1 -0
- package/dist/adapters/sqlite/resources.d.ts +13 -0
- package/dist/adapters/sqlite/resources.d.ts.map +1 -0
- package/dist/adapters/sqlite/schema-manager.d.ts +69 -0
- package/dist/adapters/sqlite/schema-manager.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/admin.d.ts +459 -0
- package/dist/adapters/sqlite/schemas/admin.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/codemode.d.ts +30 -0
- package/dist/adapters/sqlite/schemas/codemode.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/common.d.ts +9 -0
- package/dist/adapters/sqlite/schemas/common.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/core.d.ts +530 -0
- package/dist/adapters/sqlite/schemas/core.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/error-mixin.d.ts +10 -0
- package/dist/adapters/sqlite/schemas/error-mixin.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/fts.d.ts +106 -0
- package/dist/adapters/sqlite/schemas/fts.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/geo.d.ts +135 -0
- package/dist/adapters/sqlite/schemas/geo.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/index.d.ts +23 -0
- package/dist/adapters/sqlite/schemas/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/introspection.d.ts +583 -0
- package/dist/adapters/sqlite/schemas/introspection.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/json.d.ts +849 -0
- package/dist/adapters/sqlite/schemas/json.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/migration.d.ts +220 -0
- package/dist/adapters/sqlite/schemas/migration.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/native.d.ts +235 -0
- package/dist/adapters/sqlite/schemas/native.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/server.d.ts +13 -0
- package/dist/adapters/sqlite/schemas/server.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/spatialite.d.ts +114 -0
- package/dist/adapters/sqlite/schemas/spatialite.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/stats.d.ts +780 -0
- package/dist/adapters/sqlite/schemas/stats.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/text.d.ts +570 -0
- package/dist/adapters/sqlite/schemas/text.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/vector.d.ts +252 -0
- package/dist/adapters/sqlite/schemas/vector.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/virtual.d.ts +257 -0
- package/dist/adapters/sqlite/schemas/virtual.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/where.d.ts +20 -0
- package/dist/adapters/sqlite/schemas/where.d.ts.map +1 -0
- package/dist/adapters/sqlite/sqlite-adapter/lifecycle.d.ts +13 -0
- package/dist/adapters/sqlite/sqlite-adapter/lifecycle.d.ts.map +1 -0
- package/dist/adapters/sqlite/sqlite-adapter/schema.d.ts +7 -0
- package/dist/adapters/sqlite/sqlite-adapter/schema.d.ts.map +1 -0
- package/dist/adapters/sqlite/sqlite-adapter.d.ts +138 -0
- package/dist/adapters/sqlite/sqlite-adapter.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/backup/analyze.d.ts +7 -0
- package/dist/adapters/sqlite/tools/admin/backup/analyze.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/backup/create.d.ts +11 -0
- package/dist/adapters/sqlite/tools/admin/backup/create.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/backup/dump.d.ts +7 -0
- package/dist/adapters/sqlite/tools/admin/backup/dump.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/backup/index.d.ts +7 -0
- package/dist/adapters/sqlite/tools/admin/backup/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/backup/integrity.d.ts +7 -0
- package/dist/adapters/sqlite/tools/admin/backup/integrity.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/backup/optimize.d.ts +7 -0
- package/dist/adapters/sqlite/tools/admin/backup/optimize.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/backup/restore.d.ts +7 -0
- package/dist/adapters/sqlite/tools/admin/backup/restore.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/helpers.d.ts +18 -0
- package/dist/adapters/sqlite/tools/admin/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/index.d.ts +10 -0
- package/dist/adapters/sqlite/tools/admin/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/pragma.d.ts +37 -0
- package/dist/adapters/sqlite/tools/admin/pragma.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/reindex.d.ts +10 -0
- package/dist/adapters/sqlite/tools/admin/reindex.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/verify.d.ts +13 -0
- package/dist/adapters/sqlite/tools/admin/verify.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin/wal.d.ts +10 -0
- package/dist/adapters/sqlite/tools/admin/wal.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/codemode.d.ts +22 -0
- package/dist/adapters/sqlite/tools/codemode.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/column-validation.d.ts +26 -0
- package/dist/adapters/sqlite/tools/column-validation.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/alter-table.d.ts +11 -0
- package/dist/adapters/sqlite/tools/core/alter-table.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/constraints.d.ts +10 -0
- package/dist/adapters/sqlite/tools/core/constraints.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/convenience-helpers.d.ts +20 -0
- package/dist/adapters/sqlite/tools/core/convenience-helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/convenience-schemas.d.ts +20 -0
- package/dist/adapters/sqlite/tools/core/convenience-schemas.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/convenience.d.ts +29 -0
- package/dist/adapters/sqlite/tools/core/convenience.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/datetime.d.ts +11 -0
- package/dist/adapters/sqlite/tools/core/datetime.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/index.d.ts +14 -0
- package/dist/adapters/sqlite/tools/core/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/indexes.d.ts +20 -0
- package/dist/adapters/sqlite/tools/core/indexes.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/queries.d.ts +16 -0
- package/dist/adapters/sqlite/tools/core/queries.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/tables.d.ts +37 -0
- package/dist/adapters/sqlite/tools/core/tables.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core/triggers.d.ts +18 -0
- package/dist/adapters/sqlite/tools/core/triggers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/fts.d.ts +13 -0
- package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/geo.d.ts +14 -0
- package/dist/adapters/sqlite/tools/geo.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/index.d.ts +33 -0
- package/dist/adapters/sqlite/tools/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/constraints.d.ts +10 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/constraints.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/diff.d.ts +11 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/diff.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/index.d.ts +10 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/risks.d.ts +9 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/risks.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/snapshot.d.ts +40 -0
- package/dist/adapters/sqlite/tools/introspection/analysis/snapshot.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/diagnostics/index.d.ts +9 -0
- package/dist/adapters/sqlite/tools/introspection/diagnostics/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/diagnostics/indexes.d.ts +10 -0
- package/dist/adapters/sqlite/tools/introspection/diagnostics/indexes.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/diagnostics/query-plan.d.ts +10 -0
- package/dist/adapters/sqlite/tools/introspection/diagnostics/query-plan.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/diagnostics/storage.d.ts +10 -0
- package/dist/adapters/sqlite/tools/introspection/diagnostics/storage.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/graph/helpers.d.ts +44 -0
- package/dist/adapters/sqlite/tools/introspection/graph/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/graph/index.d.ts +9 -0
- package/dist/adapters/sqlite/tools/introspection/graph/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/graph/tools.d.ts +12 -0
- package/dist/adapters/sqlite/tools/introspection/graph/tools.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/index.d.ts +17 -0
- package/dist/adapters/sqlite/tools/introspection/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-helpers/helpers.d.ts +21 -0
- package/dist/adapters/sqlite/tools/json-helpers/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-helpers/index.d.ts +17 -0
- package/dist/adapters/sqlite/tools/json-helpers/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-helpers/read.d.ts +24 -0
- package/dist/adapters/sqlite/tools/json-helpers/read.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-helpers/write.d.ts +24 -0
- package/dist/adapters/sqlite/tools/json-helpers/write.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations/crud.d.ts +39 -0
- package/dist/adapters/sqlite/tools/json-operations/crud.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations/diff.d.ts +11 -0
- package/dist/adapters/sqlite/tools/json-operations/diff.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations/helpers.d.ts +18 -0
- package/dist/adapters/sqlite/tools/json-operations/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations/index.d.ts +10 -0
- package/dist/adapters/sqlite/tools/json-operations/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations/query.d.ts +24 -0
- package/dist/adapters/sqlite/tools/json-operations/query.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations/security.d.ts +19 -0
- package/dist/adapters/sqlite/tools/json-operations/security.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations/transform.d.ts +24 -0
- package/dist/adapters/sqlite/tools/json-operations/transform.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/helpers.d.ts +34 -0
- package/dist/adapters/sqlite/tools/migration/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/index.d.ts +15 -0
- package/dist/adapters/sqlite/tools/migration/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/tracking/apply.d.ts +4 -0
- package/dist/adapters/sqlite/tools/migration/tracking/apply.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/tracking/history.d.ts +4 -0
- package/dist/adapters/sqlite/tools/migration/tracking/history.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/tracking/index.d.ts +7 -0
- package/dist/adapters/sqlite/tools/migration/tracking/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/tracking/init.d.ts +4 -0
- package/dist/adapters/sqlite/tools/migration/tracking/init.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/tracking/record.d.ts +4 -0
- package/dist/adapters/sqlite/tools/migration/tracking/record.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/tracking/rollback.d.ts +4 -0
- package/dist/adapters/sqlite/tools/migration/tracking/rollback.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/migration/tracking/status.d.ts +4 -0
- package/dist/adapters/sqlite/tools/migration/tracking/status.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/advanced.d.ts +28 -0
- package/dist/adapters/sqlite/tools/stats/advanced.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/anomaly-detection.d.ts +22 -0
- package/dist/adapters/sqlite/tools/stats/anomaly-detection.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/basic.d.ts +32 -0
- package/dist/adapters/sqlite/tools/stats/basic.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/helpers.d.ts +27 -0
- package/dist/adapters/sqlite/tools/stats/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/index.d.ts +12 -0
- package/dist/adapters/sqlite/tools/stats/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/inference/hypothesis.d.ts +7 -0
- package/dist/adapters/sqlite/tools/stats/inference/hypothesis.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/inference/index.d.ts +4 -0
- package/dist/adapters/sqlite/tools/stats/inference/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/inference/outlier.d.ts +7 -0
- package/dist/adapters/sqlite/tools/stats/inference/outlier.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/inference/regression.d.ts +7 -0
- package/dist/adapters/sqlite/tools/stats/inference/regression.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/math-helpers.d.ts +17 -0
- package/dist/adapters/sqlite/tools/stats/math-helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats/schema-risks.d.ts +15 -0
- package/dist/adapters/sqlite/tools/stats/schema-risks.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text/formatting.d.ts +48 -0
- package/dist/adapters/sqlite/tools/text/formatting.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text/helpers.d.ts +22 -0
- package/dist/adapters/sqlite/tools/text/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text/index.d.ts +10 -0
- package/dist/adapters/sqlite/tools/text/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text/regex.d.ts +21 -0
- package/dist/adapters/sqlite/tools/text/regex.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text/search.d.ts +17 -0
- package/dist/adapters/sqlite/tools/text/search.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text/sentiment.d.ts +13 -0
- package/dist/adapters/sqlite/tools/text/sentiment.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text/validate.d.ts +11 -0
- package/dist/adapters/sqlite/tools/text/validate.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/vector/helpers.d.ts +11 -0
- package/dist/adapters/sqlite/tools/vector/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/vector/index.d.ts +14 -0
- package/dist/adapters/sqlite/tools/vector/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/vector/metadata.d.ts +28 -0
- package/dist/adapters/sqlite/tools/vector/metadata.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/vector/search.d.ts +16 -0
- package/dist/adapters/sqlite/tools/vector/search.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/vector/storage.d.ts +24 -0
- package/dist/adapters/sqlite/tools/vector/storage.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/vector/tools.d.ts +9 -0
- package/dist/adapters/sqlite/tools/vector/tools.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/analysis.d.ts +24 -0
- package/dist/adapters/sqlite/tools/virtual/analysis.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/extensions.d.ts +13 -0
- package/dist/adapters/sqlite/tools/virtual/extensions.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/helpers.d.ts +18 -0
- package/dist/adapters/sqlite/tools/virtual/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/index.d.ts +10 -0
- package/dist/adapters/sqlite/tools/virtual/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/views.d.ts +21 -0
- package/dist/adapters/sqlite/tools/virtual/views.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/analyze-csv.d.ts +4 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/analyze-csv.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/csv.d.ts +4 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/csv.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/drop.d.ts +4 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/drop.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/index.d.ts +6 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/info.d.ts +4 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/info.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/list.d.ts +4 -0
- package/dist/adapters/sqlite/tools/virtual/vtable/list.d.ts.map +1 -0
- package/dist/adapters/sqlite/types.d.ts +89 -0
- package/dist/adapters/sqlite/types.d.ts.map +1 -0
- package/dist/adapters/sqlite-helpers.d.ts +51 -0
- package/dist/adapters/sqlite-helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/extensions.d.ts +17 -0
- package/dist/adapters/sqlite-native/extensions.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/index.d.ts +11 -0
- package/dist/adapters/sqlite-native/index.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/native-query-executor.d.ts +24 -0
- package/dist/adapters/sqlite-native/native-query-executor.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/native-sqlite-adapter.d.ts +160 -0
- package/dist/adapters/sqlite-native/native-sqlite-adapter.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/registration/index.d.ts +12 -0
- package/dist/adapters/sqlite-native/registration/index.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite/analysis.d.ts +23 -0
- package/dist/adapters/sqlite-native/tools/spatialite/analysis.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite/index.d.ts +15 -0
- package/dist/adapters/sqlite-native/tools/spatialite/index.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite/loader.d.ts +22 -0
- package/dist/adapters/sqlite-native/tools/spatialite/loader.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite/schemas.d.ts +78 -0
- package/dist/adapters/sqlite-native/tools/spatialite/schemas.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite/tools.d.ts +30 -0
- package/dist/adapters/sqlite-native/tools/spatialite/tools.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/transactions.d.ts +12 -0
- package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window.d.ts +7 -0
- package/dist/adapters/sqlite-native/tools/window.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/transaction-methods.d.ts +36 -0
- package/dist/adapters/sqlite-native/transaction-methods.d.ts.map +1 -0
- package/dist/audit/backup-manager.d.ts +90 -0
- package/dist/audit/backup-manager.d.ts.map +1 -0
- package/dist/audit/index.d.ts +11 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/interceptor.d.ts +54 -0
- package/dist/audit/interceptor.d.ts.map +1 -0
- package/dist/audit/logger.d.ts +62 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/types.d.ts +112 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/auth/auth-context.d.ts +28 -0
- package/dist/auth/auth-context.d.ts.map +1 -0
- package/dist/auth/authorization-server-discovery.d.ts +90 -0
- package/dist/auth/authorization-server-discovery.d.ts.map +1 -0
- package/dist/auth/errors.d.ts +74 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/middleware/core.d.ts +22 -0
- package/dist/auth/middleware/core.d.ts.map +1 -0
- package/dist/auth/middleware/express-auth.d.ts +13 -0
- package/dist/auth/middleware/express-auth.d.ts.map +1 -0
- package/dist/auth/middleware/express-scopes.d.ts +6 -0
- package/dist/auth/middleware/express-scopes.d.ts.map +1 -0
- package/dist/auth/middleware/extraction.d.ts +2 -0
- package/dist/auth/middleware/extraction.d.ts.map +1 -0
- package/dist/auth/middleware/index.d.ts +5 -0
- package/dist/auth/middleware/index.d.ts.map +1 -0
- package/dist/auth/oauth-resource-server.d.ts +74 -0
- package/dist/auth/oauth-resource-server.d.ts.map +1 -0
- package/dist/auth/scope-map.d.ts +24 -0
- package/dist/auth/scope-map.d.ts.map +1 -0
- package/dist/auth/scopes/constants.d.ts +40 -0
- package/dist/auth/scopes/constants.d.ts.map +1 -0
- package/dist/auth/scopes/display.d.ts +5 -0
- package/dist/auth/scopes/display.d.ts.map +1 -0
- package/dist/auth/scopes/enforcement.d.ts +27 -0
- package/dist/auth/scopes/enforcement.d.ts.map +1 -0
- package/dist/auth/scopes/index.d.ts +6 -0
- package/dist/auth/scopes/index.d.ts.map +1 -0
- package/dist/auth/scopes/mapping.d.ts +39 -0
- package/dist/auth/scopes/mapping.d.ts.map +1 -0
- package/dist/auth/scopes/validation.d.ts +27 -0
- package/dist/auth/scopes/validation.d.ts.map +1 -0
- package/dist/auth/token-validator.d.ts +63 -0
- package/dist/auth/token-validator.d.ts.map +1 -0
- package/dist/auth/transport-agnostic.d.ts +11 -0
- package/dist/auth/transport-agnostic.d.ts.map +1 -0
- package/dist/auth/types.d.ts +257 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/{chunk-WBER5YY4.js → chunk-37G4DLL6.js} +1010 -409
- package/dist/chunk-E5IESRTK.js +489 -0
- package/dist/{chunk-645ZEFLA.js → chunk-L552U3QS.js} +887 -309
- package/dist/{chunk-5Y42NPBP.js → chunk-NV34JSQM.js} +4656 -1829
- package/dist/{chunk-Z7C2TM4L.js → chunk-W5WQVNVX.js} +169 -57
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +47 -26
- package/dist/codemode/api-constants.d.ts +40 -0
- package/dist/codemode/api-constants.d.ts.map +1 -0
- package/dist/codemode/api.d.ts +70 -0
- package/dist/codemode/api.d.ts.map +1 -0
- package/dist/codemode/auto-return.d.ts +25 -0
- package/dist/codemode/auto-return.d.ts.map +1 -0
- package/dist/codemode/index.d.ts +12 -0
- package/dist/codemode/index.d.ts.map +1 -0
- package/dist/codemode/sandbox-factory.d.ts +72 -0
- package/dist/codemode/sandbox-factory.d.ts.map +1 -0
- package/dist/codemode/sandbox.d.ts +54 -0
- package/dist/codemode/sandbox.d.ts.map +1 -0
- package/dist/codemode/security.d.ts +45 -0
- package/dist/codemode/security.d.ts.map +1 -0
- package/dist/codemode/types.d.ts +167 -0
- package/dist/codemode/types.d.ts.map +1 -0
- package/dist/constants/server-instructions.d.ts +22 -0
- package/dist/constants/server-instructions.d.ts.map +1 -0
- package/dist/filtering/tool-constants.d.ts +45 -0
- package/dist/filtering/tool-constants.d.ts.map +1 -0
- package/dist/filtering/tool-filter.d.ts +82 -0
- package/dist/filtering/tool-filter.d.ts.map +1 -0
- package/dist/{http-6KF4ULDI.js → http-HWTUVFIA.js} +498 -391
- package/dist/index.d.ts +9 -1065
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -6
- package/dist/server/mcp-server.d.ts +66 -0
- package/dist/server/mcp-server.d.ts.map +1 -0
- package/dist/server/registration/audit-tools.d.ts +13 -0
- package/dist/server/registration/audit-tools.d.ts.map +1 -0
- package/dist/server/registration/built-in-tools.d.ts +8 -0
- package/dist/server/registration/built-in-tools.d.ts.map +1 -0
- package/dist/server/registration/help-resources.d.ts +7 -0
- package/dist/server/registration/help-resources.d.ts.map +1 -0
- package/dist/server/registration/index.d.ts +4 -0
- package/dist/server/registration/index.d.ts.map +1 -0
- package/dist/{sqlite-U5KSYQXK.js → sqlite-TB56Z7G3.js} +61 -17
- package/dist/{sqlite-native-JXMCFQBA.js → sqlite-native-IF75BB3O.js} +459 -254
- package/dist/transports/http/index.d.ts +8 -0
- package/dist/transports/http/index.d.ts.map +1 -0
- package/dist/transports/http/middleware.d.ts +25 -0
- package/dist/transports/http/middleware.d.ts.map +1 -0
- package/dist/transports/http/oauth.d.ts +24 -0
- package/dist/transports/http/oauth.d.ts.map +1 -0
- package/dist/transports/http/session.d.ts +2 -0
- package/dist/transports/http/session.d.ts.map +1 -0
- package/dist/transports/http/sessions/index.d.ts +4 -0
- package/dist/transports/http/sessions/index.d.ts.map +1 -0
- package/dist/transports/http/sessions/legacy-sse.d.ts +6 -0
- package/dist/transports/http/sessions/legacy-sse.d.ts.map +1 -0
- package/dist/transports/http/sessions/mutex.d.ts +6 -0
- package/dist/transports/http/sessions/mutex.d.ts.map +1 -0
- package/dist/transports/http/sessions/stateful.d.ts +12 -0
- package/dist/transports/http/sessions/stateful.d.ts.map +1 -0
- package/dist/transports/http/sessions/stateless.d.ts +6 -0
- package/dist/transports/http/sessions/stateless.d.ts.map +1 -0
- package/dist/transports/http/transport.d.ts +65 -0
- package/dist/transports/http/transport.d.ts.map +1 -0
- package/dist/transports/http/type-adapters.d.ts +20 -0
- package/dist/transports/http/type-adapters.d.ts.map +1 -0
- package/dist/transports/http/types.d.ts +120 -0
- package/dist/transports/http/types.d.ts.map +1 -0
- package/dist/types/adapter.d.ts +138 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/auth.d.ts +79 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/database.d.ts +100 -0
- package/dist/types/database.d.ts.map +1 -0
- package/dist/types/filtering.d.ts +41 -0
- package/dist/types/filtering.d.ts.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/server.d.ts +48 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/utils/annotations.d.ts +62 -0
- package/dist/utils/annotations.d.ts.map +1 -0
- package/dist/utils/errors/base.d.ts +33 -0
- package/dist/utils/errors/base.d.ts.map +1 -0
- package/dist/utils/errors/categories.d.ts +41 -0
- package/dist/utils/errors/categories.d.ts.map +1 -0
- package/dist/utils/errors/classes.d.ts +124 -0
- package/dist/utils/errors/classes.d.ts.map +1 -0
- package/dist/utils/errors/error-response-fields.d.ts +24 -0
- package/dist/utils/errors/error-response-fields.d.ts.map +1 -0
- package/dist/utils/errors/format.d.ts +74 -0
- package/dist/utils/errors/format.d.ts.map +1 -0
- package/dist/utils/errors/index.d.ts +11 -0
- package/dist/utils/errors/index.d.ts.map +1 -0
- package/dist/utils/errors/suggestions.d.ts +16 -0
- package/dist/utils/errors/suggestions.d.ts.map +1 -0
- package/dist/utils/icons.d.ts +19 -0
- package/dist/utils/icons.d.ts.map +1 -0
- package/dist/utils/identifiers.d.ts +121 -0
- package/dist/utils/identifiers.d.ts.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/insights-manager.d.ts +39 -0
- package/dist/utils/insights-manager.d.ts.map +1 -0
- package/dist/utils/logger/error-codes.d.ts +48 -0
- package/dist/utils/logger/error-codes.d.ts.map +1 -0
- package/dist/utils/logger/index.d.ts +22 -0
- package/dist/utils/logger/index.d.ts.map +1 -0
- package/dist/utils/logger/logger.d.ts +94 -0
- package/dist/utils/logger/logger.d.ts.map +1 -0
- package/dist/utils/logger/module-logger.d.ts +28 -0
- package/dist/utils/logger/module-logger.d.ts.map +1 -0
- package/dist/utils/logger/types.d.ts +36 -0
- package/dist/utils/logger/types.d.ts.map +1 -0
- package/dist/utils/progress-utils.d.ts +54 -0
- package/dist/utils/progress-utils.d.ts.map +1 -0
- package/dist/utils/redaction.d.ts +4 -0
- package/dist/utils/redaction.d.ts.map +1 -0
- package/dist/utils/resource-annotations.d.ts +36 -0
- package/dist/utils/resource-annotations.d.ts.map +1 -0
- package/dist/utils/validate-json-path.d.ts +43 -0
- package/dist/utils/validate-json-path.d.ts.map +1 -0
- package/dist/utils/validate-path.d.ts +37 -0
- package/dist/utils/validate-path.d.ts.map +1 -0
- package/dist/utils/where-clause.d.ts +42 -0
- package/dist/utils/where-clause.d.ts.map +1 -0
- package/dist/version.d.ts +10 -0
- package/dist/version.d.ts.map +1 -0
- package/package.json +26 -13
- package/.gitattributes +0 -2
- package/.gitleaks.toml +0 -9
- package/.trivyignore +0 -8
- package/dist/chunk-OKOVZ5QE.js +0 -28
- package/dist/chunk-SFJQCNG7.js +0 -131
- package/dist/chunk-VIDSICEL.js +0 -85
- package/dist/chunk-X3MUUOWM.js +0 -152
- package/dist/worker-script.d.ts +0 -2
- package/dist/worker-script.js +0 -150
- package/logs/.gitkeep +0 -1
- package/mcp-config-example.json +0 -83
- package/playwright.config.ts +0 -101
- package/scripts/generate-server-instructions.ts +0 -111
- package/scripts/update-badges.ts +0 -99
- package/server.json +0 -54
- package/test-server/README.md +0 -115
- package/test-server/code-map.md +0 -421
- package/test-server/fixtures/sample.csv +0 -6
- package/test-server/reset-database.ps1 +0 -415
- package/test-server/sample.csv +0 -11
- package/test-server/scripts/README.md +0 -27
- package/test-server/scripts/test-help-resources.mjs +0 -245
- package/test-server/scripts/test-prompts.mjs +0 -251
- package/test-server/scripts/test-tool-annotations.mjs +0 -162
- package/test-server/test-advanced/README.md +0 -70
- package/test-server/test-advanced/test-codemode-advanced-admin.md +0 -174
- package/test-server/test-advanced/test-codemode-advanced-core.md +0 -193
- package/test-server/test-advanced/test-codemode-advanced-geo.md +0 -157
- package/test-server/test-advanced/test-codemode-advanced-introspection.md +0 -171
- package/test-server/test-advanced/test-codemode-advanced-json.md +0 -169
- package/test-server/test-advanced/test-codemode-advanced-migration.md +0 -160
- package/test-server/test-advanced/test-codemode-advanced-stats.md +0 -185
- package/test-server/test-advanced/test-codemode-advanced-text.md +0 -183
- package/test-server/test-advanced/test-codemode-advanced-transactions.md +0 -136
- package/test-server/test-advanced/test-codemode-advanced-vector.md +0 -141
- package/test-server/test-codemode/README.md +0 -121
- package/test-server/test-codemode/test-codemode-admin.md +0 -223
- package/test-server/test-codemode/test-codemode-core.md +0 -286
- package/test-server/test-codemode/test-codemode-geo.md +0 -177
- package/test-server/test-codemode/test-codemode-introspection.md +0 -190
- package/test-server/test-codemode/test-codemode-json.md +0 -237
- package/test-server/test-codemode/test-codemode-migration.md +0 -278
- package/test-server/test-codemode/test-codemode-sandbox.md +0 -413
- package/test-server/test-codemode/test-codemode-stats.md +0 -232
- package/test-server/test-codemode/test-codemode-text.md +0 -237
- package/test-server/test-codemode/test-codemode-transactions.md +0 -236
- package/test-server/test-codemode/test-codemode-vector.md +0 -244
- package/test-server/test-codemode/test-codemode-wasm-degradation.md +0 -394
- package/test-server/test-database.sql +0 -424
- package/test-server/test-preflight.md +0 -53
- package/test-server/test-prompts.md +0 -354
- package/test-server/test-resources.md +0 -272
- package/test-server/test-tool-groups/README.md +0 -100
- package/test-server/test-tool-groups/test-admin-core.md +0 -165
- package/test-server/test-tool-groups/test-admin-extensions.md +0 -133
- package/test-server/test-tool-groups/test-core-data.md +0 -262
- package/test-server/test-tool-groups/test-core-schema.md +0 -240
- package/test-server/test-tool-groups/test-geo-haversine.md +0 -130
- package/test-server/test-tool-groups/test-geo-spatialite.md +0 -110
- package/test-server/test-tool-groups/test-introspection-diagnostics.md +0 -123
- package/test-server/test-tool-groups/test-introspection-schema.md +0 -133
- package/test-server/test-tool-groups/test-json-read.md +0 -219
- package/test-server/test-tool-groups/test-json-write.md +0 -157
- package/test-server/test-tool-groups/test-migration.md +0 -193
- package/test-server/test-tool-groups/test-stats-advanced.md +0 -118
- package/test-server/test-tool-groups/test-stats-basic.md +0 -156
- package/test-server/test-tool-groups/test-text-advanced.md +0 -169
- package/test-server/test-tool-groups/test-text-basic.md +0 -177
- package/test-server/test-tool-groups/test-transactions.md +0 -179
- package/test-server/test-tool-groups/test-vector-read.md +0 -130
- package/test-server/test-tool-groups/test-vector-write.md +0 -115
- package/test-server/tool-reference.md +0 -257
- package/tsconfig.build.json +0 -6
- package/tsconfig.test.json +0 -9
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# db-mcp Advanced Stress Tests
|
|
2
|
-
|
|
3
|
-
> **This document is optimized for AI agent consumption.** It provides context and execution rules for the advanced stress testing suite located in this directory.
|
|
4
|
-
|
|
5
|
-
This directory contains the "Second-Pass" advanced tests for the `db-mcp` tool groups. These tests simulate complex, edge-case, and boundary interactions using exclusively **Code Mode** (`sqlite_execute_code`).
|
|
6
|
-
|
|
7
|
-
## Pre-requisites
|
|
8
|
-
|
|
9
|
-
1. Basic deterministic tool group checklists (located in `../test-tool-groups/*.md`) MUST be successfully passed before running these advanced tests.
|
|
10
|
-
2. Code Mode basic tests (located in `../test-tool-groups-codemode/*.md`) MUST be successfully passed.
|
|
11
|
-
3. The testing database MUST be freshly seeded via `Set-Location C:\Users\chris\Desktop\db-mcp\test-server; .\reset-database.ps1` to ensure deterministic results.
|
|
12
|
-
|
|
13
|
-
## File Inventory
|
|
14
|
-
|
|
15
|
-
| File | Primary Focus | Key Validations |
|
|
16
|
-
| ----------------------------------------- | ------------- | ----------------------------------------------------------------------------------------- |
|
|
17
|
-
| `test-codemode-advanced-core.md` | Core | Boundary values, empty states, state pollution, idempotency, error quality, payload sizes |
|
|
18
|
-
| `test-codemode-advanced-json.md` | JSON | Deep nesting, merge conflicts (RFC 7396), type coercion, write safety |
|
|
19
|
-
| `test-codemode-advanced-text.md` | Text | Regex edge cases, fuzzy/phonetic stress, FTS5 state integrity `[NATIVE ONLY]` |
|
|
20
|
-
| `test-codemode-advanced-stats.md` | Stats | Empty/single-row/NULL-heavy stats, extreme values, window functions `[NATIVE ONLY]` |
|
|
21
|
-
| `test-codemode-advanced-vector.md` | Vector | Empty tables, distance metrics, dimension mismatch, batch operations |
|
|
22
|
-
| `test-codemode-advanced-admin.md` | Admin | View lifecycle, virtual tables, backup/restore, pragma edge cases |
|
|
23
|
-
| `test-codemode-advanced-transactions.md` | Transactions | Abort recovery, savepoint stress, execute rollback `[NATIVE ONLY]` |
|
|
24
|
-
| `test-codemode-advanced-geo.md` | Geo | Haversine boundary conditions, nearby edge cases, SpatiaLite `[NATIVE ONLY]` |
|
|
25
|
-
| `test-codemode-advanced-introspection.md` | Introspection | Graph analysis, schema snapshot, storage/index audit, query plan depth |
|
|
26
|
-
| `test-codemode-advanced-migration.md` | Migration | Lifecycle, state pollution, SHA-256 dedup, error paths |
|
|
27
|
-
|
|
28
|
-
## Agent Execution Protocol
|
|
29
|
-
|
|
30
|
-
1. **Strict Code Mode Only:** All advanced stress tests must be executed entirely via `sqlite_execute_code`. Direct tool calls are forbidden unless specifically instructed for baseline comparison.
|
|
31
|
-
2. **Sequential Grouping:** Execute only **one markdown file at a time**. Report findings, fix errors, apply updates to the changelog, and commit before advancing to the next file.
|
|
32
|
-
3. **Payload Optimization (Token Monitoring):** Monitor `metrics.tokenEstimate` on every response. If extremely large unbounded responses are produced, flag as 📦 **Payload Issue**.
|
|
33
|
-
4. **Structured Error Adherence:** When testing boundary failure parameters, assert that the handler outputs a proper structured error (`{success: false, error: "..."}`) rather than leaking raw SQLite errors.
|
|
34
|
-
5. **No Persistent Pollution:** After finishing a file, verify all `stress_*` tables/views/indexes are dropped. No test state should bleed into the next run.
|
|
35
|
-
6. **Code Over Docs (When Standards Violated)**: If the code deviates from established standards (e.g., throwing raw MCP errors instead of Structured Errors, or failing Zod validation), **fix the handler code**. Do not modify documentation, prompts, or `gotchas.md` to accommodate buggy code.
|
|
36
|
-
7. **Documentation Parity & Test Prompt Integrity**: Only update files in `src/constants/server-instructions` (or test prompts) if the code's behavior is mathematically/logically correct and intended, but the documentation is inaccurate, outdated, or lacking specificity. You SHOULD directly edit the markdown test files in this directory to fix factual errors, broken code blocks, or incorrect test assertions.
|
|
37
|
-
8. **Testing Limits**: Do not run build or tests automatically (`npm run lint`, `npm run typecheck`, `npm run test:e2e`, `vitest`, or `playwright`). The user will execute them manually. When you reach the validate step, explicitly instruct the user to run the validations.
|
|
38
|
-
|
|
39
|
-
### 9. WASM Mode Execution
|
|
40
|
-
|
|
41
|
-
When testing against a **WASM backend** (`--sqlite` flag, sql.js adapter), follow these additional rules:
|
|
42
|
-
|
|
43
|
-
#### Skip Rules
|
|
44
|
-
|
|
45
|
-
- **`[NATIVE ONLY]` items**: Skip all categories and individual test items annotated with `[NATIVE ONLY]`.
|
|
46
|
-
- **Transactions prompt**: Skip entirely — all 8 transaction tools are `[NATIVE ONLY]`.
|
|
47
|
-
- **Window function items** (stats Category 4): Skip — 6 window tools are Native-only.
|
|
48
|
-
- **SpatiaLite items** (geo Category 5): Skip — 7 SpatiaLite tools are Native-only.
|
|
49
|
-
- **FTS5 items** (text Category 6): Skip — 5 FTS5 tools are Native-only.
|
|
50
|
-
|
|
51
|
-
#### Graceful Degradation (Don't Skip — Validate Errors)
|
|
52
|
-
|
|
53
|
-
Several admin tools are **registered in WASM mode but return structured errors**. Test these as **negative validation**:
|
|
54
|
-
|
|
55
|
-
| Tool | Expected WASM Behavior |
|
|
56
|
-
| ------------------------------------ | ---------------------------------------------- |
|
|
57
|
-
| `sqlite.admin.backup(...)` | `{success: false, error: "...WASM mode"}` |
|
|
58
|
-
| `sqlite.admin.restore(...)` | `{success: false, error: "...WASM mode"}` |
|
|
59
|
-
| `sqlite.admin.verifyBackup(...)` | `{success: false, error: "...WASM mode"}` |
|
|
60
|
-
| `sqlite.admin.createCsvTable(...)` | `{success: false}` — CSV extension unavailable |
|
|
61
|
-
| `sqlite.admin.analyzeCsvSchema(...)` | `{success: false}` — CSV extension unavailable |
|
|
62
|
-
| `sqlite.admin.createRtreeTable(...)` | `{success: false}` — R-Tree module unavailable |
|
|
63
|
-
|
|
64
|
-
#### Adjusted Expectations
|
|
65
|
-
|
|
66
|
-
| Item | Native Behavior | WASM Behavior |
|
|
67
|
-
| ---------------------------------------------------- | --------------------------- | -------------------------------- |
|
|
68
|
-
| `sqlite.admin.dbstat({summarize: true})` | Per-table storage breakdown | Counts-only (JS fallback) |
|
|
69
|
-
| `sqlite.admin.pragmaCompileOptions({filter: "FTS"})` | Matches FTS5 | Matches FTS3 |
|
|
70
|
-
| `test_articles_fts` in `listVirtualTables` | Present and queryable | May appear but FTS5 queries fail |
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
# db-mcp Advanced Stress Test — [admin]
|
|
2
|
-
|
|
3
|
-
> [!IMPORTANT]
|
|
4
|
-
> **Do not track progress in this file.** Track your test progress, coverage matrix, and findings in your internal task tracking system (artifact). However, you SHOULD edit this file to fix any factual errors, broken code, or incorrect assertions in the test prompts.
|
|
5
|
-
> If there is nothing to fix, don't update UNRELEASED.md.
|
|
6
|
-
> We're currently testing Native mode.
|
|
7
|
-
|
|
8
|
-
**Step 1:** Read `C:\Users\chris\Desktop\db-mcp\src\constants\server-instructions\gotchas.md` using `view_file`.
|
|
9
|
-
|
|
10
|
-
**Step 2:** Execute each numbered stress test below using `sqlite_execute_code` (code mode).
|
|
11
|
-
|
|
12
|
-
**Step 3:** The agent should update C:\Users\chris\Desktop\db-mcp\UNRELEASED.md with any/all changes/fixes.
|
|
13
|
-
|
|
14
|
-
## WASM Mode
|
|
15
|
-
|
|
16
|
-
> When testing against a **WASM backend** (`--sqlite` / sql.js), apply these adjustments:
|
|
17
|
-
|
|
18
|
-
- **Category 2**: Item 6 (`createRtreeTable`) — returns `{success: false}` in WASM (R-Tree unavailable). Treat as **negative validation**. Item 7 (`listVirtualTables`) — `test_articles_fts` may appear but is not queryable.
|
|
19
|
-
- **Category 3**: All 3 items (11-13) return `{success: false, error: "...WASM mode"}`. Treat as **negative validation** — verify the structured error, do not skip.
|
|
20
|
-
- **Category 4**: Item 16 (`pragmaCompileOptions` FTS filter) — WASM shows FTS3 instead of FTS5.
|
|
21
|
-
- **Category 5**: Items 21-22 (`analyzeCsvSchema`, `createCsvTable`) — return `{success: false}` in WASM (CSV extension unavailable). Treat as **negative validation**.
|
|
22
|
-
- All other categories are WASM-compatible.
|
|
23
|
-
|
|
24
|
-
## Code Mode Execution
|
|
25
|
-
|
|
26
|
-
- **Code Over Docs**: Fix the handler code if standards (Structured Errors/Zod) are violated. Do NOT change docs/prompts to accommodate broken code.
|
|
27
|
-
|
|
28
|
-
All tests via `sqlite_execute_code`. Use `sqlite.admin.*` for admin tools, `sqlite.core.*` for read/write.
|
|
29
|
-
State persists across calls. Do NOT pass `readonly: true`. Group related tests into single calls.
|
|
30
|
-
|
|
31
|
-
## Test Database Schema
|
|
32
|
-
|
|
33
|
-
| Table | Rows | Key Columns |
|
|
34
|
-
| ----------------- | ---- | ------------------------------------------------------ |
|
|
35
|
-
| test_products | 16 | id, name, price, category, created_at |
|
|
36
|
-
| test_orders | 20 | id, product_id (FK→test_products), total_price, status |
|
|
37
|
-
| test_articles_fts | — | FTS5 virtual table (title, body) `[NATIVE ONLY]` |
|
|
38
|
-
|
|
39
|
-
> **CSV testing**: Use absolute path `C:\Users\chris\Desktop\db-mcp\test-server\sample.csv`.
|
|
40
|
-
|
|
41
|
-
## Naming & Cleanup
|
|
42
|
-
|
|
43
|
-
- **Temporary tables**: `stress_*` prefix
|
|
44
|
-
- **Temporary views**: `stress_view_*` prefix
|
|
45
|
-
- Drop at end. If DROP fails due to lock, note and move on.
|
|
46
|
-
|
|
47
|
-
## Reporting Format
|
|
48
|
-
|
|
49
|
-
- ❌ Fail | ⚠️ Issue | 📦 Payload (monitor `metrics.tokenEstimate`) | ✅ Confirmed (inline only)
|
|
50
|
-
|
|
51
|
-
### Error Message Quality Rating
|
|
52
|
-
|
|
53
|
-
| Level | Verdict |
|
|
54
|
-
| -------------------------------------- | ------- |
|
|
55
|
-
| 5 - Excellent (name + code + context) | ✅ |
|
|
56
|
-
| 4 - Good (name) | ✅ |
|
|
57
|
-
| 3 - Adequate (raw SQLite, informative) | ⚠️ |
|
|
58
|
-
| 2 - Poor (no object name) | ⚠️ |
|
|
59
|
-
| 1 - Useless (generic) | ❌ |
|
|
60
|
-
|
|
61
|
-
## Structured Error Response Pattern
|
|
62
|
-
|
|
63
|
-
Handler error ✅ = JSON with `success` + `error`. MCP error ❌ = raw text, `isError: true`.
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## admin Group Tools (26)
|
|
68
|
-
|
|
69
|
-
1. sqlite_pragma_database_list
|
|
70
|
-
2. sqlite_pragma_compile_options
|
|
71
|
-
3. sqlite_pragma_settings
|
|
72
|
-
4. sqlite_pragma_table_info
|
|
73
|
-
5. sqlite_pragma_optimize
|
|
74
|
-
6. sqlite_index_stats
|
|
75
|
-
7. sqlite_integrity_check
|
|
76
|
-
8. sqlite_analyze
|
|
77
|
-
9. sqlite_dbstat
|
|
78
|
-
10. sqlite_vacuum
|
|
79
|
-
11. sqlite_optimize
|
|
80
|
-
12. sqlite_create_view
|
|
81
|
-
13. sqlite_list_views
|
|
82
|
-
14. sqlite_drop_view
|
|
83
|
-
15. sqlite_list_virtual_tables
|
|
84
|
-
16. sqlite_virtual_table_info
|
|
85
|
-
17. sqlite_drop_virtual_table
|
|
86
|
-
18. sqlite_create_csv_table
|
|
87
|
-
19. sqlite_analyze_csv_schema
|
|
88
|
-
20. sqlite_create_rtree_table
|
|
89
|
-
21. sqlite_create_series_table
|
|
90
|
-
22. sqlite_generate_series
|
|
91
|
-
23. sqlite_backup
|
|
92
|
-
24. sqlite_restore
|
|
93
|
-
25. sqlite_verify_backup
|
|
94
|
-
26. sqlite_append_insight
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
### Category 1: View Lifecycle Stress
|
|
99
|
-
|
|
100
|
-
1. `sqlite.admin.createView({viewName: "stress_view_orders", selectQuery: "SELECT product_id, COUNT(*) as cnt FROM test_orders GROUP BY product_id"})` → success
|
|
101
|
-
2. `sqlite.admin.listViews()` → verify `stress_view_orders` present
|
|
102
|
-
3. `sqlite.admin.dropView({viewName: "stress_view_orders"})` → success
|
|
103
|
-
4. `sqlite.admin.dropView({viewName: "stress_view_orders"})` → structured error or "not found" (not raw crash)
|
|
104
|
-
5. `sqlite.admin.createView({viewName: "stress_view_orders", selectQuery: "SELECT product_id, COUNT(*) as cnt FROM test_orders GROUP BY product_id"})` → recreate success
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
### Category 2: Virtual Table Edge Cases
|
|
109
|
-
|
|
110
|
-
6. `sqlite.admin.createRtreeTable({tableName: "stress_rtree_test", dimensions: 2})` → success
|
|
111
|
-
7. `sqlite.admin.listVirtualTables()` → verify `stress_rtree_test` present alongside `test_articles_fts` (Native)
|
|
112
|
-
8. `sqlite.admin.virtualTableInfo({tableName: "stress_rtree_test"})` → correct module and column info
|
|
113
|
-
9. `sqlite.admin.dropVirtualTable({tableName: "stress_rtree_test"})` → success
|
|
114
|
-
10. `sqlite.admin.virtualTableInfo({tableName: "nonexistent_vtable_xyz"})` → structured error
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
### Category 3: Backup/Restore Integrity
|
|
119
|
-
|
|
120
|
-
> Use absolute path: `C:\Users\chris\Desktop\db-mcp\test-server\stress-backup.db`
|
|
121
|
-
|
|
122
|
-
11. `sqlite.admin.backup({targetPath: "C:\\Users\\chris\\Desktop\\db-mcp\\test-server\\stress-backup.db"})` → success
|
|
123
|
-
12. `sqlite.admin.verifyBackup({backupPath: "C:\\Users\\chris\\Desktop\\db-mcp\\test-server\\stress-backup.db"})` → integrity verified
|
|
124
|
-
13. `sqlite.admin.verifyBackup({backupPath: "nonexistent_file.db"})` → structured error
|
|
125
|
-
14. Note backup file for manual removal
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
### Category 4: Pragma Edge Cases
|
|
130
|
-
|
|
131
|
-
15. `sqlite.admin.pragmaCompileOptions({filter: "THREAD"})` → filtered result subset
|
|
132
|
-
16. `sqlite.admin.pragmaCompileOptions({filter: "FTS"})` → filtered to FTS options
|
|
133
|
-
17. `sqlite.admin.pragmaSettings({pragma: "journal_mode"})` → `{value: "wal"}`
|
|
134
|
-
18. `sqlite.admin.pragmaTableInfo({table: "nonexistent_table_xyz"})` → report behavior
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
### Category 5: Series & CSV Edge Cases
|
|
139
|
-
|
|
140
|
-
19. `sqlite.admin.generateSeries({start: 1, stop: 100, step: 1})` → 100 values — check payload size
|
|
141
|
-
20. `sqlite.admin.generateSeries({start: 1, stop: 1, step: 1})` → single value
|
|
142
|
-
21. `sqlite.admin.analyzeCsvSchema({filePath: "C:\\Users\\chris\\Desktop\\db-mcp\\test-server\\sample.csv"})` → inferred types
|
|
143
|
-
22. `sqlite.admin.createCsvTable({tableName: "stress_csv", filePath: "nonexistent_file.csv"})` → structured error
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
### Category 6: Error Message Quality
|
|
148
|
-
|
|
149
|
-
23. `sqlite.admin.dropView({viewName: "nonexistent_view_xyz"})` → structured error
|
|
150
|
-
24. `sqlite.admin.verifyBackup({backupPath: "nonexistent_backup.db"})` → structured error
|
|
151
|
-
25. `sqlite.admin.createCsvTable({tableName: "stress_csv", filePath: "nonexistent_file.csv"})` → structured error
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
### Category 7: WASM Boundary Verification
|
|
156
|
-
|
|
157
|
-
For WASM testing only:
|
|
158
|
-
|
|
159
|
-
26. Verify that backup/restore/verify, CSV, and R-Tree tools return `{success: false}` structured errors (not crashes). Confirm all other admin tools produce identical results in WASM and Native.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
### Final Cleanup
|
|
164
|
-
|
|
165
|
-
Drop all `stress_*` tables and views. Confirm `test_products` (16 rows) and `test_orders` (20 rows) unchanged.
|
|
166
|
-
|
|
167
|
-
## Post-Test Procedures
|
|
168
|
-
|
|
169
|
-
1. **Cleanup**: Drop all `stress_*` objects
|
|
170
|
-
2. **Fix EVERY finding** — ❌, ⚠️, 📦
|
|
171
|
-
3. **Validate**: Instruct the user to run the test suite (Vitest/Playwright), lint, and typecheck. Do NOT run them yourself.
|
|
172
|
-
4. **Commit**: Stage and commit — do NOT push
|
|
173
|
-
5. **Re-test**: After server rebuild
|
|
174
|
-
6. **Token audit**: Report most expensive block
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
# db-mcp Advanced Stress Test — [core]
|
|
2
|
-
|
|
3
|
-
> [!IMPORTANT]
|
|
4
|
-
> **Do not track progress in this file.** Track your test progress, coverage matrix, and findings in your internal task tracking system (artifact). However, you SHOULD edit this file to fix any factual errors, broken code, or incorrect assertions in the test prompts.
|
|
5
|
-
> If there is nothing to fix, don't update UNRELEASED.md.
|
|
6
|
-
> We're currently testing Native mode.
|
|
7
|
-
|
|
8
|
-
**Step 1:** Read `C:\Users\chris\Desktop\db-mcp\src\constants\server-instructions\gotchas.md` using `view_file`.
|
|
9
|
-
|
|
10
|
-
**Step 2:** Execute each numbered stress test below using `sqlite_execute_code` (code mode), not scripts/terminal.
|
|
11
|
-
|
|
12
|
-
**Step 3:** The agent should update C:\Users\chris\Desktop\db-mcp\UNRELEASED.md with any/all changes/fixes.
|
|
13
|
-
|
|
14
|
-
## WASM Mode
|
|
15
|
-
|
|
16
|
-
> When testing against a **WASM backend** (`--sqlite` / sql.js): All 14 core tools are fully WASM-compatible. No categories to skip or adjust.
|
|
17
|
-
|
|
18
|
-
## Code Mode Execution
|
|
19
|
-
|
|
20
|
-
- **Code Over Docs**: Fix the handler code if standards (Structured Errors/Zod) are violated. Do NOT change docs/prompts to accommodate broken code.
|
|
21
|
-
|
|
22
|
-
All tests via `sqlite_execute_code`. Translation table:
|
|
23
|
-
|
|
24
|
-
| Direct Tool Call | Code Mode Equivalent |
|
|
25
|
-
| ------------------------------------------- | ------------------------------------------- |
|
|
26
|
-
| `sqlite_read_query({query: "..."})` | `sqlite.core.readQuery({query: "..."})` |
|
|
27
|
-
| `sqlite_write_query({query: "..."})` | `sqlite.core.writeQuery({query: "..."})` |
|
|
28
|
-
| `sqlite_create_table({...})` | `sqlite.core.createTable({...})` |
|
|
29
|
-
| `sqlite_describe_table({tableName: "..."})` | `sqlite.core.describeTable("...")` |
|
|
30
|
-
| `sqlite_drop_table({tableName: "..."})` | `sqlite.core.dropTable({tableName: "..."})` |
|
|
31
|
-
| `sqlite_create_index({...})` | `sqlite.core.createIndex({...})` |
|
|
32
|
-
| `sqlite_get_indexes({...})` | `sqlite.core.getIndexes({...})` |
|
|
33
|
-
|
|
34
|
-
**Key rules:** State persists across calls. Do NOT pass `readonly: true`. Group related tests into single calls.
|
|
35
|
-
|
|
36
|
-
## Test Database Schema
|
|
37
|
-
|
|
38
|
-
| Table | Rows | Key Columns |
|
|
39
|
-
| ----------------- | ---- | --------------------------------------------------------- |
|
|
40
|
-
| test_products | 16 | id, name, description, price (REAL), category, created_at |
|
|
41
|
-
| test_orders | 20 | id, product_id (FK→test_products), total_price, status |
|
|
42
|
-
| test_measurements | 200 | id, sensor_id (1-5), temperature, humidity, pressure |
|
|
43
|
-
| test_events | 100 | id, event_type, user_id, payload (JSON), event_date |
|
|
44
|
-
|
|
45
|
-
## Naming & Cleanup
|
|
46
|
-
|
|
47
|
-
- **Temporary tables**: `stress_*` prefix
|
|
48
|
-
- **Temporary indexes**: `stress_idx_*` prefix
|
|
49
|
-
- If DROP fails due to lock, note and move on.
|
|
50
|
-
|
|
51
|
-
## Reporting Format
|
|
52
|
-
|
|
53
|
-
- ❌ Fail: Tool errors or produces incorrect results
|
|
54
|
-
- ⚠️ Issue: Unexpected behavior or improvement opportunity
|
|
55
|
-
- 📦 Payload: Unnecessarily large response — monitor `metrics.tokenEstimate`. Report size in KB.
|
|
56
|
-
- ✅ Confirmed: Edge case handled correctly (inline only; omit from Final Summary)
|
|
57
|
-
|
|
58
|
-
### Error Message Quality Rating
|
|
59
|
-
|
|
60
|
-
| Quality Level | Example | Verdict |
|
|
61
|
-
| ----------------- | ------------------------------------------------------------------- | ------- |
|
|
62
|
-
| **5 - Excellent** | `Table 'stress_empty_table' does not exist (code: TABLE_NOT_FOUND)` | ✅ |
|
|
63
|
-
| **4 - Good** | `Table 'stress_empty_table' does not exist` | ✅ |
|
|
64
|
-
| **3 - Adequate** | `SQLITE_ERROR: no such table: stress_empty_table` | ⚠️ |
|
|
65
|
-
| **2 - Poor** | `SQLITE_ERROR: no such table` | ⚠️ |
|
|
66
|
-
| **1 - Useless** | `Query failed` or generic `Error occurred` | ❌ |
|
|
67
|
-
|
|
68
|
-
### Error Code Consistency
|
|
69
|
-
|
|
70
|
-
Flag any generic code (`RESOURCE_ERROR`, `UNKNOWN_ERROR`) that should be specific (e.g., `TABLE_NOT_FOUND`, `COLUMN_NOT_FOUND`). Treat as ⚠️.
|
|
71
|
-
|
|
72
|
-
## Structured Error Response Pattern
|
|
73
|
-
|
|
74
|
-
Handler error ✅ = JSON with `success` + `error` fields. MCP error ❌ = raw text, `isError: true`.
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## core Group Tools (14 + codemode)
|
|
79
|
-
|
|
80
|
-
1. sqlite_read_query
|
|
81
|
-
2. sqlite_write_query
|
|
82
|
-
3. sqlite_create_table
|
|
83
|
-
4. sqlite_list_tables
|
|
84
|
-
5. sqlite_describe_table
|
|
85
|
-
6. sqlite_drop_table
|
|
86
|
-
7. sqlite_get_indexes
|
|
87
|
-
8. sqlite_create_index
|
|
88
|
-
9. sqlite_drop_index
|
|
89
|
-
10. sqlite_count
|
|
90
|
-
11. sqlite_exists
|
|
91
|
-
12. sqlite_upsert
|
|
92
|
-
13. sqlite_batch_insert
|
|
93
|
-
14. sqlite_truncate
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
### Category 1: Boundary Values & Empty States
|
|
98
|
-
|
|
99
|
-
**1.1 Empty Table Operations**
|
|
100
|
-
|
|
101
|
-
Create `stress_empty_table (id INTEGER PRIMARY KEY, name TEXT, value REAL)`, then test:
|
|
102
|
-
|
|
103
|
-
1. `sqlite.core.readQuery({query: "SELECT COUNT(*) AS n FROM stress_empty_table"})` → `{rows: [{n: 0}]}`
|
|
104
|
-
2. `sqlite.core.describeTable("stress_empty_table")` → valid schema with 3 columns
|
|
105
|
-
3. `sqlite.core.getIndexes({table: "stress_empty_table"})` → empty or primary key only
|
|
106
|
-
4. `sqlite.core.count({table: "stress_empty_table"})` → `{count: 0}`
|
|
107
|
-
5. `sqlite.core.exists({table: "stress_empty_table"})` → `{exists: false}` (no rows)
|
|
108
|
-
|
|
109
|
-
**1.2 Single-Row Table**
|
|
110
|
-
|
|
111
|
-
Insert one row: `(1, 'solo', 42.0)`, then:
|
|
112
|
-
|
|
113
|
-
6. `sqlite.core.readQuery({query: "SELECT * FROM stress_empty_table"})` → exactly 1 row
|
|
114
|
-
7. `sqlite.core.exists({table: "stress_empty_table"})` → `{exists: true}`
|
|
115
|
-
8. `sqlite.core.count({table: "stress_empty_table"})` → `{count: 1}`
|
|
116
|
-
|
|
117
|
-
**1.3 NULL-Heavy Data**
|
|
118
|
-
|
|
119
|
-
Insert 4 more rows: 3 with `name IS NULL AND value IS NULL`, 1 with actual values:
|
|
120
|
-
|
|
121
|
-
9. `sqlite.core.readQuery({query: "SELECT COUNT(*) AS n FROM stress_empty_table WHERE value IS NULL"})` → `{rows: [{n: 3}]}`
|
|
122
|
-
10. `sqlite.core.readQuery({query: "SELECT COUNT(value) AS n FROM stress_empty_table"})` → `{rows: [{n: 2}]}` (COUNT of non-null)
|
|
123
|
-
11. `sqlite.core.count({table: "stress_empty_table", column: "value"})` → 2 (non-null count)
|
|
124
|
-
|
|
125
|
-
**1.4 Extreme Numeric Values**
|
|
126
|
-
|
|
127
|
-
Insert: `(value: 99999999.99)`, `(value: -99999999.99)`, `(value: 0.0)`, `(value: 0.01)`:
|
|
128
|
-
|
|
129
|
-
12. `sqlite.stats.statsBasic({table: "stress_empty_table", column: "value"})` → verify min/max/avg handle extreme values
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
### Category 2: State Pollution & Idempotency
|
|
134
|
-
|
|
135
|
-
**2.1 Create-Drop-Recreate Cycles**
|
|
136
|
-
|
|
137
|
-
13. `sqlite.core.createTable(...)` → create `stress_cycle_table (id INTEGER PRIMARY KEY, data TEXT)`
|
|
138
|
-
14. `sqlite.core.createIndex({table: "stress_cycle_table", columns: ["data"], indexName: "stress_idx_cycle"})` → success
|
|
139
|
-
15. `sqlite.core.dropTable({table: "stress_cycle_table"})` → success
|
|
140
|
-
16. `sqlite.core.dropTable({table: "stress_cycle_table"})` → expect structured error or `{existed: false}` (not raw crash)
|
|
141
|
-
17. `sqlite.core.createTable(...)` → recreate `stress_cycle_table` → success (no orphaned metadata)
|
|
142
|
-
18. Cleanup: drop `stress_cycle_table`
|
|
143
|
-
|
|
144
|
-
**2.2 Duplicate Object Detection**
|
|
145
|
-
|
|
146
|
-
19. `sqlite.core.createTable(...)` with table name `test_products` → expect error or "already exists"
|
|
147
|
-
20. `sqlite.core.createIndex(...)` on existing `idx_orders_status` → expect error or "already exists"
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
### Category 3: Error Message Quality
|
|
152
|
-
|
|
153
|
-
For each test, verify **structured response** (`{success: false, error: "..."}`). Rate each error message 1-5.
|
|
154
|
-
|
|
155
|
-
**3.1 Nonexistent Objects**
|
|
156
|
-
|
|
157
|
-
21. `sqlite.core.describeTable("nonexistent_table_xyz")` → error should mention table name
|
|
158
|
-
22. `sqlite.core.readQuery({query: "SELECT * FROM nonexistent_table_xyz"})` → error should mention table name
|
|
159
|
-
23. `sqlite.core.getIndexes({table: "nonexistent_table_xyz"})` → report behavior
|
|
160
|
-
24. `sqlite.core.writeQuery("INSERT INTO nonexistent_table_xyz VALUES (1)")` → structured error
|
|
161
|
-
|
|
162
|
-
**3.2 Invalid SQL**
|
|
163
|
-
|
|
164
|
-
25. `sqlite.core.readQuery({query: "SELEKT * FROM test_products"})` → structured error with SQL syntax context
|
|
165
|
-
26. `sqlite.core.writeQuery("INSERT INTO test_products (nonexistent_col) VALUES (1)")` → structured error mentioning column
|
|
166
|
-
|
|
167
|
-
**3.3 Type/Constraint Violations**
|
|
168
|
-
|
|
169
|
-
27. `sqlite.core.writeQuery("INSERT INTO test_products (id, name, price, category) VALUES (1, 'dup', 10.0, 'cat')")` → duplicate primary key error (id=1 exists)
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
### Category 4: Large Payload & Truncation Verification
|
|
174
|
-
|
|
175
|
-
28. `sqlite.core.readQuery({query: "SELECT * FROM test_measurements"})` → 200 rows — verify response size, check if truncation is applied
|
|
176
|
-
29. `sqlite.core.readQuery({query: "SELECT * FROM test_measurements LIMIT 5"})` → exactly 5 rows
|
|
177
|
-
30. `sqlite.core.readQuery({query: "SELECT * FROM test_events"})` → 100 rows — check payload size
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
### Final Cleanup
|
|
182
|
-
|
|
183
|
-
Drop all `stress_*` tables. Confirm `test_products` row count is still 16 (no pollution).
|
|
184
|
-
|
|
185
|
-
## Post-Test Procedures
|
|
186
|
-
|
|
187
|
-
1. **Cleanup**: Drop all `stress_*` objects
|
|
188
|
-
2. **Fix EVERY finding** — ❌ Fails, ⚠️ Issues, 📦 Payloads. All changes consistent with `code-map.md`
|
|
189
|
-
3. **Scope of fixes**: Handler code, server-instructions, test database, this prompt
|
|
190
|
-
4. **Validate**: Instruct the user to run the test suite (Vitest/Playwright), lint, and typecheck. Do NOT run them yourself.
|
|
191
|
-
5. **Commit**: Stage and commit — do NOT push
|
|
192
|
-
6. **Re-test**: After server rebuild, re-test fixes with code mode calls
|
|
193
|
-
7. **Token audit**: Report most expensive block
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
# db-mcp Advanced Stress Test — [geo]
|
|
2
|
-
|
|
3
|
-
> [!IMPORTANT]
|
|
4
|
-
> **Do not track progress in this file.** Track your test progress, coverage matrix, and findings in your internal task tracking system (artifact). However, you SHOULD edit this file to fix any factual errors, broken code, or incorrect assertions in the test prompts.
|
|
5
|
-
> If there is nothing to fix, don't update UNRELEASED.md.
|
|
6
|
-
> We're currently testing Native mode.
|
|
7
|
-
|
|
8
|
-
**Step 1:** Read `C:\Users\chris\Desktop\db-mcp\src\constants\server-instructions\gotchas.md` using `view_file`.
|
|
9
|
-
|
|
10
|
-
**Step 2:** Execute each numbered stress test below using `sqlite_execute_code` (code mode).
|
|
11
|
-
|
|
12
|
-
**Step 3:** The agent should update C:\Users\chris\Desktop\db-mcp\UNRELEASED.md with any/all changes/fixes.
|
|
13
|
-
|
|
14
|
-
## WASM Mode
|
|
15
|
-
|
|
16
|
-
> When testing against a **WASM backend** (`--sqlite` / sql.js), apply these adjustments:
|
|
17
|
-
|
|
18
|
-
- **Skip Category 5** entirely (SpatiaLite Integration — items 15-23) — `[NATIVE ONLY]`.
|
|
19
|
-
- **Category 6**: Skip item 26 (`spatialiteQuery`) — `[NATIVE ONLY]`.
|
|
20
|
-
- **Category 7** (WASM Boundary Verification) — execute only in WASM mode.
|
|
21
|
-
- Categories 1-4, 6 (items 24-25) are fully WASM-compatible (4 Haversine tools).
|
|
22
|
-
|
|
23
|
-
## Code Mode Execution
|
|
24
|
-
|
|
25
|
-
- **Code Over Docs**: Fix the handler code if standards (Structured Errors/Zod) are violated. Do NOT change docs/prompts to accommodate broken code.
|
|
26
|
-
|
|
27
|
-
All tests via `sqlite_execute_code`. Use `sqlite.geo.*` for geo/SpatiaLite tools.
|
|
28
|
-
State persists across calls. Do NOT pass `readonly: true`. Group related tests into single calls.
|
|
29
|
-
|
|
30
|
-
## Test Database Schema
|
|
31
|
-
|
|
32
|
-
| Table | Rows | Key Columns |
|
|
33
|
-
| -------------- | ---- | ----------------------------------------- |
|
|
34
|
-
| test_locations | 15 | id, name, city, latitude, longitude, type |
|
|
35
|
-
|
|
36
|
-
**Key coordinates:**
|
|
37
|
-
|
|
38
|
-
| Name | City | Lat | Lng |
|
|
39
|
-
| ------------------ | ------------- | -------- | --------- |
|
|
40
|
-
| Central Park | New York | 40.7829 | -73.9654 |
|
|
41
|
-
| Eiffel Tower | Paris | 48.8584 | 2.2945 |
|
|
42
|
-
| Big Ben | London | 51.5007 | -0.1246 |
|
|
43
|
-
| Tokyo Tower | Tokyo | 35.6586 | 139.7454 |
|
|
44
|
-
| Sydney Opera House | Sydney | -33.8568 | 151.2153 |
|
|
45
|
-
| Golden Gate Bridge | San Francisco | 37.8199 | -122.4783 |
|
|
46
|
-
|
|
47
|
-
## Naming & Cleanup
|
|
48
|
-
|
|
49
|
-
- **Temporary tables**: `stress_*` prefix. Drop at end using `sqlite.core.dropTable({table: "..."})`. Do NOT use `writeQuery` for `DROP TABLE` as DDL commands are blocked by the query executor.
|
|
50
|
-
|
|
51
|
-
## Reporting Format
|
|
52
|
-
|
|
53
|
-
- ❌ Fail | ⚠️ Issue | 📦 Payload (monitor `metrics.tokenEstimate`) | ✅ Confirmed (inline only)
|
|
54
|
-
|
|
55
|
-
## Structured Error Response Pattern
|
|
56
|
-
|
|
57
|
-
Handler error ✅ = JSON with `success` + `error`. MCP error ❌ = raw text, `isError: true`.
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## geo Group Tools — Native (11)
|
|
62
|
-
|
|
63
|
-
1. sqlite_geo_distance
|
|
64
|
-
2. sqlite_geo_nearby
|
|
65
|
-
3. sqlite_geo_bounding_box
|
|
66
|
-
4. sqlite_geo_cluster
|
|
67
|
-
5. sqlite_spatialite_load `[NATIVE ONLY]`
|
|
68
|
-
6. sqlite_spatialite_create_table `[NATIVE ONLY]`
|
|
69
|
-
7. sqlite_spatialite_query `[NATIVE ONLY]`
|
|
70
|
-
8. sqlite_spatialite_analyze `[NATIVE ONLY]`
|
|
71
|
-
9. sqlite_spatialite_index `[NATIVE ONLY]`
|
|
72
|
-
10. sqlite_spatialite_transform `[NATIVE ONLY]`
|
|
73
|
-
11. sqlite_spatialite_import `[NATIVE ONLY]`
|
|
74
|
-
|
|
75
|
-
### WASM (4)
|
|
76
|
-
|
|
77
|
-
Only the Haversine-based tools: items 1-4.
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
### Category 1: Haversine Boundary Conditions
|
|
82
|
-
|
|
83
|
-
1. `sqlite.geo.distance({lat1: 0, lon1: 0, lat2: 0, lon2: 0})` → distance = 0 (same point)
|
|
84
|
-
2. `sqlite.geo.distance({lat1: 90, lon1: 0, lat2: -90, lon2: 0})` → antipodal ≈ 20,015 km (half Earth circumference)
|
|
85
|
-
3. `sqlite.geo.distance({lat1: 0, lon1: -180, lat2: 0, lon2: 180})` → ≈ 0 (same point, opposite notation)
|
|
86
|
-
4. `sqlite.geo.distance({lat1: 91, lon1: 0, lat2: 0, lon2: 0})` → report behavior for out-of-bounds latitude (>90°)
|
|
87
|
-
5. `sqlite.geo.distance({lat1: 0, lon1: 181, lat2: 0, lon2: 0})` → report behavior for out-of-bounds longitude (>180°)
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
### Category 2: Nearby Search Edge Cases
|
|
92
|
-
|
|
93
|
-
6. `sqlite.geo.nearby({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", centerLat: 40.7829, centerLon: -73.9654, radius: 0.1})` → very small radius — only Central Park (within 100m)
|
|
94
|
-
7. `sqlite.geo.nearby({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", centerLat: 40.7829, centerLon: -73.9654, radius: 50000})` → very large radius — ALL 15 locations
|
|
95
|
-
8. `sqlite.geo.nearby({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", centerLat: 0, centerLon: 0, radius: 100})` → no locations near (0,0) — 0 results (not error)
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
### Category 3: Bounding Box Edge Cases
|
|
100
|
-
|
|
101
|
-
9. `sqlite.geo.boundingBox({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", minLat: -90, maxLat: 90, minLon: -180, maxLon: 180})` → all 15 locations (global bounding box)
|
|
102
|
-
10. `sqlite.geo.boundingBox({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", minLat: 0, maxLat: 0, minLon: 0, maxLon: 0})` → 0 results (point bounding box)
|
|
103
|
-
11. `sqlite.geo.boundingBox({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", minLat: 50, maxLat: 52, minLon: -1, maxLon: 1})` → London locations (Big Ben, Tower Bridge, Buckingham Palace)
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
### Category 4: Clustering Edge Cases
|
|
108
|
-
|
|
109
|
-
12. `sqlite.geo.cluster({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", gridSize: 180})` → ~3 clusters (huge grid splits logically along Prime Meridian/Equator)
|
|
110
|
-
13. `sqlite.geo.cluster({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", gridSize: 0.001})` → ~15 clusters (tiny grid, one per location)
|
|
111
|
-
14. `sqlite.geo.cluster({table: "test_locations", latColumn: "latitude", lonColumn: "longitude", gridSize: 0.1})` → approximately one cluster per city
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
### Category 5: SpatiaLite Integration `[NATIVE ONLY]`
|
|
116
|
-
|
|
117
|
-
15. `sqlite.geo.spatialiteLoad()` → verify version string returned
|
|
118
|
-
16. `sqlite.geo.spatialiteCreateTable({tableName: "stress_geo_spatial", geometryColumn: "geom", geometryType: "POINT", srid: 4326, additionalColumns: [{name: "name", type: "TEXT"}, {name: "type", type: "TEXT"}]})` → success
|
|
119
|
-
17. Import 3 points (NYC, Paris, Tokyo) via `sqlite.geo.spatialiteImport`
|
|
120
|
-
18. `sqlite.geo.spatialiteQuery({query: "SELECT name, AsText(geom) FROM stress_geo_spatial"})` → 3 rows with WKT
|
|
121
|
-
19. `sqlite.geo.spatialiteTransform({operation: "buffer", geometry1: "POINT(-73.9654 40.7829)", distance: 0.01})` → buffered polygon
|
|
122
|
-
20. `sqlite.geo.spatialiteTransform({operation: "centroid", geometry1: "POLYGON((-74 40, -74 41, -73 41, -73 40, -74 40))"})` → centroid point
|
|
123
|
-
21. `sqlite.geo.spatialiteIndex({tableName: "stress_geo_spatial", geometryColumn: "geom", action: "create"})` → R-Tree index
|
|
124
|
-
22. `sqlite.geo.spatialiteIndex({tableName: "stress_geo_spatial", geometryColumn: "geom", action: "check"})` → index integrity
|
|
125
|
-
23. `sqlite.geo.spatialiteAnalyze({analysisType: "spatial_extent", sourceTable: "stress_geo_spatial", geometryColumn: "geom"})` → spatial extent
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
### Category 6: Error Message Quality
|
|
130
|
-
|
|
131
|
-
24. `sqlite.geo.nearby({table: "nonexistent_table_xyz", latColumn: "lat", lonColumn: "lon", centerLat: 0, centerLon: 0, radius: 100})` → structured error
|
|
132
|
-
25. `sqlite.geo.nearby({table: "test_locations", latColumn: "nonexistent_col", lonColumn: "longitude", centerLat: 0, centerLon: 0, radius: 100})` → structured error about column
|
|
133
|
-
26. `sqlite.geo.spatialiteQuery({query: "SELECT * FROM nonexistent_table_xyz"})` `[NATIVE ONLY]` → structured error
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
### Category 7: WASM Boundary Verification
|
|
138
|
-
|
|
139
|
-
For WASM testing only:
|
|
140
|
-
|
|
141
|
-
27. Confirm SpatiaLite tools (items 5-11) are NOT present in the tool list
|
|
142
|
-
28. All 4 Haversine tools should produce identical results in WASM and Native
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
### Final Cleanup
|
|
147
|
-
|
|
148
|
-
Drop `stress_*` tables (if created) using `sqlite.core.dropTable({table: "..."})`. (Note: SpatiaLite index shadow tables like `idx_stress_*` will be automatically cleaned up by `Set-Location C:\Users\chris\Desktop\db-mcp\test-server; .\reset-database.ps1`). Confirm `test_locations` count is still 15.
|
|
149
|
-
|
|
150
|
-
## Post-Test Procedures
|
|
151
|
-
|
|
152
|
-
1. **Cleanup**: Drop all `stress_*` objects
|
|
153
|
-
2. **Fix EVERY finding** — ❌, ⚠️, 📦
|
|
154
|
-
3. **Validate**: Instruct the user to run the test suite (Vitest/Playwright), lint, and typecheck. Do NOT run them yourself.
|
|
155
|
-
4. **Commit**: Stage and commit — do NOT push
|
|
156
|
-
5. **Re-test**: After server rebuild
|
|
157
|
-
6. **Token audit**: Report most expensive block
|