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.
Files changed (138) hide show
  1. package/README.md +30 -25
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/adapters/database-adapter.d.ts +9 -0
  4. package/dist/adapters/database-adapter.d.ts.map +1 -1
  5. package/dist/adapters/sqlite/query-executor.d.ts.map +1 -1
  6. package/dist/adapters/sqlite/read-write-lock.d.ts +49 -0
  7. package/dist/adapters/sqlite/read-write-lock.d.ts.map +1 -0
  8. package/dist/adapters/sqlite/schemas/admin.d.ts +5 -5
  9. package/dist/adapters/sqlite/schemas/admin.d.ts.map +1 -1
  10. package/dist/adapters/sqlite/schemas/core.d.ts +94 -0
  11. package/dist/adapters/sqlite/schemas/core.d.ts.map +1 -1
  12. package/dist/adapters/sqlite/schemas/introspection.d.ts +8 -7
  13. package/dist/adapters/sqlite/schemas/introspection.d.ts.map +1 -1
  14. package/dist/adapters/sqlite/schemas/migration.d.ts +2 -2
  15. package/dist/adapters/sqlite/schemas/migration.d.ts.map +1 -1
  16. package/dist/adapters/sqlite/sqlite-adapter.d.ts +6 -0
  17. package/dist/adapters/sqlite/sqlite-adapter.d.ts.map +1 -1
  18. package/dist/adapters/sqlite/tools/admin/backup/create.d.ts.map +1 -1
  19. package/dist/adapters/sqlite/tools/admin/backup/dump.d.ts.map +1 -1
  20. package/dist/adapters/sqlite/tools/admin/backup/restore.d.ts.map +1 -1
  21. package/dist/adapters/sqlite/tools/admin/pragma.d.ts.map +1 -1
  22. package/dist/adapters/sqlite/tools/admin/verify.d.ts.map +1 -1
  23. package/dist/adapters/sqlite/tools/codemode.d.ts.map +1 -1
  24. package/dist/adapters/sqlite/tools/core/convenience.d.ts.map +1 -1
  25. package/dist/adapters/sqlite/tools/core/index.d.ts.map +1 -1
  26. package/dist/adapters/sqlite/tools/core/queries.d.ts.map +1 -1
  27. package/dist/adapters/sqlite/tools/core/versioning.d.ts +19 -0
  28. package/dist/adapters/sqlite/tools/core/versioning.d.ts.map +1 -0
  29. package/dist/adapters/sqlite/tools/introspection/graph/tools.d.ts.map +1 -1
  30. package/dist/adapters/sqlite/tools/json-operations/crud.d.ts.map +1 -1
  31. package/dist/adapters/sqlite/tools/migration/helpers.d.ts.map +1 -1
  32. package/dist/adapters/sqlite/tools/vector/metadata.d.ts.map +1 -1
  33. package/dist/adapters/sqlite/tools/vector/search.d.ts.map +1 -1
  34. package/dist/adapters/sqlite/tools/vector/storage.d.ts.map +1 -1
  35. package/dist/adapters/sqlite/tools/virtual/vtable/analyze-csv.d.ts.map +1 -1
  36. package/dist/adapters/sqlite/tools/virtual/vtable/csv.d.ts.map +1 -1
  37. package/dist/adapters/sqlite/tools/virtual/vtable/info.d.ts.map +1 -1
  38. package/dist/adapters/sqlite/types.d.ts +1 -1
  39. package/dist/adapters/sqlite/types.d.ts.map +1 -1
  40. package/dist/adapters/sqlite-native/index.d.ts +1 -1
  41. package/dist/adapters/sqlite-native/index.d.ts.map +1 -1
  42. package/dist/adapters/sqlite-native/tools/window/helpers.d.ts +52 -0
  43. package/dist/adapters/sqlite-native/tools/window/helpers.d.ts.map +1 -0
  44. package/dist/adapters/sqlite-native/tools/window/index.d.ts +7 -0
  45. package/dist/adapters/sqlite-native/tools/window/index.d.ts.map +1 -0
  46. package/dist/adapters/sqlite-native/tools/window/lag-lead.d.ts +7 -0
  47. package/dist/adapters/sqlite-native/tools/window/lag-lead.d.ts.map +1 -0
  48. package/dist/adapters/sqlite-native/tools/window/moving-average.d.ts +7 -0
  49. package/dist/adapters/sqlite-native/tools/window/moving-average.d.ts.map +1 -0
  50. package/dist/adapters/sqlite-native/tools/window/ntile.d.ts +7 -0
  51. package/dist/adapters/sqlite-native/tools/window/ntile.d.ts.map +1 -0
  52. package/dist/adapters/sqlite-native/tools/window/rank.d.ts +7 -0
  53. package/dist/adapters/sqlite-native/tools/window/rank.d.ts.map +1 -0
  54. package/dist/adapters/sqlite-native/tools/window/row-number.d.ts +7 -0
  55. package/dist/adapters/sqlite-native/tools/window/row-number.d.ts.map +1 -0
  56. package/dist/adapters/sqlite-native/tools/window/running-total.d.ts +7 -0
  57. package/dist/adapters/sqlite-native/tools/window/running-total.d.ts.map +1 -0
  58. package/dist/adapters/sqlite-native/tools/window/schemas.d.ts +159 -0
  59. package/dist/adapters/sqlite-native/tools/window/schemas.d.ts.map +1 -0
  60. package/dist/adapters/sqlite-native/transaction-methods.d.ts.map +1 -1
  61. package/dist/audit/logger.d.ts.map +1 -1
  62. package/dist/auth/authorization-server-discovery.d.ts.map +1 -1
  63. package/dist/auth/scopes/mapping.d.ts.map +1 -1
  64. package/dist/auth/token-validator.d.ts.map +1 -1
  65. package/dist/{chunk-EQF3WZHX.js → chunk-27C5EE6U.js} +15 -2
  66. package/dist/{chunk-R5M4WKDM.js → chunk-2TYICG7B.js} +381 -185
  67. package/dist/{chunk-NIC5Z2CA.js → chunk-LLIAIJPO.js} +394 -381
  68. package/dist/{chunk-TGE7LFAR.js → chunk-UE7GVOBV.js} +1069 -355
  69. package/dist/{chunk-Y57WFKAP.js → chunk-XLIYO3YA.js} +178 -72
  70. package/dist/cli.js +18 -6
  71. package/dist/codemode/api-constants.d.ts.map +1 -1
  72. package/dist/codemode/api.d.ts.map +1 -1
  73. package/dist/codemode/sandbox-factory.d.ts.map +1 -1
  74. package/dist/codemode/sandbox.d.ts +0 -3
  75. package/dist/codemode/sandbox.d.ts.map +1 -1
  76. package/dist/codemode/security.d.ts.map +1 -1
  77. package/dist/codemode/types.d.ts +2 -0
  78. package/dist/codemode/types.d.ts.map +1 -1
  79. package/dist/constants/server-instructions.d.ts.map +1 -1
  80. package/dist/filtering/tool-constants.d.ts +5 -5
  81. package/dist/filtering/tool-constants.d.ts.map +1 -1
  82. package/dist/{http-2WGR3E5K.js → http-ZDMK46QU.js} +183 -32
  83. package/dist/index.js +4 -4
  84. package/dist/observability/system-db.d.ts.map +1 -1
  85. package/dist/server/mcp-server.d.ts.map +1 -1
  86. package/dist/server/registration/admin-tools.d.ts.map +1 -1
  87. package/dist/server/registration/audit-tools/backup.d.ts +8 -0
  88. package/dist/server/registration/audit-tools/backup.d.ts.map +1 -0
  89. package/dist/server/registration/audit-tools/helpers.d.ts +11 -0
  90. package/dist/server/registration/audit-tools/helpers.d.ts.map +1 -0
  91. package/dist/server/registration/audit-tools/index.d.ts +4 -0
  92. package/dist/server/registration/audit-tools/index.d.ts.map +1 -0
  93. package/dist/server/registration/audit-tools/resource.d.ts +8 -0
  94. package/dist/server/registration/audit-tools/resource.d.ts.map +1 -0
  95. package/dist/server/registration/audit-tools/search.d.ts +7 -0
  96. package/dist/server/registration/audit-tools/search.d.ts.map +1 -0
  97. package/dist/server/registration/index.d.ts +1 -1
  98. package/dist/server/registration/index.d.ts.map +1 -1
  99. package/dist/{sqlite-D4WCNPU4.js → sqlite-XWZPEZJO.js} +192 -19
  100. package/dist/{sqlite-native-DLVS2T52.js → sqlite-native-5GQ3WKCZ.js} +156 -117
  101. package/dist/transports/http/middleware.d.ts.map +1 -1
  102. package/dist/transports/http/oauth.d.ts.map +1 -1
  103. package/dist/transports/http/sessions/legacy-sse.d.ts.map +1 -1
  104. package/dist/transports/http/sessions/stateful.d.ts +5 -1
  105. package/dist/transports/http/sessions/stateful.d.ts.map +1 -1
  106. package/dist/transports/http/transport.d.ts +2 -0
  107. package/dist/transports/http/transport.d.ts.map +1 -1
  108. package/dist/transports/http/types.d.ts +9 -0
  109. package/dist/transports/http/types.d.ts.map +1 -1
  110. package/dist/types/auth.d.ts +4 -0
  111. package/dist/types/auth.d.ts.map +1 -1
  112. package/dist/types/server.d.ts +3 -0
  113. package/dist/types/server.d.ts.map +1 -1
  114. package/dist/utils/annotations.d.ts +8 -0
  115. package/dist/utils/annotations.d.ts.map +1 -1
  116. package/dist/utils/errors/categories.d.ts +16 -11
  117. package/dist/utils/errors/categories.d.ts.map +1 -1
  118. package/dist/utils/errors/classes.d.ts +37 -0
  119. package/dist/utils/errors/classes.d.ts.map +1 -1
  120. package/dist/utils/errors/format.d.ts +2 -2
  121. package/dist/utils/errors/format.d.ts.map +1 -1
  122. package/dist/utils/errors/index.d.ts +1 -1
  123. package/dist/utils/errors/index.d.ts.map +1 -1
  124. package/dist/utils/errors/suggestions.d.ts +1 -0
  125. package/dist/utils/errors/suggestions.d.ts.map +1 -1
  126. package/dist/utils/index.d.ts +2 -0
  127. package/dist/utils/index.d.ts.map +1 -1
  128. package/dist/utils/security-utils.d.ts +29 -0
  129. package/dist/utils/security-utils.d.ts.map +1 -0
  130. package/dist/utils/stream-utils.d.ts +14 -0
  131. package/dist/utils/stream-utils.d.ts.map +1 -0
  132. package/dist/utils/where-clause.d.ts +0 -13
  133. package/dist/utils/where-clause.d.ts.map +1 -1
  134. package/package.json +35 -38
  135. package/dist/adapters/sqlite-native/tools/window.d.ts +0 -7
  136. package/dist/adapters/sqlite-native/tools/window.d.ts.map +0 -1
  137. package/dist/server/registration/audit-tools.d.ts +0 -17
  138. package/dist/server/registration/audit-tools.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-factory.d.ts","sourceRoot":"","sources":["../../src/codemode/sandbox-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,SAAS,IAAI,OAAO,CAAC;IACrB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,IAAI,CAAC;IACnB,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAK7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,WAAW,EAAE,CAExD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,QAAQ,CASV;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,CAAC,EAAE,WAAW,EAClB,WAAW,CAAC,EAAE,WAAW,EACzB,cAAc,CAAC,EAAE,cAAc,GAC9B,YAAY,CASd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,CAQtE"}
1
+ {"version":3,"file":"sandbox-factory.d.ts","sourceRoot":"","sources":["../../src/codemode/sandbox-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG7E;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,SAAS,IAAI,OAAO,CAAC;IACrB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,IAAI,CAAC;IACnB,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAK7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,WAAW,EAAE,CAExD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,QAAQ,CASV;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,CAAC,EAAE,WAAW,EAClB,WAAW,CAAC,EAAE,WAAW,EACzB,cAAc,CAAC,EAAE,cAAc,GAC9B,YAAY,CASd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,CAQtE"}
@@ -6,9 +6,6 @@
6
6
  */
7
7
  import type ivm from "isolated-vm";
8
8
  import { type SandboxOptions, type PoolOptions, type SandboxResult } from "./types.js";
9
- /**
10
- * A sandboxed execution context using isolated-vm
11
- */
12
9
  export declare class CodeModeSandbox {
13
10
  private readonly options;
14
11
  private disposed;
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/codemode/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO;IAIP;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,eAAe;IAQxD;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IAkUzB,gBAAgB,IAAI,MAAM,EAAE;IAI5B,kBAAkB,IAAI,IAAI;IAI1B,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,IAAI;CAIhB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAC1D,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAoC;IAC7D,OAAO,CAAC,MAAM,CAAC,YAAY,CAA2B;gBAE1C,WAAW,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,cAAc;IAKtE,MAAM,CAAC,SAAS,IAAI,OAAO,GAAG;WAOjB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IAgCzB,OAAO,IAAI,IAAI;IAOf,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAS3E,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/codemode/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAcpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO;IAIP;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,eAAe;IAQxD;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IAkYzB,gBAAgB,IAAI,MAAM,EAAE;IAI5B,kBAAkB,IAAI,IAAI;IAI1B,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,IAAI;CAIhB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAC1D,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAoC;IAC7D,OAAO,CAAC,MAAM,CAAC,YAAY,CAA2B;gBAE1C,WAAW,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,cAAc;IAKtE,MAAM,CAAC,SAAS,IAAI,OAAO,GAAG;WAUjB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IAiCzB,OAAO,IAAI,IAAI;IAOf,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAS3E,OAAO,IAAI,IAAI;CAGhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/codemode/security.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAGzB;IACJ,OAAO,CAAC,WAAW,CAAC,CAAkB;gBAE1B,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAa5C;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IA2C5C;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsDxD;;OAEG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB9D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IA8BxC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAqC1C;;OAEG;IACH,qBAAqB,CACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe;IAclB;;OAEG;IACH,iBAAiB,IAAI,IAAI;CAQ1B"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/codemode/security.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAKpB;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAGzB;IACJ,OAAO,CAAC,WAAW,CAAC,CAAkB;gBAE1B,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAa5C;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IA2C5C;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsDxD;;OAEG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB9D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IA8BxC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAqC1C;;OAEG;IACH,qBAAqB,CACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe;IAclB;;OAEG;IACH,iBAAiB,IAAI,IAAI;CAQ1B"}
@@ -14,6 +14,8 @@ export interface SandboxOptions {
14
14
  timeoutMs?: number;
15
15
  /** CPU time limit in milliseconds (default: 10000) */
16
16
  cpuLimitMs?: number;
17
+ /** Whether to hard-fail if isolated-vm is missing rather than fallback to node:vm (default: true) */
18
+ strictIsolation?: boolean;
17
19
  }
18
20
  /**
19
21
  * Options for the sandbox pool
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/codemode/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/codemode/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-instructions.d.ts","sourceRoot":"","sources":["../../src/constants/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY,g2BAoBwC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAs3BnD,CAAC"}
1
+ {"version":3,"file":"server-instructions.d.ts","sourceRoot":"","sources":["../../src/constants/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY,g2BAoBwC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAy1BnD,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Defines the tool groups and meta-groups used for filtering.
5
5
  *
6
6
  * GROUP TOOLS (adapter-registered, accessible via Code Mode sqlite.help()):
7
- * core: 21 tools (core/queries.ts, core/tables.ts, core/indexes.ts, core/convenience.ts, core/triggers.ts, core/constraints.ts, core/datetime.ts, core/alter-table.ts)
7
+ * core: 25 tools (core/queries.ts, core/tables.ts, core/indexes.ts, core/convenience.ts, core/triggers.ts, core/constraints.ts, core/datetime.ts, core/alter-table.ts, core/versioning.ts)
8
8
  * json: 25 tools (json-operations/crud+query+transform+security+diff.ts, json-helpers/read+write.ts)
9
9
  * text: 15 WASM / 20 Native (text/regex+formatting+search+validate+sentiment.ts, fts.ts)
10
10
  * stats: 17 WASM / 23 Native (stats/basic+advanced.ts, inference/, anomaly-detection.ts, schema-risks.ts, native: window.ts)
@@ -15,17 +15,17 @@
15
15
  * introspection: 10 tools (introspection/graph/tools.ts, analysis/constraints+risks+snapshot+diff.ts, diagnostics/storage+indexes+query-plan.ts)
16
16
  * migration: 6 tools (migration/tracking.ts) — opt-in
17
17
  * codemode: 1 tool (codemode.ts)
18
- * Subtotal: 139 WASM / 166 Native (excluding Code Mode)
18
+ * Subtotal: 143 WASM / 170 Native (excluding Code Mode)
19
19
  *
20
20
  * AUDIT & ADMIN TOOLS (server-level, MCP-only — NOT exposed in Code Mode):
21
21
  * 7 tools (server/registration/audit-tools.ts, admin-tools.ts)
22
22
  *
23
23
  * TOOL COUNT TAXONOMY:
24
- * Group tools: 166 Native / 139 WASM (10 groups excluding Code Mode)
24
+ * Group tools: 170 Native / 143 WASM (10 groups excluding Code Mode)
25
25
  * Audit tools: 7 Native / 7 WASM (MCP-only)
26
- * Inventory: 173 Native / 146 WASM (Group + Audit)
26
+ * Inventory: 177 Native / 150 WASM (Group + Audit)
27
27
  * Built-in: 4 / 4 (server_info, health, adapters, execute_code)
28
- * MCP total: 177 Native / 150 WASM (tools/list response)
28
+ * MCP total: 181 Native / 154 WASM (tools/list response)
29
29
  */
30
30
  import type { ToolGroup, MetaGroup } from "../types/index.js";
31
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tool-constants.d.ts","sourceRoot":"","sources":["../../src/filtering/tool-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,EAYtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CA+MnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,CAiCtD,CAAC"}
1
+ {"version":3,"file":"tool-constants.d.ts","sourceRoot":"","sources":["../../src/filtering/tool-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,EAYtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAmNnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,CAiCtD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { createModuleLogger, DbMcpError, metrics, runWithAuthContext, ERROR_CODES, logger, SUPPORTED_SCOPES, scopesGrantToolAccess, InsufficientScopeError, hasAdminScope, hasReadScope, isOAuthError, BASE_SCOPES, AuthServerDiscoveryError, JwksFetchError, parseScopes, TokenExpiredError, InvalidSignatureError, InvalidTokenError, TokenMissingError } from './chunk-Y57WFKAP.js';
1
+ import { createModuleLogger, DbMcpError, ErrorCategory, metrics, runWithAuthContext, ERROR_CODES, logger, ConfigurationError, SUPPORTED_SCOPES, scopesGrantToolAccess, InsufficientScopeError, hasAdminScope, hasReadScope, isOAuthError, BASE_SCOPES, AuthServerDiscoveryError, JwksFetchError, parseScopes, TokenExpiredError, InvalidSignatureError, InvalidTokenError, TokenMissingError } from './chunk-XLIYO3YA.js';
2
2
  import express from 'express';
3
3
  import { localhostHostValidation } from '@modelcontextprotocol/sdk/server/middleware/hostHeaderValidation.js';
4
4
  import cors from 'cors';
@@ -148,6 +148,9 @@ var JSONRPC_INTERNAL_ERROR = -32603;
148
148
  var HTTP_REQUEST_TIMEOUT_MS = 12e4;
149
149
  var HTTP_KEEP_ALIVE_TIMEOUT_MS = 65e3;
150
150
  var HTTP_HEADERS_TIMEOUT_MS = 66e3;
151
+ var SESSION_TIMEOUT_MS = 30 * 60 * 1e3;
152
+ var SESSION_SWEEP_INTERVAL_MS = 1 * 60 * 1e3;
153
+ var SESSION_ABSOLUTE_TTL_MS = 24 * 60 * 60 * 1e3;
151
154
  function setupSecurityHeaders(state) {
152
155
  if (!state.app) return;
153
156
  state.app.disable("x-powered-by");
@@ -251,7 +254,12 @@ function setupRateLimiting(state) {
251
254
  skip: (req) => req.path === "/health",
252
255
  handler: (_req, res, _next, options) => {
253
256
  res.status(options.statusCode).json({
254
- error: "Too Many Requests"
257
+ success: false,
258
+ error: "Too Many Requests",
259
+ code: "RATE_LIMIT_ERROR",
260
+ category: "rate_limit",
261
+ suggestion: "Wait before retrying. Reduce request frequency or configure MCP_RATE_LIMIT_MAX.",
262
+ recoverable: true
255
263
  });
256
264
  }
257
265
  });
@@ -273,7 +281,7 @@ async function setupStatelessEndpoints(state) {
273
281
  throw new DbMcpError(
274
282
  "Transport or server not initialized",
275
283
  ERROR_CODES.SERVER.TRANSPORT_ERROR.full,
276
- "internal" /* INTERNAL */
284
+ ErrorCategory.INTERNAL
277
285
  );
278
286
  }
279
287
  state.statelessTransport = new StreamableHTTPServerTransport({
@@ -354,15 +362,49 @@ function isValidSessionId(id) {
354
362
  if (id.length !== 36) return false;
355
363
  return /^[0-9a-fA-F-]{36}$/.test(id);
356
364
  }
365
+ function touchSession(state, sessionId) {
366
+ state.sessionLastActivity.set(sessionId, Date.now());
367
+ }
357
368
  function setupStatefulEndpoints(state) {
358
369
  if (!state.app || !state.mcpServer) {
359
370
  throw new DbMcpError(
360
371
  "Transport or server not initialized",
361
372
  ERROR_CODES.SERVER.TRANSPORT_ERROR.full,
362
- "internal" /* INTERNAL */
373
+ ErrorCategory.INTERNAL
363
374
  );
364
375
  }
365
376
  const server = state.mcpServer;
377
+ const sessionSweepTimer = setInterval(() => {
378
+ const now = Date.now();
379
+ for (const [sid, lastActivity] of state.sessionLastActivity) {
380
+ const idleMs = now - lastActivity;
381
+ if (idleMs <= SESSION_TIMEOUT_MS) continue;
382
+ if ((state.sessionLocks.get(sid) ?? 0) > 0) continue;
383
+ if (state.transports.has(sid)) {
384
+ logger5.info("Expiring idle HTTP session", {
385
+ code: "HTTP_SESSION_EXPIRE",
386
+ sessionId: sid,
387
+ idleMinutes: Math.round(idleMs / 6e4)
388
+ });
389
+ const t = state.transports.get(sid);
390
+ if (t) {
391
+ void t.close();
392
+ }
393
+ }
394
+ if (state.sseTransports.has(sid)) {
395
+ logger5.info("Expiring idle SSE session", {
396
+ code: "SSE_SESSION_EXPIRE",
397
+ sessionId: sid,
398
+ idleMinutes: Math.round(idleMs / 6e4)
399
+ });
400
+ const t = state.sseTransports.get(sid);
401
+ if (t) {
402
+ void t.close();
403
+ }
404
+ }
405
+ }
406
+ }, SESSION_SWEEP_INTERVAL_MS);
407
+ sessionSweepTimer.unref();
366
408
  state.app.post("/mcp", (req, res) => {
367
409
  const sessionId = req.headers["mcp-session-id"];
368
410
  if (sessionId !== void 0 && !isValidSessionId(sessionId)) {
@@ -412,10 +454,23 @@ function setupStatefulEndpoints(state) {
412
454
  });
413
455
  return;
414
456
  }
457
+ const createdAt = state.sessionCreatedAt.get(sessionId) ?? Date.now();
458
+ if (Date.now() - createdAt > SESSION_ABSOLUTE_TTL_MS) {
459
+ res.status(401).json({
460
+ jsonrpc: "2.0",
461
+ error: {
462
+ code: JSONRPC_SERVER_ERROR,
463
+ message: "Unauthorized: Session absolute TTL expired"
464
+ },
465
+ id: null
466
+ });
467
+ return;
468
+ }
469
+ touchSession(state, sessionId);
415
470
  httpTransport = existingTransport;
416
471
  } else if (sessionId === void 0 && isNewSessionRequest(req.body)) {
417
472
  const maxSessions = state.config.maxSessions ?? 1e3;
418
- if (state.transports.size >= maxSessions) {
473
+ if (state.transports.size + state.sseTransports.size >= maxSessions) {
419
474
  res.status(429).json({
420
475
  jsonrpc: "2.0",
421
476
  error: {
@@ -434,6 +489,8 @@ function setupStatefulEndpoints(state) {
434
489
  sessionId: sid
435
490
  });
436
491
  state.transports.set(sid, newTransport);
492
+ touchSession(state, sid);
493
+ state.sessionCreatedAt.set(sid, Date.now());
437
494
  state.sessionOwners.set(sid, req.auth?.sub);
438
495
  }
439
496
  });
@@ -446,6 +503,9 @@ function setupStatefulEndpoints(state) {
446
503
  });
447
504
  state.transports.delete(sid);
448
505
  state.sessionOwners.delete(sid);
506
+ state.sessionLastActivity.delete(sid);
507
+ state.sessionCreatedAt.delete(sid);
508
+ state.sessionLocks.delete(sid);
449
509
  if ("subscriptionManager" in server) {
450
510
  server.subscriptionManager.unsubscribeSession(sid);
451
511
  }
@@ -492,11 +552,28 @@ function setupStatefulEndpoints(state) {
492
552
  release();
493
553
  }
494
554
  });
495
- await newTransport.handleRequest(
496
- asIncoming(req),
497
- asServerResponse(res),
498
- req.body
499
- );
555
+ const activeSid = newTransport.sessionId;
556
+ try {
557
+ if (activeSid) {
558
+ const count = state.sessionLocks.get(activeSid) ?? 0;
559
+ state.sessionLocks.set(activeSid, count + 1);
560
+ }
561
+ await newTransport.handleRequest(
562
+ asIncoming(req),
563
+ asServerResponse(res),
564
+ req.body
565
+ );
566
+ } finally {
567
+ if (activeSid) {
568
+ const count = state.sessionLocks.get(activeSid) ?? 0;
569
+ if (count > 1) {
570
+ state.sessionLocks.set(activeSid, count - 1);
571
+ } else {
572
+ state.sessionLocks.delete(activeSid);
573
+ }
574
+ touchSession(state, activeSid);
575
+ }
576
+ }
500
577
  return;
501
578
  } else {
502
579
  res.status(400).json({
@@ -510,11 +587,28 @@ function setupStatefulEndpoints(state) {
510
587
  return;
511
588
  }
512
589
  if (httpTransport !== void 0) {
513
- await httpTransport.handleRequest(
514
- asIncoming(req),
515
- asServerResponse(res),
516
- req.body
517
- );
590
+ const activeSid = sessionId;
591
+ try {
592
+ if (activeSid) {
593
+ const count = state.sessionLocks.get(activeSid) ?? 0;
594
+ state.sessionLocks.set(activeSid, count + 1);
595
+ }
596
+ await httpTransport.handleRequest(
597
+ asIncoming(req),
598
+ asServerResponse(res),
599
+ req.body
600
+ );
601
+ } finally {
602
+ if (activeSid) {
603
+ const count = state.sessionLocks.get(activeSid) ?? 0;
604
+ if (count > 1) {
605
+ state.sessionLocks.set(activeSid, count - 1);
606
+ } else {
607
+ state.sessionLocks.delete(activeSid);
608
+ }
609
+ touchSession(state, activeSid);
610
+ }
611
+ }
518
612
  }
519
613
  } catch (error) {
520
614
  logger5.error("Error handling MCP request", {
@@ -549,6 +643,12 @@ function setupStatefulEndpoints(state) {
549
643
  res.status(403).send("Forbidden: session belongs to a different client");
550
644
  return;
551
645
  }
646
+ const createdAt = state.sessionCreatedAt.get(sessionId) ?? Date.now();
647
+ if (Date.now() - createdAt > SESSION_ABSOLUTE_TTL_MS) {
648
+ res.status(401).send("Unauthorized: Session absolute TTL expired");
649
+ return;
650
+ }
651
+ touchSession(state, sessionId);
552
652
  const lastEventId = req.headers["last-event-id"];
553
653
  if (lastEventId !== void 0) {
554
654
  logger5.debug("Client reconnecting with Last-Event-ID", {
@@ -558,7 +658,24 @@ function setupStatefulEndpoints(state) {
558
658
  });
559
659
  }
560
660
  if (httpTransport !== void 0) {
561
- void httpTransport.handleRequest(asIncoming(req), asServerResponse(res));
661
+ void (async () => {
662
+ try {
663
+ const count = state.sessionLocks.get(sessionId) ?? 0;
664
+ state.sessionLocks.set(sessionId, count + 1);
665
+ await httpTransport.handleRequest(
666
+ asIncoming(req),
667
+ asServerResponse(res)
668
+ );
669
+ } finally {
670
+ const count = state.sessionLocks.get(sessionId) ?? 0;
671
+ if (count > 1) {
672
+ state.sessionLocks.set(sessionId, count - 1);
673
+ } else {
674
+ state.sessionLocks.delete(sessionId);
675
+ }
676
+ touchSession(state, sessionId);
677
+ }
678
+ })();
562
679
  }
563
680
  });
564
681
  state.app.delete("/mcp", (req, res) => {
@@ -581,9 +698,27 @@ function setupStatefulEndpoints(state) {
581
698
  sessionId
582
699
  });
583
700
  if (httpTransport !== void 0) {
584
- void httpTransport.handleRequest(asIncoming(req), asServerResponse(res));
701
+ void (async () => {
702
+ try {
703
+ const count = state.sessionLocks.get(sessionId) ?? 0;
704
+ state.sessionLocks.set(sessionId, count + 1);
705
+ await httpTransport.handleRequest(
706
+ asIncoming(req),
707
+ asServerResponse(res)
708
+ );
709
+ } finally {
710
+ const count = state.sessionLocks.get(sessionId) ?? 0;
711
+ if (count > 1) {
712
+ state.sessionLocks.set(sessionId, count - 1);
713
+ } else {
714
+ state.sessionLocks.delete(sessionId);
715
+ }
716
+ touchSession(state, sessionId);
717
+ }
718
+ })();
585
719
  }
586
720
  });
721
+ return sessionSweepTimer;
587
722
  }
588
723
  var logger6 = createModuleLogger("HTTP");
589
724
  var connectionMutex2 = new Mutex();
@@ -601,6 +736,8 @@ function setupLegacySSEEndpoints(state) {
601
736
  void (async () => {
602
737
  try {
603
738
  state.sseTransports.set(sseTransport.sessionId, sseTransport);
739
+ touchSession(state, sseTransport.sessionId);
740
+ state.sessionCreatedAt.set(sseTransport.sessionId, Date.now());
604
741
  state.sessionOwners.set(sseTransport.sessionId, req.auth?.sub);
605
742
  sseTransport.onclose = () => {
606
743
  logger6.info("Legacy SSE transport closed", {
@@ -609,6 +746,8 @@ function setupLegacySSEEndpoints(state) {
609
746
  });
610
747
  state.sseTransports.delete(sseTransport.sessionId);
611
748
  state.sessionOwners.delete(sseTransport.sessionId);
749
+ state.sessionLastActivity.delete(sseTransport.sessionId);
750
+ state.sessionCreatedAt.delete(sseTransport.sessionId);
612
751
  if ("subscriptionManager" in server) {
613
752
  server.subscriptionManager.unsubscribeSession(sseTransport.sessionId);
614
753
  }
@@ -672,6 +811,8 @@ function setupLegacySSEEndpoints(state) {
672
811
  req.on("close", () => {
673
812
  state.sseTransports.delete(sseTransport.sessionId);
674
813
  state.sessionOwners.delete(sseTransport.sessionId);
814
+ state.sessionLastActivity.delete(sseTransport.sessionId);
815
+ state.sessionCreatedAt.delete(sseTransport.sessionId);
675
816
  });
676
817
  });
677
818
  state.app.post("/messages", (req, res) => {
@@ -710,6 +851,7 @@ function setupLegacySSEEndpoints(state) {
710
851
  });
711
852
  return;
712
853
  }
854
+ touchSession(state, sessionId);
713
855
  void sseTransport.handlePostMessage(
714
856
  asIncoming(req),
715
857
  asServerResponse(res),
@@ -858,7 +1000,7 @@ var AuthorizationServerDiscovery = class {
858
1000
  const url = new URL(this.authServerUrl);
859
1001
  const isLocalDev = url.hostname === "localhost" || url.hostname === "127.0.0.1" || url.hostname === "[::1]";
860
1002
  if (!isLocalDev) {
861
- throw new Error(
1003
+ throw new ConfigurationError(
862
1004
  `Security: Authorization server URL must use HTTPS in production. Got: ${this.authServerUrl}. Set NODE_ENV=development to allow HTTP for local testing.`
863
1005
  );
864
1006
  }
@@ -903,7 +1045,7 @@ var AuthorizationServerDiscovery = class {
903
1045
  throw new DbMcpError(
904
1046
  `HTTP ${String(response.status)}: ${response.statusText}`,
905
1047
  ERROR_CODES.AUTH.DISCOVERY_FAILED.full,
906
- "connection" /* CONNECTION */
1048
+ ErrorCategory.CONNECTION
907
1049
  );
908
1050
  }
909
1051
  const metadata = await response.json();
@@ -937,14 +1079,14 @@ var AuthorizationServerDiscovery = class {
937
1079
  throw new DbMcpError(
938
1080
  "Missing required field: issuer",
939
1081
  "AUTH_DISCOVERY_INVALID",
940
- "validation" /* VALIDATION */
1082
+ ErrorCategory.VALIDATION
941
1083
  );
942
1084
  }
943
1085
  if (!metadata.token_endpoint) {
944
1086
  throw new DbMcpError(
945
1087
  "Missing required field: token_endpoint",
946
1088
  "AUTH_DISCOVERY_INVALID",
947
- "validation" /* VALIDATION */
1089
+ ErrorCategory.VALIDATION
948
1090
  );
949
1091
  }
950
1092
  try {
@@ -954,7 +1096,7 @@ var AuthorizationServerDiscovery = class {
954
1096
  throw new DbMcpError(
955
1097
  "Invalid URL format in metadata fields",
956
1098
  "AUTH_DISCOVERY_INVALID",
957
- "validation" /* VALIDATION */
1099
+ ErrorCategory.VALIDATION
958
1100
  );
959
1101
  }
960
1102
  const expectedIssuer = this.authServerUrl;
@@ -962,7 +1104,7 @@ var AuthorizationServerDiscovery = class {
962
1104
  throw new DbMcpError(
963
1105
  `Issuer validation failed. Per RFC 8414 \xA73.3, the issuer MUST be identical to the authorization server URL.`,
964
1106
  "AUTH_ISSUER_MISMATCH",
965
- "validation" /* VALIDATION */
1107
+ ErrorCategory.VALIDATION
966
1108
  );
967
1109
  }
968
1110
  }
@@ -974,7 +1116,7 @@ var AuthorizationServerDiscovery = class {
974
1116
  throw new DbMcpError(
975
1117
  "Authorization server metadata not yet discovered. Call discover() first.",
976
1118
  "AUTH_DISCOVERY_REQUIRED",
977
- "internal" /* INTERNAL */
1119
+ ErrorCategory.INTERNAL
978
1120
  );
979
1121
  }
980
1122
  return this.cachedMetadata;
@@ -990,7 +1132,7 @@ var AuthorizationServerDiscovery = class {
990
1132
  throw new DbMcpError(
991
1133
  "Authorization server does not provide jwks_uri",
992
1134
  "AUTH_DISCOVERY_INVALID",
993
- "validation" /* VALIDATION */
1135
+ ErrorCategory.VALIDATION
994
1136
  );
995
1137
  }
996
1138
  return metadata.jwks_uri;
@@ -1082,7 +1224,7 @@ var TokenValidator = class _TokenValidator {
1082
1224
  const url = new URL(config.jwksUri);
1083
1225
  const isLocalDev = url.hostname === "localhost" || url.hostname === "127.0.0.1";
1084
1226
  if (!isLocalDev) {
1085
- throw new Error(
1227
+ throw new ConfigurationError(
1086
1228
  `Security: JWKS URI must use HTTPS in production. Got: ${config.jwksUri}. Set ALLOW_HTTP_JWKS=true to allow HTTP for local testing.`
1087
1229
  );
1088
1230
  }
@@ -1292,7 +1434,7 @@ function applyAuthMiddleware(state) {
1292
1434
  const corsOrigins = state.config.corsOrigins ?? [];
1293
1435
  const isPubliclyExposed = state.config.oauth.enabled || state.config.noAuthEnforcement;
1294
1436
  if (corsOrigins.includes("*") && isPubliclyExposed) {
1295
- throw new Error(
1437
+ throw new ConfigurationError(
1296
1438
  "Security: CORS wildcard origin ('*') is forbidden when authentication is enabled or enforcement is explicitly disabled. Configure explicit origins via --cors-origins for production deployments."
1297
1439
  );
1298
1440
  }
@@ -1441,7 +1583,7 @@ function applyScopeEnforcementMiddleware(state) {
1441
1583
  async function setupOAuth(state, resourceUri) {
1442
1584
  logger10.info("Setting up OAuth 2.1...", { code: "HTTP_OAUTH_SETUP" });
1443
1585
  if (state.config.oauth.enabled && !state.config.oauth.audience) {
1444
- throw new Error(
1586
+ throw new ConfigurationError(
1445
1587
  "Security: OAuth audience must be explicitly configured when OAuth is enabled."
1446
1588
  );
1447
1589
  }
@@ -1495,6 +1637,8 @@ var logger11 = createModuleLogger("HTTP");
1495
1637
  var HttpTransport = class {
1496
1638
  /** Internal state shared with session/middleware/oauth modules */
1497
1639
  state;
1640
+ /** Sweep timer for session timeout cleanup */
1641
+ sweepTimer = null;
1498
1642
  constructor(config) {
1499
1643
  this.state = {
1500
1644
  config: {
@@ -1508,6 +1652,9 @@ var HttpTransport = class {
1508
1652
  transports: /* @__PURE__ */ new Map(),
1509
1653
  sseTransports: /* @__PURE__ */ new Map(),
1510
1654
  sessionOwners: /* @__PURE__ */ new Map(),
1655
+ sessionLastActivity: /* @__PURE__ */ new Map(),
1656
+ sessionCreatedAt: /* @__PURE__ */ new Map(),
1657
+ sessionLocks: /* @__PURE__ */ new Map(),
1511
1658
  statelessTransport: null,
1512
1659
  resourceServer: null,
1513
1660
  authServerDiscovery: null,
@@ -1536,7 +1683,7 @@ var HttpTransport = class {
1536
1683
  throw new DbMcpError(
1537
1684
  "trustedProxyIps cannot be an empty array if specified",
1538
1685
  "CONFIG_ERROR",
1539
- "config" /* CONFIGURATION */
1686
+ ErrorCategory.CONFIGURATION
1540
1687
  );
1541
1688
  }
1542
1689
  this.state.app.set("trust proxy", this.state.config.trustedProxyIps);
@@ -1555,7 +1702,7 @@ var HttpTransport = class {
1555
1702
  throw new DbMcpError(
1556
1703
  "HTTP transport is enabled without authentication. You must configure OAuth (--oauth-enabled) or explicitly bypass this check with --no-auth-enforcement.",
1557
1704
  "AUTH_REQUIRED",
1558
- "config" /* CONFIGURATION */
1705
+ ErrorCategory.CONFIGURATION
1559
1706
  );
1560
1707
  }
1561
1708
  if (this.state.config.oauth.enabled) {
@@ -1629,7 +1776,7 @@ var HttpTransport = class {
1629
1776
  if (this.state.config.stateless) {
1630
1777
  await setupStatelessEndpoints(this.state);
1631
1778
  } else {
1632
- setupStatefulEndpoints(this.state);
1779
+ this.sweepTimer = setupStatefulEndpoints(this.state);
1633
1780
  }
1634
1781
  if (!this.state.config.stateless) {
1635
1782
  setupLegacySSEEndpoints(this.state);
@@ -1654,7 +1801,7 @@ var HttpTransport = class {
1654
1801
  throw new DbMcpError(
1655
1802
  "Transport not initialized. Call initialize() first.",
1656
1803
  ERROR_CODES.SERVER.START_FAILED.full,
1657
- "internal" /* INTERNAL */
1804
+ ErrorCategory.INTERNAL
1658
1805
  );
1659
1806
  }
1660
1807
  return new Promise((resolve, reject) => {
@@ -1694,6 +1841,10 @@ var HttpTransport = class {
1694
1841
  * Stop the server and close all active sessions
1695
1842
  */
1696
1843
  async stop() {
1844
+ if (this.sweepTimer) {
1845
+ clearInterval(this.sweepTimer);
1846
+ this.sweepTimer = null;
1847
+ }
1697
1848
  for (const [sessionId, transport] of this.state.transports) {
1698
1849
  try {
1699
1850
  logger11.debug("Closing transport", {
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { DEFAULT_CONFIG, DbMcpServer, createServer } from './chunk-NIC5Z2CA.js';
2
- export { DatabaseAdapter } from './chunk-EQF3WZHX.js';
3
- export { NAME, VERSION } from './chunk-R5M4WKDM.js';
4
- export { ALL_TOOL_GROUPS, AuthenticationError, AuthorizationError, ConnectionError, DbMcpError, META_GROUPS, QueryError, TOOL_GROUPS, ValidationError, filterTools, getFilterSummary, getToolFilterFromEnv, isToolEnabled, parseToolFilter } from './chunk-Y57WFKAP.js';
1
+ export { DEFAULT_CONFIG, DbMcpServer, createServer } from './chunk-LLIAIJPO.js';
2
+ export { DatabaseAdapter } from './chunk-27C5EE6U.js';
3
+ export { NAME, VERSION } from './chunk-2TYICG7B.js';
4
+ export { ALL_TOOL_GROUPS, AuthenticationError, AuthorizationError, ConnectionError, DbMcpError, META_GROUPS, QueryError, TOOL_GROUPS, ValidationError, filterTools, getFilterSummary, getToolFilterFromEnv, isToolEnabled, parseToolFilter } from './chunk-XLIYO3YA.js';
@@ -1 +1 @@
1
- {"version":3,"file":"system-db.d.ts","sourceRoot":"","sources":["../../src/observability/system-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,EAAE,cAAc;IAI5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmF3B,KAAK,IAAI,QAAQ;IAOjB,KAAK,IAAI,IAAI;CAMd"}
1
+ {"version":3,"file":"system-db.d.ts","sourceRoot":"","sources":["../../src/observability/system-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,EAAE,cAAc;IAI5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmF3B,KAAK,IAAI,QAAQ;IAOjB,KAAK,IAAI,IAAI;CAMd"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAqCvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA+ChE;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,gBAAgB,CAA8B;IACtD,SAAgB,mBAAmB,EAAE,mBAAmB,CAAC;gBAE7C,MAAM,EAAE,eAAe;IAkKnC;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IA0DhB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAI3C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;YACW,UAAU;IAiBxB;;OAEG;YACW,SAAS;IAyDvB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC/B;;;OAGG;YACW,eAAe;CA8C9B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAEjE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CAKnD,CAAC"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAwCvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA+ChE;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,gBAAgB,CAA8B;IACtD,SAAgB,mBAAmB,EAAE,mBAAmB,CAAC;gBAE7C,MAAM,EAAE,eAAe;IAyLnC;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAiEhB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAI3C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;YACW,UAAU;IAiBxB;;OAEG;YACW,SAAS;IAyDvB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC/B;;;OAGG;YACW,eAAe;CA8C9B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAEjE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CAKnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"admin-tools.d.ts","sourceRoot":"","sources":["../../../src/server/registration/admin-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+K1D"}
1
+ {"version":3,"file":"admin-tools.d.ts","sourceRoot":"","sources":["../../../src/server/registration/admin-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkL1D"}
@@ -0,0 +1,8 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { DatabaseAdapter } from "../../../adapters/database-adapter.js";
3
+ import type { BackupManager } from "../../../audit/backup-manager.js";
4
+ /**
5
+ * Register audit backup tools for snapshot management.
6
+ */
7
+ export declare function registerAuditBackupTools(server: McpServer, backupManager: BackupManager | null, adaptersMap: Map<string, DatabaseAdapter>): void;
8
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../../../src/server/registration/audit-tools/backup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAqBtE;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,aAAa,GAAG,IAAI,EACnC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACxC,IAAI,CAkoBN"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Force redaction of SQL string literals to prevent secret exposure
3
+ * in audit logs and backups, regardless of operator configuration.
4
+ */
5
+ export declare function redactSqlLiterals(text: string): string;
6
+ /**
7
+ * Validate DDL to prevent execution of unauthorized or destructive statements
8
+ * during restore operations from tampered backups.
9
+ */
10
+ export declare function validateDdl(sql: string): void;
11
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/server/registration/audit-tools/helpers.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAqB7C"}
@@ -0,0 +1,4 @@
1
+ export { registerAuditResource } from "./resource.js";
2
+ export { registerAuditBackupTools } from "./backup.js";
3
+ export { registerAuditSearchTool } from "./search.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/registration/audit-tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { BackupManager } from "../../../audit/backup-manager.js";
3
+ import type { AuditLogger } from "../../../audit/logger.js";
4
+ /**
5
+ * Register the sqlite://audit resource for agent access to audit log.
6
+ */
7
+ export declare function registerAuditResource(server: McpServer, auditLogger: AuditLogger | null, backupManager: BackupManager | null): void;
8
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../../src/server/registration/audit-tools/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,aAAa,EAAE,aAAa,GAAG,IAAI,GAClC,IAAI,CAuCN"}