@neverinfamous/postgres-mcp 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +119 -46
  3. package/dist/__tests__/benchmarks/codemode.bench.js +3 -3
  4. package/dist/__tests__/benchmarks/codemode.bench.js.map +1 -1
  5. package/dist/__tests__/benchmarks/connection-pool.bench.js +3 -3
  6. package/dist/__tests__/benchmarks/connection-pool.bench.js.map +1 -1
  7. package/dist/__tests__/benchmarks/introspection-migration.bench.d.ts +11 -0
  8. package/dist/__tests__/benchmarks/introspection-migration.bench.d.ts.map +1 -0
  9. package/dist/__tests__/benchmarks/introspection-migration.bench.js +143 -0
  10. package/dist/__tests__/benchmarks/introspection-migration.bench.js.map +1 -0
  11. package/dist/__tests__/benchmarks/resource-prompts.bench.js +0 -64
  12. package/dist/__tests__/benchmarks/resource-prompts.bench.js.map +1 -1
  13. package/dist/__tests__/benchmarks/schema-parsing.bench.js +5 -5
  14. package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -1
  15. package/dist/__tests__/benchmarks/tool-filtering.bench.js +17 -8
  16. package/dist/__tests__/benchmarks/tool-filtering.bench.js.map +1 -1
  17. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  18. package/dist/__tests__/mocks/adapter.js +2 -1
  19. package/dist/__tests__/mocks/adapter.js.map +1 -1
  20. package/dist/adapters/DatabaseAdapter.d.ts +6 -5
  21. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  22. package/dist/adapters/DatabaseAdapter.js +11 -20
  23. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  24. package/dist/adapters/postgresql/PostgresAdapter.d.ts +5 -26
  25. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  26. package/dist/adapters/postgresql/PostgresAdapter.js +31 -526
  27. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  28. package/dist/adapters/postgresql/prompts/index.js +1 -1
  29. package/dist/adapters/postgresql/prompts/index.js.map +1 -1
  30. package/dist/adapters/postgresql/resources/index.d.ts +1 -1
  31. package/dist/adapters/postgresql/resources/index.js +3 -3
  32. package/dist/adapters/postgresql/resources/index.js.map +1 -1
  33. package/dist/adapters/postgresql/schema-operations.d.ts +71 -0
  34. package/dist/adapters/postgresql/schema-operations.d.ts.map +1 -0
  35. package/dist/adapters/postgresql/schema-operations.js +561 -0
  36. package/dist/adapters/postgresql/schema-operations.js.map +1 -0
  37. package/dist/adapters/postgresql/schemas/admin.d.ts +4 -4
  38. package/dist/adapters/postgresql/schemas/admin.js +4 -4
  39. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  40. package/dist/adapters/postgresql/schemas/backup.d.ts +2 -2
  41. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  42. package/dist/adapters/postgresql/schemas/backup.js +1 -3
  43. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  44. package/dist/adapters/postgresql/schemas/core/index.d.ts +6 -0
  45. package/dist/adapters/postgresql/schemas/core/index.d.ts.map +1 -0
  46. package/dist/adapters/postgresql/schemas/core/index.js +6 -0
  47. package/dist/adapters/postgresql/schemas/core/index.js.map +1 -0
  48. package/dist/adapters/postgresql/schemas/{core.d.ts → core/queries.d.ts} +16 -171
  49. package/dist/adapters/postgresql/schemas/core/queries.d.ts.map +1 -0
  50. package/dist/adapters/postgresql/schemas/{core.js → core/queries.js} +5 -213
  51. package/dist/adapters/postgresql/schemas/core/queries.js.map +1 -0
  52. package/dist/adapters/postgresql/schemas/core/transactions.d.ts +149 -0
  53. package/dist/adapters/postgresql/schemas/core/transactions.d.ts.map +1 -0
  54. package/dist/adapters/postgresql/schemas/core/transactions.js +239 -0
  55. package/dist/adapters/postgresql/schemas/core/transactions.js.map +1 -0
  56. package/dist/adapters/postgresql/schemas/cron.d.ts +12 -12
  57. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  58. package/dist/adapters/postgresql/schemas/cron.js +38 -10
  59. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  60. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts +222 -0
  61. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts.map +1 -0
  62. package/dist/adapters/postgresql/schemas/extensions/citext.js +306 -0
  63. package/dist/adapters/postgresql/schemas/extensions/citext.js.map +1 -0
  64. package/dist/adapters/postgresql/schemas/extensions/index.d.ts +15 -0
  65. package/dist/adapters/postgresql/schemas/extensions/index.d.ts.map +1 -0
  66. package/dist/adapters/postgresql/schemas/extensions/index.js +20 -0
  67. package/dist/adapters/postgresql/schemas/extensions/index.js.map +1 -0
  68. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts +164 -0
  69. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts.map +1 -0
  70. package/dist/adapters/postgresql/schemas/extensions/kcache.js +225 -0
  71. package/dist/adapters/postgresql/schemas/extensions/kcache.js.map +1 -0
  72. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts +253 -0
  73. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts.map +1 -0
  74. package/dist/adapters/postgresql/schemas/extensions/ltree.js +430 -0
  75. package/dist/adapters/postgresql/schemas/extensions/ltree.js.map +1 -0
  76. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts +251 -0
  77. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts.map +1 -0
  78. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js +294 -0
  79. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js.map +1 -0
  80. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts +10 -0
  81. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts.map +1 -0
  82. package/dist/adapters/postgresql/schemas/extensions/shared.js +15 -0
  83. package/dist/adapters/postgresql/schemas/extensions/shared.js.map +1 -0
  84. package/dist/adapters/postgresql/schemas/index.d.ts +6 -6
  85. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  86. package/dist/adapters/postgresql/schemas/index.js +8 -8
  87. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  88. package/dist/adapters/postgresql/schemas/introspection.d.ts +19 -42
  89. package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -1
  90. package/dist/adapters/postgresql/schemas/introspection.js +72 -27
  91. package/dist/adapters/postgresql/schemas/introspection.js.map +1 -1
  92. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts +270 -0
  93. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts.map +1 -0
  94. package/dist/adapters/postgresql/schemas/jsonb/advanced.js +371 -0
  95. package/dist/adapters/postgresql/schemas/jsonb/advanced.js.map +1 -0
  96. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts +283 -0
  97. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts.map +1 -0
  98. package/dist/adapters/postgresql/schemas/jsonb/basic.js +456 -0
  99. package/dist/adapters/postgresql/schemas/jsonb/basic.js.map +1 -0
  100. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts +6 -0
  101. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts.map +1 -0
  102. package/dist/adapters/postgresql/schemas/jsonb/index.js +6 -0
  103. package/dist/adapters/postgresql/schemas/jsonb/index.js.map +1 -0
  104. package/dist/adapters/postgresql/schemas/monitoring.d.ts +4 -4
  105. package/dist/adapters/postgresql/schemas/monitoring.js +2 -2
  106. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  107. package/dist/adapters/postgresql/schemas/partitioning.d.ts +14 -14
  108. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  109. package/dist/adapters/postgresql/schemas/partitioning.js +64 -46
  110. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  111. package/dist/adapters/postgresql/schemas/partman.d.ts +16 -14
  112. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
  113. package/dist/adapters/postgresql/schemas/partman.js +9 -9
  114. package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
  115. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts +429 -0
  116. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts.map +1 -0
  117. package/dist/adapters/postgresql/schemas/postgis/advanced.js +495 -0
  118. package/dist/adapters/postgresql/schemas/postgis/advanced.js.map +1 -0
  119. package/dist/adapters/postgresql/schemas/{postgis.d.ts → postgis/basic.d.ts} +1 -423
  120. package/dist/adapters/postgresql/schemas/postgis/basic.d.ts.map +1 -0
  121. package/dist/adapters/postgresql/schemas/{postgis.js → postgis/basic.js} +1 -486
  122. package/dist/adapters/postgresql/schemas/postgis/basic.js.map +1 -0
  123. package/dist/adapters/postgresql/schemas/postgis/index.d.ts +6 -0
  124. package/dist/adapters/postgresql/schemas/postgis/index.d.ts.map +1 -0
  125. package/dist/adapters/postgresql/schemas/postgis/index.js +6 -0
  126. package/dist/adapters/postgresql/schemas/postgis/index.js.map +1 -0
  127. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +35 -25
  128. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  129. package/dist/adapters/postgresql/schemas/schema-mgmt.js +57 -19
  130. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  131. package/dist/adapters/postgresql/schemas/stats/index.d.ts +6 -0
  132. package/dist/adapters/postgresql/schemas/stats/index.d.ts.map +1 -0
  133. package/dist/adapters/postgresql/schemas/stats/index.js +6 -0
  134. package/dist/adapters/postgresql/schemas/stats/index.js.map +1 -0
  135. package/dist/adapters/postgresql/schemas/stats/input.d.ts +260 -0
  136. package/dist/adapters/postgresql/schemas/stats/input.d.ts.map +1 -0
  137. package/dist/adapters/postgresql/schemas/{stats.js → stats/input.js} +2 -331
  138. package/dist/adapters/postgresql/schemas/stats/input.js.map +1 -0
  139. package/dist/adapters/postgresql/schemas/{stats.d.ts → stats/output.d.ts} +3 -246
  140. package/dist/adapters/postgresql/schemas/stats/output.d.ts.map +1 -0
  141. package/dist/adapters/postgresql/schemas/stats/output.js +334 -0
  142. package/dist/adapters/postgresql/schemas/stats/output.js.map +1 -0
  143. package/dist/adapters/postgresql/schemas/text-search.d.ts +18 -18
  144. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  145. package/dist/adapters/postgresql/schemas/text-search.js +12 -27
  146. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  147. package/dist/adapters/postgresql/schemas/vector.d.ts +10 -10
  148. package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
  149. package/dist/adapters/postgresql/schemas/vector.js +9 -15
  150. package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
  151. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  152. package/dist/adapters/postgresql/tools/backup/dump.js +95 -76
  153. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  154. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
  155. package/dist/adapters/postgresql/tools/backup/planning.js +345 -287
  156. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
  157. package/dist/adapters/postgresql/tools/citext/analysis.d.ts +24 -0
  158. package/dist/adapters/postgresql/tools/citext/analysis.d.ts.map +1 -0
  159. package/dist/adapters/postgresql/tools/{citext.js → citext/analysis.js} +50 -232
  160. package/dist/adapters/postgresql/tools/citext/analysis.js.map +1 -0
  161. package/dist/adapters/postgresql/tools/citext/index.d.ts +15 -0
  162. package/dist/adapters/postgresql/tools/citext/index.d.ts.map +1 -0
  163. package/dist/adapters/postgresql/tools/citext/index.js +23 -0
  164. package/dist/adapters/postgresql/tools/citext/index.js.map +1 -0
  165. package/dist/adapters/postgresql/tools/citext/setup.d.ts +16 -0
  166. package/dist/adapters/postgresql/tools/citext/setup.d.ts.map +1 -0
  167. package/dist/adapters/postgresql/tools/citext/setup.js +193 -0
  168. package/dist/adapters/postgresql/tools/citext/setup.js.map +1 -0
  169. package/dist/adapters/postgresql/tools/codemode/index.js +1 -1
  170. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
  171. package/dist/adapters/postgresql/tools/core/convenience.d.ts +12 -22
  172. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  173. package/dist/adapters/postgresql/tools/core/convenience.js +100 -210
  174. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  175. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +1 -0
  176. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -1
  177. package/dist/adapters/postgresql/tools/core/error-helpers.js +8 -1
  178. package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -1
  179. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  180. package/dist/adapters/postgresql/tools/core/health.js +124 -114
  181. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  182. package/dist/adapters/postgresql/tools/core/index.d.ts +2 -1
  183. package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -1
  184. package/dist/adapters/postgresql/tools/core/index.js +3 -2
  185. package/dist/adapters/postgresql/tools/core/index.js.map +1 -1
  186. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  187. package/dist/adapters/postgresql/tools/core/indexes.js +151 -127
  188. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  189. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  190. package/dist/adapters/postgresql/tools/core/objects.js +186 -161
  191. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  192. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  193. package/dist/adapters/postgresql/tools/core/query.js +37 -25
  194. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  195. package/dist/adapters/postgresql/tools/core/schemas.d.ts +6 -3
  196. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  197. package/dist/adapters/postgresql/tools/core/schemas.js +11 -2
  198. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  199. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  200. package/dist/adapters/postgresql/tools/core/tables.js +156 -129
  201. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  202. package/dist/adapters/postgresql/tools/core/utility.d.ts +26 -0
  203. package/dist/adapters/postgresql/tools/core/utility.d.ts.map +1 -0
  204. package/dist/adapters/postgresql/tools/core/utility.js +174 -0
  205. package/dist/adapters/postgresql/tools/core/utility.js.map +1 -0
  206. package/dist/adapters/postgresql/tools/cron.js +90 -43
  207. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  208. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts +12 -0
  209. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts.map +1 -0
  210. package/dist/adapters/postgresql/tools/introspection/analysis.js +605 -0
  211. package/dist/adapters/postgresql/tools/introspection/analysis.js.map +1 -0
  212. package/dist/adapters/postgresql/tools/introspection/graph.d.ts +55 -0
  213. package/dist/adapters/postgresql/tools/introspection/graph.d.ts.map +1 -0
  214. package/dist/adapters/postgresql/tools/introspection/graph.js +621 -0
  215. package/dist/adapters/postgresql/tools/introspection/graph.js.map +1 -0
  216. package/dist/adapters/postgresql/tools/introspection/index.d.ts +21 -0
  217. package/dist/adapters/postgresql/tools/introspection/index.d.ts.map +1 -0
  218. package/dist/adapters/postgresql/tools/introspection/index.js +31 -0
  219. package/dist/adapters/postgresql/tools/introspection/index.js.map +1 -0
  220. package/dist/adapters/postgresql/tools/introspection/migration.d.ts +15 -0
  221. package/dist/adapters/postgresql/tools/introspection/migration.d.ts.map +1 -0
  222. package/dist/adapters/postgresql/tools/introspection/migration.js +575 -0
  223. package/dist/adapters/postgresql/tools/introspection/migration.js.map +1 -0
  224. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts +20 -0
  225. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts.map +1 -0
  226. package/dist/adapters/postgresql/tools/jsonb/analytics.js +367 -0
  227. package/dist/adapters/postgresql/tools/jsonb/analytics.js.map +1 -0
  228. package/dist/adapters/postgresql/tools/jsonb/index.d.ts +4 -2
  229. package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -1
  230. package/dist/adapters/postgresql/tools/jsonb/index.js +8 -4
  231. package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -1
  232. package/dist/adapters/postgresql/tools/jsonb/read.d.ts +38 -0
  233. package/dist/adapters/postgresql/tools/jsonb/read.d.ts.map +1 -0
  234. package/dist/adapters/postgresql/tools/jsonb/{basic.js → read.js} +41 -482
  235. package/dist/adapters/postgresql/tools/jsonb/read.js.map +1 -0
  236. package/dist/adapters/postgresql/tools/jsonb/{advanced.d.ts → transform.d.ts} +1 -13
  237. package/dist/adapters/postgresql/tools/jsonb/transform.d.ts.map +1 -0
  238. package/dist/adapters/postgresql/tools/jsonb/{advanced.js → transform.js} +26 -357
  239. package/dist/adapters/postgresql/tools/jsonb/transform.js.map +1 -0
  240. package/dist/adapters/postgresql/tools/jsonb/write.d.ts +14 -0
  241. package/dist/adapters/postgresql/tools/jsonb/write.d.ts.map +1 -0
  242. package/dist/adapters/postgresql/tools/jsonb/write.js +468 -0
  243. package/dist/adapters/postgresql/tools/jsonb/write.js.map +1 -0
  244. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  245. package/dist/adapters/postgresql/tools/kcache.js +116 -51
  246. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  247. package/dist/adapters/postgresql/tools/ltree.js +346 -260
  248. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  249. package/dist/adapters/postgresql/tools/migration/index.d.ts +15 -0
  250. package/dist/adapters/postgresql/tools/migration/index.d.ts.map +1 -0
  251. package/dist/adapters/postgresql/tools/migration/index.js +23 -0
  252. package/dist/adapters/postgresql/tools/migration/index.js.map +1 -0
  253. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts +15 -0
  254. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts.map +1 -0
  255. package/dist/adapters/postgresql/tools/{monitoring.js → monitoring/analysis.js} +24 -359
  256. package/dist/adapters/postgresql/tools/monitoring/analysis.js.map +1 -0
  257. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts +17 -0
  258. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts.map +1 -0
  259. package/dist/adapters/postgresql/tools/monitoring/basic.js +432 -0
  260. package/dist/adapters/postgresql/tools/monitoring/basic.js.map +1 -0
  261. package/dist/adapters/postgresql/tools/monitoring/index.d.ts +16 -0
  262. package/dist/adapters/postgresql/tools/monitoring/index.d.ts.map +1 -0
  263. package/dist/adapters/postgresql/tools/monitoring/index.js +31 -0
  264. package/dist/adapters/postgresql/tools/monitoring/index.js.map +1 -0
  265. package/dist/adapters/postgresql/tools/partitioning/index.d.ts +15 -0
  266. package/dist/adapters/postgresql/tools/partitioning/index.d.ts.map +1 -0
  267. package/dist/adapters/postgresql/tools/partitioning/index.js +23 -0
  268. package/dist/adapters/postgresql/tools/partitioning/index.js.map +1 -0
  269. package/dist/adapters/postgresql/tools/partitioning/info.d.ts +11 -0
  270. package/dist/adapters/postgresql/tools/partitioning/info.d.ts.map +1 -0
  271. package/dist/adapters/postgresql/tools/partitioning/info.js +302 -0
  272. package/dist/adapters/postgresql/tools/partitioning/info.js.map +1 -0
  273. package/dist/adapters/postgresql/tools/partitioning/management.d.ts +28 -0
  274. package/dist/adapters/postgresql/tools/partitioning/management.d.ts.map +1 -0
  275. package/dist/adapters/postgresql/tools/{partitioning.js → partitioning/management.js} +48 -307
  276. package/dist/adapters/postgresql/tools/partitioning/management.js.map +1 -0
  277. package/dist/adapters/postgresql/tools/partman/helpers.d.ts +29 -0
  278. package/dist/adapters/postgresql/tools/partman/helpers.d.ts.map +1 -0
  279. package/dist/adapters/postgresql/tools/partman/helpers.js +59 -0
  280. package/dist/adapters/postgresql/tools/partman/helpers.js.map +1 -0
  281. package/dist/adapters/postgresql/tools/partman/index.d.ts +2 -1
  282. package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -1
  283. package/dist/adapters/postgresql/tools/partman/index.js +4 -2
  284. package/dist/adapters/postgresql/tools/partman/index.js.map +1 -1
  285. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts +20 -0
  286. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts.map +1 -0
  287. package/dist/adapters/postgresql/tools/partman/maintenance.js +496 -0
  288. package/dist/adapters/postgresql/tools/partman/maintenance.js.map +1 -0
  289. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  290. package/dist/adapters/postgresql/tools/partman/management.js +438 -383
  291. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  292. package/dist/adapters/postgresql/tools/partman/operations.d.ts +1 -13
  293. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  294. package/dist/adapters/postgresql/tools/partman/operations.js +171 -652
  295. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  296. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  297. package/dist/adapters/postgresql/tools/performance/analysis.js +69 -42
  298. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  299. package/dist/adapters/postgresql/tools/performance/anomaly-detection.d.ts +18 -0
  300. package/dist/adapters/postgresql/tools/performance/anomaly-detection.d.ts.map +1 -0
  301. package/dist/adapters/postgresql/tools/performance/anomaly-detection.js +533 -0
  302. package/dist/adapters/postgresql/tools/performance/anomaly-detection.js.map +1 -0
  303. package/dist/adapters/postgresql/tools/performance/diagnostics.d.ts +11 -0
  304. package/dist/adapters/postgresql/tools/performance/diagnostics.d.ts.map +1 -0
  305. package/dist/adapters/postgresql/tools/performance/diagnostics.js +332 -0
  306. package/dist/adapters/postgresql/tools/performance/diagnostics.js.map +1 -0
  307. package/dist/adapters/postgresql/tools/performance/index.d.ts +1 -1
  308. package/dist/adapters/postgresql/tools/performance/index.d.ts.map +1 -1
  309. package/dist/adapters/postgresql/tools/performance/index.js +7 -1
  310. package/dist/adapters/postgresql/tools/performance/index.js.map +1 -1
  311. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  312. package/dist/adapters/postgresql/tools/performance/monitoring.js +80 -55
  313. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  314. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  315. package/dist/adapters/postgresql/tools/performance/optimization.js +18 -11
  316. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  317. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  318. package/dist/adapters/postgresql/tools/performance/stats.js +439 -318
  319. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  320. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  321. package/dist/adapters/postgresql/tools/pgcrypto.js +45 -77
  322. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  323. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  324. package/dist/adapters/postgresql/tools/postgis/basic.js +121 -93
  325. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  326. package/dist/adapters/postgresql/tools/schema/index.d.ts +16 -0
  327. package/dist/adapters/postgresql/tools/schema/index.d.ts.map +1 -0
  328. package/dist/adapters/postgresql/tools/schema/index.js +32 -0
  329. package/dist/adapters/postgresql/tools/schema/index.js.map +1 -0
  330. package/dist/adapters/postgresql/tools/schema/objects.d.ts +15 -0
  331. package/dist/adapters/postgresql/tools/schema/objects.d.ts.map +1 -0
  332. package/dist/adapters/postgresql/tools/schema/objects.js +378 -0
  333. package/dist/adapters/postgresql/tools/schema/objects.js.map +1 -0
  334. package/dist/adapters/postgresql/tools/schema/views.d.ts +15 -0
  335. package/dist/adapters/postgresql/tools/schema/views.d.ts.map +1 -0
  336. package/dist/adapters/postgresql/tools/{schema.js → schema/views.js} +64 -386
  337. package/dist/adapters/postgresql/tools/schema/views.js.map +1 -0
  338. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  339. package/dist/adapters/postgresql/tools/stats/advanced.js +1 -218
  340. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  341. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts +33 -0
  342. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts.map +1 -0
  343. package/dist/adapters/postgresql/tools/stats/math-utils.js +225 -0
  344. package/dist/adapters/postgresql/tools/stats/math-utils.js.map +1 -0
  345. package/dist/adapters/postgresql/tools/text/index.d.ts +16 -0
  346. package/dist/adapters/postgresql/tools/text/index.d.ts.map +1 -0
  347. package/dist/adapters/postgresql/tools/text/index.js +33 -0
  348. package/dist/adapters/postgresql/tools/text/index.js.map +1 -0
  349. package/dist/adapters/postgresql/tools/text/matching.d.ts +17 -0
  350. package/dist/adapters/postgresql/tools/text/matching.d.ts.map +1 -0
  351. package/dist/adapters/postgresql/tools/text/matching.js +565 -0
  352. package/dist/adapters/postgresql/tools/text/matching.js.map +1 -0
  353. package/dist/adapters/postgresql/tools/text/search.d.ts +17 -0
  354. package/dist/adapters/postgresql/tools/text/search.d.ts.map +1 -0
  355. package/dist/adapters/postgresql/tools/text/search.js +653 -0
  356. package/dist/adapters/postgresql/tools/text/search.js.map +1 -0
  357. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  358. package/dist/adapters/postgresql/tools/transactions.js +11 -27
  359. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  360. package/dist/adapters/postgresql/tools/vector/{basic.d.ts → data.d.ts} +10 -8
  361. package/dist/adapters/postgresql/tools/vector/data.d.ts.map +1 -0
  362. package/dist/adapters/postgresql/tools/vector/data.js +540 -0
  363. package/dist/adapters/postgresql/tools/vector/data.js.map +1 -0
  364. package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -1
  365. package/dist/adapters/postgresql/tools/vector/index.js +6 -2
  366. package/dist/adapters/postgresql/tools/vector/index.js.map +1 -1
  367. package/dist/adapters/postgresql/tools/vector/management.d.ts +11 -0
  368. package/dist/adapters/postgresql/tools/vector/management.d.ts.map +1 -0
  369. package/dist/adapters/postgresql/tools/vector/management.js +425 -0
  370. package/dist/adapters/postgresql/tools/vector/management.js.map +1 -0
  371. package/dist/adapters/postgresql/tools/vector/query.d.ts +14 -0
  372. package/dist/adapters/postgresql/tools/vector/query.d.ts.map +1 -0
  373. package/dist/adapters/postgresql/tools/vector/query.js +767 -0
  374. package/dist/adapters/postgresql/tools/vector/query.js.map +1 -0
  375. package/dist/adapters/postgresql/tools/vector/{advanced.d.ts → search-advanced.d.ts} +4 -5
  376. package/dist/adapters/postgresql/tools/vector/search-advanced.d.ts.map +1 -0
  377. package/dist/adapters/postgresql/tools/vector/search-advanced.js +626 -0
  378. package/dist/adapters/postgresql/tools/vector/search-advanced.js.map +1 -0
  379. package/dist/auth/scopes.d.ts.map +1 -1
  380. package/dist/auth/scopes.js +3 -1
  381. package/dist/auth/scopes.js.map +1 -1
  382. package/dist/cli/args.d.ts +3 -2
  383. package/dist/cli/args.d.ts.map +1 -1
  384. package/dist/cli/args.js +4 -3
  385. package/dist/cli/args.js.map +1 -1
  386. package/dist/cli.js +16 -4
  387. package/dist/cli.js.map +1 -1
  388. package/dist/codemode/api/aliases.d.ts +14 -0
  389. package/dist/codemode/api/aliases.d.ts.map +1 -0
  390. package/dist/codemode/api/aliases.js +503 -0
  391. package/dist/codemode/api/aliases.js.map +1 -0
  392. package/dist/codemode/api/group-api.d.ts +23 -0
  393. package/dist/codemode/api/group-api.d.ts.map +1 -0
  394. package/dist/codemode/api/group-api.js +179 -0
  395. package/dist/codemode/api/group-api.js.map +1 -0
  396. package/dist/codemode/{api.d.ts → api/index.d.ts} +5 -4
  397. package/dist/codemode/api/index.d.ts.map +1 -0
  398. package/dist/codemode/api/index.js +195 -0
  399. package/dist/codemode/api/index.js.map +1 -0
  400. package/dist/codemode/api/maps.d.ts +47 -0
  401. package/dist/codemode/api/maps.d.ts.map +1 -0
  402. package/dist/codemode/api/maps.js +529 -0
  403. package/dist/codemode/api/maps.js.map +1 -0
  404. package/dist/codemode/api/normalize.d.ts +13 -0
  405. package/dist/codemode/api/normalize.d.ts.map +1 -0
  406. package/dist/codemode/api/normalize.js +120 -0
  407. package/dist/codemode/api/normalize.js.map +1 -0
  408. package/dist/codemode/index.d.ts +1 -1
  409. package/dist/codemode/index.d.ts.map +1 -1
  410. package/dist/codemode/index.js +1 -1
  411. package/dist/codemode/index.js.map +1 -1
  412. package/dist/codemode/sandbox.d.ts.map +1 -1
  413. package/dist/codemode/sandbox.js +8 -25
  414. package/dist/codemode/sandbox.js.map +1 -1
  415. package/dist/filtering/ToolConstants.d.ts +11 -11
  416. package/dist/filtering/ToolConstants.d.ts.map +1 -1
  417. package/dist/filtering/ToolConstants.js +28 -15
  418. package/dist/filtering/ToolConstants.js.map +1 -1
  419. package/dist/filtering/ToolFilter.d.ts +0 -32
  420. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  421. package/dist/filtering/ToolFilter.js +0 -43
  422. package/dist/filtering/ToolFilter.js.map +1 -1
  423. package/dist/server/McpServer.d.ts +1 -1
  424. package/dist/server/McpServer.d.ts.map +1 -1
  425. package/dist/server/McpServer.js +1 -2
  426. package/dist/server/McpServer.js.map +1 -1
  427. package/dist/transports/http.d.ts +55 -10
  428. package/dist/transports/http.d.ts.map +1 -1
  429. package/dist/transports/http.js +301 -50
  430. package/dist/transports/http.js.map +1 -1
  431. package/dist/types/filtering.d.ts +1 -1
  432. package/dist/types/filtering.d.ts.map +1 -1
  433. package/dist/types/index.d.ts +2 -2
  434. package/dist/types/index.d.ts.map +1 -1
  435. package/dist/types/index.js.map +1 -1
  436. package/dist/types/mcp.d.ts +0 -21
  437. package/dist/types/mcp.d.ts.map +1 -1
  438. package/dist/types/schema.d.ts +0 -79
  439. package/dist/types/schema.d.ts.map +1 -1
  440. package/dist/utils/fts-config.d.ts +0 -6
  441. package/dist/utils/fts-config.d.ts.map +1 -1
  442. package/dist/utils/fts-config.js +1 -1
  443. package/dist/utils/fts-config.js.map +1 -1
  444. package/dist/utils/icons.d.ts.map +1 -1
  445. package/dist/utils/icons.js +5 -0
  446. package/dist/utils/icons.js.map +1 -1
  447. package/dist/utils/identifiers.d.ts.map +1 -1
  448. package/dist/utils/identifiers.js +6 -6
  449. package/dist/utils/identifiers.js.map +1 -1
  450. package/dist/utils/logger.d.ts +6 -6
  451. package/dist/utils/logger.d.ts.map +1 -1
  452. package/dist/utils/logger.js +18 -15
  453. package/dist/utils/logger.js.map +1 -1
  454. package/dist/utils/progress-utils.d.ts +3 -14
  455. package/dist/utils/progress-utils.d.ts.map +1 -1
  456. package/dist/utils/progress-utils.js +2 -21
  457. package/dist/utils/progress-utils.js.map +1 -1
  458. package/dist/utils/version.d.ts +9 -0
  459. package/dist/utils/version.d.ts.map +1 -0
  460. package/dist/utils/version.js +12 -0
  461. package/dist/utils/version.js.map +1 -0
  462. package/dist/utils/where-clause.d.ts +4 -0
  463. package/dist/utils/where-clause.d.ts.map +1 -1
  464. package/dist/utils/where-clause.js +16 -0
  465. package/dist/utils/where-clause.js.map +1 -1
  466. package/package.json +6 -4
  467. package/dist/adapters/postgresql/schemas/core.d.ts.map +0 -1
  468. package/dist/adapters/postgresql/schemas/core.js.map +0 -1
  469. package/dist/adapters/postgresql/schemas/extensions.d.ts +0 -852
  470. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +0 -1
  471. package/dist/adapters/postgresql/schemas/extensions.js +0 -1202
  472. package/dist/adapters/postgresql/schemas/extensions.js.map +0 -1
  473. package/dist/adapters/postgresql/schemas/jsonb.d.ts +0 -541
  474. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +0 -1
  475. package/dist/adapters/postgresql/schemas/jsonb.js +0 -814
  476. package/dist/adapters/postgresql/schemas/jsonb.js.map +0 -1
  477. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +0 -1
  478. package/dist/adapters/postgresql/schemas/postgis.js.map +0 -1
  479. package/dist/adapters/postgresql/schemas/stats.d.ts.map +0 -1
  480. package/dist/adapters/postgresql/schemas/stats.js.map +0 -1
  481. package/dist/adapters/postgresql/tools/citext.d.ts +0 -18
  482. package/dist/adapters/postgresql/tools/citext.d.ts.map +0 -1
  483. package/dist/adapters/postgresql/tools/citext.js.map +0 -1
  484. package/dist/adapters/postgresql/tools/introspection.d.ts +0 -15
  485. package/dist/adapters/postgresql/tools/introspection.d.ts.map +0 -1
  486. package/dist/adapters/postgresql/tools/introspection.js +0 -1682
  487. package/dist/adapters/postgresql/tools/introspection.js.map +0 -1
  488. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +0 -1
  489. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +0 -1
  490. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +0 -20
  491. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +0 -1
  492. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +0 -1
  493. package/dist/adapters/postgresql/tools/monitoring.d.ts +0 -13
  494. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +0 -1
  495. package/dist/adapters/postgresql/tools/monitoring.js.map +0 -1
  496. package/dist/adapters/postgresql/tools/partitioning.d.ts +0 -13
  497. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +0 -1
  498. package/dist/adapters/postgresql/tools/partitioning.js.map +0 -1
  499. package/dist/adapters/postgresql/tools/schema.d.ts +0 -13
  500. package/dist/adapters/postgresql/tools/schema.d.ts.map +0 -1
  501. package/dist/adapters/postgresql/tools/schema.js.map +0 -1
  502. package/dist/adapters/postgresql/tools/text.d.ts +0 -13
  503. package/dist/adapters/postgresql/tools/text.d.ts.map +0 -1
  504. package/dist/adapters/postgresql/tools/text.js +0 -1082
  505. package/dist/adapters/postgresql/tools/text.js.map +0 -1
  506. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +0 -1
  507. package/dist/adapters/postgresql/tools/vector/advanced.js +0 -958
  508. package/dist/adapters/postgresql/tools/vector/advanced.js.map +0 -1
  509. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +0 -1
  510. package/dist/adapters/postgresql/tools/vector/basic.js +0 -1165
  511. package/dist/adapters/postgresql/tools/vector/basic.js.map +0 -1
  512. package/dist/codemode/api.d.ts.map +0 -1
  513. package/dist/codemode/api.js +0 -1544
  514. package/dist/codemode/api.js.map +0 -1
  515. package/dist/utils/promptGenerator.d.ts +0 -20
  516. package/dist/utils/promptGenerator.d.ts.map +0 -1
  517. package/dist/utils/promptGenerator.js +0 -81
  518. package/dist/utils/promptGenerator.js.map +0 -1
@@ -0,0 +1,575 @@
1
+ /**
2
+ * PostgreSQL Migration Tools — Schema Version Tracking
3
+ *
4
+ * Migration init, record, apply, rollback, history, and status tools.
5
+ * 6 tools total.
6
+ */
7
+ import { createHash } from "node:crypto";
8
+ import { readOnly, write, destructive } from "../../../../utils/annotations.js";
9
+ import { getToolIcons } from "../../../../utils/icons.js";
10
+ import { formatPostgresError } from "../core/error-helpers.js";
11
+ import { sanitizeIdentifier } from "../../../../utils/identifiers.js";
12
+ import { MigrationInitSchemaBase, MigrationInitSchema, MigrationRecordSchemaBase, MigrationRecordSchema, MigrationApplySchemaBase, MigrationApplySchema, MigrationRollbackSchemaBase, MigrationRollbackSchema, MigrationHistorySchemaBase, MigrationHistorySchema, MigrationStatusSchemaBase, MigrationStatusSchema,
13
+ // Output schemas
14
+ MigrationInitOutputSchema, MigrationRecordOutputSchema, MigrationApplyOutputSchema, MigrationRollbackOutputSchema, MigrationHistoryOutputSchema, MigrationStatusOutputSchema, } from "../../schemas/index.js";
15
+ // =============================================================================
16
+ // Migration tracking — shared helpers
17
+ // =============================================================================
18
+ const TRACKING_TABLE = "_mcp_schema_versions";
19
+ /**
20
+ * Build the CREATE TABLE DDL for the tracking table.
21
+ * Accepts a pre-computed qualified table name (e.g. `_mcp_schema_versions`
22
+ * or `"custom_schema"."_mcp_schema_versions"`) so the caller controls
23
+ * schema qualification without fragile string replacement.
24
+ */
25
+ function buildCreateTrackingTableSql(qualifiedTable) {
26
+ return `
27
+ CREATE TABLE IF NOT EXISTS ${qualifiedTable} (
28
+ id SERIAL PRIMARY KEY,
29
+ version VARCHAR(50) NOT NULL,
30
+ description TEXT,
31
+ applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
32
+ applied_by VARCHAR(255),
33
+ migration_hash VARCHAR(64) NOT NULL,
34
+ migration_sql TEXT NOT NULL,
35
+ source_system VARCHAR(50),
36
+ rollback_sql TEXT,
37
+ status VARCHAR(20) NOT NULL DEFAULT 'applied',
38
+ CONSTRAINT valid_status CHECK (status IN ('applied', 'rolled_back', 'failed'))
39
+ )`;
40
+ }
41
+ /**
42
+ * Ensure the _mcp_schema_versions table exists in the public schema.
43
+ * Returns true if the table was newly created, false if it already existed.
44
+ */
45
+ async function ensureTrackingTable(adapter) {
46
+ const check = await adapter.executeQuery(`SELECT EXISTS (
47
+ SELECT 1 FROM pg_tables
48
+ WHERE schemaname = 'public' AND tablename = $1
49
+ ) AS "table_exists"`, [TRACKING_TABLE]);
50
+ const firstRow = (check.rows ?? [])[0];
51
+ const existed = firstRow?.["table_exists"] === true;
52
+ if (!existed) {
53
+ await adapter.executeQuery(buildCreateTrackingTableSql(TRACKING_TABLE));
54
+ }
55
+ return !existed;
56
+ }
57
+ function hashMigrationSql(sql) {
58
+ return createHash("sha256").update(sql).digest("hex");
59
+ }
60
+ /**
61
+ * Check for an already-applied migration with the same SQL hash.
62
+ * Returns an error result object if duplicate found, or null if clear.
63
+ */
64
+ async function checkDuplicateHash(adapter, migrationSql) {
65
+ const migrationHash = hashMigrationSql(migrationSql);
66
+ const dupCheck = await adapter.executeQuery(`SELECT id, version, status FROM ${TRACKING_TABLE}
67
+ WHERE migration_hash = $1 AND status = 'applied'`, [migrationHash]);
68
+ const dupRows = dupCheck.rows ?? [];
69
+ if (dupRows.length > 0) {
70
+ const dup = dupRows[0] ?? {};
71
+ const dupId = dup["id"];
72
+ const dupVersion = dup["version"];
73
+ return {
74
+ migrationHash,
75
+ duplicateError: {
76
+ success: false,
77
+ error: `Duplicate migration detected: version "${dupVersion}" (id: ${String(dupId)}) has the same SQL hash. ` +
78
+ `Use a different migration SQL or roll back the existing one first.`,
79
+ },
80
+ };
81
+ }
82
+ return { migrationHash, duplicateError: null };
83
+ }
84
+ function formatRecord(row) {
85
+ const appliedAt = row["applied_at"];
86
+ const appliedAtStr = appliedAt instanceof Date
87
+ ? appliedAt.toISOString()
88
+ : (appliedAt ?? "");
89
+ return {
90
+ id: row["id"],
91
+ version: row["version"],
92
+ description: row["description"] ?? null,
93
+ appliedAt: appliedAtStr,
94
+ appliedBy: row["applied_by"] ?? null,
95
+ migrationHash: row["migration_hash"],
96
+ sourceSystem: row["source_system"] ?? null,
97
+ status: row["status"],
98
+ };
99
+ }
100
+ // =============================================================================
101
+ // pg_migration_init
102
+ // =============================================================================
103
+ export function createMigrationInitTool(adapter) {
104
+ const annotations = write("Initialize migration tracking");
105
+ return {
106
+ name: "pg_migration_init",
107
+ description: "Initialize or verify the schema version tracking table (_mcp_schema_versions). " +
108
+ "Idempotent — safe to call repeatedly. Returns current tracking state.",
109
+ group: "migration",
110
+ inputSchema: MigrationInitSchemaBase,
111
+ outputSchema: MigrationInitOutputSchema,
112
+ annotations,
113
+ icons: getToolIcons("introspection", annotations),
114
+ handler: async (params, _context) => {
115
+ try {
116
+ const parsed = MigrationInitSchema.parse(params);
117
+ const targetSchema = parsed.schema ?? "public";
118
+ // Sanitize schema to prevent SQL injection via identifier interpolation
119
+ const sanitizedSchema = sanitizeIdentifier(targetSchema);
120
+ // Compute qualified table name once, reuse for DDL and queries
121
+ const qualifiedTable = targetSchema === "public"
122
+ ? TRACKING_TABLE
123
+ : `${sanitizedSchema}."${TRACKING_TABLE}"`;
124
+ const check = await adapter.executeQuery(`SELECT EXISTS (
125
+ SELECT 1 FROM pg_tables
126
+ WHERE schemaname = $1 AND tablename = $2
127
+ ) AS "table_exists"`, [targetSchema, TRACKING_TABLE]);
128
+ const firstRow = (check.rows ?? [])[0];
129
+ const existed = firstRow?.["table_exists"] === true;
130
+ if (!existed) {
131
+ await adapter.executeQuery(buildCreateTrackingTableSql(qualifiedTable));
132
+ }
133
+ const countResult = await adapter.executeQuery(`SELECT COUNT(*)::int AS count FROM ${qualifiedTable}`);
134
+ const countRow = (countResult.rows ?? [])[0];
135
+ const existingRecords = countRow?.["count"] ?? 0;
136
+ return {
137
+ success: true,
138
+ tableCreated: !existed,
139
+ tableName: qualifiedTable,
140
+ existingRecords,
141
+ };
142
+ }
143
+ catch (error) {
144
+ return {
145
+ success: false,
146
+ error: formatPostgresError(error, {
147
+ tool: "pg_migration_init",
148
+ }),
149
+ };
150
+ }
151
+ },
152
+ };
153
+ }
154
+ // =============================================================================
155
+ // pg_migration_record
156
+ // =============================================================================
157
+ export function createMigrationRecordTool(adapter) {
158
+ const annotations = write("Record migration");
159
+ return {
160
+ name: "pg_migration_record",
161
+ description: "Record a migration in the schema version tracking table. " +
162
+ "Auto-provisions the tracking table on first use. " +
163
+ "Computes SHA-256 hash for idempotency detection.",
164
+ group: "migration",
165
+ inputSchema: MigrationRecordSchemaBase,
166
+ outputSchema: MigrationRecordOutputSchema,
167
+ annotations,
168
+ icons: getToolIcons("introspection", annotations),
169
+ handler: async (params, _context) => {
170
+ try {
171
+ const parsed = MigrationRecordSchema.parse(params);
172
+ await ensureTrackingTable(adapter);
173
+ const { migrationHash, duplicateError } = await checkDuplicateHash(adapter, parsed.migrationSql);
174
+ if (duplicateError)
175
+ return duplicateError;
176
+ const result = await adapter.executeQuery(`INSERT INTO ${TRACKING_TABLE}
177
+ (version, description, applied_by, migration_hash, migration_sql, source_system, rollback_sql)
178
+ VALUES ($1, $2, $3, $4, $5, $6, $7)
179
+ RETURNING *`, [
180
+ parsed.version,
181
+ parsed.description ?? null,
182
+ parsed.appliedBy ?? null,
183
+ migrationHash,
184
+ parsed.migrationSql,
185
+ parsed.sourceSystem ?? null,
186
+ parsed.rollbackSql ?? null,
187
+ ]);
188
+ const resultRows = result.rows ?? [];
189
+ if (resultRows.length === 0) {
190
+ return {
191
+ success: false,
192
+ error: "Failed to insert migration record.",
193
+ };
194
+ }
195
+ const row = resultRows[0] ?? {};
196
+ return {
197
+ success: true,
198
+ record: formatRecord(row),
199
+ };
200
+ }
201
+ catch (error) {
202
+ return {
203
+ success: false,
204
+ error: formatPostgresError(error, {
205
+ tool: "pg_migration_record",
206
+ }),
207
+ };
208
+ }
209
+ },
210
+ };
211
+ }
212
+ // =============================================================================
213
+ // pg_migration_apply
214
+ // =============================================================================
215
+ export function createMigrationApplyTool(adapter) {
216
+ const annotations = destructive("Apply migration");
217
+ return {
218
+ name: "pg_migration_apply",
219
+ description: "Execute migration SQL and record it atomically in a single transaction. " +
220
+ "Auto-provisions the tracking table on first use. " +
221
+ "On failure, rolls back and records a 'failed' entry. " +
222
+ "Use pg_migration_record instead if you only need to log an already-applied migration.",
223
+ group: "migration",
224
+ inputSchema: MigrationApplySchemaBase,
225
+ outputSchema: MigrationApplyOutputSchema,
226
+ annotations,
227
+ icons: getToolIcons("introspection", annotations),
228
+ handler: async (params, _context) => {
229
+ try {
230
+ const parsed = MigrationApplySchema.parse(params);
231
+ await ensureTrackingTable(adapter);
232
+ const { migrationHash, duplicateError } = await checkDuplicateHash(adapter, parsed.migrationSql);
233
+ if (duplicateError)
234
+ return duplicateError;
235
+ // Execute migration SQL and record atomically
236
+ try {
237
+ await adapter.executeQuery("BEGIN");
238
+ // Execute the migration SQL
239
+ await adapter.executeQuery(parsed.migrationSql);
240
+ // Record in tracking table
241
+ const result = await adapter.executeQuery(`INSERT INTO ${TRACKING_TABLE}
242
+ (version, description, applied_by, migration_hash, migration_sql, source_system, rollback_sql)
243
+ VALUES ($1, $2, $3, $4, $5, $6, $7)
244
+ RETURNING *`, [
245
+ parsed.version,
246
+ parsed.description ?? null,
247
+ parsed.appliedBy ?? null,
248
+ migrationHash,
249
+ parsed.migrationSql,
250
+ parsed.sourceSystem ?? null,
251
+ parsed.rollbackSql ?? null,
252
+ ]);
253
+ await adapter.executeQuery("COMMIT");
254
+ const resultRows = result.rows ?? [];
255
+ if (resultRows.length === 0) {
256
+ return {
257
+ success: false,
258
+ error: "Migration was applied but failed to insert tracking record.",
259
+ };
260
+ }
261
+ const row = resultRows[0] ?? {};
262
+ return {
263
+ success: true,
264
+ record: formatRecord(row),
265
+ };
266
+ }
267
+ catch (err) {
268
+ // Roll back the entire transaction (migration SQL + INSERT)
269
+ await adapter.executeQuery("ROLLBACK");
270
+ const message = err instanceof Error ? err.message : "Unknown error";
271
+ // Record a 'failed' entry outside the rolled-back transaction
272
+ try {
273
+ await adapter.executeQuery(`INSERT INTO ${TRACKING_TABLE}
274
+ (version, description, applied_by, migration_hash, migration_sql, source_system, rollback_sql, status)
275
+ VALUES ($1, $2, $3, $4, $5, $6, $7, 'failed')`, [
276
+ parsed.version,
277
+ parsed.description ?? null,
278
+ parsed.appliedBy ?? null,
279
+ migrationHash,
280
+ parsed.migrationSql,
281
+ parsed.sourceSystem ?? null,
282
+ parsed.rollbackSql ?? null,
283
+ ]);
284
+ }
285
+ catch {
286
+ // Best-effort: if we can't record the failure, still return the error
287
+ }
288
+ return {
289
+ success: false,
290
+ error: `Migration "${parsed.version}" failed: ${message}. Transaction was rolled back.`,
291
+ };
292
+ }
293
+ }
294
+ catch (error) {
295
+ return {
296
+ success: false,
297
+ error: formatPostgresError(error, {
298
+ tool: "pg_migration_apply",
299
+ }),
300
+ };
301
+ }
302
+ },
303
+ };
304
+ }
305
+ // =============================================================================
306
+ // pg_migration_rollback
307
+ // =============================================================================
308
+ export function createMigrationRollbackTool(adapter) {
309
+ const annotations = destructive("Roll back migration");
310
+ return {
311
+ name: "pg_migration_rollback",
312
+ description: "Roll back a specific migration by ID or version. " +
313
+ "Executes the stored rollback_sql in a transaction and updates status to 'rolled_back'. " +
314
+ "Use dryRun: true to preview the rollback SQL without executing.",
315
+ group: "migration",
316
+ inputSchema: MigrationRollbackSchemaBase,
317
+ outputSchema: MigrationRollbackOutputSchema,
318
+ annotations,
319
+ icons: getToolIcons("introspection", annotations),
320
+ handler: async (params, _context) => {
321
+ try {
322
+ const parsed = MigrationRollbackSchema.parse(params);
323
+ await ensureTrackingTable(adapter);
324
+ if (parsed.id === undefined && parsed.version === undefined) {
325
+ return {
326
+ success: false,
327
+ error: "Either 'id' or 'version' is required to identify the migration to roll back.",
328
+ };
329
+ }
330
+ // Coerce id: functional param, return error on wrong type
331
+ let coercedId;
332
+ if (parsed.id !== undefined) {
333
+ const num = parsed.id;
334
+ if (isNaN(num)) {
335
+ return {
336
+ success: false,
337
+ error: `Invalid migration id: expected a number, got "${String(parsed.id)}"`,
338
+ };
339
+ }
340
+ coercedId = num;
341
+ }
342
+ // Find the migration
343
+ const whereClause = coercedId !== undefined ? "id = $1" : "version = $1";
344
+ const whereValue = coercedId ?? parsed.version;
345
+ const findResult = await adapter.executeQuery(`SELECT * FROM ${TRACKING_TABLE} WHERE ${whereClause} ORDER BY id DESC LIMIT 1`, [whereValue]);
346
+ const findRows = findResult.rows ?? [];
347
+ if (findRows.length === 0) {
348
+ const identifier = coercedId !== undefined
349
+ ? `id ${String(coercedId)}`
350
+ : `version "${parsed.version ?? ""}"`;
351
+ return {
352
+ success: false,
353
+ error: `Migration not found: ${identifier}`,
354
+ };
355
+ }
356
+ const row = findRows[0] ?? {};
357
+ const rowId = row["id"];
358
+ const rowVersion = row["version"];
359
+ const rowStatus = row["status"];
360
+ const rollbackSql = row["rollback_sql"] ?? null;
361
+ if (rowStatus === "rolled_back") {
362
+ return {
363
+ success: false,
364
+ error: `Migration "${rowVersion}" (id: ${String(rowId)}) has already been rolled back.`,
365
+ };
366
+ }
367
+ if (rollbackSql === null) {
368
+ return {
369
+ success: false,
370
+ error: `Migration "${rowVersion}" (id: ${String(rowId)}) has no rollback SQL stored. Manual rollback required.`,
371
+ };
372
+ }
373
+ if (parsed.dryRun === true) {
374
+ return {
375
+ success: true,
376
+ dryRun: true,
377
+ rollbackSql,
378
+ record: formatRecord(row),
379
+ };
380
+ }
381
+ // Execute rollback in a transaction
382
+ try {
383
+ await adapter.executeQuery("BEGIN");
384
+ await adapter.executeQuery(rollbackSql);
385
+ await adapter.executeQuery(`UPDATE ${TRACKING_TABLE} SET status = 'rolled_back' WHERE id = $1`, [rowId]);
386
+ await adapter.executeQuery("COMMIT");
387
+ return {
388
+ success: true,
389
+ dryRun: false,
390
+ rollbackSql,
391
+ record: {
392
+ ...formatRecord(row),
393
+ status: "rolled_back",
394
+ },
395
+ };
396
+ }
397
+ catch (err) {
398
+ await adapter.executeQuery("ROLLBACK");
399
+ const message = err instanceof Error ? err.message : "Unknown error";
400
+ return {
401
+ success: false,
402
+ error: `Rollback failed for migration "${rowVersion}" (id: ${String(rowId)}): ${message}. Transaction was rolled back.`,
403
+ };
404
+ }
405
+ }
406
+ catch (error) {
407
+ return {
408
+ success: false,
409
+ error: formatPostgresError(error, {
410
+ tool: "pg_migration_rollback",
411
+ }),
412
+ };
413
+ }
414
+ },
415
+ };
416
+ }
417
+ // =============================================================================
418
+ // pg_migration_history
419
+ // =============================================================================
420
+ export function createMigrationHistoryTool(adapter) {
421
+ const annotations = readOnly("Migration history");
422
+ return {
423
+ name: "pg_migration_history",
424
+ description: "Query migration history with optional filtering by status and source system. " +
425
+ "Returns paginated results ordered by applied_at descending.",
426
+ group: "migration",
427
+ inputSchema: MigrationHistorySchemaBase,
428
+ outputSchema: MigrationHistoryOutputSchema,
429
+ annotations,
430
+ icons: getToolIcons("introspection", annotations),
431
+ handler: async (params, _context) => {
432
+ try {
433
+ const parsed = MigrationHistorySchema.parse(params);
434
+ await ensureTrackingTable(adapter);
435
+ // Coerce limit/offset: wrong-type values silently default
436
+ const limit = parsed.limit ?? 50;
437
+ const offset = parsed.offset ?? 0;
438
+ // Build dynamic WHERE clause
439
+ const conditions = [];
440
+ const values = [];
441
+ let paramIdx = 1;
442
+ if (parsed.status != null) {
443
+ conditions.push(`status = $${String(paramIdx)}`);
444
+ paramIdx++;
445
+ values.push(parsed.status);
446
+ }
447
+ if (parsed.sourceSystem != null) {
448
+ conditions.push(`source_system = $${String(paramIdx)}`);
449
+ paramIdx++;
450
+ values.push(parsed.sourceSystem);
451
+ }
452
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
453
+ // Get total count
454
+ const countResult = await adapter.executeQuery(`SELECT COUNT(*)::int AS count FROM ${TRACKING_TABLE} ${whereClause}`, values.length > 0 ? values : undefined);
455
+ const countRow = (countResult.rows ?? [])[0];
456
+ const total = countRow?.["count"] ?? 0;
457
+ // Get page of results (exclude migration_sql for payload efficiency)
458
+ const limitIdx = String(paramIdx);
459
+ paramIdx++;
460
+ const offsetIdx = String(paramIdx);
461
+ const dataResult = await adapter.executeQuery(`SELECT id, version, description, applied_at, applied_by,
462
+ migration_hash, source_system, rollback_sql IS NOT NULL AS has_rollback, status
463
+ FROM ${TRACKING_TABLE}
464
+ ${whereClause}
465
+ ORDER BY applied_at DESC
466
+ LIMIT $${limitIdx} OFFSET $${offsetIdx}`, [...values, limit, offset]);
467
+ const records = (dataResult.rows ?? []).map(formatRecord);
468
+ return {
469
+ records,
470
+ total,
471
+ limit,
472
+ offset,
473
+ };
474
+ }
475
+ catch (error) {
476
+ return {
477
+ success: false,
478
+ error: formatPostgresError(error, {
479
+ tool: "pg_migration_history",
480
+ }),
481
+ };
482
+ }
483
+ },
484
+ };
485
+ }
486
+ // =============================================================================
487
+ // pg_migration_status
488
+ // =============================================================================
489
+ export function createMigrationStatusTool(adapter) {
490
+ const annotations = readOnly("Migration status");
491
+ return {
492
+ name: "pg_migration_status",
493
+ description: "Get current migration tracking status: latest version, counts by status, " +
494
+ "and list of source systems. Returns initialized: false if tracking table doesn't exist.",
495
+ group: "migration",
496
+ inputSchema: MigrationStatusSchemaBase,
497
+ outputSchema: MigrationStatusOutputSchema,
498
+ annotations,
499
+ icons: getToolIcons("introspection", annotations),
500
+ handler: async (params, _context) => {
501
+ try {
502
+ const parsed = MigrationStatusSchema.parse(params);
503
+ const targetSchema = parsed.schema ?? "public";
504
+ // Sanitize schema to prevent SQL injection via identifier interpolation
505
+ const sanitizedSchema = sanitizeIdentifier(targetSchema);
506
+ // Check if tracking table exists
507
+ const check = await adapter.executeQuery(`SELECT EXISTS (
508
+ SELECT 1 FROM pg_tables
509
+ WHERE schemaname = $1 AND tablename = $2
510
+ ) AS "table_exists"`, [targetSchema, TRACKING_TABLE]);
511
+ const firstRow = (check.rows ?? [])[0];
512
+ const tableExists = firstRow?.["table_exists"] === true;
513
+ if (!tableExists) {
514
+ return {
515
+ initialized: false,
516
+ latestVersion: null,
517
+ latestAppliedAt: null,
518
+ counts: { total: 0, applied: 0, rolledBack: 0, failed: 0 },
519
+ sourceSystems: [],
520
+ };
521
+ }
522
+ const qualifiedTable = targetSchema === "public"
523
+ ? TRACKING_TABLE
524
+ : `${sanitizedSchema}."${TRACKING_TABLE}"`;
525
+ // Get aggregate status
526
+ const statsResult = await adapter.executeQuery(`SELECT
527
+ COUNT(*)::int AS total,
528
+ COUNT(*) FILTER (WHERE status = 'applied')::int AS applied,
529
+ COUNT(*) FILTER (WHERE status = 'rolled_back')::int AS rolled_back,
530
+ COUNT(*) FILTER (WHERE status = 'failed')::int AS failed
531
+ FROM ${qualifiedTable}`);
532
+ const statsRow = (statsResult.rows ?? [])[0] ?? {};
533
+ // Get latest applied migration
534
+ const latestResult = await adapter.executeQuery(`SELECT version, applied_at FROM ${qualifiedTable}
535
+ WHERE status = 'applied'
536
+ ORDER BY applied_at DESC LIMIT 1`);
537
+ const latestRow = (latestResult.rows ?? [])[0];
538
+ // Get distinct source systems
539
+ const systemsResult = await adapter.executeQuery(`SELECT DISTINCT source_system FROM ${qualifiedTable}
540
+ WHERE source_system IS NOT NULL
541
+ ORDER BY source_system`);
542
+ const sourceSystems = (systemsResult.rows ?? []).map((r) => r["source_system"]);
543
+ let latestAppliedAt = null;
544
+ if (latestRow != null) {
545
+ const appliedAt = latestRow["applied_at"];
546
+ latestAppliedAt =
547
+ appliedAt instanceof Date
548
+ ? appliedAt.toISOString()
549
+ : (appliedAt ?? "");
550
+ }
551
+ return {
552
+ initialized: true,
553
+ latestVersion: latestRow != null ? latestRow["version"] : null,
554
+ latestAppliedAt,
555
+ counts: {
556
+ total: statsRow["total"],
557
+ applied: statsRow["applied"],
558
+ rolledBack: statsRow["rolled_back"],
559
+ failed: statsRow["failed"],
560
+ },
561
+ sourceSystems,
562
+ };
563
+ }
564
+ catch (error) {
565
+ return {
566
+ success: false,
567
+ error: formatPostgresError(error, {
568
+ tool: "pg_migration_status",
569
+ }),
570
+ };
571
+ }
572
+ },
573
+ };
574
+ }
575
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/introspection/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * PostgreSQL JSONB Tools - Analytics Operations
3
+ *
4
+ * JSONB analytics tools: index suggestions, security scanning, and statistics.
5
+ */
6
+ import type { PostgresAdapter } from "../../PostgresAdapter.js";
7
+ import type { ToolDefinition } from "../../../../types/index.js";
8
+ /**
9
+ * Suggest JSONB indexes based on query patterns
10
+ */
11
+ export declare function createJsonbIndexSuggestTool(adapter: PostgresAdapter): ToolDefinition;
12
+ /**
13
+ * Scan JSONB for security issues
14
+ */
15
+ export declare function createJsonbSecurityScanTool(adapter: PostgresAdapter): ToolDefinition;
16
+ /**
17
+ * Get JSONB column statistics
18
+ */
19
+ export declare function createJsonbStatsTool(adapter: PostgresAdapter): ToolDefinition;
20
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/jsonb/analytics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AAqBpC;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,GACvB,cAAc,CAuIhB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,GACvB,cAAc,CAyIhB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CA4I7E"}