@neverinfamous/postgres-mcp 1.0.1

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 (571) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +515 -0
  3. package/dist/__tests__/mocks/adapter.d.ts +80 -0
  4. package/dist/__tests__/mocks/adapter.d.ts.map +1 -0
  5. package/dist/__tests__/mocks/adapter.js +225 -0
  6. package/dist/__tests__/mocks/adapter.js.map +1 -0
  7. package/dist/__tests__/mocks/index.d.ts +11 -0
  8. package/dist/__tests__/mocks/index.d.ts.map +1 -0
  9. package/dist/__tests__/mocks/index.js +11 -0
  10. package/dist/__tests__/mocks/index.js.map +1 -0
  11. package/dist/__tests__/mocks/pool.d.ts +43 -0
  12. package/dist/__tests__/mocks/pool.d.ts.map +1 -0
  13. package/dist/__tests__/mocks/pool.js +71 -0
  14. package/dist/__tests__/mocks/pool.js.map +1 -0
  15. package/dist/adapters/DatabaseAdapter.d.ts +139 -0
  16. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
  17. package/dist/adapters/DatabaseAdapter.js +250 -0
  18. package/dist/adapters/DatabaseAdapter.js.map +1 -0
  19. package/dist/adapters/postgresql/PostgresAdapter.d.ts +119 -0
  20. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -0
  21. package/dist/adapters/postgresql/PostgresAdapter.js +902 -0
  22. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -0
  23. package/dist/adapters/postgresql/index.d.ts +5 -0
  24. package/dist/adapters/postgresql/index.d.ts.map +1 -0
  25. package/dist/adapters/postgresql/index.js +5 -0
  26. package/dist/adapters/postgresql/index.js.map +1 -0
  27. package/dist/adapters/postgresql/prompts/backup.d.ts +8 -0
  28. package/dist/adapters/postgresql/prompts/backup.d.ts.map +1 -0
  29. package/dist/adapters/postgresql/prompts/backup.js +132 -0
  30. package/dist/adapters/postgresql/prompts/backup.js.map +1 -0
  31. package/dist/adapters/postgresql/prompts/citext.d.ts +8 -0
  32. package/dist/adapters/postgresql/prompts/citext.d.ts.map +1 -0
  33. package/dist/adapters/postgresql/prompts/citext.js +227 -0
  34. package/dist/adapters/postgresql/prompts/citext.js.map +1 -0
  35. package/dist/adapters/postgresql/prompts/extensionSetup.d.ts +8 -0
  36. package/dist/adapters/postgresql/prompts/extensionSetup.d.ts.map +1 -0
  37. package/dist/adapters/postgresql/prompts/extensionSetup.js +282 -0
  38. package/dist/adapters/postgresql/prompts/extensionSetup.js.map +1 -0
  39. package/dist/adapters/postgresql/prompts/health.d.ts +8 -0
  40. package/dist/adapters/postgresql/prompts/health.d.ts.map +1 -0
  41. package/dist/adapters/postgresql/prompts/health.js +118 -0
  42. package/dist/adapters/postgresql/prompts/health.js.map +1 -0
  43. package/dist/adapters/postgresql/prompts/index.d.ts +13 -0
  44. package/dist/adapters/postgresql/prompts/index.d.ts.map +1 -0
  45. package/dist/adapters/postgresql/prompts/index.js +308 -0
  46. package/dist/adapters/postgresql/prompts/index.js.map +1 -0
  47. package/dist/adapters/postgresql/prompts/indexTuning.d.ts +8 -0
  48. package/dist/adapters/postgresql/prompts/indexTuning.d.ts.map +1 -0
  49. package/dist/adapters/postgresql/prompts/indexTuning.js +130 -0
  50. package/dist/adapters/postgresql/prompts/indexTuning.js.map +1 -0
  51. package/dist/adapters/postgresql/prompts/kcache.d.ts +8 -0
  52. package/dist/adapters/postgresql/prompts/kcache.d.ts.map +1 -0
  53. package/dist/adapters/postgresql/prompts/kcache.js +227 -0
  54. package/dist/adapters/postgresql/prompts/kcache.js.map +1 -0
  55. package/dist/adapters/postgresql/prompts/ltree.d.ts +8 -0
  56. package/dist/adapters/postgresql/prompts/ltree.d.ts.map +1 -0
  57. package/dist/adapters/postgresql/prompts/ltree.js +286 -0
  58. package/dist/adapters/postgresql/prompts/ltree.js.map +1 -0
  59. package/dist/adapters/postgresql/prompts/partman.d.ts +8 -0
  60. package/dist/adapters/postgresql/prompts/partman.d.ts.map +1 -0
  61. package/dist/adapters/postgresql/prompts/partman.js +211 -0
  62. package/dist/adapters/postgresql/prompts/partman.js.map +1 -0
  63. package/dist/adapters/postgresql/prompts/pgcron.d.ts +8 -0
  64. package/dist/adapters/postgresql/prompts/pgcron.d.ts.map +1 -0
  65. package/dist/adapters/postgresql/prompts/pgcron.js +233 -0
  66. package/dist/adapters/postgresql/prompts/pgcron.js.map +1 -0
  67. package/dist/adapters/postgresql/prompts/pgcrypto.d.ts +8 -0
  68. package/dist/adapters/postgresql/prompts/pgcrypto.d.ts.map +1 -0
  69. package/dist/adapters/postgresql/prompts/pgcrypto.js +299 -0
  70. package/dist/adapters/postgresql/prompts/pgcrypto.js.map +1 -0
  71. package/dist/adapters/postgresql/prompts/pgvector.d.ts +8 -0
  72. package/dist/adapters/postgresql/prompts/pgvector.d.ts.map +1 -0
  73. package/dist/adapters/postgresql/prompts/pgvector.js +148 -0
  74. package/dist/adapters/postgresql/prompts/pgvector.js.map +1 -0
  75. package/dist/adapters/postgresql/prompts/postgis.d.ts +8 -0
  76. package/dist/adapters/postgresql/prompts/postgis.d.ts.map +1 -0
  77. package/dist/adapters/postgresql/prompts/postgis.js +200 -0
  78. package/dist/adapters/postgresql/prompts/postgis.js.map +1 -0
  79. package/dist/adapters/postgresql/resources/activity.d.ts +9 -0
  80. package/dist/adapters/postgresql/resources/activity.d.ts.map +1 -0
  81. package/dist/adapters/postgresql/resources/activity.js +118 -0
  82. package/dist/adapters/postgresql/resources/activity.js.map +1 -0
  83. package/dist/adapters/postgresql/resources/capabilities.d.ts +9 -0
  84. package/dist/adapters/postgresql/resources/capabilities.d.ts.map +1 -0
  85. package/dist/adapters/postgresql/resources/capabilities.js +182 -0
  86. package/dist/adapters/postgresql/resources/capabilities.js.map +1 -0
  87. package/dist/adapters/postgresql/resources/cron.d.ts +9 -0
  88. package/dist/adapters/postgresql/resources/cron.d.ts.map +1 -0
  89. package/dist/adapters/postgresql/resources/cron.js +156 -0
  90. package/dist/adapters/postgresql/resources/cron.js.map +1 -0
  91. package/dist/adapters/postgresql/resources/crypto.d.ts +9 -0
  92. package/dist/adapters/postgresql/resources/crypto.d.ts.map +1 -0
  93. package/dist/adapters/postgresql/resources/crypto.js +191 -0
  94. package/dist/adapters/postgresql/resources/crypto.js.map +1 -0
  95. package/dist/adapters/postgresql/resources/extensions.d.ts +9 -0
  96. package/dist/adapters/postgresql/resources/extensions.d.ts.map +1 -0
  97. package/dist/adapters/postgresql/resources/extensions.js +85 -0
  98. package/dist/adapters/postgresql/resources/extensions.js.map +1 -0
  99. package/dist/adapters/postgresql/resources/health.d.ts +9 -0
  100. package/dist/adapters/postgresql/resources/health.d.ts.map +1 -0
  101. package/dist/adapters/postgresql/resources/health.js +185 -0
  102. package/dist/adapters/postgresql/resources/health.js.map +1 -0
  103. package/dist/adapters/postgresql/resources/index.d.ts +40 -0
  104. package/dist/adapters/postgresql/resources/index.d.ts.map +1 -0
  105. package/dist/adapters/postgresql/resources/index.js +87 -0
  106. package/dist/adapters/postgresql/resources/index.js.map +1 -0
  107. package/dist/adapters/postgresql/resources/indexes.d.ts +9 -0
  108. package/dist/adapters/postgresql/resources/indexes.d.ts.map +1 -0
  109. package/dist/adapters/postgresql/resources/indexes.js +130 -0
  110. package/dist/adapters/postgresql/resources/indexes.js.map +1 -0
  111. package/dist/adapters/postgresql/resources/kcache.d.ts +9 -0
  112. package/dist/adapters/postgresql/resources/kcache.d.ts.map +1 -0
  113. package/dist/adapters/postgresql/resources/kcache.js +219 -0
  114. package/dist/adapters/postgresql/resources/kcache.js.map +1 -0
  115. package/dist/adapters/postgresql/resources/locks.d.ts +9 -0
  116. package/dist/adapters/postgresql/resources/locks.d.ts.map +1 -0
  117. package/dist/adapters/postgresql/resources/locks.js +89 -0
  118. package/dist/adapters/postgresql/resources/locks.js.map +1 -0
  119. package/dist/adapters/postgresql/resources/partman.d.ts +9 -0
  120. package/dist/adapters/postgresql/resources/partman.d.ts.map +1 -0
  121. package/dist/adapters/postgresql/resources/partman.js +149 -0
  122. package/dist/adapters/postgresql/resources/partman.js.map +1 -0
  123. package/dist/adapters/postgresql/resources/performance.d.ts +9 -0
  124. package/dist/adapters/postgresql/resources/performance.d.ts.map +1 -0
  125. package/dist/adapters/postgresql/resources/performance.js +170 -0
  126. package/dist/adapters/postgresql/resources/performance.js.map +1 -0
  127. package/dist/adapters/postgresql/resources/pool.d.ts +9 -0
  128. package/dist/adapters/postgresql/resources/pool.d.ts.map +1 -0
  129. package/dist/adapters/postgresql/resources/pool.js +93 -0
  130. package/dist/adapters/postgresql/resources/pool.js.map +1 -0
  131. package/dist/adapters/postgresql/resources/postgis.d.ts +9 -0
  132. package/dist/adapters/postgresql/resources/postgis.d.ts.map +1 -0
  133. package/dist/adapters/postgresql/resources/postgis.js +232 -0
  134. package/dist/adapters/postgresql/resources/postgis.js.map +1 -0
  135. package/dist/adapters/postgresql/resources/replication.d.ts +9 -0
  136. package/dist/adapters/postgresql/resources/replication.d.ts.map +1 -0
  137. package/dist/adapters/postgresql/resources/replication.js +126 -0
  138. package/dist/adapters/postgresql/resources/replication.js.map +1 -0
  139. package/dist/adapters/postgresql/resources/schema.d.ts +10 -0
  140. package/dist/adapters/postgresql/resources/schema.d.ts.map +1 -0
  141. package/dist/adapters/postgresql/resources/schema.js +80 -0
  142. package/dist/adapters/postgresql/resources/schema.js.map +1 -0
  143. package/dist/adapters/postgresql/resources/settings.d.ts +9 -0
  144. package/dist/adapters/postgresql/resources/settings.d.ts.map +1 -0
  145. package/dist/adapters/postgresql/resources/settings.js +184 -0
  146. package/dist/adapters/postgresql/resources/settings.js.map +1 -0
  147. package/dist/adapters/postgresql/resources/stats.d.ts +10 -0
  148. package/dist/adapters/postgresql/resources/stats.d.ts.map +1 -0
  149. package/dist/adapters/postgresql/resources/stats.js +124 -0
  150. package/dist/adapters/postgresql/resources/stats.js.map +1 -0
  151. package/dist/adapters/postgresql/resources/tables.d.ts +9 -0
  152. package/dist/adapters/postgresql/resources/tables.d.ts.map +1 -0
  153. package/dist/adapters/postgresql/resources/tables.js +20 -0
  154. package/dist/adapters/postgresql/resources/tables.js.map +1 -0
  155. package/dist/adapters/postgresql/resources/vacuum.d.ts +9 -0
  156. package/dist/adapters/postgresql/resources/vacuum.d.ts.map +1 -0
  157. package/dist/adapters/postgresql/resources/vacuum.js +122 -0
  158. package/dist/adapters/postgresql/resources/vacuum.js.map +1 -0
  159. package/dist/adapters/postgresql/resources/vector.d.ts +9 -0
  160. package/dist/adapters/postgresql/resources/vector.d.ts.map +1 -0
  161. package/dist/adapters/postgresql/resources/vector.js +185 -0
  162. package/dist/adapters/postgresql/resources/vector.js.map +1 -0
  163. package/dist/adapters/postgresql/schemas/admin.d.ts +74 -0
  164. package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -0
  165. package/dist/adapters/postgresql/schemas/admin.js +180 -0
  166. package/dist/adapters/postgresql/schemas/admin.js.map +1 -0
  167. package/dist/adapters/postgresql/schemas/backup.d.ts +68 -0
  168. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -0
  169. package/dist/adapters/postgresql/schemas/backup.js +114 -0
  170. package/dist/adapters/postgresql/schemas/backup.js.map +1 -0
  171. package/dist/adapters/postgresql/schemas/core.d.ts +443 -0
  172. package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -0
  173. package/dist/adapters/postgresql/schemas/core.js +628 -0
  174. package/dist/adapters/postgresql/schemas/core.js.map +1 -0
  175. package/dist/adapters/postgresql/schemas/cron.d.ts +131 -0
  176. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -0
  177. package/dist/adapters/postgresql/schemas/cron.js +218 -0
  178. package/dist/adapters/postgresql/schemas/cron.js.map +1 -0
  179. package/dist/adapters/postgresql/schemas/extensions.d.ts +403 -0
  180. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -0
  181. package/dist/adapters/postgresql/schemas/extensions.js +600 -0
  182. package/dist/adapters/postgresql/schemas/extensions.js.map +1 -0
  183. package/dist/adapters/postgresql/schemas/index.d.ts +21 -0
  184. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -0
  185. package/dist/adapters/postgresql/schemas/index.js +72 -0
  186. package/dist/adapters/postgresql/schemas/index.js.map +1 -0
  187. package/dist/adapters/postgresql/schemas/jsonb.d.ts +94 -0
  188. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -0
  189. package/dist/adapters/postgresql/schemas/jsonb.js +198 -0
  190. package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -0
  191. package/dist/adapters/postgresql/schemas/monitoring.d.ts +28 -0
  192. package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -0
  193. package/dist/adapters/postgresql/schemas/monitoring.js +45 -0
  194. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -0
  195. package/dist/adapters/postgresql/schemas/partitioning.d.ts +152 -0
  196. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -0
  197. package/dist/adapters/postgresql/schemas/partitioning.js +399 -0
  198. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -0
  199. package/dist/adapters/postgresql/schemas/partman.d.ts +94 -0
  200. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -0
  201. package/dist/adapters/postgresql/schemas/partman.js +264 -0
  202. package/dist/adapters/postgresql/schemas/partman.js.map +1 -0
  203. package/dist/adapters/postgresql/schemas/performance.d.ts +52 -0
  204. package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -0
  205. package/dist/adapters/postgresql/schemas/performance.js +57 -0
  206. package/dist/adapters/postgresql/schemas/performance.js.map +1 -0
  207. package/dist/adapters/postgresql/schemas/postgis.d.ts +693 -0
  208. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -0
  209. package/dist/adapters/postgresql/schemas/postgis.js +662 -0
  210. package/dist/adapters/postgresql/schemas/postgis.js.map +1 -0
  211. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +171 -0
  212. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -0
  213. package/dist/adapters/postgresql/schemas/schema-mgmt.js +235 -0
  214. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -0
  215. package/dist/adapters/postgresql/schemas/stats.d.ts +229 -0
  216. package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -0
  217. package/dist/adapters/postgresql/schemas/stats.js +587 -0
  218. package/dist/adapters/postgresql/schemas/stats.js.map +1 -0
  219. package/dist/adapters/postgresql/schemas/text-search.d.ts +83 -0
  220. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -0
  221. package/dist/adapters/postgresql/schemas/text-search.js +132 -0
  222. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -0
  223. package/dist/adapters/postgresql/schemas/vector.d.ts +143 -0
  224. package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -0
  225. package/dist/adapters/postgresql/schemas/vector.js +123 -0
  226. package/dist/adapters/postgresql/schemas/vector.js.map +1 -0
  227. package/dist/adapters/postgresql/tools/admin.d.ts +13 -0
  228. package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -0
  229. package/dist/adapters/postgresql/tools/admin.js +417 -0
  230. package/dist/adapters/postgresql/tools/admin.js.map +1 -0
  231. package/dist/adapters/postgresql/tools/backup/dump.d.ts +12 -0
  232. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -0
  233. package/dist/adapters/postgresql/tools/backup/dump.js +546 -0
  234. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -0
  235. package/dist/adapters/postgresql/tools/backup/index.d.ts +16 -0
  236. package/dist/adapters/postgresql/tools/backup/index.d.ts.map +1 -0
  237. package/dist/adapters/postgresql/tools/backup/index.js +29 -0
  238. package/dist/adapters/postgresql/tools/backup/index.js.map +1 -0
  239. package/dist/adapters/postgresql/tools/backup/planning.d.ts +22 -0
  240. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -0
  241. package/dist/adapters/postgresql/tools/backup/planning.js +411 -0
  242. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -0
  243. package/dist/adapters/postgresql/tools/citext.d.ts +18 -0
  244. package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -0
  245. package/dist/adapters/postgresql/tools/citext.js +568 -0
  246. package/dist/adapters/postgresql/tools/citext.js.map +1 -0
  247. package/dist/adapters/postgresql/tools/codemode/index.d.ts +27 -0
  248. package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -0
  249. package/dist/adapters/postgresql/tools/codemode/index.js +171 -0
  250. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -0
  251. package/dist/adapters/postgresql/tools/core/convenience.d.ts +192 -0
  252. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -0
  253. package/dist/adapters/postgresql/tools/core/convenience.js +617 -0
  254. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -0
  255. package/dist/adapters/postgresql/tools/core/health.d.ts +20 -0
  256. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -0
  257. package/dist/adapters/postgresql/tools/core/health.js +360 -0
  258. package/dist/adapters/postgresql/tools/core/health.js.map +1 -0
  259. package/dist/adapters/postgresql/tools/core/index.d.ts +15 -0
  260. package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -0
  261. package/dist/adapters/postgresql/tools/core/index.js +40 -0
  262. package/dist/adapters/postgresql/tools/core/index.js.map +1 -0
  263. package/dist/adapters/postgresql/tools/core/indexes.d.ts +30 -0
  264. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -0
  265. package/dist/adapters/postgresql/tools/core/indexes.js +232 -0
  266. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -0
  267. package/dist/adapters/postgresql/tools/core/objects.d.ts +20 -0
  268. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -0
  269. package/dist/adapters/postgresql/tools/core/objects.js +361 -0
  270. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -0
  271. package/dist/adapters/postgresql/tools/core/query.d.ts +16 -0
  272. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -0
  273. package/dist/adapters/postgresql/tools/core/query.js +87 -0
  274. package/dist/adapters/postgresql/tools/core/query.js.map +1 -0
  275. package/dist/adapters/postgresql/tools/core/schemas.d.ts +135 -0
  276. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -0
  277. package/dist/adapters/postgresql/tools/core/schemas.js +221 -0
  278. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -0
  279. package/dist/adapters/postgresql/tools/core/tables.d.ts +24 -0
  280. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -0
  281. package/dist/adapters/postgresql/tools/core/tables.js +219 -0
  282. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -0
  283. package/dist/adapters/postgresql/tools/cron.d.ts +16 -0
  284. package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -0
  285. package/dist/adapters/postgresql/tools/cron.js +440 -0
  286. package/dist/adapters/postgresql/tools/cron.js.map +1 -0
  287. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts +33 -0
  288. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -0
  289. package/dist/adapters/postgresql/tools/jsonb/advanced.js +681 -0
  290. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -0
  291. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +20 -0
  292. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -0
  293. package/dist/adapters/postgresql/tools/jsonb/basic.js +654 -0
  294. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -0
  295. package/dist/adapters/postgresql/tools/jsonb/index.d.ts +16 -0
  296. package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -0
  297. package/dist/adapters/postgresql/tools/jsonb/index.js +39 -0
  298. package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -0
  299. package/dist/adapters/postgresql/tools/kcache.d.ts +20 -0
  300. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -0
  301. package/dist/adapters/postgresql/tools/kcache.js +574 -0
  302. package/dist/adapters/postgresql/tools/kcache.js.map +1 -0
  303. package/dist/adapters/postgresql/tools/ltree.d.ts +8 -0
  304. package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -0
  305. package/dist/adapters/postgresql/tools/ltree.js +390 -0
  306. package/dist/adapters/postgresql/tools/ltree.js.map +1 -0
  307. package/dist/adapters/postgresql/tools/monitoring.d.ts +13 -0
  308. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -0
  309. package/dist/adapters/postgresql/tools/monitoring.js +753 -0
  310. package/dist/adapters/postgresql/tools/monitoring.js.map +1 -0
  311. package/dist/adapters/postgresql/tools/partitioning.d.ts +13 -0
  312. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -0
  313. package/dist/adapters/postgresql/tools/partitioning.js +500 -0
  314. package/dist/adapters/postgresql/tools/partitioning.js.map +1 -0
  315. package/dist/adapters/postgresql/tools/partman/index.d.ts +19 -0
  316. package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -0
  317. package/dist/adapters/postgresql/tools/partman/index.js +33 -0
  318. package/dist/adapters/postgresql/tools/partman/index.js.map +1 -0
  319. package/dist/adapters/postgresql/tools/partman/management.d.ts +28 -0
  320. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -0
  321. package/dist/adapters/postgresql/tools/partman/management.js +563 -0
  322. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -0
  323. package/dist/adapters/postgresql/tools/partman/operations.d.ts +28 -0
  324. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -0
  325. package/dist/adapters/postgresql/tools/partman/operations.js +632 -0
  326. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -0
  327. package/dist/adapters/postgresql/tools/performance/analysis.d.ts +9 -0
  328. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -0
  329. package/dist/adapters/postgresql/tools/performance/analysis.js +383 -0
  330. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -0
  331. package/dist/adapters/postgresql/tools/performance/explain.d.ts +13 -0
  332. package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -0
  333. package/dist/adapters/postgresql/tools/performance/explain.js +71 -0
  334. package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -0
  335. package/dist/adapters/postgresql/tools/performance/index.d.ts +13 -0
  336. package/dist/adapters/postgresql/tools/performance/index.d.ts.map +1 -0
  337. package/dist/adapters/postgresql/tools/performance/index.js +40 -0
  338. package/dist/adapters/postgresql/tools/performance/index.js.map +1 -0
  339. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts +9 -0
  340. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -0
  341. package/dist/adapters/postgresql/tools/performance/monitoring.js +122 -0
  342. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -0
  343. package/dist/adapters/postgresql/tools/performance/optimization.d.ts +9 -0
  344. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -0
  345. package/dist/adapters/postgresql/tools/performance/optimization.js +315 -0
  346. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -0
  347. package/dist/adapters/postgresql/tools/performance/stats.d.ts +14 -0
  348. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -0
  349. package/dist/adapters/postgresql/tools/performance/stats.js +559 -0
  350. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -0
  351. package/dist/adapters/postgresql/tools/pgcrypto.d.ts +8 -0
  352. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -0
  353. package/dist/adapters/postgresql/tools/pgcrypto.js +239 -0
  354. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -0
  355. package/dist/adapters/postgresql/tools/postgis/advanced.d.ts +21 -0
  356. package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -0
  357. package/dist/adapters/postgresql/tools/postgis/advanced.js +383 -0
  358. package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -0
  359. package/dist/adapters/postgresql/tools/postgis/basic.d.ts +16 -0
  360. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -0
  361. package/dist/adapters/postgresql/tools/postgis/basic.js +479 -0
  362. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -0
  363. package/dist/adapters/postgresql/tools/postgis/index.d.ts +17 -0
  364. package/dist/adapters/postgresql/tools/postgis/index.d.ts.map +1 -0
  365. package/dist/adapters/postgresql/tools/postgis/index.js +46 -0
  366. package/dist/adapters/postgresql/tools/postgis/index.js.map +1 -0
  367. package/dist/adapters/postgresql/tools/postgis/standalone.d.ts +21 -0
  368. package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -0
  369. package/dist/adapters/postgresql/tools/postgis/standalone.js +150 -0
  370. package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -0
  371. package/dist/adapters/postgresql/tools/schema.d.ts +13 -0
  372. package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -0
  373. package/dist/adapters/postgresql/tools/schema.js +515 -0
  374. package/dist/adapters/postgresql/tools/schema.js.map +1 -0
  375. package/dist/adapters/postgresql/tools/stats/advanced.d.ts +24 -0
  376. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -0
  377. package/dist/adapters/postgresql/tools/stats/advanced.js +876 -0
  378. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -0
  379. package/dist/adapters/postgresql/tools/stats/basic.d.ts +24 -0
  380. package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -0
  381. package/dist/adapters/postgresql/tools/stats/basic.js +501 -0
  382. package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -0
  383. package/dist/adapters/postgresql/tools/stats/index.d.ts +17 -0
  384. package/dist/adapters/postgresql/tools/stats/index.d.ts.map +1 -0
  385. package/dist/adapters/postgresql/tools/stats/index.js +30 -0
  386. package/dist/adapters/postgresql/tools/stats/index.js.map +1 -0
  387. package/dist/adapters/postgresql/tools/text.d.ts +13 -0
  388. package/dist/adapters/postgresql/tools/text.d.ts.map +1 -0
  389. package/dist/adapters/postgresql/tools/text.js +708 -0
  390. package/dist/adapters/postgresql/tools/text.js.map +1 -0
  391. package/dist/adapters/postgresql/tools/transactions.d.ts +13 -0
  392. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -0
  393. package/dist/adapters/postgresql/tools/transactions.js +201 -0
  394. package/dist/adapters/postgresql/tools/transactions.js.map +1 -0
  395. package/dist/adapters/postgresql/tools/vector/advanced.d.ts +12 -0
  396. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -0
  397. package/dist/adapters/postgresql/tools/vector/advanced.js +902 -0
  398. package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -0
  399. package/dist/adapters/postgresql/tools/vector/basic.d.ts +25 -0
  400. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -0
  401. package/dist/adapters/postgresql/tools/vector/basic.js +1000 -0
  402. package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -0
  403. package/dist/adapters/postgresql/tools/vector/index.d.ts +13 -0
  404. package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -0
  405. package/dist/adapters/postgresql/tools/vector/index.js +33 -0
  406. package/dist/adapters/postgresql/tools/vector/index.js.map +1 -0
  407. package/dist/auth/AuthorizationServerDiscovery.d.ts +44 -0
  408. package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
  409. package/dist/auth/AuthorizationServerDiscovery.js +117 -0
  410. package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
  411. package/dist/auth/OAuthResourceServer.d.ts +42 -0
  412. package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
  413. package/dist/auth/OAuthResourceServer.js +80 -0
  414. package/dist/auth/OAuthResourceServer.js.map +1 -0
  415. package/dist/auth/TokenValidator.d.ts +36 -0
  416. package/dist/auth/TokenValidator.d.ts.map +1 -0
  417. package/dist/auth/TokenValidator.js +139 -0
  418. package/dist/auth/TokenValidator.js.map +1 -0
  419. package/dist/auth/errors.d.ts +63 -0
  420. package/dist/auth/errors.d.ts.map +1 -0
  421. package/dist/auth/errors.js +102 -0
  422. package/dist/auth/errors.js.map +1 -0
  423. package/dist/auth/index.d.ts +15 -0
  424. package/dist/auth/index.d.ts.map +1 -0
  425. package/dist/auth/index.js +16 -0
  426. package/dist/auth/index.js.map +1 -0
  427. package/dist/auth/middleware.d.ts +61 -0
  428. package/dist/auth/middleware.d.ts.map +1 -0
  429. package/dist/auth/middleware.js +156 -0
  430. package/dist/auth/middleware.js.map +1 -0
  431. package/dist/auth/scopes.d.ts +65 -0
  432. package/dist/auth/scopes.d.ts.map +1 -0
  433. package/dist/auth/scopes.js +189 -0
  434. package/dist/auth/scopes.js.map +1 -0
  435. package/dist/auth/types.d.ts +208 -0
  436. package/dist/auth/types.d.ts.map +1 -0
  437. package/dist/auth/types.js +8 -0
  438. package/dist/auth/types.js.map +1 -0
  439. package/dist/cli/args.d.ts +34 -0
  440. package/dist/cli/args.d.ts.map +1 -0
  441. package/dist/cli/args.js +308 -0
  442. package/dist/cli/args.js.map +1 -0
  443. package/dist/cli/index.d.ts +8 -0
  444. package/dist/cli/index.d.ts.map +1 -0
  445. package/dist/cli/index.js +7 -0
  446. package/dist/cli/index.js.map +1 -0
  447. package/dist/cli.d.ts +9 -0
  448. package/dist/cli.d.ts.map +1 -0
  449. package/dist/cli.js +341 -0
  450. package/dist/cli.js.map +1 -0
  451. package/dist/codemode/api.d.ts +62 -0
  452. package/dist/codemode/api.d.ts.map +1 -0
  453. package/dist/codemode/api.js +1505 -0
  454. package/dist/codemode/api.js.map +1 -0
  455. package/dist/codemode/index.d.ts +13 -0
  456. package/dist/codemode/index.d.ts.map +1 -0
  457. package/dist/codemode/index.js +17 -0
  458. package/dist/codemode/index.js.map +1 -0
  459. package/dist/codemode/sandbox-factory.d.ts +72 -0
  460. package/dist/codemode/sandbox-factory.d.ts.map +1 -0
  461. package/dist/codemode/sandbox-factory.js +88 -0
  462. package/dist/codemode/sandbox-factory.js.map +1 -0
  463. package/dist/codemode/sandbox.d.ts +96 -0
  464. package/dist/codemode/sandbox.d.ts.map +1 -0
  465. package/dist/codemode/sandbox.js +345 -0
  466. package/dist/codemode/sandbox.js.map +1 -0
  467. package/dist/codemode/security.d.ts +44 -0
  468. package/dist/codemode/security.d.ts.map +1 -0
  469. package/dist/codemode/security.js +149 -0
  470. package/dist/codemode/security.js.map +1 -0
  471. package/dist/codemode/types.d.ts +137 -0
  472. package/dist/codemode/types.d.ts.map +1 -0
  473. package/dist/codemode/types.js +46 -0
  474. package/dist/codemode/types.js.map +1 -0
  475. package/dist/codemode/worker-sandbox.d.ts +82 -0
  476. package/dist/codemode/worker-sandbox.d.ts.map +1 -0
  477. package/dist/codemode/worker-sandbox.js +244 -0
  478. package/dist/codemode/worker-sandbox.js.map +1 -0
  479. package/dist/codemode/worker-script.d.ts +8 -0
  480. package/dist/codemode/worker-script.d.ts.map +1 -0
  481. package/dist/codemode/worker-script.js +113 -0
  482. package/dist/codemode/worker-script.js.map +1 -0
  483. package/dist/constants/ServerInstructions.d.ts +13 -0
  484. package/dist/constants/ServerInstructions.d.ts.map +1 -0
  485. package/dist/constants/ServerInstructions.js +405 -0
  486. package/dist/constants/ServerInstructions.js.map +1 -0
  487. package/dist/filtering/ToolConstants.d.ts +43 -0
  488. package/dist/filtering/ToolConstants.d.ts.map +1 -0
  489. package/dist/filtering/ToolConstants.js +352 -0
  490. package/dist/filtering/ToolConstants.js.map +1 -0
  491. package/dist/filtering/ToolFilter.d.ts +90 -0
  492. package/dist/filtering/ToolFilter.d.ts.map +1 -0
  493. package/dist/filtering/ToolFilter.js +315 -0
  494. package/dist/filtering/ToolFilter.js.map +1 -0
  495. package/dist/index.d.ts +15 -0
  496. package/dist/index.d.ts.map +1 -0
  497. package/dist/index.js +19 -0
  498. package/dist/index.js.map +1 -0
  499. package/dist/pool/ConnectionPool.d.ts +70 -0
  500. package/dist/pool/ConnectionPool.d.ts.map +1 -0
  501. package/dist/pool/ConnectionPool.js +254 -0
  502. package/dist/pool/ConnectionPool.js.map +1 -0
  503. package/dist/server/McpServer.d.ts +50 -0
  504. package/dist/server/McpServer.d.ts.map +1 -0
  505. package/dist/server/McpServer.js +108 -0
  506. package/dist/server/McpServer.js.map +1 -0
  507. package/dist/transports/http.d.ts +126 -0
  508. package/dist/transports/http.d.ts.map +1 -0
  509. package/dist/transports/http.js +303 -0
  510. package/dist/transports/http.js.map +1 -0
  511. package/dist/transports/index.d.ts +8 -0
  512. package/dist/transports/index.d.ts.map +1 -0
  513. package/dist/transports/index.js +7 -0
  514. package/dist/transports/index.js.map +1 -0
  515. package/dist/types/adapters.d.ts +136 -0
  516. package/dist/types/adapters.d.ts.map +1 -0
  517. package/dist/types/adapters.js +7 -0
  518. package/dist/types/adapters.js.map +1 -0
  519. package/dist/types/database.d.ts +204 -0
  520. package/dist/types/database.d.ts.map +1 -0
  521. package/dist/types/database.js +7 -0
  522. package/dist/types/database.js.map +1 -0
  523. package/dist/types/errors.d.ts +62 -0
  524. package/dist/types/errors.d.ts.map +1 -0
  525. package/dist/types/errors.js +91 -0
  526. package/dist/types/errors.js.map +1 -0
  527. package/dist/types/filtering.d.ts +39 -0
  528. package/dist/types/filtering.d.ts.map +1 -0
  529. package/dist/types/filtering.js +7 -0
  530. package/dist/types/filtering.js.map +1 -0
  531. package/dist/types/index.d.ts +16 -0
  532. package/dist/types/index.d.ts.map +1 -0
  533. package/dist/types/index.js +11 -0
  534. package/dist/types/index.js.map +1 -0
  535. package/dist/types/mcp.d.ts +31 -0
  536. package/dist/types/mcp.d.ts.map +1 -0
  537. package/dist/types/mcp.js +7 -0
  538. package/dist/types/mcp.js.map +1 -0
  539. package/dist/types/oauth.d.ts +65 -0
  540. package/dist/types/oauth.d.ts.map +1 -0
  541. package/dist/types/oauth.js +7 -0
  542. package/dist/types/oauth.js.map +1 -0
  543. package/dist/types/schema.d.ts +110 -0
  544. package/dist/types/schema.d.ts.map +1 -0
  545. package/dist/types/schema.js +7 -0
  546. package/dist/types/schema.js.map +1 -0
  547. package/dist/utils/annotations.d.ts +42 -0
  548. package/dist/utils/annotations.d.ts.map +1 -0
  549. package/dist/utils/annotations.js +75 -0
  550. package/dist/utils/annotations.js.map +1 -0
  551. package/dist/utils/icons.d.ts +25 -0
  552. package/dist/utils/icons.d.ts.map +1 -0
  553. package/dist/utils/icons.js +212 -0
  554. package/dist/utils/icons.js.map +1 -0
  555. package/dist/utils/identifiers.d.ts +111 -0
  556. package/dist/utils/identifiers.d.ts.map +1 -0
  557. package/dist/utils/identifiers.js +270 -0
  558. package/dist/utils/identifiers.js.map +1 -0
  559. package/dist/utils/logger.d.ts +141 -0
  560. package/dist/utils/logger.d.ts.map +1 -0
  561. package/dist/utils/logger.js +304 -0
  562. package/dist/utils/logger.js.map +1 -0
  563. package/dist/utils/promptGenerator.d.ts +20 -0
  564. package/dist/utils/promptGenerator.d.ts.map +1 -0
  565. package/dist/utils/promptGenerator.js +81 -0
  566. package/dist/utils/promptGenerator.js.map +1 -0
  567. package/dist/utils/resourceAnnotations.d.ts +36 -0
  568. package/dist/utils/resourceAnnotations.d.ts.map +1 -0
  569. package/dist/utils/resourceAnnotations.js +57 -0
  570. package/dist/utils/resourceAnnotations.js.map +1 -0
  571. package/package.json +64 -0
@@ -0,0 +1,632 @@
1
+ /**
2
+ * PostgreSQL pg_partman Extension Tools - Operations
3
+ *
4
+ * Partition operations: check_default, partition_data, set_retention, undo_partition, analyze_health.
5
+ */
6
+ import { z } from "zod";
7
+ import { readOnly, write, destructive } from "../../../../utils/annotations.js";
8
+ import { getToolIcons } from "../../../../utils/icons.js";
9
+ import { PartmanCheckDefaultSchema, PartmanPartitionDataSchema, PartmanRetentionSchema, PartmanUndoPartitionSchema, } from "../../schemas/index.js";
10
+ /**
11
+ * Detect the schema where pg_partman is installed.
12
+ * Newer versions install to 'public' by default, older versions use 'partman'.
13
+ */
14
+ async function getPartmanSchema(adapter) {
15
+ const result = await adapter.executeQuery(`
16
+ SELECT table_schema FROM information_schema.tables
17
+ WHERE table_name = 'part_config'
18
+ AND table_schema IN ('partman', 'public')
19
+ LIMIT 1
20
+ `);
21
+ return result.rows?.[0]?.["table_schema"] ?? "partman";
22
+ }
23
+ /**
24
+ * Check for data in default partition
25
+ */
26
+ export function createPartmanCheckDefaultTool(adapter) {
27
+ return {
28
+ name: "pg_partman_check_default",
29
+ description: `Check if any data exists in the default partition that should be moved to child partitions.
30
+ Data in default indicates partitions may be missing for certain time/value ranges.`,
31
+ group: "partman",
32
+ inputSchema: PartmanCheckDefaultSchema,
33
+ annotations: readOnly("Check Partman Default"),
34
+ icons: getToolIcons("partman", readOnly("Check Partman Default")),
35
+ handler: async (params, _context) => {
36
+ const { parentTable } = PartmanCheckDefaultSchema.parse(params);
37
+ // parentTable is required - provide clear error if missing
38
+ if (!parentTable) {
39
+ return {
40
+ success: false,
41
+ error: 'parentTable parameter is required. Specify the parent table (e.g., "public.events") to check its default partition.',
42
+ hint: "Use pg_partman_show_config to list all partition sets first.",
43
+ };
44
+ }
45
+ // Check if parent table exists in pg_class (handles orphaned configs)
46
+ const [tableSchema, tableName] = parentTable.includes(".")
47
+ ? [parentTable.split(".")[0], parentTable.split(".")[1]]
48
+ : ["public", parentTable];
49
+ const tableExistsResult = await adapter.executeQuery(`
50
+ SELECT 1 FROM information_schema.tables
51
+ WHERE table_schema = $1 AND table_name = $2
52
+ `, [tableSchema, tableName]);
53
+ if ((tableExistsResult.rows?.length ?? 0) === 0) {
54
+ return {
55
+ success: false,
56
+ error: `Table '${parentTable}' does not exist. Cannot check default partition for non-existent table.`,
57
+ hint: "Verify the table name or use pg_partman_show_config to list existing partition sets.",
58
+ };
59
+ }
60
+ // First, find the default partition
61
+ const findDefaultSql = `
62
+ SELECT
63
+ c.relname as default_partition,
64
+ n.nspname as schema
65
+ FROM pg_inherits i
66
+ JOIN pg_class c ON c.oid = i.inhrelid
67
+ JOIN pg_namespace n ON n.oid = c.relnamespace
68
+ JOIN pg_class p ON p.oid = i.inhparent
69
+ JOIN pg_namespace pn ON pn.oid = p.relnamespace
70
+ WHERE (pn.nspname || '.' || p.relname) = $1
71
+ AND c.relname LIKE '%_default'
72
+ `;
73
+ const result = await adapter.executeQuery(findDefaultSql, [parentTable]);
74
+ const defaultInfo = result.rows?.[0];
75
+ if (!defaultInfo) {
76
+ // Check if the table is partitioned at all (has any child tables)
77
+ const hasChildrenResult = await adapter.executeQuery(`
78
+ SELECT 1 FROM pg_inherits i
79
+ JOIN pg_class p ON p.oid = i.inhparent
80
+ JOIN pg_namespace pn ON pn.oid = p.relnamespace
81
+ WHERE (pn.nspname || '.' || p.relname) = $1
82
+ LIMIT 1
83
+ `, [parentTable]);
84
+ // Also check if the table is actually a partitioned table (relkind = 'p')
85
+ const [tableSchema, tableName] = parentTable.includes(".")
86
+ ? [parentTable.split(".")[0], parentTable.split(".")[1]]
87
+ : ["public", parentTable];
88
+ const partitionedCheckResult = await adapter.executeQuery(`
89
+ SELECT relkind FROM pg_class c
90
+ JOIN pg_namespace n ON n.oid = c.relnamespace
91
+ WHERE n.nspname = $1 AND c.relname = $2
92
+ `, [tableSchema, tableName]);
93
+ const relkind = partitionedCheckResult.rows?.[0]?.["relkind"];
94
+ const isActuallyPartitioned = relkind === "p"; // 'p' means partitioned table
95
+ if ((hasChildrenResult.rows?.length ?? 0) === 0) {
96
+ if (isActuallyPartitioned) {
97
+ return {
98
+ parentTable,
99
+ hasDefault: false,
100
+ isPartitioned: true,
101
+ hasChildPartitions: false,
102
+ message: "Table is partitioned but has no child partitions yet. Run pg_partman_run_maintenance or insert data to create partitions. " +
103
+ "TIP: For empty tables, configure pg_partman with startPartition before running maintenance.",
104
+ };
105
+ }
106
+ return {
107
+ parentTable,
108
+ hasDefault: false,
109
+ isPartitioned: false,
110
+ hasChildPartitions: false,
111
+ message: "Table is not a partitioned table. Create it with PARTITION BY clause to enable partitioning.",
112
+ };
113
+ }
114
+ return {
115
+ parentTable,
116
+ hasDefault: false,
117
+ isPartitioned: true,
118
+ hasChildPartitions: true,
119
+ message: "Table is partitioned with child partitions but has no default partition. This is normal if the partition set was created without a default.",
120
+ };
121
+ }
122
+ const defaultPartitionName = `${String(defaultInfo["schema"])}.${String(defaultInfo["default_partition"])}`;
123
+ // Use actual COUNT for accuracy instead of reltuples (which returns -1 before ANALYZE)
124
+ // Limit to 1 for efficiency - we only need to know if ANY data exists
125
+ const countSql = `SELECT COUNT(*) FROM (SELECT 1 FROM ${defaultPartitionName} LIMIT 1) t`;
126
+ let rowCount = 0;
127
+ try {
128
+ const countResult = await adapter.executeQuery(countSql);
129
+ rowCount = Number(countResult.rows?.[0]?.["count"] ?? 0);
130
+ }
131
+ catch {
132
+ // If count fails (rare), fall back to 0
133
+ rowCount = 0;
134
+ }
135
+ const hasData = rowCount > 0;
136
+ return {
137
+ parentTable,
138
+ hasDefault: true,
139
+ defaultPartition: defaultPartitionName,
140
+ hasDataInDefault: hasData,
141
+ recommendation: hasData
142
+ ? "Run pg_partman_partition_data to move data to appropriate child partitions"
143
+ : "Default partition is empty - no action needed",
144
+ };
145
+ },
146
+ };
147
+ }
148
+ /**
149
+ * Move data from default to child partitions
150
+ */
151
+ export function createPartmanPartitionDataTool(adapter) {
152
+ return {
153
+ name: "pg_partman_partition_data",
154
+ description: `Move data from the default partition to appropriate child partitions.
155
+ Creates new partitions if needed for the data being moved.`,
156
+ group: "partman",
157
+ inputSchema: PartmanPartitionDataSchema,
158
+ annotations: write("Partition Data"),
159
+ icons: getToolIcons("partman", write("Partition Data")),
160
+ handler: async (params, _context) => {
161
+ const { parentTable, batchSize, lockWaitSeconds } = PartmanPartitionDataSchema.parse(params);
162
+ // parentTable is required - provide clear error if missing
163
+ if (!parentTable) {
164
+ return {
165
+ success: false,
166
+ error: 'parentTable parameter is required. Specify the parent table (e.g., "public.events") to move data from its default partition.',
167
+ hint: "Use pg_partman_show_config to list all partition sets first.",
168
+ };
169
+ }
170
+ const args = [`p_parent_table := '${parentTable}'`];
171
+ if (batchSize !== undefined) {
172
+ args.push(`p_loop_count := ${String(batchSize)}`);
173
+ }
174
+ if (lockWaitSeconds !== undefined) {
175
+ args.push(`p_lock_wait := ${String(lockWaitSeconds)}`);
176
+ }
177
+ const partmanSchema = await getPartmanSchema(adapter);
178
+ const configResult = await adapter.executeQuery(`
179
+ SELECT control, epoch
180
+ FROM ${partmanSchema}.part_config
181
+ WHERE parent_table = $1
182
+ `, [parentTable]);
183
+ const config = configResult.rows?.[0];
184
+ if (!config) {
185
+ return {
186
+ success: false,
187
+ error: `No pg_partman configuration found for ${parentTable}`,
188
+ };
189
+ }
190
+ // Get row count in default partition before moving data
191
+ const [partSchema, partTableName] = parentTable.includes(".")
192
+ ? [
193
+ parentTable.split(".")[0] ?? "public",
194
+ parentTable.split(".")[1] ?? parentTable,
195
+ ]
196
+ : ["public", parentTable];
197
+ const defaultPartitionName = `${partSchema}.${partTableName}_default`;
198
+ let rowsBeforeMove = 0;
199
+ try {
200
+ const beforeResult = await adapter.executeQuery(`SELECT COUNT(*)::int as count FROM ${defaultPartitionName}`);
201
+ rowsBeforeMove = Number(beforeResult.rows?.[0]?.["count"] ?? 0);
202
+ }
203
+ catch {
204
+ // Default partition might not exist - that's okay
205
+ }
206
+ // partition_data_proc is a PROCEDURE, not a function - use CALL syntax
207
+ const sql = `CALL ${partmanSchema}.partition_data_proc(${args.join(", ")})`;
208
+ await adapter.executeQuery(sql);
209
+ // Get row count in default partition after moving data
210
+ let rowsAfterMove = 0;
211
+ try {
212
+ const afterResult = await adapter.executeQuery(`SELECT COUNT(*)::int as count FROM ${defaultPartitionName}`);
213
+ rowsAfterMove = Number(afterResult.rows?.[0]?.["count"] ?? 0);
214
+ }
215
+ catch {
216
+ // Default partition might not exist
217
+ }
218
+ const rowsMoved = rowsBeforeMove - rowsAfterMove;
219
+ return {
220
+ success: true,
221
+ parentTable,
222
+ rowsMoved: rowsMoved > 0 ? rowsMoved : 0,
223
+ rowsRemaining: rowsAfterMove,
224
+ message: rowsMoved > 0
225
+ ? `Data partitioning completed - ${String(rowsMoved)} rows moved from default to child partitions`
226
+ : "Data partitioning completed - no rows needed to be moved (default partition empty or already partitioned)",
227
+ };
228
+ },
229
+ };
230
+ }
231
+ /**
232
+ * Configure retention policies
233
+ */
234
+ export function createPartmanSetRetentionTool(adapter) {
235
+ return {
236
+ name: "pg_partman_set_retention",
237
+ description: `Configure retention policy for a partition set.
238
+ Partitions older than the retention period will be dropped or detached during maintenance.`,
239
+ group: "partman",
240
+ inputSchema: PartmanRetentionSchema,
241
+ annotations: write("Set Partition Retention"),
242
+ icons: getToolIcons("partman", write("Set Partition Retention")),
243
+ handler: async (params, _context) => {
244
+ const { parentTable, retention, retentionKeepTable } = PartmanRetentionSchema.parse(params);
245
+ // Validate required parentTable
246
+ if (!parentTable) {
247
+ return {
248
+ success: false,
249
+ error: "Missing required parameter: parentTable.",
250
+ hint: 'Example: pg_partman_set_retention({ parentTable: "public.events", retention: "30 days" })',
251
+ };
252
+ }
253
+ const validatedParentTable = parentTable;
254
+ const partmanSchema = await getPartmanSchema(adapter);
255
+ // If retention is omitted (undefined), it's required
256
+ if (retention === undefined) {
257
+ return {
258
+ success: false,
259
+ error: "Missing required parameter: retention.",
260
+ hint: 'Provide a retention period (e.g., "30 days") or pass null to explicitly disable retention. ' +
261
+ 'Example: pg_partman_set_retention({ parentTable: "public.events", retention: "30 days" })',
262
+ };
263
+ }
264
+ // Special case: explicit null or empty string means disable/clear retention
265
+ if (retention === null || retention === "") {
266
+ const sql = `
267
+ UPDATE ${partmanSchema}.part_config
268
+ SET retention = NULL
269
+ WHERE parent_table = $1
270
+ `;
271
+ const result = await adapter.executeQuery(sql, [validatedParentTable]);
272
+ if ((result.rowsAffected ?? 0) === 0) {
273
+ throw new Error(`No pg_partman configuration found for ${validatedParentTable}. Use pg_partman_show_config to list existing partition sets.`);
274
+ }
275
+ return {
276
+ success: true,
277
+ parentTable: validatedParentTable,
278
+ retention: null,
279
+ message: "Retention policy disabled - partitions will no longer be automatically dropped or detached",
280
+ };
281
+ }
282
+ const validatedRetention = retention;
283
+ // Validate retention format - must be valid PostgreSQL interval
284
+ // Try to parse it to catch obvious errors before storing garbage
285
+ const validIntervalPattern = /^\d+\s*(second|minute|hour|day|week|month|year)s?$/i;
286
+ const validNumericPattern = /^\d+$/; // Allow pure numeric for integer-based partitions
287
+ if (!validIntervalPattern.test(validatedRetention) &&
288
+ !validNumericPattern.test(validatedRetention)) {
289
+ throw new Error(`Invalid retention format '${validatedRetention}'. ` +
290
+ `Use PostgreSQL interval syntax (e.g., '30 days', '6 months', '1 year') ` +
291
+ `or integer value for integer-based partitions.`);
292
+ }
293
+ const updates = [`retention = '${validatedRetention}'`];
294
+ if (retentionKeepTable !== undefined) {
295
+ updates.push(`retention_keep_table = ${String(retentionKeepTable)}`);
296
+ }
297
+ const sql = `
298
+ UPDATE ${partmanSchema}.part_config
299
+ SET ${updates.join(", ")}
300
+ WHERE parent_table = $1
301
+ `;
302
+ const result = await adapter.executeQuery(sql, [validatedParentTable]);
303
+ if ((result.rowsAffected ?? 0) === 0) {
304
+ throw new Error(`No pg_partman configuration found for ${validatedParentTable}. Use pg_partman_show_config to list existing partition sets.`);
305
+ }
306
+ // Check partition type to use appropriate terminology in message
307
+ const configResult = await adapter.executeQuery(`SELECT partition_type FROM ${partmanSchema}.part_config WHERE parent_table = $1`, [validatedParentTable]);
308
+ const partitionTypeRaw = configResult.rows?.[0]?.["partition_type"];
309
+ const partitionType = typeof partitionTypeRaw === "string" ? partitionTypeRaw : "range";
310
+ const isIntegerBased = validNumericPattern.test(validatedRetention) ||
311
+ partitionType.toLowerCase() === "native" ||
312
+ partitionType.toLowerCase().includes("id");
313
+ // Use "below" for integer-based, "older than" for time-based partitions
314
+ const retentionPhrase = isIntegerBased
315
+ ? `partitions with values below ${validatedRetention}`
316
+ : `partitions older than ${validatedRetention}`;
317
+ return {
318
+ success: true,
319
+ parentTable: validatedParentTable,
320
+ retention: validatedRetention,
321
+ retentionKeepTable: retentionKeepTable ?? false,
322
+ message: `Retention policy set: ${retentionPhrase} will be ${retentionKeepTable === true ? "detached" : "dropped"}`,
323
+ };
324
+ },
325
+ };
326
+ }
327
+ /**
328
+ * Undo partitioning - convert back to regular table
329
+ */
330
+ export function createPartmanUndoPartitionTool(adapter) {
331
+ return {
332
+ name: "pg_partman_undo_partition",
333
+ description: `Convert a partitioned table back to a regular table by moving all data from child partitions to a TARGET table.
334
+
335
+ IMPORTANT: The targetTable parameter is REQUIRED. pg_partman does not consolidate data back to the parent table directly.
336
+ You must first create an empty table with the same structure as the parent, then specify it as targetTable.
337
+
338
+ Example: undoPartition({ parentTable: "public.events", targetTable: "public.events_consolidated" })`,
339
+ group: "partman",
340
+ inputSchema: PartmanUndoPartitionSchema,
341
+ annotations: destructive("Undo Partitioning"),
342
+ icons: getToolIcons("partman", destructive("Undo Partitioning")),
343
+ handler: async (params, _context) => {
344
+ const { parentTable, targetTable, batchSize, keepTable } = PartmanUndoPartitionSchema.parse(params);
345
+ // Validate required parameters with clear error messages
346
+ if (!parentTable || !targetTable) {
347
+ const missing = [];
348
+ if (!parentTable)
349
+ missing.push("parentTable");
350
+ if (!targetTable)
351
+ missing.push("targetTable (or target)");
352
+ return {
353
+ success: false,
354
+ error: `Missing required parameters: ${missing.join(", ")}.`,
355
+ hint: 'Example: pg_partman_undo_partition({ parentTable: "public.events", targetTable: "public.events_archive" }). Target table must exist first.',
356
+ aliases: { target: "targetTable" },
357
+ };
358
+ }
359
+ // At this point, parentTable and targetTable are guaranteed to be defined
360
+ // Auto-prefix 'public.' schema when not specified (consistent with parentTable behavior)
361
+ const validatedParentTable = parentTable.includes(".")
362
+ ? parentTable
363
+ : `public.${parentTable}`;
364
+ const validatedTargetTable = targetTable.includes(".")
365
+ ? targetTable
366
+ : `public.${targetTable}`;
367
+ // Pre-validate: Check that target table exists before calling pg_partman
368
+ const partmanSchema = await getPartmanSchema(adapter);
369
+ // Parse target table name to check existence
370
+ const [targetSchema, targetTableName] = [
371
+ validatedTargetTable.split(".")[0],
372
+ validatedTargetTable.split(".")[1],
373
+ ];
374
+ const tableExistsResult = await adapter.executeQuery(`
375
+ SELECT 1 FROM information_schema.tables
376
+ WHERE table_schema = $1 AND table_name = $2
377
+ `, [targetSchema, targetTableName]);
378
+ if ((tableExistsResult.rows?.length ?? 0) === 0) {
379
+ throw new Error(`Target table '${validatedTargetTable}' does not exist. ` +
380
+ `pg_partman's undo_partition requires the target table to exist before consolidating data. ` +
381
+ `Create the target table first with the same structure as the parent table.`);
382
+ }
383
+ const args = [
384
+ `p_parent_table := '${validatedParentTable}'`,
385
+ `p_target_table := '${validatedTargetTable}'`,
386
+ ];
387
+ if (batchSize !== undefined) {
388
+ args.push(`p_loop_count := ${String(batchSize)}`);
389
+ }
390
+ if (keepTable !== undefined) {
391
+ args.push(`p_keep_table := ${String(keepTable)}`);
392
+ }
393
+ // undo_partition_proc is a PROCEDURE, not a function - use CALL syntax
394
+ const sql = `CALL ${partmanSchema}.undo_partition_proc(${args.join(", ")})`;
395
+ await adapter.executeQuery(sql);
396
+ // Note: pg_partman's undo_partition detaches child partitions but leaves them as standalone tables
397
+ // This allows data recovery if needed, but users should clean up manually
398
+ const keepTableValue = keepTable ?? true;
399
+ return {
400
+ success: true,
401
+ parentTable: validatedParentTable,
402
+ targetTable: validatedTargetTable,
403
+ message: `Partition set removed for ${validatedParentTable}. Data consolidated to ${validatedTargetTable}.`,
404
+ note: keepTableValue
405
+ ? "Child partitions were detached and now exist as standalone tables. " +
406
+ "To clean up, drop them manually: DROP TABLE <partition_name>;"
407
+ : undefined,
408
+ };
409
+ },
410
+ };
411
+ }
412
+ /**
413
+ * Analyze partition health and provide recommendations
414
+ */
415
+ export function createPartmanAnalyzeHealthTool(adapter) {
416
+ return {
417
+ name: "pg_partman_analyze_partition_health",
418
+ description: `Analyze the health of partition sets managed by pg_partman.
419
+ Checks for issues like data in default partitions, missing premake partitions,
420
+ stale maintenance, and retention configuration.`,
421
+ group: "partman",
422
+ inputSchema: z
423
+ .preprocess((input) => {
424
+ if (typeof input !== "object" || input === null)
425
+ return input;
426
+ const raw = input;
427
+ const result = { ...raw };
428
+ // Alias: table → parentTable
429
+ if (result.table && !result.parentTable) {
430
+ result.parentTable = result.table;
431
+ }
432
+ // Auto-prefix public. for parentTable when no schema specified
433
+ if (result.parentTable && !result.parentTable.includes(".")) {
434
+ result.parentTable = `public.${result.parentTable}`;
435
+ }
436
+ return result;
437
+ }, z.object({
438
+ parentTable: z
439
+ .string()
440
+ .optional()
441
+ .describe("Specific parent table to analyze (all if omitted)"),
442
+ limit: z
443
+ .number()
444
+ .optional()
445
+ .describe("Maximum number of partition sets to analyze (default: 50, use 0 for all)"),
446
+ }))
447
+ .default({}),
448
+ annotations: readOnly("Analyze Partition Health"),
449
+ icons: getToolIcons("partman", readOnly("Analyze Partition Health")),
450
+ handler: async (params, _context) => {
451
+ const AnalyzeHealthSchema = z
452
+ .preprocess((input) => {
453
+ if (typeof input !== "object" || input === null)
454
+ return input;
455
+ const raw = input;
456
+ const result = { ...raw };
457
+ // Alias: table → parentTable
458
+ if (result.table && !result.parentTable) {
459
+ result.parentTable = result.table;
460
+ }
461
+ // Auto-prefix public. for parentTable when no schema specified
462
+ if (result.parentTable && !result.parentTable.includes(".")) {
463
+ result.parentTable = `public.${result.parentTable}`;
464
+ }
465
+ return result;
466
+ }, z.object({
467
+ parentTable: z.string().optional(),
468
+ limit: z.number().optional(),
469
+ }))
470
+ .default({});
471
+ const parsed = AnalyzeHealthSchema.parse(params ?? {});
472
+ const queryParams = [];
473
+ const partmanSchema = await getPartmanSchema(adapter);
474
+ // Get total count first for pagination
475
+ let countSql = `SELECT COUNT(*) as total FROM ${partmanSchema}.part_config`;
476
+ const countParams = [];
477
+ if (parsed.parentTable !== undefined) {
478
+ countSql += " WHERE parent_table = $1";
479
+ countParams.push(parsed.parentTable);
480
+ }
481
+ const countResult = await adapter.executeQuery(countSql, countParams);
482
+ const totalCount = Number(countResult.rows?.[0]?.["total"] ?? 0);
483
+ // Apply limit (default 50, 0 means no limit)
484
+ const limit = parsed.limit ?? 50;
485
+ const applyLimit = limit > 0;
486
+ let configSql = `
487
+ SELECT
488
+ parent_table,
489
+ control,
490
+ partition_interval,
491
+ premake,
492
+ retention,
493
+ retention_keep_table,
494
+ automatic_maintenance,
495
+ template_table
496
+ FROM ${partmanSchema}.part_config
497
+ `;
498
+ if (parsed.parentTable !== undefined) {
499
+ configSql += " WHERE parent_table = $1";
500
+ queryParams.push(parsed.parentTable);
501
+ }
502
+ configSql += " ORDER BY parent_table";
503
+ if (applyLimit) {
504
+ configSql += ` LIMIT ${String(limit)}`;
505
+ }
506
+ const configResult = await adapter.executeQuery(configSql, queryParams);
507
+ const configs = configResult.rows ?? [];
508
+ // If a specific table was requested but not found, indicate that clearly
509
+ if (parsed.parentTable !== undefined && configs.length === 0) {
510
+ return {
511
+ overallHealth: "not_found",
512
+ partitionSets: [],
513
+ message: `No pg_partman configuration found for table '${parsed.parentTable}'. ` +
514
+ `Use pg_partman_show_config to list configured partition sets, or ` +
515
+ `pg_partman_create_parent to configure partitioning for this table.`,
516
+ };
517
+ }
518
+ const healthChecks = [];
519
+ for (const config of configs) {
520
+ const parentTable = config["parent_table"];
521
+ const issues = [];
522
+ const warnings = [];
523
+ const recommendations = [];
524
+ // Check if parent table still exists (handle orphaned configs)
525
+ const [tableSchema, tableName] = parentTable.includes(".")
526
+ ? [parentTable.split(".")[0], parentTable.split(".")[1]]
527
+ : ["public", parentTable];
528
+ const tableExistsResult = await adapter.executeQuery(`
529
+ SELECT 1 FROM information_schema.tables
530
+ WHERE table_schema = $1 AND table_name = $2
531
+ `, [tableSchema, tableName]);
532
+ if ((tableExistsResult.rows?.length ?? 0) === 0) {
533
+ // Orphaned config - table no longer exists
534
+ healthChecks.push({
535
+ parentTable,
536
+ issues: ["Orphaned configuration - parent table no longer exists"],
537
+ warnings: [],
538
+ recommendations: [
539
+ "Remove orphaned config from part_config table or recreate the table",
540
+ ],
541
+ partitionCount: 0,
542
+ hasDefaultPartition: false,
543
+ hasDataInDefault: false,
544
+ });
545
+ continue;
546
+ }
547
+ let partitionCount = 0;
548
+ try {
549
+ const partCountResult = await adapter.executeQuery(`
550
+ SELECT COUNT(*) as count
551
+ FROM ${partmanSchema}.show_partitions(p_parent_table := $1)
552
+ `, [parentTable]);
553
+ partitionCount = Number(partCountResult.rows?.[0]?.["count"] ?? 0);
554
+ }
555
+ catch (e) {
556
+ // If show_partitions fails, provide detailed error info
557
+ const errorMsg = e instanceof Error ? e.message : "Unknown error";
558
+ healthChecks.push({
559
+ parentTable,
560
+ issues: [`Failed to query partitions: ${errorMsg}`],
561
+ warnings: [],
562
+ recommendations: [
563
+ "Check that the table exists and is partitioned",
564
+ "Verify pg_partman configuration with pg_partman_show_config",
565
+ "If table was dropped, remove orphaned config from part_config",
566
+ ],
567
+ partitionCount: 0,
568
+ hasDefaultPartition: false,
569
+ hasDataInDefault: false,
570
+ });
571
+ continue;
572
+ }
573
+ const premake = config["premake"] ?? 4;
574
+ if (partitionCount < premake) {
575
+ warnings.push(`Only ${String(partitionCount)} partitions exist, premake is set to ${String(premake)}`);
576
+ recommendations.push("Run pg_partman_run_maintenance to create premake partitions");
577
+ }
578
+ const defaultCheckResult = await adapter.executeQuery(`
579
+ SELECT c.reltuples::bigint as rows
580
+ FROM pg_inherits i
581
+ JOIN pg_class c ON c.oid = i.inhrelid
582
+ JOIN pg_class p ON p.oid = i.inhparent
583
+ JOIN pg_namespace pn ON pn.oid = p.relnamespace
584
+ WHERE (pn.nspname || '.' || p.relname) = $1
585
+ AND c.relname LIKE '%_default'
586
+ `, [parentTable]);
587
+ const hasDefaultPartition = (defaultCheckResult.rows?.length ?? 0) > 0;
588
+ const defaultRows = Number(defaultCheckResult.rows?.[0]?.["rows"] ?? 0);
589
+ const hasDataInDefault = hasDefaultPartition && defaultRows > 0;
590
+ if (hasDataInDefault) {
591
+ issues.push(`Approximately ${String(defaultRows)} rows in default partition`);
592
+ recommendations.push("Run pg_partman_partition_data to move data to child partitions");
593
+ }
594
+ // Note: Not having retention configured is often intentional (audit tables, etc.)
595
+ // Don't flag as warning to reduce noise; users can check config directly if needed
596
+ const autoMaint = config["automatic_maintenance"];
597
+ if (autoMaint !== "on") {
598
+ warnings.push("Automatic maintenance is not enabled");
599
+ recommendations.push("Schedule regular maintenance with pg_cron or enable automatic_maintenance");
600
+ }
601
+ healthChecks.push({
602
+ parentTable,
603
+ issues,
604
+ warnings,
605
+ recommendations,
606
+ partitionCount,
607
+ hasDefaultPartition,
608
+ hasDataInDefault,
609
+ });
610
+ }
611
+ const totalIssues = healthChecks.reduce((sum, h) => sum + h.issues.length, 0);
612
+ const totalWarnings = healthChecks.reduce((sum, h) => sum + h.warnings.length, 0);
613
+ const truncated = applyLimit && totalCount > limit;
614
+ return {
615
+ partitionSets: healthChecks,
616
+ truncated: truncated ? true : undefined,
617
+ totalCount: truncated ? totalCount : undefined,
618
+ summary: {
619
+ totalPartitionSets: truncated ? totalCount : healthChecks.length,
620
+ totalIssues,
621
+ totalWarnings,
622
+ overallHealth: totalIssues === 0
623
+ ? totalWarnings === 0
624
+ ? "healthy"
625
+ : "warnings"
626
+ : "issues_found",
627
+ },
628
+ };
629
+ },
630
+ };
631
+ }
632
+ //# sourceMappingURL=operations.js.map