@neverinfamous/postgres-mcp 2.0.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 (458) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -9
  3. package/dist/__tests__/benchmarks/schema-parsing.bench.js +1 -1
  4. package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -1
  5. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  6. package/dist/__tests__/mocks/adapter.js +2 -1
  7. package/dist/__tests__/mocks/adapter.js.map +1 -1
  8. package/dist/adapters/DatabaseAdapter.d.ts +6 -1
  9. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  10. package/dist/adapters/DatabaseAdapter.js +11 -7
  11. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  12. package/dist/adapters/postgresql/PostgresAdapter.d.ts +5 -22
  13. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  14. package/dist/adapters/postgresql/PostgresAdapter.js +28 -520
  15. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  16. package/dist/adapters/postgresql/prompts/index.js +1 -1
  17. package/dist/adapters/postgresql/prompts/index.js.map +1 -1
  18. package/dist/adapters/postgresql/resources/index.d.ts +1 -1
  19. package/dist/adapters/postgresql/resources/index.js +3 -3
  20. package/dist/adapters/postgresql/resources/index.js.map +1 -1
  21. package/dist/adapters/postgresql/schema-operations.d.ts +71 -0
  22. package/dist/adapters/postgresql/schema-operations.d.ts.map +1 -0
  23. package/dist/adapters/postgresql/schema-operations.js +561 -0
  24. package/dist/adapters/postgresql/schema-operations.js.map +1 -0
  25. package/dist/adapters/postgresql/schemas/admin.d.ts +4 -4
  26. package/dist/adapters/postgresql/schemas/admin.js +4 -4
  27. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  28. package/dist/adapters/postgresql/schemas/backup.d.ts +2 -2
  29. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  30. package/dist/adapters/postgresql/schemas/backup.js +1 -3
  31. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  32. package/dist/adapters/postgresql/schemas/core/index.d.ts +6 -0
  33. package/dist/adapters/postgresql/schemas/core/index.d.ts.map +1 -0
  34. package/dist/adapters/postgresql/schemas/core/index.js +6 -0
  35. package/dist/adapters/postgresql/schemas/core/index.js.map +1 -0
  36. package/dist/adapters/postgresql/schemas/{core.d.ts → core/queries.d.ts} +12 -167
  37. package/dist/adapters/postgresql/schemas/core/queries.d.ts.map +1 -0
  38. package/dist/adapters/postgresql/schemas/{core.js → core/queries.js} +5 -213
  39. package/dist/adapters/postgresql/schemas/core/queries.js.map +1 -0
  40. package/dist/adapters/postgresql/schemas/core/transactions.d.ts +149 -0
  41. package/dist/adapters/postgresql/schemas/core/transactions.d.ts.map +1 -0
  42. package/dist/adapters/postgresql/schemas/core/transactions.js +239 -0
  43. package/dist/adapters/postgresql/schemas/core/transactions.js.map +1 -0
  44. package/dist/adapters/postgresql/schemas/cron.d.ts +12 -12
  45. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  46. package/dist/adapters/postgresql/schemas/cron.js +38 -10
  47. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  48. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts +222 -0
  49. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts.map +1 -0
  50. package/dist/adapters/postgresql/schemas/extensions/citext.js +306 -0
  51. package/dist/adapters/postgresql/schemas/extensions/citext.js.map +1 -0
  52. package/dist/adapters/postgresql/schemas/extensions/index.d.ts +15 -0
  53. package/dist/adapters/postgresql/schemas/extensions/index.d.ts.map +1 -0
  54. package/dist/adapters/postgresql/schemas/extensions/index.js +20 -0
  55. package/dist/adapters/postgresql/schemas/extensions/index.js.map +1 -0
  56. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts +164 -0
  57. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts.map +1 -0
  58. package/dist/adapters/postgresql/schemas/extensions/kcache.js +225 -0
  59. package/dist/adapters/postgresql/schemas/extensions/kcache.js.map +1 -0
  60. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts +253 -0
  61. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts.map +1 -0
  62. package/dist/adapters/postgresql/schemas/extensions/ltree.js +430 -0
  63. package/dist/adapters/postgresql/schemas/extensions/ltree.js.map +1 -0
  64. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts +251 -0
  65. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts.map +1 -0
  66. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js +294 -0
  67. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js.map +1 -0
  68. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts +10 -0
  69. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts.map +1 -0
  70. package/dist/adapters/postgresql/schemas/extensions/shared.js +15 -0
  71. package/dist/adapters/postgresql/schemas/extensions/shared.js.map +1 -0
  72. package/dist/adapters/postgresql/schemas/index.d.ts +6 -6
  73. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  74. package/dist/adapters/postgresql/schemas/index.js +8 -8
  75. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  76. package/dist/adapters/postgresql/schemas/introspection.d.ts +14 -14
  77. package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -1
  78. package/dist/adapters/postgresql/schemas/introspection.js +6 -3
  79. package/dist/adapters/postgresql/schemas/introspection.js.map +1 -1
  80. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts +270 -0
  81. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts.map +1 -0
  82. package/dist/adapters/postgresql/schemas/jsonb/advanced.js +371 -0
  83. package/dist/adapters/postgresql/schemas/jsonb/advanced.js.map +1 -0
  84. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts +283 -0
  85. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts.map +1 -0
  86. package/dist/adapters/postgresql/schemas/jsonb/basic.js +456 -0
  87. package/dist/adapters/postgresql/schemas/jsonb/basic.js.map +1 -0
  88. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts +6 -0
  89. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts.map +1 -0
  90. package/dist/adapters/postgresql/schemas/jsonb/index.js +6 -0
  91. package/dist/adapters/postgresql/schemas/jsonb/index.js.map +1 -0
  92. package/dist/adapters/postgresql/schemas/monitoring.d.ts +4 -4
  93. package/dist/adapters/postgresql/schemas/monitoring.js +2 -2
  94. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  95. package/dist/adapters/postgresql/schemas/partitioning.d.ts +14 -14
  96. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  97. package/dist/adapters/postgresql/schemas/partitioning.js +64 -46
  98. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  99. package/dist/adapters/postgresql/schemas/partman.d.ts +16 -14
  100. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
  101. package/dist/adapters/postgresql/schemas/partman.js +9 -9
  102. package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
  103. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts +429 -0
  104. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts.map +1 -0
  105. package/dist/adapters/postgresql/schemas/postgis/advanced.js +495 -0
  106. package/dist/adapters/postgresql/schemas/postgis/advanced.js.map +1 -0
  107. package/dist/adapters/postgresql/schemas/{postgis.d.ts → postgis/basic.d.ts} +1 -423
  108. package/dist/adapters/postgresql/schemas/postgis/basic.d.ts.map +1 -0
  109. package/dist/adapters/postgresql/schemas/{postgis.js → postgis/basic.js} +1 -486
  110. package/dist/adapters/postgresql/schemas/postgis/basic.js.map +1 -0
  111. package/dist/adapters/postgresql/schemas/postgis/index.d.ts +6 -0
  112. package/dist/adapters/postgresql/schemas/postgis/index.d.ts.map +1 -0
  113. package/dist/adapters/postgresql/schemas/postgis/index.js +6 -0
  114. package/dist/adapters/postgresql/schemas/postgis/index.js.map +1 -0
  115. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +35 -25
  116. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  117. package/dist/adapters/postgresql/schemas/schema-mgmt.js +57 -19
  118. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  119. package/dist/adapters/postgresql/schemas/stats/index.d.ts +6 -0
  120. package/dist/adapters/postgresql/schemas/stats/index.d.ts.map +1 -0
  121. package/dist/adapters/postgresql/schemas/stats/index.js +6 -0
  122. package/dist/adapters/postgresql/schemas/stats/index.js.map +1 -0
  123. package/dist/adapters/postgresql/schemas/stats/input.d.ts +260 -0
  124. package/dist/adapters/postgresql/schemas/stats/input.d.ts.map +1 -0
  125. package/dist/adapters/postgresql/schemas/{stats.js → stats/input.js} +2 -331
  126. package/dist/adapters/postgresql/schemas/stats/input.js.map +1 -0
  127. package/dist/adapters/postgresql/schemas/{stats.d.ts → stats/output.d.ts} +3 -246
  128. package/dist/adapters/postgresql/schemas/stats/output.d.ts.map +1 -0
  129. package/dist/adapters/postgresql/schemas/stats/output.js +334 -0
  130. package/dist/adapters/postgresql/schemas/stats/output.js.map +1 -0
  131. package/dist/adapters/postgresql/schemas/text-search.d.ts +18 -18
  132. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  133. package/dist/adapters/postgresql/schemas/text-search.js +12 -27
  134. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  135. package/dist/adapters/postgresql/schemas/vector.d.ts +10 -10
  136. package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
  137. package/dist/adapters/postgresql/schemas/vector.js +12 -16
  138. package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
  139. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  140. package/dist/adapters/postgresql/tools/backup/dump.js +95 -76
  141. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  142. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
  143. package/dist/adapters/postgresql/tools/backup/planning.js +345 -287
  144. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
  145. package/dist/adapters/postgresql/tools/citext/analysis.d.ts +24 -0
  146. package/dist/adapters/postgresql/tools/citext/analysis.d.ts.map +1 -0
  147. package/dist/adapters/postgresql/tools/{citext.js → citext/analysis.js} +50 -232
  148. package/dist/adapters/postgresql/tools/citext/analysis.js.map +1 -0
  149. package/dist/adapters/postgresql/tools/citext/index.d.ts +15 -0
  150. package/dist/adapters/postgresql/tools/citext/index.d.ts.map +1 -0
  151. package/dist/adapters/postgresql/tools/citext/index.js +23 -0
  152. package/dist/adapters/postgresql/tools/citext/index.js.map +1 -0
  153. package/dist/adapters/postgresql/tools/citext/setup.d.ts +16 -0
  154. package/dist/adapters/postgresql/tools/citext/setup.d.ts.map +1 -0
  155. package/dist/adapters/postgresql/tools/citext/setup.js +193 -0
  156. package/dist/adapters/postgresql/tools/citext/setup.js.map +1 -0
  157. package/dist/adapters/postgresql/tools/codemode/index.js +1 -1
  158. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
  159. package/dist/adapters/postgresql/tools/core/convenience.d.ts +12 -22
  160. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  161. package/dist/adapters/postgresql/tools/core/convenience.js +100 -210
  162. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  163. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +1 -0
  164. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -1
  165. package/dist/adapters/postgresql/tools/core/error-helpers.js +8 -1
  166. package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -1
  167. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  168. package/dist/adapters/postgresql/tools/core/health.js +124 -114
  169. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  170. package/dist/adapters/postgresql/tools/core/index.d.ts +2 -1
  171. package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -1
  172. package/dist/adapters/postgresql/tools/core/index.js +3 -2
  173. package/dist/adapters/postgresql/tools/core/index.js.map +1 -1
  174. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  175. package/dist/adapters/postgresql/tools/core/indexes.js +151 -127
  176. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  177. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  178. package/dist/adapters/postgresql/tools/core/objects.js +186 -161
  179. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  180. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  181. package/dist/adapters/postgresql/tools/core/query.js +37 -25
  182. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  183. package/dist/adapters/postgresql/tools/core/schemas.d.ts +6 -3
  184. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  185. package/dist/adapters/postgresql/tools/core/schemas.js +11 -2
  186. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  187. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  188. package/dist/adapters/postgresql/tools/core/tables.js +156 -129
  189. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  190. package/dist/adapters/postgresql/tools/core/utility.d.ts +26 -0
  191. package/dist/adapters/postgresql/tools/core/utility.d.ts.map +1 -0
  192. package/dist/adapters/postgresql/tools/core/utility.js +174 -0
  193. package/dist/adapters/postgresql/tools/core/utility.js.map +1 -0
  194. package/dist/adapters/postgresql/tools/cron.js +90 -43
  195. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  196. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts +12 -0
  197. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts.map +1 -0
  198. package/dist/adapters/postgresql/tools/introspection/analysis.js +574 -0
  199. package/dist/adapters/postgresql/tools/introspection/analysis.js.map +1 -0
  200. package/dist/adapters/postgresql/tools/introspection/graph.d.ts +55 -0
  201. package/dist/adapters/postgresql/tools/introspection/graph.d.ts.map +1 -0
  202. package/dist/adapters/postgresql/tools/introspection/graph.js +638 -0
  203. package/dist/adapters/postgresql/tools/introspection/graph.js.map +1 -0
  204. package/dist/adapters/postgresql/tools/introspection/index.d.ts +19 -0
  205. package/dist/adapters/postgresql/tools/introspection/index.d.ts.map +1 -0
  206. package/dist/adapters/postgresql/tools/introspection/index.js +36 -0
  207. package/dist/adapters/postgresql/tools/introspection/index.js.map +1 -0
  208. package/dist/adapters/postgresql/tools/introspection/migration.d.ts +15 -0
  209. package/dist/adapters/postgresql/tools/introspection/migration.d.ts.map +1 -0
  210. package/dist/adapters/postgresql/tools/introspection/migration.js +599 -0
  211. package/dist/adapters/postgresql/tools/introspection/migration.js.map +1 -0
  212. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts +20 -0
  213. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts.map +1 -0
  214. package/dist/adapters/postgresql/tools/jsonb/analytics.js +367 -0
  215. package/dist/adapters/postgresql/tools/jsonb/analytics.js.map +1 -0
  216. package/dist/adapters/postgresql/tools/jsonb/index.d.ts +4 -2
  217. package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -1
  218. package/dist/adapters/postgresql/tools/jsonb/index.js +8 -4
  219. package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -1
  220. package/dist/adapters/postgresql/tools/jsonb/read.d.ts +38 -0
  221. package/dist/adapters/postgresql/tools/jsonb/read.d.ts.map +1 -0
  222. package/dist/adapters/postgresql/tools/jsonb/{basic.js → read.js} +41 -482
  223. package/dist/adapters/postgresql/tools/jsonb/read.js.map +1 -0
  224. package/dist/adapters/postgresql/tools/jsonb/{advanced.d.ts → transform.d.ts} +1 -13
  225. package/dist/adapters/postgresql/tools/jsonb/transform.d.ts.map +1 -0
  226. package/dist/adapters/postgresql/tools/jsonb/{advanced.js → transform.js} +26 -357
  227. package/dist/adapters/postgresql/tools/jsonb/transform.js.map +1 -0
  228. package/dist/adapters/postgresql/tools/jsonb/write.d.ts +14 -0
  229. package/dist/adapters/postgresql/tools/jsonb/write.d.ts.map +1 -0
  230. package/dist/adapters/postgresql/tools/jsonb/write.js +468 -0
  231. package/dist/adapters/postgresql/tools/jsonb/write.js.map +1 -0
  232. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  233. package/dist/adapters/postgresql/tools/kcache.js +116 -51
  234. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  235. package/dist/adapters/postgresql/tools/ltree.js +346 -260
  236. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  237. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts +15 -0
  238. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts.map +1 -0
  239. package/dist/adapters/postgresql/tools/{monitoring.js → monitoring/analysis.js} +24 -359
  240. package/dist/adapters/postgresql/tools/monitoring/analysis.js.map +1 -0
  241. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts +17 -0
  242. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts.map +1 -0
  243. package/dist/adapters/postgresql/tools/monitoring/basic.js +432 -0
  244. package/dist/adapters/postgresql/tools/monitoring/basic.js.map +1 -0
  245. package/dist/adapters/postgresql/tools/monitoring/index.d.ts +16 -0
  246. package/dist/adapters/postgresql/tools/monitoring/index.d.ts.map +1 -0
  247. package/dist/adapters/postgresql/tools/monitoring/index.js +31 -0
  248. package/dist/adapters/postgresql/tools/monitoring/index.js.map +1 -0
  249. package/dist/adapters/postgresql/tools/partitioning/index.d.ts +15 -0
  250. package/dist/adapters/postgresql/tools/partitioning/index.d.ts.map +1 -0
  251. package/dist/adapters/postgresql/tools/partitioning/index.js +23 -0
  252. package/dist/adapters/postgresql/tools/partitioning/index.js.map +1 -0
  253. package/dist/adapters/postgresql/tools/partitioning/info.d.ts +11 -0
  254. package/dist/adapters/postgresql/tools/partitioning/info.d.ts.map +1 -0
  255. package/dist/adapters/postgresql/tools/partitioning/info.js +302 -0
  256. package/dist/adapters/postgresql/tools/partitioning/info.js.map +1 -0
  257. package/dist/adapters/postgresql/tools/partitioning/management.d.ts +28 -0
  258. package/dist/adapters/postgresql/tools/partitioning/management.d.ts.map +1 -0
  259. package/dist/adapters/postgresql/tools/{partitioning.js → partitioning/management.js} +48 -307
  260. package/dist/adapters/postgresql/tools/partitioning/management.js.map +1 -0
  261. package/dist/adapters/postgresql/tools/partman/helpers.d.ts +29 -0
  262. package/dist/adapters/postgresql/tools/partman/helpers.d.ts.map +1 -0
  263. package/dist/adapters/postgresql/tools/partman/helpers.js +59 -0
  264. package/dist/adapters/postgresql/tools/partman/helpers.js.map +1 -0
  265. package/dist/adapters/postgresql/tools/partman/index.d.ts +2 -1
  266. package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -1
  267. package/dist/adapters/postgresql/tools/partman/index.js +4 -2
  268. package/dist/adapters/postgresql/tools/partman/index.js.map +1 -1
  269. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts +20 -0
  270. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts.map +1 -0
  271. package/dist/adapters/postgresql/tools/partman/maintenance.js +496 -0
  272. package/dist/adapters/postgresql/tools/partman/maintenance.js.map +1 -0
  273. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  274. package/dist/adapters/postgresql/tools/partman/management.js +438 -383
  275. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  276. package/dist/adapters/postgresql/tools/partman/operations.d.ts +1 -13
  277. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  278. package/dist/adapters/postgresql/tools/partman/operations.js +171 -652
  279. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  280. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  281. package/dist/adapters/postgresql/tools/performance/analysis.js +69 -42
  282. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  283. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  284. package/dist/adapters/postgresql/tools/performance/monitoring.js +80 -55
  285. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  286. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  287. package/dist/adapters/postgresql/tools/performance/optimization.js +18 -11
  288. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  289. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  290. package/dist/adapters/postgresql/tools/performance/stats.js +439 -318
  291. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  292. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  293. package/dist/adapters/postgresql/tools/pgcrypto.js +45 -77
  294. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  295. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  296. package/dist/adapters/postgresql/tools/postgis/basic.js +121 -93
  297. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  298. package/dist/adapters/postgresql/tools/schema/index.d.ts +16 -0
  299. package/dist/adapters/postgresql/tools/schema/index.d.ts.map +1 -0
  300. package/dist/adapters/postgresql/tools/schema/index.js +32 -0
  301. package/dist/adapters/postgresql/tools/schema/index.js.map +1 -0
  302. package/dist/adapters/postgresql/tools/schema/objects.d.ts +15 -0
  303. package/dist/adapters/postgresql/tools/schema/objects.d.ts.map +1 -0
  304. package/dist/adapters/postgresql/tools/schema/objects.js +378 -0
  305. package/dist/adapters/postgresql/tools/schema/objects.js.map +1 -0
  306. package/dist/adapters/postgresql/tools/schema/views.d.ts +15 -0
  307. package/dist/adapters/postgresql/tools/schema/views.d.ts.map +1 -0
  308. package/dist/adapters/postgresql/tools/{schema.js → schema/views.js} +64 -386
  309. package/dist/adapters/postgresql/tools/schema/views.js.map +1 -0
  310. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  311. package/dist/adapters/postgresql/tools/stats/advanced.js +1 -218
  312. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  313. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts +33 -0
  314. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts.map +1 -0
  315. package/dist/adapters/postgresql/tools/stats/math-utils.js +225 -0
  316. package/dist/adapters/postgresql/tools/stats/math-utils.js.map +1 -0
  317. package/dist/adapters/postgresql/tools/text/index.d.ts +16 -0
  318. package/dist/adapters/postgresql/tools/text/index.d.ts.map +1 -0
  319. package/dist/adapters/postgresql/tools/text/index.js +33 -0
  320. package/dist/adapters/postgresql/tools/text/index.js.map +1 -0
  321. package/dist/adapters/postgresql/tools/text/matching.d.ts +17 -0
  322. package/dist/adapters/postgresql/tools/text/matching.d.ts.map +1 -0
  323. package/dist/adapters/postgresql/tools/text/matching.js +565 -0
  324. package/dist/adapters/postgresql/tools/text/matching.js.map +1 -0
  325. package/dist/adapters/postgresql/tools/text/search.d.ts +17 -0
  326. package/dist/adapters/postgresql/tools/text/search.d.ts.map +1 -0
  327. package/dist/adapters/postgresql/tools/text/search.js +653 -0
  328. package/dist/adapters/postgresql/tools/text/search.js.map +1 -0
  329. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  330. package/dist/adapters/postgresql/tools/transactions.js +11 -27
  331. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  332. package/dist/adapters/postgresql/tools/vector/{basic.d.ts → data.d.ts} +10 -8
  333. package/dist/adapters/postgresql/tools/vector/data.d.ts.map +1 -0
  334. package/dist/adapters/postgresql/tools/vector/data.js +540 -0
  335. package/dist/adapters/postgresql/tools/vector/data.js.map +1 -0
  336. package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -1
  337. package/dist/adapters/postgresql/tools/vector/index.js +6 -2
  338. package/dist/adapters/postgresql/tools/vector/index.js.map +1 -1
  339. package/dist/adapters/postgresql/tools/vector/management.d.ts +11 -0
  340. package/dist/adapters/postgresql/tools/vector/management.d.ts.map +1 -0
  341. package/dist/adapters/postgresql/tools/vector/management.js +425 -0
  342. package/dist/adapters/postgresql/tools/vector/management.js.map +1 -0
  343. package/dist/adapters/postgresql/tools/vector/query.d.ts +14 -0
  344. package/dist/adapters/postgresql/tools/vector/query.d.ts.map +1 -0
  345. package/dist/adapters/postgresql/tools/vector/query.js +767 -0
  346. package/dist/adapters/postgresql/tools/vector/query.js.map +1 -0
  347. package/dist/adapters/postgresql/tools/vector/{advanced.d.ts → search-advanced.d.ts} +4 -5
  348. package/dist/adapters/postgresql/tools/vector/search-advanced.d.ts.map +1 -0
  349. package/dist/adapters/postgresql/tools/vector/search-advanced.js +626 -0
  350. package/dist/adapters/postgresql/tools/vector/search-advanced.js.map +1 -0
  351. package/dist/auth/scopes.js +1 -1
  352. package/dist/auth/scopes.js.map +1 -1
  353. package/dist/cli/args.d.ts +3 -2
  354. package/dist/cli/args.d.ts.map +1 -1
  355. package/dist/cli/args.js +4 -3
  356. package/dist/cli/args.js.map +1 -1
  357. package/dist/cli.js +10 -4
  358. package/dist/cli.js.map +1 -1
  359. package/dist/codemode/api/aliases.d.ts +14 -0
  360. package/dist/codemode/api/aliases.d.ts.map +1 -0
  361. package/dist/codemode/api/aliases.js +503 -0
  362. package/dist/codemode/api/aliases.js.map +1 -0
  363. package/dist/codemode/api/group-api.d.ts +23 -0
  364. package/dist/codemode/api/group-api.d.ts.map +1 -0
  365. package/dist/codemode/api/group-api.js +179 -0
  366. package/dist/codemode/api/group-api.js.map +1 -0
  367. package/dist/codemode/{api.d.ts → api/index.d.ts} +4 -4
  368. package/dist/codemode/api/index.d.ts.map +1 -0
  369. package/dist/codemode/api/index.js +192 -0
  370. package/dist/codemode/api/index.js.map +1 -0
  371. package/dist/codemode/api/maps.d.ts +47 -0
  372. package/dist/codemode/api/maps.d.ts.map +1 -0
  373. package/dist/codemode/api/maps.js +523 -0
  374. package/dist/codemode/api/maps.js.map +1 -0
  375. package/dist/codemode/api/normalize.d.ts +13 -0
  376. package/dist/codemode/api/normalize.d.ts.map +1 -0
  377. package/dist/codemode/api/normalize.js +120 -0
  378. package/dist/codemode/api/normalize.js.map +1 -0
  379. package/dist/codemode/index.d.ts +1 -1
  380. package/dist/codemode/index.d.ts.map +1 -1
  381. package/dist/codemode/index.js +1 -1
  382. package/dist/codemode/index.js.map +1 -1
  383. package/dist/codemode/sandbox.d.ts.map +1 -1
  384. package/dist/codemode/sandbox.js +8 -25
  385. package/dist/codemode/sandbox.js.map +1 -1
  386. package/dist/server/McpServer.d.ts +1 -1
  387. package/dist/server/McpServer.d.ts.map +1 -1
  388. package/dist/server/McpServer.js +1 -2
  389. package/dist/server/McpServer.js.map +1 -1
  390. package/dist/transports/http.d.ts +43 -10
  391. package/dist/transports/http.d.ts.map +1 -1
  392. package/dist/transports/http.js +282 -49
  393. package/dist/transports/http.js.map +1 -1
  394. package/dist/utils/logger.d.ts +6 -6
  395. package/dist/utils/logger.d.ts.map +1 -1
  396. package/dist/utils/logger.js +18 -15
  397. package/dist/utils/logger.js.map +1 -1
  398. package/dist/utils/progress-utils.d.ts +2 -2
  399. package/dist/utils/progress-utils.d.ts.map +1 -1
  400. package/dist/utils/progress-utils.js +2 -3
  401. package/dist/utils/progress-utils.js.map +1 -1
  402. package/dist/utils/version.d.ts +9 -0
  403. package/dist/utils/version.d.ts.map +1 -0
  404. package/dist/utils/version.js +12 -0
  405. package/dist/utils/version.js.map +1 -0
  406. package/dist/utils/where-clause.d.ts +4 -0
  407. package/dist/utils/where-clause.d.ts.map +1 -1
  408. package/dist/utils/where-clause.js +16 -0
  409. package/dist/utils/where-clause.js.map +1 -1
  410. package/package.json +6 -4
  411. package/dist/adapters/postgresql/schemas/core.d.ts.map +0 -1
  412. package/dist/adapters/postgresql/schemas/core.js.map +0 -1
  413. package/dist/adapters/postgresql/schemas/extensions.d.ts +0 -852
  414. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +0 -1
  415. package/dist/adapters/postgresql/schemas/extensions.js +0 -1202
  416. package/dist/adapters/postgresql/schemas/extensions.js.map +0 -1
  417. package/dist/adapters/postgresql/schemas/jsonb.d.ts +0 -541
  418. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +0 -1
  419. package/dist/adapters/postgresql/schemas/jsonb.js +0 -814
  420. package/dist/adapters/postgresql/schemas/jsonb.js.map +0 -1
  421. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +0 -1
  422. package/dist/adapters/postgresql/schemas/postgis.js.map +0 -1
  423. package/dist/adapters/postgresql/schemas/stats.d.ts.map +0 -1
  424. package/dist/adapters/postgresql/schemas/stats.js.map +0 -1
  425. package/dist/adapters/postgresql/tools/citext.d.ts +0 -18
  426. package/dist/adapters/postgresql/tools/citext.d.ts.map +0 -1
  427. package/dist/adapters/postgresql/tools/citext.js.map +0 -1
  428. package/dist/adapters/postgresql/tools/introspection.d.ts +0 -15
  429. package/dist/adapters/postgresql/tools/introspection.d.ts.map +0 -1
  430. package/dist/adapters/postgresql/tools/introspection.js +0 -1682
  431. package/dist/adapters/postgresql/tools/introspection.js.map +0 -1
  432. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +0 -1
  433. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +0 -1
  434. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +0 -20
  435. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +0 -1
  436. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +0 -1
  437. package/dist/adapters/postgresql/tools/monitoring.d.ts +0 -13
  438. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +0 -1
  439. package/dist/adapters/postgresql/tools/monitoring.js.map +0 -1
  440. package/dist/adapters/postgresql/tools/partitioning.d.ts +0 -13
  441. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +0 -1
  442. package/dist/adapters/postgresql/tools/partitioning.js.map +0 -1
  443. package/dist/adapters/postgresql/tools/schema.d.ts +0 -13
  444. package/dist/adapters/postgresql/tools/schema.d.ts.map +0 -1
  445. package/dist/adapters/postgresql/tools/schema.js.map +0 -1
  446. package/dist/adapters/postgresql/tools/text.d.ts +0 -13
  447. package/dist/adapters/postgresql/tools/text.d.ts.map +0 -1
  448. package/dist/adapters/postgresql/tools/text.js +0 -1082
  449. package/dist/adapters/postgresql/tools/text.js.map +0 -1
  450. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +0 -1
  451. package/dist/adapters/postgresql/tools/vector/advanced.js +0 -958
  452. package/dist/adapters/postgresql/tools/vector/advanced.js.map +0 -1
  453. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +0 -1
  454. package/dist/adapters/postgresql/tools/vector/basic.js +0 -1165
  455. package/dist/adapters/postgresql/tools/vector/basic.js.map +0 -1
  456. package/dist/codemode/api.d.ts.map +0 -1
  457. package/dist/codemode/api.js +0 -1544
  458. package/dist/codemode/api.js.map +0 -1
@@ -1,28 +1,20 @@
1
1
  /**
2
- * PostgreSQL JSONB Tools - Basic Operations
2
+ * PostgreSQL JSONB Tools - Read Operations
3
3
  *
4
- * Core JSONB operations including extract, set, insert, delete, contains, path query, aggregation, and type checks.
4
+ * Read-only JSONB tools: extract, contains, pathQuery, agg, keys, typeof.
5
+ * Also exports shared utilities: toJsonString, resolveJsonbTable, parseSelectAlias.
5
6
  */
6
- import { z, ZodError } from "zod";
7
- import { readOnly, write } from "../../../../utils/annotations.js";
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
10
  import { sanitizeWhereClause } from "../../../../utils/where-clause.js";
11
11
  import { sanitizeTableName, sanitizeIdentifier, } from "../../../../utils/identifiers.js";
12
- import {
13
- // Base schemas (for MCP inputSchema visibility)
14
- JsonbExtractSchemaBase, JsonbSetSchemaBase, JsonbContainsSchemaBase, JsonbPathQuerySchemaBase, JsonbInsertSchemaBase, JsonbDeleteSchemaBase, JsonbTypeofSchemaBase, JsonbKeysSchemaBase, JsonbStripNullsSchemaBase, JsonbAggSchemaBase,
15
- // Full schemas (for handler parsing - with preprocess)
16
- JsonbExtractSchema, JsonbSetSchema, JsonbContainsSchema, JsonbPathQuerySchema, JsonbInsertSchema, JsonbDeleteSchema, JsonbTypeofSchema, JsonbKeysSchema, JsonbStripNullsSchema, JsonbAggSchema,
17
- // Path utilities
18
- normalizePathToArray, normalizePathForInsert, parseJsonbValue,
19
- // Output schemas
20
- JsonbExtractOutputSchema, JsonbSetOutputSchema, JsonbInsertOutputSchema, JsonbDeleteOutputSchema, JsonbContainsOutputSchema, JsonbPathQueryOutputSchema, JsonbAggOutputSchema, JsonbObjectOutputSchema, JsonbArrayOutputSchema, JsonbKeysOutputSchema, JsonbStripNullsOutputSchema, JsonbTypeofOutputSchema, } from "../../schemas/index.js";
12
+ import { JsonbExtractSchemaBase, JsonbContainsSchemaBase, JsonbPathQuerySchemaBase, JsonbTypeofSchemaBase, JsonbKeysSchemaBase, JsonbAggSchemaBase, JsonbExtractSchema, JsonbContainsSchema, JsonbPathQuerySchema, JsonbTypeofSchema, JsonbKeysSchema, JsonbAggSchema, normalizePathToArray, parseJsonbValue, JsonbExtractOutputSchema, JsonbContainsOutputSchema, JsonbPathQueryOutputSchema, JsonbAggOutputSchema, JsonbKeysOutputSchema, JsonbTypeofOutputSchema, } from "../../schemas/index.js";
21
13
  /**
22
14
  * Convert value to a valid JSON string for PostgreSQL's ::jsonb cast
23
15
  * Always uses JSON.stringify to ensure proper encoding
24
16
  */
25
- function toJsonString(value) {
17
+ export function toJsonString(value) {
26
18
  return JSON.stringify(value);
27
19
  }
28
20
  /**
@@ -30,7 +22,7 @@ function toJsonString(value) {
30
22
  * Validates schema existence when non-public, returns schema-qualified table name.
31
23
  * Returns [qualifiedTable, null] on success, or [null, errorResponse] on failure.
32
24
  */
33
- async function resolveJsonbTable(adapter, table, schema) {
25
+ export async function resolveJsonbTable(adapter, table, schema) {
34
26
  const schemaName = schema ?? "public";
35
27
  // Validate schema existence for non-public schemas
36
28
  if (schemaName !== "public") {
@@ -59,18 +51,27 @@ export function createJsonbExtractTool(adapter) {
59
51
  handler: async (params, _context) => {
60
52
  try {
61
53
  const parsed = JsonbExtractSchema.parse(params);
54
+ const rawLimit = Number(parsed.limit);
55
+ const limit = parsed.limit === undefined
56
+ ? undefined
57
+ : isNaN(rawLimit)
58
+ ? undefined
59
+ : rawLimit;
62
60
  const whereClause = parsed.where
63
61
  ? ` WHERE ${sanitizeWhereClause(parsed.where)}`
64
62
  : "";
65
- const limitClause = parsed.limit !== undefined ? ` LIMIT ${String(parsed.limit)}` : "";
66
- // Use normalizePathToArray for PostgreSQL #> operator
67
- const pathArray = normalizePathToArray(parsed.path);
68
- // After preprocess and refine, table and column are guaranteed set
63
+ const limitClause = limit !== undefined ? ` LIMIT ${String(limit)}` : "";
64
+ // After preprocess and refine, table, column, and path are guaranteed set
69
65
  const table = parsed.table ?? parsed.tableName;
70
66
  const column = parsed.column ?? parsed.col;
71
67
  if (!table || !column) {
72
68
  return { success: false, error: "table and column are required" };
73
69
  }
70
+ if (parsed.path === undefined) {
71
+ return { success: false, error: "path is required" };
72
+ }
73
+ // Use normalizePathToArray for PostgreSQL #> operator
74
+ const pathArray = normalizePathToArray(parsed.path);
74
75
  // Validate schema and build qualified table name
75
76
  const [qualifiedTable, tableError] = await resolveJsonbTable(adapter, table, parsed.schema);
76
77
  if (tableError)
@@ -144,289 +145,6 @@ export function createJsonbExtractTool(adapter) {
144
145
  },
145
146
  };
146
147
  }
147
- export function createJsonbSetTool(adapter) {
148
- return {
149
- name: "pg_jsonb_set",
150
- description: "Set value in JSONB at path. Uses dot-notation by default; for literal dots in keys use array format [\"key.with.dots\"]. Use empty path ('' or []) to replace entire column value.",
151
- group: "jsonb",
152
- inputSchema: JsonbSetSchemaBase,
153
- outputSchema: JsonbSetOutputSchema,
154
- annotations: write("JSONB Set"),
155
- icons: getToolIcons("jsonb", write("JSONB Set")),
156
- handler: async (params, _context) => {
157
- try {
158
- const parsed = JsonbSetSchema.parse(params);
159
- // Resolve table/column from optional aliases
160
- const table = parsed.table ?? parsed.tableName;
161
- const column = parsed.column ?? parsed.col;
162
- if (!table || !column) {
163
- return { success: false, error: "table and column are required" };
164
- }
165
- const { value, where, createMissing } = parsed;
166
- // Validate schema and build qualified table name
167
- const [qualifiedTable, tableError] = await resolveJsonbTable(adapter, table, parsed.schema);
168
- if (tableError)
169
- return tableError;
170
- // Normalize path to array format
171
- const path = normalizePathToArray(parsed.path);
172
- // Validate required 'where' parameter
173
- if (!where || where.trim() === "") {
174
- return {
175
- success: false,
176
- error: 'pg_jsonb_set requires a WHERE clause to identify rows to update. Example: where: "id = 1"',
177
- };
178
- }
179
- // Validate value is provided (undefined would set column to null)
180
- if (value === undefined) {
181
- return {
182
- success: false,
183
- error: "pg_jsonb_set requires a value parameter. To remove a key, use pg_jsonb_delete instead.",
184
- };
185
- }
186
- const createFlag = createMissing !== false;
187
- // Handle empty path - replace entire column value
188
- if (path.length === 0) {
189
- const sql = `UPDATE ${qualifiedTable} SET "${column}" = $1::jsonb WHERE ${sanitizeWhereClause(where)}`;
190
- const result = await adapter.executeQuery(sql, [toJsonString(value)]);
191
- return {
192
- rowsAffected: result.rowsAffected,
193
- hint: "Replaced entire column value (empty path)",
194
- };
195
- }
196
- // For deep nested paths with createMissing=true, build intermediate objects
197
- // PostgreSQL's jsonb_set only creates one level, so we nest calls for deep paths
198
- let sql;
199
- if (createFlag && path.length > 1) {
200
- // Build nested jsonb_set calls to ensure each intermediate path exists
201
- // Start with COALESCE to handle NULL columns
202
- let expr = `COALESCE("${column}", '{}'::jsonb)`;
203
- // For each intermediate level, wrap in jsonb_set to initialize to {}
204
- for (let i = 0; i < path.length - 1; i++) {
205
- const subPath = path.slice(0, i + 1);
206
- const pathStr = "{" + subPath.join(",") + "}";
207
- // Use COALESCE on the extraction from current expr, not original column
208
- // This properly chains the nested creation
209
- expr = `jsonb_set(${expr}, '${pathStr}'::text[], COALESCE((${expr}) #> '${pathStr}'::text[], '{}'::jsonb), true)`;
210
- }
211
- // Final set with actual value
212
- const fullPathStr = "{" + path.join(",") + "}";
213
- expr = `jsonb_set(${expr}, '${fullPathStr}'::text[], $1::jsonb, true)`;
214
- sql = `UPDATE ${qualifiedTable} SET "${column}" = ${expr} WHERE ${sanitizeWhereClause(where)}`;
215
- const result = await adapter.executeQuery(sql, [toJsonString(value)]);
216
- return {
217
- rowsAffected: result.rowsAffected,
218
- hint: "rowsAffected counts matched rows, not path creations",
219
- };
220
- }
221
- else {
222
- // Use COALESCE to handle NULL columns - initialize to empty object
223
- sql = `UPDATE ${qualifiedTable} SET "${column}" = jsonb_set(COALESCE("${column}", '{}'::jsonb), $1, $2::jsonb, $3) WHERE ${sanitizeWhereClause(where)}`;
224
- const result = await adapter.executeQuery(sql, [
225
- path,
226
- toJsonString(value),
227
- createFlag,
228
- ]);
229
- const hint = createFlag
230
- ? "NULL columns initialized to {}; createMissing creates path if absent"
231
- : "createMissing=false: path must exist or value won't be set";
232
- return { rowsAffected: result.rowsAffected, hint };
233
- }
234
- }
235
- catch (error) {
236
- return {
237
- success: false,
238
- error: formatPostgresError(error, {
239
- tool: "pg_jsonb_set",
240
- }),
241
- };
242
- }
243
- },
244
- };
245
- }
246
- export function createJsonbInsertTool(adapter) {
247
- return {
248
- name: "pg_jsonb_insert",
249
- description: "Insert value into JSONB array. Index -1 inserts BEFORE last element; use insertAfter:true with -1 to append at end.",
250
- group: "jsonb",
251
- inputSchema: JsonbInsertSchemaBase,
252
- outputSchema: JsonbInsertOutputSchema,
253
- annotations: write("JSONB Insert"),
254
- icons: getToolIcons("jsonb", write("JSONB Insert")),
255
- handler: async (params, _context) => {
256
- try {
257
- const parsed = JsonbInsertSchema.parse(params);
258
- // Resolve table/column from optional aliases
259
- const table = parsed.table ?? parsed.tableName;
260
- const column = parsed.column ?? parsed.col;
261
- if (!table || !column) {
262
- return { success: false, error: "table and column are required" };
263
- }
264
- // Validate schema and build qualified table name
265
- const [qualifiedTable, tableError] = await resolveJsonbTable(adapter, table, parsed.schema);
266
- if (tableError)
267
- return tableError;
268
- // Normalize path - convert numeric segments to numbers for PostgreSQL
269
- const path = normalizePathForInsert(parsed.path);
270
- // Validate required 'where' parameter
271
- if (!parsed.where || parsed.where.trim() === "") {
272
- return {
273
- success: false,
274
- error: 'pg_jsonb_insert requires a WHERE clause to identify rows to update. Example: where: "id = 1"',
275
- };
276
- }
277
- // Check for NULL columns first - jsonb_insert requires existing array context
278
- const checkSql = `SELECT COUNT(*) as null_count FROM ${qualifiedTable} WHERE ${sanitizeWhereClause(parsed.where)} AND "${column}" IS NULL`;
279
- const checkResult = await adapter.executeQuery(checkSql);
280
- const nullCount = Number(checkResult.rows?.[0]?.["null_count"] ?? 0);
281
- if (nullCount > 0) {
282
- return {
283
- success: false,
284
- error: `pg_jsonb_insert cannot operate on NULL columns. Use pg_jsonb_set to initialize the column first: pg_jsonb_set({table: "${table}", column: "${column}", path: "myarray", value: [], where: "..."})`,
285
- };
286
- }
287
- // Validate target path points to an array, not an object
288
- // Get the parent path (one level up from where we're inserting)
289
- const parentPath = path.slice(0, -1);
290
- if (parentPath.length === 0) {
291
- // Inserting at root level - check column type
292
- const typeCheckSql = `SELECT jsonb_typeof("${column}") as type FROM ${qualifiedTable} WHERE ${sanitizeWhereClause(parsed.where)} LIMIT 1`;
293
- const typeResult = await adapter.executeQuery(typeCheckSql);
294
- const columnType = typeResult.rows?.[0]?.["type"];
295
- if (columnType && columnType !== "array") {
296
- return {
297
- success: false,
298
- error: `pg_jsonb_insert requires an array target. Column contains '${columnType}'. Use pg_jsonb_set for objects.`,
299
- };
300
- }
301
- }
302
- else {
303
- // Check the parent path type
304
- const typeCheckSql = `SELECT jsonb_typeof("${column}" #> $1) as type FROM ${qualifiedTable} WHERE ${sanitizeWhereClause(parsed.where)} LIMIT 1`;
305
- const parentPathStrings = parentPath.map((p) => String(p));
306
- const typeResult = await adapter.executeQuery(typeCheckSql, [
307
- parentPathStrings,
308
- ]);
309
- const targetType = typeResult.rows?.[0]?.["type"];
310
- if (targetType && targetType !== "array") {
311
- return {
312
- success: false,
313
- error: `pg_jsonb_insert requires an array target. Path '${parentPathStrings.join(".")}' contains '${targetType}'. Use pg_jsonb_set for objects.`,
314
- };
315
- }
316
- }
317
- const sql = `UPDATE ${qualifiedTable} SET "${column}" = jsonb_insert("${column}", $1, $2::jsonb, $3) WHERE ${sanitizeWhereClause(parsed.where)}`;
318
- const result = await adapter.executeQuery(sql, [
319
- path,
320
- toJsonString(parsed.value),
321
- parsed.insertAfter ?? false,
322
- ]);
323
- return { rowsAffected: result.rowsAffected };
324
- }
325
- catch (error) {
326
- // Improve specific PostgreSQL error messages
327
- if (error instanceof Error &&
328
- error.message.includes("cannot replace existing key")) {
329
- return {
330
- success: false,
331
- error: `pg_jsonb_insert is for arrays only. For objects, use pg_jsonb_set. If updating an existing array element, use pg_jsonb_set.`,
332
- };
333
- }
334
- if (error instanceof Error &&
335
- error.message.includes("path element is not an integer")) {
336
- return {
337
- success: false,
338
- error: `pg_jsonb_insert requires numeric index for array position. Use array format with number: ["tags", 0] not ["tags", "0"] or "tags.0"`,
339
- };
340
- }
341
- return {
342
- success: false,
343
- error: formatPostgresError(error, {
344
- tool: "pg_jsonb_insert",
345
- }),
346
- };
347
- }
348
- },
349
- };
350
- }
351
- export function createJsonbDeleteTool(adapter) {
352
- return {
353
- name: "pg_jsonb_delete",
354
- description: "Delete a key or array element from a JSONB column. Accepts path as string or array. Note: rowsAffected reflects matched rows, not whether key existed.",
355
- group: "jsonb",
356
- inputSchema: JsonbDeleteSchemaBase,
357
- outputSchema: JsonbDeleteOutputSchema,
358
- annotations: write("JSONB Delete"),
359
- icons: getToolIcons("jsonb", write("JSONB Delete")),
360
- handler: async (params, _context) => {
361
- try {
362
- const parsed = JsonbDeleteSchema.parse(params);
363
- // Resolve table/column from optional aliases
364
- const table = parsed.table ?? parsed.tableName;
365
- const column = parsed.column ?? parsed.col;
366
- if (!table || !column) {
367
- return { success: false, error: "table and column are required" };
368
- }
369
- // Validate schema and build qualified table name
370
- const [qualifiedTable, tableError] = await resolveJsonbTable(adapter, table, parsed.schema);
371
- if (tableError)
372
- return tableError;
373
- // Validate required 'where' parameter
374
- if (!parsed.where || parsed.where.trim() === "") {
375
- return {
376
- success: false,
377
- error: 'pg_jsonb_delete requires a WHERE clause to identify rows to update. Example: where: "id = 1"',
378
- };
379
- }
380
- // Validate path is not empty
381
- if (parsed.path === "" ||
382
- (Array.isArray(parsed.path) && parsed.path.length === 0)) {
383
- return {
384
- success: false,
385
- error: "pg_jsonb_delete requires a non-empty path. Provide a key name or path to delete.",
386
- };
387
- }
388
- // Determine if path should be treated as nested (array path) or single key
389
- let pathForPostgres;
390
- let useArrayOperator;
391
- if (typeof parsed.path === "number") {
392
- pathForPostgres = [String(parsed.path)];
393
- useArrayOperator = true;
394
- }
395
- else if (Array.isArray(parsed.path)) {
396
- pathForPostgres = normalizePathToArray(parsed.path);
397
- useArrayOperator = true;
398
- }
399
- else if (parsed.path.includes(".")) {
400
- pathForPostgres = parsed.path.split(".").filter((p) => p !== "");
401
- useArrayOperator = true;
402
- }
403
- else if (/^\d+$/.test(parsed.path)) {
404
- pathForPostgres = [parsed.path];
405
- useArrayOperator = true;
406
- }
407
- else {
408
- pathForPostgres = parsed.path;
409
- useArrayOperator = false;
410
- }
411
- const pathExpr = useArrayOperator ? `#- $1` : `- $1`;
412
- const sql = `UPDATE ${qualifiedTable} SET "${column}" = "${column}" ${pathExpr} WHERE ${sanitizeWhereClause(parsed.where)}`;
413
- const result = await adapter.executeQuery(sql, [pathForPostgres]);
414
- return {
415
- rowsAffected: result.rowsAffected,
416
- hint: "rowsAffected counts matched rows, not whether key existed",
417
- };
418
- }
419
- catch (error) {
420
- return {
421
- success: false,
422
- error: formatPostgresError(error, {
423
- tool: "pg_jsonb_delete",
424
- }),
425
- };
426
- }
427
- },
428
- };
429
- }
430
148
  export function createJsonbContainsTool(adapter) {
431
149
  return {
432
150
  name: "pg_jsonb_contains",
@@ -454,7 +172,12 @@ export function createJsonbContainsTool(adapter) {
454
172
  const value = parseJsonbValue(parsed.value);
455
173
  // Apply default limit (100) to prevent large payloads
456
174
  const DEFAULT_LIMIT = 100;
457
- const requestedLimit = parsed.limit;
175
+ const rawLimit = Number(parsed.limit);
176
+ const requestedLimit = parsed.limit === undefined
177
+ ? undefined
178
+ : isNaN(rawLimit)
179
+ ? undefined
180
+ : rawLimit;
458
181
  const effectiveLimit = requestedLimit === 0 ? 0 : (requestedLimit ?? DEFAULT_LIMIT);
459
182
  const selectCols = select !== undefined && select.length > 0
460
183
  ? select
@@ -551,7 +274,12 @@ export function createJsonbPathQueryTool(adapter) {
551
274
  const varsJson = vars ? JSON.stringify(vars) : "{}";
552
275
  // Apply default limit (100) to prevent large payloads
553
276
  const DEFAULT_LIMIT = 100;
554
- const requestedLimit = parsed.limit;
277
+ const rawLimit = Number(parsed.limit);
278
+ const requestedLimit = parsed.limit === undefined
279
+ ? undefined
280
+ : isNaN(rawLimit)
281
+ ? undefined
282
+ : rawLimit;
555
283
  const effectiveLimit = requestedLimit === 0 ? 0 : (requestedLimit ?? DEFAULT_LIMIT);
556
284
  const baseSql = `SELECT jsonb_path_query("${column}", $1::jsonpath, $2::jsonb) as result FROM ${qualifiedTable}${whereClause}`;
557
285
  // Fetch limit+1 rows to detect truncation without a separate count query
@@ -601,7 +329,7 @@ export function createJsonbPathQueryTool(adapter) {
601
329
  * Handles: "column", "expression AS alias", "expression as alias"
602
330
  * Returns: { expr: string, alias: string }
603
331
  */
604
- function parseSelectAlias(selectItem) {
332
+ export function parseSelectAlias(selectItem) {
605
333
  // Match " AS " or " as " (case-insensitive) with word boundaries
606
334
  const aliasRegex = /^(.+?)\s+[Aa][Ss]\s+([\w]+)$/;
607
335
  const aliasMatch = aliasRegex.exec(selectItem);
@@ -662,7 +390,13 @@ export function createJsonbAggTool(adapter) {
662
390
  const orderByClause = parsed.orderBy
663
391
  ? ` ORDER BY ${parsed.orderBy}`
664
392
  : "";
665
- const limitClause = parsed.limit !== undefined ? ` LIMIT ${String(parsed.limit)}` : "";
393
+ const rawLimit = Number(parsed.limit);
394
+ const limit = parsed.limit === undefined
395
+ ? undefined
396
+ : isNaN(rawLimit)
397
+ ? undefined
398
+ : rawLimit;
399
+ const limitClause = limit !== undefined ? ` LIMIT ${String(limit)}` : "";
666
400
  const hasJsonbOperator = parsed.groupBy?.includes("->") ?? false;
667
401
  if (parsed.groupBy) {
668
402
  const groupExpr = hasJsonbOperator
@@ -704,111 +438,6 @@ export function createJsonbAggTool(adapter) {
704
438
  },
705
439
  };
706
440
  }
707
- // Schema for pg_jsonb_object - accepts 'data', 'object', or 'pairs' parameter containing key-value pairs
708
- // For code mode: pg.jsonb.object({name: "John", age: 30}) - passes through OBJECT_WRAP_MAP → {data: {...}}
709
- // For MCP tools: {data: {name: "John", age: 30}} or {pairs: {...}} or {object: {...}}
710
- const JsonbObjectSchema = z
711
- .object({
712
- data: z
713
- .record(z.string(), z.unknown())
714
- .optional()
715
- .describe('Key-value pairs to build: {name: "John", age: 30}'),
716
- object: z
717
- .record(z.string(), z.unknown())
718
- .optional()
719
- .describe("Alias for data"),
720
- pairs: z
721
- .record(z.string(), z.unknown())
722
- .optional()
723
- .describe("Alias for data (legacy)"),
724
- })
725
- .describe("Build a JSONB object from key-value pairs. Use data: {key: value} or object: {key: value}.");
726
- export function createJsonbObjectTool(adapter) {
727
- return {
728
- name: "pg_jsonb_object",
729
- description: 'Build a JSONB object. Use data: {name: "John", age: 30} or object: {name: "John"}. Returns {object: {...}}.',
730
- group: "jsonb",
731
- inputSchema: JsonbObjectSchema,
732
- outputSchema: JsonbObjectOutputSchema,
733
- annotations: readOnly("JSONB Object"),
734
- icons: getToolIcons("jsonb", readOnly("JSONB Object")),
735
- handler: async (params, _context) => {
736
- try {
737
- // Parse the input
738
- const parsed = JsonbObjectSchema.parse(params);
739
- // Support multiple parameter names: data, object, pairs (in priority order)
740
- const pairs = parsed.data ?? parsed.object ?? parsed.pairs ?? {};
741
- const entries = Object.entries(pairs);
742
- // Handle empty pairs - return empty object
743
- if (entries.length === 0) {
744
- return { object: {} };
745
- }
746
- const args = entries.flatMap(([k, v]) => [k, toJsonString(v)]);
747
- const placeholders = entries
748
- .map((_, i) => `$${String(i * 2 + 1)}::text, $${String(i * 2 + 2)}::jsonb`)
749
- .join(", ");
750
- const sql = `SELECT jsonb_build_object(${placeholders}) as result`;
751
- const result = await adapter.executeQuery(sql, args);
752
- return { object: result.rows?.[0]?.["result"] ?? {} };
753
- }
754
- catch (error) {
755
- return {
756
- success: false,
757
- error: formatPostgresError(error, {
758
- tool: "pg_jsonb_object",
759
- }),
760
- };
761
- }
762
- },
763
- };
764
- }
765
- // Schema for pg_jsonb_array - accepts values or elements (alias)
766
- const JsonbArraySchema = z
767
- .object({
768
- values: z.array(z.unknown()).optional().describe("Array elements to build"),
769
- elements: z
770
- .array(z.unknown())
771
- .optional()
772
- .describe("Array elements (alias for values)"),
773
- })
774
- .refine((data) => data.values !== undefined || data.elements !== undefined, {
775
- message: "Either 'values' or 'elements' must be provided",
776
- });
777
- export function createJsonbArrayTool(adapter) {
778
- return {
779
- name: "pg_jsonb_array",
780
- description: "Build a JSONB array from values. Accepts {values: [...]} or {elements: [...]}. Returns {array: [...]}.",
781
- group: "jsonb",
782
- inputSchema: JsonbArraySchema,
783
- outputSchema: JsonbArrayOutputSchema,
784
- annotations: readOnly("JSONB Array"),
785
- icons: getToolIcons("jsonb", readOnly("JSONB Array")),
786
- handler: async (params, _context) => {
787
- try {
788
- const parsed = params;
789
- // Support both 'values' and 'elements' parameter names
790
- const values = parsed.values ?? parsed.elements ?? [];
791
- if (values.length === 0) {
792
- return { array: [] };
793
- }
794
- const placeholders = values
795
- .map((_, i) => `$${String(i + 1)}::jsonb`)
796
- .join(", ");
797
- const sql = `SELECT jsonb_build_array(${placeholders}) as result`;
798
- const result = await adapter.executeQuery(sql, values.map((v) => toJsonString(v)));
799
- return { array: result.rows?.[0]?.["result"] };
800
- }
801
- catch (error) {
802
- return {
803
- success: false,
804
- error: formatPostgresError(error, {
805
- tool: "pg_jsonb_array",
806
- }),
807
- };
808
- }
809
- },
810
- };
811
- }
812
441
  export function createJsonbKeysTool(adapter) {
813
442
  return {
814
443
  name: "pg_jsonb_keys",
@@ -862,76 +491,6 @@ export function createJsonbKeysTool(adapter) {
862
491
  },
863
492
  };
864
493
  }
865
- export function createJsonbStripNullsTool(adapter) {
866
- return {
867
- name: "pg_jsonb_strip_nulls",
868
- description: "Remove null values from a JSONB column. Use preview=true to see changes without modifying data.",
869
- group: "jsonb",
870
- inputSchema: JsonbStripNullsSchemaBase,
871
- outputSchema: JsonbStripNullsOutputSchema,
872
- annotations: write("JSONB Strip Nulls"),
873
- icons: getToolIcons("jsonb", write("JSONB Strip Nulls")),
874
- handler: async (params, _context) => {
875
- try {
876
- // Parse with preprocess schema to resolve aliases (tableName→table, col→column, filter→where)
877
- // Wrap in try-catch to intercept Zod .refine() errors (e.g., missing WHERE)
878
- let parsed;
879
- try {
880
- parsed = JsonbStripNullsSchema.parse(params);
881
- }
882
- catch (error) {
883
- if (error instanceof ZodError) {
884
- const messages = error.issues.map((i) => i.message).join("; ");
885
- return {
886
- success: false,
887
- error: `pg_jsonb_strip_nulls validation error: ${messages}`,
888
- };
889
- }
890
- throw error;
891
- }
892
- const table = parsed.table;
893
- const column = parsed.column;
894
- const whereClause = parsed.where;
895
- if (!table || !column) {
896
- return { success: false, error: "table and column are required" };
897
- }
898
- // Validate schema and build qualified table name
899
- const [qualifiedTable, tableError] = await resolveJsonbTable(adapter, table, parsed.schema);
900
- if (tableError)
901
- return tableError;
902
- // Validate required 'where' parameter before SQL execution
903
- if (!whereClause || whereClause.trim() === "") {
904
- return {
905
- success: false,
906
- error: 'pg_jsonb_strip_nulls requires a WHERE clause to identify rows to update. Example: where: "id = 1"',
907
- };
908
- }
909
- if (parsed.preview === true) {
910
- // Preview mode - show before/after without modifying
911
- const previewSql = `SELECT "${column}" as before, jsonb_strip_nulls("${column}") as after FROM ${qualifiedTable} WHERE ${sanitizeWhereClause(whereClause)}`;
912
- const result = await adapter.executeQuery(previewSql);
913
- return {
914
- preview: true,
915
- rows: result.rows,
916
- count: result.rows?.length ?? 0,
917
- hint: "No changes made - preview only",
918
- };
919
- }
920
- const sql = `UPDATE ${qualifiedTable} SET "${column}" = jsonb_strip_nulls("${column}") WHERE ${sanitizeWhereClause(whereClause)}`;
921
- const result = await adapter.executeQuery(sql);
922
- return { rowsAffected: result.rowsAffected };
923
- }
924
- catch (error) {
925
- return {
926
- success: false,
927
- error: formatPostgresError(error, {
928
- tool: "pg_jsonb_strip_nulls",
929
- }),
930
- };
931
- }
932
- },
933
- };
934
- }
935
494
  export function createJsonbTypeofTool(adapter) {
936
495
  return {
937
496
  name: "pg_jsonb_typeof",
@@ -981,4 +540,4 @@ export function createJsonbTypeofTool(adapter) {
981
540
  },
982
541
  };
983
542
  }
984
- //# sourceMappingURL=basic.js.map
543
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/read.ts"],"names":[],"mappings":"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"}