db-mcp 4.0.0 → 5.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.
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-TGE7LFAR.js → chunk-UE7GVOBV.js} +1069 -355
  68. package/dist/{chunk-NIC5Z2CA.js → chunk-WYBUO4FL.js} +394 -381
  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-2XDGZF4F.js} +177 -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 +36 -39
  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":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qGAAqG;IACrG,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAK5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAItD,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,wBAAwB;IACxB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAkCrC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,mCAAmC;IACnC,SAAS,EAAE,IAAI,CAAC;IAChB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAMD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,wBAAwB;IACxB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAMD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -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 activeSid2 = newTransport.sessionId;
556
+ try {
557
+ if (activeSid2) {
558
+ const count = state.sessionLocks.get(activeSid2) ?? 0;
559
+ state.sessionLocks.set(activeSid2, count + 1);
560
+ }
561
+ await newTransport.handleRequest(
562
+ asIncoming(req),
563
+ asServerResponse(res),
564
+ req.body
565
+ );
566
+ } finally {
567
+ if (activeSid2) {
568
+ const count = state.sessionLocks.get(activeSid2) ?? 0;
569
+ if (count > 1) {
570
+ state.sessionLocks.set(activeSid2, count - 1);
571
+ } else {
572
+ state.sessionLocks.delete(activeSid2);
573
+ }
574
+ touchSession(state, activeSid2);
575
+ }
576
+ }
500
577
  return;
501
578
  } else {
502
579
  res.status(400).json({
@@ -509,12 +586,27 @@ function setupStatefulEndpoints(state) {
509
586
  });
510
587
  return;
511
588
  }
512
- if (httpTransport !== void 0) {
589
+ const activeSid = sessionId;
590
+ try {
591
+ if (activeSid) {
592
+ const count = state.sessionLocks.get(activeSid) ?? 0;
593
+ state.sessionLocks.set(activeSid, count + 1);
594
+ }
513
595
  await httpTransport.handleRequest(
514
596
  asIncoming(req),
515
597
  asServerResponse(res),
516
598
  req.body
517
599
  );
600
+ } finally {
601
+ if (activeSid) {
602
+ const count = state.sessionLocks.get(activeSid) ?? 0;
603
+ if (count > 1) {
604
+ state.sessionLocks.set(activeSid, count - 1);
605
+ } else {
606
+ state.sessionLocks.delete(activeSid);
607
+ }
608
+ touchSession(state, activeSid);
609
+ }
518
610
  }
519
611
  } catch (error) {
520
612
  logger5.error("Error handling MCP request", {
@@ -549,6 +641,12 @@ function setupStatefulEndpoints(state) {
549
641
  res.status(403).send("Forbidden: session belongs to a different client");
550
642
  return;
551
643
  }
644
+ const createdAt = state.sessionCreatedAt.get(sessionId) ?? Date.now();
645
+ if (Date.now() - createdAt > SESSION_ABSOLUTE_TTL_MS) {
646
+ res.status(401).send("Unauthorized: Session absolute TTL expired");
647
+ return;
648
+ }
649
+ touchSession(state, sessionId);
552
650
  const lastEventId = req.headers["last-event-id"];
553
651
  if (lastEventId !== void 0) {
554
652
  logger5.debug("Client reconnecting with Last-Event-ID", {
@@ -557,9 +655,24 @@ function setupStatefulEndpoints(state) {
557
655
  lastEventId
558
656
  });
559
657
  }
560
- if (httpTransport !== void 0) {
561
- void httpTransport.handleRequest(asIncoming(req), asServerResponse(res));
562
- }
658
+ void (async () => {
659
+ try {
660
+ const count = state.sessionLocks.get(sessionId) ?? 0;
661
+ state.sessionLocks.set(sessionId, count + 1);
662
+ await httpTransport.handleRequest(
663
+ asIncoming(req),
664
+ asServerResponse(res)
665
+ );
666
+ } finally {
667
+ const count = state.sessionLocks.get(sessionId) ?? 0;
668
+ if (count > 1) {
669
+ state.sessionLocks.set(sessionId, count - 1);
670
+ } else {
671
+ state.sessionLocks.delete(sessionId);
672
+ }
673
+ touchSession(state, sessionId);
674
+ }
675
+ })();
563
676
  });
564
677
  state.app.delete("/mcp", (req, res) => {
565
678
  const sessionId = req.headers["mcp-session-id"];
@@ -580,10 +693,26 @@ function setupStatefulEndpoints(state) {
580
693
  code: "HTTP_SESSION_DELETE",
581
694
  sessionId
582
695
  });
583
- if (httpTransport !== void 0) {
584
- void httpTransport.handleRequest(asIncoming(req), asServerResponse(res));
585
- }
696
+ void (async () => {
697
+ try {
698
+ const count = state.sessionLocks.get(sessionId) ?? 0;
699
+ state.sessionLocks.set(sessionId, count + 1);
700
+ await httpTransport.handleRequest(
701
+ asIncoming(req),
702
+ asServerResponse(res)
703
+ );
704
+ } finally {
705
+ const count = state.sessionLocks.get(sessionId) ?? 0;
706
+ if (count > 1) {
707
+ state.sessionLocks.set(sessionId, count - 1);
708
+ } else {
709
+ state.sessionLocks.delete(sessionId);
710
+ }
711
+ touchSession(state, sessionId);
712
+ }
713
+ })();
586
714
  });
715
+ return sessionSweepTimer;
587
716
  }
588
717
  var logger6 = createModuleLogger("HTTP");
589
718
  var connectionMutex2 = new Mutex();
@@ -601,6 +730,8 @@ function setupLegacySSEEndpoints(state) {
601
730
  void (async () => {
602
731
  try {
603
732
  state.sseTransports.set(sseTransport.sessionId, sseTransport);
733
+ touchSession(state, sseTransport.sessionId);
734
+ state.sessionCreatedAt.set(sseTransport.sessionId, Date.now());
604
735
  state.sessionOwners.set(sseTransport.sessionId, req.auth?.sub);
605
736
  sseTransport.onclose = () => {
606
737
  logger6.info("Legacy SSE transport closed", {
@@ -609,6 +740,8 @@ function setupLegacySSEEndpoints(state) {
609
740
  });
610
741
  state.sseTransports.delete(sseTransport.sessionId);
611
742
  state.sessionOwners.delete(sseTransport.sessionId);
743
+ state.sessionLastActivity.delete(sseTransport.sessionId);
744
+ state.sessionCreatedAt.delete(sseTransport.sessionId);
612
745
  if ("subscriptionManager" in server) {
613
746
  server.subscriptionManager.unsubscribeSession(sseTransport.sessionId);
614
747
  }
@@ -672,6 +805,8 @@ function setupLegacySSEEndpoints(state) {
672
805
  req.on("close", () => {
673
806
  state.sseTransports.delete(sseTransport.sessionId);
674
807
  state.sessionOwners.delete(sseTransport.sessionId);
808
+ state.sessionLastActivity.delete(sseTransport.sessionId);
809
+ state.sessionCreatedAt.delete(sseTransport.sessionId);
675
810
  });
676
811
  });
677
812
  state.app.post("/messages", (req, res) => {
@@ -710,6 +845,7 @@ function setupLegacySSEEndpoints(state) {
710
845
  });
711
846
  return;
712
847
  }
848
+ touchSession(state, sessionId);
713
849
  void sseTransport.handlePostMessage(
714
850
  asIncoming(req),
715
851
  asServerResponse(res),
@@ -858,7 +994,7 @@ var AuthorizationServerDiscovery = class {
858
994
  const url = new URL(this.authServerUrl);
859
995
  const isLocalDev = url.hostname === "localhost" || url.hostname === "127.0.0.1" || url.hostname === "[::1]";
860
996
  if (!isLocalDev) {
861
- throw new Error(
997
+ throw new ConfigurationError(
862
998
  `Security: Authorization server URL must use HTTPS in production. Got: ${this.authServerUrl}. Set NODE_ENV=development to allow HTTP for local testing.`
863
999
  );
864
1000
  }
@@ -903,7 +1039,7 @@ var AuthorizationServerDiscovery = class {
903
1039
  throw new DbMcpError(
904
1040
  `HTTP ${String(response.status)}: ${response.statusText}`,
905
1041
  ERROR_CODES.AUTH.DISCOVERY_FAILED.full,
906
- "connection" /* CONNECTION */
1042
+ ErrorCategory.CONNECTION
907
1043
  );
908
1044
  }
909
1045
  const metadata = await response.json();
@@ -937,14 +1073,14 @@ var AuthorizationServerDiscovery = class {
937
1073
  throw new DbMcpError(
938
1074
  "Missing required field: issuer",
939
1075
  "AUTH_DISCOVERY_INVALID",
940
- "validation" /* VALIDATION */
1076
+ ErrorCategory.VALIDATION
941
1077
  );
942
1078
  }
943
1079
  if (!metadata.token_endpoint) {
944
1080
  throw new DbMcpError(
945
1081
  "Missing required field: token_endpoint",
946
1082
  "AUTH_DISCOVERY_INVALID",
947
- "validation" /* VALIDATION */
1083
+ ErrorCategory.VALIDATION
948
1084
  );
949
1085
  }
950
1086
  try {
@@ -954,7 +1090,7 @@ var AuthorizationServerDiscovery = class {
954
1090
  throw new DbMcpError(
955
1091
  "Invalid URL format in metadata fields",
956
1092
  "AUTH_DISCOVERY_INVALID",
957
- "validation" /* VALIDATION */
1093
+ ErrorCategory.VALIDATION
958
1094
  );
959
1095
  }
960
1096
  const expectedIssuer = this.authServerUrl;
@@ -962,7 +1098,7 @@ var AuthorizationServerDiscovery = class {
962
1098
  throw new DbMcpError(
963
1099
  `Issuer validation failed. Per RFC 8414 \xA73.3, the issuer MUST be identical to the authorization server URL.`,
964
1100
  "AUTH_ISSUER_MISMATCH",
965
- "validation" /* VALIDATION */
1101
+ ErrorCategory.VALIDATION
966
1102
  );
967
1103
  }
968
1104
  }
@@ -974,7 +1110,7 @@ var AuthorizationServerDiscovery = class {
974
1110
  throw new DbMcpError(
975
1111
  "Authorization server metadata not yet discovered. Call discover() first.",
976
1112
  "AUTH_DISCOVERY_REQUIRED",
977
- "internal" /* INTERNAL */
1113
+ ErrorCategory.INTERNAL
978
1114
  );
979
1115
  }
980
1116
  return this.cachedMetadata;
@@ -990,7 +1126,7 @@ var AuthorizationServerDiscovery = class {
990
1126
  throw new DbMcpError(
991
1127
  "Authorization server does not provide jwks_uri",
992
1128
  "AUTH_DISCOVERY_INVALID",
993
- "validation" /* VALIDATION */
1129
+ ErrorCategory.VALIDATION
994
1130
  );
995
1131
  }
996
1132
  return metadata.jwks_uri;
@@ -1082,7 +1218,7 @@ var TokenValidator = class _TokenValidator {
1082
1218
  const url = new URL(config.jwksUri);
1083
1219
  const isLocalDev = url.hostname === "localhost" || url.hostname === "127.0.0.1";
1084
1220
  if (!isLocalDev) {
1085
- throw new Error(
1221
+ throw new ConfigurationError(
1086
1222
  `Security: JWKS URI must use HTTPS in production. Got: ${config.jwksUri}. Set ALLOW_HTTP_JWKS=true to allow HTTP for local testing.`
1087
1223
  );
1088
1224
  }
@@ -1292,7 +1428,7 @@ function applyAuthMiddleware(state) {
1292
1428
  const corsOrigins = state.config.corsOrigins ?? [];
1293
1429
  const isPubliclyExposed = state.config.oauth.enabled || state.config.noAuthEnforcement;
1294
1430
  if (corsOrigins.includes("*") && isPubliclyExposed) {
1295
- throw new Error(
1431
+ throw new ConfigurationError(
1296
1432
  "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
1433
  );
1298
1434
  }
@@ -1441,7 +1577,7 @@ function applyScopeEnforcementMiddleware(state) {
1441
1577
  async function setupOAuth(state, resourceUri) {
1442
1578
  logger10.info("Setting up OAuth 2.1...", { code: "HTTP_OAUTH_SETUP" });
1443
1579
  if (state.config.oauth.enabled && !state.config.oauth.audience) {
1444
- throw new Error(
1580
+ throw new ConfigurationError(
1445
1581
  "Security: OAuth audience must be explicitly configured when OAuth is enabled."
1446
1582
  );
1447
1583
  }
@@ -1495,6 +1631,8 @@ var logger11 = createModuleLogger("HTTP");
1495
1631
  var HttpTransport = class {
1496
1632
  /** Internal state shared with session/middleware/oauth modules */
1497
1633
  state;
1634
+ /** Sweep timer for session timeout cleanup */
1635
+ sweepTimer = null;
1498
1636
  constructor(config) {
1499
1637
  this.state = {
1500
1638
  config: {
@@ -1508,6 +1646,9 @@ var HttpTransport = class {
1508
1646
  transports: /* @__PURE__ */ new Map(),
1509
1647
  sseTransports: /* @__PURE__ */ new Map(),
1510
1648
  sessionOwners: /* @__PURE__ */ new Map(),
1649
+ sessionLastActivity: /* @__PURE__ */ new Map(),
1650
+ sessionCreatedAt: /* @__PURE__ */ new Map(),
1651
+ sessionLocks: /* @__PURE__ */ new Map(),
1511
1652
  statelessTransport: null,
1512
1653
  resourceServer: null,
1513
1654
  authServerDiscovery: null,
@@ -1536,7 +1677,7 @@ var HttpTransport = class {
1536
1677
  throw new DbMcpError(
1537
1678
  "trustedProxyIps cannot be an empty array if specified",
1538
1679
  "CONFIG_ERROR",
1539
- "config" /* CONFIGURATION */
1680
+ ErrorCategory.CONFIGURATION
1540
1681
  );
1541
1682
  }
1542
1683
  this.state.app.set("trust proxy", this.state.config.trustedProxyIps);
@@ -1555,7 +1696,7 @@ var HttpTransport = class {
1555
1696
  throw new DbMcpError(
1556
1697
  "HTTP transport is enabled without authentication. You must configure OAuth (--oauth-enabled) or explicitly bypass this check with --no-auth-enforcement.",
1557
1698
  "AUTH_REQUIRED",
1558
- "config" /* CONFIGURATION */
1699
+ ErrorCategory.CONFIGURATION
1559
1700
  );
1560
1701
  }
1561
1702
  if (this.state.config.oauth.enabled) {
@@ -1629,7 +1770,7 @@ var HttpTransport = class {
1629
1770
  if (this.state.config.stateless) {
1630
1771
  await setupStatelessEndpoints(this.state);
1631
1772
  } else {
1632
- setupStatefulEndpoints(this.state);
1773
+ this.sweepTimer = setupStatefulEndpoints(this.state);
1633
1774
  }
1634
1775
  if (!this.state.config.stateless) {
1635
1776
  setupLegacySSEEndpoints(this.state);
@@ -1654,7 +1795,7 @@ var HttpTransport = class {
1654
1795
  throw new DbMcpError(
1655
1796
  "Transport not initialized. Call initialize() first.",
1656
1797
  ERROR_CODES.SERVER.START_FAILED.full,
1657
- "internal" /* INTERNAL */
1798
+ ErrorCategory.INTERNAL
1658
1799
  );
1659
1800
  }
1660
1801
  return new Promise((resolve, reject) => {
@@ -1694,6 +1835,10 @@ var HttpTransport = class {
1694
1835
  * Stop the server and close all active sessions
1695
1836
  */
1696
1837
  async stop() {
1838
+ if (this.sweepTimer) {
1839
+ clearInterval(this.sweepTimer);
1840
+ this.sweepTimer = null;
1841
+ }
1697
1842
  for (const [sessionId, transport] of this.state.transports) {
1698
1843
  try {
1699
1844
  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-WYBUO4FL.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"}