@neverinfamous/postgres-mcp 2.0.0 → 2.2.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 (518) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +119 -46
  3. package/dist/__tests__/benchmarks/codemode.bench.js +3 -3
  4. package/dist/__tests__/benchmarks/codemode.bench.js.map +1 -1
  5. package/dist/__tests__/benchmarks/connection-pool.bench.js +3 -3
  6. package/dist/__tests__/benchmarks/connection-pool.bench.js.map +1 -1
  7. package/dist/__tests__/benchmarks/introspection-migration.bench.d.ts +11 -0
  8. package/dist/__tests__/benchmarks/introspection-migration.bench.d.ts.map +1 -0
  9. package/dist/__tests__/benchmarks/introspection-migration.bench.js +143 -0
  10. package/dist/__tests__/benchmarks/introspection-migration.bench.js.map +1 -0
  11. package/dist/__tests__/benchmarks/resource-prompts.bench.js +0 -64
  12. package/dist/__tests__/benchmarks/resource-prompts.bench.js.map +1 -1
  13. package/dist/__tests__/benchmarks/schema-parsing.bench.js +5 -5
  14. package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -1
  15. package/dist/__tests__/benchmarks/tool-filtering.bench.js +17 -8
  16. package/dist/__tests__/benchmarks/tool-filtering.bench.js.map +1 -1
  17. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  18. package/dist/__tests__/mocks/adapter.js +2 -1
  19. package/dist/__tests__/mocks/adapter.js.map +1 -1
  20. package/dist/adapters/DatabaseAdapter.d.ts +6 -5
  21. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  22. package/dist/adapters/DatabaseAdapter.js +11 -20
  23. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  24. package/dist/adapters/postgresql/PostgresAdapter.d.ts +5 -26
  25. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  26. package/dist/adapters/postgresql/PostgresAdapter.js +31 -526
  27. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  28. package/dist/adapters/postgresql/prompts/index.js +1 -1
  29. package/dist/adapters/postgresql/prompts/index.js.map +1 -1
  30. package/dist/adapters/postgresql/resources/index.d.ts +1 -1
  31. package/dist/adapters/postgresql/resources/index.js +3 -3
  32. package/dist/adapters/postgresql/resources/index.js.map +1 -1
  33. package/dist/adapters/postgresql/schema-operations.d.ts +71 -0
  34. package/dist/adapters/postgresql/schema-operations.d.ts.map +1 -0
  35. package/dist/adapters/postgresql/schema-operations.js +561 -0
  36. package/dist/adapters/postgresql/schema-operations.js.map +1 -0
  37. package/dist/adapters/postgresql/schemas/admin.d.ts +4 -4
  38. package/dist/adapters/postgresql/schemas/admin.js +4 -4
  39. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  40. package/dist/adapters/postgresql/schemas/backup.d.ts +2 -2
  41. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  42. package/dist/adapters/postgresql/schemas/backup.js +1 -3
  43. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  44. package/dist/adapters/postgresql/schemas/core/index.d.ts +6 -0
  45. package/dist/adapters/postgresql/schemas/core/index.d.ts.map +1 -0
  46. package/dist/adapters/postgresql/schemas/core/index.js +6 -0
  47. package/dist/adapters/postgresql/schemas/core/index.js.map +1 -0
  48. package/dist/adapters/postgresql/schemas/{core.d.ts → core/queries.d.ts} +16 -171
  49. package/dist/adapters/postgresql/schemas/core/queries.d.ts.map +1 -0
  50. package/dist/adapters/postgresql/schemas/{core.js → core/queries.js} +5 -213
  51. package/dist/adapters/postgresql/schemas/core/queries.js.map +1 -0
  52. package/dist/adapters/postgresql/schemas/core/transactions.d.ts +149 -0
  53. package/dist/adapters/postgresql/schemas/core/transactions.d.ts.map +1 -0
  54. package/dist/adapters/postgresql/schemas/core/transactions.js +239 -0
  55. package/dist/adapters/postgresql/schemas/core/transactions.js.map +1 -0
  56. package/dist/adapters/postgresql/schemas/cron.d.ts +12 -12
  57. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  58. package/dist/adapters/postgresql/schemas/cron.js +38 -10
  59. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  60. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts +222 -0
  61. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts.map +1 -0
  62. package/dist/adapters/postgresql/schemas/extensions/citext.js +306 -0
  63. package/dist/adapters/postgresql/schemas/extensions/citext.js.map +1 -0
  64. package/dist/adapters/postgresql/schemas/extensions/index.d.ts +15 -0
  65. package/dist/adapters/postgresql/schemas/extensions/index.d.ts.map +1 -0
  66. package/dist/adapters/postgresql/schemas/extensions/index.js +20 -0
  67. package/dist/adapters/postgresql/schemas/extensions/index.js.map +1 -0
  68. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts +164 -0
  69. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts.map +1 -0
  70. package/dist/adapters/postgresql/schemas/extensions/kcache.js +225 -0
  71. package/dist/adapters/postgresql/schemas/extensions/kcache.js.map +1 -0
  72. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts +253 -0
  73. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts.map +1 -0
  74. package/dist/adapters/postgresql/schemas/extensions/ltree.js +430 -0
  75. package/dist/adapters/postgresql/schemas/extensions/ltree.js.map +1 -0
  76. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts +251 -0
  77. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts.map +1 -0
  78. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js +294 -0
  79. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js.map +1 -0
  80. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts +10 -0
  81. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts.map +1 -0
  82. package/dist/adapters/postgresql/schemas/extensions/shared.js +15 -0
  83. package/dist/adapters/postgresql/schemas/extensions/shared.js.map +1 -0
  84. package/dist/adapters/postgresql/schemas/index.d.ts +6 -6
  85. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  86. package/dist/adapters/postgresql/schemas/index.js +8 -8
  87. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  88. package/dist/adapters/postgresql/schemas/introspection.d.ts +19 -42
  89. package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -1
  90. package/dist/adapters/postgresql/schemas/introspection.js +72 -27
  91. package/dist/adapters/postgresql/schemas/introspection.js.map +1 -1
  92. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts +270 -0
  93. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts.map +1 -0
  94. package/dist/adapters/postgresql/schemas/jsonb/advanced.js +371 -0
  95. package/dist/adapters/postgresql/schemas/jsonb/advanced.js.map +1 -0
  96. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts +283 -0
  97. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts.map +1 -0
  98. package/dist/adapters/postgresql/schemas/jsonb/basic.js +456 -0
  99. package/dist/adapters/postgresql/schemas/jsonb/basic.js.map +1 -0
  100. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts +6 -0
  101. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts.map +1 -0
  102. package/dist/adapters/postgresql/schemas/jsonb/index.js +6 -0
  103. package/dist/adapters/postgresql/schemas/jsonb/index.js.map +1 -0
  104. package/dist/adapters/postgresql/schemas/monitoring.d.ts +4 -4
  105. package/dist/adapters/postgresql/schemas/monitoring.js +2 -2
  106. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  107. package/dist/adapters/postgresql/schemas/partitioning.d.ts +14 -14
  108. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  109. package/dist/adapters/postgresql/schemas/partitioning.js +64 -46
  110. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  111. package/dist/adapters/postgresql/schemas/partman.d.ts +16 -14
  112. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
  113. package/dist/adapters/postgresql/schemas/partman.js +9 -9
  114. package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
  115. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts +429 -0
  116. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts.map +1 -0
  117. package/dist/adapters/postgresql/schemas/postgis/advanced.js +495 -0
  118. package/dist/adapters/postgresql/schemas/postgis/advanced.js.map +1 -0
  119. package/dist/adapters/postgresql/schemas/{postgis.d.ts → postgis/basic.d.ts} +1 -423
  120. package/dist/adapters/postgresql/schemas/postgis/basic.d.ts.map +1 -0
  121. package/dist/adapters/postgresql/schemas/{postgis.js → postgis/basic.js} +1 -486
  122. package/dist/adapters/postgresql/schemas/postgis/basic.js.map +1 -0
  123. package/dist/adapters/postgresql/schemas/postgis/index.d.ts +6 -0
  124. package/dist/adapters/postgresql/schemas/postgis/index.d.ts.map +1 -0
  125. package/dist/adapters/postgresql/schemas/postgis/index.js +6 -0
  126. package/dist/adapters/postgresql/schemas/postgis/index.js.map +1 -0
  127. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +35 -25
  128. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  129. package/dist/adapters/postgresql/schemas/schema-mgmt.js +57 -19
  130. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  131. package/dist/adapters/postgresql/schemas/stats/index.d.ts +6 -0
  132. package/dist/adapters/postgresql/schemas/stats/index.d.ts.map +1 -0
  133. package/dist/adapters/postgresql/schemas/stats/index.js +6 -0
  134. package/dist/adapters/postgresql/schemas/stats/index.js.map +1 -0
  135. package/dist/adapters/postgresql/schemas/stats/input.d.ts +260 -0
  136. package/dist/adapters/postgresql/schemas/stats/input.d.ts.map +1 -0
  137. package/dist/adapters/postgresql/schemas/{stats.js → stats/input.js} +2 -331
  138. package/dist/adapters/postgresql/schemas/stats/input.js.map +1 -0
  139. package/dist/adapters/postgresql/schemas/{stats.d.ts → stats/output.d.ts} +3 -246
  140. package/dist/adapters/postgresql/schemas/stats/output.d.ts.map +1 -0
  141. package/dist/adapters/postgresql/schemas/stats/output.js +334 -0
  142. package/dist/adapters/postgresql/schemas/stats/output.js.map +1 -0
  143. package/dist/adapters/postgresql/schemas/text-search.d.ts +18 -18
  144. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  145. package/dist/adapters/postgresql/schemas/text-search.js +12 -27
  146. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  147. package/dist/adapters/postgresql/schemas/vector.d.ts +10 -10
  148. package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
  149. package/dist/adapters/postgresql/schemas/vector.js +9 -15
  150. package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
  151. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  152. package/dist/adapters/postgresql/tools/backup/dump.js +95 -76
  153. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  154. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
  155. package/dist/adapters/postgresql/tools/backup/planning.js +345 -287
  156. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
  157. package/dist/adapters/postgresql/tools/citext/analysis.d.ts +24 -0
  158. package/dist/adapters/postgresql/tools/citext/analysis.d.ts.map +1 -0
  159. package/dist/adapters/postgresql/tools/{citext.js → citext/analysis.js} +50 -232
  160. package/dist/adapters/postgresql/tools/citext/analysis.js.map +1 -0
  161. package/dist/adapters/postgresql/tools/citext/index.d.ts +15 -0
  162. package/dist/adapters/postgresql/tools/citext/index.d.ts.map +1 -0
  163. package/dist/adapters/postgresql/tools/citext/index.js +23 -0
  164. package/dist/adapters/postgresql/tools/citext/index.js.map +1 -0
  165. package/dist/adapters/postgresql/tools/citext/setup.d.ts +16 -0
  166. package/dist/adapters/postgresql/tools/citext/setup.d.ts.map +1 -0
  167. package/dist/adapters/postgresql/tools/citext/setup.js +193 -0
  168. package/dist/adapters/postgresql/tools/citext/setup.js.map +1 -0
  169. package/dist/adapters/postgresql/tools/codemode/index.js +1 -1
  170. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
  171. package/dist/adapters/postgresql/tools/core/convenience.d.ts +12 -22
  172. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  173. package/dist/adapters/postgresql/tools/core/convenience.js +100 -210
  174. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  175. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +1 -0
  176. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -1
  177. package/dist/adapters/postgresql/tools/core/error-helpers.js +8 -1
  178. package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -1
  179. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  180. package/dist/adapters/postgresql/tools/core/health.js +124 -114
  181. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  182. package/dist/adapters/postgresql/tools/core/index.d.ts +2 -1
  183. package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -1
  184. package/dist/adapters/postgresql/tools/core/index.js +3 -2
  185. package/dist/adapters/postgresql/tools/core/index.js.map +1 -1
  186. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  187. package/dist/adapters/postgresql/tools/core/indexes.js +151 -127
  188. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  189. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  190. package/dist/adapters/postgresql/tools/core/objects.js +186 -161
  191. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  192. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  193. package/dist/adapters/postgresql/tools/core/query.js +37 -25
  194. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  195. package/dist/adapters/postgresql/tools/core/schemas.d.ts +6 -3
  196. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  197. package/dist/adapters/postgresql/tools/core/schemas.js +11 -2
  198. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  199. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  200. package/dist/adapters/postgresql/tools/core/tables.js +156 -129
  201. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  202. package/dist/adapters/postgresql/tools/core/utility.d.ts +26 -0
  203. package/dist/adapters/postgresql/tools/core/utility.d.ts.map +1 -0
  204. package/dist/adapters/postgresql/tools/core/utility.js +174 -0
  205. package/dist/adapters/postgresql/tools/core/utility.js.map +1 -0
  206. package/dist/adapters/postgresql/tools/cron.js +90 -43
  207. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  208. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts +12 -0
  209. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts.map +1 -0
  210. package/dist/adapters/postgresql/tools/introspection/analysis.js +605 -0
  211. package/dist/adapters/postgresql/tools/introspection/analysis.js.map +1 -0
  212. package/dist/adapters/postgresql/tools/introspection/graph.d.ts +55 -0
  213. package/dist/adapters/postgresql/tools/introspection/graph.d.ts.map +1 -0
  214. package/dist/adapters/postgresql/tools/introspection/graph.js +621 -0
  215. package/dist/adapters/postgresql/tools/introspection/graph.js.map +1 -0
  216. package/dist/adapters/postgresql/tools/introspection/index.d.ts +21 -0
  217. package/dist/adapters/postgresql/tools/introspection/index.d.ts.map +1 -0
  218. package/dist/adapters/postgresql/tools/introspection/index.js +31 -0
  219. package/dist/adapters/postgresql/tools/introspection/index.js.map +1 -0
  220. package/dist/adapters/postgresql/tools/introspection/migration.d.ts +15 -0
  221. package/dist/adapters/postgresql/tools/introspection/migration.d.ts.map +1 -0
  222. package/dist/adapters/postgresql/tools/introspection/migration.js +575 -0
  223. package/dist/adapters/postgresql/tools/introspection/migration.js.map +1 -0
  224. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts +20 -0
  225. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts.map +1 -0
  226. package/dist/adapters/postgresql/tools/jsonb/analytics.js +367 -0
  227. package/dist/adapters/postgresql/tools/jsonb/analytics.js.map +1 -0
  228. package/dist/adapters/postgresql/tools/jsonb/index.d.ts +4 -2
  229. package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -1
  230. package/dist/adapters/postgresql/tools/jsonb/index.js +8 -4
  231. package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -1
  232. package/dist/adapters/postgresql/tools/jsonb/read.d.ts +38 -0
  233. package/dist/adapters/postgresql/tools/jsonb/read.d.ts.map +1 -0
  234. package/dist/adapters/postgresql/tools/jsonb/{basic.js → read.js} +41 -482
  235. package/dist/adapters/postgresql/tools/jsonb/read.js.map +1 -0
  236. package/dist/adapters/postgresql/tools/jsonb/{advanced.d.ts → transform.d.ts} +1 -13
  237. package/dist/adapters/postgresql/tools/jsonb/transform.d.ts.map +1 -0
  238. package/dist/adapters/postgresql/tools/jsonb/{advanced.js → transform.js} +26 -357
  239. package/dist/adapters/postgresql/tools/jsonb/transform.js.map +1 -0
  240. package/dist/adapters/postgresql/tools/jsonb/write.d.ts +14 -0
  241. package/dist/adapters/postgresql/tools/jsonb/write.d.ts.map +1 -0
  242. package/dist/adapters/postgresql/tools/jsonb/write.js +468 -0
  243. package/dist/adapters/postgresql/tools/jsonb/write.js.map +1 -0
  244. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  245. package/dist/adapters/postgresql/tools/kcache.js +116 -51
  246. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  247. package/dist/adapters/postgresql/tools/ltree.js +346 -260
  248. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  249. package/dist/adapters/postgresql/tools/migration/index.d.ts +15 -0
  250. package/dist/adapters/postgresql/tools/migration/index.d.ts.map +1 -0
  251. package/dist/adapters/postgresql/tools/migration/index.js +23 -0
  252. package/dist/adapters/postgresql/tools/migration/index.js.map +1 -0
  253. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts +15 -0
  254. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts.map +1 -0
  255. package/dist/adapters/postgresql/tools/{monitoring.js → monitoring/analysis.js} +24 -359
  256. package/dist/adapters/postgresql/tools/monitoring/analysis.js.map +1 -0
  257. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts +17 -0
  258. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts.map +1 -0
  259. package/dist/adapters/postgresql/tools/monitoring/basic.js +432 -0
  260. package/dist/adapters/postgresql/tools/monitoring/basic.js.map +1 -0
  261. package/dist/adapters/postgresql/tools/monitoring/index.d.ts +16 -0
  262. package/dist/adapters/postgresql/tools/monitoring/index.d.ts.map +1 -0
  263. package/dist/adapters/postgresql/tools/monitoring/index.js +31 -0
  264. package/dist/adapters/postgresql/tools/monitoring/index.js.map +1 -0
  265. package/dist/adapters/postgresql/tools/partitioning/index.d.ts +15 -0
  266. package/dist/adapters/postgresql/tools/partitioning/index.d.ts.map +1 -0
  267. package/dist/adapters/postgresql/tools/partitioning/index.js +23 -0
  268. package/dist/adapters/postgresql/tools/partitioning/index.js.map +1 -0
  269. package/dist/adapters/postgresql/tools/partitioning/info.d.ts +11 -0
  270. package/dist/adapters/postgresql/tools/partitioning/info.d.ts.map +1 -0
  271. package/dist/adapters/postgresql/tools/partitioning/info.js +302 -0
  272. package/dist/adapters/postgresql/tools/partitioning/info.js.map +1 -0
  273. package/dist/adapters/postgresql/tools/partitioning/management.d.ts +28 -0
  274. package/dist/adapters/postgresql/tools/partitioning/management.d.ts.map +1 -0
  275. package/dist/adapters/postgresql/tools/{partitioning.js → partitioning/management.js} +48 -307
  276. package/dist/adapters/postgresql/tools/partitioning/management.js.map +1 -0
  277. package/dist/adapters/postgresql/tools/partman/helpers.d.ts +29 -0
  278. package/dist/adapters/postgresql/tools/partman/helpers.d.ts.map +1 -0
  279. package/dist/adapters/postgresql/tools/partman/helpers.js +59 -0
  280. package/dist/adapters/postgresql/tools/partman/helpers.js.map +1 -0
  281. package/dist/adapters/postgresql/tools/partman/index.d.ts +2 -1
  282. package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -1
  283. package/dist/adapters/postgresql/tools/partman/index.js +4 -2
  284. package/dist/adapters/postgresql/tools/partman/index.js.map +1 -1
  285. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts +20 -0
  286. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts.map +1 -0
  287. package/dist/adapters/postgresql/tools/partman/maintenance.js +496 -0
  288. package/dist/adapters/postgresql/tools/partman/maintenance.js.map +1 -0
  289. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  290. package/dist/adapters/postgresql/tools/partman/management.js +438 -383
  291. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  292. package/dist/adapters/postgresql/tools/partman/operations.d.ts +1 -13
  293. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  294. package/dist/adapters/postgresql/tools/partman/operations.js +171 -652
  295. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  296. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  297. package/dist/adapters/postgresql/tools/performance/analysis.js +69 -42
  298. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  299. package/dist/adapters/postgresql/tools/performance/anomaly-detection.d.ts +18 -0
  300. package/dist/adapters/postgresql/tools/performance/anomaly-detection.d.ts.map +1 -0
  301. package/dist/adapters/postgresql/tools/performance/anomaly-detection.js +533 -0
  302. package/dist/adapters/postgresql/tools/performance/anomaly-detection.js.map +1 -0
  303. package/dist/adapters/postgresql/tools/performance/diagnostics.d.ts +11 -0
  304. package/dist/adapters/postgresql/tools/performance/diagnostics.d.ts.map +1 -0
  305. package/dist/adapters/postgresql/tools/performance/diagnostics.js +332 -0
  306. package/dist/adapters/postgresql/tools/performance/diagnostics.js.map +1 -0
  307. package/dist/adapters/postgresql/tools/performance/index.d.ts +1 -1
  308. package/dist/adapters/postgresql/tools/performance/index.d.ts.map +1 -1
  309. package/dist/adapters/postgresql/tools/performance/index.js +7 -1
  310. package/dist/adapters/postgresql/tools/performance/index.js.map +1 -1
  311. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  312. package/dist/adapters/postgresql/tools/performance/monitoring.js +80 -55
  313. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  314. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  315. package/dist/adapters/postgresql/tools/performance/optimization.js +18 -11
  316. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  317. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  318. package/dist/adapters/postgresql/tools/performance/stats.js +439 -318
  319. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  320. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  321. package/dist/adapters/postgresql/tools/pgcrypto.js +45 -77
  322. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  323. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  324. package/dist/adapters/postgresql/tools/postgis/basic.js +121 -93
  325. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  326. package/dist/adapters/postgresql/tools/schema/index.d.ts +16 -0
  327. package/dist/adapters/postgresql/tools/schema/index.d.ts.map +1 -0
  328. package/dist/adapters/postgresql/tools/schema/index.js +32 -0
  329. package/dist/adapters/postgresql/tools/schema/index.js.map +1 -0
  330. package/dist/adapters/postgresql/tools/schema/objects.d.ts +15 -0
  331. package/dist/adapters/postgresql/tools/schema/objects.d.ts.map +1 -0
  332. package/dist/adapters/postgresql/tools/schema/objects.js +378 -0
  333. package/dist/adapters/postgresql/tools/schema/objects.js.map +1 -0
  334. package/dist/adapters/postgresql/tools/schema/views.d.ts +15 -0
  335. package/dist/adapters/postgresql/tools/schema/views.d.ts.map +1 -0
  336. package/dist/adapters/postgresql/tools/{schema.js → schema/views.js} +64 -386
  337. package/dist/adapters/postgresql/tools/schema/views.js.map +1 -0
  338. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  339. package/dist/adapters/postgresql/tools/stats/advanced.js +1 -218
  340. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  341. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts +33 -0
  342. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts.map +1 -0
  343. package/dist/adapters/postgresql/tools/stats/math-utils.js +225 -0
  344. package/dist/adapters/postgresql/tools/stats/math-utils.js.map +1 -0
  345. package/dist/adapters/postgresql/tools/text/index.d.ts +16 -0
  346. package/dist/adapters/postgresql/tools/text/index.d.ts.map +1 -0
  347. package/dist/adapters/postgresql/tools/text/index.js +33 -0
  348. package/dist/adapters/postgresql/tools/text/index.js.map +1 -0
  349. package/dist/adapters/postgresql/tools/text/matching.d.ts +17 -0
  350. package/dist/adapters/postgresql/tools/text/matching.d.ts.map +1 -0
  351. package/dist/adapters/postgresql/tools/text/matching.js +565 -0
  352. package/dist/adapters/postgresql/tools/text/matching.js.map +1 -0
  353. package/dist/adapters/postgresql/tools/text/search.d.ts +17 -0
  354. package/dist/adapters/postgresql/tools/text/search.d.ts.map +1 -0
  355. package/dist/adapters/postgresql/tools/text/search.js +653 -0
  356. package/dist/adapters/postgresql/tools/text/search.js.map +1 -0
  357. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  358. package/dist/adapters/postgresql/tools/transactions.js +11 -27
  359. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  360. package/dist/adapters/postgresql/tools/vector/{basic.d.ts → data.d.ts} +10 -8
  361. package/dist/adapters/postgresql/tools/vector/data.d.ts.map +1 -0
  362. package/dist/adapters/postgresql/tools/vector/data.js +540 -0
  363. package/dist/adapters/postgresql/tools/vector/data.js.map +1 -0
  364. package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -1
  365. package/dist/adapters/postgresql/tools/vector/index.js +6 -2
  366. package/dist/adapters/postgresql/tools/vector/index.js.map +1 -1
  367. package/dist/adapters/postgresql/tools/vector/management.d.ts +11 -0
  368. package/dist/adapters/postgresql/tools/vector/management.d.ts.map +1 -0
  369. package/dist/adapters/postgresql/tools/vector/management.js +425 -0
  370. package/dist/adapters/postgresql/tools/vector/management.js.map +1 -0
  371. package/dist/adapters/postgresql/tools/vector/query.d.ts +14 -0
  372. package/dist/adapters/postgresql/tools/vector/query.d.ts.map +1 -0
  373. package/dist/adapters/postgresql/tools/vector/query.js +767 -0
  374. package/dist/adapters/postgresql/tools/vector/query.js.map +1 -0
  375. package/dist/adapters/postgresql/tools/vector/{advanced.d.ts → search-advanced.d.ts} +4 -5
  376. package/dist/adapters/postgresql/tools/vector/search-advanced.d.ts.map +1 -0
  377. package/dist/adapters/postgresql/tools/vector/search-advanced.js +626 -0
  378. package/dist/adapters/postgresql/tools/vector/search-advanced.js.map +1 -0
  379. package/dist/auth/scopes.d.ts.map +1 -1
  380. package/dist/auth/scopes.js +3 -1
  381. package/dist/auth/scopes.js.map +1 -1
  382. package/dist/cli/args.d.ts +3 -2
  383. package/dist/cli/args.d.ts.map +1 -1
  384. package/dist/cli/args.js +4 -3
  385. package/dist/cli/args.js.map +1 -1
  386. package/dist/cli.js +16 -4
  387. package/dist/cli.js.map +1 -1
  388. package/dist/codemode/api/aliases.d.ts +14 -0
  389. package/dist/codemode/api/aliases.d.ts.map +1 -0
  390. package/dist/codemode/api/aliases.js +503 -0
  391. package/dist/codemode/api/aliases.js.map +1 -0
  392. package/dist/codemode/api/group-api.d.ts +23 -0
  393. package/dist/codemode/api/group-api.d.ts.map +1 -0
  394. package/dist/codemode/api/group-api.js +179 -0
  395. package/dist/codemode/api/group-api.js.map +1 -0
  396. package/dist/codemode/{api.d.ts → api/index.d.ts} +5 -4
  397. package/dist/codemode/api/index.d.ts.map +1 -0
  398. package/dist/codemode/api/index.js +195 -0
  399. package/dist/codemode/api/index.js.map +1 -0
  400. package/dist/codemode/api/maps.d.ts +47 -0
  401. package/dist/codemode/api/maps.d.ts.map +1 -0
  402. package/dist/codemode/api/maps.js +529 -0
  403. package/dist/codemode/api/maps.js.map +1 -0
  404. package/dist/codemode/api/normalize.d.ts +13 -0
  405. package/dist/codemode/api/normalize.d.ts.map +1 -0
  406. package/dist/codemode/api/normalize.js +120 -0
  407. package/dist/codemode/api/normalize.js.map +1 -0
  408. package/dist/codemode/index.d.ts +1 -1
  409. package/dist/codemode/index.d.ts.map +1 -1
  410. package/dist/codemode/index.js +1 -1
  411. package/dist/codemode/index.js.map +1 -1
  412. package/dist/codemode/sandbox.d.ts.map +1 -1
  413. package/dist/codemode/sandbox.js +8 -25
  414. package/dist/codemode/sandbox.js.map +1 -1
  415. package/dist/filtering/ToolConstants.d.ts +11 -11
  416. package/dist/filtering/ToolConstants.d.ts.map +1 -1
  417. package/dist/filtering/ToolConstants.js +28 -15
  418. package/dist/filtering/ToolConstants.js.map +1 -1
  419. package/dist/filtering/ToolFilter.d.ts +0 -32
  420. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  421. package/dist/filtering/ToolFilter.js +0 -43
  422. package/dist/filtering/ToolFilter.js.map +1 -1
  423. package/dist/server/McpServer.d.ts +1 -1
  424. package/dist/server/McpServer.d.ts.map +1 -1
  425. package/dist/server/McpServer.js +1 -2
  426. package/dist/server/McpServer.js.map +1 -1
  427. package/dist/transports/http.d.ts +55 -10
  428. package/dist/transports/http.d.ts.map +1 -1
  429. package/dist/transports/http.js +301 -50
  430. package/dist/transports/http.js.map +1 -1
  431. package/dist/types/filtering.d.ts +1 -1
  432. package/dist/types/filtering.d.ts.map +1 -1
  433. package/dist/types/index.d.ts +2 -2
  434. package/dist/types/index.d.ts.map +1 -1
  435. package/dist/types/index.js.map +1 -1
  436. package/dist/types/mcp.d.ts +0 -21
  437. package/dist/types/mcp.d.ts.map +1 -1
  438. package/dist/types/schema.d.ts +0 -79
  439. package/dist/types/schema.d.ts.map +1 -1
  440. package/dist/utils/fts-config.d.ts +0 -6
  441. package/dist/utils/fts-config.d.ts.map +1 -1
  442. package/dist/utils/fts-config.js +1 -1
  443. package/dist/utils/fts-config.js.map +1 -1
  444. package/dist/utils/icons.d.ts.map +1 -1
  445. package/dist/utils/icons.js +5 -0
  446. package/dist/utils/icons.js.map +1 -1
  447. package/dist/utils/identifiers.d.ts.map +1 -1
  448. package/dist/utils/identifiers.js +6 -6
  449. package/dist/utils/identifiers.js.map +1 -1
  450. package/dist/utils/logger.d.ts +6 -6
  451. package/dist/utils/logger.d.ts.map +1 -1
  452. package/dist/utils/logger.js +18 -15
  453. package/dist/utils/logger.js.map +1 -1
  454. package/dist/utils/progress-utils.d.ts +3 -14
  455. package/dist/utils/progress-utils.d.ts.map +1 -1
  456. package/dist/utils/progress-utils.js +2 -21
  457. package/dist/utils/progress-utils.js.map +1 -1
  458. package/dist/utils/version.d.ts +9 -0
  459. package/dist/utils/version.d.ts.map +1 -0
  460. package/dist/utils/version.js +12 -0
  461. package/dist/utils/version.js.map +1 -0
  462. package/dist/utils/where-clause.d.ts +4 -0
  463. package/dist/utils/where-clause.d.ts.map +1 -1
  464. package/dist/utils/where-clause.js +16 -0
  465. package/dist/utils/where-clause.js.map +1 -1
  466. package/package.json +6 -4
  467. package/dist/adapters/postgresql/schemas/core.d.ts.map +0 -1
  468. package/dist/adapters/postgresql/schemas/core.js.map +0 -1
  469. package/dist/adapters/postgresql/schemas/extensions.d.ts +0 -852
  470. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +0 -1
  471. package/dist/adapters/postgresql/schemas/extensions.js +0 -1202
  472. package/dist/adapters/postgresql/schemas/extensions.js.map +0 -1
  473. package/dist/adapters/postgresql/schemas/jsonb.d.ts +0 -541
  474. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +0 -1
  475. package/dist/adapters/postgresql/schemas/jsonb.js +0 -814
  476. package/dist/adapters/postgresql/schemas/jsonb.js.map +0 -1
  477. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +0 -1
  478. package/dist/adapters/postgresql/schemas/postgis.js.map +0 -1
  479. package/dist/adapters/postgresql/schemas/stats.d.ts.map +0 -1
  480. package/dist/adapters/postgresql/schemas/stats.js.map +0 -1
  481. package/dist/adapters/postgresql/tools/citext.d.ts +0 -18
  482. package/dist/adapters/postgresql/tools/citext.d.ts.map +0 -1
  483. package/dist/adapters/postgresql/tools/citext.js.map +0 -1
  484. package/dist/adapters/postgresql/tools/introspection.d.ts +0 -15
  485. package/dist/adapters/postgresql/tools/introspection.d.ts.map +0 -1
  486. package/dist/adapters/postgresql/tools/introspection.js +0 -1682
  487. package/dist/adapters/postgresql/tools/introspection.js.map +0 -1
  488. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +0 -1
  489. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +0 -1
  490. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +0 -20
  491. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +0 -1
  492. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +0 -1
  493. package/dist/adapters/postgresql/tools/monitoring.d.ts +0 -13
  494. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +0 -1
  495. package/dist/adapters/postgresql/tools/monitoring.js.map +0 -1
  496. package/dist/adapters/postgresql/tools/partitioning.d.ts +0 -13
  497. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +0 -1
  498. package/dist/adapters/postgresql/tools/partitioning.js.map +0 -1
  499. package/dist/adapters/postgresql/tools/schema.d.ts +0 -13
  500. package/dist/adapters/postgresql/tools/schema.d.ts.map +0 -1
  501. package/dist/adapters/postgresql/tools/schema.js.map +0 -1
  502. package/dist/adapters/postgresql/tools/text.d.ts +0 -13
  503. package/dist/adapters/postgresql/tools/text.d.ts.map +0 -1
  504. package/dist/adapters/postgresql/tools/text.js +0 -1082
  505. package/dist/adapters/postgresql/tools/text.js.map +0 -1
  506. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +0 -1
  507. package/dist/adapters/postgresql/tools/vector/advanced.js +0 -958
  508. package/dist/adapters/postgresql/tools/vector/advanced.js.map +0 -1
  509. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +0 -1
  510. package/dist/adapters/postgresql/tools/vector/basic.js +0 -1165
  511. package/dist/adapters/postgresql/tools/vector/basic.js.map +0 -1
  512. package/dist/codemode/api.d.ts.map +0 -1
  513. package/dist/codemode/api.js +0 -1544
  514. package/dist/codemode/api.js.map +0 -1
  515. package/dist/utils/promptGenerator.d.ts +0 -20
  516. package/dist/utils/promptGenerator.d.ts.map +0 -1
  517. package/dist/utils/promptGenerator.js +0 -81
  518. package/dist/utils/promptGenerator.js.map +0 -1
@@ -0,0 +1,367 @@
1
+ /**
2
+ * PostgreSQL JSONB Tools - Analytics Operations
3
+ *
4
+ * JSONB analytics tools: index suggestions, security scanning, and statistics.
5
+ */
6
+ import { readOnly } from "../../../../utils/annotations.js";
7
+ import { getToolIcons } from "../../../../utils/icons.js";
8
+ import { formatPostgresError } from "../core/error-helpers.js";
9
+ import { sanitizeWhereClause } from "../../../../utils/where-clause.js";
10
+ import { sanitizeIdentifier, sanitizeTableName, } from "../../../../utils/identifiers.js";
11
+ import { JsonbIndexSuggestOutputSchema, JsonbSecurityScanOutputSchema, JsonbStatsOutputSchema, JsonbStatsSchemaBase, JsonbIndexSuggestSchemaBase, JsonbSecurityScanSchemaBase, JsonbStatsSchema, JsonbIndexSuggestSchema, JsonbSecurityScanSchema, } from "../../schemas/index.js";
12
+ /**
13
+ * Suggest JSONB indexes based on query patterns
14
+ */
15
+ export function createJsonbIndexSuggestTool(adapter) {
16
+ return {
17
+ name: "pg_jsonb_index_suggest",
18
+ description: "Analyze JSONB column and suggest indexes. Only works on object-type JSONB (not arrays).",
19
+ group: "jsonb",
20
+ inputSchema: JsonbIndexSuggestSchemaBase,
21
+ outputSchema: JsonbIndexSuggestOutputSchema,
22
+ annotations: readOnly("JSONB Index Suggest"),
23
+ icons: getToolIcons("jsonb", readOnly("JSONB Index Suggest")),
24
+ handler: async (params, _context) => {
25
+ try {
26
+ // Parse with preprocess schema to resolve aliases (tableName→table, col→column, filter→where)
27
+ const parsed = JsonbIndexSuggestSchema.parse(params);
28
+ const table = parsed.table;
29
+ const column = parsed.column;
30
+ if (!table || !column) {
31
+ return { success: false, error: "table and column are required" };
32
+ }
33
+ const rawSample = Number(parsed.sampleSize);
34
+ const sample = isNaN(rawSample) ? 1000 : rawSample;
35
+ const whereClause = parsed.where
36
+ ? ` WHERE ${sanitizeWhereClause(parsed.where)}`
37
+ : "";
38
+ // Validate schema existence for non-public schemas
39
+ const schemaName = parsed.schema ?? "public";
40
+ if (schemaName !== "public") {
41
+ const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schemaName]);
42
+ if (!schemaResult.rows || schemaResult.rows.length === 0) {
43
+ return {
44
+ success: false,
45
+ error: `Schema '${schemaName}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`,
46
+ };
47
+ }
48
+ }
49
+ const tableName = sanitizeTableName(table, schemaName);
50
+ const columnName = sanitizeIdentifier(column);
51
+ const keySql = `
52
+ SELECT key, COUNT(*) as frequency,
53
+ jsonb_typeof(value) as value_type
54
+ FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
55
+ jsonb_each(${columnName})
56
+ GROUP BY key, jsonb_typeof(value)
57
+ ORDER BY frequency DESC
58
+ LIMIT 20
59
+ `;
60
+ const keyResult = await adapter.executeQuery(keySql);
61
+ const indexSql = `
62
+ SELECT indexname, indexdef
63
+ FROM pg_indexes
64
+ WHERE tablename = $1
65
+ AND indexdef LIKE '%' || $2 || '%'
66
+ `;
67
+ const indexResult = await adapter.executeQuery(indexSql, [
68
+ parsed.table,
69
+ parsed.column,
70
+ ]);
71
+ const recommendations = [];
72
+ const keys = (keyResult.rows ?? []).map((row) => ({
73
+ key: row["key"],
74
+ frequency: Number(row["frequency"]),
75
+ value_type: row["value_type"],
76
+ }));
77
+ if ((indexResult.rows?.length ?? 0) === 0 && keys.length > 0) {
78
+ recommendations.push(`CREATE INDEX ON ${tableName} USING GIN (${columnName})`);
79
+ }
80
+ for (const keyInfo of keys.slice(0, 5)) {
81
+ if (keyInfo.frequency > sample * 0.5) {
82
+ recommendations.push(`CREATE INDEX ON ${tableName} ((${columnName} ->> '${keyInfo.key.replace(/'/g, "''")}'))`);
83
+ }
84
+ }
85
+ const response = {
86
+ keyDistribution: keys,
87
+ existingIndexes: indexResult.rows,
88
+ recommendations,
89
+ };
90
+ if (recommendations.length === 0) {
91
+ if ((indexResult.rows?.length ?? 0) > 0) {
92
+ response.hint =
93
+ "No new recommendations - existing indexes already cover this column";
94
+ }
95
+ else if (keys.length === 0) {
96
+ response.hint =
97
+ "No recommendations - table is empty or column has no keys to analyze";
98
+ }
99
+ else {
100
+ response.hint =
101
+ "No recommendations - no keys appeared in >50% of sampled rows";
102
+ }
103
+ }
104
+ return response;
105
+ }
106
+ catch (error) {
107
+ if (error instanceof Error &&
108
+ (error.message.includes("function jsonb_each") ||
109
+ error.message.includes("cannot call jsonb_each"))) {
110
+ return {
111
+ success: false,
112
+ error: `pg_jsonb_index_suggest requires JSONB objects (not arrays). Column may not be JSONB type or contains arrays.`,
113
+ };
114
+ }
115
+ return {
116
+ success: false,
117
+ error: formatPostgresError(error, {
118
+ tool: "pg_jsonb_index_suggest",
119
+ }),
120
+ };
121
+ }
122
+ },
123
+ };
124
+ }
125
+ /**
126
+ * Scan JSONB for security issues
127
+ */
128
+ export function createJsonbSecurityScanTool(adapter) {
129
+ return {
130
+ name: "pg_jsonb_security_scan",
131
+ description: "Scan JSONB for security issues. Only works on object-type JSONB (not arrays). Use larger sampleSize for thorough scans.",
132
+ group: "jsonb",
133
+ inputSchema: JsonbSecurityScanSchemaBase,
134
+ outputSchema: JsonbSecurityScanOutputSchema,
135
+ annotations: readOnly("JSONB Security Scan"),
136
+ icons: getToolIcons("jsonb", readOnly("JSONB Security Scan")),
137
+ handler: async (params, _context) => {
138
+ try {
139
+ // Parse with preprocess schema to resolve aliases (tableName→table, col→column, filter→where)
140
+ const parsed = JsonbSecurityScanSchema.parse(params);
141
+ const table = parsed.table;
142
+ const column = parsed.column;
143
+ if (!table || !column) {
144
+ return { success: false, error: "table and column are required" };
145
+ }
146
+ const rawSample = Number(parsed.sampleSize);
147
+ const sample = isNaN(rawSample) ? 100 : rawSample;
148
+ const whereClause = parsed.where
149
+ ? ` WHERE ${sanitizeWhereClause(parsed.where)}`
150
+ : "";
151
+ const issues = [];
152
+ // Validate schema existence for non-public schemas
153
+ const schemaName = parsed.schema ?? "public";
154
+ if (schemaName !== "public") {
155
+ const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schemaName]);
156
+ if (!schemaResult.rows || schemaResult.rows.length === 0) {
157
+ return {
158
+ success: false,
159
+ error: `Schema '${schemaName}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`,
160
+ };
161
+ }
162
+ }
163
+ const tableName = sanitizeTableName(table, schemaName);
164
+ const columnName = sanitizeIdentifier(column);
165
+ // Count actual rows scanned
166
+ const countSql = `SELECT COUNT(*) as count FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t`;
167
+ const countResult = await adapter.executeQuery(countSql);
168
+ const actualRowsScanned = Number(countResult.rows?.[0]?.["count"] ?? 0);
169
+ const sensitiveKeysSql = `
170
+ SELECT key, COUNT(*) as count
171
+ FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
172
+ jsonb_each_text(${columnName})
173
+ WHERE lower(key) IN ('password', 'secret', 'token', 'api_key', 'apikey',
174
+ 'auth', 'credential', 'ssn', 'credit_card', 'cvv')
175
+ GROUP BY key
176
+ `;
177
+ const sensitiveResult = await adapter.executeQuery(sensitiveKeysSql);
178
+ for (const row of (sensitiveResult.rows ?? [])) {
179
+ issues.push({
180
+ type: "sensitive_key",
181
+ key: row.key,
182
+ count: Number(row.count),
183
+ });
184
+ }
185
+ const injectionSql = `
186
+ SELECT key, COUNT(*) as count
187
+ FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
188
+ jsonb_each_text(${columnName})
189
+ 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))'
190
+ GROUP BY key
191
+ `;
192
+ const injectionResult = await adapter.executeQuery(injectionSql);
193
+ for (const row of (injectionResult.rows ?? [])) {
194
+ issues.push({
195
+ type: "sql_injection_pattern",
196
+ key: row.key,
197
+ count: Number(row.count),
198
+ });
199
+ }
200
+ // XSS pattern detection
201
+ const xssSql = `
202
+ SELECT key, COUNT(*) as count
203
+ FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
204
+ jsonb_each_text(${columnName})
205
+ WHERE value ~* '(<script|javascript:|on(click|load|error|mouseover)\\s*=|<iframe|<object|<embed|<svg[^>]+on|<img[^>]+onerror)'
206
+ GROUP BY key
207
+ `;
208
+ const xssResult = await adapter.executeQuery(xssSql);
209
+ for (const row of (xssResult.rows ?? [])) {
210
+ issues.push({
211
+ type: "xss_pattern",
212
+ key: row.key,
213
+ count: Number(row.count),
214
+ });
215
+ }
216
+ return {
217
+ scannedRows: actualRowsScanned,
218
+ issues,
219
+ riskLevel: issues.length === 0 ? "low" : issues.length < 3 ? "medium" : "high",
220
+ };
221
+ }
222
+ catch (error) {
223
+ if (error instanceof Error &&
224
+ (error.message.includes("function jsonb_each") ||
225
+ error.message.includes("cannot call jsonb_each"))) {
226
+ return {
227
+ success: false,
228
+ error: `pg_jsonb_security_scan requires JSONB objects. Column may contain arrays or non-JSONB data.`,
229
+ };
230
+ }
231
+ return {
232
+ success: false,
233
+ error: formatPostgresError(error, {
234
+ tool: "pg_jsonb_security_scan",
235
+ }),
236
+ };
237
+ }
238
+ },
239
+ };
240
+ }
241
+ /**
242
+ * Get JSONB column statistics
243
+ */
244
+ export function createJsonbStatsTool(adapter) {
245
+ return {
246
+ name: "pg_jsonb_stats",
247
+ description: "Get statistics about JSONB column usage. Note: topKeys only applies to object-type JSONB, not arrays.",
248
+ group: "jsonb",
249
+ inputSchema: JsonbStatsSchemaBase,
250
+ outputSchema: JsonbStatsOutputSchema,
251
+ annotations: readOnly("JSONB Stats"),
252
+ icons: getToolIcons("jsonb", readOnly("JSONB Stats")),
253
+ handler: async (params, _context) => {
254
+ try {
255
+ // Parse with preprocess schema to resolve aliases (tableName→table, col→column, filter→where)
256
+ const parsed = JsonbStatsSchema.parse(params);
257
+ const table = parsed.table;
258
+ const column = parsed.column;
259
+ if (!table || !column) {
260
+ return { success: false, error: "table and column are required" };
261
+ }
262
+ const rawSample = Number(parsed.sampleSize);
263
+ const sample = isNaN(rawSample) ? 1000 : rawSample;
264
+ const whereClause = parsed.where
265
+ ? ` WHERE ${sanitizeWhereClause(parsed.where)}`
266
+ : "";
267
+ // Validate schema existence for non-public schemas
268
+ const schemaName = parsed.schema ?? "public";
269
+ if (schemaName !== "public") {
270
+ const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schemaName]);
271
+ if (!schemaResult.rows || schemaResult.rows.length === 0) {
272
+ return {
273
+ success: false,
274
+ error: `Schema '${schemaName}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`,
275
+ };
276
+ }
277
+ }
278
+ const tableName = sanitizeTableName(table, schemaName);
279
+ const columnName = sanitizeIdentifier(column);
280
+ const basicSql = `
281
+ SELECT
282
+ COUNT(*) as total_rows,
283
+ COUNT(${columnName}) as non_null_count,
284
+ AVG(length(${columnName}::text))::int as avg_size_bytes,
285
+ MAX(length(${columnName}::text)) as max_size_bytes
286
+ FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t
287
+ `;
288
+ const basicResult = await adapter.executeQuery(basicSql);
289
+ const basics = basicResult.rows?.[0];
290
+ const basicsNormalized = basics
291
+ ? {
292
+ total_rows: Number(basics["total_rows"]),
293
+ non_null_count: Number(basics["non_null_count"]),
294
+ avg_size_bytes: Number(basics["avg_size_bytes"]),
295
+ max_size_bytes: Number(basics["max_size_bytes"]),
296
+ }
297
+ : undefined;
298
+ const rawKeyLimit = Number(parsed.topKeysLimit);
299
+ const keyLimit = isNaN(rawKeyLimit) ? 20 : rawKeyLimit;
300
+ const keySql = `
301
+ SELECT key, COUNT(*) as frequency
302
+ FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t,
303
+ jsonb_object_keys(${columnName}) key
304
+ GROUP BY key
305
+ ORDER BY frequency DESC
306
+ LIMIT ${String(keyLimit)}
307
+ `;
308
+ let topKeys = [];
309
+ try {
310
+ const keyResult = await adapter.executeQuery(keySql);
311
+ topKeys = (keyResult.rows ?? []).map((row) => ({
312
+ key: row["key"],
313
+ frequency: Number(row["frequency"]),
314
+ }));
315
+ }
316
+ catch (error) {
317
+ // Gracefully handle array columns (jsonb_object_keys fails on arrays)
318
+ if (error instanceof Error &&
319
+ error.message.includes("cannot call jsonb_object_keys")) {
320
+ // Leave topKeys empty for array columns - this is valid
321
+ }
322
+ else {
323
+ throw error; // Re-throw to be caught by outer catch
324
+ }
325
+ }
326
+ const typeSql = `
327
+ SELECT jsonb_typeof(${columnName}) as type, COUNT(*) as count
328
+ FROM (SELECT * FROM ${tableName}${whereClause} LIMIT ${String(sample)}) t
329
+ GROUP BY jsonb_typeof(${columnName})
330
+ `;
331
+ const typeResult = await adapter.executeQuery(typeSql);
332
+ const typeDistribution = (typeResult.rows ?? []).map((row) => ({
333
+ type: row["type"],
334
+ count: Number(row["count"]),
335
+ }));
336
+ const sqlNullCount = typeDistribution.find((t) => t.type === null)?.count ?? 0;
337
+ const hasNullColumns = sqlNullCount > 0;
338
+ const isArrayColumn = typeDistribution.some((t) => t.type === "array");
339
+ let hint;
340
+ if (hasNullColumns) {
341
+ hint =
342
+ "typeDistribution null type represents SQL NULL columns, not JSON null values";
343
+ }
344
+ else if (topKeys.length === 0 && isArrayColumn) {
345
+ hint =
346
+ 'topKeys empty for array columns - use pg_jsonb_normalize mode: "array" to analyze elements';
347
+ }
348
+ return {
349
+ basics: basicsNormalized,
350
+ topKeys,
351
+ typeDistribution,
352
+ sqlNullCount,
353
+ hint,
354
+ };
355
+ }
356
+ catch (error) {
357
+ return {
358
+ success: false,
359
+ error: formatPostgresError(error, {
360
+ tool: "pg_jsonb_stats",
361
+ }),
362
+ };
363
+ }
364
+ },
365
+ };
366
+ }
367
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/analytics.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,10 @@
6
6
  */
7
7
  import type { PostgresAdapter } from "../../PostgresAdapter.js";
8
8
  import type { ToolDefinition } from "../../../../types/index.js";
9
- import { createJsonbExtractTool, createJsonbSetTool, createJsonbInsertTool, createJsonbDeleteTool, createJsonbContainsTool, createJsonbPathQueryTool, createJsonbAggTool, createJsonbObjectTool, createJsonbArrayTool, createJsonbKeysTool, createJsonbStripNullsTool, createJsonbTypeofTool } from "./basic.js";
10
- import { createJsonbValidatePathTool, createJsonbMergeTool, createJsonbNormalizeTool, createJsonbDiffTool, createJsonbIndexSuggestTool, createJsonbSecurityScanTool, createJsonbStatsTool } from "./advanced.js";
9
+ import { createJsonbExtractTool, createJsonbContainsTool, createJsonbPathQueryTool, createJsonbAggTool, createJsonbKeysTool, createJsonbTypeofTool } from "./read.js";
10
+ import { createJsonbSetTool, createJsonbInsertTool, createJsonbDeleteTool, createJsonbObjectTool, createJsonbArrayTool, createJsonbStripNullsTool } from "./write.js";
11
+ import { createJsonbValidatePathTool, createJsonbMergeTool, createJsonbNormalizeTool, createJsonbDiffTool } from "./transform.js";
12
+ import { createJsonbIndexSuggestTool, createJsonbSecurityScanTool, createJsonbStatsTool } from "./analytics.js";
11
13
  /**
12
14
  * Get all JSONB tools
13
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAsBxE;AAGD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,GACrB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAsBxE;AAGD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,GACrB,CAAC"}
@@ -4,10 +4,14 @@
4
4
  * JSONB operations including path queries, containment, and aggregation.
5
5
  * 19 tools total.
6
6
  */
7
- // Basic JSONB operations
8
- import { createJsonbExtractTool, createJsonbSetTool, createJsonbInsertTool, createJsonbDeleteTool, createJsonbContainsTool, createJsonbPathQueryTool, createJsonbAggTool, createJsonbObjectTool, createJsonbArrayTool, createJsonbKeysTool, createJsonbStripNullsTool, createJsonbTypeofTool, } from "./basic.js";
9
- // Advanced JSONB operations
10
- import { createJsonbValidatePathTool, createJsonbMergeTool, createJsonbNormalizeTool, createJsonbDiffTool, createJsonbIndexSuggestTool, createJsonbSecurityScanTool, createJsonbStatsTool, } from "./advanced.js";
7
+ // Read JSONB operations
8
+ import { createJsonbExtractTool, createJsonbContainsTool, createJsonbPathQueryTool, createJsonbAggTool, createJsonbKeysTool, createJsonbTypeofTool, } from "./read.js";
9
+ // Write JSONB operations
10
+ import { createJsonbSetTool, createJsonbInsertTool, createJsonbDeleteTool, createJsonbObjectTool, createJsonbArrayTool, createJsonbStripNullsTool, } from "./write.js";
11
+ // JSONB transform operations (validate path, merge, normalize, diff)
12
+ import { createJsonbValidatePathTool, createJsonbMergeTool, createJsonbNormalizeTool, createJsonbDiffTool, } from "./transform.js";
13
+ // JSONB analytics operations (index suggest, security scan, stats)
14
+ import { createJsonbIndexSuggestTool, createJsonbSecurityScanTool, createJsonbStatsTool, } from "./analytics.js";
11
15
  /**
12
16
  * Get all JSONB tools
13
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,yBAAyB;AACzB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,4BAA4B;AAC5B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAwB;IACpD,OAAO;QACL,sBAAsB,CAAC,OAAO,CAAC;QAC/B,kBAAkB,CAAC,OAAO,CAAC;QAC3B,qBAAqB,CAAC,OAAO,CAAC;QAC9B,qBAAqB,CAAC,OAAO,CAAC;QAC9B,uBAAuB,CAAC,OAAO,CAAC;QAChC,wBAAwB,CAAC,OAAO,CAAC;QACjC,kBAAkB,CAAC,OAAO,CAAC;QAC3B,qBAAqB,CAAC,OAAO,CAAC;QAC9B,oBAAoB,CAAC,OAAO,CAAC;QAC7B,mBAAmB,CAAC,OAAO,CAAC;QAC5B,yBAAyB,CAAC,OAAO,CAAC;QAClC,qBAAqB,CAAC,OAAO,CAAC;QAC9B,2BAA2B,CAAC,OAAO,CAAC;QACpC,oBAAoB,CAAC,OAAO,CAAC;QAC7B,wBAAwB,CAAC,OAAO,CAAC;QACjC,mBAAmB,CAAC,OAAO,CAAC;QAC5B,2BAA2B,CAAC,OAAO,CAAC;QACpC,2BAA2B,CAAC,OAAO,CAAC;QACpC,oBAAoB,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,GACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wBAAwB;AACxB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,yBAAyB;AACzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,qEAAqE;AACrE,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,mEAAmE;AACnE,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAwB;IACpD,OAAO;QACL,sBAAsB,CAAC,OAAO,CAAC;QAC/B,kBAAkB,CAAC,OAAO,CAAC;QAC3B,qBAAqB,CAAC,OAAO,CAAC;QAC9B,qBAAqB,CAAC,OAAO,CAAC;QAC9B,uBAAuB,CAAC,OAAO,CAAC;QAChC,wBAAwB,CAAC,OAAO,CAAC;QACjC,kBAAkB,CAAC,OAAO,CAAC;QAC3B,qBAAqB,CAAC,OAAO,CAAC;QAC9B,oBAAoB,CAAC,OAAO,CAAC;QAC7B,mBAAmB,CAAC,OAAO,CAAC;QAC5B,yBAAyB,CAAC,OAAO,CAAC;QAClC,qBAAqB,CAAC,OAAO,CAAC;QAC9B,2BAA2B,CAAC,OAAO,CAAC;QACpC,oBAAoB,CAAC,OAAO,CAAC;QAC7B,wBAAwB,CAAC,OAAO,CAAC;QACjC,mBAAmB,CAAC,OAAO,CAAC;QAC5B,2BAA2B,CAAC,OAAO,CAAC;QACpC,2BAA2B,CAAC,OAAO,CAAC;QACpC,oBAAoB,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,GACrB,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * PostgreSQL JSONB Tools - Read Operations
3
+ *
4
+ * Read-only JSONB tools: extract, contains, pathQuery, agg, keys, typeof.
5
+ * Also exports shared utilities: toJsonString, resolveJsonbTable, parseSelectAlias.
6
+ */
7
+ import type { PostgresAdapter } from "../../PostgresAdapter.js";
8
+ import type { ToolDefinition } from "../../../../types/index.js";
9
+ /**
10
+ * Convert value to a valid JSON string for PostgreSQL's ::jsonb cast
11
+ * Always uses JSON.stringify to ensure proper encoding
12
+ */
13
+ export declare function toJsonString(value: unknown): string;
14
+ /**
15
+ * Resolve table and schema for JSONB tools.
16
+ * Validates schema existence when non-public, returns schema-qualified table name.
17
+ * Returns [qualifiedTable, null] on success, or [null, errorResponse] on failure.
18
+ */
19
+ export declare function resolveJsonbTable(adapter: PostgresAdapter, table: string, schema?: string): Promise<[string, null] | [null, {
20
+ success: false;
21
+ error: string;
22
+ }]>;
23
+ export declare function createJsonbExtractTool(adapter: PostgresAdapter): ToolDefinition;
24
+ export declare function createJsonbContainsTool(adapter: PostgresAdapter): ToolDefinition;
25
+ export declare function createJsonbPathQueryTool(adapter: PostgresAdapter): ToolDefinition;
26
+ /**
27
+ * Parse a select expression and extract the alias if present.
28
+ * Handles: "column", "expression AS alias", "expression as alias"
29
+ * Returns: { expr: string, alias: string }
30
+ */
31
+ export declare function parseSelectAlias(selectItem: string): {
32
+ expr: string;
33
+ alias: string;
34
+ };
35
+ export declare function createJsonbAggTool(adapter: PostgresAdapter): ToolDefinition;
36
+ export declare function createJsonbKeysTool(adapter: PostgresAdapter): ToolDefinition;
37
+ export declare function createJsonbTypeofTool(adapter: PostgresAdapter): ToolDefinition;
38
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/read.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AAgCpC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAmBrE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,GACvB,cAAc,CAwHhB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,eAAe,GACvB,cAAc,CA6HhB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,cAAc,CAkGhB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAiBA;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAwG3E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CA2D5E;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CAuDhB"}