db-mcp 1.1.1 → 3.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 (508) hide show
  1. package/README.md +247 -169
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/adapters/database-adapter.d.ts +173 -0
  4. package/dist/adapters/database-adapter.d.ts.map +1 -0
  5. package/dist/adapters/query-validation.d.ts +20 -0
  6. package/dist/adapters/query-validation.d.ts.map +1 -0
  7. package/dist/adapters/registration/index.d.ts +4 -0
  8. package/dist/adapters/registration/index.d.ts.map +1 -0
  9. package/dist/adapters/registration/prompts.d.ts +7 -0
  10. package/dist/adapters/registration/prompts.d.ts.map +1 -0
  11. package/dist/adapters/registration/resources.d.ts +7 -0
  12. package/dist/adapters/registration/resources.d.ts.map +1 -0
  13. package/dist/adapters/registration/tools.d.ts +9 -0
  14. package/dist/adapters/registration/tools.d.ts.map +1 -0
  15. package/dist/adapters/sqlite/index.d.ts +9 -0
  16. package/dist/adapters/sqlite/index.d.ts.map +1 -0
  17. package/dist/adapters/sqlite/json-utils.d.ts +100 -0
  18. package/dist/adapters/sqlite/json-utils.d.ts.map +1 -0
  19. package/dist/adapters/sqlite/prompts/analysis.d.ts +23 -0
  20. package/dist/adapters/sqlite/prompts/analysis.d.ts.map +1 -0
  21. package/dist/adapters/sqlite/prompts/index.d.ts +16 -0
  22. package/dist/adapters/sqlite/prompts/index.d.ts.map +1 -0
  23. package/dist/adapters/sqlite/prompts/query.d.ts +19 -0
  24. package/dist/adapters/sqlite/prompts/query.d.ts.map +1 -0
  25. package/dist/adapters/sqlite/prompts/schema.d.ts +20 -0
  26. package/dist/adapters/sqlite/prompts/schema.d.ts.map +1 -0
  27. package/dist/adapters/sqlite/query-executor.d.ts +38 -0
  28. package/dist/adapters/sqlite/query-executor.d.ts.map +1 -0
  29. package/dist/adapters/sqlite/resources.d.ts +13 -0
  30. package/dist/adapters/sqlite/resources.d.ts.map +1 -0
  31. package/dist/adapters/sqlite/schema-manager.d.ts +69 -0
  32. package/dist/adapters/sqlite/schema-manager.d.ts.map +1 -0
  33. package/dist/adapters/sqlite/schemas/admin.d.ts +459 -0
  34. package/dist/adapters/sqlite/schemas/admin.d.ts.map +1 -0
  35. package/dist/adapters/sqlite/schemas/codemode.d.ts +30 -0
  36. package/dist/adapters/sqlite/schemas/codemode.d.ts.map +1 -0
  37. package/dist/adapters/sqlite/schemas/common.d.ts +9 -0
  38. package/dist/adapters/sqlite/schemas/common.d.ts.map +1 -0
  39. package/dist/adapters/sqlite/schemas/core.d.ts +530 -0
  40. package/dist/adapters/sqlite/schemas/core.d.ts.map +1 -0
  41. package/dist/adapters/sqlite/schemas/error-mixin.d.ts +10 -0
  42. package/dist/adapters/sqlite/schemas/error-mixin.d.ts.map +1 -0
  43. package/dist/adapters/sqlite/schemas/fts.d.ts +106 -0
  44. package/dist/adapters/sqlite/schemas/fts.d.ts.map +1 -0
  45. package/dist/adapters/sqlite/schemas/geo.d.ts +135 -0
  46. package/dist/adapters/sqlite/schemas/geo.d.ts.map +1 -0
  47. package/dist/adapters/sqlite/schemas/index.d.ts +23 -0
  48. package/dist/adapters/sqlite/schemas/index.d.ts.map +1 -0
  49. package/dist/adapters/sqlite/schemas/introspection.d.ts +583 -0
  50. package/dist/adapters/sqlite/schemas/introspection.d.ts.map +1 -0
  51. package/dist/adapters/sqlite/schemas/json.d.ts +849 -0
  52. package/dist/adapters/sqlite/schemas/json.d.ts.map +1 -0
  53. package/dist/adapters/sqlite/schemas/migration.d.ts +220 -0
  54. package/dist/adapters/sqlite/schemas/migration.d.ts.map +1 -0
  55. package/dist/adapters/sqlite/schemas/native.d.ts +235 -0
  56. package/dist/adapters/sqlite/schemas/native.d.ts.map +1 -0
  57. package/dist/adapters/sqlite/schemas/server.d.ts +13 -0
  58. package/dist/adapters/sqlite/schemas/server.d.ts.map +1 -0
  59. package/dist/adapters/sqlite/schemas/spatialite.d.ts +114 -0
  60. package/dist/adapters/sqlite/schemas/spatialite.d.ts.map +1 -0
  61. package/dist/adapters/sqlite/schemas/stats.d.ts +780 -0
  62. package/dist/adapters/sqlite/schemas/stats.d.ts.map +1 -0
  63. package/dist/adapters/sqlite/schemas/text.d.ts +570 -0
  64. package/dist/adapters/sqlite/schemas/text.d.ts.map +1 -0
  65. package/dist/adapters/sqlite/schemas/vector.d.ts +252 -0
  66. package/dist/adapters/sqlite/schemas/vector.d.ts.map +1 -0
  67. package/dist/adapters/sqlite/schemas/virtual.d.ts +257 -0
  68. package/dist/adapters/sqlite/schemas/virtual.d.ts.map +1 -0
  69. package/dist/adapters/sqlite/schemas/where.d.ts +20 -0
  70. package/dist/adapters/sqlite/schemas/where.d.ts.map +1 -0
  71. package/dist/adapters/sqlite/sqlite-adapter/lifecycle.d.ts +13 -0
  72. package/dist/adapters/sqlite/sqlite-adapter/lifecycle.d.ts.map +1 -0
  73. package/dist/adapters/sqlite/sqlite-adapter/schema.d.ts +7 -0
  74. package/dist/adapters/sqlite/sqlite-adapter/schema.d.ts.map +1 -0
  75. package/dist/adapters/sqlite/sqlite-adapter.d.ts +138 -0
  76. package/dist/adapters/sqlite/sqlite-adapter.d.ts.map +1 -0
  77. package/dist/adapters/sqlite/tools/admin/backup/analyze.d.ts +7 -0
  78. package/dist/adapters/sqlite/tools/admin/backup/analyze.d.ts.map +1 -0
  79. package/dist/adapters/sqlite/tools/admin/backup/create.d.ts +11 -0
  80. package/dist/adapters/sqlite/tools/admin/backup/create.d.ts.map +1 -0
  81. package/dist/adapters/sqlite/tools/admin/backup/dump.d.ts +7 -0
  82. package/dist/adapters/sqlite/tools/admin/backup/dump.d.ts.map +1 -0
  83. package/dist/adapters/sqlite/tools/admin/backup/index.d.ts +7 -0
  84. package/dist/adapters/sqlite/tools/admin/backup/index.d.ts.map +1 -0
  85. package/dist/adapters/sqlite/tools/admin/backup/integrity.d.ts +7 -0
  86. package/dist/adapters/sqlite/tools/admin/backup/integrity.d.ts.map +1 -0
  87. package/dist/adapters/sqlite/tools/admin/backup/optimize.d.ts +7 -0
  88. package/dist/adapters/sqlite/tools/admin/backup/optimize.d.ts.map +1 -0
  89. package/dist/adapters/sqlite/tools/admin/backup/restore.d.ts +7 -0
  90. package/dist/adapters/sqlite/tools/admin/backup/restore.d.ts.map +1 -0
  91. package/dist/adapters/sqlite/tools/admin/helpers.d.ts +18 -0
  92. package/dist/adapters/sqlite/tools/admin/helpers.d.ts.map +1 -0
  93. package/dist/adapters/sqlite/tools/admin/index.d.ts +10 -0
  94. package/dist/adapters/sqlite/tools/admin/index.d.ts.map +1 -0
  95. package/dist/adapters/sqlite/tools/admin/pragma.d.ts +37 -0
  96. package/dist/adapters/sqlite/tools/admin/pragma.d.ts.map +1 -0
  97. package/dist/adapters/sqlite/tools/admin/reindex.d.ts +10 -0
  98. package/dist/adapters/sqlite/tools/admin/reindex.d.ts.map +1 -0
  99. package/dist/adapters/sqlite/tools/admin/verify.d.ts +13 -0
  100. package/dist/adapters/sqlite/tools/admin/verify.d.ts.map +1 -0
  101. package/dist/adapters/sqlite/tools/admin/wal.d.ts +10 -0
  102. package/dist/adapters/sqlite/tools/admin/wal.d.ts.map +1 -0
  103. package/dist/adapters/sqlite/tools/codemode.d.ts +22 -0
  104. package/dist/adapters/sqlite/tools/codemode.d.ts.map +1 -0
  105. package/dist/adapters/sqlite/tools/column-validation.d.ts +26 -0
  106. package/dist/adapters/sqlite/tools/column-validation.d.ts.map +1 -0
  107. package/dist/adapters/sqlite/tools/core/alter-table.d.ts +11 -0
  108. package/dist/adapters/sqlite/tools/core/alter-table.d.ts.map +1 -0
  109. package/dist/adapters/sqlite/tools/core/constraints.d.ts +10 -0
  110. package/dist/adapters/sqlite/tools/core/constraints.d.ts.map +1 -0
  111. package/dist/adapters/sqlite/tools/core/convenience-helpers.d.ts +20 -0
  112. package/dist/adapters/sqlite/tools/core/convenience-helpers.d.ts.map +1 -0
  113. package/dist/adapters/sqlite/tools/core/convenience-schemas.d.ts +20 -0
  114. package/dist/adapters/sqlite/tools/core/convenience-schemas.d.ts.map +1 -0
  115. package/dist/adapters/sqlite/tools/core/convenience.d.ts +29 -0
  116. package/dist/adapters/sqlite/tools/core/convenience.d.ts.map +1 -0
  117. package/dist/adapters/sqlite/tools/core/datetime.d.ts +11 -0
  118. package/dist/adapters/sqlite/tools/core/datetime.d.ts.map +1 -0
  119. package/dist/adapters/sqlite/tools/core/index.d.ts +14 -0
  120. package/dist/adapters/sqlite/tools/core/index.d.ts.map +1 -0
  121. package/dist/adapters/sqlite/tools/core/indexes.d.ts +20 -0
  122. package/dist/adapters/sqlite/tools/core/indexes.d.ts.map +1 -0
  123. package/dist/adapters/sqlite/tools/core/queries.d.ts +16 -0
  124. package/dist/adapters/sqlite/tools/core/queries.d.ts.map +1 -0
  125. package/dist/adapters/sqlite/tools/core/tables.d.ts +37 -0
  126. package/dist/adapters/sqlite/tools/core/tables.d.ts.map +1 -0
  127. package/dist/adapters/sqlite/tools/core/triggers.d.ts +18 -0
  128. package/dist/adapters/sqlite/tools/core/triggers.d.ts.map +1 -0
  129. package/dist/adapters/sqlite/tools/fts.d.ts +13 -0
  130. package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -0
  131. package/dist/adapters/sqlite/tools/geo.d.ts +14 -0
  132. package/dist/adapters/sqlite/tools/geo.d.ts.map +1 -0
  133. package/dist/adapters/sqlite/tools/index.d.ts +33 -0
  134. package/dist/adapters/sqlite/tools/index.d.ts.map +1 -0
  135. package/dist/adapters/sqlite/tools/introspection/analysis/constraints.d.ts +10 -0
  136. package/dist/adapters/sqlite/tools/introspection/analysis/constraints.d.ts.map +1 -0
  137. package/dist/adapters/sqlite/tools/introspection/analysis/diff.d.ts +11 -0
  138. package/dist/adapters/sqlite/tools/introspection/analysis/diff.d.ts.map +1 -0
  139. package/dist/adapters/sqlite/tools/introspection/analysis/index.d.ts +10 -0
  140. package/dist/adapters/sqlite/tools/introspection/analysis/index.d.ts.map +1 -0
  141. package/dist/adapters/sqlite/tools/introspection/analysis/risks.d.ts +9 -0
  142. package/dist/adapters/sqlite/tools/introspection/analysis/risks.d.ts.map +1 -0
  143. package/dist/adapters/sqlite/tools/introspection/analysis/snapshot.d.ts +40 -0
  144. package/dist/adapters/sqlite/tools/introspection/analysis/snapshot.d.ts.map +1 -0
  145. package/dist/adapters/sqlite/tools/introspection/diagnostics/index.d.ts +9 -0
  146. package/dist/adapters/sqlite/tools/introspection/diagnostics/index.d.ts.map +1 -0
  147. package/dist/adapters/sqlite/tools/introspection/diagnostics/indexes.d.ts +10 -0
  148. package/dist/adapters/sqlite/tools/introspection/diagnostics/indexes.d.ts.map +1 -0
  149. package/dist/adapters/sqlite/tools/introspection/diagnostics/query-plan.d.ts +10 -0
  150. package/dist/adapters/sqlite/tools/introspection/diagnostics/query-plan.d.ts.map +1 -0
  151. package/dist/adapters/sqlite/tools/introspection/diagnostics/storage.d.ts +10 -0
  152. package/dist/adapters/sqlite/tools/introspection/diagnostics/storage.d.ts.map +1 -0
  153. package/dist/adapters/sqlite/tools/introspection/graph/helpers.d.ts +44 -0
  154. package/dist/adapters/sqlite/tools/introspection/graph/helpers.d.ts.map +1 -0
  155. package/dist/adapters/sqlite/tools/introspection/graph/index.d.ts +9 -0
  156. package/dist/adapters/sqlite/tools/introspection/graph/index.d.ts.map +1 -0
  157. package/dist/adapters/sqlite/tools/introspection/graph/tools.d.ts +12 -0
  158. package/dist/adapters/sqlite/tools/introspection/graph/tools.d.ts.map +1 -0
  159. package/dist/adapters/sqlite/tools/introspection/index.d.ts +17 -0
  160. package/dist/adapters/sqlite/tools/introspection/index.d.ts.map +1 -0
  161. package/dist/adapters/sqlite/tools/json-helpers/helpers.d.ts +21 -0
  162. package/dist/adapters/sqlite/tools/json-helpers/helpers.d.ts.map +1 -0
  163. package/dist/adapters/sqlite/tools/json-helpers/index.d.ts +17 -0
  164. package/dist/adapters/sqlite/tools/json-helpers/index.d.ts.map +1 -0
  165. package/dist/adapters/sqlite/tools/json-helpers/read.d.ts +24 -0
  166. package/dist/adapters/sqlite/tools/json-helpers/read.d.ts.map +1 -0
  167. package/dist/adapters/sqlite/tools/json-helpers/write.d.ts +24 -0
  168. package/dist/adapters/sqlite/tools/json-helpers/write.d.ts.map +1 -0
  169. package/dist/adapters/sqlite/tools/json-operations/crud.d.ts +39 -0
  170. package/dist/adapters/sqlite/tools/json-operations/crud.d.ts.map +1 -0
  171. package/dist/adapters/sqlite/tools/json-operations/diff.d.ts +11 -0
  172. package/dist/adapters/sqlite/tools/json-operations/diff.d.ts.map +1 -0
  173. package/dist/adapters/sqlite/tools/json-operations/helpers.d.ts +18 -0
  174. package/dist/adapters/sqlite/tools/json-operations/helpers.d.ts.map +1 -0
  175. package/dist/adapters/sqlite/tools/json-operations/index.d.ts +10 -0
  176. package/dist/adapters/sqlite/tools/json-operations/index.d.ts.map +1 -0
  177. package/dist/adapters/sqlite/tools/json-operations/query.d.ts +24 -0
  178. package/dist/adapters/sqlite/tools/json-operations/query.d.ts.map +1 -0
  179. package/dist/adapters/sqlite/tools/json-operations/security.d.ts +19 -0
  180. package/dist/adapters/sqlite/tools/json-operations/security.d.ts.map +1 -0
  181. package/dist/adapters/sqlite/tools/json-operations/transform.d.ts +24 -0
  182. package/dist/adapters/sqlite/tools/json-operations/transform.d.ts.map +1 -0
  183. package/dist/adapters/sqlite/tools/migration/helpers.d.ts +34 -0
  184. package/dist/adapters/sqlite/tools/migration/helpers.d.ts.map +1 -0
  185. package/dist/adapters/sqlite/tools/migration/index.d.ts +15 -0
  186. package/dist/adapters/sqlite/tools/migration/index.d.ts.map +1 -0
  187. package/dist/adapters/sqlite/tools/migration/tracking/apply.d.ts +4 -0
  188. package/dist/adapters/sqlite/tools/migration/tracking/apply.d.ts.map +1 -0
  189. package/dist/adapters/sqlite/tools/migration/tracking/history.d.ts +4 -0
  190. package/dist/adapters/sqlite/tools/migration/tracking/history.d.ts.map +1 -0
  191. package/dist/adapters/sqlite/tools/migration/tracking/index.d.ts +7 -0
  192. package/dist/adapters/sqlite/tools/migration/tracking/index.d.ts.map +1 -0
  193. package/dist/adapters/sqlite/tools/migration/tracking/init.d.ts +4 -0
  194. package/dist/adapters/sqlite/tools/migration/tracking/init.d.ts.map +1 -0
  195. package/dist/adapters/sqlite/tools/migration/tracking/record.d.ts +4 -0
  196. package/dist/adapters/sqlite/tools/migration/tracking/record.d.ts.map +1 -0
  197. package/dist/adapters/sqlite/tools/migration/tracking/rollback.d.ts +4 -0
  198. package/dist/adapters/sqlite/tools/migration/tracking/rollback.d.ts.map +1 -0
  199. package/dist/adapters/sqlite/tools/migration/tracking/status.d.ts +4 -0
  200. package/dist/adapters/sqlite/tools/migration/tracking/status.d.ts.map +1 -0
  201. package/dist/adapters/sqlite/tools/stats/advanced.d.ts +28 -0
  202. package/dist/adapters/sqlite/tools/stats/advanced.d.ts.map +1 -0
  203. package/dist/adapters/sqlite/tools/stats/anomaly-detection.d.ts +22 -0
  204. package/dist/adapters/sqlite/tools/stats/anomaly-detection.d.ts.map +1 -0
  205. package/dist/adapters/sqlite/tools/stats/basic.d.ts +32 -0
  206. package/dist/adapters/sqlite/tools/stats/basic.d.ts.map +1 -0
  207. package/dist/adapters/sqlite/tools/stats/helpers.d.ts +27 -0
  208. package/dist/adapters/sqlite/tools/stats/helpers.d.ts.map +1 -0
  209. package/dist/adapters/sqlite/tools/stats/index.d.ts +12 -0
  210. package/dist/adapters/sqlite/tools/stats/index.d.ts.map +1 -0
  211. package/dist/adapters/sqlite/tools/stats/inference/hypothesis.d.ts +7 -0
  212. package/dist/adapters/sqlite/tools/stats/inference/hypothesis.d.ts.map +1 -0
  213. package/dist/adapters/sqlite/tools/stats/inference/index.d.ts +4 -0
  214. package/dist/adapters/sqlite/tools/stats/inference/index.d.ts.map +1 -0
  215. package/dist/adapters/sqlite/tools/stats/inference/outlier.d.ts +7 -0
  216. package/dist/adapters/sqlite/tools/stats/inference/outlier.d.ts.map +1 -0
  217. package/dist/adapters/sqlite/tools/stats/inference/regression.d.ts +7 -0
  218. package/dist/adapters/sqlite/tools/stats/inference/regression.d.ts.map +1 -0
  219. package/dist/adapters/sqlite/tools/stats/math-helpers.d.ts +17 -0
  220. package/dist/adapters/sqlite/tools/stats/math-helpers.d.ts.map +1 -0
  221. package/dist/adapters/sqlite/tools/stats/schema-risks.d.ts +15 -0
  222. package/dist/adapters/sqlite/tools/stats/schema-risks.d.ts.map +1 -0
  223. package/dist/adapters/sqlite/tools/text/formatting.d.ts +48 -0
  224. package/dist/adapters/sqlite/tools/text/formatting.d.ts.map +1 -0
  225. package/dist/adapters/sqlite/tools/text/helpers.d.ts +22 -0
  226. package/dist/adapters/sqlite/tools/text/helpers.d.ts.map +1 -0
  227. package/dist/adapters/sqlite/tools/text/index.d.ts +10 -0
  228. package/dist/adapters/sqlite/tools/text/index.d.ts.map +1 -0
  229. package/dist/adapters/sqlite/tools/text/regex.d.ts +21 -0
  230. package/dist/adapters/sqlite/tools/text/regex.d.ts.map +1 -0
  231. package/dist/adapters/sqlite/tools/text/search.d.ts +17 -0
  232. package/dist/adapters/sqlite/tools/text/search.d.ts.map +1 -0
  233. package/dist/adapters/sqlite/tools/text/sentiment.d.ts +13 -0
  234. package/dist/adapters/sqlite/tools/text/sentiment.d.ts.map +1 -0
  235. package/dist/adapters/sqlite/tools/text/validate.d.ts +11 -0
  236. package/dist/adapters/sqlite/tools/text/validate.d.ts.map +1 -0
  237. package/dist/adapters/sqlite/tools/vector/helpers.d.ts +11 -0
  238. package/dist/adapters/sqlite/tools/vector/helpers.d.ts.map +1 -0
  239. package/dist/adapters/sqlite/tools/vector/index.d.ts +14 -0
  240. package/dist/adapters/sqlite/tools/vector/index.d.ts.map +1 -0
  241. package/dist/adapters/sqlite/tools/vector/metadata.d.ts +28 -0
  242. package/dist/adapters/sqlite/tools/vector/metadata.d.ts.map +1 -0
  243. package/dist/adapters/sqlite/tools/vector/search.d.ts +16 -0
  244. package/dist/adapters/sqlite/tools/vector/search.d.ts.map +1 -0
  245. package/dist/adapters/sqlite/tools/vector/storage.d.ts +24 -0
  246. package/dist/adapters/sqlite/tools/vector/storage.d.ts.map +1 -0
  247. package/dist/adapters/sqlite/tools/vector/tools.d.ts +9 -0
  248. package/dist/adapters/sqlite/tools/vector/tools.d.ts.map +1 -0
  249. package/dist/adapters/sqlite/tools/virtual/analysis.d.ts +24 -0
  250. package/dist/adapters/sqlite/tools/virtual/analysis.d.ts.map +1 -0
  251. package/dist/adapters/sqlite/tools/virtual/extensions.d.ts +13 -0
  252. package/dist/adapters/sqlite/tools/virtual/extensions.d.ts.map +1 -0
  253. package/dist/adapters/sqlite/tools/virtual/helpers.d.ts +18 -0
  254. package/dist/adapters/sqlite/tools/virtual/helpers.d.ts.map +1 -0
  255. package/dist/adapters/sqlite/tools/virtual/index.d.ts +10 -0
  256. package/dist/adapters/sqlite/tools/virtual/index.d.ts.map +1 -0
  257. package/dist/adapters/sqlite/tools/virtual/views.d.ts +21 -0
  258. package/dist/adapters/sqlite/tools/virtual/views.d.ts.map +1 -0
  259. package/dist/adapters/sqlite/tools/virtual/vtable/analyze-csv.d.ts +4 -0
  260. package/dist/adapters/sqlite/tools/virtual/vtable/analyze-csv.d.ts.map +1 -0
  261. package/dist/adapters/sqlite/tools/virtual/vtable/csv.d.ts +4 -0
  262. package/dist/adapters/sqlite/tools/virtual/vtable/csv.d.ts.map +1 -0
  263. package/dist/adapters/sqlite/tools/virtual/vtable/drop.d.ts +4 -0
  264. package/dist/adapters/sqlite/tools/virtual/vtable/drop.d.ts.map +1 -0
  265. package/dist/adapters/sqlite/tools/virtual/vtable/index.d.ts +6 -0
  266. package/dist/adapters/sqlite/tools/virtual/vtable/index.d.ts.map +1 -0
  267. package/dist/adapters/sqlite/tools/virtual/vtable/info.d.ts +4 -0
  268. package/dist/adapters/sqlite/tools/virtual/vtable/info.d.ts.map +1 -0
  269. package/dist/adapters/sqlite/tools/virtual/vtable/list.d.ts +4 -0
  270. package/dist/adapters/sqlite/tools/virtual/vtable/list.d.ts.map +1 -0
  271. package/dist/adapters/sqlite/types.d.ts +89 -0
  272. package/dist/adapters/sqlite/types.d.ts.map +1 -0
  273. package/dist/adapters/sqlite-helpers.d.ts +51 -0
  274. package/dist/adapters/sqlite-helpers.d.ts.map +1 -0
  275. package/dist/adapters/sqlite-native/extensions.d.ts +17 -0
  276. package/dist/adapters/sqlite-native/extensions.d.ts.map +1 -0
  277. package/dist/adapters/sqlite-native/index.d.ts +11 -0
  278. package/dist/adapters/sqlite-native/index.d.ts.map +1 -0
  279. package/dist/adapters/sqlite-native/native-query-executor.d.ts +24 -0
  280. package/dist/adapters/sqlite-native/native-query-executor.d.ts.map +1 -0
  281. package/dist/adapters/sqlite-native/native-sqlite-adapter.d.ts +160 -0
  282. package/dist/adapters/sqlite-native/native-sqlite-adapter.d.ts.map +1 -0
  283. package/dist/adapters/sqlite-native/registration/index.d.ts +12 -0
  284. package/dist/adapters/sqlite-native/registration/index.d.ts.map +1 -0
  285. package/dist/adapters/sqlite-native/tools/spatialite/analysis.d.ts +23 -0
  286. package/dist/adapters/sqlite-native/tools/spatialite/analysis.d.ts.map +1 -0
  287. package/dist/adapters/sqlite-native/tools/spatialite/index.d.ts +15 -0
  288. package/dist/adapters/sqlite-native/tools/spatialite/index.d.ts.map +1 -0
  289. package/dist/adapters/sqlite-native/tools/spatialite/loader.d.ts +22 -0
  290. package/dist/adapters/sqlite-native/tools/spatialite/loader.d.ts.map +1 -0
  291. package/dist/adapters/sqlite-native/tools/spatialite/schemas.d.ts +78 -0
  292. package/dist/adapters/sqlite-native/tools/spatialite/schemas.d.ts.map +1 -0
  293. package/dist/adapters/sqlite-native/tools/spatialite/tools.d.ts +30 -0
  294. package/dist/adapters/sqlite-native/tools/spatialite/tools.d.ts.map +1 -0
  295. package/dist/adapters/sqlite-native/tools/transactions.d.ts +12 -0
  296. package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +1 -0
  297. package/dist/adapters/sqlite-native/tools/window.d.ts +7 -0
  298. package/dist/adapters/sqlite-native/tools/window.d.ts.map +1 -0
  299. package/dist/adapters/sqlite-native/transaction-methods.d.ts +36 -0
  300. package/dist/adapters/sqlite-native/transaction-methods.d.ts.map +1 -0
  301. package/dist/audit/backup-manager.d.ts +90 -0
  302. package/dist/audit/backup-manager.d.ts.map +1 -0
  303. package/dist/audit/index.d.ts +11 -0
  304. package/dist/audit/index.d.ts.map +1 -0
  305. package/dist/audit/interceptor.d.ts +54 -0
  306. package/dist/audit/interceptor.d.ts.map +1 -0
  307. package/dist/audit/logger.d.ts +62 -0
  308. package/dist/audit/logger.d.ts.map +1 -0
  309. package/dist/audit/types.d.ts +112 -0
  310. package/dist/audit/types.d.ts.map +1 -0
  311. package/dist/auth/auth-context.d.ts +28 -0
  312. package/dist/auth/auth-context.d.ts.map +1 -0
  313. package/dist/auth/authorization-server-discovery.d.ts +90 -0
  314. package/dist/auth/authorization-server-discovery.d.ts.map +1 -0
  315. package/dist/auth/errors.d.ts +74 -0
  316. package/dist/auth/errors.d.ts.map +1 -0
  317. package/dist/auth/middleware/core.d.ts +22 -0
  318. package/dist/auth/middleware/core.d.ts.map +1 -0
  319. package/dist/auth/middleware/express-auth.d.ts +13 -0
  320. package/dist/auth/middleware/express-auth.d.ts.map +1 -0
  321. package/dist/auth/middleware/express-scopes.d.ts +6 -0
  322. package/dist/auth/middleware/express-scopes.d.ts.map +1 -0
  323. package/dist/auth/middleware/extraction.d.ts +2 -0
  324. package/dist/auth/middleware/extraction.d.ts.map +1 -0
  325. package/dist/auth/middleware/index.d.ts +5 -0
  326. package/dist/auth/middleware/index.d.ts.map +1 -0
  327. package/dist/auth/oauth-resource-server.d.ts +74 -0
  328. package/dist/auth/oauth-resource-server.d.ts.map +1 -0
  329. package/dist/auth/scope-map.d.ts +24 -0
  330. package/dist/auth/scope-map.d.ts.map +1 -0
  331. package/dist/auth/scopes/constants.d.ts +40 -0
  332. package/dist/auth/scopes/constants.d.ts.map +1 -0
  333. package/dist/auth/scopes/display.d.ts +5 -0
  334. package/dist/auth/scopes/display.d.ts.map +1 -0
  335. package/dist/auth/scopes/enforcement.d.ts +27 -0
  336. package/dist/auth/scopes/enforcement.d.ts.map +1 -0
  337. package/dist/auth/scopes/index.d.ts +6 -0
  338. package/dist/auth/scopes/index.d.ts.map +1 -0
  339. package/dist/auth/scopes/mapping.d.ts +39 -0
  340. package/dist/auth/scopes/mapping.d.ts.map +1 -0
  341. package/dist/auth/scopes/validation.d.ts +27 -0
  342. package/dist/auth/scopes/validation.d.ts.map +1 -0
  343. package/dist/auth/token-validator.d.ts +63 -0
  344. package/dist/auth/token-validator.d.ts.map +1 -0
  345. package/dist/auth/transport-agnostic.d.ts +11 -0
  346. package/dist/auth/transport-agnostic.d.ts.map +1 -0
  347. package/dist/auth/types.d.ts +257 -0
  348. package/dist/auth/types.d.ts.map +1 -0
  349. package/dist/chunk-E5IESRTK.js +489 -0
  350. package/dist/{chunk-TVIZ3XJH.js → chunk-FR65YPAH.js} +8509 -3925
  351. package/dist/{chunk-AOUL5SHS.js → chunk-L552U3QS.js} +880 -252
  352. package/dist/chunk-THATOQRT.js +2624 -0
  353. package/dist/chunk-W5WQVNVX.js +568 -0
  354. package/dist/cli.d.ts +7 -0
  355. package/dist/cli.d.ts.map +1 -0
  356. package/dist/cli.js +114 -19
  357. package/dist/codemode/api-constants.d.ts +40 -0
  358. package/dist/codemode/api-constants.d.ts.map +1 -0
  359. package/dist/codemode/api.d.ts +70 -0
  360. package/dist/codemode/api.d.ts.map +1 -0
  361. package/dist/codemode/auto-return.d.ts +25 -0
  362. package/dist/codemode/auto-return.d.ts.map +1 -0
  363. package/dist/codemode/index.d.ts +12 -0
  364. package/dist/codemode/index.d.ts.map +1 -0
  365. package/dist/codemode/sandbox-factory.d.ts +72 -0
  366. package/dist/codemode/sandbox-factory.d.ts.map +1 -0
  367. package/dist/codemode/sandbox.d.ts +54 -0
  368. package/dist/codemode/sandbox.d.ts.map +1 -0
  369. package/dist/codemode/security.d.ts +45 -0
  370. package/dist/codemode/security.d.ts.map +1 -0
  371. package/dist/codemode/types.d.ts +167 -0
  372. package/dist/codemode/types.d.ts.map +1 -0
  373. package/dist/constants/server-instructions.d.ts +22 -0
  374. package/dist/constants/server-instructions.d.ts.map +1 -0
  375. package/dist/filtering/tool-constants.d.ts +45 -0
  376. package/dist/filtering/tool-constants.d.ts.map +1 -0
  377. package/dist/filtering/tool-filter.d.ts +82 -0
  378. package/dist/filtering/tool-filter.d.ts.map +1 -0
  379. package/dist/{http-VSB7DBJR.js → http-HWTUVFIA.js} +587 -358
  380. package/dist/index.d.ts +9 -842
  381. package/dist/index.d.ts.map +1 -0
  382. package/dist/index.js +4 -5
  383. package/dist/server/mcp-server.d.ts +66 -0
  384. package/dist/server/mcp-server.d.ts.map +1 -0
  385. package/dist/server/registration/audit-tools.d.ts +13 -0
  386. package/dist/server/registration/audit-tools.d.ts.map +1 -0
  387. package/dist/server/registration/built-in-tools.d.ts +8 -0
  388. package/dist/server/registration/built-in-tools.d.ts.map +1 -0
  389. package/dist/server/registration/help-resources.d.ts +7 -0
  390. package/dist/server/registration/help-resources.d.ts.map +1 -0
  391. package/dist/server/registration/index.d.ts +4 -0
  392. package/dist/server/registration/index.d.ts.map +1 -0
  393. package/dist/{sqlite-26V3Y4MK.js → sqlite-6C3AJI4I.js} +115 -147
  394. package/dist/{sqlite-native-5O7FZJGB.js → sqlite-native-ZSSWCTYC.js} +1016 -349
  395. package/dist/transports/http/index.d.ts +8 -0
  396. package/dist/transports/http/index.d.ts.map +1 -0
  397. package/dist/transports/http/middleware.d.ts +25 -0
  398. package/dist/transports/http/middleware.d.ts.map +1 -0
  399. package/dist/transports/http/oauth.d.ts +24 -0
  400. package/dist/transports/http/oauth.d.ts.map +1 -0
  401. package/dist/transports/http/session.d.ts +2 -0
  402. package/dist/transports/http/session.d.ts.map +1 -0
  403. package/dist/transports/http/sessions/index.d.ts +4 -0
  404. package/dist/transports/http/sessions/index.d.ts.map +1 -0
  405. package/dist/transports/http/sessions/legacy-sse.d.ts +6 -0
  406. package/dist/transports/http/sessions/legacy-sse.d.ts.map +1 -0
  407. package/dist/transports/http/sessions/mutex.d.ts +6 -0
  408. package/dist/transports/http/sessions/mutex.d.ts.map +1 -0
  409. package/dist/transports/http/sessions/stateful.d.ts +12 -0
  410. package/dist/transports/http/sessions/stateful.d.ts.map +1 -0
  411. package/dist/transports/http/sessions/stateless.d.ts +6 -0
  412. package/dist/transports/http/sessions/stateless.d.ts.map +1 -0
  413. package/dist/transports/http/transport.d.ts +65 -0
  414. package/dist/transports/http/transport.d.ts.map +1 -0
  415. package/dist/transports/http/type-adapters.d.ts +20 -0
  416. package/dist/transports/http/type-adapters.d.ts.map +1 -0
  417. package/dist/transports/http/types.d.ts +120 -0
  418. package/dist/transports/http/types.d.ts.map +1 -0
  419. package/dist/types/adapter.d.ts +138 -0
  420. package/dist/types/adapter.d.ts.map +1 -0
  421. package/dist/types/auth.d.ts +79 -0
  422. package/dist/types/auth.d.ts.map +1 -0
  423. package/dist/types/database.d.ts +100 -0
  424. package/dist/types/database.d.ts.map +1 -0
  425. package/dist/types/filtering.d.ts +41 -0
  426. package/dist/types/filtering.d.ts.map +1 -0
  427. package/dist/types/index.d.ts +13 -0
  428. package/dist/types/index.d.ts.map +1 -0
  429. package/dist/types/server.d.ts +48 -0
  430. package/dist/types/server.d.ts.map +1 -0
  431. package/dist/utils/annotations.d.ts +62 -0
  432. package/dist/utils/annotations.d.ts.map +1 -0
  433. package/dist/utils/errors/base.d.ts +33 -0
  434. package/dist/utils/errors/base.d.ts.map +1 -0
  435. package/dist/utils/errors/categories.d.ts +41 -0
  436. package/dist/utils/errors/categories.d.ts.map +1 -0
  437. package/dist/utils/errors/classes.d.ts +124 -0
  438. package/dist/utils/errors/classes.d.ts.map +1 -0
  439. package/dist/utils/errors/error-response-fields.d.ts +24 -0
  440. package/dist/utils/errors/error-response-fields.d.ts.map +1 -0
  441. package/dist/utils/errors/format.d.ts +74 -0
  442. package/dist/utils/errors/format.d.ts.map +1 -0
  443. package/dist/utils/errors/index.d.ts +11 -0
  444. package/dist/utils/errors/index.d.ts.map +1 -0
  445. package/dist/utils/errors/suggestions.d.ts +16 -0
  446. package/dist/utils/errors/suggestions.d.ts.map +1 -0
  447. package/dist/utils/icons.d.ts +19 -0
  448. package/dist/utils/icons.d.ts.map +1 -0
  449. package/dist/utils/identifiers.d.ts +121 -0
  450. package/dist/utils/identifiers.d.ts.map +1 -0
  451. package/dist/utils/index.d.ts +9 -0
  452. package/dist/utils/index.d.ts.map +1 -0
  453. package/dist/utils/insights-manager.d.ts +39 -0
  454. package/dist/utils/insights-manager.d.ts.map +1 -0
  455. package/dist/utils/logger/error-codes.d.ts +48 -0
  456. package/dist/utils/logger/error-codes.d.ts.map +1 -0
  457. package/dist/utils/logger/index.d.ts +22 -0
  458. package/dist/utils/logger/index.d.ts.map +1 -0
  459. package/dist/utils/logger/logger.d.ts +94 -0
  460. package/dist/utils/logger/logger.d.ts.map +1 -0
  461. package/dist/utils/logger/module-logger.d.ts +28 -0
  462. package/dist/utils/logger/module-logger.d.ts.map +1 -0
  463. package/dist/utils/logger/types.d.ts +36 -0
  464. package/dist/utils/logger/types.d.ts.map +1 -0
  465. package/dist/utils/progress-utils.d.ts +54 -0
  466. package/dist/utils/progress-utils.d.ts.map +1 -0
  467. package/dist/utils/redaction.d.ts +4 -0
  468. package/dist/utils/redaction.d.ts.map +1 -0
  469. package/dist/utils/resource-annotations.d.ts +36 -0
  470. package/dist/utils/resource-annotations.d.ts.map +1 -0
  471. package/dist/utils/validate-json-path.d.ts +43 -0
  472. package/dist/utils/validate-json-path.d.ts.map +1 -0
  473. package/dist/utils/validate-path.d.ts +37 -0
  474. package/dist/utils/validate-path.d.ts.map +1 -0
  475. package/dist/utils/where-clause.d.ts +42 -0
  476. package/dist/utils/where-clause.d.ts.map +1 -0
  477. package/dist/version.d.ts +10 -0
  478. package/dist/version.d.ts.map +1 -0
  479. package/package.json +33 -20
  480. package/.gitattributes +0 -2
  481. package/dist/chunk-4IA3DB5C.js +0 -135
  482. package/dist/chunk-FW7UCRLN.js +0 -82
  483. package/dist/chunk-RHVEZ42P.js +0 -873
  484. package/dist/chunk-Z2GFQU3G.js +0 -363
  485. package/dist/worker-script.d.ts +0 -2
  486. package/dist/worker-script.js +0 -126
  487. package/playwright.config.ts +0 -101
  488. package/scripts/generate-server-instructions.ts +0 -111
  489. package/server.json +0 -52
  490. package/test-server/README.md +0 -118
  491. package/test-server/code-map.md +0 -409
  492. package/test-server/fixtures/sample.csv +0 -6
  493. package/test-server/reset-database.ps1 +0 -373
  494. package/test-server/sample.csv +0 -11
  495. package/test-server/test-agent-experience.md +0 -243
  496. package/test-server/test-database.sql +0 -388
  497. package/test-server/test-group-tools.md +0 -861
  498. package/test-server/test-help-resources.mjs +0 -238
  499. package/test-server/test-preflight.md +0 -53
  500. package/test-server/test-prompts.md +0 -354
  501. package/test-server/test-resources.md +0 -245
  502. package/test-server/test-tool-annotations.mjs +0 -157
  503. package/test-server/test-tools-advanced-1.md +0 -517
  504. package/test-server/test-tools-advanced-2.md +0 -487
  505. package/test-server/test-tools-codemode.md +0 -629
  506. package/test-server/test-tools.md +0 -176
  507. package/test-server/tool-reference.md +0 -236
  508. package/tsconfig.test.json +0 -9
@@ -1,3 +1,5 @@
1
+ import { AsyncLocalStorage } from 'async_hooks';
2
+
1
3
  // src/filtering/tool-constants.ts
2
4
  var ALL_TOOL_GROUPS = [
3
5
  "core",
@@ -6,6 +8,7 @@ var ALL_TOOL_GROUPS = [
6
8
  "stats",
7
9
  "vector",
8
10
  "admin",
11
+ "transactions",
9
12
  "geo",
10
13
  "introspection",
11
14
  "migration",
@@ -21,7 +24,19 @@ var TOOL_GROUPS = {
21
24
  "drop_table",
22
25
  "get_indexes",
23
26
  "create_index",
24
- "drop_index"
27
+ "drop_index",
28
+ "upsert",
29
+ "batch_insert",
30
+ "count",
31
+ "exists",
32
+ "truncate",
33
+ "list_triggers",
34
+ "create_trigger",
35
+ "drop_trigger",
36
+ "list_constraints",
37
+ "date_add",
38
+ "date_diff",
39
+ "alter_table"
25
40
  ],
26
41
  json: [
27
42
  // CRUD + Query + Collection (8: crud.ts, query.ts, write.ts)
@@ -49,10 +64,14 @@ var TOOL_GROUPS = {
49
64
  // JSONB + Storage (3: write.ts, read.ts)
50
65
  "jsonb_convert",
51
66
  "json_storage_info",
52
- "json_normalize_column"
67
+ "json_normalize_column",
68
+ // Security (1: security.ts)
69
+ "json_security_scan",
70
+ // Diff (1: diff.ts)
71
+ "json_diff"
53
72
  ],
54
73
  text: [
55
- // Text Tools (13 WASM)
74
+ // Text Tools (14 WASM)
56
75
  "regex_extract",
57
76
  "regex_match",
58
77
  "text_split",
@@ -66,14 +85,16 @@ var TOOL_GROUPS = {
66
85
  "text_normalize",
67
86
  "text_validate",
68
87
  "advanced_search",
69
- // FTS5 Tools (4 Native-only)
88
+ "text_sentiment",
89
+ // FTS5 Tools (5 Native-only)
70
90
  "fts_create",
71
91
  "fts_search",
72
92
  "fts_rebuild",
73
- "fts_match_info"
93
+ "fts_match_info",
94
+ "fts_headline"
74
95
  ],
75
96
  stats: [
76
- // Stats Tools (13 WASM)
97
+ // Stats Tools (16 WASM)
77
98
  "stats_basic",
78
99
  "stats_count",
79
100
  "stats_group_by",
@@ -87,13 +108,19 @@ var TOOL_GROUPS = {
87
108
  "stats_outliers",
88
109
  "stats_regression",
89
110
  "stats_hypothesis",
111
+ // Anomaly Detection (3 WASM)
112
+ "stats_detect_anomalies",
113
+ "stats_detect_bloat",
114
+ "stats_detect_schema_risks",
90
115
  // Window Tools (6 Native-only)
91
116
  "window_row_number",
92
117
  "window_rank",
93
118
  "window_lag_lead",
94
119
  "window_running_total",
95
120
  "window_moving_avg",
96
- "window_ntile"
121
+ "window_ntile",
122
+ // Sampling (1 WASM)
123
+ "stats_sample"
97
124
  ],
98
125
  vector: [
99
126
  "vector_create_table",
@@ -109,7 +136,7 @@ var TOOL_GROUPS = {
109
136
  "vector_distance"
110
137
  ],
111
138
  admin: [
112
- // Admin Tools (13: backup.ts, verify.ts, pragma.ts)
139
+ // Admin Tools (15: backup.ts, verify.ts, pragma.ts, reindex.ts, wal.ts)
113
140
  "backup",
114
141
  "analyze",
115
142
  "integrity_check",
@@ -137,8 +164,18 @@ var TOOL_GROUPS = {
137
164
  "analyze_csv_schema",
138
165
  "create_rtree_table",
139
166
  "create_series_table",
140
- // Transaction Tools (7 Native-only)
167
+ // Database management (5: pragma.ts, backup/create.ts, reindex.ts, wal.ts)
168
+ "attach_database",
169
+ "detach_database",
170
+ "vacuum_into",
171
+ "dump",
172
+ "reindex",
173
+ "wal"
174
+ ],
175
+ transactions: [
176
+ // Transaction Tools (8 Native-only)
141
177
  "transaction_begin",
178
+ "transaction_status",
142
179
  "transaction_commit",
143
180
  "transaction_rollback",
144
181
  "transaction_savepoint",
@@ -164,8 +201,9 @@ var TOOL_GROUPS = {
164
201
  "dependency_graph",
165
202
  "topological_sort",
166
203
  "cascade_simulator",
167
- // Schema Analysis (3 from introspection/analysis.ts)
204
+ // Schema Analysis (4 from introspection/analysis.ts)
168
205
  "schema_snapshot",
206
+ "schema_diff",
169
207
  "constraint_analysis",
170
208
  "migration_risks",
171
209
  // Diagnostics (3 from introspection/diagnostics.ts)
@@ -185,19 +223,19 @@ var TOOL_GROUPS = {
185
223
  codemode: ["execute_code"]
186
224
  };
187
225
  var META_GROUPS = {
188
- // General development - Core + JSON + Text + Codemode (46 WASM / 50 Native)
226
+ // General development - Core + JSON + Text (60 WASM / 65 Native)
189
227
  starter: ["core", "json", "text", "codemode"],
190
- // Data analysis - Core + JSON + Stats + Codemode (46 WASM / 52 Native)
228
+ // Data analysis - Core + JSON + Stats (63 WASM / 69 Native)
191
229
  analytics: ["core", "json", "stats", "codemode"],
192
- // Search workloads - Core + Text + Vector + Codemode (34 WASM / 38 Native)
230
+ // Search workloads - Core + Text + Vector (46 WASM / 51 Native)
193
231
  search: ["core", "text", "vector", "codemode"],
194
- // Geospatial workloads - Core + Geo + Vector + Codemode (25 WASM / 32 Native)
232
+ // Geospatial workloads - Core + Geo + Vector (36 WASM / 43 Native)
195
233
  spatial: ["core", "geo", "vector", "codemode"],
196
- // Schema development - Core + Introspection + Migration + Codemode (25 tools)
234
+ // Schema development - Core + Introspection + Migration (37 tools)
197
235
  "dev-schema": ["core", "introspection", "migration", "codemode"],
198
- // Bare minimum - Core + Codemode (10 tools)
236
+ // Bare minimum - Core (21 tools)
199
237
  minimal: ["core", "codemode"],
200
- // All tools enabled (115 WASM / 139 Native)
238
+ // All group tools enabled (166 Native / 139 WASM — see TOOL COUNT TAXONOMY above)
201
239
  full: [
202
240
  "core",
203
241
  "json",
@@ -205,6 +243,7 @@ var META_GROUPS = {
205
243
  "stats",
206
244
  "vector",
207
245
  "admin",
246
+ "transactions",
208
247
  "geo",
209
248
  "introspection",
210
249
  "migration",
@@ -317,14 +356,6 @@ function parseToolFilter(filterString) {
317
356
  }
318
357
  }
319
358
  }
320
- if (!startsWithExclude && enabledGroups.size > 0) {
321
- const codemodeExplicitlyExcluded = parts.some(
322
- (p) => p === "-codemode" || p === "-sqlite_execute_code"
323
- );
324
- if (!codemodeExplicitlyExcluded) {
325
- enabledGroups.add("codemode");
326
- }
327
- }
328
359
  return {
329
360
  raw: filterString,
330
361
  rules,
@@ -344,6 +375,14 @@ function isToolEnabled(tool, config) {
344
375
  if (config.includedTools.has(tool.name) || config.includedTools.has(baseName)) {
345
376
  return true;
346
377
  }
378
+ if (tool.group === "codemode") {
379
+ const explicitlyExcludedGroup = config.rules.some(
380
+ (r) => r.type === "exclude" && r.target === "codemode"
381
+ );
382
+ if (!explicitlyExcludedGroup) {
383
+ return true;
384
+ }
385
+ }
347
386
  return config.enabledGroups.has(tool.group);
348
387
  }
349
388
  function filterTools(tools, config) {
@@ -379,232 +418,6 @@ function getFilterSummary(config) {
379
418
  return lines.join("\n");
380
419
  }
381
420
 
382
- // src/utils/errors/suggestions.ts
383
- var ERROR_SUGGESTIONS = [
384
- // Validation errors
385
- {
386
- pattern: /invalid table name/i,
387
- suggestion: "Table names must start with a letter or underscore, followed by letters, numbers, or underscores only.",
388
- category: "validation" /* VALIDATION */
389
- },
390
- {
391
- pattern: /invalid column name/i,
392
- suggestion: "Column names must start with a letter or underscore, followed by letters, numbers, or underscores only.",
393
- category: "validation" /* VALIDATION */
394
- },
395
- {
396
- pattern: /invalid (view|index) name/i,
397
- suggestion: "Names must start with a letter or underscore, followed by alphanumeric characters only.",
398
- category: "validation" /* VALIDATION */
399
- },
400
- {
401
- pattern: /json path must start with \$/i,
402
- suggestion: "JSON paths use $ as the root. Example: $.name, $.items[0], $.nested.property",
403
- category: "validation" /* VALIDATION */
404
- },
405
- {
406
- pattern: /vector dimensions must match/i,
407
- suggestion: "All vectors in comparison must have the same number of dimensions.",
408
- category: "validation" /* VALIDATION */
409
- },
410
- {
411
- pattern: /insufficient data/i,
412
- suggestion: "Not enough data points for the requested analysis. Add more data or reduce the degree.",
413
- category: "validation" /* VALIDATION */
414
- },
415
- // Resource errors — specific codes for table/column not found
416
- {
417
- pattern: /no such table[:\s]*(['"]?)(\w+)\1/i,
418
- suggestion: "Table not found. Run sqlite_list_tables to see available tables.",
419
- category: "resource" /* RESOURCE */,
420
- code: "TABLE_NOT_FOUND"
421
- },
422
- {
423
- pattern: /no such column[:\s]*(['"]?)(\w+)\1/i,
424
- suggestion: "Column not found. Use sqlite_describe_table to see available columns.",
425
- category: "resource" /* RESOURCE */,
426
- code: "COLUMN_NOT_FOUND"
427
- },
428
- {
429
- pattern: /has no column named/i,
430
- suggestion: "Column not found in target table. Use sqlite_describe_table to verify column names before INSERT or UPDATE.",
431
- category: "resource" /* RESOURCE */,
432
- code: "COLUMN_NOT_FOUND"
433
- },
434
- {
435
- pattern: /no such view[:\s]*(['"]?)(\w+)\1/i,
436
- suggestion: "View not found. Run sqlite_list_views to see available views.",
437
- category: "resource" /* RESOURCE */,
438
- code: "VIEW_NOT_FOUND"
439
- },
440
- {
441
- pattern: /filename.*does not exist/i,
442
- suggestion: "File not found. Verify the absolute path exists and is readable.",
443
- category: "resource" /* RESOURCE */,
444
- code: "FILE_NOT_FOUND"
445
- },
446
- {
447
- pattern: /table .* already exists/i,
448
- suggestion: "Table already exists. Use CREATE TABLE IF NOT EXISTS or drop the existing table first.",
449
- category: "resource" /* RESOURCE */
450
- },
451
- // JSON-specific errors — often caused by wrong column name
452
- {
453
- pattern: /malformed JSON/i,
454
- suggestion: "The JSON data is malformed. This commonly occurs when the column name is incorrect \u2014 SQLite treats the unresolved identifier as a literal string. Verify the column exists with sqlite_describe_table.",
455
- category: "query" /* QUERY */,
456
- code: "MALFORMED_JSON"
457
- },
458
- // Query errors
459
- {
460
- pattern: /syntax error/i,
461
- suggestion: "Check SQL syntax. Common issues: missing quotes, commas, parentheses, or reserved word conflicts.",
462
- category: "query" /* QUERY */
463
- },
464
- {
465
- pattern: /UNIQUE constraint failed/i,
466
- suggestion: "A row with this value already exists. Use UPDATE to modify existing data or check for duplicates.",
467
- category: "query" /* QUERY */
468
- },
469
- {
470
- pattern: /FOREIGN KEY constraint failed/i,
471
- suggestion: "The referenced row does not exist. Ensure the parent record exists before inserting.",
472
- category: "query" /* QUERY */
473
- },
474
- {
475
- pattern: /NOT NULL constraint failed/i,
476
- suggestion: "A required column is missing a value. Provide a value or set a default.",
477
- category: "query" /* QUERY */
478
- },
479
- {
480
- pattern: /CHECK constraint failed/i,
481
- suggestion: "The value does not meet the column's check constraint requirements.",
482
- category: "query" /* QUERY */
483
- },
484
- {
485
- pattern: /incomplete input/i,
486
- suggestion: "SQL statement is incomplete. Check for missing clauses, closing parentheses, or semicolons.",
487
- category: "query" /* QUERY */
488
- },
489
- {
490
- pattern: /more than one statement/i,
491
- suggestion: "Only one SQL statement per call is allowed. Split multiple statements into separate calls or use sqlite_execute_code for multi-step operations.",
492
- category: "query" /* QUERY */
493
- },
494
- {
495
- pattern: /too few parameter/i,
496
- suggestion: "Not enough parameter values provided for the prepared statement placeholders (?). Ensure params array matches the number of ? placeholders in the query.",
497
- category: "query" /* QUERY */
498
- },
499
- // Connection errors
500
- {
501
- pattern: /not connected/i,
502
- suggestion: "Database connection not established. Ensure the database is configured and connected.",
503
- category: "connection" /* CONNECTION */
504
- },
505
- {
506
- pattern: /cannot start a transaction within a transaction/i,
507
- suggestion: "A transaction is already active. Commit or rollback the current transaction first, or use sqlite_transaction_execute for atomic multi-statement operations.",
508
- category: "query" /* QUERY */,
509
- code: "TRANSACTION_CONFLICT"
510
- },
511
- {
512
- pattern: /database is locked/i,
513
- suggestion: "Database is being used by another process. Wait and retry, or check for long-running transactions.",
514
- category: "connection" /* CONNECTION */
515
- },
516
- // Permission errors
517
- {
518
- pattern: /readonly database/i,
519
- suggestion: "Database is in read-only mode. Check file permissions or connection settings.",
520
- category: "permission" /* PERMISSION */
521
- },
522
- {
523
- pattern: /attempt to write a readonly/i,
524
- suggestion: "Write operations are not allowed. Check database configuration.",
525
- category: "permission" /* PERMISSION */
526
- },
527
- // Codemode errors
528
- {
529
- pattern: /code validation failed/i,
530
- suggestion: "Check for blocked patterns: require(), process., eval(), Function(), import(). Use sqlite.* API instead.",
531
- category: "validation" /* VALIDATION */
532
- },
533
- {
534
- pattern: /rate limit exceeded/i,
535
- suggestion: "Wait before retrying. Combine multiple operations into fewer execute_code calls.",
536
- category: "permission" /* PERMISSION */
537
- },
538
- {
539
- pattern: /execution timed out/i,
540
- suggestion: "Reduce code complexity or increase timeout (max 30s). Break into smaller operations.",
541
- category: "query" /* QUERY */
542
- },
543
- {
544
- pattern: /sandbox.*not initialized/i,
545
- suggestion: "Internal sandbox error. Retry the operation.",
546
- category: "internal" /* INTERNAL */
547
- }
548
- ];
549
- function findSuggestion(message) {
550
- for (const entry of ERROR_SUGGESTIONS) {
551
- if (entry.pattern.test(message)) {
552
- return {
553
- suggestion: entry.suggestion,
554
- category: entry.category,
555
- code: entry.code
556
- };
557
- }
558
- }
559
- return null;
560
- }
561
-
562
- // src/utils/errors/base.ts
563
- var REFINABLE_CODES = /* @__PURE__ */ new Set([
564
- "DB_QUERY_FAILED",
565
- "DB_WRITE_FAILED",
566
- "QUERY_ERROR",
567
- "RESOURCE_ERROR",
568
- "UNKNOWN_ERROR"
569
- ]);
570
- var DbMcpError = class extends Error {
571
- /** Error category for classification */
572
- category;
573
- /** Module-prefixed error code (e.g., DB_QUERY_FAILED) */
574
- code;
575
- /** Actionable suggestion for resolving the error */
576
- suggestion;
577
- /** Additional error details */
578
- details;
579
- /** Whether the error is recoverable (can retry) */
580
- recoverable;
581
- constructor(message, code, category, options) {
582
- super(message, { cause: options?.cause });
583
- this.name = this.constructor.name;
584
- this.category = category;
585
- this.recoverable = options?.recoverable ?? false;
586
- this.details = options?.details;
587
- const match = findSuggestion(message);
588
- this.suggestion = options?.suggestion ?? match?.suggestion;
589
- this.code = match?.code && REFINABLE_CODES.has(code) ? match.code : code;
590
- Error.captureStackTrace?.(this, this.constructor);
591
- }
592
- /**
593
- * Convert to structured response object
594
- */
595
- toResponse() {
596
- return {
597
- success: false,
598
- error: this.message,
599
- code: this.code,
600
- category: this.category,
601
- suggestion: this.suggestion,
602
- recoverable: this.recoverable,
603
- details: this.details
604
- };
605
- }
606
- };
607
-
608
421
  // src/utils/logger/error-codes.ts
609
422
  function createErrorCode(module, code) {
610
423
  return {
@@ -646,6 +459,8 @@ var ModuleLogger = class {
646
459
  this.parent = parent;
647
460
  this.module = module;
648
461
  }
462
+ parent;
463
+ module;
649
464
  withModule(context) {
650
465
  return { ...context, module: this.module };
651
466
  }
@@ -927,4 +742,817 @@ if (envLevel && envLevel in LEVEL_PRIORITY_CHECK) {
927
742
  logger.setLevel(envLevel);
928
743
  }
929
744
 
930
- export { ALL_TOOL_GROUPS, DbMcpError, ERROR_CODES, META_GROUPS, TOOL_GROUPS, createModuleLogger, filterTools, findSuggestion, getFilterSummary, getToolFilterFromEnv, isToolEnabled, logger, parseToolFilter };
745
+ // src/utils/errors/suggestions.ts
746
+ var ERROR_SUGGESTIONS = [
747
+ // Validation errors
748
+ {
749
+ pattern: /invalid table name/i,
750
+ suggestion: "Table names must start with a letter or underscore, followed by letters, numbers, or underscores only.",
751
+ category: "validation" /* VALIDATION */
752
+ },
753
+ {
754
+ pattern: /invalid column name/i,
755
+ suggestion: "Column names must start with a letter or underscore, followed by letters, numbers, or underscores only.",
756
+ category: "validation" /* VALIDATION */
757
+ },
758
+ {
759
+ pattern: /invalid (view|index) name/i,
760
+ suggestion: "Names must start with a letter or underscore, followed by alphanumeric characters only.",
761
+ category: "validation" /* VALIDATION */
762
+ },
763
+ {
764
+ pattern: /json path must start with \$/i,
765
+ suggestion: "JSON paths use $ as the root. Example: $.name, $.items[0], $.nested.property",
766
+ category: "validation" /* VALIDATION */
767
+ },
768
+ {
769
+ pattern: /vector dimensions must match/i,
770
+ suggestion: "All vectors in comparison must have the same number of dimensions.",
771
+ category: "validation" /* VALIDATION */
772
+ },
773
+ {
774
+ pattern: /insufficient data/i,
775
+ suggestion: "Not enough data points for the requested analysis. Add more data or reduce the degree.",
776
+ category: "validation" /* VALIDATION */
777
+ },
778
+ // Resource errors — specific codes for table/column not found
779
+ {
780
+ pattern: /no such table[:\s]*(['"]?)([\w.]+)\1/i,
781
+ suggestion: "Table not found. Run sqlite_list_tables to see available tables.",
782
+ category: "resource" /* RESOURCE */,
783
+ code: "TABLE_NOT_FOUND"
784
+ },
785
+ {
786
+ pattern: /no such column[:\s]*(['"]?)([\w.]+)\1/i,
787
+ suggestion: "Column not found. Use sqlite_describe_table to see available columns.",
788
+ category: "resource" /* RESOURCE */,
789
+ code: "COLUMN_NOT_FOUND"
790
+ },
791
+ {
792
+ pattern: /has no column named/i,
793
+ suggestion: "Column not found in target table. Use sqlite_describe_table to verify column names before INSERT or UPDATE.",
794
+ category: "resource" /* RESOURCE */,
795
+ code: "COLUMN_NOT_FOUND"
796
+ },
797
+ {
798
+ pattern: /no such view[:\s]*(['"]?)([\w.]+)\1/i,
799
+ suggestion: "View not found. Run sqlite_list_views to see available views.",
800
+ category: "resource" /* RESOURCE */,
801
+ code: "VIEW_NOT_FOUND"
802
+ },
803
+ {
804
+ pattern: /filename.*does not exist/i,
805
+ suggestion: "File not found. Verify the absolute path exists and is readable.",
806
+ category: "resource" /* RESOURCE */,
807
+ code: "FILE_NOT_FOUND"
808
+ },
809
+ {
810
+ pattern: /table .* already exists/i,
811
+ suggestion: "Table already exists. Use CREATE TABLE IF NOT EXISTS or drop the existing table first.",
812
+ category: "resource" /* RESOURCE */,
813
+ code: "TABLE_ALREADY_EXISTS"
814
+ },
815
+ {
816
+ pattern: /index .* already exists/i,
817
+ suggestion: "Index already exists. Use CREATE INDEX IF NOT EXISTS or drop the existing index first.",
818
+ category: "resource" /* RESOURCE */,
819
+ code: "INDEX_ALREADY_EXISTS"
820
+ },
821
+ // JSON-specific errors — often caused by wrong column name
822
+ {
823
+ pattern: /malformed JSON/i,
824
+ suggestion: "The JSON data is malformed. This commonly occurs when the column name is incorrect \u2014 SQLite treats the unresolved identifier as a literal string. Verify the column exists with sqlite_describe_table.",
825
+ category: "query" /* QUERY */,
826
+ code: "MALFORMED_JSON"
827
+ },
828
+ // Query errors
829
+ {
830
+ pattern: /syntax error/i,
831
+ suggestion: "Check SQL syntax. Common issues: missing quotes, commas, parentheses, or reserved word conflicts.",
832
+ category: "query" /* QUERY */
833
+ },
834
+ {
835
+ pattern: /UNIQUE constraint failed/i,
836
+ suggestion: "A row with this value already exists. Use UPDATE to modify existing data or check for duplicates.",
837
+ category: "query" /* QUERY */,
838
+ code: "CONSTRAINT_VIOLATION"
839
+ },
840
+ {
841
+ pattern: /FOREIGN KEY constraint failed/i,
842
+ suggestion: "The referenced row does not exist. Ensure the parent record exists before inserting.",
843
+ category: "query" /* QUERY */,
844
+ code: "CONSTRAINT_VIOLATION"
845
+ },
846
+ {
847
+ pattern: /NOT NULL constraint failed/i,
848
+ suggestion: "A required column is missing a value. Provide a value or set a default.",
849
+ category: "query" /* QUERY */,
850
+ code: "CONSTRAINT_VIOLATION"
851
+ },
852
+ {
853
+ pattern: /CHECK constraint failed/i,
854
+ suggestion: "The value does not meet the column's check constraint requirements.",
855
+ category: "query" /* QUERY */,
856
+ code: "CONSTRAINT_VIOLATION"
857
+ },
858
+ {
859
+ pattern: /incomplete input/i,
860
+ suggestion: "SQL statement is incomplete. Check for missing clauses, closing parentheses, or semicolons.",
861
+ category: "query" /* QUERY */
862
+ },
863
+ {
864
+ pattern: /more than one statement/i,
865
+ suggestion: "Only one SQL statement per call is allowed. Split multiple statements into separate calls or use sqlite_execute_code for multi-step operations.",
866
+ category: "query" /* QUERY */
867
+ },
868
+ {
869
+ pattern: /too few parameter/i,
870
+ suggestion: "Not enough parameter values provided for the prepared statement placeholders (?). Ensure params array matches the number of ? placeholders in the query.",
871
+ category: "query" /* QUERY */
872
+ },
873
+ // Connection errors
874
+ {
875
+ pattern: /not connected/i,
876
+ suggestion: "Database connection not established. Ensure the database is configured and connected.",
877
+ category: "connection" /* CONNECTION */
878
+ },
879
+ {
880
+ pattern: /cannot start a transaction within a transaction/i,
881
+ suggestion: "A transaction is already active. Commit or rollback the current transaction first, or use sqlite_transaction_execute for atomic multi-statement operations.",
882
+ category: "query" /* QUERY */,
883
+ code: "TRANSACTION_CONFLICT"
884
+ },
885
+ {
886
+ pattern: /no transaction is active/i,
887
+ suggestion: "No transaction is active. Start a transaction using sqlite_transaction_begin first.",
888
+ category: "query" /* QUERY */,
889
+ code: "TRANSACTION_NOT_ACTIVE"
890
+ },
891
+ {
892
+ pattern: /no such savepoint/i,
893
+ suggestion: "The specified savepoint does not exist. Verify the savepoint name and ensure it hasn't already been released or rolled back.",
894
+ category: "query" /* QUERY */,
895
+ code: "SAVEPOINT_NOT_FOUND"
896
+ },
897
+ {
898
+ pattern: /database is locked/i,
899
+ suggestion: "Database is being used by another process. Wait and retry, or check for long-running transactions.",
900
+ category: "connection" /* CONNECTION */
901
+ },
902
+ // Permission errors
903
+ {
904
+ pattern: /readonly database/i,
905
+ suggestion: "Database is in read-only mode. Check file permissions or connection settings.",
906
+ category: "permission" /* PERMISSION */
907
+ },
908
+ {
909
+ pattern: /attempt to write a readonly/i,
910
+ suggestion: "Write operations are not allowed. Check database configuration.",
911
+ category: "permission" /* PERMISSION */
912
+ },
913
+ // Codemode errors
914
+ {
915
+ pattern: /code validation failed/i,
916
+ suggestion: "Check for blocked patterns: require(), process., eval(), Function(), import(). Use sqlite.* API instead.",
917
+ category: "validation" /* VALIDATION */
918
+ },
919
+ {
920
+ pattern: /rate limit exceeded/i,
921
+ suggestion: "Wait before retrying. Combine multiple operations into fewer execute_code calls.",
922
+ category: "permission" /* PERMISSION */
923
+ },
924
+ {
925
+ pattern: /execution timed out/i,
926
+ suggestion: "Reduce code complexity or increase timeout (max 30s). Break into smaller operations.",
927
+ category: "query" /* QUERY */
928
+ },
929
+ {
930
+ pattern: /sandbox.*not initialized/i,
931
+ suggestion: "Internal sandbox error. Retry the operation.",
932
+ category: "internal" /* INTERNAL */
933
+ },
934
+ // Extension errors
935
+ {
936
+ pattern: /extension.*not (available|installed|loaded|found)/i,
937
+ suggestion: "Extension is not available. Check CLI flags, environment variables, or platform compatibility.",
938
+ category: "config" /* CONFIGURATION */,
939
+ code: "EXTENSION_MISSING"
940
+ },
941
+ // Custom JS errors mapped from tools
942
+ {
943
+ pattern: /invalid identifier/i,
944
+ suggestion: "Identifiers must start with a letter or underscore and contain only alphanumeric characters or underscores. Ensure the name follows SQLite identifier rules.",
945
+ category: "validation" /* VALIDATION */,
946
+ code: "INVALID_IDENTIFIER"
947
+ },
948
+ {
949
+ pattern: /(expected property name|unexpected token|in JSON at position|Expected double-quoted property name)/i,
950
+ suggestion: "The JSON data provided is malformed. Ensure the input string is valid JSON.",
951
+ category: "validation" /* VALIDATION */,
952
+ code: "MALFORMED_JSON"
953
+ }
954
+ ];
955
+ function findSuggestion(message) {
956
+ for (const entry of ERROR_SUGGESTIONS) {
957
+ if (entry.pattern.test(message)) {
958
+ return {
959
+ suggestion: entry.suggestion,
960
+ category: entry.category,
961
+ code: entry.code
962
+ };
963
+ }
964
+ }
965
+ return null;
966
+ }
967
+
968
+ // src/utils/errors/base.ts
969
+ var REFINABLE_CODES = /* @__PURE__ */ new Set([
970
+ "DB_QUERY_FAILED",
971
+ "DB_WRITE_FAILED",
972
+ "QUERY_ERROR",
973
+ "RESOURCE_ERROR",
974
+ "UNKNOWN_ERROR"
975
+ ]);
976
+ var DbMcpError = class extends Error {
977
+ /** Error category for classification */
978
+ category;
979
+ /** Module-prefixed error code (e.g., DB_QUERY_FAILED) */
980
+ code;
981
+ /** Actionable suggestion for resolving the error */
982
+ suggestion;
983
+ /** Additional error details */
984
+ details;
985
+ /** Whether the error is recoverable (can retry) */
986
+ recoverable;
987
+ constructor(message, code, category, options) {
988
+ super(message, { cause: options?.cause });
989
+ this.name = this.constructor.name;
990
+ this.category = category;
991
+ this.recoverable = options?.recoverable ?? false;
992
+ this.details = options?.details;
993
+ const match = findSuggestion(message);
994
+ this.suggestion = options?.suggestion ?? match?.suggestion;
995
+ this.code = match?.code && REFINABLE_CODES.has(code) ? match.code : code;
996
+ Error.captureStackTrace?.(this, this.constructor);
997
+ }
998
+ /**
999
+ * Convert to structured response object
1000
+ */
1001
+ toResponse() {
1002
+ return {
1003
+ success: false,
1004
+ error: this.message,
1005
+ code: this.code,
1006
+ category: this.category,
1007
+ suggestion: this.suggestion,
1008
+ recoverable: this.recoverable,
1009
+ details: this.details
1010
+ };
1011
+ }
1012
+ };
1013
+
1014
+ // src/utils/errors/classes.ts
1015
+ var ValidationError = class extends DbMcpError {
1016
+ constructor(message, code = "VALIDATION_ERROR", options) {
1017
+ super(message, code, "validation" /* VALIDATION */, {
1018
+ ...options,
1019
+ recoverable: false
1020
+ });
1021
+ }
1022
+ };
1023
+ var ConnectionError = class extends DbMcpError {
1024
+ constructor(message, code = "CONNECTION_ERROR", options) {
1025
+ super(message, code, "connection" /* CONNECTION */, {
1026
+ ...options,
1027
+ recoverable: true
1028
+ // Connection errors are often transient
1029
+ });
1030
+ }
1031
+ };
1032
+ var QueryError = class extends DbMcpError {
1033
+ constructor(message, code = "QUERY_ERROR", options) {
1034
+ super(message, code, "query" /* QUERY */, {
1035
+ ...options,
1036
+ details: {
1037
+ ...options?.details,
1038
+ sql: options?.sql
1039
+ },
1040
+ recoverable: false
1041
+ });
1042
+ }
1043
+ };
1044
+ var ResourceNotFoundError = class extends DbMcpError {
1045
+ constructor(message, code = "RESOURCE_NOT_FOUND", options) {
1046
+ super(message, code, "resource" /* RESOURCE */, {
1047
+ ...options,
1048
+ details: {
1049
+ ...options?.details,
1050
+ resourceType: options?.resourceType,
1051
+ resourceName: options?.resourceName
1052
+ },
1053
+ recoverable: false
1054
+ });
1055
+ }
1056
+ };
1057
+ var ConfigurationError = class extends DbMcpError {
1058
+ constructor(message, code = "CONFIG_ERROR", options) {
1059
+ super(message, code, "config" /* CONFIGURATION */, {
1060
+ ...options,
1061
+ recoverable: false
1062
+ });
1063
+ }
1064
+ };
1065
+ var AuthenticationError = class extends DbMcpError {
1066
+ constructor(message, code = "AUTHENTICATION_ERROR", options) {
1067
+ super(message, code, "authentication" /* AUTHENTICATION */, {
1068
+ ...options,
1069
+ recoverable: false
1070
+ });
1071
+ }
1072
+ };
1073
+ var AuthorizationError = class extends DbMcpError {
1074
+ constructor(message, code = "AUTHORIZATION_ERROR", options) {
1075
+ super(message, code, "authorization" /* AUTHORIZATION */, {
1076
+ ...options,
1077
+ recoverable: false
1078
+ });
1079
+ }
1080
+ };
1081
+ var ExtensionNotAvailableError = class extends DbMcpError {
1082
+ constructor(extensionName, options) {
1083
+ const isWasm = options?.wasmLimitation ?? options?.details?.["wasmLimitation"] ?? false;
1084
+ const baseMessage = `Extension '${extensionName}' is not installed or available`;
1085
+ const message = isWasm === true ? `${baseMessage} in WASM mode` : baseMessage;
1086
+ super(message, "EXTENSION_MISSING", "config" /* CONFIGURATION */, {
1087
+ suggestion: options?.suggestion ?? `Install or enable the '${extensionName}' extension. Check environment variable or CLI flag configuration.`,
1088
+ details: {
1089
+ extension: extensionName,
1090
+ ...options?.details,
1091
+ ...isWasm === true ? { wasmLimitation: true } : {}
1092
+ },
1093
+ recoverable: false,
1094
+ cause: options?.cause
1095
+ });
1096
+ }
1097
+ };
1098
+
1099
+ // src/utils/errors/format.ts
1100
+ function sanitizeErrorMessage(msg) {
1101
+ if (!msg || typeof msg !== "string") return msg;
1102
+ return msg.replace(/[a-zA-Z]:\\[^:\n]*\\/g, "<redacted_path>\\").replace(/(file:|sqlite:|\/)[^:\s]+(\/[^:\s]*)/g, "<redacted_path>").replace(
1103
+ /([a-zA-Z0-9+.-]+:\/\/[^:]+:)[^@\s]+(@)/g,
1104
+ "$1<redacted_credential>$2"
1105
+ ).replace(
1106
+ /([?&](?:password|secret|key|token)=)[^&\s]+/gi,
1107
+ "$1<redacted_credential>"
1108
+ ).replace(
1109
+ /(password|secret|key|token)[=:]\s*["']?[^"'\s,;]+["']?/gi,
1110
+ "$1=<redacted_credential>"
1111
+ );
1112
+ }
1113
+ var CATEGORY_DEFAULT_CODES = {
1114
+ ["validation" /* VALIDATION */]: "VALIDATION_ERROR",
1115
+ ["connection" /* CONNECTION */]: "CONNECTION_ERROR",
1116
+ ["query" /* QUERY */]: "QUERY_ERROR",
1117
+ ["permission" /* PERMISSION */]: "PERMISSION_ERROR",
1118
+ ["config" /* CONFIGURATION */]: "CONFIG_ERROR",
1119
+ ["resource" /* RESOURCE */]: "RESOURCE_ERROR",
1120
+ ["authentication" /* AUTHENTICATION */]: "AUTHENTICATION_ERROR",
1121
+ ["authorization" /* AUTHORIZATION */]: "AUTHORIZATION_ERROR",
1122
+ ["internal" /* INTERNAL */]: "UNKNOWN_ERROR"
1123
+ };
1124
+ function formatZodError(error) {
1125
+ if (!("issues" in error) || !Array.isArray(error["issues"])) {
1126
+ return null;
1127
+ }
1128
+ const issues = error["issues"];
1129
+ return issues.map((issue) => {
1130
+ const pathStr = Array.isArray(issue.path) && issue.path.length > 0 ? `${issue.path.join(".")}: ` : "";
1131
+ return `${pathStr}${issue.message ?? "Unknown validation error"}`;
1132
+ }).join("; ");
1133
+ }
1134
+ function formatHandlerError(error, _context) {
1135
+ if (error instanceof DbMcpError) {
1136
+ const res = error.toResponse();
1137
+ res.error = sanitizeErrorMessage(res.error);
1138
+ return res;
1139
+ }
1140
+ if (error instanceof Error) {
1141
+ const zodMessage = formatZodError(error);
1142
+ if (zodMessage !== null) {
1143
+ return {
1144
+ success: false,
1145
+ error: sanitizeErrorMessage(zodMessage),
1146
+ code: "VALIDATION_ERROR",
1147
+ category: "validation" /* VALIDATION */,
1148
+ suggestion: void 0,
1149
+ recoverable: false,
1150
+ details: void 0
1151
+ };
1152
+ }
1153
+ }
1154
+ if (error instanceof Error) {
1155
+ const match = findSuggestion(error.message);
1156
+ const category = match?.category ?? "internal" /* INTERNAL */;
1157
+ return {
1158
+ success: false,
1159
+ error: sanitizeErrorMessage(error.message),
1160
+ code: match?.code ?? CATEGORY_DEFAULT_CODES[category],
1161
+ category,
1162
+ suggestion: match?.suggestion,
1163
+ recoverable: false,
1164
+ details: void 0
1165
+ };
1166
+ }
1167
+ return {
1168
+ success: false,
1169
+ error: sanitizeErrorMessage(String(error)),
1170
+ code: "UNKNOWN_ERROR",
1171
+ category: "internal" /* INTERNAL */,
1172
+ suggestion: void 0,
1173
+ recoverable: false,
1174
+ details: void 0
1175
+ };
1176
+ }
1177
+ var authContextStorage = new AsyncLocalStorage();
1178
+ function runWithAuthContext(context, fn) {
1179
+ return authContextStorage.run(context, fn);
1180
+ }
1181
+ function getAuthContext() {
1182
+ return authContextStorage.getStore();
1183
+ }
1184
+
1185
+ // src/auth/scopes/constants.ts
1186
+ var SCOPES = {
1187
+ /** Read-only access to all databases */
1188
+ READ: "read",
1189
+ /** Read and write access to all databases */
1190
+ WRITE: "write",
1191
+ /** Administrative access */
1192
+ ADMIN: "admin",
1193
+ /** Unrestricted access to all operations */
1194
+ FULL: "full"
1195
+ };
1196
+ var BASE_SCOPES = ["read", "write", "admin", "full"];
1197
+ var SUPPORTED_SCOPES = ["read", "write", "admin", "full"];
1198
+ function parseScopes(scopeString) {
1199
+ return scopeString.split(/\s+/).map((s) => s.trim()).filter((s) => s.length > 0);
1200
+ }
1201
+
1202
+ // src/auth/scopes/mapping.ts
1203
+ var TOOL_GROUP_SCOPES = {
1204
+ core: SCOPES.READ,
1205
+ json: SCOPES.READ,
1206
+ text: SCOPES.READ,
1207
+ stats: SCOPES.READ,
1208
+ vector: SCOPES.READ,
1209
+ geo: SCOPES.READ,
1210
+ introspection: SCOPES.READ,
1211
+ migration: SCOPES.WRITE,
1212
+ transactions: SCOPES.WRITE,
1213
+ admin: SCOPES.ADMIN,
1214
+ codemode: SCOPES.ADMIN
1215
+ };
1216
+ var groupsForScope = (maxScope) => {
1217
+ const hierarchy = {
1218
+ read: 0,
1219
+ write: 1,
1220
+ admin: 2,
1221
+ full: 3
1222
+ };
1223
+ const maxLevel = hierarchy[maxScope];
1224
+ return Object.entries(TOOL_GROUP_SCOPES).filter(([, scope]) => hierarchy[scope] <= maxLevel).map(([group]) => group);
1225
+ };
1226
+ groupsForScope(SCOPES.READ);
1227
+ groupsForScope(SCOPES.WRITE);
1228
+ groupsForScope(SCOPES.ADMIN);
1229
+ function withSqlitePrefix(names) {
1230
+ const set = /* @__PURE__ */ new Set();
1231
+ for (const name of names) {
1232
+ set.add(name);
1233
+ set.add(`sqlite_${name}`);
1234
+ }
1235
+ return set;
1236
+ }
1237
+ var adminToolNames = [];
1238
+ for (const [group, scope] of Object.entries(TOOL_GROUP_SCOPES)) {
1239
+ if (scope === SCOPES.ADMIN) {
1240
+ const tools = TOOL_GROUPS[group];
1241
+ adminToolNames.push(...tools);
1242
+ }
1243
+ }
1244
+ adminToolNames.push(
1245
+ "sqlite_audit_list_backups",
1246
+ "sqlite_audit_get_backup",
1247
+ "sqlite_audit_cleanup",
1248
+ "sqlite_audit_diff_backup",
1249
+ "sqlite_audit_restore_backup",
1250
+ "drop_table"
1251
+ // explicitly admin since it is destructive, despite being in core
1252
+ );
1253
+ withSqlitePrefix(adminToolNames);
1254
+ var READ_ONLY_TOOLS = withSqlitePrefix([
1255
+ // Core read operations
1256
+ "read_query",
1257
+ "list_tables",
1258
+ "describe_table",
1259
+ "get_indexes",
1260
+ "count",
1261
+ "exists",
1262
+ "list_triggers",
1263
+ "list_constraints",
1264
+ "date_add",
1265
+ "date_diff",
1266
+ // JSON read operations
1267
+ "json_valid",
1268
+ "json_extract",
1269
+ "json_type",
1270
+ "json_array_length",
1271
+ "json_keys",
1272
+ "json_each",
1273
+ "json_group_array",
1274
+ "json_group_object",
1275
+ "json_pretty",
1276
+ "json_query",
1277
+ "json_select",
1278
+ "json_validate_path",
1279
+ "json_analyze_schema",
1280
+ "json_storage_info",
1281
+ "json_diff",
1282
+ "json_security_scan",
1283
+ // Text read operations
1284
+ "regex_extract",
1285
+ "regex_match",
1286
+ "text_split",
1287
+ "text_concat",
1288
+ "text_replace",
1289
+ "text_trim",
1290
+ "text_case",
1291
+ "text_substring",
1292
+ "fuzzy_match",
1293
+ "phonetic_match",
1294
+ "text_normalize",
1295
+ "text_validate",
1296
+ "advanced_search",
1297
+ "text_sentiment",
1298
+ "fts_search",
1299
+ "fts_match_info",
1300
+ "fts_headline",
1301
+ // Stats (all read-only)
1302
+ "stats_basic",
1303
+ "stats_count",
1304
+ "stats_group_by",
1305
+ "stats_histogram",
1306
+ "stats_percentile",
1307
+ "stats_correlation",
1308
+ "stats_top_n",
1309
+ "stats_distinct",
1310
+ "stats_summary",
1311
+ "stats_frequency",
1312
+ "stats_outliers",
1313
+ "stats_regression",
1314
+ "stats_hypothesis",
1315
+ "stats_detect_anomalies",
1316
+ "stats_detect_bloat",
1317
+ "stats_detect_schema_risks",
1318
+ "stats_sample",
1319
+ "window_row_number",
1320
+ "window_rank",
1321
+ "window_lag_lead",
1322
+ "window_running_total",
1323
+ "window_moving_avg",
1324
+ "window_ntile",
1325
+ // Vector read operations
1326
+ "vector_search",
1327
+ "vector_get",
1328
+ "vector_count",
1329
+ "vector_stats",
1330
+ "vector_dimensions",
1331
+ "vector_normalize",
1332
+ "vector_distance",
1333
+ // Geo read operations
1334
+ "geo_distance",
1335
+ "geo_nearby",
1336
+ "geo_bounding_box",
1337
+ "geo_cluster",
1338
+ // Introspection (all read-only)
1339
+ "dependency_graph",
1340
+ "topological_sort",
1341
+ "cascade_simulator",
1342
+ "schema_snapshot",
1343
+ "schema_diff",
1344
+ "constraint_analysis",
1345
+ "migration_risks",
1346
+ "storage_analysis",
1347
+ "index_audit",
1348
+ "query_plan"
1349
+ ]);
1350
+ var WRITE_TOOLS = withSqlitePrefix([
1351
+ // Core write operations
1352
+ "write_query",
1353
+ "create_table",
1354
+ "create_index",
1355
+ "drop_index",
1356
+ "upsert",
1357
+ "batch_insert",
1358
+ "truncate",
1359
+ "create_trigger",
1360
+ "drop_trigger",
1361
+ "alter_table",
1362
+ // JSON write operations
1363
+ "json_insert",
1364
+ "json_update",
1365
+ "json_set",
1366
+ "json_remove",
1367
+ "json_array_append",
1368
+ "json_merge",
1369
+ "create_json_collection",
1370
+ "jsonb_convert",
1371
+ "json_normalize_column",
1372
+ // Text write operations
1373
+ "fts_create",
1374
+ "fts_rebuild",
1375
+ // Vector write operations
1376
+ "vector_create_table",
1377
+ "vector_store",
1378
+ "vector_batch_store",
1379
+ "vector_delete",
1380
+ // Geo write operations
1381
+ "spatialite_load",
1382
+ "spatialite_create_table",
1383
+ "spatialite_query",
1384
+ "spatialite_analyze",
1385
+ "spatialite_index",
1386
+ "spatialite_transform",
1387
+ "spatialite_import",
1388
+ // Migration (write scope group)
1389
+ "migration_init",
1390
+ "migration_record",
1391
+ "migration_apply",
1392
+ "migration_rollback",
1393
+ "migration_history",
1394
+ "migration_status",
1395
+ // Transactions (write scope group)
1396
+ "transaction_begin",
1397
+ "transaction_status",
1398
+ "transaction_commit",
1399
+ "transaction_rollback",
1400
+ "transaction_savepoint",
1401
+ "transaction_release",
1402
+ "transaction_rollback_to",
1403
+ "transaction_execute"
1404
+ ]);
1405
+
1406
+ // src/auth/scopes/validation.ts
1407
+ function hasAdminScope(scopes) {
1408
+ return scopes.includes("admin") || scopes.includes("full");
1409
+ }
1410
+ function hasWriteScope(scopes) {
1411
+ return scopes.includes("write") || hasAdminScope(scopes);
1412
+ }
1413
+ function hasReadScope(scopes) {
1414
+ return scopes.includes("read") || hasWriteScope(scopes);
1415
+ }
1416
+
1417
+ // src/auth/scopes/enforcement.ts
1418
+ var toolScopeMap = /* @__PURE__ */ new Map();
1419
+ function registerToolScopes(map) {
1420
+ for (const [key, val] of map.entries()) {
1421
+ toolScopeMap.set(key, val);
1422
+ }
1423
+ }
1424
+ function scopeGrantsToolAccess(scope, toolName) {
1425
+ if (scope === "full" || scope === "admin") {
1426
+ return true;
1427
+ }
1428
+ if (toolScopeMap.size > 0) {
1429
+ const required = toolScopeMap.get(toolName);
1430
+ if (required) {
1431
+ if (required.includes(scope)) {
1432
+ return true;
1433
+ }
1434
+ if (scope === "write" && required.includes("read")) {
1435
+ return true;
1436
+ }
1437
+ return false;
1438
+ }
1439
+ return false;
1440
+ }
1441
+ if (scope === "write") {
1442
+ return WRITE_TOOLS.has(toolName) || READ_ONLY_TOOLS.has(toolName);
1443
+ }
1444
+ if (scope === "read") {
1445
+ return READ_ONLY_TOOLS.has(toolName);
1446
+ }
1447
+ return false;
1448
+ }
1449
+ function scopesGrantToolAccess(scopes, toolName) {
1450
+ return scopes.some((scope) => scopeGrantsToolAccess(scope, toolName));
1451
+ }
1452
+
1453
+ // src/auth/errors.ts
1454
+ var OAuthError = class extends DbMcpError {
1455
+ /** HTTP status code for this error */
1456
+ httpStatus;
1457
+ /** WWW-Authenticate header value */
1458
+ wwwAuthenticate;
1459
+ constructor(message, code, httpStatus, details, wwwAuthenticate) {
1460
+ super(message, code, "authentication" /* AUTHENTICATION */, { details });
1461
+ this.name = "OAuthError";
1462
+ this.httpStatus = httpStatus;
1463
+ this.wwwAuthenticate = wwwAuthenticate;
1464
+ }
1465
+ };
1466
+ var TokenMissingError = class extends OAuthError {
1467
+ constructor(realm = "db-mcp") {
1468
+ super(
1469
+ "No access token provided",
1470
+ ERROR_CODES.AUTH.TOKEN_MISSING.full,
1471
+ 401,
1472
+ void 0,
1473
+ `Bearer realm="${realm}"`
1474
+ );
1475
+ this.name = "TokenMissingError";
1476
+ }
1477
+ };
1478
+ var InvalidTokenError = class extends OAuthError {
1479
+ constructor(message = "Invalid access token", details) {
1480
+ super(
1481
+ message,
1482
+ ERROR_CODES.AUTH.TOKEN_INVALID.full,
1483
+ 401,
1484
+ details,
1485
+ 'Bearer error="invalid_token"'
1486
+ );
1487
+ this.name = "InvalidTokenError";
1488
+ }
1489
+ };
1490
+ var TokenExpiredError = class extends OAuthError {
1491
+ constructor(expiredAt) {
1492
+ super(
1493
+ "Access token has expired",
1494
+ ERROR_CODES.AUTH.TOKEN_EXPIRED.full,
1495
+ 401,
1496
+ expiredAt ? { expiredAt: expiredAt.toISOString() } : void 0,
1497
+ 'Bearer error="invalid_token", error_description="Token has expired"'
1498
+ );
1499
+ this.name = "TokenExpiredError";
1500
+ }
1501
+ };
1502
+ var InvalidSignatureError = class extends OAuthError {
1503
+ constructor(message = "Token signature verification failed") {
1504
+ super(
1505
+ message,
1506
+ ERROR_CODES.AUTH.SIGNATURE_INVALID.full,
1507
+ 401,
1508
+ void 0,
1509
+ 'Bearer error="invalid_token", error_description="Signature verification failed"'
1510
+ );
1511
+ this.name = "InvalidSignatureError";
1512
+ }
1513
+ };
1514
+ var InsufficientScopeError = class extends OAuthError {
1515
+ constructor(_requiredScope, _providedScopes) {
1516
+ super(
1517
+ `Insufficient scope.`,
1518
+ ERROR_CODES.AUTH.SCOPE_DENIED.full,
1519
+ 403,
1520
+ void 0,
1521
+ `Bearer error="insufficient_scope"`
1522
+ );
1523
+ this.name = "InsufficientScopeError";
1524
+ }
1525
+ };
1526
+ var AuthServerDiscoveryError = class extends OAuthError {
1527
+ constructor(serverUrl, cause) {
1528
+ super(
1529
+ `Failed to discover authorization server metadata: ${serverUrl}`,
1530
+ ERROR_CODES.AUTH.DISCOVERY_FAILED.full,
1531
+ 500,
1532
+ {
1533
+ serverUrl,
1534
+ cause: cause?.message
1535
+ }
1536
+ );
1537
+ this.name = "AuthServerDiscoveryError";
1538
+ }
1539
+ };
1540
+ var JwksFetchError = class extends OAuthError {
1541
+ constructor(jwksUri, cause) {
1542
+ super(
1543
+ `Failed to fetch JWKS: ${jwksUri}`,
1544
+ ERROR_CODES.AUTH.JWKS_FETCH_FAILED.full,
1545
+ 500,
1546
+ {
1547
+ jwksUri,
1548
+ cause: cause?.message
1549
+ }
1550
+ );
1551
+ this.name = "JwksFetchError";
1552
+ }
1553
+ };
1554
+ function isOAuthError(error) {
1555
+ return error instanceof OAuthError;
1556
+ }
1557
+
1558
+ export { ALL_TOOL_GROUPS, AuthServerDiscoveryError, AuthenticationError, AuthorizationError, BASE_SCOPES, ConfigurationError, ConnectionError, DbMcpError, ERROR_CODES, ExtensionNotAvailableError, InsufficientScopeError, InvalidSignatureError, InvalidTokenError, JwksFetchError, META_GROUPS, QueryError, ResourceNotFoundError, SCOPES, SUPPORTED_SCOPES, TOOL_GROUPS, TokenExpiredError, TokenMissingError, ValidationError, createModuleLogger, filterTools, findSuggestion, formatHandlerError, getAuthContext, getFilterSummary, getToolFilterFromEnv, hasAdminScope, hasReadScope, isOAuthError, isToolEnabled, logger, parseScopes, parseToolFilter, registerToolScopes, runWithAuthContext, sanitizeErrorMessage, scopesGrantToolAccess };