@neverinfamous/postgres-mcp 2.0.0 → 2.1.0

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