@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,184 @@
1
+ /**
2
+ * Settings Resource
3
+ *
4
+ * Current PostgreSQL configuration settings with production defaults analysis.
5
+ */
6
+ import { ASSISTANT_FOCUSED } from "../../../utils/resourceAnnotations.js";
7
+ export function createSettingsResource(adapter) {
8
+ return {
9
+ uri: "postgres://settings",
10
+ name: "Server Settings",
11
+ description: "Current PostgreSQL configuration settings with production defaults analysis",
12
+ mimeType: "application/json",
13
+ annotations: ASSISTANT_FOCUSED,
14
+ handler: async (_uri, _context) => {
15
+ // Get all settings
16
+ const result = await adapter.executeQuery(`
17
+ SELECT name, setting, unit, category, short_desc, boot_val, reset_val
18
+ FROM pg_settings
19
+ WHERE category NOT LIKE '%Developer%'
20
+ ORDER BY category, name
21
+ `);
22
+ // Get key settings for analysis
23
+ const keySettings = await adapter.executeQuery(`
24
+ SELECT name, setting, unit
25
+ FROM pg_settings
26
+ WHERE name IN (
27
+ 'shared_buffers', 'work_mem', 'maintenance_work_mem',
28
+ 'effective_cache_size', 'max_connections',
29
+ 'wal_level', 'max_wal_senders', 'wal_keep_size',
30
+ 'ssl', 'password_encryption', 'log_connections',
31
+ 'log_disconnections', 'log_statement', 'log_min_duration_statement',
32
+ 'checkpoint_timeout', 'checkpoint_completion_target'
33
+ )
34
+ `);
35
+ // Build settings map for analysis
36
+ const settingsMap = new Map();
37
+ for (const row of keySettings.rows ?? []) {
38
+ const name = row["name"];
39
+ const setting = row["setting"];
40
+ const unit = row["unit"];
41
+ settingsMap.set(name, { value: setting, unit });
42
+ }
43
+ // Generate production recommendations
44
+ const recommendations = [];
45
+ // Performance settings
46
+ const sharedBuffers = settingsMap.get("shared_buffers");
47
+ if (sharedBuffers) {
48
+ const valueKb = parseInt(sharedBuffers.value, 10) * 8; // 8KB pages
49
+ const valueMb = valueKb / 1024;
50
+ if (valueMb < 256) {
51
+ recommendations.push({
52
+ setting: "shared_buffers",
53
+ currentValue: `${String(valueMb)}MB`,
54
+ category: "performance",
55
+ priority: "HIGH",
56
+ recommendation: "Consider increasing to 25% of available RAM (minimum 256MB for production)",
57
+ context: "Default is often too low for production workloads",
58
+ });
59
+ }
60
+ }
61
+ const workMem = settingsMap.get("work_mem");
62
+ if (workMem) {
63
+ const valueKb = parseInt(workMem.value, 10);
64
+ if (valueKb < 8192) {
65
+ // < 8MB
66
+ recommendations.push({
67
+ setting: "work_mem",
68
+ currentValue: `${String(valueKb)}KB`,
69
+ category: "performance",
70
+ priority: "MEDIUM",
71
+ recommendation: "Consider increasing to 8-64MB for complex queries (balance with max_connections)",
72
+ context: "Per-operation memory limit affects sorting and hashing",
73
+ });
74
+ }
75
+ }
76
+ const maxConnections = settingsMap.get("max_connections");
77
+ if (maxConnections && parseInt(maxConnections.value, 10) > 200) {
78
+ recommendations.push({
79
+ setting: "max_connections",
80
+ currentValue: maxConnections.value,
81
+ category: "performance",
82
+ priority: "MEDIUM",
83
+ recommendation: "High connection count may waste resources. Consider using connection pooling (pgbouncer)",
84
+ context: "Each connection consumes memory; pooling is more efficient",
85
+ });
86
+ }
87
+ // Replication settings
88
+ const walLevel = settingsMap.get("wal_level");
89
+ if (walLevel?.value === "minimal") {
90
+ recommendations.push({
91
+ setting: "wal_level",
92
+ currentValue: "minimal",
93
+ category: "replication",
94
+ priority: "HIGH",
95
+ recommendation: 'Set to "replica" or "logical" for point-in-time recovery and replication',
96
+ context: "Required for backups, replication, and disaster recovery",
97
+ });
98
+ }
99
+ // Security settings
100
+ const ssl = settingsMap.get("ssl");
101
+ if (ssl?.value === "off") {
102
+ recommendations.push({
103
+ setting: "ssl",
104
+ currentValue: "off",
105
+ category: "security",
106
+ priority: "HIGH",
107
+ recommendation: "Enable SSL for encrypted connections in production",
108
+ context: "Protects data in transit from eavesdropping",
109
+ });
110
+ }
111
+ const passwordEncryption = settingsMap.get("password_encryption");
112
+ if (passwordEncryption?.value === "md5") {
113
+ recommendations.push({
114
+ setting: "password_encryption",
115
+ currentValue: "md5",
116
+ category: "security",
117
+ priority: "MEDIUM",
118
+ recommendation: "Consider using scram-sha-256 for stronger password hashing",
119
+ context: "MD5 is cryptographically weaker than SCRAM-SHA-256",
120
+ });
121
+ }
122
+ // Logging settings - log_statement = 'none' is often intentional for high-throughput production systems
123
+ const logStatement = settingsMap.get("log_statement");
124
+ if (logStatement?.value === "none") {
125
+ recommendations.push({
126
+ setting: "log_statement",
127
+ currentValue: "none",
128
+ category: "logging",
129
+ priority: "LOW",
130
+ recommendation: 'For development/debugging: consider "ddl" or "mod". Production systems often keep "none" for performance.',
131
+ context: "log_statement=all can significantly impact performance; evaluate based on your environment",
132
+ });
133
+ }
134
+ // Build memory context with absolute values
135
+ const memoryContext = [];
136
+ if (sharedBuffers) {
137
+ const valueKb = parseInt(sharedBuffers.value, 10) * 8;
138
+ const valueMb = Math.round(valueKb / 1024);
139
+ memoryContext.push({
140
+ setting: "shared_buffers",
141
+ currentMb: valueMb,
142
+ description: "PostgreSQL buffer cache. Typical recommendation: 25% of system RAM.",
143
+ });
144
+ }
145
+ if (workMem) {
146
+ const valueKb = parseInt(workMem.value, 10);
147
+ const valueMb = Math.round(valueKb / 1024);
148
+ memoryContext.push({
149
+ setting: "work_mem",
150
+ currentMb: valueMb,
151
+ description: "Per-operation memory for sorts/hashes. Used per-sort-step, so effective usage = work_mem × concurrent operations.",
152
+ });
153
+ }
154
+ const maintenanceWorkMem = settingsMap.get("maintenance_work_mem");
155
+ if (maintenanceWorkMem) {
156
+ const valueKb = parseInt(maintenanceWorkMem.value, 10);
157
+ const valueMb = Math.round(valueKb / 1024);
158
+ memoryContext.push({
159
+ setting: "maintenance_work_mem",
160
+ currentMb: valueMb,
161
+ description: "Memory for VACUUM, CREATE INDEX, ALTER TABLE. Higher values speed up these operations.",
162
+ });
163
+ }
164
+ const effectiveCacheSize = settingsMap.get("effective_cache_size");
165
+ if (effectiveCacheSize) {
166
+ const valueKb = parseInt(effectiveCacheSize.value, 10) * 8;
167
+ const valueGb = Math.round((valueKb / 1024 / 1024) * 10) / 10;
168
+ memoryContext.push({
169
+ setting: "effective_cache_size",
170
+ currentMb: Math.round(valueKb / 1024),
171
+ description: `Planner estimate of OS cache (~${String(valueGb)}GB). Affects index usage decisions.`,
172
+ });
173
+ }
174
+ return {
175
+ settings: result.rows,
176
+ settingsCount: result.rows?.length ?? 0,
177
+ productionRecommendations: recommendations,
178
+ memoryContext,
179
+ analysisNote: 'Recommendations are general guidance based on common best practices. RAM percentages (e.g., "25% of RAM") are theoretical - PostgreSQL cannot detect actual server memory. Review your specific server specs to calculate actual values. Development databases have different optimal settings than production.',
180
+ };
181
+ },
182
+ };
183
+ }
184
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAW1E,MAAM,UAAU,sBAAsB,CACpC,OAAwB;IAExB,OAAO;QACL,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,6EAA6E;QAC/E,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,QAAwB,EAAE,EAAE;YACxD,mBAAmB;YACnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;;;;;aAKnC,CAAC,CAAC;YAET,gCAAgC;YAChC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;;;;;;;;;;;aAWxC,CAAC,CAAC;YAET,kCAAkC;YAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAGxB,CAAC;YACJ,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAW,CAAC;gBACnC,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAW,CAAC;gBACzC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAkB,CAAC;gBAC1C,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,sCAAsC;YACtC,MAAM,eAAe,GAA+B,EAAE,CAAC;YAEvD,uBAAuB;YACvB,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxD,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;gBACnE,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;gBAC/B,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;oBAClB,eAAe,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,gBAAgB;wBACzB,YAAY,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI;wBACpC,QAAQ,EAAE,aAAa;wBACvB,QAAQ,EAAE,MAAM;wBAChB,cAAc,EACZ,4EAA4E;wBAC9E,OAAO,EAAE,mDAAmD;qBAC7D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC5C,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC;oBACnB,QAAQ;oBACR,eAAe,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,UAAU;wBACnB,YAAY,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI;wBACpC,QAAQ,EAAE,aAAa;wBACvB,QAAQ,EAAE,QAAQ;wBAClB,cAAc,EACZ,kFAAkF;wBACpF,OAAO,EAAE,wDAAwD;qBAClE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC1D,IAAI,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;gBAC/D,eAAe,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,iBAAiB;oBAC1B,YAAY,EAAE,cAAc,CAAC,KAAK;oBAClC,QAAQ,EAAE,aAAa;oBACvB,QAAQ,EAAE,QAAQ;oBAClB,cAAc,EACZ,0FAA0F;oBAC5F,OAAO,EAAE,4DAA4D;iBACtE,CAAC,CAAC;YACL,CAAC;YAED,uBAAuB;YACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,QAAQ,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBAClC,eAAe,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,WAAW;oBACpB,YAAY,EAAE,SAAS;oBACvB,QAAQ,EAAE,aAAa;oBACvB,QAAQ,EAAE,MAAM;oBAChB,cAAc,EACZ,0EAA0E;oBAC5E,OAAO,EAAE,0DAA0D;iBACpE,CAAC,CAAC;YACL,CAAC;YAED,oBAAoB;YACpB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,GAAG,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;gBACzB,eAAe,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,KAAK;oBACnB,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,MAAM;oBAChB,cAAc,EAAE,oDAAoD;oBACpE,OAAO,EAAE,6CAA6C;iBACvD,CAAC,CAAC;YACL,CAAC;YAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAClE,IAAI,kBAAkB,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;gBACxC,eAAe,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,qBAAqB;oBAC9B,YAAY,EAAE,KAAK;oBACnB,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,QAAQ;oBAClB,cAAc,EACZ,4DAA4D;oBAC9D,OAAO,EAAE,oDAAoD;iBAC9D,CAAC,CAAC;YACL,CAAC;YAED,wGAAwG;YACxG,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACtD,IAAI,YAAY,EAAE,KAAK,KAAK,MAAM,EAAE,CAAC;gBACnC,eAAe,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,eAAe;oBACxB,YAAY,EAAE,MAAM;oBACpB,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,KAAK;oBACf,cAAc,EACZ,2GAA2G;oBAC7G,OAAO,EACL,4FAA4F;iBAC/F,CAAC,CAAC;YACL,CAAC;YAED,4CAA4C;YAC5C,MAAM,aAAa,GAIb,EAAE,CAAC;YAET,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBACtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;gBAC3C,aAAa,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,gBAAgB;oBACzB,SAAS,EAAE,OAAO;oBAClB,WAAW,EACT,qEAAqE;iBACxE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;gBAC3C,aAAa,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,OAAO;oBAClB,WAAW,EACT,mHAAmH;iBACtH,CAAC,CAAC;YACL,CAAC;YAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACnE,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;gBAC3C,aAAa,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,sBAAsB;oBAC/B,SAAS,EAAE,OAAO;oBAClB,WAAW,EACT,wFAAwF;iBAC3F,CAAC,CAAC;YACL,CAAC;YAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACnE,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC9D,aAAa,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,sBAAsB;oBAC/B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;oBACrC,WAAW,EAAE,kCAAkC,MAAM,CAAC,OAAO,CAAC,qCAAqC;iBACpG,CAAC,CAAC;YACL,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,IAAI;gBACrB,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;gBACvC,yBAAyB,EAAE,eAAe;gBAC1C,aAAa;gBACb,YAAY,EACV,iTAAiT;aACpT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Statistics Resource
3
+ *
4
+ * Table and index statistics, cache hit ratios, and stale statistics detection.
5
+ * Enhanced with stale statistics recommendations from legacy server.
6
+ */
7
+ import type { PostgresAdapter } from "../PostgresAdapter.js";
8
+ import type { ResourceDefinition } from "../../../types/index.js";
9
+ export declare function createStatsResource(adapter: PostgresAdapter): ResourceDefinition;
10
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/stats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AA2CjC,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CA2GpB"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Statistics Resource
3
+ *
4
+ * Table and index statistics, cache hit ratios, and stale statistics detection.
5
+ * Enhanced with stale statistics recommendations from legacy server.
6
+ */
7
+ import { MEDIUM_PRIORITY } from "../../../utils/resourceAnnotations.js";
8
+ /** Safely convert unknown value to string */
9
+ function toStr(value) {
10
+ if (typeof value === "string")
11
+ return value;
12
+ if (value === null || value === undefined)
13
+ return "";
14
+ if (typeof value === "number")
15
+ return value.toString();
16
+ return "";
17
+ }
18
+ /** Safely convert unknown value to number */
19
+ function toNum(value) {
20
+ if (typeof value === "number")
21
+ return value;
22
+ if (typeof value === "string")
23
+ return Number(value) || 0;
24
+ return 0;
25
+ }
26
+ export function createStatsResource(adapter) {
27
+ return {
28
+ uri: "postgres://stats",
29
+ name: "Database Statistics",
30
+ description: "Table and index statistics, cache hit ratios, and stale statistics detection",
31
+ mimeType: "application/json",
32
+ annotations: MEDIUM_PRIORITY,
33
+ handler: async (_uri, _context) => {
34
+ // Table stats with statsStale calculation
35
+ const tableStats = await adapter.executeQuery(`
36
+ SELECT schemaname, relname as table_name,
37
+ seq_scan, idx_scan, n_tup_ins as inserts,
38
+ n_tup_upd as updates, n_tup_del as deletes,
39
+ n_live_tup as live_tuples, n_dead_tup as dead_tuples,
40
+ n_mod_since_analyze,
41
+ CASE
42
+ WHEN n_live_tup > 0
43
+ THEN round(100.0 * n_mod_since_analyze / n_live_tup, 2)
44
+ ELSE 0
45
+ END as percent_modified_since_analyze,
46
+ CASE
47
+ WHEN n_live_tup > 100 AND (100.0 * n_mod_since_analyze / n_live_tup) > 10
48
+ THEN true
49
+ ELSE false
50
+ END as stats_stale
51
+ FROM pg_stat_user_tables
52
+ ORDER BY n_live_tup DESC
53
+ LIMIT 50
54
+ `);
55
+ // Cache hit ratio
56
+ const cacheStats = await adapter.executeQuery(`
57
+ SELECT
58
+ sum(heap_blks_read) as heap_read,
59
+ sum(heap_blks_hit) as heap_hit,
60
+ CASE WHEN sum(heap_blks_read) + sum(heap_blks_hit) > 0
61
+ THEN round(100.0 * sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)), 2)
62
+ ELSE 100
63
+ END as cache_hit_ratio
64
+ FROM pg_statio_user_tables
65
+ `);
66
+ // Process tables with statsStale field
67
+ const rawTables = tableStats.rows ?? [];
68
+ const tables = rawTables.map((row) => ({
69
+ schemaname: toStr(row["schemaname"]),
70
+ table_name: toStr(row["table_name"]),
71
+ seq_scan: toNum(row["seq_scan"]),
72
+ idx_scan: toNum(row["idx_scan"]),
73
+ inserts: toNum(row["inserts"]),
74
+ updates: toNum(row["updates"]),
75
+ deletes: toNum(row["deletes"]),
76
+ live_tuples: toNum(row["live_tuples"]),
77
+ dead_tuples: toNum(row["dead_tuples"]),
78
+ n_mod_since_analyze: toNum(row["n_mod_since_analyze"]),
79
+ percent_modified_since_analyze: toNum(row["percent_modified_since_analyze"]),
80
+ statsStale: row["stats_stale"] === true,
81
+ }));
82
+ // Generate stale statistics recommendations
83
+ const recommendations = [];
84
+ for (const table of tables.slice(0, 10)) {
85
+ const pctStale = table.percent_modified_since_analyze;
86
+ // Only flag tables with sufficient rows (small tables don't benefit from ANALYZE)
87
+ if (table.live_tuples < 100)
88
+ continue;
89
+ if (pctStale > 20) {
90
+ recommendations.push({
91
+ priority: "HIGH",
92
+ table: table.schemaname + "." + table.table_name,
93
+ percentStale: pctStale,
94
+ statsStale: true,
95
+ action: "ANALYZE " + table.schemaname + "." + table.table_name + ";",
96
+ reason: "Stale statistics may lead to poor query plans",
97
+ });
98
+ }
99
+ else if (pctStale > 10) {
100
+ recommendations.push({
101
+ priority: "MEDIUM",
102
+ table: table.schemaname + "." + table.table_name,
103
+ percentStale: pctStale,
104
+ statsStale: true,
105
+ action: "ANALYZE " + table.schemaname + "." + table.table_name + ";",
106
+ reason: "Statistics could be fresher for optimal query planning",
107
+ });
108
+ }
109
+ }
110
+ if (recommendations.length === 0) {
111
+ recommendations.push({
112
+ priority: "INFO",
113
+ message: "Table statistics are up to date",
114
+ });
115
+ }
116
+ return {
117
+ tableStats: tables,
118
+ cacheHitRatio: cacheStats.rows?.[0],
119
+ recommendations,
120
+ };
121
+ },
122
+ };
123
+ }
124
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Tables Resource
3
+ *
4
+ * List of all tables with metadata (sizes, row counts, etc.).
5
+ */
6
+ import type { PostgresAdapter } from "../PostgresAdapter.js";
7
+ import type { ResourceDefinition } from "../../../types/index.js";
8
+ export declare function createTablesResource(adapter: PostgresAdapter): ResourceDefinition;
9
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/tables.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,oBAAoB,CAClC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CAapB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Tables Resource
3
+ *
4
+ * List of all tables with metadata (sizes, row counts, etc.).
5
+ */
6
+ import { MEDIUM_PRIORITY } from "../../../utils/resourceAnnotations.js";
7
+ export function createTablesResource(adapter) {
8
+ return {
9
+ uri: "postgres://tables",
10
+ name: "Tables List",
11
+ description: "Lightweight table listing with sizes and row counts. Use postgres://schema for full DDL structure with columns, constraints, and indexes.",
12
+ mimeType: "application/json",
13
+ annotations: MEDIUM_PRIORITY,
14
+ handler: async (_uri, _context) => {
15
+ const tables = await adapter.listTables();
16
+ return { tables, count: tables.length };
17
+ },
18
+ };
19
+ }
20
+ //# sourceMappingURL=tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/tables.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,MAAM,UAAU,oBAAoB,CAClC,OAAwB;IAExB,OAAO;QACL,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,2IAA2I;QAC7I,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,eAAe;QAC5B,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,QAAwB,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Vacuum Resource
3
+ *
4
+ * Vacuum statistics, dead tuples, and transaction ID wraparound warnings.
5
+ */
6
+ import type { PostgresAdapter } from "../PostgresAdapter.js";
7
+ import type { ResourceDefinition } from "../../../types/index.js";
8
+ export declare function createVacuumResource(adapter: PostgresAdapter): ResourceDefinition;
9
+ //# sourceMappingURL=vacuum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vacuum.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/vacuum.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAiCjC,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CAmIpB"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Vacuum Resource
3
+ *
4
+ * Vacuum statistics, dead tuples, and transaction ID wraparound warnings.
5
+ */
6
+ import { MEDIUM_PRIORITY } from "../../../utils/resourceAnnotations.js";
7
+ export function createVacuumResource(adapter) {
8
+ return {
9
+ uri: "postgres://vacuum",
10
+ name: "Vacuum Status",
11
+ description: "Vacuum statistics, dead tuples, and transaction ID wraparound warnings",
12
+ mimeType: "application/json",
13
+ annotations: MEDIUM_PRIORITY,
14
+ handler: async (_uri, _context) => {
15
+ // Get vacuum statistics
16
+ const vacuumResult = await adapter.executeQuery(`
17
+ SELECT
18
+ schemaname,
19
+ relname,
20
+ last_vacuum,
21
+ last_autovacuum,
22
+ last_analyze,
23
+ last_autoanalyze,
24
+ vacuum_count,
25
+ autovacuum_count,
26
+ analyze_count,
27
+ autoanalyze_count,
28
+ n_dead_tup,
29
+ n_live_tup,
30
+ CASE
31
+ WHEN n_live_tup > 0
32
+ THEN round(100.0 * n_dead_tup / n_live_tup, 2)
33
+ ELSE 0
34
+ END as dead_tuple_percent
35
+ FROM pg_stat_user_tables
36
+ WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
37
+ ORDER BY n_dead_tup DESC
38
+ LIMIT 20
39
+ `);
40
+ const vacuumStats = (vacuumResult.rows ?? []);
41
+ // Get transaction ID wraparound info
42
+ const wraparoundResult = await adapter.executeQuery(`
43
+ SELECT
44
+ datname,
45
+ age(datfrozenxid) as xid_age,
46
+ 2147483648 - age(datfrozenxid) as xids_until_wraparound,
47
+ round(100.0 * age(datfrozenxid) / 2147483648, 2) as percent_toward_wraparound
48
+ FROM pg_database
49
+ WHERE datname = current_database()
50
+ `);
51
+ const wraparoundRow = (wraparoundResult.rows?.[0] ??
52
+ null);
53
+ const wraparoundInfo = wraparoundRow ?? {
54
+ datname: "",
55
+ xid_age: 0,
56
+ xids_until_wraparound: 0,
57
+ percent_toward_wraparound: 0,
58
+ };
59
+ // Generate warnings
60
+ const warnings = [];
61
+ const pctWraparound = wraparoundInfo.percent_toward_wraparound;
62
+ if (pctWraparound > 75) {
63
+ warnings.push({
64
+ severity: "CRITICAL",
65
+ message: "Transaction ID wraparound at " + pctWraparound.toString() + "%",
66
+ recommendation: "Run VACUUM FREEZE immediately to prevent database shutdown",
67
+ });
68
+ }
69
+ else if (pctWraparound > 50) {
70
+ warnings.push({
71
+ severity: "HIGH",
72
+ message: "Transaction ID wraparound at " + pctWraparound.toString() + "%",
73
+ recommendation: "Schedule VACUUM FREEZE during maintenance window",
74
+ });
75
+ }
76
+ for (const table of vacuumStats.slice(0, 5)) {
77
+ // Handle edge case: empty tables (both live and dead = 0)
78
+ const isEmptyTable = table.n_live_tup === 0 && table.n_dead_tup === 0;
79
+ // Ensure we have a valid number, not NaN
80
+ const deadPct = isFinite(table.dead_tuple_percent)
81
+ ? table.dead_tuple_percent
82
+ : 0;
83
+ if (isEmptyTable) {
84
+ // Skip empty tables in warnings - they don't need vacuum
85
+ continue;
86
+ }
87
+ if (deadPct > 20) {
88
+ warnings.push({
89
+ severity: "MEDIUM",
90
+ table: table.schemaname + "." + table.relname,
91
+ message: deadPct.toString() + "% dead tuples",
92
+ recommendation: "Run VACUUM ANALYZE " +
93
+ table.schemaname +
94
+ "." +
95
+ table.relname +
96
+ ";",
97
+ });
98
+ }
99
+ }
100
+ if (warnings.length === 0) {
101
+ warnings.push({
102
+ severity: "INFO",
103
+ message: "Vacuum status looks healthy",
104
+ });
105
+ }
106
+ return {
107
+ vacuumStatistics: vacuumStats,
108
+ transactionIdWraparound: {
109
+ ...wraparoundInfo,
110
+ thresholdExplanation: {
111
+ limit: "PostgreSQL uses 32-bit transaction IDs with a 2 billion XID horizon. Approaching this limit requires aggressive vacuuming.",
112
+ critical75: ">75%: CRITICAL - Database will shut down to prevent corruption if wraparound occurs. Run VACUUM FREEZE immediately.",
113
+ warning50: ">50%: HIGH - Schedule VACUUM FREEZE during maintenance window. Still safe but needs attention.",
114
+ healthy: "<50%: Normal operation. Autovacuum should handle routine cleanup.",
115
+ },
116
+ },
117
+ warnings,
118
+ };
119
+ },
120
+ };
121
+ }
122
+ //# sourceMappingURL=vacuum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vacuum.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/vacuum.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * pgvector Status Resource
3
+ *
4
+ * Provides pgvector extension status, vector columns, and index information.
5
+ */
6
+ import type { PostgresAdapter } from "../PostgresAdapter.js";
7
+ import type { ResourceDefinition } from "../../../types/index.js";
8
+ export declare function createVectorResource(adapter: PostgresAdapter): ResourceDefinition;
9
+ //# sourceMappingURL=vector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../../src/adapters/postgresql/resources/vector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAkDlE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CA0OpB"}