@neverinfamous/postgres-mcp 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -9
  3. package/dist/__tests__/benchmarks/schema-parsing.bench.js +1 -1
  4. package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -1
  5. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  6. package/dist/__tests__/mocks/adapter.js +2 -1
  7. package/dist/__tests__/mocks/adapter.js.map +1 -1
  8. package/dist/adapters/DatabaseAdapter.d.ts +6 -1
  9. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  10. package/dist/adapters/DatabaseAdapter.js +11 -7
  11. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  12. package/dist/adapters/postgresql/PostgresAdapter.d.ts +5 -22
  13. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  14. package/dist/adapters/postgresql/PostgresAdapter.js +28 -520
  15. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  16. package/dist/adapters/postgresql/prompts/index.js +1 -1
  17. package/dist/adapters/postgresql/prompts/index.js.map +1 -1
  18. package/dist/adapters/postgresql/resources/index.d.ts +1 -1
  19. package/dist/adapters/postgresql/resources/index.js +3 -3
  20. package/dist/adapters/postgresql/resources/index.js.map +1 -1
  21. package/dist/adapters/postgresql/schema-operations.d.ts +71 -0
  22. package/dist/adapters/postgresql/schema-operations.d.ts.map +1 -0
  23. package/dist/adapters/postgresql/schema-operations.js +561 -0
  24. package/dist/adapters/postgresql/schema-operations.js.map +1 -0
  25. package/dist/adapters/postgresql/schemas/admin.d.ts +4 -4
  26. package/dist/adapters/postgresql/schemas/admin.js +4 -4
  27. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  28. package/dist/adapters/postgresql/schemas/backup.d.ts +2 -2
  29. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  30. package/dist/adapters/postgresql/schemas/backup.js +1 -3
  31. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  32. package/dist/adapters/postgresql/schemas/core/index.d.ts +6 -0
  33. package/dist/adapters/postgresql/schemas/core/index.d.ts.map +1 -0
  34. package/dist/adapters/postgresql/schemas/core/index.js +6 -0
  35. package/dist/adapters/postgresql/schemas/core/index.js.map +1 -0
  36. package/dist/adapters/postgresql/schemas/{core.d.ts → core/queries.d.ts} +12 -167
  37. package/dist/adapters/postgresql/schemas/core/queries.d.ts.map +1 -0
  38. package/dist/adapters/postgresql/schemas/{core.js → core/queries.js} +5 -213
  39. package/dist/adapters/postgresql/schemas/core/queries.js.map +1 -0
  40. package/dist/adapters/postgresql/schemas/core/transactions.d.ts +149 -0
  41. package/dist/adapters/postgresql/schemas/core/transactions.d.ts.map +1 -0
  42. package/dist/adapters/postgresql/schemas/core/transactions.js +239 -0
  43. package/dist/adapters/postgresql/schemas/core/transactions.js.map +1 -0
  44. package/dist/adapters/postgresql/schemas/cron.d.ts +12 -12
  45. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  46. package/dist/adapters/postgresql/schemas/cron.js +38 -10
  47. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  48. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts +222 -0
  49. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts.map +1 -0
  50. package/dist/adapters/postgresql/schemas/extensions/citext.js +306 -0
  51. package/dist/adapters/postgresql/schemas/extensions/citext.js.map +1 -0
  52. package/dist/adapters/postgresql/schemas/extensions/index.d.ts +15 -0
  53. package/dist/adapters/postgresql/schemas/extensions/index.d.ts.map +1 -0
  54. package/dist/adapters/postgresql/schemas/extensions/index.js +20 -0
  55. package/dist/adapters/postgresql/schemas/extensions/index.js.map +1 -0
  56. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts +164 -0
  57. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts.map +1 -0
  58. package/dist/adapters/postgresql/schemas/extensions/kcache.js +225 -0
  59. package/dist/adapters/postgresql/schemas/extensions/kcache.js.map +1 -0
  60. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts +253 -0
  61. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts.map +1 -0
  62. package/dist/adapters/postgresql/schemas/extensions/ltree.js +430 -0
  63. package/dist/adapters/postgresql/schemas/extensions/ltree.js.map +1 -0
  64. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts +251 -0
  65. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts.map +1 -0
  66. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js +294 -0
  67. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js.map +1 -0
  68. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts +10 -0
  69. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts.map +1 -0
  70. package/dist/adapters/postgresql/schemas/extensions/shared.js +15 -0
  71. package/dist/adapters/postgresql/schemas/extensions/shared.js.map +1 -0
  72. package/dist/adapters/postgresql/schemas/index.d.ts +6 -6
  73. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  74. package/dist/adapters/postgresql/schemas/index.js +8 -8
  75. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  76. package/dist/adapters/postgresql/schemas/introspection.d.ts +14 -14
  77. package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -1
  78. package/dist/adapters/postgresql/schemas/introspection.js +6 -3
  79. package/dist/adapters/postgresql/schemas/introspection.js.map +1 -1
  80. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts +270 -0
  81. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts.map +1 -0
  82. package/dist/adapters/postgresql/schemas/jsonb/advanced.js +371 -0
  83. package/dist/adapters/postgresql/schemas/jsonb/advanced.js.map +1 -0
  84. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts +283 -0
  85. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts.map +1 -0
  86. package/dist/adapters/postgresql/schemas/jsonb/basic.js +456 -0
  87. package/dist/adapters/postgresql/schemas/jsonb/basic.js.map +1 -0
  88. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts +6 -0
  89. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts.map +1 -0
  90. package/dist/adapters/postgresql/schemas/jsonb/index.js +6 -0
  91. package/dist/adapters/postgresql/schemas/jsonb/index.js.map +1 -0
  92. package/dist/adapters/postgresql/schemas/monitoring.d.ts +4 -4
  93. package/dist/adapters/postgresql/schemas/monitoring.js +2 -2
  94. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  95. package/dist/adapters/postgresql/schemas/partitioning.d.ts +14 -14
  96. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  97. package/dist/adapters/postgresql/schemas/partitioning.js +64 -46
  98. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  99. package/dist/adapters/postgresql/schemas/partman.d.ts +16 -14
  100. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
  101. package/dist/adapters/postgresql/schemas/partman.js +9 -9
  102. package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
  103. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts +429 -0
  104. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts.map +1 -0
  105. package/dist/adapters/postgresql/schemas/postgis/advanced.js +495 -0
  106. package/dist/adapters/postgresql/schemas/postgis/advanced.js.map +1 -0
  107. package/dist/adapters/postgresql/schemas/{postgis.d.ts → postgis/basic.d.ts} +1 -423
  108. package/dist/adapters/postgresql/schemas/postgis/basic.d.ts.map +1 -0
  109. package/dist/adapters/postgresql/schemas/{postgis.js → postgis/basic.js} +1 -486
  110. package/dist/adapters/postgresql/schemas/postgis/basic.js.map +1 -0
  111. package/dist/adapters/postgresql/schemas/postgis/index.d.ts +6 -0
  112. package/dist/adapters/postgresql/schemas/postgis/index.d.ts.map +1 -0
  113. package/dist/adapters/postgresql/schemas/postgis/index.js +6 -0
  114. package/dist/adapters/postgresql/schemas/postgis/index.js.map +1 -0
  115. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +35 -25
  116. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  117. package/dist/adapters/postgresql/schemas/schema-mgmt.js +57 -19
  118. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  119. package/dist/adapters/postgresql/schemas/stats/index.d.ts +6 -0
  120. package/dist/adapters/postgresql/schemas/stats/index.d.ts.map +1 -0
  121. package/dist/adapters/postgresql/schemas/stats/index.js +6 -0
  122. package/dist/adapters/postgresql/schemas/stats/index.js.map +1 -0
  123. package/dist/adapters/postgresql/schemas/stats/input.d.ts +260 -0
  124. package/dist/adapters/postgresql/schemas/stats/input.d.ts.map +1 -0
  125. package/dist/adapters/postgresql/schemas/{stats.js → stats/input.js} +2 -331
  126. package/dist/adapters/postgresql/schemas/stats/input.js.map +1 -0
  127. package/dist/adapters/postgresql/schemas/{stats.d.ts → stats/output.d.ts} +3 -246
  128. package/dist/adapters/postgresql/schemas/stats/output.d.ts.map +1 -0
  129. package/dist/adapters/postgresql/schemas/stats/output.js +334 -0
  130. package/dist/adapters/postgresql/schemas/stats/output.js.map +1 -0
  131. package/dist/adapters/postgresql/schemas/text-search.d.ts +18 -18
  132. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  133. package/dist/adapters/postgresql/schemas/text-search.js +12 -27
  134. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  135. package/dist/adapters/postgresql/schemas/vector.d.ts +10 -10
  136. package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
  137. package/dist/adapters/postgresql/schemas/vector.js +12 -16
  138. package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
  139. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  140. package/dist/adapters/postgresql/tools/backup/dump.js +95 -76
  141. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  142. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
  143. package/dist/adapters/postgresql/tools/backup/planning.js +345 -287
  144. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
  145. package/dist/adapters/postgresql/tools/citext/analysis.d.ts +24 -0
  146. package/dist/adapters/postgresql/tools/citext/analysis.d.ts.map +1 -0
  147. package/dist/adapters/postgresql/tools/{citext.js → citext/analysis.js} +50 -232
  148. package/dist/adapters/postgresql/tools/citext/analysis.js.map +1 -0
  149. package/dist/adapters/postgresql/tools/citext/index.d.ts +15 -0
  150. package/dist/adapters/postgresql/tools/citext/index.d.ts.map +1 -0
  151. package/dist/adapters/postgresql/tools/citext/index.js +23 -0
  152. package/dist/adapters/postgresql/tools/citext/index.js.map +1 -0
  153. package/dist/adapters/postgresql/tools/citext/setup.d.ts +16 -0
  154. package/dist/adapters/postgresql/tools/citext/setup.d.ts.map +1 -0
  155. package/dist/adapters/postgresql/tools/citext/setup.js +193 -0
  156. package/dist/adapters/postgresql/tools/citext/setup.js.map +1 -0
  157. package/dist/adapters/postgresql/tools/codemode/index.js +1 -1
  158. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
  159. package/dist/adapters/postgresql/tools/core/convenience.d.ts +12 -22
  160. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  161. package/dist/adapters/postgresql/tools/core/convenience.js +100 -210
  162. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  163. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +1 -0
  164. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -1
  165. package/dist/adapters/postgresql/tools/core/error-helpers.js +8 -1
  166. package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -1
  167. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  168. package/dist/adapters/postgresql/tools/core/health.js +124 -114
  169. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  170. package/dist/adapters/postgresql/tools/core/index.d.ts +2 -1
  171. package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -1
  172. package/dist/adapters/postgresql/tools/core/index.js +3 -2
  173. package/dist/adapters/postgresql/tools/core/index.js.map +1 -1
  174. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  175. package/dist/adapters/postgresql/tools/core/indexes.js +151 -127
  176. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  177. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  178. package/dist/adapters/postgresql/tools/core/objects.js +186 -161
  179. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  180. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  181. package/dist/adapters/postgresql/tools/core/query.js +37 -25
  182. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  183. package/dist/adapters/postgresql/tools/core/schemas.d.ts +6 -3
  184. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  185. package/dist/adapters/postgresql/tools/core/schemas.js +11 -2
  186. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  187. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  188. package/dist/adapters/postgresql/tools/core/tables.js +156 -129
  189. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  190. package/dist/adapters/postgresql/tools/core/utility.d.ts +26 -0
  191. package/dist/adapters/postgresql/tools/core/utility.d.ts.map +1 -0
  192. package/dist/adapters/postgresql/tools/core/utility.js +174 -0
  193. package/dist/adapters/postgresql/tools/core/utility.js.map +1 -0
  194. package/dist/adapters/postgresql/tools/cron.js +90 -43
  195. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  196. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts +12 -0
  197. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts.map +1 -0
  198. package/dist/adapters/postgresql/tools/introspection/analysis.js +574 -0
  199. package/dist/adapters/postgresql/tools/introspection/analysis.js.map +1 -0
  200. package/dist/adapters/postgresql/tools/introspection/graph.d.ts +55 -0
  201. package/dist/adapters/postgresql/tools/introspection/graph.d.ts.map +1 -0
  202. package/dist/adapters/postgresql/tools/introspection/graph.js +638 -0
  203. package/dist/adapters/postgresql/tools/introspection/graph.js.map +1 -0
  204. package/dist/adapters/postgresql/tools/introspection/index.d.ts +19 -0
  205. package/dist/adapters/postgresql/tools/introspection/index.d.ts.map +1 -0
  206. package/dist/adapters/postgresql/tools/introspection/index.js +36 -0
  207. package/dist/adapters/postgresql/tools/introspection/index.js.map +1 -0
  208. package/dist/adapters/postgresql/tools/introspection/migration.d.ts +15 -0
  209. package/dist/adapters/postgresql/tools/introspection/migration.d.ts.map +1 -0
  210. package/dist/adapters/postgresql/tools/introspection/migration.js +599 -0
  211. package/dist/adapters/postgresql/tools/introspection/migration.js.map +1 -0
  212. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts +20 -0
  213. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts.map +1 -0
  214. package/dist/adapters/postgresql/tools/jsonb/analytics.js +367 -0
  215. package/dist/adapters/postgresql/tools/jsonb/analytics.js.map +1 -0
  216. package/dist/adapters/postgresql/tools/jsonb/index.d.ts +4 -2
  217. package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -1
  218. package/dist/adapters/postgresql/tools/jsonb/index.js +8 -4
  219. package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -1
  220. package/dist/adapters/postgresql/tools/jsonb/read.d.ts +38 -0
  221. package/dist/adapters/postgresql/tools/jsonb/read.d.ts.map +1 -0
  222. package/dist/adapters/postgresql/tools/jsonb/{basic.js → read.js} +41 -482
  223. package/dist/adapters/postgresql/tools/jsonb/read.js.map +1 -0
  224. package/dist/adapters/postgresql/tools/jsonb/{advanced.d.ts → transform.d.ts} +1 -13
  225. package/dist/adapters/postgresql/tools/jsonb/transform.d.ts.map +1 -0
  226. package/dist/adapters/postgresql/tools/jsonb/{advanced.js → transform.js} +26 -357
  227. package/dist/adapters/postgresql/tools/jsonb/transform.js.map +1 -0
  228. package/dist/adapters/postgresql/tools/jsonb/write.d.ts +14 -0
  229. package/dist/adapters/postgresql/tools/jsonb/write.d.ts.map +1 -0
  230. package/dist/adapters/postgresql/tools/jsonb/write.js +468 -0
  231. package/dist/adapters/postgresql/tools/jsonb/write.js.map +1 -0
  232. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  233. package/dist/adapters/postgresql/tools/kcache.js +116 -51
  234. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  235. package/dist/adapters/postgresql/tools/ltree.js +346 -260
  236. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  237. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts +15 -0
  238. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts.map +1 -0
  239. package/dist/adapters/postgresql/tools/{monitoring.js → monitoring/analysis.js} +24 -359
  240. package/dist/adapters/postgresql/tools/monitoring/analysis.js.map +1 -0
  241. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts +17 -0
  242. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts.map +1 -0
  243. package/dist/adapters/postgresql/tools/monitoring/basic.js +432 -0
  244. package/dist/adapters/postgresql/tools/monitoring/basic.js.map +1 -0
  245. package/dist/adapters/postgresql/tools/monitoring/index.d.ts +16 -0
  246. package/dist/adapters/postgresql/tools/monitoring/index.d.ts.map +1 -0
  247. package/dist/adapters/postgresql/tools/monitoring/index.js +31 -0
  248. package/dist/adapters/postgresql/tools/monitoring/index.js.map +1 -0
  249. package/dist/adapters/postgresql/tools/partitioning/index.d.ts +15 -0
  250. package/dist/adapters/postgresql/tools/partitioning/index.d.ts.map +1 -0
  251. package/dist/adapters/postgresql/tools/partitioning/index.js +23 -0
  252. package/dist/adapters/postgresql/tools/partitioning/index.js.map +1 -0
  253. package/dist/adapters/postgresql/tools/partitioning/info.d.ts +11 -0
  254. package/dist/adapters/postgresql/tools/partitioning/info.d.ts.map +1 -0
  255. package/dist/adapters/postgresql/tools/partitioning/info.js +302 -0
  256. package/dist/adapters/postgresql/tools/partitioning/info.js.map +1 -0
  257. package/dist/adapters/postgresql/tools/partitioning/management.d.ts +28 -0
  258. package/dist/adapters/postgresql/tools/partitioning/management.d.ts.map +1 -0
  259. package/dist/adapters/postgresql/tools/{partitioning.js → partitioning/management.js} +48 -307
  260. package/dist/adapters/postgresql/tools/partitioning/management.js.map +1 -0
  261. package/dist/adapters/postgresql/tools/partman/helpers.d.ts +29 -0
  262. package/dist/adapters/postgresql/tools/partman/helpers.d.ts.map +1 -0
  263. package/dist/adapters/postgresql/tools/partman/helpers.js +59 -0
  264. package/dist/adapters/postgresql/tools/partman/helpers.js.map +1 -0
  265. package/dist/adapters/postgresql/tools/partman/index.d.ts +2 -1
  266. package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -1
  267. package/dist/adapters/postgresql/tools/partman/index.js +4 -2
  268. package/dist/adapters/postgresql/tools/partman/index.js.map +1 -1
  269. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts +20 -0
  270. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts.map +1 -0
  271. package/dist/adapters/postgresql/tools/partman/maintenance.js +496 -0
  272. package/dist/adapters/postgresql/tools/partman/maintenance.js.map +1 -0
  273. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  274. package/dist/adapters/postgresql/tools/partman/management.js +438 -383
  275. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  276. package/dist/adapters/postgresql/tools/partman/operations.d.ts +1 -13
  277. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  278. package/dist/adapters/postgresql/tools/partman/operations.js +171 -652
  279. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  280. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  281. package/dist/adapters/postgresql/tools/performance/analysis.js +69 -42
  282. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  283. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  284. package/dist/adapters/postgresql/tools/performance/monitoring.js +80 -55
  285. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  286. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  287. package/dist/adapters/postgresql/tools/performance/optimization.js +18 -11
  288. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  289. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  290. package/dist/adapters/postgresql/tools/performance/stats.js +439 -318
  291. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  292. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  293. package/dist/adapters/postgresql/tools/pgcrypto.js +45 -77
  294. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  295. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  296. package/dist/adapters/postgresql/tools/postgis/basic.js +121 -93
  297. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  298. package/dist/adapters/postgresql/tools/schema/index.d.ts +16 -0
  299. package/dist/adapters/postgresql/tools/schema/index.d.ts.map +1 -0
  300. package/dist/adapters/postgresql/tools/schema/index.js +32 -0
  301. package/dist/adapters/postgresql/tools/schema/index.js.map +1 -0
  302. package/dist/adapters/postgresql/tools/schema/objects.d.ts +15 -0
  303. package/dist/adapters/postgresql/tools/schema/objects.d.ts.map +1 -0
  304. package/dist/adapters/postgresql/tools/schema/objects.js +378 -0
  305. package/dist/adapters/postgresql/tools/schema/objects.js.map +1 -0
  306. package/dist/adapters/postgresql/tools/schema/views.d.ts +15 -0
  307. package/dist/adapters/postgresql/tools/schema/views.d.ts.map +1 -0
  308. package/dist/adapters/postgresql/tools/{schema.js → schema/views.js} +64 -386
  309. package/dist/adapters/postgresql/tools/schema/views.js.map +1 -0
  310. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  311. package/dist/adapters/postgresql/tools/stats/advanced.js +1 -218
  312. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  313. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts +33 -0
  314. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts.map +1 -0
  315. package/dist/adapters/postgresql/tools/stats/math-utils.js +225 -0
  316. package/dist/adapters/postgresql/tools/stats/math-utils.js.map +1 -0
  317. package/dist/adapters/postgresql/tools/text/index.d.ts +16 -0
  318. package/dist/adapters/postgresql/tools/text/index.d.ts.map +1 -0
  319. package/dist/adapters/postgresql/tools/text/index.js +33 -0
  320. package/dist/adapters/postgresql/tools/text/index.js.map +1 -0
  321. package/dist/adapters/postgresql/tools/text/matching.d.ts +17 -0
  322. package/dist/adapters/postgresql/tools/text/matching.d.ts.map +1 -0
  323. package/dist/adapters/postgresql/tools/text/matching.js +565 -0
  324. package/dist/adapters/postgresql/tools/text/matching.js.map +1 -0
  325. package/dist/adapters/postgresql/tools/text/search.d.ts +17 -0
  326. package/dist/adapters/postgresql/tools/text/search.d.ts.map +1 -0
  327. package/dist/adapters/postgresql/tools/text/search.js +653 -0
  328. package/dist/adapters/postgresql/tools/text/search.js.map +1 -0
  329. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  330. package/dist/adapters/postgresql/tools/transactions.js +11 -27
  331. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  332. package/dist/adapters/postgresql/tools/vector/{basic.d.ts → data.d.ts} +10 -8
  333. package/dist/adapters/postgresql/tools/vector/data.d.ts.map +1 -0
  334. package/dist/adapters/postgresql/tools/vector/data.js +540 -0
  335. package/dist/adapters/postgresql/tools/vector/data.js.map +1 -0
  336. package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -1
  337. package/dist/adapters/postgresql/tools/vector/index.js +6 -2
  338. package/dist/adapters/postgresql/tools/vector/index.js.map +1 -1
  339. package/dist/adapters/postgresql/tools/vector/management.d.ts +11 -0
  340. package/dist/adapters/postgresql/tools/vector/management.d.ts.map +1 -0
  341. package/dist/adapters/postgresql/tools/vector/management.js +425 -0
  342. package/dist/adapters/postgresql/tools/vector/management.js.map +1 -0
  343. package/dist/adapters/postgresql/tools/vector/query.d.ts +14 -0
  344. package/dist/adapters/postgresql/tools/vector/query.d.ts.map +1 -0
  345. package/dist/adapters/postgresql/tools/vector/query.js +767 -0
  346. package/dist/adapters/postgresql/tools/vector/query.js.map +1 -0
  347. package/dist/adapters/postgresql/tools/vector/{advanced.d.ts → search-advanced.d.ts} +4 -5
  348. package/dist/adapters/postgresql/tools/vector/search-advanced.d.ts.map +1 -0
  349. package/dist/adapters/postgresql/tools/vector/search-advanced.js +626 -0
  350. package/dist/adapters/postgresql/tools/vector/search-advanced.js.map +1 -0
  351. package/dist/auth/scopes.js +1 -1
  352. package/dist/auth/scopes.js.map +1 -1
  353. package/dist/cli/args.d.ts +3 -2
  354. package/dist/cli/args.d.ts.map +1 -1
  355. package/dist/cli/args.js +4 -3
  356. package/dist/cli/args.js.map +1 -1
  357. package/dist/cli.js +10 -4
  358. package/dist/cli.js.map +1 -1
  359. package/dist/codemode/api/aliases.d.ts +14 -0
  360. package/dist/codemode/api/aliases.d.ts.map +1 -0
  361. package/dist/codemode/api/aliases.js +503 -0
  362. package/dist/codemode/api/aliases.js.map +1 -0
  363. package/dist/codemode/api/group-api.d.ts +23 -0
  364. package/dist/codemode/api/group-api.d.ts.map +1 -0
  365. package/dist/codemode/api/group-api.js +179 -0
  366. package/dist/codemode/api/group-api.js.map +1 -0
  367. package/dist/codemode/{api.d.ts → api/index.d.ts} +4 -4
  368. package/dist/codemode/api/index.d.ts.map +1 -0
  369. package/dist/codemode/api/index.js +192 -0
  370. package/dist/codemode/api/index.js.map +1 -0
  371. package/dist/codemode/api/maps.d.ts +47 -0
  372. package/dist/codemode/api/maps.d.ts.map +1 -0
  373. package/dist/codemode/api/maps.js +523 -0
  374. package/dist/codemode/api/maps.js.map +1 -0
  375. package/dist/codemode/api/normalize.d.ts +13 -0
  376. package/dist/codemode/api/normalize.d.ts.map +1 -0
  377. package/dist/codemode/api/normalize.js +120 -0
  378. package/dist/codemode/api/normalize.js.map +1 -0
  379. package/dist/codemode/index.d.ts +1 -1
  380. package/dist/codemode/index.d.ts.map +1 -1
  381. package/dist/codemode/index.js +1 -1
  382. package/dist/codemode/index.js.map +1 -1
  383. package/dist/codemode/sandbox.d.ts.map +1 -1
  384. package/dist/codemode/sandbox.js +8 -25
  385. package/dist/codemode/sandbox.js.map +1 -1
  386. package/dist/server/McpServer.d.ts +1 -1
  387. package/dist/server/McpServer.d.ts.map +1 -1
  388. package/dist/server/McpServer.js +1 -2
  389. package/dist/server/McpServer.js.map +1 -1
  390. package/dist/transports/http.d.ts +43 -10
  391. package/dist/transports/http.d.ts.map +1 -1
  392. package/dist/transports/http.js +282 -49
  393. package/dist/transports/http.js.map +1 -1
  394. package/dist/utils/logger.d.ts +6 -6
  395. package/dist/utils/logger.d.ts.map +1 -1
  396. package/dist/utils/logger.js +18 -15
  397. package/dist/utils/logger.js.map +1 -1
  398. package/dist/utils/progress-utils.d.ts +2 -2
  399. package/dist/utils/progress-utils.d.ts.map +1 -1
  400. package/dist/utils/progress-utils.js +2 -3
  401. package/dist/utils/progress-utils.js.map +1 -1
  402. package/dist/utils/version.d.ts +9 -0
  403. package/dist/utils/version.d.ts.map +1 -0
  404. package/dist/utils/version.js +12 -0
  405. package/dist/utils/version.js.map +1 -0
  406. package/dist/utils/where-clause.d.ts +4 -0
  407. package/dist/utils/where-clause.d.ts.map +1 -1
  408. package/dist/utils/where-clause.js +16 -0
  409. package/dist/utils/where-clause.js.map +1 -1
  410. package/package.json +6 -4
  411. package/dist/adapters/postgresql/schemas/core.d.ts.map +0 -1
  412. package/dist/adapters/postgresql/schemas/core.js.map +0 -1
  413. package/dist/adapters/postgresql/schemas/extensions.d.ts +0 -852
  414. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +0 -1
  415. package/dist/adapters/postgresql/schemas/extensions.js +0 -1202
  416. package/dist/adapters/postgresql/schemas/extensions.js.map +0 -1
  417. package/dist/adapters/postgresql/schemas/jsonb.d.ts +0 -541
  418. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +0 -1
  419. package/dist/adapters/postgresql/schemas/jsonb.js +0 -814
  420. package/dist/adapters/postgresql/schemas/jsonb.js.map +0 -1
  421. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +0 -1
  422. package/dist/adapters/postgresql/schemas/postgis.js.map +0 -1
  423. package/dist/adapters/postgresql/schemas/stats.d.ts.map +0 -1
  424. package/dist/adapters/postgresql/schemas/stats.js.map +0 -1
  425. package/dist/adapters/postgresql/tools/citext.d.ts +0 -18
  426. package/dist/adapters/postgresql/tools/citext.d.ts.map +0 -1
  427. package/dist/adapters/postgresql/tools/citext.js.map +0 -1
  428. package/dist/adapters/postgresql/tools/introspection.d.ts +0 -15
  429. package/dist/adapters/postgresql/tools/introspection.d.ts.map +0 -1
  430. package/dist/adapters/postgresql/tools/introspection.js +0 -1682
  431. package/dist/adapters/postgresql/tools/introspection.js.map +0 -1
  432. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +0 -1
  433. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +0 -1
  434. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +0 -20
  435. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +0 -1
  436. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +0 -1
  437. package/dist/adapters/postgresql/tools/monitoring.d.ts +0 -13
  438. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +0 -1
  439. package/dist/adapters/postgresql/tools/monitoring.js.map +0 -1
  440. package/dist/adapters/postgresql/tools/partitioning.d.ts +0 -13
  441. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +0 -1
  442. package/dist/adapters/postgresql/tools/partitioning.js.map +0 -1
  443. package/dist/adapters/postgresql/tools/schema.d.ts +0 -13
  444. package/dist/adapters/postgresql/tools/schema.d.ts.map +0 -1
  445. package/dist/adapters/postgresql/tools/schema.js.map +0 -1
  446. package/dist/adapters/postgresql/tools/text.d.ts +0 -13
  447. package/dist/adapters/postgresql/tools/text.d.ts.map +0 -1
  448. package/dist/adapters/postgresql/tools/text.js +0 -1082
  449. package/dist/adapters/postgresql/tools/text.js.map +0 -1
  450. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +0 -1
  451. package/dist/adapters/postgresql/tools/vector/advanced.js +0 -958
  452. package/dist/adapters/postgresql/tools/vector/advanced.js.map +0 -1
  453. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +0 -1
  454. package/dist/adapters/postgresql/tools/vector/basic.js +0 -1165
  455. package/dist/adapters/postgresql/tools/vector/basic.js.map +0 -1
  456. package/dist/codemode/api.d.ts.map +0 -1
  457. package/dist/codemode/api.js +0 -1544
  458. package/dist/codemode/api.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ /**
2
+ * PostgreSQL Text & Full-Text Search Tools
3
+ *
4
+ * Text processing, FTS, trigrams, and fuzzy matching.
5
+ * 13 tools total.
6
+ */
7
+ // Full-text search tools
8
+ import { createTextSearchTool, createTextRankTool, createTextHeadlineTool, createFtsIndexTool, createTextNormalizeTool, createTextToVectorTool, createTextToQueryTool, createTextSearchConfigTool, } from "./search.js";
9
+ // Pattern matching & similarity tools
10
+ import { createTrigramSimilarityTool, createFuzzyMatchTool, createRegexpMatchTool, createLikeSearchTool, createTextSentimentTool, } from "./matching.js";
11
+ /**
12
+ * Get all text processing tools
13
+ */
14
+ export function getTextTools(adapter) {
15
+ return [
16
+ createTextSearchTool(adapter),
17
+ createTextRankTool(adapter),
18
+ createTrigramSimilarityTool(adapter),
19
+ createFuzzyMatchTool(adapter),
20
+ createRegexpMatchTool(adapter),
21
+ createLikeSearchTool(adapter),
22
+ createTextHeadlineTool(adapter),
23
+ createFtsIndexTool(adapter),
24
+ createTextNormalizeTool(adapter),
25
+ createTextSentimentTool(adapter),
26
+ createTextToVectorTool(adapter),
27
+ createTextToQueryTool(adapter),
28
+ createTextSearchConfigTool(adapter),
29
+ ];
30
+ }
31
+ // Re-export individual tool creators for direct imports
32
+ export { createTextSearchTool, createTextRankTool, createTrigramSimilarityTool, createFuzzyMatchTool, createRegexpMatchTool, createLikeSearchTool, createTextHeadlineTool, createFtsIndexTool, createTextNormalizeTool, createTextSentimentTool, createTextToVectorTool, createTextToQueryTool, createTextSearchConfigTool, };
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/text/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,yBAAyB;AACzB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,sCAAsC;AACtC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAwB;IACnD,OAAO;QACL,oBAAoB,CAAC,OAAO,CAAC;QAC7B,kBAAkB,CAAC,OAAO,CAAC;QAC3B,2BAA2B,CAAC,OAAO,CAAC;QACpC,oBAAoB,CAAC,OAAO,CAAC;QAC7B,qBAAqB,CAAC,OAAO,CAAC;QAC9B,oBAAoB,CAAC,OAAO,CAAC;QAC7B,sBAAsB,CAAC,OAAO,CAAC;QAC/B,kBAAkB,CAAC,OAAO,CAAC;QAC3B,uBAAuB,CAAC,OAAO,CAAC;QAChC,uBAAuB,CAAC,OAAO,CAAC;QAChC,sBAAsB,CAAC,OAAO,CAAC;QAC/B,qBAAqB,CAAC,OAAO,CAAC;QAC9B,0BAA0B,CAAC,OAAO,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,GAC3B,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * PostgreSQL Text Tools - Pattern Matching & Similarity
3
+ *
4
+ * Trigram similarity, fuzzy matching, regex, LIKE search, and sentiment analysis.
5
+ * 5 tools total.
6
+ */
7
+ import type { PostgresAdapter } from "../../PostgresAdapter.js";
8
+ import type { ToolDefinition } from "../../../../types/index.js";
9
+ export declare function createTrigramSimilarityTool(adapter: PostgresAdapter): ToolDefinition;
10
+ export declare function createFuzzyMatchTool(adapter: PostgresAdapter): ToolDefinition;
11
+ export declare function createRegexpMatchTool(adapter: PostgresAdapter): ToolDefinition;
12
+ export declare function createLikeSearchTool(adapter: PostgresAdapter): ToolDefinition;
13
+ /**
14
+ * Basic sentiment analysis using word matching
15
+ */
16
+ export declare function createTextSentimentTool(_adapter: PostgresAdapter): ToolDefinition;
17
+ //# sourceMappingURL=matching.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/text/matching.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AA6BpC,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,GACvB,cAAc,CAgGhB;AAMD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAoJ7E;AAMD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CAoFhB;AAMD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CA8G7E;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,eAAe,GACxB,cAAc,CAgJhB"}
@@ -0,0 +1,565 @@
1
+ /**
2
+ * PostgreSQL Text Tools - Pattern Matching & Similarity
3
+ *
4
+ * Trigram similarity, fuzzy matching, regex, LIKE search, and sentiment analysis.
5
+ * 5 tools total.
6
+ */
7
+ import { z, ZodError } from "zod";
8
+ import { readOnly } from "../../../../utils/annotations.js";
9
+ import { getToolIcons } from "../../../../utils/icons.js";
10
+ import { formatPostgresError } from "../core/error-helpers.js";
11
+ import { sanitizeIdentifier, sanitizeIdentifiers, sanitizeTableName, } from "../../../../utils/identifiers.js";
12
+ import { sanitizeWhereClause } from "../../../../utils/where-clause.js";
13
+ import { TrigramSimilaritySchema, TrigramSimilaritySchemaBase, RegexpMatchSchema, RegexpMatchSchemaBase, preprocessTextParams,
14
+ // Output schemas
15
+ TextRowsOutputSchema, TextSentimentOutputSchema, } from "../../schemas/index.js";
16
+ // =============================================================================
17
+ // pg_trigram_similarity
18
+ // =============================================================================
19
+ export function createTrigramSimilarityTool(adapter) {
20
+ return {
21
+ name: "pg_trigram_similarity",
22
+ description: "Find similar strings using pg_trgm trigram matching. Returns similarity score (0-1). Default threshold 0.3; use lower (e.g., 0.1) for partial matches.",
23
+ group: "text",
24
+ inputSchema: TrigramSimilaritySchemaBase, // Base schema for MCP visibility
25
+ outputSchema: TextRowsOutputSchema,
26
+ annotations: readOnly("Trigram Similarity"),
27
+ icons: getToolIcons("text", readOnly("Trigram Similarity")),
28
+ handler: async (params, _context) => {
29
+ try {
30
+ const parsed = TrigramSimilaritySchema.parse(params);
31
+ // Coerce numeric params: wrong-type values silently default
32
+ const rawThresh = Number(parsed.threshold);
33
+ const thresh = parsed.threshold === undefined
34
+ ? 0.3
35
+ : isNaN(rawThresh)
36
+ ? 0.3
37
+ : rawThresh;
38
+ // Coerce limit with NaN fallback (z.any() passes through strings)
39
+ const rawLimit = Number(parsed.limit);
40
+ const limitRaw = parsed.limit === undefined
41
+ ? undefined
42
+ : isNaN(rawLimit)
43
+ ? undefined
44
+ : rawLimit;
45
+ const limitVal = limitRaw === 0
46
+ ? null
47
+ : limitRaw !== undefined && limitRaw > 0
48
+ ? limitRaw
49
+ : 100;
50
+ const limitClause = limitVal !== null ? ` LIMIT ${String(limitVal)}` : "";
51
+ // The preprocessor guarantees table is set (converts tableName → table)
52
+ const resolvedTable = parsed.table ?? parsed.tableName;
53
+ if (!resolvedTable) {
54
+ return {
55
+ success: false,
56
+ error: "Either 'table' or 'tableName' is required",
57
+ };
58
+ }
59
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
60
+ if (!parsed.column || !parsed.value) {
61
+ return {
62
+ success: false,
63
+ error: "column and value are required",
64
+ };
65
+ }
66
+ const columnName = sanitizeIdentifier(parsed.column);
67
+ const selectCols = parsed.select !== undefined && parsed.select.length > 0
68
+ ? sanitizeIdentifiers(parsed.select).join(", ")
69
+ : "*";
70
+ const additionalWhere = parsed.where
71
+ ? ` AND (${sanitizeWhereClause(parsed.where)})`
72
+ : "";
73
+ const sql = `SELECT ${selectCols}, similarity(${columnName}, $1) as similarity
74
+ FROM ${tableName}
75
+ WHERE similarity(${columnName}, $1) > ${String(thresh)}${additionalWhere}
76
+ ORDER BY similarity DESC${limitClause}`;
77
+ const result = await adapter.executeQuery(sql, [parsed.value]);
78
+ const count = result.rows?.length ?? 0;
79
+ const truncated = limitVal !== null && count === limitVal;
80
+ return {
81
+ rows: result.rows,
82
+ count,
83
+ ...(truncated
84
+ ? {
85
+ truncated: true,
86
+ hint: `Results limited to ${String(limitVal)}. Use limit: 0 for all rows.`,
87
+ }
88
+ : {}),
89
+ };
90
+ }
91
+ catch (error) {
92
+ if (error instanceof ZodError) {
93
+ return {
94
+ success: false,
95
+ error: `pg_trigram_similarity validation error: ${error.issues.map((e) => e.message).join(", ")}`,
96
+ };
97
+ }
98
+ return {
99
+ success: false,
100
+ error: formatPostgresError(error, {
101
+ tool: "pg_trigram_similarity",
102
+ }),
103
+ };
104
+ }
105
+ },
106
+ };
107
+ }
108
+ // =============================================================================
109
+ // pg_fuzzy_match
110
+ // =============================================================================
111
+ export function createFuzzyMatchTool(adapter) {
112
+ // Base schema for MCP visibility (no preprocess)
113
+ const FuzzyMatchSchemaBase = z.object({
114
+ table: z.string().optional().describe("Table name"),
115
+ tableName: z.string().optional().describe("Table name (alias for table)"),
116
+ column: z.string().optional(),
117
+ value: z.string().optional(),
118
+ method: z
119
+ .string()
120
+ .optional()
121
+ .describe("Fuzzy match method (default: levenshtein). Valid: soundex, levenshtein, metaphone"),
122
+ maxDistance: z
123
+ .any()
124
+ .optional()
125
+ .describe("Max Levenshtein distance (default: 3, use 5+ for longer strings)"),
126
+ select: z.array(z.string()).optional().describe("Columns to return"),
127
+ limit: z
128
+ .any()
129
+ .optional()
130
+ .describe("Max results (default: 100 to prevent large payloads)"),
131
+ where: z.string().optional().describe("Additional WHERE clause filter"),
132
+ schema: z.string().optional().describe("Schema name (default: public)"),
133
+ });
134
+ // Full schema with preprocess for handler parsing
135
+ const FuzzyMatchSchema = z.preprocess(preprocessTextParams, FuzzyMatchSchemaBase);
136
+ return {
137
+ name: "pg_fuzzy_match",
138
+ description: "Fuzzy string matching using fuzzystrmatch extension. Levenshtein (default): returns distance; use maxDistance=5+ for longer strings. Soundex/metaphone: returns phonetic code for exact matches only.",
139
+ group: "text",
140
+ inputSchema: FuzzyMatchSchemaBase, // Base schema for MCP visibility
141
+ outputSchema: TextRowsOutputSchema,
142
+ annotations: readOnly("Fuzzy Match"),
143
+ icons: getToolIcons("text", readOnly("Fuzzy Match")),
144
+ handler: async (params, _context) => {
145
+ try {
146
+ const parsed = FuzzyMatchSchema.parse(params);
147
+ // Validate method (moved from z.enum to handler for structured error)
148
+ const VALID_METHODS = [
149
+ "levenshtein",
150
+ "soundex",
151
+ "metaphone",
152
+ ];
153
+ const rawMethod = parsed.method ?? "levenshtein";
154
+ if (!VALID_METHODS.includes(rawMethod)) {
155
+ return {
156
+ success: false,
157
+ error: `Invalid method "${rawMethod}". Valid methods: ${VALID_METHODS.join(", ")}`,
158
+ };
159
+ }
160
+ const method = rawMethod;
161
+ const rawMaxDist = Number(parsed.maxDistance);
162
+ const maxDist = parsed.maxDistance === undefined
163
+ ? 3
164
+ : isNaN(rawMaxDist)
165
+ ? 3
166
+ : rawMaxDist;
167
+ // Coerce limit with NaN fallback (z.any() passes through strings)
168
+ const rawLimit = Number(parsed.limit);
169
+ const limitRaw = parsed.limit === undefined
170
+ ? undefined
171
+ : isNaN(rawLimit)
172
+ ? undefined
173
+ : rawLimit;
174
+ const limitVal = limitRaw === 0
175
+ ? null
176
+ : limitRaw !== undefined && limitRaw > 0
177
+ ? limitRaw
178
+ : 100;
179
+ const limitClause = limitVal !== null ? ` LIMIT ${String(limitVal)}` : "";
180
+ // The preprocessor guarantees table is set (converts tableName → table)
181
+ const resolvedTable = parsed.table ?? parsed.tableName;
182
+ if (!resolvedTable) {
183
+ return {
184
+ success: false,
185
+ error: "Either 'table' or 'tableName' is required",
186
+ };
187
+ }
188
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
189
+ if (!parsed.column || !parsed.value) {
190
+ return {
191
+ success: false,
192
+ error: "column and value are required",
193
+ };
194
+ }
195
+ const columnName = sanitizeIdentifier(parsed.column);
196
+ const selectCols = parsed.select !== undefined && parsed.select.length > 0
197
+ ? sanitizeIdentifiers(parsed.select).join(", ")
198
+ : "*";
199
+ const additionalWhere = parsed.where
200
+ ? ` AND (${sanitizeWhereClause(parsed.where)})`
201
+ : "";
202
+ let sql;
203
+ if (method === "soundex") {
204
+ sql = `SELECT ${selectCols}, soundex(${columnName}) as code FROM ${tableName} WHERE soundex(${columnName}) = soundex($1)${additionalWhere}${limitClause}`;
205
+ }
206
+ else if (method === "metaphone") {
207
+ sql = `SELECT ${selectCols}, metaphone(${columnName}, 10) as code FROM ${tableName} WHERE metaphone(${columnName}, 10) = metaphone($1, 10)${additionalWhere}${limitClause}`;
208
+ }
209
+ else {
210
+ sql = `SELECT ${selectCols}, levenshtein(${columnName}, $1) as distance FROM ${tableName} WHERE levenshtein(${columnName}, $1) <= ${String(maxDist)}${additionalWhere} ORDER BY distance${limitClause}`;
211
+ }
212
+ const result = await adapter.executeQuery(sql, [parsed.value]);
213
+ const count = result.rows?.length ?? 0;
214
+ const truncated = limitVal !== null && count === limitVal;
215
+ return {
216
+ rows: result.rows,
217
+ count,
218
+ ...(truncated
219
+ ? {
220
+ truncated: true,
221
+ hint: `Results limited to ${String(limitVal)}. Use limit: 0 for all rows.`,
222
+ }
223
+ : {}),
224
+ };
225
+ }
226
+ catch (error) {
227
+ if (error instanceof ZodError) {
228
+ return {
229
+ success: false,
230
+ error: `pg_fuzzy_match validation error: ${error.issues.map((e) => e.message).join(", ")}`,
231
+ };
232
+ }
233
+ return {
234
+ success: false,
235
+ error: formatPostgresError(error, {
236
+ tool: "pg_fuzzy_match",
237
+ }),
238
+ };
239
+ }
240
+ },
241
+ };
242
+ }
243
+ // =============================================================================
244
+ // pg_regexp_match
245
+ // =============================================================================
246
+ export function createRegexpMatchTool(adapter) {
247
+ return {
248
+ name: "pg_regexp_match",
249
+ description: "Match text using POSIX regular expressions.",
250
+ group: "text",
251
+ inputSchema: RegexpMatchSchemaBase, // Base schema for MCP visibility
252
+ outputSchema: TextRowsOutputSchema,
253
+ annotations: readOnly("Regexp Match"),
254
+ icons: getToolIcons("text", readOnly("Regexp Match")),
255
+ handler: async (params, _context) => {
256
+ try {
257
+ const parsed = RegexpMatchSchema.parse(params);
258
+ // The preprocessor guarantees table is set (converts tableName → table)
259
+ const resolvedTable = parsed.table ?? parsed.tableName;
260
+ if (!resolvedTable) {
261
+ return {
262
+ success: false,
263
+ error: "Either 'table' or 'tableName' is required",
264
+ };
265
+ }
266
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
267
+ if (!parsed.column || !parsed.pattern) {
268
+ return {
269
+ success: false,
270
+ error: "column and pattern are required",
271
+ };
272
+ }
273
+ const columnName = sanitizeIdentifier(parsed.column);
274
+ const selectCols = parsed.select !== undefined && parsed.select.length > 0
275
+ ? sanitizeIdentifiers(parsed.select).join(", ")
276
+ : "*";
277
+ const op = parsed.flags?.includes("i") ? "~*" : "~";
278
+ const additionalWhere = parsed.where
279
+ ? ` AND (${sanitizeWhereClause(parsed.where)})`
280
+ : "";
281
+ // Coerce limit with NaN fallback (z.any() passes through strings)
282
+ const rawLimit = Number(parsed.limit);
283
+ const limitRaw = parsed.limit === undefined
284
+ ? undefined
285
+ : isNaN(rawLimit)
286
+ ? undefined
287
+ : rawLimit;
288
+ const limitVal = limitRaw === 0
289
+ ? null
290
+ : limitRaw !== undefined && limitRaw > 0
291
+ ? limitRaw
292
+ : 100;
293
+ const limitClause = limitVal !== null ? ` LIMIT ${String(limitVal)}` : "";
294
+ const sql = `SELECT ${selectCols} FROM ${tableName} WHERE ${columnName} ${op} $1${additionalWhere}${limitClause}`;
295
+ const result = await adapter.executeQuery(sql, [parsed.pattern]);
296
+ const count = result.rows?.length ?? 0;
297
+ const truncated = limitVal !== null && count === limitVal;
298
+ return {
299
+ rows: result.rows,
300
+ count,
301
+ ...(truncated
302
+ ? {
303
+ truncated: true,
304
+ hint: `Results limited to ${String(limitVal)}. Use limit: 0 for all rows.`,
305
+ }
306
+ : {}),
307
+ };
308
+ }
309
+ catch (error) {
310
+ if (error instanceof ZodError) {
311
+ return {
312
+ success: false,
313
+ error: `pg_regexp_match validation error: ${error.issues.map((e) => e.message).join(", ")}`,
314
+ };
315
+ }
316
+ return {
317
+ success: false,
318
+ error: formatPostgresError(error, {
319
+ tool: "pg_regexp_match",
320
+ }),
321
+ };
322
+ }
323
+ },
324
+ };
325
+ }
326
+ // =============================================================================
327
+ // pg_like_search
328
+ // =============================================================================
329
+ export function createLikeSearchTool(adapter) {
330
+ // Base schema for MCP visibility (no preprocess)
331
+ const LikeSearchSchemaBase = z.object({
332
+ table: z.string().optional().describe("Table name"),
333
+ tableName: z.string().optional().describe("Table name (alias for table)"),
334
+ column: z.string().optional(),
335
+ pattern: z.string().optional(),
336
+ caseSensitive: z
337
+ .boolean()
338
+ .optional()
339
+ .describe("Use case-sensitive LIKE (default: false, uses ILIKE)"),
340
+ select: z.array(z.string()).optional(),
341
+ limit: z
342
+ .any()
343
+ .optional()
344
+ .describe("Max results (default: 100 to prevent large payloads)"),
345
+ where: z.string().optional().describe("Additional WHERE clause filter"),
346
+ schema: z.string().optional().describe("Schema name (default: public)"),
347
+ });
348
+ // Full schema with preprocess for handler parsing
349
+ const LikeSearchSchema = z.preprocess(preprocessTextParams, LikeSearchSchemaBase);
350
+ return {
351
+ name: "pg_like_search",
352
+ description: "Search text using LIKE patterns. Case-insensitive (ILIKE) by default.",
353
+ group: "text",
354
+ inputSchema: LikeSearchSchemaBase, // Base schema for MCP visibility
355
+ outputSchema: TextRowsOutputSchema,
356
+ annotations: readOnly("LIKE Search"),
357
+ icons: getToolIcons("text", readOnly("LIKE Search")),
358
+ handler: async (params, _context) => {
359
+ try {
360
+ const parsed = LikeSearchSchema.parse(params);
361
+ // The preprocessor guarantees table is set (converts tableName → table)
362
+ const resolvedTable = parsed.table ?? parsed.tableName;
363
+ if (!resolvedTable) {
364
+ return {
365
+ success: false,
366
+ error: "Either 'table' or 'tableName' is required",
367
+ };
368
+ }
369
+ const tableName = sanitizeTableName(resolvedTable, parsed.schema);
370
+ if (!parsed.column || !parsed.pattern) {
371
+ return {
372
+ success: false,
373
+ error: "column and pattern are required",
374
+ };
375
+ }
376
+ const columnName = sanitizeIdentifier(parsed.column);
377
+ const selectCols = parsed.select !== undefined && parsed.select.length > 0
378
+ ? sanitizeIdentifiers(parsed.select).join(", ")
379
+ : "*";
380
+ const op = parsed.caseSensitive === true ? "LIKE" : "ILIKE";
381
+ const additionalWhere = parsed.where
382
+ ? ` AND (${sanitizeWhereClause(parsed.where)})`
383
+ : "";
384
+ // Coerce limit with NaN fallback (z.any() passes through strings)
385
+ const rawLimit = Number(parsed.limit);
386
+ const limitRaw = parsed.limit === undefined
387
+ ? undefined
388
+ : isNaN(rawLimit)
389
+ ? undefined
390
+ : rawLimit;
391
+ const limitVal = limitRaw === 0
392
+ ? null
393
+ : limitRaw !== undefined && limitRaw > 0
394
+ ? limitRaw
395
+ : 100;
396
+ const limitClause = limitVal !== null ? ` LIMIT ${String(limitVal)}` : "";
397
+ const sql = `SELECT ${selectCols} FROM ${tableName} WHERE ${columnName} ${op} $1${additionalWhere}${limitClause}`;
398
+ const result = await adapter.executeQuery(sql, [parsed.pattern]);
399
+ const count = result.rows?.length ?? 0;
400
+ const truncated = limitVal !== null && count === limitVal;
401
+ return {
402
+ rows: result.rows,
403
+ count,
404
+ ...(truncated
405
+ ? {
406
+ truncated: true,
407
+ hint: `Results limited to ${String(limitVal)}. Use limit: 0 for all rows.`,
408
+ }
409
+ : {}),
410
+ };
411
+ }
412
+ catch (error) {
413
+ if (error instanceof ZodError) {
414
+ return {
415
+ success: false,
416
+ error: `pg_like_search validation error: ${error.issues.map((e) => e.message).join(", ")}`,
417
+ };
418
+ }
419
+ return {
420
+ success: false,
421
+ error: formatPostgresError(error, {
422
+ tool: "pg_like_search",
423
+ }),
424
+ };
425
+ }
426
+ },
427
+ };
428
+ }
429
+ // =============================================================================
430
+ // pg_text_sentiment
431
+ // =============================================================================
432
+ /**
433
+ * Basic sentiment analysis using word matching
434
+ */
435
+ export function createTextSentimentTool(_adapter) {
436
+ const SentimentSchemaBase = z.object({
437
+ text: z.string().optional().describe("Text to analyze"),
438
+ returnWords: z
439
+ .boolean()
440
+ .optional()
441
+ .describe("Return matched sentiment words"),
442
+ });
443
+ const SentimentSchema = z.object({
444
+ text: z.string().describe("Text to analyze"),
445
+ returnWords: z
446
+ .boolean()
447
+ .optional()
448
+ .describe("Return matched sentiment words"),
449
+ });
450
+ return {
451
+ name: "pg_text_sentiment",
452
+ description: "Perform basic sentiment analysis on text using keyword matching.",
453
+ group: "text",
454
+ inputSchema: SentimentSchemaBase,
455
+ outputSchema: TextSentimentOutputSchema,
456
+ annotations: readOnly("Text Sentiment"),
457
+ icons: getToolIcons("text", readOnly("Text Sentiment")),
458
+ handler: (params, _context) => {
459
+ try {
460
+ const parsed = SentimentSchema.parse(params ?? {});
461
+ const text = parsed.text.toLowerCase();
462
+ const positiveWords = [
463
+ "good",
464
+ "great",
465
+ "excellent",
466
+ "amazing",
467
+ "wonderful",
468
+ "fantastic",
469
+ "love",
470
+ "happy",
471
+ "positive",
472
+ "best",
473
+ "beautiful",
474
+ "awesome",
475
+ "perfect",
476
+ "nice",
477
+ "helpful",
478
+ "thank",
479
+ "thanks",
480
+ "pleased",
481
+ "satisfied",
482
+ "recommend",
483
+ "enjoy",
484
+ "impressive",
485
+ "brilliant",
486
+ ];
487
+ const negativeWords = [
488
+ "bad",
489
+ "terrible",
490
+ "awful",
491
+ "horrible",
492
+ "worst",
493
+ "hate",
494
+ "angry",
495
+ "disappointed",
496
+ "poor",
497
+ "wrong",
498
+ "problem",
499
+ "issue",
500
+ "fail",
501
+ "failed",
502
+ "broken",
503
+ "useless",
504
+ "waste",
505
+ "frustrating",
506
+ "annoyed",
507
+ "unhappy",
508
+ "negative",
509
+ "complaint",
510
+ "slow",
511
+ ];
512
+ const words = text.split(/\s+/);
513
+ const matchedPositive = words
514
+ .map((w) => w.replace(/[^a-z]/g, ""))
515
+ .filter((w) => positiveWords.includes(w));
516
+ const matchedNegative = words
517
+ .map((w) => w.replace(/[^a-z]/g, ""))
518
+ .filter((w) => negativeWords.includes(w));
519
+ const positiveScore = matchedPositive.length;
520
+ const negativeScore = matchedNegative.length;
521
+ const totalScore = positiveScore - negativeScore;
522
+ let sentiment;
523
+ if (totalScore > 2)
524
+ sentiment = "very_positive";
525
+ else if (totalScore > 0)
526
+ sentiment = "positive";
527
+ else if (totalScore < -2)
528
+ sentiment = "very_negative";
529
+ else if (totalScore < 0)
530
+ sentiment = "negative";
531
+ else
532
+ sentiment = "neutral";
533
+ const result = {
534
+ sentiment,
535
+ score: totalScore,
536
+ positiveCount: positiveScore,
537
+ negativeCount: negativeScore,
538
+ confidence: positiveScore + negativeScore > 3
539
+ ? "high"
540
+ : positiveScore + negativeScore > 1
541
+ ? "medium"
542
+ : "low",
543
+ };
544
+ if (parsed.returnWords) {
545
+ result.matchedPositive = matchedPositive;
546
+ result.matchedNegative = matchedNegative;
547
+ }
548
+ return Promise.resolve(result);
549
+ }
550
+ catch (error) {
551
+ if (error instanceof ZodError) {
552
+ return Promise.resolve({
553
+ success: false,
554
+ error: `pg_text_sentiment validation error: ${error.issues.map((e) => e.message).join(", ")}`,
555
+ });
556
+ }
557
+ return Promise.resolve({
558
+ success: false,
559
+ error: error instanceof Error ? error.message : "Unknown error occurred",
560
+ });
561
+ }
562
+ },
563
+ };
564
+ }
565
+ //# sourceMappingURL=matching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matching.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/text/matching.ts"],"names":[],"mappings":"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"}