@neverinfamous/postgres-mcp 1.3.0 → 2.1.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 (548) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +244 -129
  3. package/dist/__tests__/benchmarks/codemode.bench.d.ts +10 -0
  4. package/dist/__tests__/benchmarks/codemode.bench.d.ts.map +1 -0
  5. package/dist/__tests__/benchmarks/codemode.bench.js +159 -0
  6. package/dist/__tests__/benchmarks/codemode.bench.js.map +1 -0
  7. package/dist/__tests__/benchmarks/connection-pool.bench.d.ts +10 -0
  8. package/dist/__tests__/benchmarks/connection-pool.bench.d.ts.map +1 -0
  9. package/dist/__tests__/benchmarks/connection-pool.bench.js +123 -0
  10. package/dist/__tests__/benchmarks/connection-pool.bench.js.map +1 -0
  11. package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts +11 -0
  12. package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts.map +1 -0
  13. package/dist/__tests__/benchmarks/handler-dispatch.bench.js +199 -0
  14. package/dist/__tests__/benchmarks/handler-dispatch.bench.js.map +1 -0
  15. package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts +15 -0
  16. package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts.map +1 -0
  17. package/dist/__tests__/benchmarks/logger-sanitization.bench.js +155 -0
  18. package/dist/__tests__/benchmarks/logger-sanitization.bench.js.map +1 -0
  19. package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts +10 -0
  20. package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts.map +1 -0
  21. package/dist/__tests__/benchmarks/resource-prompts.bench.js +181 -0
  22. package/dist/__tests__/benchmarks/resource-prompts.bench.js.map +1 -0
  23. package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts +11 -0
  24. package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts.map +1 -0
  25. package/dist/__tests__/benchmarks/schema-parsing.bench.js +209 -0
  26. package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -0
  27. package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts +9 -0
  28. package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts.map +1 -0
  29. package/dist/__tests__/benchmarks/tool-filtering.bench.js +83 -0
  30. package/dist/__tests__/benchmarks/tool-filtering.bench.js.map +1 -0
  31. package/dist/__tests__/benchmarks/transport-auth.bench.d.ts +10 -0
  32. package/dist/__tests__/benchmarks/transport-auth.bench.d.ts.map +1 -0
  33. package/dist/__tests__/benchmarks/transport-auth.bench.js +128 -0
  34. package/dist/__tests__/benchmarks/transport-auth.bench.js.map +1 -0
  35. package/dist/__tests__/benchmarks/utilities.bench.d.ts +10 -0
  36. package/dist/__tests__/benchmarks/utilities.bench.d.ts.map +1 -0
  37. package/dist/__tests__/benchmarks/utilities.bench.js +164 -0
  38. package/dist/__tests__/benchmarks/utilities.bench.js.map +1 -0
  39. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  40. package/dist/__tests__/mocks/adapter.js +2 -1
  41. package/dist/__tests__/mocks/adapter.js.map +1 -1
  42. package/dist/adapters/DatabaseAdapter.d.ts +6 -1
  43. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  44. package/dist/adapters/DatabaseAdapter.js +23 -7
  45. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  46. package/dist/adapters/postgresql/PostgresAdapter.d.ts +5 -22
  47. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  48. package/dist/adapters/postgresql/PostgresAdapter.js +30 -519
  49. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  50. package/dist/adapters/postgresql/prompts/index.js +1 -1
  51. package/dist/adapters/postgresql/prompts/index.js.map +1 -1
  52. package/dist/adapters/postgresql/resources/index.d.ts +1 -1
  53. package/dist/adapters/postgresql/resources/index.js +3 -3
  54. package/dist/adapters/postgresql/resources/index.js.map +1 -1
  55. package/dist/adapters/postgresql/schema-operations.d.ts +71 -0
  56. package/dist/adapters/postgresql/schema-operations.d.ts.map +1 -0
  57. package/dist/adapters/postgresql/schema-operations.js +561 -0
  58. package/dist/adapters/postgresql/schema-operations.js.map +1 -0
  59. package/dist/adapters/postgresql/schemas/admin.d.ts +4 -4
  60. package/dist/adapters/postgresql/schemas/admin.js +4 -4
  61. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  62. package/dist/adapters/postgresql/schemas/backup.d.ts +39 -25
  63. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  64. package/dist/adapters/postgresql/schemas/backup.js +54 -25
  65. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  66. package/dist/adapters/postgresql/schemas/core/index.d.ts +6 -0
  67. package/dist/adapters/postgresql/schemas/core/index.d.ts.map +1 -0
  68. package/dist/adapters/postgresql/schemas/core/index.js +6 -0
  69. package/dist/adapters/postgresql/schemas/core/index.js.map +1 -0
  70. package/dist/adapters/postgresql/schemas/{core.d.ts → core/queries.d.ts} +12 -167
  71. package/dist/adapters/postgresql/schemas/core/queries.d.ts.map +1 -0
  72. package/dist/adapters/postgresql/schemas/{core.js → core/queries.js} +5 -213
  73. package/dist/adapters/postgresql/schemas/core/queries.js.map +1 -0
  74. package/dist/adapters/postgresql/schemas/core/transactions.d.ts +149 -0
  75. package/dist/adapters/postgresql/schemas/core/transactions.d.ts.map +1 -0
  76. package/dist/adapters/postgresql/schemas/core/transactions.js +239 -0
  77. package/dist/adapters/postgresql/schemas/core/transactions.js.map +1 -0
  78. package/dist/adapters/postgresql/schemas/cron.d.ts +12 -12
  79. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  80. package/dist/adapters/postgresql/schemas/cron.js +38 -10
  81. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  82. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts +222 -0
  83. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts.map +1 -0
  84. package/dist/adapters/postgresql/schemas/extensions/citext.js +306 -0
  85. package/dist/adapters/postgresql/schemas/extensions/citext.js.map +1 -0
  86. package/dist/adapters/postgresql/schemas/extensions/index.d.ts +15 -0
  87. package/dist/adapters/postgresql/schemas/extensions/index.d.ts.map +1 -0
  88. package/dist/adapters/postgresql/schemas/extensions/index.js +20 -0
  89. package/dist/adapters/postgresql/schemas/extensions/index.js.map +1 -0
  90. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts +164 -0
  91. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts.map +1 -0
  92. package/dist/adapters/postgresql/schemas/extensions/kcache.js +225 -0
  93. package/dist/adapters/postgresql/schemas/extensions/kcache.js.map +1 -0
  94. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts +253 -0
  95. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts.map +1 -0
  96. package/dist/adapters/postgresql/schemas/extensions/ltree.js +430 -0
  97. package/dist/adapters/postgresql/schemas/extensions/ltree.js.map +1 -0
  98. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts +251 -0
  99. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts.map +1 -0
  100. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js +294 -0
  101. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js.map +1 -0
  102. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts +10 -0
  103. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts.map +1 -0
  104. package/dist/adapters/postgresql/schemas/extensions/shared.js +15 -0
  105. package/dist/adapters/postgresql/schemas/extensions/shared.js.map +1 -0
  106. package/dist/adapters/postgresql/schemas/index.d.ts +8 -7
  107. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  108. package/dist/adapters/postgresql/schemas/index.js +16 -10
  109. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  110. package/dist/adapters/postgresql/schemas/introspection.d.ts +445 -0
  111. package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -0
  112. package/dist/adapters/postgresql/schemas/introspection.js +481 -0
  113. package/dist/adapters/postgresql/schemas/introspection.js.map +1 -0
  114. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts +270 -0
  115. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts.map +1 -0
  116. package/dist/adapters/postgresql/schemas/jsonb/advanced.js +371 -0
  117. package/dist/adapters/postgresql/schemas/jsonb/advanced.js.map +1 -0
  118. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts +283 -0
  119. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts.map +1 -0
  120. package/dist/adapters/postgresql/schemas/jsonb/basic.js +456 -0
  121. package/dist/adapters/postgresql/schemas/jsonb/basic.js.map +1 -0
  122. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts +6 -0
  123. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts.map +1 -0
  124. package/dist/adapters/postgresql/schemas/jsonb/index.js +6 -0
  125. package/dist/adapters/postgresql/schemas/jsonb/index.js.map +1 -0
  126. package/dist/adapters/postgresql/schemas/monitoring.d.ts +45 -29
  127. package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
  128. package/dist/adapters/postgresql/schemas/monitoring.js +51 -18
  129. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  130. package/dist/adapters/postgresql/schemas/partitioning.d.ts +28 -32
  131. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  132. package/dist/adapters/postgresql/schemas/partitioning.js +82 -53
  133. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  134. package/dist/adapters/postgresql/schemas/partman.d.ts +78 -7
  135. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
  136. package/dist/adapters/postgresql/schemas/partman.js +54 -41
  137. package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
  138. package/dist/adapters/postgresql/schemas/performance.d.ts +37 -19
  139. package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
  140. package/dist/adapters/postgresql/schemas/performance.js +54 -12
  141. package/dist/adapters/postgresql/schemas/performance.js.map +1 -1
  142. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts +429 -0
  143. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts.map +1 -0
  144. package/dist/adapters/postgresql/schemas/{postgis.js → postgis/advanced.js} +4 -467
  145. package/dist/adapters/postgresql/schemas/postgis/advanced.js.map +1 -0
  146. package/dist/adapters/postgresql/schemas/{postgis.d.ts → postgis/basic.d.ts} +1 -423
  147. package/dist/adapters/postgresql/schemas/postgis/basic.d.ts.map +1 -0
  148. package/dist/adapters/postgresql/schemas/postgis/basic.js +493 -0
  149. package/dist/adapters/postgresql/schemas/postgis/basic.js.map +1 -0
  150. package/dist/adapters/postgresql/schemas/postgis/index.d.ts +6 -0
  151. package/dist/adapters/postgresql/schemas/postgis/index.d.ts.map +1 -0
  152. package/dist/adapters/postgresql/schemas/postgis/index.js +6 -0
  153. package/dist/adapters/postgresql/schemas/postgis/index.js.map +1 -0
  154. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +50 -32
  155. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  156. package/dist/adapters/postgresql/schemas/schema-mgmt.js +93 -26
  157. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  158. package/dist/adapters/postgresql/schemas/stats/index.d.ts +6 -0
  159. package/dist/adapters/postgresql/schemas/stats/index.d.ts.map +1 -0
  160. package/dist/adapters/postgresql/schemas/stats/index.js +6 -0
  161. package/dist/adapters/postgresql/schemas/stats/index.js.map +1 -0
  162. package/dist/adapters/postgresql/schemas/stats/input.d.ts +260 -0
  163. package/dist/adapters/postgresql/schemas/stats/input.d.ts.map +1 -0
  164. package/dist/adapters/postgresql/schemas/{stats.js → stats/input.js} +2 -331
  165. package/dist/adapters/postgresql/schemas/stats/input.js.map +1 -0
  166. package/dist/adapters/postgresql/schemas/{stats.d.ts → stats/output.d.ts} +3 -246
  167. package/dist/adapters/postgresql/schemas/stats/output.d.ts.map +1 -0
  168. package/dist/adapters/postgresql/schemas/stats/output.js +334 -0
  169. package/dist/adapters/postgresql/schemas/stats/output.js.map +1 -0
  170. package/dist/adapters/postgresql/schemas/text-search.d.ts +44 -32
  171. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  172. package/dist/adapters/postgresql/schemas/text-search.js +53 -36
  173. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  174. package/dist/adapters/postgresql/schemas/vector.d.ts +10 -10
  175. package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
  176. package/dist/adapters/postgresql/schemas/vector.js +12 -16
  177. package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
  178. package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
  179. package/dist/adapters/postgresql/tools/admin.js +82 -67
  180. package/dist/adapters/postgresql/tools/admin.js.map +1 -1
  181. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  182. package/dist/adapters/postgresql/tools/backup/dump.js +119 -97
  183. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  184. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
  185. package/dist/adapters/postgresql/tools/backup/planning.js +345 -287
  186. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
  187. package/dist/adapters/postgresql/tools/citext/analysis.d.ts +24 -0
  188. package/dist/adapters/postgresql/tools/citext/analysis.d.ts.map +1 -0
  189. package/dist/adapters/postgresql/tools/{citext.js → citext/analysis.js} +131 -281
  190. package/dist/adapters/postgresql/tools/citext/analysis.js.map +1 -0
  191. package/dist/adapters/postgresql/tools/citext/index.d.ts +15 -0
  192. package/dist/adapters/postgresql/tools/citext/index.d.ts.map +1 -0
  193. package/dist/adapters/postgresql/tools/citext/index.js +23 -0
  194. package/dist/adapters/postgresql/tools/citext/index.js.map +1 -0
  195. package/dist/adapters/postgresql/tools/citext/setup.d.ts +16 -0
  196. package/dist/adapters/postgresql/tools/citext/setup.d.ts.map +1 -0
  197. package/dist/adapters/postgresql/tools/citext/setup.js +193 -0
  198. package/dist/adapters/postgresql/tools/citext/setup.js.map +1 -0
  199. package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -1
  200. package/dist/adapters/postgresql/tools/codemode/index.js +3 -12
  201. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
  202. package/dist/adapters/postgresql/tools/core/convenience.d.ts +12 -22
  203. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  204. package/dist/adapters/postgresql/tools/core/convenience.js +116 -211
  205. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  206. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +1 -0
  207. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -1
  208. package/dist/adapters/postgresql/tools/core/error-helpers.js +8 -1
  209. package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -1
  210. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  211. package/dist/adapters/postgresql/tools/core/health.js +124 -114
  212. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  213. package/dist/adapters/postgresql/tools/core/index.d.ts +2 -1
  214. package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -1
  215. package/dist/adapters/postgresql/tools/core/index.js +3 -2
  216. package/dist/adapters/postgresql/tools/core/index.js.map +1 -1
  217. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  218. package/dist/adapters/postgresql/tools/core/indexes.js +153 -128
  219. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  220. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  221. package/dist/adapters/postgresql/tools/core/objects.js +186 -161
  222. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  223. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  224. package/dist/adapters/postgresql/tools/core/query.js +37 -25
  225. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  226. package/dist/adapters/postgresql/tools/core/schemas.d.ts +6 -3
  227. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  228. package/dist/adapters/postgresql/tools/core/schemas.js +11 -2
  229. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  230. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  231. package/dist/adapters/postgresql/tools/core/tables.js +156 -129
  232. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  233. package/dist/adapters/postgresql/tools/core/utility.d.ts +26 -0
  234. package/dist/adapters/postgresql/tools/core/utility.d.ts.map +1 -0
  235. package/dist/adapters/postgresql/tools/core/utility.js +174 -0
  236. package/dist/adapters/postgresql/tools/core/utility.js.map +1 -0
  237. package/dist/adapters/postgresql/tools/cron.js +149 -70
  238. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  239. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts +12 -0
  240. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts.map +1 -0
  241. package/dist/adapters/postgresql/tools/introspection/analysis.js +574 -0
  242. package/dist/adapters/postgresql/tools/introspection/analysis.js.map +1 -0
  243. package/dist/adapters/postgresql/tools/introspection/graph.d.ts +55 -0
  244. package/dist/adapters/postgresql/tools/introspection/graph.d.ts.map +1 -0
  245. package/dist/adapters/postgresql/tools/introspection/graph.js +638 -0
  246. package/dist/adapters/postgresql/tools/introspection/graph.js.map +1 -0
  247. package/dist/adapters/postgresql/tools/introspection/index.d.ts +19 -0
  248. package/dist/adapters/postgresql/tools/introspection/index.d.ts.map +1 -0
  249. package/dist/adapters/postgresql/tools/introspection/index.js +36 -0
  250. package/dist/adapters/postgresql/tools/introspection/index.js.map +1 -0
  251. package/dist/adapters/postgresql/tools/introspection/migration.d.ts +15 -0
  252. package/dist/adapters/postgresql/tools/introspection/migration.d.ts.map +1 -0
  253. package/dist/adapters/postgresql/tools/introspection/migration.js +599 -0
  254. package/dist/adapters/postgresql/tools/introspection/migration.js.map +1 -0
  255. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts +20 -0
  256. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts.map +1 -0
  257. package/dist/adapters/postgresql/tools/jsonb/analytics.js +367 -0
  258. package/dist/adapters/postgresql/tools/jsonb/analytics.js.map +1 -0
  259. package/dist/adapters/postgresql/tools/jsonb/index.d.ts +4 -2
  260. package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -1
  261. package/dist/adapters/postgresql/tools/jsonb/index.js +8 -4
  262. package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -1
  263. package/dist/adapters/postgresql/tools/jsonb/read.d.ts +38 -0
  264. package/dist/adapters/postgresql/tools/jsonb/read.d.ts.map +1 -0
  265. package/dist/adapters/postgresql/tools/jsonb/read.js +543 -0
  266. package/dist/adapters/postgresql/tools/jsonb/read.js.map +1 -0
  267. package/dist/adapters/postgresql/tools/jsonb/{advanced.d.ts → transform.d.ts} +1 -13
  268. package/dist/adapters/postgresql/tools/jsonb/transform.d.ts.map +1 -0
  269. package/dist/adapters/postgresql/tools/jsonb/{advanced.js → transform.js} +39 -361
  270. package/dist/adapters/postgresql/tools/jsonb/transform.js.map +1 -0
  271. package/dist/adapters/postgresql/tools/jsonb/write.d.ts +14 -0
  272. package/dist/adapters/postgresql/tools/jsonb/write.d.ts.map +1 -0
  273. package/dist/adapters/postgresql/tools/jsonb/write.js +468 -0
  274. package/dist/adapters/postgresql/tools/jsonb/write.js.map +1 -0
  275. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  276. package/dist/adapters/postgresql/tools/kcache.js +116 -51
  277. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  278. package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -1
  279. package/dist/adapters/postgresql/tools/ltree.js +358 -259
  280. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  281. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts +15 -0
  282. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts.map +1 -0
  283. package/dist/adapters/postgresql/tools/{monitoring.js → monitoring/analysis.js} +37 -361
  284. package/dist/adapters/postgresql/tools/monitoring/analysis.js.map +1 -0
  285. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts +17 -0
  286. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts.map +1 -0
  287. package/dist/adapters/postgresql/tools/monitoring/basic.js +432 -0
  288. package/dist/adapters/postgresql/tools/monitoring/basic.js.map +1 -0
  289. package/dist/adapters/postgresql/tools/monitoring/index.d.ts +16 -0
  290. package/dist/adapters/postgresql/tools/monitoring/index.d.ts.map +1 -0
  291. package/dist/adapters/postgresql/tools/monitoring/index.js +31 -0
  292. package/dist/adapters/postgresql/tools/monitoring/index.js.map +1 -0
  293. package/dist/adapters/postgresql/tools/partitioning/index.d.ts +15 -0
  294. package/dist/adapters/postgresql/tools/partitioning/index.d.ts.map +1 -0
  295. package/dist/adapters/postgresql/tools/partitioning/index.js +23 -0
  296. package/dist/adapters/postgresql/tools/partitioning/index.js.map +1 -0
  297. package/dist/adapters/postgresql/tools/partitioning/info.d.ts +11 -0
  298. package/dist/adapters/postgresql/tools/partitioning/info.d.ts.map +1 -0
  299. package/dist/adapters/postgresql/tools/partitioning/info.js +302 -0
  300. package/dist/adapters/postgresql/tools/partitioning/info.js.map +1 -0
  301. package/dist/adapters/postgresql/tools/partitioning/management.d.ts +28 -0
  302. package/dist/adapters/postgresql/tools/partitioning/management.d.ts.map +1 -0
  303. package/dist/adapters/postgresql/tools/{partitioning.js → partitioning/management.js} +48 -307
  304. package/dist/adapters/postgresql/tools/partitioning/management.js.map +1 -0
  305. package/dist/adapters/postgresql/tools/partman/helpers.d.ts +29 -0
  306. package/dist/adapters/postgresql/tools/partman/helpers.d.ts.map +1 -0
  307. package/dist/adapters/postgresql/tools/partman/helpers.js +59 -0
  308. package/dist/adapters/postgresql/tools/partman/helpers.js.map +1 -0
  309. package/dist/adapters/postgresql/tools/partman/index.d.ts +2 -1
  310. package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -1
  311. package/dist/adapters/postgresql/tools/partman/index.js +4 -2
  312. package/dist/adapters/postgresql/tools/partman/index.js.map +1 -1
  313. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts +20 -0
  314. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts.map +1 -0
  315. package/dist/adapters/postgresql/tools/partman/maintenance.js +496 -0
  316. package/dist/adapters/postgresql/tools/partman/maintenance.js.map +1 -0
  317. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  318. package/dist/adapters/postgresql/tools/partman/management.js +452 -417
  319. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  320. package/dist/adapters/postgresql/tools/partman/operations.d.ts +1 -13
  321. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  322. package/dist/adapters/postgresql/tools/partman/operations.js +173 -654
  323. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  324. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  325. package/dist/adapters/postgresql/tools/performance/analysis.js +79 -45
  326. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  327. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  328. package/dist/adapters/postgresql/tools/performance/monitoring.js +83 -55
  329. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  330. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  331. package/dist/adapters/postgresql/tools/performance/optimization.js +18 -11
  332. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  333. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  334. package/dist/adapters/postgresql/tools/performance/stats.js +441 -286
  335. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  336. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  337. package/dist/adapters/postgresql/tools/pgcrypto.js +67 -79
  338. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  339. package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -1
  340. package/dist/adapters/postgresql/tools/postgis/advanced.js +30 -25
  341. package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -1
  342. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  343. package/dist/adapters/postgresql/tools/postgis/basic.js +137 -100
  344. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  345. package/dist/adapters/postgresql/tools/schema/index.d.ts +16 -0
  346. package/dist/adapters/postgresql/tools/schema/index.d.ts.map +1 -0
  347. package/dist/adapters/postgresql/tools/schema/index.js +32 -0
  348. package/dist/adapters/postgresql/tools/schema/index.js.map +1 -0
  349. package/dist/adapters/postgresql/tools/schema/objects.d.ts +15 -0
  350. package/dist/adapters/postgresql/tools/schema/objects.d.ts.map +1 -0
  351. package/dist/adapters/postgresql/tools/schema/objects.js +378 -0
  352. package/dist/adapters/postgresql/tools/schema/objects.js.map +1 -0
  353. package/dist/adapters/postgresql/tools/schema/views.d.ts +15 -0
  354. package/dist/adapters/postgresql/tools/schema/views.d.ts.map +1 -0
  355. package/dist/adapters/postgresql/tools/{schema.js → schema/views.js} +91 -339
  356. package/dist/adapters/postgresql/tools/schema/views.js.map +1 -0
  357. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  358. package/dist/adapters/postgresql/tools/stats/advanced.js +40 -235
  359. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  360. package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -1
  361. package/dist/adapters/postgresql/tools/stats/basic.js +45 -30
  362. package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -1
  363. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts +33 -0
  364. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts.map +1 -0
  365. package/dist/adapters/postgresql/tools/stats/math-utils.js +225 -0
  366. package/dist/adapters/postgresql/tools/stats/math-utils.js.map +1 -0
  367. package/dist/adapters/postgresql/tools/text/index.d.ts +16 -0
  368. package/dist/adapters/postgresql/tools/text/index.d.ts.map +1 -0
  369. package/dist/adapters/postgresql/tools/text/index.js +33 -0
  370. package/dist/adapters/postgresql/tools/text/index.js.map +1 -0
  371. package/dist/adapters/postgresql/tools/text/matching.d.ts +17 -0
  372. package/dist/adapters/postgresql/tools/text/matching.d.ts.map +1 -0
  373. package/dist/adapters/postgresql/tools/text/matching.js +565 -0
  374. package/dist/adapters/postgresql/tools/text/matching.js.map +1 -0
  375. package/dist/adapters/postgresql/tools/text/search.d.ts +17 -0
  376. package/dist/adapters/postgresql/tools/text/search.d.ts.map +1 -0
  377. package/dist/adapters/postgresql/tools/text/search.js +653 -0
  378. package/dist/adapters/postgresql/tools/text/search.js.map +1 -0
  379. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  380. package/dist/adapters/postgresql/tools/transactions.js +11 -27
  381. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  382. package/dist/adapters/postgresql/tools/vector/{basic.d.ts → data.d.ts} +10 -8
  383. package/dist/adapters/postgresql/tools/vector/data.d.ts.map +1 -0
  384. package/dist/adapters/postgresql/tools/vector/data.js +540 -0
  385. package/dist/adapters/postgresql/tools/vector/data.js.map +1 -0
  386. package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -1
  387. package/dist/adapters/postgresql/tools/vector/index.js +6 -2
  388. package/dist/adapters/postgresql/tools/vector/index.js.map +1 -1
  389. package/dist/adapters/postgresql/tools/vector/management.d.ts +11 -0
  390. package/dist/adapters/postgresql/tools/vector/management.d.ts.map +1 -0
  391. package/dist/adapters/postgresql/tools/vector/management.js +425 -0
  392. package/dist/adapters/postgresql/tools/vector/management.js.map +1 -0
  393. package/dist/adapters/postgresql/tools/vector/query.d.ts +14 -0
  394. package/dist/adapters/postgresql/tools/vector/query.d.ts.map +1 -0
  395. package/dist/adapters/postgresql/tools/vector/query.js +767 -0
  396. package/dist/adapters/postgresql/tools/vector/query.js.map +1 -0
  397. package/dist/adapters/postgresql/tools/vector/{advanced.d.ts → search-advanced.d.ts} +4 -5
  398. package/dist/adapters/postgresql/tools/vector/search-advanced.d.ts.map +1 -0
  399. package/dist/adapters/postgresql/tools/vector/search-advanced.js +626 -0
  400. package/dist/adapters/postgresql/tools/vector/search-advanced.js.map +1 -0
  401. package/dist/auth/auth-context.d.ts +28 -0
  402. package/dist/auth/auth-context.d.ts.map +1 -0
  403. package/dist/auth/auth-context.js +37 -0
  404. package/dist/auth/auth-context.js.map +1 -0
  405. package/dist/auth/scope-map.d.ts +20 -0
  406. package/dist/auth/scope-map.d.ts.map +1 -0
  407. package/dist/auth/scope-map.js +40 -0
  408. package/dist/auth/scope-map.js.map +1 -0
  409. package/dist/auth/scopes.d.ts.map +1 -1
  410. package/dist/auth/scopes.js +2 -0
  411. package/dist/auth/scopes.js.map +1 -1
  412. package/dist/cli/args.d.ts +3 -2
  413. package/dist/cli/args.d.ts.map +1 -1
  414. package/dist/cli/args.js +4 -3
  415. package/dist/cli/args.js.map +1 -1
  416. package/dist/cli.js +11 -5
  417. package/dist/cli.js.map +1 -1
  418. package/dist/codemode/api/aliases.d.ts +14 -0
  419. package/dist/codemode/api/aliases.d.ts.map +1 -0
  420. package/dist/codemode/api/aliases.js +503 -0
  421. package/dist/codemode/api/aliases.js.map +1 -0
  422. package/dist/codemode/api/group-api.d.ts +23 -0
  423. package/dist/codemode/api/group-api.d.ts.map +1 -0
  424. package/dist/codemode/api/group-api.js +179 -0
  425. package/dist/codemode/api/group-api.js.map +1 -0
  426. package/dist/codemode/{api.d.ts → api/index.d.ts} +5 -4
  427. package/dist/codemode/api/index.d.ts.map +1 -0
  428. package/dist/codemode/api/index.js +192 -0
  429. package/dist/codemode/api/index.js.map +1 -0
  430. package/dist/codemode/api/maps.d.ts +47 -0
  431. package/dist/codemode/api/maps.d.ts.map +1 -0
  432. package/dist/codemode/api/maps.js +523 -0
  433. package/dist/codemode/api/maps.js.map +1 -0
  434. package/dist/codemode/api/normalize.d.ts +13 -0
  435. package/dist/codemode/api/normalize.d.ts.map +1 -0
  436. package/dist/codemode/api/normalize.js +120 -0
  437. package/dist/codemode/api/normalize.js.map +1 -0
  438. package/dist/codemode/index.d.ts +1 -3
  439. package/dist/codemode/index.d.ts.map +1 -1
  440. package/dist/codemode/index.js +1 -5
  441. package/dist/codemode/index.js.map +1 -1
  442. package/dist/codemode/sandbox.d.ts +14 -1
  443. package/dist/codemode/sandbox.d.ts.map +1 -1
  444. package/dist/codemode/sandbox.js +66 -44
  445. package/dist/codemode/sandbox.js.map +1 -1
  446. package/dist/codemode/types.d.ts.map +1 -1
  447. package/dist/codemode/types.js +3 -0
  448. package/dist/codemode/types.js.map +1 -1
  449. package/dist/constants/ServerInstructions.d.ts +5 -1
  450. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  451. package/dist/constants/ServerInstructions.js +91 -43
  452. package/dist/constants/ServerInstructions.js.map +1 -1
  453. package/dist/filtering/ToolConstants.d.ts +22 -19
  454. package/dist/filtering/ToolConstants.d.ts.map +1 -1
  455. package/dist/filtering/ToolConstants.js +48 -37
  456. package/dist/filtering/ToolConstants.js.map +1 -1
  457. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  458. package/dist/filtering/ToolFilter.js +10 -13
  459. package/dist/filtering/ToolFilter.js.map +1 -1
  460. package/dist/pool/ConnectionPool.js +1 -1
  461. package/dist/pool/ConnectionPool.js.map +1 -1
  462. package/dist/server/McpServer.d.ts +1 -1
  463. package/dist/server/McpServer.d.ts.map +1 -1
  464. package/dist/server/McpServer.js +1 -2
  465. package/dist/server/McpServer.js.map +1 -1
  466. package/dist/transports/http.d.ts +44 -10
  467. package/dist/transports/http.d.ts.map +1 -1
  468. package/dist/transports/http.js +327 -40
  469. package/dist/transports/http.js.map +1 -1
  470. package/dist/types/filtering.d.ts +2 -2
  471. package/dist/types/filtering.d.ts.map +1 -1
  472. package/dist/utils/icons.d.ts.map +1 -1
  473. package/dist/utils/icons.js +5 -0
  474. package/dist/utils/icons.js.map +1 -1
  475. package/dist/utils/logger.d.ts +6 -6
  476. package/dist/utils/logger.d.ts.map +1 -1
  477. package/dist/utils/logger.js +18 -15
  478. package/dist/utils/logger.js.map +1 -1
  479. package/dist/utils/progress-utils.d.ts +2 -2
  480. package/dist/utils/progress-utils.d.ts.map +1 -1
  481. package/dist/utils/progress-utils.js +2 -3
  482. package/dist/utils/progress-utils.js.map +1 -1
  483. package/dist/utils/version.d.ts +9 -0
  484. package/dist/utils/version.d.ts.map +1 -0
  485. package/dist/utils/version.js +12 -0
  486. package/dist/utils/version.js.map +1 -0
  487. package/dist/utils/where-clause.d.ts +4 -0
  488. package/dist/utils/where-clause.d.ts.map +1 -1
  489. package/dist/utils/where-clause.js +40 -0
  490. package/dist/utils/where-clause.js.map +1 -1
  491. package/package.json +19 -14
  492. package/dist/adapters/postgresql/schemas/core.d.ts.map +0 -1
  493. package/dist/adapters/postgresql/schemas/core.js.map +0 -1
  494. package/dist/adapters/postgresql/schemas/extensions.d.ts +0 -833
  495. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +0 -1
  496. package/dist/adapters/postgresql/schemas/extensions.js +0 -1170
  497. package/dist/adapters/postgresql/schemas/extensions.js.map +0 -1
  498. package/dist/adapters/postgresql/schemas/jsonb.d.ts +0 -533
  499. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +0 -1
  500. package/dist/adapters/postgresql/schemas/jsonb.js +0 -790
  501. package/dist/adapters/postgresql/schemas/jsonb.js.map +0 -1
  502. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +0 -1
  503. package/dist/adapters/postgresql/schemas/postgis.js.map +0 -1
  504. package/dist/adapters/postgresql/schemas/stats.d.ts.map +0 -1
  505. package/dist/adapters/postgresql/schemas/stats.js.map +0 -1
  506. package/dist/adapters/postgresql/tools/citext.d.ts +0 -18
  507. package/dist/adapters/postgresql/tools/citext.d.ts.map +0 -1
  508. package/dist/adapters/postgresql/tools/citext.js.map +0 -1
  509. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +0 -1
  510. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +0 -1
  511. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +0 -20
  512. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +0 -1
  513. package/dist/adapters/postgresql/tools/jsonb/basic.js +0 -915
  514. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +0 -1
  515. package/dist/adapters/postgresql/tools/monitoring.d.ts +0 -13
  516. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +0 -1
  517. package/dist/adapters/postgresql/tools/monitoring.js.map +0 -1
  518. package/dist/adapters/postgresql/tools/partitioning.d.ts +0 -13
  519. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +0 -1
  520. package/dist/adapters/postgresql/tools/partitioning.js.map +0 -1
  521. package/dist/adapters/postgresql/tools/schema.d.ts +0 -13
  522. package/dist/adapters/postgresql/tools/schema.d.ts.map +0 -1
  523. package/dist/adapters/postgresql/tools/schema.js.map +0 -1
  524. package/dist/adapters/postgresql/tools/text.d.ts +0 -13
  525. package/dist/adapters/postgresql/tools/text.d.ts.map +0 -1
  526. package/dist/adapters/postgresql/tools/text.js +0 -903
  527. package/dist/adapters/postgresql/tools/text.js.map +0 -1
  528. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +0 -1
  529. package/dist/adapters/postgresql/tools/vector/advanced.js +0 -958
  530. package/dist/adapters/postgresql/tools/vector/advanced.js.map +0 -1
  531. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +0 -1
  532. package/dist/adapters/postgresql/tools/vector/basic.js +0 -1165
  533. package/dist/adapters/postgresql/tools/vector/basic.js.map +0 -1
  534. package/dist/codemode/api.d.ts.map +0 -1
  535. package/dist/codemode/api.js +0 -1510
  536. package/dist/codemode/api.js.map +0 -1
  537. package/dist/codemode/sandbox-factory.d.ts +0 -72
  538. package/dist/codemode/sandbox-factory.d.ts.map +0 -1
  539. package/dist/codemode/sandbox-factory.js +0 -88
  540. package/dist/codemode/sandbox-factory.js.map +0 -1
  541. package/dist/codemode/worker-sandbox.d.ts +0 -82
  542. package/dist/codemode/worker-sandbox.d.ts.map +0 -1
  543. package/dist/codemode/worker-sandbox.js +0 -244
  544. package/dist/codemode/worker-sandbox.js.map +0 -1
  545. package/dist/codemode/worker-script.d.ts +0 -8
  546. package/dist/codemode/worker-script.d.ts.map +0 -1
  547. package/dist/codemode/worker-script.js +0 -113
  548. package/dist/codemode/worker-script.js.map +0 -1
@@ -7,12 +7,13 @@ import { z } from "zod";
7
7
  import { readOnly } from "../../../../utils/annotations.js";
8
8
  import { getToolIcons } from "../../../../utils/icons.js";
9
9
  import { formatPostgresError } from "../core/error-helpers.js";
10
+ import { sanitizeWhereClause } from "../../../../utils/where-clause.js";
10
11
  import { sanitizeIdentifier, sanitizeTableName, } from "../../../../utils/identifiers.js";
11
- import { JsonbValidatePathOutputSchema, JsonbMergeOutputSchema, JsonbNormalizeOutputSchema, JsonbDiffOutputSchema, JsonbIndexSuggestOutputSchema, JsonbSecurityScanOutputSchema, JsonbStatsOutputSchema,
12
+ import { JsonbValidatePathOutputSchema, JsonbMergeOutputSchema, JsonbNormalizeOutputSchema, JsonbDiffOutputSchema,
12
13
  // Base schemas for MCP visibility (Split Schema pattern)
13
- JsonbNormalizeSchemaBase, JsonbStatsSchemaBase, JsonbIndexSuggestSchemaBase, JsonbSecurityScanSchemaBase,
14
+ JsonbNormalizeSchemaBase,
14
15
  // Full schemas (with preprocess - for handler parsing)
15
- JsonbNormalizeSchema, JsonbStatsSchema, JsonbIndexSuggestSchema, JsonbSecurityScanSchema, } from "../../schemas/index.js";
16
+ JsonbNormalizeSchema, } from "../../schemas/index.js";
16
17
  /**
17
18
  * Convert value to a valid JSON string for PostgreSQL's ::jsonb cast
18
19
  * Always uses JSON.stringify to ensure proper encoding
@@ -29,7 +30,7 @@ export function createJsonbValidatePathTool(adapter) {
29
30
  description: "Validate a JSONPath expression and test it against sample data. Supports vars for parameterized paths.",
30
31
  group: "jsonb",
31
32
  inputSchema: z.object({
32
- path: z.string().describe("JSONPath expression to validate"),
33
+ path: z.string().optional().describe("JSONPath expression to validate"),
33
34
  testValue: z
34
35
  .unknown()
35
36
  .optional()
@@ -45,6 +46,14 @@ export function createJsonbValidatePathTool(adapter) {
45
46
  handler: async (params, _context) => {
46
47
  const parsed = params;
47
48
  try {
49
+ if (!parsed.path ||
50
+ typeof parsed.path !== "string" ||
51
+ parsed.path.trim() === "") {
52
+ return {
53
+ success: false,
54
+ error: "Validation error: path is required and must be a non-empty string",
55
+ };
56
+ }
48
57
  if (parsed.testValue !== undefined) {
49
58
  const varsJson = parsed.vars ? JSON.stringify(parsed.vars) : "{}";
50
59
  const sql = `SELECT jsonb_path_query($1::jsonb, $2::jsonpath, $3::jsonb) as result`;
@@ -230,7 +239,9 @@ export function createJsonbNormalizeTool(adapter) {
230
239
  if (!table || !column) {
231
240
  return { success: false, error: "table and column are required" };
232
241
  }
233
- const whereClause = parsed.where ? ` WHERE ${parsed.where}` : "";
242
+ const whereClause = parsed.where
243
+ ? ` WHERE ${sanitizeWhereClause(parsed.where)}`
244
+ : "";
234
245
  const mode = parsed.mode ?? "keys";
235
246
  // Validate mode parameter
236
247
  const validModes = ["keys", "array", "pairs", "flatten"];
@@ -284,22 +295,22 @@ export function createJsonbNormalizeTool(adapter) {
284
295
  }
285
296
  else if (mode === "flatten") {
286
297
  sql = `
287
- WITH RECURSIVE
298
+ WITH RECURSIVE
288
299
  source_rows AS (
289
300
  SELECT ${rowIdExpr} as ${rowIdAlias}, ${columnName} as doc
290
301
  FROM ${tableName}${whereClause}
291
302
  ),
292
303
  flattened AS (
293
- SELECT
304
+ SELECT
294
305
  sr.${rowIdAlias},
295
306
  kv.key as path,
296
307
  kv.value,
297
308
  jsonb_typeof(kv.value) as value_type
298
309
  FROM source_rows sr, jsonb_each(sr.doc) kv
299
-
310
+
300
311
  UNION ALL
301
-
302
- SELECT
312
+
313
+ SELECT
303
314
  f.${rowIdAlias},
304
315
  f.path || '.' || kv.key,
305
316
  kv.value,
@@ -307,7 +318,7 @@ export function createJsonbNormalizeTool(adapter) {
307
318
  FROM flattened f, jsonb_each(f.value) kv
308
319
  WHERE jsonb_typeof(f.value) = 'object'
309
320
  )
310
- SELECT ${rowIdAlias}, path as key, value, value_type FROM flattened
321
+ SELECT ${rowIdAlias}, path as key, value, value_type FROM flattened
311
322
  WHERE value_type != 'object' OR value = '{}'::jsonb
312
323
  ORDER BY ${rowIdAlias}, path
313
324
  `;
@@ -363,6 +374,18 @@ export function createJsonbNormalizeTool(adapter) {
363
374
  * Note: Uses jsonb_each() which requires object inputs, not arrays or primitives
364
375
  */
365
376
  // Schema for pg_jsonb_diff - requires objects (not arrays or primitives)
377
+ // Base schema for MCP visibility (optional params to avoid MCP framework Zod rejection)
378
+ const JsonbDiffSchemaBase = z.object({
379
+ doc1: z
380
+ .record(z.string(), z.unknown())
381
+ .optional()
382
+ .describe("First JSONB object to compare"),
383
+ doc2: z
384
+ .record(z.string(), z.unknown())
385
+ .optional()
386
+ .describe("Second JSONB object to compare"),
387
+ });
388
+ // Internal schema for handler validation (required fields)
366
389
  const JsonbDiffSchema = z.object({
367
390
  doc1: z
368
391
  .record(z.string(), z.unknown())
@@ -376,7 +399,7 @@ export function createJsonbDiffTool(adapter) {
376
399
  name: "pg_jsonb_diff",
377
400
  description: "Compare two JSONB objects. Returns top-level key differences only (shallow comparison, not recursive).",
378
401
  group: "jsonb",
379
- inputSchema: JsonbDiffSchema,
402
+ inputSchema: JsonbDiffSchemaBase,
380
403
  outputSchema: JsonbDiffOutputSchema,
381
404
  annotations: readOnly("JSONB Diff"),
382
405
  icons: getToolIcons("jsonb", readOnly("JSONB Diff")),
@@ -393,14 +416,14 @@ export function createJsonbDiffTool(adapter) {
393
416
  };
394
417
  }
395
418
  const sql = `
396
- WITH
419
+ WITH
397
420
  j1 AS (SELECT key, value FROM jsonb_each($1::jsonb)),
398
421
  j2 AS (SELECT key, value FROM jsonb_each($2::jsonb))
399
- SELECT
422
+ SELECT
400
423
  COALESCE(j1.key, j2.key) as key,
401
424
  j1.value as value1,
402
425
  j2.value as value2,
403
- CASE
426
+ CASE
404
427
  WHEN j1.key IS NULL THEN 'added'
405
428
  WHEN j2.key IS NULL THEN 'removed'
406
429
  WHEN j1.value = j2.value THEN 'unchanged'
@@ -431,349 +454,4 @@ export function createJsonbDiffTool(adapter) {
431
454
  },
432
455
  };
433
456
  }
434
- /**
435
- * Suggest JSONB indexes based on query patterns
436
- */
437
- export function createJsonbIndexSuggestTool(adapter) {
438
- return {
439
- name: "pg_jsonb_index_suggest",
440
- description: "Analyze JSONB column and suggest indexes. Only works on object-type JSONB (not arrays).",
441
- group: "jsonb",
442
- inputSchema: JsonbIndexSuggestSchemaBase,
443
- outputSchema: JsonbIndexSuggestOutputSchema,
444
- annotations: readOnly("JSONB Index Suggest"),
445
- icons: getToolIcons("jsonb", readOnly("JSONB Index Suggest")),
446
- handler: async (params, _context) => {
447
- try {
448
- // Parse with preprocess schema to resolve aliases (tableName→table, col→column, filter→where)
449
- const parsed = JsonbIndexSuggestSchema.parse(params);
450
- const table = parsed.table;
451
- const column = parsed.column;
452
- if (!table || !column) {
453
- return { success: false, error: "table and column are required" };
454
- }
455
- const sample = parsed.sampleSize ?? 1000;
456
- const whereClause = parsed.where ? ` WHERE ${parsed.where}` : "";
457
- // Validate schema existence for non-public schemas
458
- const schemaName = parsed.schema ?? "public";
459
- if (schemaName !== "public") {
460
- const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schemaName]);
461
- if (!schemaResult.rows || schemaResult.rows.length === 0) {
462
- return {
463
- success: false,
464
- error: `Schema '${schemaName}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`,
465
- };
466
- }
467
- }
468
- const tableName = sanitizeTableName(table, schemaName);
469
- const columnName = sanitizeIdentifier(column);
470
- const keySql = `
471
- SELECT key, COUNT(*) as frequency,
472
- jsonb_typeof(value) as value_type
473
- FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
474
- jsonb_each(${columnName})
475
- GROUP BY key, jsonb_typeof(value)
476
- ORDER BY frequency DESC
477
- LIMIT 20
478
- `;
479
- const keyResult = await adapter.executeQuery(keySql);
480
- const indexSql = `
481
- SELECT indexname, indexdef
482
- FROM pg_indexes
483
- WHERE tablename = $1
484
- AND indexdef LIKE '%' || $2 || '%'
485
- `;
486
- const indexResult = await adapter.executeQuery(indexSql, [
487
- parsed.table,
488
- parsed.column,
489
- ]);
490
- const recommendations = [];
491
- const keys = (keyResult.rows ?? []).map((row) => ({
492
- key: row["key"],
493
- frequency: Number(row["frequency"]),
494
- value_type: row["value_type"],
495
- }));
496
- if ((indexResult.rows?.length ?? 0) === 0 && keys.length > 0) {
497
- recommendations.push(`CREATE INDEX ON ${tableName} USING GIN (${columnName})`);
498
- }
499
- for (const keyInfo of keys.slice(0, 5)) {
500
- if (keyInfo.frequency > sample * 0.5) {
501
- recommendations.push(`CREATE INDEX ON ${tableName} ((${columnName} ->> '${keyInfo.key.replace(/'/g, "''")}'))`);
502
- }
503
- }
504
- const response = {
505
- keyDistribution: keys,
506
- existingIndexes: indexResult.rows,
507
- recommendations,
508
- };
509
- if (recommendations.length === 0) {
510
- if ((indexResult.rows?.length ?? 0) > 0) {
511
- response.hint =
512
- "No new recommendations - existing indexes already cover this column";
513
- }
514
- else if (keys.length === 0) {
515
- response.hint =
516
- "No recommendations - table is empty or column has no keys to analyze";
517
- }
518
- else {
519
- response.hint =
520
- "No recommendations - no keys appeared in >50% of sampled rows";
521
- }
522
- }
523
- return response;
524
- }
525
- catch (error) {
526
- if (error instanceof Error &&
527
- (error.message.includes("function jsonb_each") ||
528
- error.message.includes("cannot call jsonb_each"))) {
529
- return {
530
- success: false,
531
- error: `pg_jsonb_index_suggest requires JSONB objects (not arrays). Column may not be JSONB type or contains arrays.`,
532
- };
533
- }
534
- return {
535
- success: false,
536
- error: formatPostgresError(error, {
537
- tool: "pg_jsonb_index_suggest",
538
- }),
539
- };
540
- }
541
- },
542
- };
543
- }
544
- /**
545
- * Scan JSONB for security issues
546
- */
547
- export function createJsonbSecurityScanTool(adapter) {
548
- return {
549
- name: "pg_jsonb_security_scan",
550
- description: "Scan JSONB for security issues. Only works on object-type JSONB (not arrays). Use larger sampleSize for thorough scans.",
551
- group: "jsonb",
552
- inputSchema: JsonbSecurityScanSchemaBase,
553
- outputSchema: JsonbSecurityScanOutputSchema,
554
- annotations: readOnly("JSONB Security Scan"),
555
- icons: getToolIcons("jsonb", readOnly("JSONB Security Scan")),
556
- handler: async (params, _context) => {
557
- try {
558
- // Parse with preprocess schema to resolve aliases (tableName→table, col→column, filter→where)
559
- const parsed = JsonbSecurityScanSchema.parse(params);
560
- const table = parsed.table;
561
- const column = parsed.column;
562
- if (!table || !column) {
563
- return { success: false, error: "table and column are required" };
564
- }
565
- const sample = parsed.sampleSize ?? 100;
566
- const whereClause = parsed.where ? ` WHERE ${parsed.where}` : "";
567
- const issues = [];
568
- // Validate schema existence for non-public schemas
569
- const schemaName = parsed.schema ?? "public";
570
- if (schemaName !== "public") {
571
- const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schemaName]);
572
- if (!schemaResult.rows || schemaResult.rows.length === 0) {
573
- return {
574
- success: false,
575
- error: `Schema '${schemaName}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`,
576
- };
577
- }
578
- }
579
- const tableName = sanitizeTableName(table, schemaName);
580
- const columnName = sanitizeIdentifier(column);
581
- // Count actual rows scanned
582
- const countSql = `SELECT COUNT(*) as count FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t`;
583
- const countResult = await adapter.executeQuery(countSql);
584
- const actualRowsScanned = Number(countResult.rows?.[0]?.["count"] ?? 0);
585
- const sensitiveKeysSql = `
586
- SELECT key, COUNT(*) as count
587
- FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
588
- jsonb_each_text(${columnName})
589
- WHERE lower(key) IN ('password', 'secret', 'token', 'api_key', 'apikey',
590
- 'auth', 'credential', 'ssn', 'credit_card', 'cvv')
591
- GROUP BY key
592
- `;
593
- const sensitiveResult = await adapter.executeQuery(sensitiveKeysSql);
594
- for (const row of (sensitiveResult.rows ?? [])) {
595
- issues.push({
596
- type: "sensitive_key",
597
- key: row.key,
598
- count: Number(row.count),
599
- });
600
- }
601
- const injectionSql = `
602
- SELECT key, COUNT(*) as count
603
- FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
604
- jsonb_each_text(${columnName})
605
- WHERE value ~* '(\\bSELECT\\s+.+\\bFROM\\b|\\bINSERT\\s+INTO\\b|\\bUPDATE\\s+.+\\bSET\\b|\\bDELETE\\s+FROM\\b|\\bDROP\\s+(TABLE|DATABASE|INDEX)\\b|\\bUNION\\s+(ALL\\s+)?SELECT\\b|--\\s*$|;\\s*(SELECT|INSERT|UPDATE|DELETE))'
606
- GROUP BY key
607
- `;
608
- const injectionResult = await adapter.executeQuery(injectionSql);
609
- for (const row of (injectionResult.rows ?? [])) {
610
- issues.push({
611
- type: "sql_injection_pattern",
612
- key: row.key,
613
- count: Number(row.count),
614
- });
615
- }
616
- // XSS pattern detection
617
- const xssSql = `
618
- SELECT key, COUNT(*) as count
619
- FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
620
- jsonb_each_text(${columnName})
621
- WHERE value ~* '(<script|javascript:|on(click|load|error|mouseover)\\s*=|<iframe|<object|<embed|<svg[^>]+on|<img[^>]+onerror)'
622
- GROUP BY key
623
- `;
624
- const xssResult = await adapter.executeQuery(xssSql);
625
- for (const row of (xssResult.rows ?? [])) {
626
- issues.push({
627
- type: "xss_pattern",
628
- key: row.key,
629
- count: Number(row.count),
630
- });
631
- }
632
- return {
633
- scannedRows: actualRowsScanned,
634
- issues,
635
- riskLevel: issues.length === 0 ? "low" : issues.length < 3 ? "medium" : "high",
636
- };
637
- }
638
- catch (error) {
639
- if (error instanceof Error &&
640
- (error.message.includes("function jsonb_each") ||
641
- error.message.includes("cannot call jsonb_each"))) {
642
- return {
643
- success: false,
644
- error: `pg_jsonb_security_scan requires JSONB objects. Column may contain arrays or non-JSONB data.`,
645
- };
646
- }
647
- return {
648
- success: false,
649
- error: formatPostgresError(error, {
650
- tool: "pg_jsonb_security_scan",
651
- }),
652
- };
653
- }
654
- },
655
- };
656
- }
657
- /**
658
- * Get JSONB column statistics
659
- */
660
- export function createJsonbStatsTool(adapter) {
661
- return {
662
- name: "pg_jsonb_stats",
663
- description: "Get statistics about JSONB column usage. Note: topKeys only applies to object-type JSONB, not arrays.",
664
- group: "jsonb",
665
- inputSchema: JsonbStatsSchemaBase,
666
- outputSchema: JsonbStatsOutputSchema,
667
- annotations: readOnly("JSONB Stats"),
668
- icons: getToolIcons("jsonb", readOnly("JSONB Stats")),
669
- handler: async (params, _context) => {
670
- try {
671
- // Parse with preprocess schema to resolve aliases (tableName→table, col→column, filter→where)
672
- const parsed = JsonbStatsSchema.parse(params);
673
- const table = parsed.table;
674
- const column = parsed.column;
675
- if (!table || !column) {
676
- return { success: false, error: "table and column are required" };
677
- }
678
- const sample = parsed.sampleSize ?? 1000;
679
- const whereClause = parsed.where ? ` WHERE ${parsed.where}` : "";
680
- // Validate schema existence for non-public schemas
681
- const schemaName = parsed.schema ?? "public";
682
- if (schemaName !== "public") {
683
- const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schemaName]);
684
- if (!schemaResult.rows || schemaResult.rows.length === 0) {
685
- return {
686
- success: false,
687
- error: `Schema '${schemaName}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`,
688
- };
689
- }
690
- }
691
- const tableName = sanitizeTableName(table, schemaName);
692
- const columnName = sanitizeIdentifier(column);
693
- const basicSql = `
694
- SELECT
695
- COUNT(*) as total_rows,
696
- COUNT(${columnName}) as non_null_count,
697
- AVG(length(${columnName}::text))::int as avg_size_bytes,
698
- MAX(length(${columnName}::text)) as max_size_bytes
699
- FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t
700
- `;
701
- const basicResult = await adapter.executeQuery(basicSql);
702
- const basics = basicResult.rows?.[0];
703
- const basicsNormalized = basics
704
- ? {
705
- total_rows: Number(basics["total_rows"]),
706
- non_null_count: Number(basics["non_null_count"]),
707
- avg_size_bytes: Number(basics["avg_size_bytes"]),
708
- max_size_bytes: Number(basics["max_size_bytes"]),
709
- }
710
- : undefined;
711
- const keyLimit = parsed.topKeysLimit ?? 20;
712
- const keySql = `
713
- SELECT key, COUNT(*) as frequency
714
- FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
715
- jsonb_object_keys(${columnName}) key
716
- GROUP BY key
717
- ORDER BY frequency DESC
718
- LIMIT ${String(keyLimit)}
719
- `;
720
- let topKeys = [];
721
- try {
722
- const keyResult = await adapter.executeQuery(keySql);
723
- topKeys = (keyResult.rows ?? []).map((row) => ({
724
- key: row["key"],
725
- frequency: Number(row["frequency"]),
726
- }));
727
- }
728
- catch (error) {
729
- // Gracefully handle array columns (jsonb_object_keys fails on arrays)
730
- if (error instanceof Error &&
731
- error.message.includes("cannot call jsonb_object_keys")) {
732
- // Leave topKeys empty for array columns - this is valid
733
- }
734
- else {
735
- throw error; // Re-throw to be caught by outer catch
736
- }
737
- }
738
- const typeSql = `
739
- SELECT jsonb_typeof(${columnName}) as type, COUNT(*) as count
740
- FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t
741
- GROUP BY jsonb_typeof(${columnName})
742
- `;
743
- const typeResult = await adapter.executeQuery(typeSql);
744
- const typeDistribution = (typeResult.rows ?? []).map((row) => ({
745
- type: row["type"],
746
- count: Number(row["count"]),
747
- }));
748
- const sqlNullCount = typeDistribution.find((t) => t.type === null)?.count ?? 0;
749
- const hasNullColumns = sqlNullCount > 0;
750
- const isArrayColumn = typeDistribution.some((t) => t.type === "array");
751
- let hint;
752
- if (hasNullColumns) {
753
- hint =
754
- "typeDistribution null type represents SQL NULL columns, not JSON null values";
755
- }
756
- else if (topKeys.length === 0 && isArrayColumn) {
757
- hint =
758
- 'topKeys empty for array columns - use pg_jsonb_normalize mode: "array" to analyze elements';
759
- }
760
- return {
761
- basics: basicsNormalized,
762
- topKeys,
763
- typeDistribution,
764
- sqlNullCount,
765
- hint,
766
- };
767
- }
768
- catch (error) {
769
- return {
770
- success: false,
771
- error: formatPostgresError(error, {
772
- tool: "pg_jsonb_stats",
773
- }),
774
- };
775
- }
776
- },
777
- };
778
- }
779
- //# sourceMappingURL=advanced.js.map
457
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * PostgreSQL JSONB Tools - Write Operations
3
+ *
4
+ * Mutation tools: set, insert, delete, object, array, stripNulls.
5
+ */
6
+ import type { PostgresAdapter } from "../../PostgresAdapter.js";
7
+ import type { ToolDefinition } from "../../../../types/index.js";
8
+ export declare function createJsonbSetTool(adapter: PostgresAdapter): ToolDefinition;
9
+ export declare function createJsonbInsertTool(adapter: PostgresAdapter): ToolDefinition;
10
+ export declare function createJsonbDeleteTool(adapter: PostgresAdapter): ToolDefinition;
11
+ export declare function createJsonbObjectTool(adapter: PostgresAdapter): ToolDefinition;
12
+ export declare function createJsonbArrayTool(adapter: PostgresAdapter): ToolDefinition;
13
+ export declare function createJsonbStripNullsTool(adapter: PostgresAdapter): ToolDefinition;
14
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AA0BpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAiH3E;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CA4HhB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CA0FhB;AAwBD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CA8ChB;AAWD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CA4C7E;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,GACvB,cAAc,CA+DhB"}