db-mcp 4.0.0 → 5.0.0
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 +30 -25
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/database-adapter.d.ts +9 -0
- package/dist/adapters/database-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite/query-executor.d.ts.map +1 -1
- package/dist/adapters/sqlite/read-write-lock.d.ts +49 -0
- package/dist/adapters/sqlite/read-write-lock.d.ts.map +1 -0
- package/dist/adapters/sqlite/schemas/admin.d.ts +5 -5
- package/dist/adapters/sqlite/schemas/admin.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/core.d.ts +94 -0
- package/dist/adapters/sqlite/schemas/core.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/introspection.d.ts +8 -7
- package/dist/adapters/sqlite/schemas/introspection.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/migration.d.ts +2 -2
- package/dist/adapters/sqlite/schemas/migration.d.ts.map +1 -1
- package/dist/adapters/sqlite/sqlite-adapter.d.ts +6 -0
- package/dist/adapters/sqlite/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/admin/backup/create.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/admin/backup/dump.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/admin/backup/restore.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/admin/pragma.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/admin/verify.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/codemode.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/core/convenience.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/core/index.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/core/queries.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/core/versioning.d.ts +19 -0
- package/dist/adapters/sqlite/tools/core/versioning.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/introspection/graph/tools.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/json-operations/crud.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/migration/helpers.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/vector/metadata.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/vector/search.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/vector/storage.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/virtual/vtable/analyze-csv.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/virtual/vtable/csv.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/virtual/vtable/info.d.ts.map +1 -1
- package/dist/adapters/sqlite/types.d.ts +1 -1
- package/dist/adapters/sqlite/types.d.ts.map +1 -1
- package/dist/adapters/sqlite-native/index.d.ts +1 -1
- package/dist/adapters/sqlite-native/index.d.ts.map +1 -1
- package/dist/adapters/sqlite-native/tools/window/helpers.d.ts +52 -0
- package/dist/adapters/sqlite-native/tools/window/helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window/index.d.ts +7 -0
- package/dist/adapters/sqlite-native/tools/window/index.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window/lag-lead.d.ts +7 -0
- package/dist/adapters/sqlite-native/tools/window/lag-lead.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window/moving-average.d.ts +7 -0
- package/dist/adapters/sqlite-native/tools/window/moving-average.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window/ntile.d.ts +7 -0
- package/dist/adapters/sqlite-native/tools/window/ntile.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window/rank.d.ts +7 -0
- package/dist/adapters/sqlite-native/tools/window/rank.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window/row-number.d.ts +7 -0
- package/dist/adapters/sqlite-native/tools/window/row-number.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window/running-total.d.ts +7 -0
- package/dist/adapters/sqlite-native/tools/window/running-total.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window/schemas.d.ts +159 -0
- package/dist/adapters/sqlite-native/tools/window/schemas.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/transaction-methods.d.ts.map +1 -1
- package/dist/audit/logger.d.ts.map +1 -1
- package/dist/auth/authorization-server-discovery.d.ts.map +1 -1
- package/dist/auth/scopes/mapping.d.ts.map +1 -1
- package/dist/auth/token-validator.d.ts.map +1 -1
- package/dist/{chunk-EQF3WZHX.js → chunk-27C5EE6U.js} +15 -2
- package/dist/{chunk-R5M4WKDM.js → chunk-2TYICG7B.js} +381 -185
- package/dist/{chunk-NIC5Z2CA.js → chunk-LLIAIJPO.js} +394 -381
- package/dist/{chunk-TGE7LFAR.js → chunk-UE7GVOBV.js} +1069 -355
- package/dist/{chunk-Y57WFKAP.js → chunk-XLIYO3YA.js} +178 -72
- package/dist/cli.js +18 -6
- package/dist/codemode/api-constants.d.ts.map +1 -1
- package/dist/codemode/api.d.ts.map +1 -1
- package/dist/codemode/sandbox-factory.d.ts.map +1 -1
- package/dist/codemode/sandbox.d.ts +0 -3
- package/dist/codemode/sandbox.d.ts.map +1 -1
- package/dist/codemode/security.d.ts.map +1 -1
- package/dist/codemode/types.d.ts +2 -0
- package/dist/codemode/types.d.ts.map +1 -1
- package/dist/constants/server-instructions.d.ts.map +1 -1
- package/dist/filtering/tool-constants.d.ts +5 -5
- package/dist/filtering/tool-constants.d.ts.map +1 -1
- package/dist/{http-2WGR3E5K.js → http-ZDMK46QU.js} +183 -32
- package/dist/index.js +4 -4
- package/dist/observability/system-db.d.ts.map +1 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/registration/admin-tools.d.ts.map +1 -1
- package/dist/server/registration/audit-tools/backup.d.ts +8 -0
- package/dist/server/registration/audit-tools/backup.d.ts.map +1 -0
- package/dist/server/registration/audit-tools/helpers.d.ts +11 -0
- package/dist/server/registration/audit-tools/helpers.d.ts.map +1 -0
- package/dist/server/registration/audit-tools/index.d.ts +4 -0
- package/dist/server/registration/audit-tools/index.d.ts.map +1 -0
- package/dist/server/registration/audit-tools/resource.d.ts +8 -0
- package/dist/server/registration/audit-tools/resource.d.ts.map +1 -0
- package/dist/server/registration/audit-tools/search.d.ts +7 -0
- package/dist/server/registration/audit-tools/search.d.ts.map +1 -0
- package/dist/server/registration/index.d.ts +1 -1
- package/dist/server/registration/index.d.ts.map +1 -1
- package/dist/{sqlite-D4WCNPU4.js → sqlite-XWZPEZJO.js} +192 -19
- package/dist/{sqlite-native-DLVS2T52.js → sqlite-native-5GQ3WKCZ.js} +156 -117
- package/dist/transports/http/middleware.d.ts.map +1 -1
- package/dist/transports/http/oauth.d.ts.map +1 -1
- package/dist/transports/http/sessions/legacy-sse.d.ts.map +1 -1
- package/dist/transports/http/sessions/stateful.d.ts +5 -1
- package/dist/transports/http/sessions/stateful.d.ts.map +1 -1
- package/dist/transports/http/transport.d.ts +2 -0
- package/dist/transports/http/transport.d.ts.map +1 -1
- package/dist/transports/http/types.d.ts +9 -0
- package/dist/transports/http/types.d.ts.map +1 -1
- package/dist/types/auth.d.ts +4 -0
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/server.d.ts +3 -0
- package/dist/types/server.d.ts.map +1 -1
- package/dist/utils/annotations.d.ts +8 -0
- package/dist/utils/annotations.d.ts.map +1 -1
- package/dist/utils/errors/categories.d.ts +16 -11
- package/dist/utils/errors/categories.d.ts.map +1 -1
- package/dist/utils/errors/classes.d.ts +37 -0
- package/dist/utils/errors/classes.d.ts.map +1 -1
- package/dist/utils/errors/format.d.ts +2 -2
- package/dist/utils/errors/format.d.ts.map +1 -1
- package/dist/utils/errors/index.d.ts +1 -1
- package/dist/utils/errors/index.d.ts.map +1 -1
- package/dist/utils/errors/suggestions.d.ts +1 -0
- package/dist/utils/errors/suggestions.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/security-utils.d.ts +29 -0
- package/dist/utils/security-utils.d.ts.map +1 -0
- package/dist/utils/stream-utils.d.ts +14 -0
- package/dist/utils/stream-utils.d.ts.map +1 -0
- package/dist/utils/where-clause.d.ts +0 -13
- package/dist/utils/where-clause.d.ts.map +1 -1
- package/package.json +35 -38
- package/dist/adapters/sqlite-native/tools/window.d.ts +0 -7
- package/dist/adapters/sqlite-native/tools/window.d.ts.map +0 -1
- package/dist/server/registration/audit-tools.d.ts +0 -17
- package/dist/server/registration/audit-tools.d.ts.map +0 -1
|
@@ -36,7 +36,11 @@ var TOOL_GROUPS = {
|
|
|
36
36
|
"list_constraints",
|
|
37
37
|
"date_add",
|
|
38
38
|
"date_diff",
|
|
39
|
-
"alter_table"
|
|
39
|
+
"alter_table",
|
|
40
|
+
"enable_versioning",
|
|
41
|
+
"disable_versioning",
|
|
42
|
+
"check_version",
|
|
43
|
+
"conditional_update"
|
|
40
44
|
],
|
|
41
45
|
json: [
|
|
42
46
|
// CRUD + Query + Collection (8: crud.ts, query.ts, write.ts)
|
|
@@ -223,19 +227,19 @@ var TOOL_GROUPS = {
|
|
|
223
227
|
codemode: ["execute_code"]
|
|
224
228
|
};
|
|
225
229
|
var META_GROUPS = {
|
|
226
|
-
// General development - Core + JSON + Text (
|
|
230
|
+
// General development - Core + JSON + Text (65 WASM / 70 Native)
|
|
227
231
|
starter: ["core", "json", "text", "codemode"],
|
|
228
|
-
// Data analysis - Core + JSON + Stats (
|
|
232
|
+
// Data analysis - Core + JSON + Stats (67 WASM / 73 Native)
|
|
229
233
|
analytics: ["core", "json", "stats", "codemode"],
|
|
230
|
-
// Search workloads - Core + Text + Vector (
|
|
234
|
+
// Search workloads - Core + Text + Vector (51 WASM / 56 Native)
|
|
231
235
|
search: ["core", "text", "vector", "codemode"],
|
|
232
|
-
// Geospatial workloads - Core + Geo + Vector (
|
|
236
|
+
// Geospatial workloads - Core + Geo + Vector (40 WASM / 47 Native)
|
|
233
237
|
spatial: ["core", "geo", "vector", "codemode"],
|
|
234
|
-
// Schema development - Core + Introspection + Migration (
|
|
238
|
+
// Schema development - Core + Introspection + Migration (41 tools)
|
|
235
239
|
"dev-schema": ["core", "introspection", "migration", "codemode"],
|
|
236
|
-
// Bare minimum - Core (
|
|
240
|
+
// Bare minimum - Core (25 tools)
|
|
237
241
|
minimal: ["core", "codemode"],
|
|
238
|
-
// All group tools enabled (
|
|
242
|
+
// All group tools enabled (171 Native / 144 WASM — see TOOL COUNT TAXONOMY above)
|
|
239
243
|
full: [
|
|
240
244
|
"core",
|
|
241
245
|
"json",
|
|
@@ -742,227 +746,270 @@ if (envLevel && envLevel in LEVEL_PRIORITY_CHECK) {
|
|
|
742
746
|
logger.setLevel(envLevel);
|
|
743
747
|
}
|
|
744
748
|
|
|
749
|
+
// src/utils/errors/categories.ts
|
|
750
|
+
var ErrorCategory = {
|
|
751
|
+
/** Input validation failures (invalid names, paths, types) */
|
|
752
|
+
VALIDATION: "validation",
|
|
753
|
+
/** Database connection issues */
|
|
754
|
+
CONNECTION: "connection",
|
|
755
|
+
/** SQL execution errors */
|
|
756
|
+
QUERY: "query",
|
|
757
|
+
/** Authorization/permission failures */
|
|
758
|
+
PERMISSION: "permission",
|
|
759
|
+
/** Configuration/setup issues */
|
|
760
|
+
CONFIGURATION: "config",
|
|
761
|
+
/** Missing resources (tables, columns, views) */
|
|
762
|
+
RESOURCE: "resource",
|
|
763
|
+
/** Authentication failures (invalid credentials, expired tokens) */
|
|
764
|
+
AUTHENTICATION: "authentication",
|
|
765
|
+
/** Authorization failures (insufficient scope/permissions) */
|
|
766
|
+
AUTHORIZATION: "authorization",
|
|
767
|
+
/** Unexpected internal errors */
|
|
768
|
+
INTERNAL: "internal",
|
|
769
|
+
/** Execution timeout errors */
|
|
770
|
+
TIMEOUT: "timeout",
|
|
771
|
+
/** Rate limit enforcement errors */
|
|
772
|
+
RATE_LIMIT: "rate_limit"
|
|
773
|
+
};
|
|
774
|
+
|
|
745
775
|
// src/utils/errors/suggestions.ts
|
|
746
776
|
var ERROR_SUGGESTIONS = [
|
|
747
777
|
// Validation errors
|
|
748
778
|
{
|
|
749
779
|
pattern: /invalid table name/i,
|
|
750
780
|
suggestion: "Table names must start with a letter or underscore, followed by letters, numbers, or underscores only.",
|
|
751
|
-
category:
|
|
781
|
+
category: ErrorCategory.VALIDATION
|
|
752
782
|
},
|
|
753
783
|
{
|
|
754
784
|
pattern: /invalid column name/i,
|
|
755
785
|
suggestion: "Column names must start with a letter or underscore, followed by letters, numbers, or underscores only.",
|
|
756
|
-
category:
|
|
786
|
+
category: ErrorCategory.VALIDATION
|
|
757
787
|
},
|
|
758
788
|
{
|
|
759
789
|
pattern: /invalid (view|index) name/i,
|
|
760
790
|
suggestion: "Names must start with a letter or underscore, followed by alphanumeric characters only.",
|
|
761
|
-
category:
|
|
791
|
+
category: ErrorCategory.VALIDATION
|
|
762
792
|
},
|
|
763
793
|
{
|
|
764
794
|
pattern: /json path must start with \$/i,
|
|
765
795
|
suggestion: "JSON paths use $ as the root. Example: $.name, $.items[0], $.nested.property",
|
|
766
|
-
category:
|
|
796
|
+
category: ErrorCategory.VALIDATION
|
|
767
797
|
},
|
|
768
798
|
{
|
|
769
799
|
pattern: /vector dimensions must match/i,
|
|
770
800
|
suggestion: "All vectors in comparison must have the same number of dimensions.",
|
|
771
|
-
category:
|
|
801
|
+
category: ErrorCategory.VALIDATION
|
|
772
802
|
},
|
|
773
803
|
{
|
|
774
804
|
pattern: /insufficient data/i,
|
|
775
805
|
suggestion: "Not enough data points for the requested analysis. Add more data or reduce the degree.",
|
|
776
|
-
category:
|
|
806
|
+
category: ErrorCategory.VALIDATION
|
|
777
807
|
},
|
|
778
808
|
// Resource errors — specific codes for table/column not found
|
|
779
809
|
{
|
|
780
810
|
pattern: /no such table[:\s]*(['"]?)([\w.]+)\1/i,
|
|
781
811
|
suggestion: "Table not found. Run sqlite_list_tables to see available tables.",
|
|
782
|
-
category:
|
|
812
|
+
category: ErrorCategory.RESOURCE,
|
|
783
813
|
code: "TABLE_NOT_FOUND"
|
|
784
814
|
},
|
|
785
815
|
{
|
|
786
816
|
pattern: /no such column[:\s]*(['"]?)([\w.]+)\1/i,
|
|
787
817
|
suggestion: "Column not found. Use sqlite_describe_table to see available columns.",
|
|
788
|
-
category:
|
|
818
|
+
category: ErrorCategory.RESOURCE,
|
|
789
819
|
code: "COLUMN_NOT_FOUND"
|
|
790
820
|
},
|
|
791
821
|
{
|
|
792
|
-
pattern: /has no column named/i,
|
|
822
|
+
pattern: /has no column named\s+(['"]?)([\w.]+)\1/i,
|
|
793
823
|
suggestion: "Column not found in target table. Use sqlite_describe_table to verify column names before INSERT or UPDATE.",
|
|
794
|
-
category:
|
|
824
|
+
category: ErrorCategory.RESOURCE,
|
|
795
825
|
code: "COLUMN_NOT_FOUND"
|
|
796
826
|
},
|
|
797
827
|
{
|
|
798
828
|
pattern: /no such view[:\s]*(['"]?)([\w.]+)\1/i,
|
|
799
829
|
suggestion: "View not found. Run sqlite_list_views to see available views.",
|
|
800
|
-
category:
|
|
830
|
+
category: ErrorCategory.RESOURCE,
|
|
801
831
|
code: "VIEW_NOT_FOUND"
|
|
802
832
|
},
|
|
803
833
|
{
|
|
804
834
|
pattern: /filename.*does not exist/i,
|
|
805
835
|
suggestion: "File not found. Verify the absolute path exists and is readable.",
|
|
806
|
-
category:
|
|
836
|
+
category: ErrorCategory.RESOURCE,
|
|
807
837
|
code: "FILE_NOT_FOUND"
|
|
808
838
|
},
|
|
809
839
|
{
|
|
810
840
|
pattern: /table .* already exists/i,
|
|
811
841
|
suggestion: "Table already exists. Use CREATE TABLE IF NOT EXISTS or drop the existing table first.",
|
|
812
|
-
category:
|
|
842
|
+
category: ErrorCategory.RESOURCE,
|
|
813
843
|
code: "TABLE_ALREADY_EXISTS"
|
|
814
844
|
},
|
|
815
845
|
{
|
|
816
846
|
pattern: /index .* already exists/i,
|
|
817
847
|
suggestion: "Index already exists. Use CREATE INDEX IF NOT EXISTS or drop the existing index first.",
|
|
818
|
-
category:
|
|
848
|
+
category: ErrorCategory.RESOURCE,
|
|
819
849
|
code: "INDEX_ALREADY_EXISTS"
|
|
820
850
|
},
|
|
821
851
|
// JSON-specific errors — often caused by wrong column name
|
|
822
852
|
{
|
|
823
853
|
pattern: /malformed JSON/i,
|
|
824
854
|
suggestion: "The JSON data is malformed. This commonly occurs when the column name is incorrect \u2014 SQLite treats the unresolved identifier as a literal string. Verify the column exists with sqlite_describe_table.",
|
|
825
|
-
category:
|
|
855
|
+
category: ErrorCategory.QUERY,
|
|
826
856
|
code: "MALFORMED_JSON"
|
|
827
857
|
},
|
|
828
858
|
// Query errors
|
|
829
859
|
{
|
|
830
860
|
pattern: /syntax error/i,
|
|
831
861
|
suggestion: "Check SQL syntax. Common issues: missing quotes, commas, parentheses, or reserved word conflicts.",
|
|
832
|
-
category:
|
|
862
|
+
category: ErrorCategory.QUERY
|
|
833
863
|
},
|
|
834
864
|
{
|
|
835
865
|
pattern: /UNIQUE constraint failed/i,
|
|
836
866
|
suggestion: "A row with this value already exists. Use UPDATE to modify existing data or check for duplicates.",
|
|
837
|
-
category:
|
|
867
|
+
category: ErrorCategory.QUERY,
|
|
838
868
|
code: "CONSTRAINT_VIOLATION"
|
|
839
869
|
},
|
|
840
870
|
{
|
|
841
871
|
pattern: /FOREIGN KEY constraint failed/i,
|
|
842
872
|
suggestion: "The referenced row does not exist. Ensure the parent record exists before inserting.",
|
|
843
|
-
category:
|
|
873
|
+
category: ErrorCategory.QUERY,
|
|
844
874
|
code: "CONSTRAINT_VIOLATION"
|
|
845
875
|
},
|
|
846
876
|
{
|
|
847
877
|
pattern: /NOT NULL constraint failed/i,
|
|
848
878
|
suggestion: "A required column is missing a value. Provide a value or set a default.",
|
|
849
|
-
category:
|
|
879
|
+
category: ErrorCategory.QUERY,
|
|
850
880
|
code: "CONSTRAINT_VIOLATION"
|
|
851
881
|
},
|
|
852
882
|
{
|
|
853
883
|
pattern: /CHECK constraint failed/i,
|
|
854
884
|
suggestion: "The value does not meet the column's check constraint requirements.",
|
|
855
|
-
category:
|
|
885
|
+
category: ErrorCategory.QUERY,
|
|
856
886
|
code: "CONSTRAINT_VIOLATION"
|
|
857
887
|
},
|
|
858
888
|
{
|
|
859
889
|
pattern: /incomplete input/i,
|
|
860
890
|
suggestion: "SQL statement is incomplete. Check for missing clauses, closing parentheses, or semicolons.",
|
|
861
|
-
category:
|
|
891
|
+
category: ErrorCategory.QUERY
|
|
862
892
|
},
|
|
863
893
|
{
|
|
864
894
|
pattern: /more than one statement/i,
|
|
865
895
|
suggestion: "Only one SQL statement per call is allowed. Split multiple statements into separate calls or use sqlite_execute_code for multi-step operations.",
|
|
866
|
-
category:
|
|
896
|
+
category: ErrorCategory.QUERY
|
|
867
897
|
},
|
|
868
898
|
{
|
|
869
899
|
pattern: /too few parameter/i,
|
|
870
900
|
suggestion: "Not enough parameter values provided for the prepared statement placeholders (?). Ensure params array matches the number of ? placeholders in the query.",
|
|
871
|
-
category:
|
|
901
|
+
category: ErrorCategory.QUERY
|
|
872
902
|
},
|
|
873
903
|
// Connection errors
|
|
874
904
|
{
|
|
875
905
|
pattern: /not connected/i,
|
|
876
906
|
suggestion: "Database connection not established. Ensure the database is configured and connected.",
|
|
877
|
-
category:
|
|
907
|
+
category: ErrorCategory.CONNECTION
|
|
878
908
|
},
|
|
879
909
|
{
|
|
880
910
|
pattern: /cannot start a transaction within a transaction/i,
|
|
881
911
|
suggestion: "A transaction is already active. Commit or rollback the current transaction first, or use sqlite_transaction_execute for atomic multi-statement operations.",
|
|
882
|
-
category:
|
|
912
|
+
category: ErrorCategory.QUERY,
|
|
883
913
|
code: "TRANSACTION_CONFLICT"
|
|
884
914
|
},
|
|
885
915
|
{
|
|
886
916
|
pattern: /no transaction is active/i,
|
|
887
917
|
suggestion: "No transaction is active. Start a transaction using sqlite_transaction_begin first.",
|
|
888
|
-
category:
|
|
918
|
+
category: ErrorCategory.QUERY,
|
|
889
919
|
code: "TRANSACTION_NOT_ACTIVE"
|
|
890
920
|
},
|
|
891
921
|
{
|
|
892
922
|
pattern: /no such savepoint/i,
|
|
893
923
|
suggestion: "The specified savepoint does not exist. Verify the savepoint name and ensure it hasn't already been released or rolled back.",
|
|
894
|
-
category:
|
|
924
|
+
category: ErrorCategory.QUERY,
|
|
895
925
|
code: "SAVEPOINT_NOT_FOUND"
|
|
896
926
|
},
|
|
897
927
|
{
|
|
898
928
|
pattern: /database is locked/i,
|
|
899
929
|
suggestion: "Database is being used by another process. Wait and retry, or check for long-running transactions.",
|
|
900
|
-
category:
|
|
930
|
+
category: ErrorCategory.CONNECTION
|
|
901
931
|
},
|
|
902
932
|
// Permission errors
|
|
903
933
|
{
|
|
904
934
|
pattern: /readonly database/i,
|
|
905
935
|
suggestion: "Database is in read-only mode. Check file permissions or connection settings.",
|
|
906
|
-
category:
|
|
936
|
+
category: ErrorCategory.PERMISSION
|
|
907
937
|
},
|
|
908
938
|
{
|
|
909
939
|
pattern: /attempt to write a readonly/i,
|
|
910
940
|
suggestion: "Write operations are not allowed. Check database configuration.",
|
|
911
|
-
category:
|
|
941
|
+
category: ErrorCategory.PERMISSION
|
|
912
942
|
},
|
|
913
943
|
// Codemode errors
|
|
914
944
|
{
|
|
915
945
|
pattern: /code validation failed/i,
|
|
916
946
|
suggestion: "Check for blocked patterns: require(), process., eval(), Function(), import(). Use sqlite.* API instead.",
|
|
917
|
-
category:
|
|
947
|
+
category: ErrorCategory.VALIDATION
|
|
918
948
|
},
|
|
919
949
|
{
|
|
920
950
|
pattern: /rate limit exceeded/i,
|
|
921
951
|
suggestion: "Wait before retrying. Combine multiple operations into fewer execute_code calls.",
|
|
922
|
-
category:
|
|
952
|
+
category: ErrorCategory.RATE_LIMIT
|
|
923
953
|
},
|
|
924
954
|
{
|
|
925
955
|
pattern: /execution timed out/i,
|
|
926
956
|
suggestion: "Reduce code complexity or increase timeout (max 30s). Break into smaller operations.",
|
|
927
|
-
category:
|
|
957
|
+
category: ErrorCategory.TIMEOUT
|
|
928
958
|
},
|
|
929
959
|
{
|
|
930
960
|
pattern: /sandbox.*not initialized/i,
|
|
931
961
|
suggestion: "Internal sandbox error. Retry the operation.",
|
|
932
|
-
category:
|
|
962
|
+
category: ErrorCategory.INTERNAL
|
|
933
963
|
},
|
|
934
964
|
// Extension errors
|
|
935
965
|
{
|
|
936
966
|
pattern: /extension.*not (available|installed|loaded|found)/i,
|
|
937
967
|
suggestion: "Extension is not available. Check CLI flags, environment variables, or platform compatibility.",
|
|
938
|
-
category:
|
|
968
|
+
category: ErrorCategory.CONFIGURATION,
|
|
939
969
|
code: "EXTENSION_MISSING"
|
|
940
970
|
},
|
|
941
971
|
// Custom JS errors mapped from tools
|
|
942
972
|
{
|
|
943
973
|
pattern: /invalid identifier/i,
|
|
944
974
|
suggestion: "Identifiers must start with a letter or underscore and contain only alphanumeric characters or underscores. Ensure the name follows SQLite identifier rules.",
|
|
945
|
-
category:
|
|
975
|
+
category: ErrorCategory.VALIDATION,
|
|
946
976
|
code: "INVALID_IDENTIFIER"
|
|
947
977
|
},
|
|
948
978
|
{
|
|
949
979
|
pattern: /(expected property name|unexpected token|in JSON at position|Expected double-quoted property name)/i,
|
|
950
980
|
suggestion: "The JSON data provided is malformed. Ensure the input string is valid JSON.",
|
|
951
|
-
category:
|
|
981
|
+
category: ErrorCategory.VALIDATION,
|
|
952
982
|
code: "MALFORMED_JSON"
|
|
953
983
|
}
|
|
954
984
|
];
|
|
985
|
+
var suggestionCache = /* @__PURE__ */ new Map();
|
|
986
|
+
var MAX_CACHE_SIZE = 1e3;
|
|
955
987
|
function findSuggestion(message) {
|
|
988
|
+
const cached = suggestionCache.get(message);
|
|
989
|
+
if (cached) {
|
|
990
|
+
suggestionCache.delete(message);
|
|
991
|
+
suggestionCache.set(message, cached);
|
|
992
|
+
return cached;
|
|
993
|
+
}
|
|
994
|
+
let result = null;
|
|
956
995
|
for (const entry of ERROR_SUGGESTIONS) {
|
|
957
|
-
|
|
958
|
-
|
|
996
|
+
const match = entry.pattern.exec(message);
|
|
997
|
+
if (match) {
|
|
998
|
+
result = {
|
|
959
999
|
suggestion: entry.suggestion,
|
|
960
1000
|
category: entry.category,
|
|
961
|
-
code: entry.code
|
|
1001
|
+
code: entry.code,
|
|
1002
|
+
match
|
|
962
1003
|
};
|
|
1004
|
+
break;
|
|
963
1005
|
}
|
|
964
1006
|
}
|
|
965
|
-
|
|
1007
|
+
if (suggestionCache.size >= MAX_CACHE_SIZE) {
|
|
1008
|
+
const firstKey = suggestionCache.keys().next().value;
|
|
1009
|
+
if (firstKey) suggestionCache.delete(firstKey);
|
|
1010
|
+
}
|
|
1011
|
+
suggestionCache.set(message, result);
|
|
1012
|
+
return result;
|
|
966
1013
|
}
|
|
967
1014
|
|
|
968
1015
|
// src/utils/errors/base.ts
|
|
@@ -1014,7 +1061,7 @@ var DbMcpError = class extends Error {
|
|
|
1014
1061
|
// src/utils/errors/classes.ts
|
|
1015
1062
|
var ValidationError = class extends DbMcpError {
|
|
1016
1063
|
constructor(message, code = "VALIDATION_ERROR", options) {
|
|
1017
|
-
super(message, code,
|
|
1064
|
+
super(message, code, ErrorCategory.VALIDATION, {
|
|
1018
1065
|
...options,
|
|
1019
1066
|
recoverable: false
|
|
1020
1067
|
});
|
|
@@ -1022,7 +1069,7 @@ var ValidationError = class extends DbMcpError {
|
|
|
1022
1069
|
};
|
|
1023
1070
|
var ConnectionError = class extends DbMcpError {
|
|
1024
1071
|
constructor(message, code = "CONNECTION_ERROR", options) {
|
|
1025
|
-
super(message, code,
|
|
1072
|
+
super(message, code, ErrorCategory.CONNECTION, {
|
|
1026
1073
|
...options,
|
|
1027
1074
|
recoverable: true
|
|
1028
1075
|
// Connection errors are often transient
|
|
@@ -1031,7 +1078,7 @@ var ConnectionError = class extends DbMcpError {
|
|
|
1031
1078
|
};
|
|
1032
1079
|
var QueryError = class extends DbMcpError {
|
|
1033
1080
|
constructor(message, code = "QUERY_ERROR", options) {
|
|
1034
|
-
super(message, code,
|
|
1081
|
+
super(message, code, ErrorCategory.QUERY, {
|
|
1035
1082
|
...options,
|
|
1036
1083
|
details: {
|
|
1037
1084
|
...options?.details,
|
|
@@ -1043,7 +1090,7 @@ var QueryError = class extends DbMcpError {
|
|
|
1043
1090
|
};
|
|
1044
1091
|
var ResourceNotFoundError = class extends DbMcpError {
|
|
1045
1092
|
constructor(message, code = "RESOURCE_NOT_FOUND", options) {
|
|
1046
|
-
super(message, code,
|
|
1093
|
+
super(message, code, ErrorCategory.RESOURCE, {
|
|
1047
1094
|
...options,
|
|
1048
1095
|
details: {
|
|
1049
1096
|
...options?.details,
|
|
@@ -1056,7 +1103,15 @@ var ResourceNotFoundError = class extends DbMcpError {
|
|
|
1056
1103
|
};
|
|
1057
1104
|
var ConfigurationError = class extends DbMcpError {
|
|
1058
1105
|
constructor(message, code = "CONFIG_ERROR", options) {
|
|
1059
|
-
super(message, code,
|
|
1106
|
+
super(message, code, ErrorCategory.CONFIGURATION, {
|
|
1107
|
+
...options,
|
|
1108
|
+
recoverable: false
|
|
1109
|
+
});
|
|
1110
|
+
}
|
|
1111
|
+
};
|
|
1112
|
+
var InternalError = class extends DbMcpError {
|
|
1113
|
+
constructor(message, code = "INTERNAL_ERROR", options) {
|
|
1114
|
+
super(message, code, ErrorCategory.INTERNAL, {
|
|
1060
1115
|
...options,
|
|
1061
1116
|
recoverable: false
|
|
1062
1117
|
});
|
|
@@ -1064,7 +1119,7 @@ var ConfigurationError = class extends DbMcpError {
|
|
|
1064
1119
|
};
|
|
1065
1120
|
var AuthenticationError = class extends DbMcpError {
|
|
1066
1121
|
constructor(message, code = "AUTHENTICATION_ERROR", options) {
|
|
1067
|
-
super(message, code,
|
|
1122
|
+
super(message, code, ErrorCategory.AUTHENTICATION, {
|
|
1068
1123
|
...options,
|
|
1069
1124
|
recoverable: false
|
|
1070
1125
|
});
|
|
@@ -1072,7 +1127,7 @@ var AuthenticationError = class extends DbMcpError {
|
|
|
1072
1127
|
};
|
|
1073
1128
|
var AuthorizationError = class extends DbMcpError {
|
|
1074
1129
|
constructor(message, code = "AUTHORIZATION_ERROR", options) {
|
|
1075
|
-
super(message, code,
|
|
1130
|
+
super(message, code, ErrorCategory.AUTHORIZATION, {
|
|
1076
1131
|
...options,
|
|
1077
1132
|
recoverable: false
|
|
1078
1133
|
});
|
|
@@ -1083,7 +1138,7 @@ var ExtensionNotAvailableError = class extends DbMcpError {
|
|
|
1083
1138
|
const isWasm = options?.wasmLimitation ?? options?.details?.["wasmLimitation"] ?? false;
|
|
1084
1139
|
const baseMessage = `Extension '${extensionName}' is not installed or available`;
|
|
1085
1140
|
const message = isWasm === true ? `${baseMessage} in WASM mode` : baseMessage;
|
|
1086
|
-
super(message, "EXTENSION_MISSING",
|
|
1141
|
+
super(message, "EXTENSION_MISSING", ErrorCategory.CONFIGURATION, {
|
|
1087
1142
|
suggestion: options?.suggestion ?? `Install or enable the '${extensionName}' extension. Check environment variable or CLI flag configuration.`,
|
|
1088
1143
|
details: {
|
|
1089
1144
|
extension: extensionName,
|
|
@@ -1095,10 +1150,53 @@ var ExtensionNotAvailableError = class extends DbMcpError {
|
|
|
1095
1150
|
});
|
|
1096
1151
|
}
|
|
1097
1152
|
};
|
|
1153
|
+
var TimeoutError = class extends DbMcpError {
|
|
1154
|
+
constructor(message, code = "TIMEOUT_ERROR", options) {
|
|
1155
|
+
super(message, code, ErrorCategory.TIMEOUT, {
|
|
1156
|
+
...options,
|
|
1157
|
+
details: {
|
|
1158
|
+
...options?.details,
|
|
1159
|
+
timeoutMs: options?.timeoutMs
|
|
1160
|
+
},
|
|
1161
|
+
recoverable: true
|
|
1162
|
+
// Timeouts are retriable with increased timeout or simplified logic
|
|
1163
|
+
});
|
|
1164
|
+
}
|
|
1165
|
+
};
|
|
1166
|
+
var RateLimitError = class extends DbMcpError {
|
|
1167
|
+
constructor(message, code = "RATE_LIMIT_ERROR", options) {
|
|
1168
|
+
super(message, code, ErrorCategory.RATE_LIMIT, {
|
|
1169
|
+
...options,
|
|
1170
|
+
details: {
|
|
1171
|
+
...options?.details,
|
|
1172
|
+
retryAfterMs: options?.retryAfterMs,
|
|
1173
|
+
limit: options?.limit
|
|
1174
|
+
},
|
|
1175
|
+
recoverable: true
|
|
1176
|
+
// Rate limits are transient — retry after backoff
|
|
1177
|
+
});
|
|
1178
|
+
}
|
|
1179
|
+
};
|
|
1180
|
+
var ConflictError = class extends DbMcpError {
|
|
1181
|
+
constructor(message, code = "CONFLICT_ERROR", options) {
|
|
1182
|
+
super(message, code, ErrorCategory.QUERY, {
|
|
1183
|
+
...options,
|
|
1184
|
+
details: {
|
|
1185
|
+
...options?.details,
|
|
1186
|
+
conflictType: options?.conflictType
|
|
1187
|
+
},
|
|
1188
|
+
recoverable: true
|
|
1189
|
+
// Conflicts are retriable after re-reading current state
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1192
|
+
};
|
|
1098
1193
|
|
|
1099
1194
|
// src/utils/errors/format.ts
|
|
1100
1195
|
function sanitizeErrorMessage(msg) {
|
|
1101
1196
|
if (!msg || typeof msg !== "string") return msg;
|
|
1197
|
+
if (!msg.includes(":") && !msg.includes("/") && !msg.includes("\\") && !msg.includes("=")) {
|
|
1198
|
+
return msg;
|
|
1199
|
+
}
|
|
1102
1200
|
return msg.replace(/[a-zA-Z]:\\[^:\n]*\\/g, "<redacted_path>\\").replace(/(file:|sqlite:|\/)[^:\s]+(\/[^:\s]*)/g, "<redacted_path>").replace(
|
|
1103
1201
|
/([a-zA-Z0-9+.-]+:\/\/[^:]+:)[^@\s]+(@)/g,
|
|
1104
1202
|
"$1<redacted_credential>$2"
|
|
@@ -1111,15 +1209,17 @@ function sanitizeErrorMessage(msg) {
|
|
|
1111
1209
|
);
|
|
1112
1210
|
}
|
|
1113
1211
|
var CATEGORY_DEFAULT_CODES = {
|
|
1114
|
-
[
|
|
1115
|
-
[
|
|
1116
|
-
[
|
|
1117
|
-
[
|
|
1118
|
-
[
|
|
1119
|
-
[
|
|
1120
|
-
[
|
|
1121
|
-
[
|
|
1122
|
-
[
|
|
1212
|
+
[ErrorCategory.VALIDATION]: "VALIDATION_ERROR",
|
|
1213
|
+
[ErrorCategory.CONNECTION]: "CONNECTION_ERROR",
|
|
1214
|
+
[ErrorCategory.QUERY]: "QUERY_ERROR",
|
|
1215
|
+
[ErrorCategory.PERMISSION]: "PERMISSION_ERROR",
|
|
1216
|
+
[ErrorCategory.CONFIGURATION]: "CONFIG_ERROR",
|
|
1217
|
+
[ErrorCategory.RESOURCE]: "RESOURCE_ERROR",
|
|
1218
|
+
[ErrorCategory.AUTHENTICATION]: "AUTHENTICATION_ERROR",
|
|
1219
|
+
[ErrorCategory.AUTHORIZATION]: "AUTHORIZATION_ERROR",
|
|
1220
|
+
[ErrorCategory.INTERNAL]: "UNKNOWN_ERROR",
|
|
1221
|
+
[ErrorCategory.TIMEOUT]: "TIMEOUT_ERROR",
|
|
1222
|
+
[ErrorCategory.RATE_LIMIT]: "RATE_LIMIT_ERROR"
|
|
1123
1223
|
};
|
|
1124
1224
|
function formatZodError(error) {
|
|
1125
1225
|
if (!("issues" in error) || !Array.isArray(error["issues"])) {
|
|
@@ -1144,7 +1244,7 @@ function formatHandlerError(error, _context) {
|
|
|
1144
1244
|
success: false,
|
|
1145
1245
|
error: sanitizeErrorMessage(zodMessage),
|
|
1146
1246
|
code: "VALIDATION_ERROR",
|
|
1147
|
-
category:
|
|
1247
|
+
category: ErrorCategory.VALIDATION,
|
|
1148
1248
|
suggestion: void 0,
|
|
1149
1249
|
recoverable: false,
|
|
1150
1250
|
details: void 0
|
|
@@ -1153,7 +1253,7 @@ function formatHandlerError(error, _context) {
|
|
|
1153
1253
|
}
|
|
1154
1254
|
if (error instanceof Error) {
|
|
1155
1255
|
const match = findSuggestion(error.message);
|
|
1156
|
-
const category = match?.category ??
|
|
1256
|
+
const category = match?.category ?? ErrorCategory.INTERNAL;
|
|
1157
1257
|
return {
|
|
1158
1258
|
success: false,
|
|
1159
1259
|
error: sanitizeErrorMessage(error.message),
|
|
@@ -1168,7 +1268,7 @@ function formatHandlerError(error, _context) {
|
|
|
1168
1268
|
success: false,
|
|
1169
1269
|
error: sanitizeErrorMessage(String(error)),
|
|
1170
1270
|
code: "UNKNOWN_ERROR",
|
|
1171
|
-
category:
|
|
1271
|
+
category: ErrorCategory.INTERNAL,
|
|
1172
1272
|
suggestion: void 0,
|
|
1173
1273
|
recoverable: false,
|
|
1174
1274
|
details: void 0
|
|
@@ -1465,8 +1565,12 @@ adminToolNames.push(
|
|
|
1465
1565
|
"sqlite_audit_cleanup",
|
|
1466
1566
|
"sqlite_audit_diff_backup",
|
|
1467
1567
|
"sqlite_audit_restore_backup",
|
|
1468
|
-
"drop_table"
|
|
1568
|
+
"drop_table",
|
|
1469
1569
|
// explicitly admin since it is destructive, despite being in core
|
|
1570
|
+
"enable_versioning",
|
|
1571
|
+
// admin scope needed for DDL
|
|
1572
|
+
"disable_versioning"
|
|
1573
|
+
// admin scope needed for DDL
|
|
1470
1574
|
);
|
|
1471
1575
|
withSqlitePrefix(adminToolNames);
|
|
1472
1576
|
var READ_ONLY_TOOLS = withSqlitePrefix([
|
|
@@ -1481,6 +1585,7 @@ var READ_ONLY_TOOLS = withSqlitePrefix([
|
|
|
1481
1585
|
"list_constraints",
|
|
1482
1586
|
"date_add",
|
|
1483
1587
|
"date_diff",
|
|
1588
|
+
"check_version",
|
|
1484
1589
|
// JSON read operations
|
|
1485
1590
|
"json_valid",
|
|
1486
1591
|
"json_extract",
|
|
@@ -1577,6 +1682,7 @@ var WRITE_TOOLS = withSqlitePrefix([
|
|
|
1577
1682
|
"create_trigger",
|
|
1578
1683
|
"drop_trigger",
|
|
1579
1684
|
"alter_table",
|
|
1685
|
+
"conditional_update",
|
|
1580
1686
|
// JSON write operations
|
|
1581
1687
|
"json_insert",
|
|
1582
1688
|
"json_update",
|
|
@@ -1675,7 +1781,7 @@ var OAuthError = class extends DbMcpError {
|
|
|
1675
1781
|
/** WWW-Authenticate header value */
|
|
1676
1782
|
wwwAuthenticate;
|
|
1677
1783
|
constructor(message, code, httpStatus, details, wwwAuthenticate) {
|
|
1678
|
-
super(message, code,
|
|
1784
|
+
super(message, code, ErrorCategory.AUTHENTICATION, { details });
|
|
1679
1785
|
this.name = "OAuthError";
|
|
1680
1786
|
this.httpStatus = httpStatus;
|
|
1681
1787
|
this.wwwAuthenticate = wwwAuthenticate;
|
|
@@ -1773,4 +1879,4 @@ function isOAuthError(error) {
|
|
|
1773
1879
|
return error instanceof OAuthError;
|
|
1774
1880
|
}
|
|
1775
1881
|
|
|
1776
|
-
export { ALL_TOOL_GROUPS, AuthServerDiscoveryError, AuthenticationError, AuthorizationError, BASE_SCOPES, ConfigurationError, ConnectionError, DbMcpError, ERROR_CODES, ExtensionNotAvailableError, InsufficientScopeError, InvalidSignatureError, InvalidTokenError, JwksFetchError, META_GROUPS, QueryError, ResourceNotFoundError, SCOPES, SUPPORTED_SCOPES, TOOL_GROUPS, TokenExpiredError, TokenMissingError, ValidationError, createModuleLogger, filterTools, findSuggestion, formatHandlerError, getAuthContext, getFilterSummary, getToolFilterFromEnv, hasAdminScope, hasReadScope, isOAuthError, isToolEnabled, logger, metrics, parseScopes, parseToolFilter, registerToolScopes, runWithAuthContext, sanitizeErrorMessage, scopesGrantToolAccess };
|
|
1882
|
+
export { ALL_TOOL_GROUPS, AuthServerDiscoveryError, AuthenticationError, AuthorizationError, BASE_SCOPES, ConfigurationError, ConflictError, ConnectionError, DbMcpError, ERROR_CODES, ErrorCategory, ExtensionNotAvailableError, InsufficientScopeError, InternalError, InvalidSignatureError, InvalidTokenError, JwksFetchError, META_GROUPS, QueryError, RateLimitError, ResourceNotFoundError, SCOPES, SUPPORTED_SCOPES, TOOL_GROUPS, TimeoutError, TokenExpiredError, TokenMissingError, ValidationError, createModuleLogger, filterTools, findSuggestion, formatHandlerError, getAuthContext, getFilterSummary, getToolFilterFromEnv, hasAdminScope, hasReadScope, isOAuthError, isToolEnabled, logger, metrics, parseScopes, parseToolFilter, registerToolScopes, runWithAuthContext, sanitizeErrorMessage, scopesGrantToolAccess };
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { DEFAULT_CONFIG, createServer } from './chunk-
|
|
3
|
-
import { VERSION } from './chunk-
|
|
4
|
-
import { logger } from './chunk-
|
|
2
|
+
import { DEFAULT_CONFIG, createServer } from './chunk-LLIAIJPO.js';
|
|
3
|
+
import { parseAllowedIoRoots, VERSION } from './chunk-2TYICG7B.js';
|
|
4
|
+
import { logger } from './chunk-XLIYO3YA.js';
|
|
5
5
|
import fs from 'fs';
|
|
6
6
|
import yaml from 'yaml';
|
|
7
7
|
|
|
@@ -159,6 +159,11 @@ function parseArgs() {
|
|
|
159
159
|
if (metricsValue === "prometheus") {
|
|
160
160
|
metricsExport = "prometheus";
|
|
161
161
|
}
|
|
162
|
+
} else if (arg === "--allowed-io-roots") {
|
|
163
|
+
const rootsValue = args[++i];
|
|
164
|
+
if (rootsValue) {
|
|
165
|
+
config.allowedIoRoots = parseAllowedIoRoots(rootsValue);
|
|
166
|
+
}
|
|
162
167
|
} else if (arg === "--config" || arg === "-c") {
|
|
163
168
|
const pathValue = args[++i];
|
|
164
169
|
if (pathValue) {
|
|
@@ -240,6 +245,9 @@ Audit Options:
|
|
|
240
245
|
--audit-backup Enable pre-mutation DDL snapshots
|
|
241
246
|
--audit-backup-data Include sample data rows in snapshots
|
|
242
247
|
|
|
248
|
+
Security Options:
|
|
249
|
+
--allowed-io-roots <paths> Allowlisted filesystem roots for IO operations (comma-separated or JSON array)
|
|
250
|
+
|
|
243
251
|
Server Options:
|
|
244
252
|
--config, -c <path> Load configuration from YAML/JSON file
|
|
245
253
|
--dump-config Print the resolved configuration and exit
|
|
@@ -248,7 +256,7 @@ Server Options:
|
|
|
248
256
|
--metrics-export <type> Export metrics at HTTP /metrics (e.g., prometheus)
|
|
249
257
|
--tool-filter <filter> Tool filter string. Supports:
|
|
250
258
|
Shortcuts: starter, analytics, search, spatial, minimal, full
|
|
251
|
-
Groups: core, json, text,
|
|
259
|
+
Groups: core, json, text, stats, vector, geo, ...
|
|
252
260
|
Mixed: core,json,-text (whitelist with exclusions)
|
|
253
261
|
Legacy: -vector,-geo (exclusion from all)
|
|
254
262
|
|
|
@@ -350,6 +358,10 @@ function loadEnvConfig() {
|
|
|
350
358
|
if (process.env["METRICS_EXPORT"] === "prometheus") {
|
|
351
359
|
config.metricsExport = "prometheus";
|
|
352
360
|
}
|
|
361
|
+
const allowedIoRoots = process.env["ALLOWED_IO_ROOTS"];
|
|
362
|
+
if (allowedIoRoots) {
|
|
363
|
+
config.allowedIoRoots = parseAllowedIoRoots(allowedIoRoots);
|
|
364
|
+
}
|
|
353
365
|
if (databases.length > 0) {
|
|
354
366
|
config.databases = databases;
|
|
355
367
|
}
|
|
@@ -437,11 +449,11 @@ async function main() {
|
|
|
437
449
|
process.exit(1);
|
|
438
450
|
}
|
|
439
451
|
if (options.backend === "better-sqlite3") {
|
|
440
|
-
const { NativeSqliteAdapter } = await import('./sqlite-native-
|
|
452
|
+
const { NativeSqliteAdapter } = await import('./sqlite-native-5GQ3WKCZ.js');
|
|
441
453
|
const adapter = new NativeSqliteAdapter();
|
|
442
454
|
await server.registerAdapter(adapter, dbConfig);
|
|
443
455
|
} else {
|
|
444
|
-
const { SqliteAdapter } = await import('./sqlite-
|
|
456
|
+
const { SqliteAdapter } = await import('./sqlite-XWZPEZJO.js');
|
|
445
457
|
const adapter = new SqliteAdapter();
|
|
446
458
|
await server.registerAdapter(adapter, dbConfig);
|
|
447
459
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-constants.d.ts","sourceRoot":"","sources":["../../src/codemode/api-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsEjE,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAwDnD,CAAC;AAMF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"api-constants.d.ts","sourceRoot":"","sources":["../../src/codemode/api-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsEjE,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAwDnD,CAAC;AAMF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAsIlE,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAYnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,aAA2C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/codemode/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,cAAc,EACf,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/codemode/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,cAAc,EACf,MAAM,mBAAmB,CAAC;AAe3B;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAcR;AA6GD,sCAAsC;AACtC,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AA+E/E;;;GAGG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;gBAE7C,KAAK,EAAE,cAAc,EAAE,EAAE,WAAW,CAAC,EAAE,cAAc;IAkEjE;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE;IAU3C;;;;OAIG;IACH,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAuDjD;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EAAE,EACvB,WAAW,CAAC,EAAE,cAAc,GAC3B,SAAS,CAEX"}
|