@neverinfamous/postgres-mcp 1.3.0 → 2.1.0

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