@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,149 @@
1
+ /**
2
+ * pg_partman Status Resource
3
+ *
4
+ * Provides pg_partman partition set status, configuration, and health.
5
+ */
6
+ import { LOW_PRIORITY } from "../../../utils/resourceAnnotations.js";
7
+ /** Safely convert unknown value to string */
8
+ function toStr(value) {
9
+ return typeof value === "string" ? value : "";
10
+ }
11
+ export function createPartmanResource(adapter) {
12
+ return {
13
+ uri: "postgres://partman",
14
+ name: "pg_partman Status",
15
+ description: "pg_partman partition set configuration, partition counts, and health status",
16
+ mimeType: "application/json",
17
+ annotations: LOW_PRIORITY,
18
+ handler: async () => {
19
+ const result = {
20
+ extensionInstalled: false,
21
+ extensionVersion: null,
22
+ partitionSets: [],
23
+ partitionSetCount: 0,
24
+ partitionInfo: [],
25
+ healthIssues: [],
26
+ maintenanceScheduled: false,
27
+ maintenanceJobCount: 0,
28
+ recommendations: [],
29
+ };
30
+ // Check if pg_partman is installed and get its schema (outside try-catch for correct error messaging)
31
+ const extCheck = await adapter.executeQuery(`SELECT e.extversion, n.nspname as schema_name
32
+ FROM pg_extension e
33
+ JOIN pg_namespace n ON e.extnamespace = n.oid
34
+ WHERE e.extname = 'pg_partman'`);
35
+ if (!extCheck.rows || extCheck.rows.length === 0) {
36
+ result.recommendations.push("pg_partman extension is not installed. Use pg_partman_create_extension to enable automated partition management.");
37
+ return JSON.stringify(result, null, 2);
38
+ }
39
+ result.extensionInstalled = true;
40
+ const extVersion = extCheck.rows[0]?.["extversion"];
41
+ result.extensionVersion =
42
+ typeof extVersion === "string" ? extVersion : null;
43
+ // Get the schema where pg_partman is installed (defaults to 'partman' for compatibility)
44
+ const partmanSchemaRaw = extCheck.rows[0]?.["schema_name"];
45
+ const partmanSchema = typeof partmanSchemaRaw === "string" ? partmanSchemaRaw : "partman";
46
+ try {
47
+ // Get partition configurations using dynamically detected schema
48
+ const configResult = await adapter.executeQuery(`SELECT parent_table, control, partition_interval::text,
49
+ retention::text, premake, datetime_string
50
+ FROM "${partmanSchema}".part_config
51
+ ORDER BY parent_table`);
52
+ if (configResult.rows) {
53
+ for (const row of configResult.rows) {
54
+ const retentionVal = row["retention"];
55
+ const datetimeVal = row["datetime_string"];
56
+ result.partitionSets.push({
57
+ parent_table: toStr(row["parent_table"]),
58
+ control: toStr(row["control"]),
59
+ partition_interval: toStr(row["partition_interval"]),
60
+ retention: typeof retentionVal === "string" ? retentionVal : null,
61
+ premake: Number(row["premake"] ?? 0),
62
+ datetime_string: typeof datetimeVal === "string" ? datetimeVal : null,
63
+ });
64
+ }
65
+ result.partitionSetCount = result.partitionSets.length;
66
+ }
67
+ // Get partition counts and sizes for each parent
68
+ for (const config of result.partitionSets) {
69
+ try {
70
+ const infoResult = await adapter.executeQuery(`SELECT COUNT(*)::int as partition_count,
71
+ pg_size_pretty(SUM(pg_total_relation_size(inhrelid))) as total_size
72
+ FROM pg_inherits
73
+ WHERE inhparent = $1::regclass`, [config.parent_table]);
74
+ // Check for default partition with data
75
+ const defaultCheck = await adapter.executeQuery(`SELECT EXISTS(
76
+ SELECT 1 FROM pg_partitioned_table pt
77
+ JOIN pg_class c ON pt.partrelid = c.oid
78
+ WHERE c.relname = split_part($1, '.', 2)
79
+ AND pt.partdefid != 0
80
+ ) as has_default,
81
+ COALESCE((
82
+ SELECT n_live_tup::int FROM pg_stat_user_tables
83
+ WHERE schemaname || '.' || relname = $1 || '_default'
84
+ ), 0) as default_rows`, [config.parent_table]);
85
+ const partitionCount = Number(infoResult.rows?.[0]?.["partition_count"] ?? 0);
86
+ const totalSizeVal = infoResult.rows?.[0]?.["total_size"];
87
+ const totalSize = typeof totalSizeVal === "string" ? totalSizeVal : "0 bytes";
88
+ const hasDefault = Boolean(defaultCheck.rows?.[0]?.["has_default"]);
89
+ const defaultRows = Number(defaultCheck.rows?.[0]?.["default_rows"] ?? 0);
90
+ result.partitionInfo.push({
91
+ parent_table: config.parent_table,
92
+ partition_count: partitionCount,
93
+ total_size: totalSize,
94
+ has_default: hasDefault,
95
+ default_rows: defaultRows,
96
+ });
97
+ // Check for data in default partition
98
+ if (defaultRows > 0) {
99
+ result.healthIssues.push({
100
+ table: config.parent_table,
101
+ issue: `Default partition contains ${String(defaultRows)} rows. Use pg_partman_partition_data to move to child partitions.`,
102
+ severity: defaultRows > 10000 ? "critical" : "warning",
103
+ });
104
+ }
105
+ // Check retention configuration - only warn for tables with many partitions
106
+ // where unlimited retention is more likely to be an oversight
107
+ if (config.retention === null && partitionCount > 12) {
108
+ result.recommendations.push(`${config.parent_table}: No retention policy configured (${String(partitionCount)} partitions). Consider pg_partman_set_retention for cleanup, or ignore if unlimited retention is intended.`);
109
+ }
110
+ }
111
+ catch {
112
+ // Individual table error, continue
113
+ }
114
+ }
115
+ // Generate recommendations
116
+ if (result.partitionSetCount === 0) {
117
+ result.recommendations.push("No partition sets configured. Use pg_partman_create_parent to create managed partitions.");
118
+ }
119
+ // Check for maintenance scheduling with broader pattern matching
120
+ try {
121
+ const cronCheck = await adapter.executeQuery(`SELECT COUNT(*)::int as count FROM cron.job
122
+ WHERE command ILIKE '%partman%'
123
+ OR command ILIKE '%run_maintenance%'
124
+ OR command ILIKE '%partition%maintenance%'`);
125
+ const cronCount = Number(cronCheck.rows?.[0]?.["count"] ?? 0);
126
+ result.maintenanceScheduled = cronCount > 0;
127
+ result.maintenanceJobCount = cronCount;
128
+ result.maintenanceMethod = cronCount > 0 ? "pg_cron" : "unknown";
129
+ if (cronCount === 0 && result.partitionSetCount > 0) {
130
+ result.recommendations.push("No pg_cron job found for partition maintenance. Setup options:", "Option 1 - pg_cron (recommended): SELECT cron.schedule('partman-maintenance', '*/30 * * * *', $$CALL partman.run_maintenance_proc()$$);", 'Option 2 - External: Add to system cron: */30 * * * * psql -c "CALL partman.run_maintenance_proc()"', "Run frequency: Every 30 minutes is typical. Adjust based on partition interval (faster intervals need more frequent runs).");
131
+ }
132
+ }
133
+ catch {
134
+ // pg_cron not installed
135
+ result.maintenanceMethod = "external_or_none";
136
+ if (result.partitionSetCount > 0) {
137
+ result.recommendations.push("pg_cron not detected. Use external scheduling for maintenance:", 'System cron example: */30 * * * * psql -d your_database -c "CALL partman.run_maintenance_proc()"', "Windows Task Scheduler: Run psql command every 30 minutes", "Alternatively, install pg_cron: shared_preload_libraries = 'pg_cron' in postgresql.conf then restart");
138
+ }
139
+ }
140
+ }
141
+ catch {
142
+ // Extension is installed but data queries failed
143
+ result.recommendations.push("Error querying pg_partman data. Check permissions on partman schema tables.");
144
+ }
145
+ return JSON.stringify(result, null, 2);
146
+ },
147
+ };
148
+ }
149
+ //# sourceMappingURL=partman.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partman.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/partman.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Performance Resource
3
+ *
4
+ * Query performance metrics from pg_stat_statements.
5
+ */
6
+ import type { PostgresAdapter } from "../PostgresAdapter.js";
7
+ import type { ResourceDefinition } from "../../../types/index.js";
8
+ export declare function createPerformanceResource(adapter: PostgresAdapter): ResourceDefinition;
9
+ //# sourceMappingURL=performance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/performance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAGjC,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CAkLpB"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Performance Resource
3
+ *
4
+ * Query performance metrics from pg_stat_statements.
5
+ */
6
+ import { MEDIUM_PRIORITY } from "../../../utils/resourceAnnotations.js";
7
+ export function createPerformanceResource(adapter) {
8
+ return {
9
+ uri: "postgres://performance",
10
+ name: "Query Performance",
11
+ description: "Query performance metrics from pg_stat_statements",
12
+ mimeType: "application/json",
13
+ annotations: MEDIUM_PRIORITY,
14
+ handler: async (_uri, _context) => {
15
+ // Check if pg_stat_statements is available
16
+ const extResult = await adapter.executeQuery(`
17
+ SELECT COUNT(*) as count
18
+ FROM pg_extension
19
+ WHERE extname = 'pg_stat_statements'
20
+ `);
21
+ const countValue = extResult.rows?.[0]?.["count"];
22
+ const hasPgStat = Number(countValue ?? 0) > 0;
23
+ if (!hasPgStat) {
24
+ return {
25
+ extensionStatus: "not_installed",
26
+ error: "pg_stat_statements extension not installed",
27
+ recommendation: "Run: CREATE EXTENSION pg_stat_statements;",
28
+ benefits: [
29
+ "Track query performance and identify slow queries",
30
+ "Optimize workload based on actual usage patterns",
31
+ "Enable all performance intelligence tools",
32
+ "Critical for production database monitoring",
33
+ ],
34
+ };
35
+ }
36
+ try {
37
+ // Configurable thresholds
38
+ const SLOW_QUERY_THRESHOLD_MS = 1000; // 1 second mean time
39
+ const HIGH_COST_THRESHOLD_MS = 5000; // 5 seconds total time
40
+ // Get top queries by total time (filter out queries with 0 calls - no useful data)
41
+ const topQueries = await adapter.executeQuery(`
42
+ SELECT
43
+ LEFT(query, 200) as query_preview,
44
+ calls,
45
+ round(total_exec_time::numeric, 2) as total_time_ms,
46
+ round(mean_exec_time::numeric, 2) as mean_time_ms,
47
+ round(stddev_exec_time::numeric, 2) as stddev_time_ms,
48
+ rows,
49
+ round(100.0 * shared_blks_hit / NULLIF(shared_blks_hit + shared_blks_read, 0), 2) as cache_hit_pct
50
+ FROM pg_stat_statements
51
+ WHERE userid = (SELECT oid FROM pg_roles WHERE rolname = current_user)
52
+ AND calls > 0
53
+ ORDER BY total_exec_time DESC
54
+ LIMIT 20
55
+ `);
56
+ // Get slow queries (high mean execution time)
57
+ const slowQueries = await adapter.executeQuery(`
58
+ SELECT
59
+ LEFT(query, 200) as query_preview,
60
+ calls,
61
+ round(mean_exec_time::numeric, 2) as mean_time_ms,
62
+ round(total_exec_time::numeric, 2) as total_time_ms
63
+ FROM pg_stat_statements
64
+ WHERE userid = (SELECT oid FROM pg_roles WHERE rolname = current_user)
65
+ AND calls > 0
66
+ AND mean_exec_time > ${String(SLOW_QUERY_THRESHOLD_MS)}
67
+ ORDER BY mean_exec_time DESC
68
+ LIMIT 10
69
+ `);
70
+ // Get high-cost queries (high total execution time)
71
+ const highCostQueries = await adapter.executeQuery(`
72
+ SELECT
73
+ LEFT(query, 200) as query_preview,
74
+ calls,
75
+ round(total_exec_time::numeric, 2) as total_time_ms,
76
+ round(mean_exec_time::numeric, 2) as mean_time_ms
77
+ FROM pg_stat_statements
78
+ WHERE userid = (SELECT oid FROM pg_roles WHERE rolname = current_user)
79
+ AND calls > 0
80
+ AND total_exec_time > ${String(HIGH_COST_THRESHOLD_MS)}
81
+ ORDER BY total_exec_time DESC
82
+ LIMIT 10
83
+ `);
84
+ // Get summary statistics
85
+ const summary = await adapter.executeQuery(`
86
+ SELECT
87
+ COUNT(*) as total_queries,
88
+ SUM(calls) as total_calls,
89
+ round(SUM(total_exec_time)::numeric, 2) as total_time_ms,
90
+ round(AVG(mean_exec_time)::numeric, 2) as avg_time_ms
91
+ FROM pg_stat_statements
92
+ WHERE userid = (SELECT oid FROM pg_roles WHERE rolname = current_user)
93
+ AND calls > 0
94
+ `);
95
+ const recommendations = [
96
+ "Use pg_explain_analyze for detailed query analysis",
97
+ "Consider pg_query_plan_compare for optimization testing",
98
+ ];
99
+ // Add context-aware recommendations
100
+ const slowCount = slowQueries.rows?.length ?? 0;
101
+ const highCostCount = highCostQueries.rows?.length ?? 0;
102
+ if (slowCount > 0) {
103
+ recommendations.unshift(`${String(slowCount)} queries with mean time > ${String(SLOW_QUERY_THRESHOLD_MS)}ms detected. Consider adding indexes or query optimization.`);
104
+ }
105
+ if (highCostCount > 0) {
106
+ recommendations.unshift(`${String(highCostCount)} high-cost queries detected (total time > ${String(HIGH_COST_THRESHOLD_MS)}ms).`);
107
+ }
108
+ // Check if we have any meaningful data
109
+ const hasData = (topQueries.rows?.length ?? 0) > 0;
110
+ // Check if ANY stats exist (even for other users) to provide better context
111
+ let anyStatsExist = false;
112
+ try {
113
+ const anyStatsResult = await adapter.executeQuery(`
114
+ SELECT EXISTS(SELECT 1 FROM pg_stat_statements WHERE calls > 0 LIMIT 1) as has_any
115
+ `);
116
+ anyStatsExist = Boolean(anyStatsResult.rows?.[0]?.["has_any"]);
117
+ }
118
+ catch {
119
+ /* ignore - permission may be limited */
120
+ }
121
+ const noQueryData = !hasData
122
+ ? {
123
+ reason: anyStatsExist
124
+ ? "Query statistics exist but no queries found for current user"
125
+ : "No query statistics with calls > 0 found",
126
+ suggestions: anyStatsExist
127
+ ? [
128
+ "Other users may have query data - check with superuser privileges",
129
+ "Run some queries as the current user and check again",
130
+ ]
131
+ : [
132
+ "Statistics may have been recently reset",
133
+ "Run some queries and check again",
134
+ "Use SELECT pg_stat_statements_reset() to clear stale data if needed",
135
+ ],
136
+ }
137
+ : undefined;
138
+ return {
139
+ extensionStatus: "installed",
140
+ summary: summary.rows?.[0] ?? {},
141
+ topQueries: topQueries.rows ?? [],
142
+ slowQueries: slowQueries.rows ?? [],
143
+ highCostQueries: highCostQueries.rows ?? [],
144
+ thresholds: {
145
+ slowQueryMs: SLOW_QUERY_THRESHOLD_MS,
146
+ highCostMs: HIGH_COST_THRESHOLD_MS,
147
+ },
148
+ recommendations,
149
+ noQueryData,
150
+ };
151
+ }
152
+ catch {
153
+ // Extension is installed but data queries failed (likely permission issue)
154
+ return {
155
+ extensionStatus: "installed",
156
+ error: "Error querying pg_stat_statements data. Check permissions or ensure pg_stat_statements is in shared_preload_libraries.",
157
+ summary: {},
158
+ topQueries: [],
159
+ slowQueries: [],
160
+ highCostQueries: [],
161
+ recommendations: [
162
+ "Grant SELECT on pg_stat_statements to current user",
163
+ "Verify pg_stat_statements is in shared_preload_libraries",
164
+ ],
165
+ };
166
+ }
167
+ },
168
+ };
169
+ }
170
+ //# sourceMappingURL=performance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/performance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Pool Resource
3
+ *
4
+ * MCP server connection pool statistics with external pooler detection.
5
+ */
6
+ import type { PostgresAdapter } from "../PostgresAdapter.js";
7
+ import type { ResourceDefinition } from "../../../types/index.js";
8
+ export declare function createPoolResource(adapter: PostgresAdapter): ResourceDefinition;
9
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/pool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AASjC,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CA2FpB"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Pool Resource
3
+ *
4
+ * MCP server connection pool statistics with external pooler detection.
5
+ */
6
+ import { LOW_PRIORITY } from "../../../utils/resourceAnnotations.js";
7
+ export function createPoolResource(adapter) {
8
+ return {
9
+ uri: "postgres://pool",
10
+ name: "Connection Pool",
11
+ description: "MCP server connection pool statistics with external pooler detection",
12
+ mimeType: "application/json",
13
+ annotations: LOW_PRIORITY,
14
+ handler: async (_uri, _context) => {
15
+ const pool = adapter.getPool();
16
+ if (!pool) {
17
+ return { error: "Pool not initialized" };
18
+ }
19
+ const stats = pool.getStats();
20
+ const health = await pool.checkHealth();
21
+ // Determine pool status
22
+ let status;
23
+ if (stats.total === 0) {
24
+ status = "empty";
25
+ }
26
+ else if (stats.active > 0 && stats.active >= stats.total - 1) {
27
+ status = "busy";
28
+ }
29
+ else if (stats.active > 0) {
30
+ status = "active";
31
+ }
32
+ else {
33
+ status = "idle";
34
+ }
35
+ // Detect external poolers
36
+ const externalPooler = {
37
+ detected: false,
38
+ type: "none",
39
+ };
40
+ try {
41
+ // Check for pgbouncer by looking for its admin database or signature
42
+ const pgbouncerCheck = await adapter.executeQuery(`
43
+ SELECT COUNT(*) as count FROM pg_database WHERE datname = 'pgbouncer'
44
+ `);
45
+ const hasPgbouncerDb = Number(pgbouncerCheck.rows?.[0]?.["count"] ?? 0) > 0;
46
+ if (hasPgbouncerDb) {
47
+ externalPooler.detected = true;
48
+ externalPooler.type = "pgbouncer";
49
+ externalPooler.hint =
50
+ 'pgbouncer database detected. Use "SHOW POOLS" on pgbouncer admin database for pooler stats.';
51
+ }
52
+ // Alternative detection: check for pgbouncer in application_name patterns
53
+ if (!hasPgbouncerDb) {
54
+ const appNameCheck = await adapter.executeQuery(`
55
+ SELECT COUNT(*) as count FROM pg_stat_activity
56
+ WHERE application_name ILIKE '%pgbouncer%' OR application_name ILIKE '%pgpool%'
57
+ `);
58
+ const hasPoolerConnections = Number(appNameCheck.rows?.[0]?.["count"] ?? 0) > 0;
59
+ if (hasPoolerConnections) {
60
+ externalPooler.detected = true;
61
+ externalPooler.type = "pgbouncer";
62
+ externalPooler.hint =
63
+ "Connections via external pooler detected. This resource shows MCP internal pool stats only.";
64
+ }
65
+ }
66
+ }
67
+ catch {
68
+ // Detection failed, continue with default
69
+ }
70
+ // Build contextual note
71
+ let note = "Reports the MCP server internal connection pool.";
72
+ if (status === "empty" || status === "idle") {
73
+ note += " Values of 0 are normal when the pool is idle.";
74
+ }
75
+ if (externalPooler.detected) {
76
+ note += ` External pooler (${externalPooler.type}) detected - see externalPooler.hint for querying pooler stats.`;
77
+ }
78
+ else {
79
+ note +=
80
+ " For external poolers like PgBouncer, query the pgbouncer admin database directly.";
81
+ }
82
+ return {
83
+ stats,
84
+ health,
85
+ isInitialized: pool.isInitialized(),
86
+ status,
87
+ externalPooler,
88
+ note,
89
+ };
90
+ },
91
+ };
92
+ }
93
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * PostGIS Status Resource
3
+ *
4
+ * Provides PostGIS extension status, spatial columns, and index information.
5
+ */
6
+ import type { PostgresAdapter } from "../PostgresAdapter.js";
7
+ import type { ResourceDefinition } from "../../../types/index.js";
8
+ export declare function createPostgisResource(adapter: PostgresAdapter): ResourceDefinition;
9
+ //# sourceMappingURL=postgis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgis.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/postgis.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAoDlE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CAgSpB"}