@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,568 @@
1
+ /**
2
+ * PostgreSQL citext Extension Tools
3
+ *
4
+ * Case-insensitive text type for preventing subtle bugs in auth systems,
5
+ * emails, and usernames. 6 tools total.
6
+ *
7
+ * citext provides a case-insensitive character string type at the type level:
8
+ * - Comparisons are case-insensitive (e.g., 'HELLO' = 'hello')
9
+ * - Sorting is case-insensitive
10
+ * - Ideal for email, username, and other identifier columns
11
+ */
12
+ import { z } from "zod";
13
+ import { readOnly, write } from "../../../utils/annotations.js";
14
+ import { getToolIcons } from "../../../utils/icons.js";
15
+ import { CitextConvertColumnSchema, CitextConvertColumnSchemaBase, CitextListColumnsSchema, CitextListColumnsSchemaBase, CitextAnalyzeCandidatesSchema, CitextAnalyzeCandidatesSchemaBase, CitextSchemaAdvisorSchema, CitextSchemaAdvisorSchemaBase, } from "../schemas/index.js";
16
+ /**
17
+ * Get all citext tools
18
+ */
19
+ export function getCitextTools(adapter) {
20
+ return [
21
+ createCitextExtensionTool(adapter),
22
+ createCitextConvertColumnTool(adapter),
23
+ createCitextListColumnsTool(adapter),
24
+ createCitextAnalyzeCandidatesTool(adapter),
25
+ createCitextCompareTool(adapter),
26
+ createCitextSchemaAdvisorTool(adapter),
27
+ ];
28
+ }
29
+ /**
30
+ * Enable the citext extension
31
+ */
32
+ function createCitextExtensionTool(adapter) {
33
+ return {
34
+ name: "pg_citext_create_extension",
35
+ description: `Enable the citext extension for case-insensitive text columns.
36
+ citext is ideal for emails, usernames, and other identifiers where case shouldn't matter.`,
37
+ group: "citext",
38
+ inputSchema: z.object({}),
39
+ annotations: write("Create Citext Extension"),
40
+ icons: getToolIcons("citext", write("Create Citext Extension")),
41
+ handler: async (_params, _context) => {
42
+ await adapter.executeQuery("CREATE EXTENSION IF NOT EXISTS citext");
43
+ return {
44
+ success: true,
45
+ message: "citext extension enabled",
46
+ usage: "Create columns with type CITEXT instead of TEXT for case-insensitive comparisons",
47
+ };
48
+ },
49
+ };
50
+ }
51
+ /**
52
+ * Convert an existing text column to citext
53
+ */
54
+ function createCitextConvertColumnTool(adapter) {
55
+ return {
56
+ name: "pg_citext_convert_column",
57
+ description: `Convert an existing TEXT column to CITEXT for case-insensitive comparisons.
58
+ This is useful for retrofitting case-insensitivity to existing columns like email or username.
59
+ Note: If views depend on this column, you must drop and recreate them manually before conversion.`,
60
+ group: "citext",
61
+ inputSchema: CitextConvertColumnSchemaBase,
62
+ annotations: write("Convert to Citext"),
63
+ icons: getToolIcons("citext", write("Convert to Citext")),
64
+ handler: async (params, _context) => {
65
+ const parsed = CitextConvertColumnSchema.parse(params ?? {});
66
+ const { table, column, schema: schemaOpt } = parsed;
67
+ const schemaName = schemaOpt ?? "public";
68
+ const qualifiedTable = `"${schemaName}"."${table}"`;
69
+ const extCheck = await adapter.executeQuery(`
70
+ SELECT EXISTS(
71
+ SELECT 1 FROM pg_extension WHERE extname = 'citext'
72
+ ) as installed
73
+ `);
74
+ const hasExt = extCheck.rows?.[0]?.["installed"] ?? false;
75
+ if (!hasExt) {
76
+ throw new Error("citext extension is not installed. Run pg_citext_create_extension first.");
77
+ }
78
+ const colCheck = await adapter.executeQuery(`
79
+ SELECT data_type, udt_name
80
+ FROM information_schema.columns
81
+ WHERE table_schema = $1
82
+ AND table_name = $2
83
+ AND column_name = $3
84
+ `, [schemaName, table, column]);
85
+ if (!colCheck.rows || colCheck.rows.length === 0) {
86
+ throw new Error(`Column "${column}" not found in table ${qualifiedTable}. Verify the table and column names.`);
87
+ }
88
+ const dataType = colCheck.rows[0]?.["data_type"];
89
+ const udtName = colCheck.rows[0]?.["udt_name"];
90
+ // Normalize type: use udt_name for user-defined types (like citext)
91
+ const currentType = dataType === "USER-DEFINED" ? udtName : dataType;
92
+ if (udtName === "citext") {
93
+ return {
94
+ success: true,
95
+ message: `Column ${column} is already citext`,
96
+ wasAlreadyCitext: true,
97
+ };
98
+ }
99
+ // Validate that the column is a text-based type
100
+ const allowedTypes = [
101
+ "text",
102
+ "character varying",
103
+ "character",
104
+ "char",
105
+ "varchar",
106
+ ];
107
+ const normalizedType = dataType.toLowerCase();
108
+ if (!allowedTypes.includes(normalizedType)) {
109
+ return {
110
+ success: false,
111
+ error: `Column "${column}" is type "${currentType}", not a text-based type`,
112
+ currentType,
113
+ allowedTypes: ["text", "varchar", "character varying"],
114
+ suggestion: `citext conversion only works for text-based columns. Column "${column}" is "${currentType}" which cannot be converted.`,
115
+ };
116
+ }
117
+ // Check for dependent views before attempting the conversion
118
+ const depCheck = await adapter.executeQuery(`
119
+ SELECT DISTINCT
120
+ c.relname as dependent_view,
121
+ n.nspname as view_schema
122
+ FROM pg_depend d
123
+ JOIN pg_rewrite r ON d.objid = r.oid
124
+ JOIN pg_class c ON r.ev_class = c.oid
125
+ JOIN pg_namespace n ON c.relnamespace = n.oid
126
+ JOIN pg_class t ON d.refobjid = t.oid
127
+ JOIN pg_namespace tn ON t.relnamespace = tn.oid
128
+ JOIN pg_attribute a ON d.refobjid = a.attrelid AND d.refobjsubid = a.attnum
129
+ WHERE c.relkind = 'v'
130
+ AND tn.nspname = $1
131
+ AND t.relname = $2
132
+ AND a.attname = $3
133
+ `, [schemaName, table, column]);
134
+ const dependentViews = depCheck.rows ?? [];
135
+ if (dependentViews.length > 0) {
136
+ return {
137
+ success: false,
138
+ error: "Column has dependent views that must be dropped before conversion",
139
+ dependentViews: dependentViews.map((v) => `${v["view_schema"]}.${v["dependent_view"]}`),
140
+ hint: "Drop the listed views, run this conversion, then recreate the views. PostgreSQL cannot ALTER COLUMN TYPE when views depend on it.",
141
+ };
142
+ }
143
+ try {
144
+ await adapter.executeQuery(`
145
+ ALTER TABLE ${qualifiedTable}
146
+ ALTER COLUMN "${column}" TYPE citext USING "${column}"::citext
147
+ `);
148
+ return {
149
+ success: true,
150
+ message: `Column ${column} converted from ${currentType} to citext`,
151
+ table: qualifiedTable,
152
+ previousType: currentType,
153
+ affectedViews: dependentViews.length > 0
154
+ ? dependentViews.map((v) => `${v["view_schema"]}.${v["dependent_view"]}`)
155
+ : undefined,
156
+ };
157
+ }
158
+ catch (error) {
159
+ const errorMessage = error instanceof Error ? error.message : String(error);
160
+ return {
161
+ success: false,
162
+ error: `Failed to convert column: ${errorMessage}`,
163
+ hint: "If views depend on this column, they may need to be dropped and recreated",
164
+ dependentViews: dependentViews.length > 0
165
+ ? dependentViews.map((v) => `${v["view_schema"]}.${v["dependent_view"]}`)
166
+ : undefined,
167
+ };
168
+ }
169
+ },
170
+ };
171
+ }
172
+ /**
173
+ * List all citext columns in the database
174
+ */
175
+ function createCitextListColumnsTool(adapter) {
176
+ return {
177
+ name: "pg_citext_list_columns",
178
+ description: `List all columns using the citext type in the database.
179
+ Useful for auditing case-insensitive columns.`,
180
+ group: "citext",
181
+ inputSchema: CitextListColumnsSchemaBase,
182
+ annotations: readOnly("List Citext Columns"),
183
+ icons: getToolIcons("citext", readOnly("List Citext Columns")),
184
+ handler: async (params, _context) => {
185
+ const parsed = CitextListColumnsSchema.parse(params);
186
+ const { schema, limit: userLimit } = parsed;
187
+ // Default limit of 100 to prevent large payloads
188
+ const DEFAULT_LIMIT = 100;
189
+ const effectiveLimit = userLimit === 0 ? undefined : (userLimit ?? DEFAULT_LIMIT);
190
+ const conditions = [
191
+ "udt_name = 'citext'",
192
+ "table_schema NOT IN ('pg_catalog', 'information_schema')",
193
+ ];
194
+ const queryParams = [];
195
+ let paramIndex = 1;
196
+ if (schema !== undefined) {
197
+ conditions.push(`table_schema = $${String(paramIndex++)}`);
198
+ queryParams.push(schema);
199
+ }
200
+ const whereClause = conditions.join(" AND ");
201
+ // Count total columns first
202
+ const countSql = `
203
+ SELECT COUNT(*) as total
204
+ FROM information_schema.columns
205
+ WHERE ${whereClause}
206
+ `;
207
+ const countResult = await adapter.executeQuery(countSql, queryParams);
208
+ const totalCount = Number(countResult.rows?.[0]?.["total"] ?? 0);
209
+ // Add LIMIT clause
210
+ const limitClause = effectiveLimit !== undefined ? `LIMIT ${String(effectiveLimit)}` : "";
211
+ const sql = `
212
+ SELECT
213
+ table_schema,
214
+ table_name,
215
+ column_name,
216
+ is_nullable,
217
+ column_default
218
+ FROM information_schema.columns
219
+ WHERE ${whereClause}
220
+ ORDER BY table_schema, table_name, ordinal_position
221
+ ${limitClause}
222
+ `;
223
+ const result = await adapter.executeQuery(sql, queryParams);
224
+ const columns = result.rows ?? [];
225
+ // Determine if results were truncated
226
+ const truncated = effectiveLimit !== undefined && columns.length < totalCount;
227
+ return {
228
+ columns,
229
+ count: columns.length,
230
+ totalCount,
231
+ truncated,
232
+ ...(effectiveLimit !== undefined && { limit: effectiveLimit }),
233
+ ...(schema !== undefined && { schema }),
234
+ };
235
+ },
236
+ };
237
+ }
238
+ /**
239
+ * Analyze text columns that could benefit from citext
240
+ */
241
+ function createCitextAnalyzeCandidatesTool(adapter) {
242
+ return {
243
+ name: "pg_citext_analyze_candidates",
244
+ description: `Find TEXT columns that may benefit from case-insensitive comparisons.
245
+ Looks for common patterns like email, username, name, slug, etc.`,
246
+ group: "citext",
247
+ inputSchema: CitextAnalyzeCandidatesSchemaBase,
248
+ annotations: readOnly("Analyze Citext Candidates"),
249
+ icons: getToolIcons("citext", readOnly("Analyze Citext Candidates")),
250
+ handler: async (params, _context) => {
251
+ const { patterns, schema, table, limit: userLimit, excludeSystemSchemas: userExcludeSystemSchemas, } = CitextAnalyzeCandidatesSchema.parse(params);
252
+ // Default limit of 50 to prevent large payloads and transport truncation
253
+ const DEFAULT_LIMIT = 50;
254
+ const effectiveLimit = userLimit === 0 ? undefined : (userLimit ?? DEFAULT_LIMIT);
255
+ // Exclude system schemas by default when no table filter is specified
256
+ const excludeSystemSchemas = userExcludeSystemSchemas ?? true;
257
+ const searchPatterns = patterns ?? [
258
+ "email",
259
+ "e_mail",
260
+ "mail",
261
+ "username",
262
+ "user_name",
263
+ "login",
264
+ "name",
265
+ "first_name",
266
+ "last_name",
267
+ "full_name",
268
+ "slug",
269
+ "handle",
270
+ "nickname",
271
+ "code",
272
+ "sku",
273
+ "identifier",
274
+ ];
275
+ // System/extension schemas to exclude by default (reduces noise from extension tables)
276
+ const systemSchemas = [
277
+ "cron",
278
+ "topology",
279
+ "partman",
280
+ "tiger",
281
+ "tiger_data",
282
+ ];
283
+ const conditions = [
284
+ "data_type IN ('text', 'character varying')",
285
+ "table_schema NOT IN ('pg_catalog', 'information_schema')",
286
+ ];
287
+ const queryParams = [];
288
+ let paramIndex = 1;
289
+ // Only apply system schema exclusion when no specific schema/table is requested
290
+ if (excludeSystemSchemas && schema === undefined && table === undefined) {
291
+ const placeholders = systemSchemas.map(() => {
292
+ const idx = paramIndex++;
293
+ return `$${String(idx)}`;
294
+ });
295
+ conditions.push(`table_schema NOT IN (${placeholders.join(", ")})`);
296
+ queryParams.push(...systemSchemas);
297
+ }
298
+ if (schema !== undefined) {
299
+ conditions.push(`table_schema = $${String(paramIndex++)}`);
300
+ queryParams.push(schema);
301
+ }
302
+ if (table !== undefined) {
303
+ conditions.push(`table_name = $${String(paramIndex++)}`);
304
+ queryParams.push(table);
305
+ }
306
+ const patternConditions = searchPatterns.map((p) => {
307
+ const idx = paramIndex++;
308
+ queryParams.push(`%${p}%`);
309
+ return `LOWER(column_name) LIKE $${String(idx)}`;
310
+ });
311
+ conditions.push(`(${patternConditions.join(" OR ")})`);
312
+ // Build WHERE clause for reuse
313
+ const whereClause = conditions.join(" AND ");
314
+ // Count total candidates first
315
+ const countSql = `
316
+ SELECT COUNT(*) as total
317
+ FROM information_schema.columns
318
+ WHERE ${whereClause}
319
+ `;
320
+ const countResult = await adapter.executeQuery(countSql, queryParams);
321
+ const totalCount = Number(countResult.rows?.[0]?.["total"] ?? 0);
322
+ // Add LIMIT clause
323
+ const limitClause = effectiveLimit !== undefined ? `LIMIT ${String(effectiveLimit)}` : "";
324
+ const sql = `
325
+ SELECT
326
+ table_schema,
327
+ table_name,
328
+ column_name,
329
+ data_type,
330
+ character_maximum_length,
331
+ is_nullable
332
+ FROM information_schema.columns
333
+ WHERE ${whereClause}
334
+ ORDER BY table_schema, table_name, ordinal_position
335
+ ${limitClause}
336
+ `;
337
+ const result = await adapter.executeQuery(sql, queryParams);
338
+ const candidates = result.rows ?? [];
339
+ // Determine if results were truncated
340
+ const truncated = effectiveLimit !== undefined && candidates.length < totalCount;
341
+ // Count high/medium confidence candidates without storing duplicates
342
+ let highConfidenceCount = 0;
343
+ let mediumConfidenceCount = 0;
344
+ for (const row of candidates) {
345
+ const colName = row["column_name"].toLowerCase();
346
+ if (colName.includes("email") ||
347
+ colName.includes("username") ||
348
+ colName === "login") {
349
+ highConfidenceCount++;
350
+ }
351
+ else {
352
+ mediumConfidenceCount++;
353
+ }
354
+ }
355
+ return {
356
+ candidates,
357
+ count: candidates.length,
358
+ totalCount,
359
+ truncated,
360
+ ...(effectiveLimit !== undefined && { limit: effectiveLimit }),
361
+ ...(table !== undefined && { table }),
362
+ ...(schema !== undefined && { schema }),
363
+ summary: {
364
+ highConfidence: highConfidenceCount,
365
+ mediumConfidence: mediumConfidenceCount,
366
+ },
367
+ recommendation: candidates.length > 0
368
+ ? "Consider converting these columns to citext for case-insensitive comparisons"
369
+ : "No obvious candidates found. Use custom patterns if needed.",
370
+ // Include excluded schemas info when filtering is applied
371
+ ...(excludeSystemSchemas &&
372
+ schema === undefined &&
373
+ table === undefined && {
374
+ excludedSchemas: systemSchemas,
375
+ }),
376
+ // Include patterns used for transparency
377
+ patternsUsed: searchPatterns,
378
+ };
379
+ },
380
+ };
381
+ }
382
+ /**
383
+ * Compare values case-insensitively
384
+ */
385
+ function createCitextCompareTool(adapter) {
386
+ return {
387
+ name: "pg_citext_compare",
388
+ description: `Compare two values using case-insensitive semantics.
389
+ Useful for testing citext behavior before converting columns.`,
390
+ group: "citext",
391
+ inputSchema: z.object({
392
+ value1: z.string().describe("First value to compare"),
393
+ value2: z.string().describe("Second value to compare"),
394
+ }),
395
+ annotations: readOnly("Compare Citext Values"),
396
+ icons: getToolIcons("citext", readOnly("Compare Citext Values")),
397
+ handler: async (params, _context) => {
398
+ // Use the schema for proper validation
399
+ const schema = z.object({
400
+ value1: z.string(),
401
+ value2: z.string(),
402
+ });
403
+ const { value1, value2 } = schema.parse(params);
404
+ const extCheck = await adapter.executeQuery(`
405
+ SELECT EXISTS(
406
+ SELECT 1 FROM pg_extension WHERE extname = 'citext'
407
+ ) as installed
408
+ `);
409
+ const hasExt = extCheck.rows?.[0]?.["installed"] ?? false;
410
+ if (hasExt) {
411
+ const result = await adapter.executeQuery(`
412
+ SELECT
413
+ $1::citext = $2::citext as citext_equal,
414
+ $1::text = $2::text as text_equal,
415
+ LOWER($1) = LOWER($2) as lower_equal
416
+ `, [value1, value2]);
417
+ const row = result.rows?.[0];
418
+ return {
419
+ value1,
420
+ value2,
421
+ citextEqual: row?.["citext_equal"],
422
+ textEqual: row?.["text_equal"],
423
+ lowerEqual: row?.["lower_equal"],
424
+ extensionInstalled: true,
425
+ };
426
+ }
427
+ else {
428
+ const result = await adapter.executeQuery(`
429
+ SELECT
430
+ $1::text = $2::text as text_equal,
431
+ LOWER($1) = LOWER($2) as lower_equal
432
+ `, [value1, value2]);
433
+ const row = result.rows?.[0];
434
+ return {
435
+ value1,
436
+ value2,
437
+ textEqual: row?.["text_equal"],
438
+ lowerEqual: row?.["lower_equal"],
439
+ extensionInstalled: false,
440
+ hint: "Install citext extension for native case-insensitive comparisons",
441
+ };
442
+ }
443
+ },
444
+ };
445
+ }
446
+ /**
447
+ * Schema advisor for citext columns
448
+ */
449
+ function createCitextSchemaAdvisorTool(adapter) {
450
+ return {
451
+ name: "pg_citext_schema_advisor",
452
+ description: `Analyze a specific table and recommend which columns should use citext.
453
+ Provides schema design recommendations based on column names and existing data patterns.
454
+ Requires the 'table' parameter to specify which table to analyze.`,
455
+ group: "citext",
456
+ inputSchema: CitextSchemaAdvisorSchemaBase,
457
+ annotations: readOnly("Citext Schema Advisor"),
458
+ icons: getToolIcons("citext", readOnly("Citext Schema Advisor")),
459
+ handler: async (params, _context) => {
460
+ const { table, schema } = CitextSchemaAdvisorSchema.parse(params);
461
+ const schemaName = schema ?? "public";
462
+ const qualifiedTable = `"${schemaName}"."${table}"`;
463
+ // First check if table exists
464
+ const tableCheck = await adapter.executeQuery(`
465
+ SELECT 1 FROM information_schema.tables
466
+ WHERE table_schema = $1 AND table_name = $2
467
+ `, [schemaName, table]);
468
+ if (!tableCheck.rows || tableCheck.rows.length === 0) {
469
+ throw new Error(`Table ${qualifiedTable} not found. Verify the table name and schema.`);
470
+ }
471
+ const colResult = await adapter.executeQuery(`
472
+ SELECT
473
+ column_name,
474
+ data_type,
475
+ udt_name,
476
+ is_nullable,
477
+ character_maximum_length
478
+ FROM information_schema.columns
479
+ WHERE table_schema = $1
480
+ AND table_name = $2
481
+ AND data_type IN ('text', 'character varying', 'USER-DEFINED')
482
+ ORDER BY ordinal_position
483
+ `, [schemaName, table]);
484
+ const columns = colResult.rows ?? [];
485
+ const recommendations = [];
486
+ const highConfidencePatterns = [
487
+ "email",
488
+ "username",
489
+ "login",
490
+ "user_name",
491
+ ];
492
+ const mediumConfidencePatterns = [
493
+ "name",
494
+ "slug",
495
+ "handle",
496
+ "code",
497
+ "sku",
498
+ "identifier",
499
+ "nickname",
500
+ ];
501
+ for (const col of columns) {
502
+ const colName = col["column_name"].toLowerCase();
503
+ const dataType = col["data_type"];
504
+ const udtName = col["udt_name"];
505
+ if (udtName === "citext") {
506
+ recommendations.push({
507
+ column: col["column_name"],
508
+ currentType: "citext",
509
+ previousType: "text or varchar (converted)",
510
+ recommendation: "already_citext",
511
+ confidence: "high",
512
+ reason: "Column is already using citext",
513
+ });
514
+ continue;
515
+ }
516
+ const isHighConfidence = highConfidencePatterns.some((p) => colName.includes(p));
517
+ const isMediumConfidence = mediumConfidencePatterns.some((p) => colName.includes(p));
518
+ if (isHighConfidence) {
519
+ recommendations.push({
520
+ column: col["column_name"],
521
+ currentType: dataType,
522
+ recommendation: "convert",
523
+ confidence: "high",
524
+ reason: `Column name suggests case-insensitive data (${colName} matches common identifier patterns)`,
525
+ });
526
+ }
527
+ else if (isMediumConfidence) {
528
+ recommendations.push({
529
+ column: col["column_name"],
530
+ currentType: dataType,
531
+ recommendation: "convert",
532
+ confidence: "medium",
533
+ reason: `Column name may benefit from case-insensitivity (${colName})`,
534
+ });
535
+ }
536
+ else {
537
+ recommendations.push({
538
+ column: col["column_name"],
539
+ currentType: dataType,
540
+ recommendation: "keep",
541
+ confidence: "low",
542
+ reason: "No obvious case-insensitivity pattern detected",
543
+ });
544
+ }
545
+ }
546
+ const convertCount = recommendations.filter((r) => r.recommendation === "convert").length;
547
+ const highCount = recommendations.filter((r) => r.recommendation === "convert" && r.confidence === "high").length;
548
+ return {
549
+ table: `${schemaName}.${table}`,
550
+ recommendations,
551
+ summary: {
552
+ totalTextColumns: columns.length,
553
+ recommendConvert: convertCount,
554
+ highConfidence: highCount,
555
+ alreadyCitext: recommendations.filter((r) => r.recommendation === "already_citext").length,
556
+ },
557
+ nextSteps: convertCount > 0
558
+ ? [
559
+ "Review recommendations above",
560
+ `Use pg_citext_convert_column to convert recommended columns`,
561
+ "Update application queries if they rely on case-sensitive comparisons",
562
+ ]
563
+ : ["No columns require conversion"],
564
+ };
565
+ },
566
+ };
567
+ }
568
+ //# sourceMappingURL=citext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citext.js","sourceRoot":"","sources":["../../../../src/adapters/postgresql/tools/citext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * postgres-mcp - Code Mode Tool: pg_execute_code
3
+ *
4
+ * MCP tool that executes LLM-generated code in a sandboxed environment
5
+ * with access to all 194 PostgreSQL tools via the pg.* API.
6
+ */
7
+ import { z } from "zod";
8
+ import type { PostgresAdapter } from "../../PostgresAdapter.js";
9
+ import type { ToolDefinition } from "../../../../types/index.js";
10
+ export declare const ExecuteCodeSchema: z.ZodObject<{
11
+ code: z.ZodString;
12
+ timeout: z.ZodOptional<z.ZodNumber>;
13
+ readonly: z.ZodOptional<z.ZodBoolean>;
14
+ }, z.core.$strip>;
15
+ /**
16
+ * Create the pg_execute_code tool
17
+ */
18
+ export declare function createExecuteCodeTool(adapter: PostgresAdapter): ToolDefinition;
19
+ /**
20
+ * Get all Code Mode tools
21
+ */
22
+ export declare function getCodeModeTools(adapter: PostgresAdapter): ToolDefinition[];
23
+ /**
24
+ * Cleanup Code Mode resources (call on server shutdown)
25
+ */
26
+ export declare function cleanupCodeMode(): void;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/codemode/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAYjE,eAAO,MAAM,iBAAiB;;;;iBAc5B,CAAC;AA4BH;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CA6HhB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}