@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
@@ -1,814 +0,0 @@
1
- /**
2
- * postgres-mcp - JSONB Tool Schemas
3
- *
4
- * Input validation schemas for JSONB operations.
5
- *
6
- * DUAL-SCHEMA PATTERN:
7
- * Base schemas are exported for MCP (visible parameters).
8
- * Preprocess functions are exported for handlers to normalize inputs.
9
- * This ensures MCP clients see parameters while handlers get normalized data.
10
- *
11
- * PATH FORMAT NORMALIZATION:
12
- * All tools now accept BOTH formats for paths:
13
- * - STRING: 'a.b[0]' or 'a.b.0' (dot notation)
14
- * - ARRAY: ['a', 'b', '0']
15
- */
16
- import { z } from "zod";
17
- /**
18
- * Convert a string path to array format
19
- * 'a.b[0].c' → ['a', 'b', '0', 'c']
20
- * 'a.b.0' → ['a', 'b', '0']
21
- * '[-1]' → ['-1'] (supports negative indices)
22
- */
23
- export function stringPathToArray(path) {
24
- // Handle JSONPath format ($.a.b) - strip leading $. if present
25
- let normalized = path.startsWith("$.") ? path.slice(2) : path;
26
- // Remove leading $ if present
27
- if (normalized.startsWith("$"))
28
- normalized = normalized.slice(1);
29
- if (normalized.startsWith("."))
30
- normalized = normalized.slice(1);
31
- // Replace array notation [0] or [-1] with .0 or .-1 (supports negative indices)
32
- normalized = normalized.replace(/\[(-?\d+)\]/g, ".$1");
33
- // Split by dot and filter empty strings
34
- return normalized.split(".").filter((p) => p !== "");
35
- }
36
- /**
37
- * Convert array path to string format for extract
38
- * ['a', 'b', '0'] → 'a.b.0'
39
- */
40
- export function arrayPathToString(path) {
41
- return path.join(".");
42
- }
43
- /**
44
- * Normalize path to array format (for set/insert handlers)
45
- * Accepts both string paths and arrays with mixed string/number elements
46
- */
47
- export function normalizePathToArray(path) {
48
- if (typeof path === "string") {
49
- return stringPathToArray(path);
50
- }
51
- // Convert all elements to strings
52
- return path.map((p) => String(p));
53
- }
54
- /**
55
- * Normalize path for jsonb_insert - converts numeric path segments to numbers
56
- * PostgreSQL jsonb_insert requires integer indices for array access
57
- * 'tags.0' → ['tags', 0] (number, not string)
58
- * 0 → [0] (bare number wrapped in array)
59
- */
60
- export function normalizePathForInsert(path) {
61
- // Handle bare numbers (e.g., 0, -1 for array positions)
62
- if (typeof path === "number") {
63
- return [path];
64
- }
65
- if (typeof path === "string") {
66
- const segments = stringPathToArray(path);
67
- // Convert numeric strings to numbers for array access
68
- return segments.map((p) => (/^-?\d+$/.test(p) ? parseInt(p, 10) : p));
69
- }
70
- // Already mixed types - ensure numbers stay as numbers
71
- return path.map((p) => typeof p === "number" ? p : /^-?\d+$/.test(p) ? parseInt(p, 10) : p);
72
- }
73
- /**
74
- * Normalize path to string format (for extract handler)
75
- * Accepts both string paths and arrays with mixed string/number elements
76
- */
77
- export function normalizePathToString(path) {
78
- if (Array.isArray(path)) {
79
- return path.map((p) => String(p)).join(".");
80
- }
81
- return path;
82
- }
83
- /**
84
- * Parse JSON string values for JSONB value parameters
85
- * MCP clients may send objects as JSON strings
86
- */
87
- export function parseJsonbValue(value) {
88
- if (typeof value === "string") {
89
- try {
90
- return JSON.parse(value);
91
- }
92
- catch {
93
- return value; // Keep as string if not valid JSON
94
- }
95
- }
96
- return value;
97
- }
98
- /**
99
- * Preprocess JSONB tool parameters to normalize common input patterns.
100
- * Handles aliases and schema.table format parsing.
101
- * Exported so tools can apply it in their handlers.
102
- *
103
- * SPLIT SCHEMA PATTERN:
104
- * - Base schemas use optional table/tableName with .refine() for MCP visibility
105
- * - Handlers use z.preprocess(preprocessJsonbParams, BaseSchema) for alias resolution
106
- */
107
- export function preprocessJsonbParams(input) {
108
- if (typeof input !== "object" || input === null) {
109
- return input;
110
- }
111
- const result = { ...input };
112
- // Alias: tableName → table
113
- if (result["tableName"] !== undefined && result["table"] === undefined) {
114
- result["table"] = result["tableName"];
115
- }
116
- // Alias: name → table (for consistency with other tool groups)
117
- if (result["name"] !== undefined && result["table"] === undefined) {
118
- result["table"] = result["name"];
119
- }
120
- // Alias: col → column
121
- if (result["col"] !== undefined && result["column"] === undefined) {
122
- result["column"] = result["col"];
123
- }
124
- // Alias: filter → where
125
- if (result["filter"] !== undefined && result["where"] === undefined) {
126
- result["where"] = result["filter"];
127
- }
128
- // Parse schema.table format (embedded schema takes priority)
129
- if (typeof result["table"] === "string" && result["table"].includes(".")) {
130
- const parts = result["table"].split(".");
131
- if (parts.length === 2 && parts[0] && parts[1]) {
132
- // Only override schema if not already explicitly set
133
- if (result["schema"] === undefined) {
134
- result["schema"] = parts[0];
135
- }
136
- result["table"] = parts[1];
137
- }
138
- }
139
- return result;
140
- }
141
- // ============== EXTRACT SCHEMA ==============
142
- // Base schema (for MCP inputSchema visibility - no preprocess)
143
- export const JsonbExtractSchemaBase = z
144
- .object({
145
- table: z.string().optional().describe("Table name"),
146
- tableName: z.string().optional().describe("Table name (alias for table)"),
147
- column: z.string().optional().describe("JSONB column name"),
148
- col: z.string().optional().describe("JSONB column name (alias for column)"),
149
- path: z
150
- .union([
151
- z.string().describe('Path as string (e.g., "a.b.c" or "a[0].b")'),
152
- z
153
- .array(z.union([z.string(), z.number()]))
154
- .describe('Path as array (e.g., ["a", 0, "b"])'),
155
- ])
156
- .describe("Path to extract. Accepts both string and array formats with numeric indices."),
157
- select: z
158
- .array(z.string())
159
- .optional()
160
- .describe('Additional columns to include in result for row identification (e.g., ["id"])'),
161
- where: z.string().optional().describe("WHERE clause"),
162
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
163
- limit: z.number().optional().describe("Maximum number of rows to return"),
164
- schema: z.string().optional().describe("Schema name (default: public)"),
165
- })
166
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
167
- message: "Either 'table' or 'tableName' is required",
168
- })
169
- .refine((data) => data.column !== undefined || data.col !== undefined, {
170
- message: "Either 'column' or 'col' is required",
171
- });
172
- // Full schema with preprocess (for handler parsing)
173
- export const JsonbExtractSchema = z.preprocess(preprocessJsonbParams, JsonbExtractSchemaBase);
174
- // ============== SET SCHEMA ==============
175
- // Base schema (for MCP inputSchema visibility - no preprocess)
176
- export const JsonbSetSchemaBase = z
177
- .object({
178
- table: z.string().optional().describe("Table name"),
179
- tableName: z.string().optional().describe("Table name (alias for table)"),
180
- column: z.string().optional().describe("JSONB column name"),
181
- col: z.string().optional().describe("JSONB column name (alias for column)"),
182
- path: z
183
- .union([
184
- z.string().describe('Path as string (e.g., "a.b.c" or "a[0].b")'),
185
- z
186
- .array(z.union([z.string(), z.number()]))
187
- .describe('Path as array (e.g., ["a", 0, "b"])'),
188
- ])
189
- .describe("Path to the value. Accepts both string and array formats with numeric indices."),
190
- value: z
191
- .unknown()
192
- .describe("New value to set at the path (will be converted to JSONB)"),
193
- where: z
194
- .string()
195
- .optional()
196
- .describe("WHERE clause to identify rows to update"),
197
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
198
- createMissing: z
199
- .boolean()
200
- .optional()
201
- .describe("Create intermediate keys if path does not exist (default: true)"),
202
- schema: z.string().optional().describe("Schema name (default: public)"),
203
- })
204
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
205
- message: "Either 'table' or 'tableName' is required",
206
- })
207
- .refine((data) => data.column !== undefined || data.col !== undefined, {
208
- message: "Either 'column' or 'col' is required",
209
- })
210
- .refine((data) => data.where !== undefined || data.filter !== undefined, {
211
- message: "Either 'where' or 'filter' is required",
212
- });
213
- // Full schema with preprocess (for handler parsing)
214
- export const JsonbSetSchema = z.preprocess(preprocessJsonbParams, JsonbSetSchemaBase);
215
- // ============== CONTAINS SCHEMA ==============
216
- // Base schema (for MCP inputSchema visibility - no preprocess)
217
- export const JsonbContainsSchemaBase = z
218
- .object({
219
- table: z.string().optional().describe("Table name"),
220
- tableName: z.string().optional().describe("Table name (alias for table)"),
221
- column: z.string().optional().describe("JSONB column name"),
222
- col: z.string().optional().describe("JSONB column name (alias for column)"),
223
- value: z
224
- .unknown()
225
- .describe('JSON value to check if contained (e.g., {"status": "active"})'),
226
- select: z
227
- .array(z.string())
228
- .optional()
229
- .describe("Columns to select in result"),
230
- where: z.string().optional().describe("Additional WHERE clause filter"),
231
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
232
- limit: z
233
- .number()
234
- .optional()
235
- .describe("Maximum number of rows to return (default: 100). Use 0 for all rows."),
236
- schema: z.string().optional().describe("Schema name (default: public)"),
237
- })
238
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
239
- message: "Either 'table' or 'tableName' is required",
240
- })
241
- .refine((data) => data.column !== undefined || data.col !== undefined, {
242
- message: "Either 'column' or 'col' is required",
243
- });
244
- // Full schema with preprocess (for handler parsing)
245
- export const JsonbContainsSchema = z.preprocess(preprocessJsonbParams, JsonbContainsSchemaBase);
246
- // ============== PATH QUERY SCHEMA ==============
247
- // Base schema (for MCP inputSchema visibility - no preprocess)
248
- export const JsonbPathQuerySchemaBase = z
249
- .object({
250
- table: z.string().optional().describe("Table name"),
251
- tableName: z.string().optional().describe("Table name (alias for table)"),
252
- column: z.string().optional().describe("JSONB column name"),
253
- col: z.string().optional().describe("JSONB column name (alias for column)"),
254
- path: z
255
- .string()
256
- .describe('JSONPath expression (e.g., "$.items[*].name" or "$.* ? (@.price > 10)")'),
257
- vars: z
258
- .record(z.string(), z.unknown())
259
- .optional()
260
- .describe("Variables for JSONPath (access with $var_name)"),
261
- where: z.string().optional().describe("WHERE clause"),
262
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
263
- limit: z
264
- .number()
265
- .optional()
266
- .describe("Maximum number of results to return (default: 100). Use 0 for all results."),
267
- schema: z.string().optional().describe("Schema name (default: public)"),
268
- })
269
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
270
- message: "Either 'table' or 'tableName' is required",
271
- })
272
- .refine((data) => data.column !== undefined || data.col !== undefined, {
273
- message: "Either 'column' or 'col' is required",
274
- });
275
- // Full schema with preprocess (for handler parsing)
276
- export const JsonbPathQuerySchema = z.preprocess(preprocessJsonbParams, JsonbPathQuerySchemaBase);
277
- // ============== INSERT SCHEMA ==============
278
- // Base schema (for MCP inputSchema visibility - no preprocess)
279
- export const JsonbInsertSchemaBase = z
280
- .object({
281
- table: z.string().optional().describe("Table name"),
282
- tableName: z.string().optional().describe("Table name (alias for table)"),
283
- column: z.string().optional().describe("JSONB column name"),
284
- col: z.string().optional().describe("JSONB column name (alias for column)"),
285
- path: z
286
- .union([
287
- z.string().describe('Path as string (e.g., "tags.0")'),
288
- z.number().describe("Array index position (e.g., 0, -1)"),
289
- z
290
- .array(z.union([z.string(), z.number()]))
291
- .describe('Path as array (e.g., ["tags", 0])'),
292
- ])
293
- .describe("Path to insert at (for arrays). Accepts both string and array formats."),
294
- value: z.unknown().describe("Value to insert"),
295
- where: z.string().optional().describe("WHERE clause"),
296
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
297
- insertAfter: z
298
- .boolean()
299
- .optional()
300
- .describe("Insert after the specified position (default: false)"),
301
- schema: z.string().optional().describe("Schema name (default: public)"),
302
- })
303
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
304
- message: "Either 'table' or 'tableName' is required",
305
- })
306
- .refine((data) => data.column !== undefined || data.col !== undefined, {
307
- message: "Either 'column' or 'col' is required",
308
- })
309
- .refine((data) => data.where !== undefined || data.filter !== undefined, {
310
- message: "Either 'where' or 'filter' is required",
311
- });
312
- // Full schema with preprocess (for handler parsing)
313
- export const JsonbInsertSchema = z.preprocess(preprocessJsonbParams, JsonbInsertSchemaBase);
314
- // ============== DELETE SCHEMA ==============
315
- // Base schema (for MCP inputSchema visibility - no preprocess)
316
- export const JsonbDeleteSchemaBase = z
317
- .object({
318
- table: z.string().optional().describe("Table name"),
319
- tableName: z.string().optional().describe("Table name (alias for table)"),
320
- column: z.string().optional().describe("JSONB column name"),
321
- col: z.string().optional().describe("JSONB column name (alias for column)"),
322
- path: z
323
- .union([
324
- z.string().describe("Key to delete (single key) or dot-notation path"),
325
- z.number().describe("Array index to delete (e.g., 0, 1, 2)"),
326
- z
327
- .array(z.union([z.string(), z.number()]))
328
- .describe('Path as array (e.g., ["nested", 0])'),
329
- ])
330
- .describe("Key or path to delete. Supports numeric indices for arrays."),
331
- where: z.string().optional().describe("WHERE clause"),
332
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
333
- schema: z.string().optional().describe("Schema name (default: public)"),
334
- })
335
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
336
- message: "Either 'table' or 'tableName' is required",
337
- })
338
- .refine((data) => data.column !== undefined || data.col !== undefined, {
339
- message: "Either 'column' or 'col' is required",
340
- })
341
- .refine((data) => data.where !== undefined || data.filter !== undefined, {
342
- message: "Either 'where' or 'filter' is required",
343
- });
344
- // Full schema with preprocess (for handler parsing)
345
- export const JsonbDeleteSchema = z.preprocess(preprocessJsonbParams, JsonbDeleteSchemaBase);
346
- // ============== TYPEOF SCHEMA ==============
347
- // Base schema (for MCP inputSchema visibility - no preprocess)
348
- export const JsonbTypeofSchemaBase = z
349
- .object({
350
- table: z.string().optional().describe("Table name"),
351
- tableName: z.string().optional().describe("Table name (alias for table)"),
352
- column: z.string().optional().describe("JSONB column name"),
353
- col: z.string().optional().describe("JSONB column name (alias for column)"),
354
- path: z
355
- .union([z.string(), z.array(z.union([z.string(), z.number()]))])
356
- .optional()
357
- .describe("Path to check type of nested value (string or array format)"),
358
- where: z.string().optional().describe("WHERE clause"),
359
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
360
- schema: z.string().optional().describe("Schema name (default: public)"),
361
- })
362
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
363
- message: "Either 'table' or 'tableName' is required",
364
- })
365
- .refine((data) => data.column !== undefined || data.col !== undefined, {
366
- message: "Either 'column' or 'col' is required",
367
- });
368
- // Full schema with preprocess (for handler parsing)
369
- export const JsonbTypeofSchema = z.preprocess(preprocessJsonbParams, JsonbTypeofSchemaBase);
370
- // ============== KEYS SCHEMA ==============
371
- // Base schema (for MCP inputSchema visibility - no preprocess)
372
- export const JsonbKeysSchemaBase = z
373
- .object({
374
- table: z.string().optional().describe("Table name"),
375
- tableName: z.string().optional().describe("Table name (alias for table)"),
376
- column: z.string().optional().describe("JSONB column name"),
377
- col: z.string().optional().describe("JSONB column name (alias for column)"),
378
- where: z.string().optional().describe("WHERE clause"),
379
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
380
- schema: z.string().optional().describe("Schema name (default: public)"),
381
- })
382
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
383
- message: "Either 'table' or 'tableName' is required",
384
- })
385
- .refine((data) => data.column !== undefined || data.col !== undefined, {
386
- message: "Either 'column' or 'col' is required",
387
- });
388
- // Full schema with preprocess (for handler parsing)
389
- export const JsonbKeysSchema = z.preprocess(preprocessJsonbParams, JsonbKeysSchemaBase);
390
- // ============== STRIP NULLS SCHEMA ==============
391
- // Base schema (for MCP inputSchema visibility - no preprocess)
392
- export const JsonbStripNullsSchemaBase = z
393
- .object({
394
- table: z.string().optional().describe("Table name"),
395
- tableName: z.string().optional().describe("Table name (alias for table)"),
396
- column: z.string().optional().describe("JSONB column name"),
397
- col: z.string().optional().describe("JSONB column name (alias for column)"),
398
- where: z.string().optional().describe("WHERE clause"),
399
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
400
- preview: z
401
- .boolean()
402
- .optional()
403
- .describe("Preview what would be stripped without modifying data"),
404
- schema: z.string().optional().describe("Schema name (default: public)"),
405
- })
406
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
407
- message: "Either 'table' or 'tableName' is required",
408
- })
409
- .refine((data) => data.column !== undefined || data.col !== undefined, {
410
- message: "Either 'column' or 'col' is required",
411
- });
412
- // Full schema with preprocess (for handler parsing)
413
- export const JsonbStripNullsSchema = z.preprocess(preprocessJsonbParams, JsonbStripNullsSchemaBase);
414
- // ============== AGG SCHEMA ==============
415
- // Base schema (for MCP inputSchema visibility - no preprocess)
416
- export const JsonbAggSchemaBase = z
417
- .object({
418
- table: z.string().optional().describe("Table name"),
419
- tableName: z.string().optional().describe("Table name (alias for table)"),
420
- select: z
421
- .array(z.string())
422
- .optional()
423
- .describe('Columns or expressions to include. Supports AS aliases: ["id", "metadata->\'name\' AS name"]'),
424
- where: z.string().optional().describe("WHERE clause"),
425
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
426
- groupBy: z
427
- .string()
428
- .optional()
429
- .describe("Column or expression to group by. Returns {result: [{group_key, items}], count, grouped: true}"),
430
- orderBy: z
431
- .string()
432
- .optional()
433
- .describe('ORDER BY clause (e.g., "id DESC", "name ASC")'),
434
- limit: z
435
- .number()
436
- .optional()
437
- .describe("Maximum number of rows to aggregate"),
438
- schema: z.string().optional().describe("Schema name (default: public)"),
439
- })
440
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
441
- message: "Either 'table' or 'tableName' is required",
442
- });
443
- // Full schema with preprocess (for handler parsing)
444
- export const JsonbAggSchema = z.preprocess(preprocessJsonbParams, JsonbAggSchemaBase);
445
- // ============== NORMALIZE SCHEMA ==============
446
- // Base schema (for MCP inputSchema visibility - no preprocess)
447
- export const JsonbNormalizeSchemaBase = z
448
- .object({
449
- table: z.string().optional().describe("Table name"),
450
- tableName: z.string().optional().describe("Table name (alias for table)"),
451
- column: z.string().optional().describe("JSONB column"),
452
- col: z.string().optional().describe("JSONB column (alias for column)"),
453
- mode: z
454
- .enum(["keys", "array", "pairs", "flatten"])
455
- .optional()
456
- .describe("keys: text values (all converted to string). pairs: JSONB types preserved. array: for arrays. flatten: recursive."),
457
- where: z.string().optional().describe("WHERE clause"),
458
- filter: z.string().optional().describe("WHERE clause (alias for where)"),
459
- idColumn: z
460
- .string()
461
- .optional()
462
- .describe('Column to use for row identification (e.g., "id"). If omitted, defaults to "id" if it exists, else uses ctid.'),
463
- schema: z.string().optional().describe("Schema name (default: public)"),
464
- })
465
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
466
- message: "Either 'table' or 'tableName' is required",
467
- })
468
- .refine((data) => data.column !== undefined || data.col !== undefined, {
469
- message: "Either 'column' or 'col' is required",
470
- });
471
- // Full schema with preprocess (for handler parsing)
472
- export const JsonbNormalizeSchema = z.preprocess(preprocessJsonbParams, JsonbNormalizeSchemaBase);
473
- // ============== STATS SCHEMA ==============
474
- // Base schema (for MCP inputSchema visibility - no preprocess)
475
- export const JsonbStatsSchemaBase = z
476
- .object({
477
- table: z.string().optional().describe("Table name"),
478
- tableName: z.string().optional().describe("Table name (alias for table)"),
479
- column: z.string().optional().describe("JSONB column"),
480
- col: z.string().optional().describe("JSONB column (alias for column)"),
481
- sampleSize: z.number().optional().describe("Sample rows to analyze"),
482
- where: z.string().optional().describe("WHERE clause to filter rows"),
483
- filter: z
484
- .string()
485
- .optional()
486
- .describe("WHERE clause to filter rows (alias for where)"),
487
- topKeysLimit: z
488
- .number()
489
- .optional()
490
- .describe("Maximum number of top keys to return (default: 20)"),
491
- schema: z.string().optional().describe("Schema name (default: public)"),
492
- })
493
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
494
- message: "Either 'table' or 'tableName' is required",
495
- })
496
- .refine((data) => data.column !== undefined || data.col !== undefined, {
497
- message: "Either 'column' or 'col' is required",
498
- });
499
- // Full schema with preprocess (for handler parsing)
500
- export const JsonbStatsSchema = z.preprocess(preprocessJsonbParams, JsonbStatsSchemaBase);
501
- // ============== INDEX SUGGEST SCHEMA ==============
502
- // Base schema (for MCP inputSchema visibility - no preprocess)
503
- export const JsonbIndexSuggestSchemaBase = z
504
- .object({
505
- table: z.string().optional().describe("Table name"),
506
- tableName: z.string().optional().describe("Table name (alias for table)"),
507
- column: z.string().optional().describe("JSONB column"),
508
- col: z.string().optional().describe("JSONB column (alias for column)"),
509
- sampleSize: z.number().optional().describe("Sample rows to analyze"),
510
- where: z.string().optional().describe("WHERE clause to filter rows"),
511
- filter: z
512
- .string()
513
- .optional()
514
- .describe("WHERE clause to filter rows (alias for where)"),
515
- schema: z.string().optional().describe("Schema name (default: public)"),
516
- })
517
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
518
- message: "Either 'table' or 'tableName' is required",
519
- })
520
- .refine((data) => data.column !== undefined || data.col !== undefined, {
521
- message: "Either 'column' or 'col' is required",
522
- });
523
- // Full schema with preprocess (for handler parsing)
524
- export const JsonbIndexSuggestSchema = z.preprocess(preprocessJsonbParams, JsonbIndexSuggestSchemaBase);
525
- // ============== SECURITY SCAN SCHEMA ==============
526
- // Base schema (for MCP inputSchema visibility - no preprocess)
527
- export const JsonbSecurityScanSchemaBase = z
528
- .object({
529
- table: z.string().optional().describe("Table name"),
530
- tableName: z.string().optional().describe("Table name (alias for table)"),
531
- column: z.string().optional().describe("JSONB column"),
532
- col: z.string().optional().describe("JSONB column (alias for column)"),
533
- sampleSize: z.number().optional().describe("Sample rows to scan"),
534
- where: z.string().optional().describe("WHERE clause to filter rows"),
535
- filter: z
536
- .string()
537
- .optional()
538
- .describe("WHERE clause to filter rows (alias for where)"),
539
- schema: z.string().optional().describe("Schema name (default: public)"),
540
- })
541
- .refine((data) => data.table !== undefined || data.tableName !== undefined, {
542
- message: "Either 'table' or 'tableName' is required",
543
- })
544
- .refine((data) => data.column !== undefined || data.col !== undefined, {
545
- message: "Either 'column' or 'col' is required",
546
- });
547
- // Full schema with preprocess (for handler parsing)
548
- export const JsonbSecurityScanSchema = z.preprocess(preprocessJsonbParams, JsonbSecurityScanSchemaBase);
549
- // ============== OUTPUT SCHEMAS (MCP 2025-11-25 structuredContent) ==============
550
- // Output schema for pg_jsonb_extract
551
- export const JsonbExtractOutputSchema = z.object({
552
- rows: z
553
- .array(z.record(z.string(), z.unknown()))
554
- .optional()
555
- .describe("Extracted values with optional identifying columns"),
556
- count: z.number().optional().describe("Number of rows returned"),
557
- hint: z.string().optional().describe("Hint when all values are null"),
558
- success: z.boolean().optional().describe("False on error"),
559
- error: z.string().optional().describe("Error message"),
560
- });
561
- // Output schema for pg_jsonb_set
562
- export const JsonbSetOutputSchema = z.object({
563
- rowsAffected: z.number().optional().describe("Number of rows updated"),
564
- hint: z.string().optional().describe("Additional information"),
565
- success: z.boolean().optional().describe("False on error"),
566
- error: z.string().optional().describe("Error message"),
567
- });
568
- // Output schema for pg_jsonb_insert
569
- export const JsonbInsertOutputSchema = z.object({
570
- rowsAffected: z.number().optional().describe("Number of rows updated"),
571
- success: z.boolean().optional().describe("False on error"),
572
- error: z.string().optional().describe("Error message"),
573
- });
574
- // Output schema for pg_jsonb_delete
575
- export const JsonbDeleteOutputSchema = z.object({
576
- rowsAffected: z.number().optional().describe("Number of rows updated"),
577
- hint: z.string().optional().describe("Note about rowsAffected semantics"),
578
- success: z.boolean().optional().describe("False on error"),
579
- error: z.string().optional().describe("Error message"),
580
- });
581
- // Output schema for pg_jsonb_contains
582
- export const JsonbContainsOutputSchema = z.object({
583
- rows: z
584
- .array(z.record(z.string(), z.unknown()))
585
- .optional()
586
- .describe("Matching rows"),
587
- count: z.number().optional().describe("Number of matching rows returned"),
588
- truncated: z
589
- .boolean()
590
- .optional()
591
- .describe("Whether results were truncated by the limit"),
592
- totalCount: z
593
- .number()
594
- .optional()
595
- .describe("Total matching rows before limit (present when truncated)"),
596
- warning: z
597
- .string()
598
- .optional()
599
- .describe("Warning for empty object containment"),
600
- success: z.boolean().optional().describe("False on error"),
601
- error: z.string().optional().describe("Error message"),
602
- });
603
- // Output schema for pg_jsonb_path_query
604
- export const JsonbPathQueryOutputSchema = z.object({
605
- results: z.array(z.unknown()).optional().describe("Query results"),
606
- count: z.number().optional().describe("Number of results returned"),
607
- truncated: z
608
- .boolean()
609
- .optional()
610
- .describe("Whether results were truncated by the limit"),
611
- totalCount: z
612
- .number()
613
- .optional()
614
- .describe("Total results before limit (present when truncated)"),
615
- success: z.boolean().optional().describe("False on error"),
616
- error: z.string().optional().describe("Error message"),
617
- });
618
- // Output schema for pg_jsonb_agg
619
- export const JsonbAggOutputSchema = z.object({
620
- result: z
621
- .unknown()
622
- .optional()
623
- .describe("Aggregated JSONB array or grouped results"),
624
- count: z.number().optional().describe("Number of items or groups"),
625
- grouped: z.boolean().optional().describe("Whether results are grouped"),
626
- hint: z.string().optional().describe("Empty result hint"),
627
- success: z.boolean().optional().describe("False on error"),
628
- error: z.string().optional().describe("Error message"),
629
- });
630
- // Output schema for pg_jsonb_object
631
- export const JsonbObjectOutputSchema = z.object({
632
- object: z
633
- .record(z.string(), z.unknown())
634
- .optional()
635
- .describe("Built JSONB object"),
636
- success: z.boolean().optional().describe("False on error"),
637
- error: z.string().optional().describe("Error message"),
638
- });
639
- // Output schema for pg_jsonb_array
640
- export const JsonbArrayOutputSchema = z.object({
641
- array: z.array(z.unknown()).optional().describe("Built JSONB array"),
642
- success: z.boolean().optional().describe("False on error"),
643
- error: z.string().optional().describe("Error message"),
644
- });
645
- // Output schema for pg_jsonb_keys
646
- export const JsonbKeysOutputSchema = z.object({
647
- keys: z
648
- .array(z.string())
649
- .optional()
650
- .describe("Unique keys from JSONB column"),
651
- count: z.number().optional().describe("Number of unique keys"),
652
- hint: z.string().optional().describe("Deduplication note"),
653
- success: z.boolean().optional().describe("False on error"),
654
- error: z.string().optional().describe("Error message"),
655
- });
656
- // Output schema for pg_jsonb_strip_nulls (two modes: update or preview)
657
- // Uses combined schema with optional fields instead of union with z.literal() to avoid Zod validation issues
658
- export const JsonbStripNullsOutputSchema = z.object({
659
- // Update mode fields
660
- rowsAffected: z.number().optional().describe("Number of rows updated"),
661
- // Preview mode fields
662
- preview: z.boolean().optional().describe("Preview mode indicator"),
663
- rows: z
664
- .array(z.record(z.string(), z.unknown()))
665
- .optional()
666
- .describe("Before/after comparison"),
667
- count: z.number().optional().describe("Number of rows"),
668
- hint: z.string().optional().describe("Preview mode note"),
669
- success: z.boolean().optional().describe("False on error"),
670
- error: z.string().optional().describe("Error message"),
671
- });
672
- // Output schema for pg_jsonb_typeof
673
- export const JsonbTypeofOutputSchema = z.object({
674
- types: z
675
- .array(z.string().nullable())
676
- .optional()
677
- .describe("JSONB types for each row (null if path doesn't exist)"),
678
- count: z.number().optional().describe("Number of rows"),
679
- columnNull: z
680
- .boolean()
681
- .optional()
682
- .describe("Whether any column was NULL (uses .some() aggregation)"),
683
- hint: z.string().optional().describe("Additional information"),
684
- success: z.boolean().optional().describe("False on error"),
685
- error: z.string().optional().describe("Error message"),
686
- });
687
- // ============== ADVANCED JSONB OUTPUT SCHEMAS ==============
688
- // Output schema for pg_jsonb_validate_path
689
- export const JsonbValidatePathOutputSchema = z.object({
690
- valid: z.boolean().describe("Whether path is valid"),
691
- error: z.string().optional().describe("Error message if invalid"),
692
- results: z
693
- .array(z.unknown())
694
- .optional()
695
- .describe("Test results if testValue provided"),
696
- count: z.number().optional().describe("Number of results"),
697
- });
698
- // Output schema for pg_jsonb_merge
699
- export const JsonbMergeOutputSchema = z.object({
700
- merged: z.unknown().optional().describe("Merged JSONB document"),
701
- deep: z.boolean().optional().describe("Whether deep merge was used"),
702
- mergeArrays: z
703
- .boolean()
704
- .optional()
705
- .describe("Whether arrays were concatenated"),
706
- success: z.boolean().optional().describe("False on error"),
707
- error: z.string().optional().describe("Error message"),
708
- });
709
- // Output schema for pg_jsonb_normalize
710
- export const JsonbNormalizeOutputSchema = z.object({
711
- rows: z
712
- .array(z.record(z.string(), z.unknown()))
713
- .optional()
714
- .describe("Normalized rows"),
715
- count: z.number().optional().describe("Number of rows"),
716
- mode: z.string().optional().describe("Normalization mode used"),
717
- hint: z.string().optional().describe("Additional information"),
718
- success: z.boolean().optional().describe("False on error"),
719
- error: z.string().optional().describe("Error message"),
720
- });
721
- // Output schema for pg_jsonb_diff
722
- export const JsonbDiffOutputSchema = z.object({
723
- differences: z
724
- .array(z.object({
725
- key: z.string().describe("Key that differs"),
726
- status: z
727
- .enum(["added", "removed", "modified"])
728
- .describe("Type of difference"),
729
- value1: z.unknown().optional().describe("Value in doc1"),
730
- value2: z.unknown().optional().describe("Value in doc2"),
731
- }))
732
- .optional()
733
- .describe("List of differences"),
734
- hasDifferences: z
735
- .boolean()
736
- .optional()
737
- .describe("Whether any differences exist"),
738
- comparison: z.string().optional().describe("Comparison type performed"),
739
- hint: z.string().optional().describe("Explanation of comparison scope"),
740
- success: z.boolean().optional().describe("False on error"),
741
- error: z.string().optional().describe("Error message"),
742
- });
743
- // Output schema for pg_jsonb_index_suggest
744
- export const JsonbIndexSuggestOutputSchema = z.object({
745
- recommendations: z
746
- .array(z.string())
747
- .optional()
748
- .describe("Index creation SQL recommendations"),
749
- analyzed: z
750
- .object({
751
- topKeys: z.number().optional().describe("Number of top keys analyzed"),
752
- existingIndexes: z.number().optional().describe("Existing indexes found"),
753
- })
754
- .optional()
755
- .describe("Analysis details"),
756
- success: z.boolean().optional().describe("False on error"),
757
- error: z.string().optional().describe("Error message"),
758
- });
759
- // Output schema for pg_jsonb_security_scan
760
- export const JsonbSecurityScanOutputSchema = z.object({
761
- issues: z
762
- .array(z.object({
763
- type: z.string().describe("Issue type"),
764
- key: z.string().optional().describe("Affected key"),
765
- count: z.number().optional().describe("Occurrence count"),
766
- severity: z.string().optional().describe("Issue severity"),
767
- }))
768
- .optional()
769
- .describe("Security issues found"),
770
- riskLevel: z
771
- .enum(["low", "medium", "high"])
772
- .optional()
773
- .describe("Overall risk level"),
774
- scannedRows: z.number().optional().describe("Number of rows scanned"),
775
- success: z.boolean().optional().describe("False on error"),
776
- error: z.string().optional().describe("Error message"),
777
- });
778
- // Output schema for pg_jsonb_stats
779
- export const JsonbStatsOutputSchema = z.object({
780
- basics: z
781
- .object({
782
- total_rows: z.number().describe("Total rows"),
783
- non_null_count: z.number().optional().describe("Non-null values"),
784
- avg_size_bytes: z.number().optional().describe("Average size"),
785
- max_size_bytes: z.number().optional().describe("Maximum size"),
786
- })
787
- .optional()
788
- .describe("Basic statistics"),
789
- topKeys: z
790
- .array(z.object({
791
- key: z.string().describe("Key name"),
792
- frequency: z.number().describe("Occurrence count"),
793
- }))
794
- .optional()
795
- .describe("Most common keys"),
796
- typeDistribution: z
797
- .array(z.object({
798
- type: z
799
- .string()
800
- .nullable()
801
- .describe("JSONB type (null = SQL NULL column)"),
802
- count: z.number().describe("Count"),
803
- }))
804
- .optional()
805
- .describe("Type distribution"),
806
- sqlNullCount: z
807
- .number()
808
- .optional()
809
- .describe("Count of rows with SQL NULL in the JSONB column"),
810
- hint: z.string().optional().describe("Usage hints or notes"),
811
- success: z.boolean().optional().describe("False on error"),
812
- error: z.string().optional().describe("Error message"),
813
- });
814
- //# sourceMappingURL=jsonb.js.map