@neverinfamous/postgres-mcp 1.3.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 (548) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +244 -129
  3. package/dist/__tests__/benchmarks/codemode.bench.d.ts +10 -0
  4. package/dist/__tests__/benchmarks/codemode.bench.d.ts.map +1 -0
  5. package/dist/__tests__/benchmarks/codemode.bench.js +159 -0
  6. package/dist/__tests__/benchmarks/codemode.bench.js.map +1 -0
  7. package/dist/__tests__/benchmarks/connection-pool.bench.d.ts +10 -0
  8. package/dist/__tests__/benchmarks/connection-pool.bench.d.ts.map +1 -0
  9. package/dist/__tests__/benchmarks/connection-pool.bench.js +123 -0
  10. package/dist/__tests__/benchmarks/connection-pool.bench.js.map +1 -0
  11. package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts +11 -0
  12. package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts.map +1 -0
  13. package/dist/__tests__/benchmarks/handler-dispatch.bench.js +199 -0
  14. package/dist/__tests__/benchmarks/handler-dispatch.bench.js.map +1 -0
  15. package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts +15 -0
  16. package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts.map +1 -0
  17. package/dist/__tests__/benchmarks/logger-sanitization.bench.js +155 -0
  18. package/dist/__tests__/benchmarks/logger-sanitization.bench.js.map +1 -0
  19. package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts +10 -0
  20. package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts.map +1 -0
  21. package/dist/__tests__/benchmarks/resource-prompts.bench.js +181 -0
  22. package/dist/__tests__/benchmarks/resource-prompts.bench.js.map +1 -0
  23. package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts +11 -0
  24. package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts.map +1 -0
  25. package/dist/__tests__/benchmarks/schema-parsing.bench.js +209 -0
  26. package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -0
  27. package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts +9 -0
  28. package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts.map +1 -0
  29. package/dist/__tests__/benchmarks/tool-filtering.bench.js +83 -0
  30. package/dist/__tests__/benchmarks/tool-filtering.bench.js.map +1 -0
  31. package/dist/__tests__/benchmarks/transport-auth.bench.d.ts +10 -0
  32. package/dist/__tests__/benchmarks/transport-auth.bench.d.ts.map +1 -0
  33. package/dist/__tests__/benchmarks/transport-auth.bench.js +128 -0
  34. package/dist/__tests__/benchmarks/transport-auth.bench.js.map +1 -0
  35. package/dist/__tests__/benchmarks/utilities.bench.d.ts +10 -0
  36. package/dist/__tests__/benchmarks/utilities.bench.d.ts.map +1 -0
  37. package/dist/__tests__/benchmarks/utilities.bench.js +164 -0
  38. package/dist/__tests__/benchmarks/utilities.bench.js.map +1 -0
  39. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  40. package/dist/__tests__/mocks/adapter.js +2 -1
  41. package/dist/__tests__/mocks/adapter.js.map +1 -1
  42. package/dist/adapters/DatabaseAdapter.d.ts +6 -1
  43. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  44. package/dist/adapters/DatabaseAdapter.js +23 -7
  45. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  46. package/dist/adapters/postgresql/PostgresAdapter.d.ts +5 -22
  47. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  48. package/dist/adapters/postgresql/PostgresAdapter.js +30 -519
  49. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  50. package/dist/adapters/postgresql/prompts/index.js +1 -1
  51. package/dist/adapters/postgresql/prompts/index.js.map +1 -1
  52. package/dist/adapters/postgresql/resources/index.d.ts +1 -1
  53. package/dist/adapters/postgresql/resources/index.js +3 -3
  54. package/dist/adapters/postgresql/resources/index.js.map +1 -1
  55. package/dist/adapters/postgresql/schema-operations.d.ts +71 -0
  56. package/dist/adapters/postgresql/schema-operations.d.ts.map +1 -0
  57. package/dist/adapters/postgresql/schema-operations.js +561 -0
  58. package/dist/adapters/postgresql/schema-operations.js.map +1 -0
  59. package/dist/adapters/postgresql/schemas/admin.d.ts +4 -4
  60. package/dist/adapters/postgresql/schemas/admin.js +4 -4
  61. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  62. package/dist/adapters/postgresql/schemas/backup.d.ts +39 -25
  63. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  64. package/dist/adapters/postgresql/schemas/backup.js +54 -25
  65. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  66. package/dist/adapters/postgresql/schemas/core/index.d.ts +6 -0
  67. package/dist/adapters/postgresql/schemas/core/index.d.ts.map +1 -0
  68. package/dist/adapters/postgresql/schemas/core/index.js +6 -0
  69. package/dist/adapters/postgresql/schemas/core/index.js.map +1 -0
  70. package/dist/adapters/postgresql/schemas/{core.d.ts → core/queries.d.ts} +12 -167
  71. package/dist/adapters/postgresql/schemas/core/queries.d.ts.map +1 -0
  72. package/dist/adapters/postgresql/schemas/{core.js → core/queries.js} +5 -213
  73. package/dist/adapters/postgresql/schemas/core/queries.js.map +1 -0
  74. package/dist/adapters/postgresql/schemas/core/transactions.d.ts +149 -0
  75. package/dist/adapters/postgresql/schemas/core/transactions.d.ts.map +1 -0
  76. package/dist/adapters/postgresql/schemas/core/transactions.js +239 -0
  77. package/dist/adapters/postgresql/schemas/core/transactions.js.map +1 -0
  78. package/dist/adapters/postgresql/schemas/cron.d.ts +12 -12
  79. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  80. package/dist/adapters/postgresql/schemas/cron.js +38 -10
  81. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  82. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts +222 -0
  83. package/dist/adapters/postgresql/schemas/extensions/citext.d.ts.map +1 -0
  84. package/dist/adapters/postgresql/schemas/extensions/citext.js +306 -0
  85. package/dist/adapters/postgresql/schemas/extensions/citext.js.map +1 -0
  86. package/dist/adapters/postgresql/schemas/extensions/index.d.ts +15 -0
  87. package/dist/adapters/postgresql/schemas/extensions/index.d.ts.map +1 -0
  88. package/dist/adapters/postgresql/schemas/extensions/index.js +20 -0
  89. package/dist/adapters/postgresql/schemas/extensions/index.js.map +1 -0
  90. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts +164 -0
  91. package/dist/adapters/postgresql/schemas/extensions/kcache.d.ts.map +1 -0
  92. package/dist/adapters/postgresql/schemas/extensions/kcache.js +225 -0
  93. package/dist/adapters/postgresql/schemas/extensions/kcache.js.map +1 -0
  94. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts +253 -0
  95. package/dist/adapters/postgresql/schemas/extensions/ltree.d.ts.map +1 -0
  96. package/dist/adapters/postgresql/schemas/extensions/ltree.js +430 -0
  97. package/dist/adapters/postgresql/schemas/extensions/ltree.js.map +1 -0
  98. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts +251 -0
  99. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.d.ts.map +1 -0
  100. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js +294 -0
  101. package/dist/adapters/postgresql/schemas/extensions/pgcrypto.js.map +1 -0
  102. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts +10 -0
  103. package/dist/adapters/postgresql/schemas/extensions/shared.d.ts.map +1 -0
  104. package/dist/adapters/postgresql/schemas/extensions/shared.js +15 -0
  105. package/dist/adapters/postgresql/schemas/extensions/shared.js.map +1 -0
  106. package/dist/adapters/postgresql/schemas/index.d.ts +8 -7
  107. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  108. package/dist/adapters/postgresql/schemas/index.js +16 -10
  109. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  110. package/dist/adapters/postgresql/schemas/introspection.d.ts +445 -0
  111. package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -0
  112. package/dist/adapters/postgresql/schemas/introspection.js +481 -0
  113. package/dist/adapters/postgresql/schemas/introspection.js.map +1 -0
  114. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts +270 -0
  115. package/dist/adapters/postgresql/schemas/jsonb/advanced.d.ts.map +1 -0
  116. package/dist/adapters/postgresql/schemas/jsonb/advanced.js +371 -0
  117. package/dist/adapters/postgresql/schemas/jsonb/advanced.js.map +1 -0
  118. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts +283 -0
  119. package/dist/adapters/postgresql/schemas/jsonb/basic.d.ts.map +1 -0
  120. package/dist/adapters/postgresql/schemas/jsonb/basic.js +456 -0
  121. package/dist/adapters/postgresql/schemas/jsonb/basic.js.map +1 -0
  122. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts +6 -0
  123. package/dist/adapters/postgresql/schemas/jsonb/index.d.ts.map +1 -0
  124. package/dist/adapters/postgresql/schemas/jsonb/index.js +6 -0
  125. package/dist/adapters/postgresql/schemas/jsonb/index.js.map +1 -0
  126. package/dist/adapters/postgresql/schemas/monitoring.d.ts +45 -29
  127. package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
  128. package/dist/adapters/postgresql/schemas/monitoring.js +51 -18
  129. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  130. package/dist/adapters/postgresql/schemas/partitioning.d.ts +28 -32
  131. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  132. package/dist/adapters/postgresql/schemas/partitioning.js +82 -53
  133. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  134. package/dist/adapters/postgresql/schemas/partman.d.ts +78 -7
  135. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
  136. package/dist/adapters/postgresql/schemas/partman.js +54 -41
  137. package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
  138. package/dist/adapters/postgresql/schemas/performance.d.ts +37 -19
  139. package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
  140. package/dist/adapters/postgresql/schemas/performance.js +54 -12
  141. package/dist/adapters/postgresql/schemas/performance.js.map +1 -1
  142. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts +429 -0
  143. package/dist/adapters/postgresql/schemas/postgis/advanced.d.ts.map +1 -0
  144. package/dist/adapters/postgresql/schemas/{postgis.js → postgis/advanced.js} +4 -467
  145. package/dist/adapters/postgresql/schemas/postgis/advanced.js.map +1 -0
  146. package/dist/adapters/postgresql/schemas/{postgis.d.ts → postgis/basic.d.ts} +1 -423
  147. package/dist/adapters/postgresql/schemas/postgis/basic.d.ts.map +1 -0
  148. package/dist/adapters/postgresql/schemas/postgis/basic.js +493 -0
  149. package/dist/adapters/postgresql/schemas/postgis/basic.js.map +1 -0
  150. package/dist/adapters/postgresql/schemas/postgis/index.d.ts +6 -0
  151. package/dist/adapters/postgresql/schemas/postgis/index.d.ts.map +1 -0
  152. package/dist/adapters/postgresql/schemas/postgis/index.js +6 -0
  153. package/dist/adapters/postgresql/schemas/postgis/index.js.map +1 -0
  154. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +50 -32
  155. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  156. package/dist/adapters/postgresql/schemas/schema-mgmt.js +93 -26
  157. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  158. package/dist/adapters/postgresql/schemas/stats/index.d.ts +6 -0
  159. package/dist/adapters/postgresql/schemas/stats/index.d.ts.map +1 -0
  160. package/dist/adapters/postgresql/schemas/stats/index.js +6 -0
  161. package/dist/adapters/postgresql/schemas/stats/index.js.map +1 -0
  162. package/dist/adapters/postgresql/schemas/stats/input.d.ts +260 -0
  163. package/dist/adapters/postgresql/schemas/stats/input.d.ts.map +1 -0
  164. package/dist/adapters/postgresql/schemas/{stats.js → stats/input.js} +2 -331
  165. package/dist/adapters/postgresql/schemas/stats/input.js.map +1 -0
  166. package/dist/adapters/postgresql/schemas/{stats.d.ts → stats/output.d.ts} +3 -246
  167. package/dist/adapters/postgresql/schemas/stats/output.d.ts.map +1 -0
  168. package/dist/adapters/postgresql/schemas/stats/output.js +334 -0
  169. package/dist/adapters/postgresql/schemas/stats/output.js.map +1 -0
  170. package/dist/adapters/postgresql/schemas/text-search.d.ts +44 -32
  171. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  172. package/dist/adapters/postgresql/schemas/text-search.js +53 -36
  173. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  174. package/dist/adapters/postgresql/schemas/vector.d.ts +10 -10
  175. package/dist/adapters/postgresql/schemas/vector.d.ts.map +1 -1
  176. package/dist/adapters/postgresql/schemas/vector.js +12 -16
  177. package/dist/adapters/postgresql/schemas/vector.js.map +1 -1
  178. package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
  179. package/dist/adapters/postgresql/tools/admin.js +82 -67
  180. package/dist/adapters/postgresql/tools/admin.js.map +1 -1
  181. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  182. package/dist/adapters/postgresql/tools/backup/dump.js +119 -97
  183. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  184. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
  185. package/dist/adapters/postgresql/tools/backup/planning.js +345 -287
  186. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
  187. package/dist/adapters/postgresql/tools/citext/analysis.d.ts +24 -0
  188. package/dist/adapters/postgresql/tools/citext/analysis.d.ts.map +1 -0
  189. package/dist/adapters/postgresql/tools/{citext.js → citext/analysis.js} +131 -281
  190. package/dist/adapters/postgresql/tools/citext/analysis.js.map +1 -0
  191. package/dist/adapters/postgresql/tools/citext/index.d.ts +15 -0
  192. package/dist/adapters/postgresql/tools/citext/index.d.ts.map +1 -0
  193. package/dist/adapters/postgresql/tools/citext/index.js +23 -0
  194. package/dist/adapters/postgresql/tools/citext/index.js.map +1 -0
  195. package/dist/adapters/postgresql/tools/citext/setup.d.ts +16 -0
  196. package/dist/adapters/postgresql/tools/citext/setup.d.ts.map +1 -0
  197. package/dist/adapters/postgresql/tools/citext/setup.js +193 -0
  198. package/dist/adapters/postgresql/tools/citext/setup.js.map +1 -0
  199. package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -1
  200. package/dist/adapters/postgresql/tools/codemode/index.js +3 -12
  201. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
  202. package/dist/adapters/postgresql/tools/core/convenience.d.ts +12 -22
  203. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  204. package/dist/adapters/postgresql/tools/core/convenience.js +116 -211
  205. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  206. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +1 -0
  207. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -1
  208. package/dist/adapters/postgresql/tools/core/error-helpers.js +8 -1
  209. package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -1
  210. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  211. package/dist/adapters/postgresql/tools/core/health.js +124 -114
  212. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  213. package/dist/adapters/postgresql/tools/core/index.d.ts +2 -1
  214. package/dist/adapters/postgresql/tools/core/index.d.ts.map +1 -1
  215. package/dist/adapters/postgresql/tools/core/index.js +3 -2
  216. package/dist/adapters/postgresql/tools/core/index.js.map +1 -1
  217. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  218. package/dist/adapters/postgresql/tools/core/indexes.js +153 -128
  219. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  220. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  221. package/dist/adapters/postgresql/tools/core/objects.js +186 -161
  222. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  223. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  224. package/dist/adapters/postgresql/tools/core/query.js +37 -25
  225. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  226. package/dist/adapters/postgresql/tools/core/schemas.d.ts +6 -3
  227. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  228. package/dist/adapters/postgresql/tools/core/schemas.js +11 -2
  229. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  230. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  231. package/dist/adapters/postgresql/tools/core/tables.js +156 -129
  232. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  233. package/dist/adapters/postgresql/tools/core/utility.d.ts +26 -0
  234. package/dist/adapters/postgresql/tools/core/utility.d.ts.map +1 -0
  235. package/dist/adapters/postgresql/tools/core/utility.js +174 -0
  236. package/dist/adapters/postgresql/tools/core/utility.js.map +1 -0
  237. package/dist/adapters/postgresql/tools/cron.js +149 -70
  238. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  239. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts +12 -0
  240. package/dist/adapters/postgresql/tools/introspection/analysis.d.ts.map +1 -0
  241. package/dist/adapters/postgresql/tools/introspection/analysis.js +574 -0
  242. package/dist/adapters/postgresql/tools/introspection/analysis.js.map +1 -0
  243. package/dist/adapters/postgresql/tools/introspection/graph.d.ts +55 -0
  244. package/dist/adapters/postgresql/tools/introspection/graph.d.ts.map +1 -0
  245. package/dist/adapters/postgresql/tools/introspection/graph.js +638 -0
  246. package/dist/adapters/postgresql/tools/introspection/graph.js.map +1 -0
  247. package/dist/adapters/postgresql/tools/introspection/index.d.ts +19 -0
  248. package/dist/adapters/postgresql/tools/introspection/index.d.ts.map +1 -0
  249. package/dist/adapters/postgresql/tools/introspection/index.js +36 -0
  250. package/dist/adapters/postgresql/tools/introspection/index.js.map +1 -0
  251. package/dist/adapters/postgresql/tools/introspection/migration.d.ts +15 -0
  252. package/dist/adapters/postgresql/tools/introspection/migration.d.ts.map +1 -0
  253. package/dist/adapters/postgresql/tools/introspection/migration.js +599 -0
  254. package/dist/adapters/postgresql/tools/introspection/migration.js.map +1 -0
  255. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts +20 -0
  256. package/dist/adapters/postgresql/tools/jsonb/analytics.d.ts.map +1 -0
  257. package/dist/adapters/postgresql/tools/jsonb/analytics.js +367 -0
  258. package/dist/adapters/postgresql/tools/jsonb/analytics.js.map +1 -0
  259. package/dist/adapters/postgresql/tools/jsonb/index.d.ts +4 -2
  260. package/dist/adapters/postgresql/tools/jsonb/index.d.ts.map +1 -1
  261. package/dist/adapters/postgresql/tools/jsonb/index.js +8 -4
  262. package/dist/adapters/postgresql/tools/jsonb/index.js.map +1 -1
  263. package/dist/adapters/postgresql/tools/jsonb/read.d.ts +38 -0
  264. package/dist/adapters/postgresql/tools/jsonb/read.d.ts.map +1 -0
  265. package/dist/adapters/postgresql/tools/jsonb/read.js +543 -0
  266. package/dist/adapters/postgresql/tools/jsonb/read.js.map +1 -0
  267. package/dist/adapters/postgresql/tools/jsonb/{advanced.d.ts → transform.d.ts} +1 -13
  268. package/dist/adapters/postgresql/tools/jsonb/transform.d.ts.map +1 -0
  269. package/dist/adapters/postgresql/tools/jsonb/{advanced.js → transform.js} +39 -361
  270. package/dist/adapters/postgresql/tools/jsonb/transform.js.map +1 -0
  271. package/dist/adapters/postgresql/tools/jsonb/write.d.ts +14 -0
  272. package/dist/adapters/postgresql/tools/jsonb/write.d.ts.map +1 -0
  273. package/dist/adapters/postgresql/tools/jsonb/write.js +468 -0
  274. package/dist/adapters/postgresql/tools/jsonb/write.js.map +1 -0
  275. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  276. package/dist/adapters/postgresql/tools/kcache.js +116 -51
  277. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  278. package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -1
  279. package/dist/adapters/postgresql/tools/ltree.js +358 -259
  280. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  281. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts +15 -0
  282. package/dist/adapters/postgresql/tools/monitoring/analysis.d.ts.map +1 -0
  283. package/dist/adapters/postgresql/tools/{monitoring.js → monitoring/analysis.js} +37 -361
  284. package/dist/adapters/postgresql/tools/monitoring/analysis.js.map +1 -0
  285. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts +17 -0
  286. package/dist/adapters/postgresql/tools/monitoring/basic.d.ts.map +1 -0
  287. package/dist/adapters/postgresql/tools/monitoring/basic.js +432 -0
  288. package/dist/adapters/postgresql/tools/monitoring/basic.js.map +1 -0
  289. package/dist/adapters/postgresql/tools/monitoring/index.d.ts +16 -0
  290. package/dist/adapters/postgresql/tools/monitoring/index.d.ts.map +1 -0
  291. package/dist/adapters/postgresql/tools/monitoring/index.js +31 -0
  292. package/dist/adapters/postgresql/tools/monitoring/index.js.map +1 -0
  293. package/dist/adapters/postgresql/tools/partitioning/index.d.ts +15 -0
  294. package/dist/adapters/postgresql/tools/partitioning/index.d.ts.map +1 -0
  295. package/dist/adapters/postgresql/tools/partitioning/index.js +23 -0
  296. package/dist/adapters/postgresql/tools/partitioning/index.js.map +1 -0
  297. package/dist/adapters/postgresql/tools/partitioning/info.d.ts +11 -0
  298. package/dist/adapters/postgresql/tools/partitioning/info.d.ts.map +1 -0
  299. package/dist/adapters/postgresql/tools/partitioning/info.js +302 -0
  300. package/dist/adapters/postgresql/tools/partitioning/info.js.map +1 -0
  301. package/dist/adapters/postgresql/tools/partitioning/management.d.ts +28 -0
  302. package/dist/adapters/postgresql/tools/partitioning/management.d.ts.map +1 -0
  303. package/dist/adapters/postgresql/tools/{partitioning.js → partitioning/management.js} +48 -307
  304. package/dist/adapters/postgresql/tools/partitioning/management.js.map +1 -0
  305. package/dist/adapters/postgresql/tools/partman/helpers.d.ts +29 -0
  306. package/dist/adapters/postgresql/tools/partman/helpers.d.ts.map +1 -0
  307. package/dist/adapters/postgresql/tools/partman/helpers.js +59 -0
  308. package/dist/adapters/postgresql/tools/partman/helpers.js.map +1 -0
  309. package/dist/adapters/postgresql/tools/partman/index.d.ts +2 -1
  310. package/dist/adapters/postgresql/tools/partman/index.d.ts.map +1 -1
  311. package/dist/adapters/postgresql/tools/partman/index.js +4 -2
  312. package/dist/adapters/postgresql/tools/partman/index.js.map +1 -1
  313. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts +20 -0
  314. package/dist/adapters/postgresql/tools/partman/maintenance.d.ts.map +1 -0
  315. package/dist/adapters/postgresql/tools/partman/maintenance.js +496 -0
  316. package/dist/adapters/postgresql/tools/partman/maintenance.js.map +1 -0
  317. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  318. package/dist/adapters/postgresql/tools/partman/management.js +452 -417
  319. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  320. package/dist/adapters/postgresql/tools/partman/operations.d.ts +1 -13
  321. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  322. package/dist/adapters/postgresql/tools/partman/operations.js +173 -654
  323. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  324. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  325. package/dist/adapters/postgresql/tools/performance/analysis.js +79 -45
  326. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  327. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  328. package/dist/adapters/postgresql/tools/performance/monitoring.js +83 -55
  329. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  330. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  331. package/dist/adapters/postgresql/tools/performance/optimization.js +18 -11
  332. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  333. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  334. package/dist/adapters/postgresql/tools/performance/stats.js +441 -286
  335. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  336. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  337. package/dist/adapters/postgresql/tools/pgcrypto.js +67 -79
  338. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  339. package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -1
  340. package/dist/adapters/postgresql/tools/postgis/advanced.js +30 -25
  341. package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -1
  342. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  343. package/dist/adapters/postgresql/tools/postgis/basic.js +137 -100
  344. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  345. package/dist/adapters/postgresql/tools/schema/index.d.ts +16 -0
  346. package/dist/adapters/postgresql/tools/schema/index.d.ts.map +1 -0
  347. package/dist/adapters/postgresql/tools/schema/index.js +32 -0
  348. package/dist/adapters/postgresql/tools/schema/index.js.map +1 -0
  349. package/dist/adapters/postgresql/tools/schema/objects.d.ts +15 -0
  350. package/dist/adapters/postgresql/tools/schema/objects.d.ts.map +1 -0
  351. package/dist/adapters/postgresql/tools/schema/objects.js +378 -0
  352. package/dist/adapters/postgresql/tools/schema/objects.js.map +1 -0
  353. package/dist/adapters/postgresql/tools/schema/views.d.ts +15 -0
  354. package/dist/adapters/postgresql/tools/schema/views.d.ts.map +1 -0
  355. package/dist/adapters/postgresql/tools/{schema.js → schema/views.js} +91 -339
  356. package/dist/adapters/postgresql/tools/schema/views.js.map +1 -0
  357. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  358. package/dist/adapters/postgresql/tools/stats/advanced.js +40 -235
  359. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  360. package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -1
  361. package/dist/adapters/postgresql/tools/stats/basic.js +45 -30
  362. package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -1
  363. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts +33 -0
  364. package/dist/adapters/postgresql/tools/stats/math-utils.d.ts.map +1 -0
  365. package/dist/adapters/postgresql/tools/stats/math-utils.js +225 -0
  366. package/dist/adapters/postgresql/tools/stats/math-utils.js.map +1 -0
  367. package/dist/adapters/postgresql/tools/text/index.d.ts +16 -0
  368. package/dist/adapters/postgresql/tools/text/index.d.ts.map +1 -0
  369. package/dist/adapters/postgresql/tools/text/index.js +33 -0
  370. package/dist/adapters/postgresql/tools/text/index.js.map +1 -0
  371. package/dist/adapters/postgresql/tools/text/matching.d.ts +17 -0
  372. package/dist/adapters/postgresql/tools/text/matching.d.ts.map +1 -0
  373. package/dist/adapters/postgresql/tools/text/matching.js +565 -0
  374. package/dist/adapters/postgresql/tools/text/matching.js.map +1 -0
  375. package/dist/adapters/postgresql/tools/text/search.d.ts +17 -0
  376. package/dist/adapters/postgresql/tools/text/search.d.ts.map +1 -0
  377. package/dist/adapters/postgresql/tools/text/search.js +653 -0
  378. package/dist/adapters/postgresql/tools/text/search.js.map +1 -0
  379. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  380. package/dist/adapters/postgresql/tools/transactions.js +11 -27
  381. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  382. package/dist/adapters/postgresql/tools/vector/{basic.d.ts → data.d.ts} +10 -8
  383. package/dist/adapters/postgresql/tools/vector/data.d.ts.map +1 -0
  384. package/dist/adapters/postgresql/tools/vector/data.js +540 -0
  385. package/dist/adapters/postgresql/tools/vector/data.js.map +1 -0
  386. package/dist/adapters/postgresql/tools/vector/index.d.ts.map +1 -1
  387. package/dist/adapters/postgresql/tools/vector/index.js +6 -2
  388. package/dist/adapters/postgresql/tools/vector/index.js.map +1 -1
  389. package/dist/adapters/postgresql/tools/vector/management.d.ts +11 -0
  390. package/dist/adapters/postgresql/tools/vector/management.d.ts.map +1 -0
  391. package/dist/adapters/postgresql/tools/vector/management.js +425 -0
  392. package/dist/adapters/postgresql/tools/vector/management.js.map +1 -0
  393. package/dist/adapters/postgresql/tools/vector/query.d.ts +14 -0
  394. package/dist/adapters/postgresql/tools/vector/query.d.ts.map +1 -0
  395. package/dist/adapters/postgresql/tools/vector/query.js +767 -0
  396. package/dist/adapters/postgresql/tools/vector/query.js.map +1 -0
  397. package/dist/adapters/postgresql/tools/vector/{advanced.d.ts → search-advanced.d.ts} +4 -5
  398. package/dist/adapters/postgresql/tools/vector/search-advanced.d.ts.map +1 -0
  399. package/dist/adapters/postgresql/tools/vector/search-advanced.js +626 -0
  400. package/dist/adapters/postgresql/tools/vector/search-advanced.js.map +1 -0
  401. package/dist/auth/auth-context.d.ts +28 -0
  402. package/dist/auth/auth-context.d.ts.map +1 -0
  403. package/dist/auth/auth-context.js +37 -0
  404. package/dist/auth/auth-context.js.map +1 -0
  405. package/dist/auth/scope-map.d.ts +20 -0
  406. package/dist/auth/scope-map.d.ts.map +1 -0
  407. package/dist/auth/scope-map.js +40 -0
  408. package/dist/auth/scope-map.js.map +1 -0
  409. package/dist/auth/scopes.d.ts.map +1 -1
  410. package/dist/auth/scopes.js +2 -0
  411. package/dist/auth/scopes.js.map +1 -1
  412. package/dist/cli/args.d.ts +3 -2
  413. package/dist/cli/args.d.ts.map +1 -1
  414. package/dist/cli/args.js +4 -3
  415. package/dist/cli/args.js.map +1 -1
  416. package/dist/cli.js +11 -5
  417. package/dist/cli.js.map +1 -1
  418. package/dist/codemode/api/aliases.d.ts +14 -0
  419. package/dist/codemode/api/aliases.d.ts.map +1 -0
  420. package/dist/codemode/api/aliases.js +503 -0
  421. package/dist/codemode/api/aliases.js.map +1 -0
  422. package/dist/codemode/api/group-api.d.ts +23 -0
  423. package/dist/codemode/api/group-api.d.ts.map +1 -0
  424. package/dist/codemode/api/group-api.js +179 -0
  425. package/dist/codemode/api/group-api.js.map +1 -0
  426. package/dist/codemode/{api.d.ts → api/index.d.ts} +5 -4
  427. package/dist/codemode/api/index.d.ts.map +1 -0
  428. package/dist/codemode/api/index.js +192 -0
  429. package/dist/codemode/api/index.js.map +1 -0
  430. package/dist/codemode/api/maps.d.ts +47 -0
  431. package/dist/codemode/api/maps.d.ts.map +1 -0
  432. package/dist/codemode/api/maps.js +523 -0
  433. package/dist/codemode/api/maps.js.map +1 -0
  434. package/dist/codemode/api/normalize.d.ts +13 -0
  435. package/dist/codemode/api/normalize.d.ts.map +1 -0
  436. package/dist/codemode/api/normalize.js +120 -0
  437. package/dist/codemode/api/normalize.js.map +1 -0
  438. package/dist/codemode/index.d.ts +1 -3
  439. package/dist/codemode/index.d.ts.map +1 -1
  440. package/dist/codemode/index.js +1 -5
  441. package/dist/codemode/index.js.map +1 -1
  442. package/dist/codemode/sandbox.d.ts +14 -1
  443. package/dist/codemode/sandbox.d.ts.map +1 -1
  444. package/dist/codemode/sandbox.js +66 -44
  445. package/dist/codemode/sandbox.js.map +1 -1
  446. package/dist/codemode/types.d.ts.map +1 -1
  447. package/dist/codemode/types.js +3 -0
  448. package/dist/codemode/types.js.map +1 -1
  449. package/dist/constants/ServerInstructions.d.ts +5 -1
  450. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  451. package/dist/constants/ServerInstructions.js +91 -43
  452. package/dist/constants/ServerInstructions.js.map +1 -1
  453. package/dist/filtering/ToolConstants.d.ts +22 -19
  454. package/dist/filtering/ToolConstants.d.ts.map +1 -1
  455. package/dist/filtering/ToolConstants.js +48 -37
  456. package/dist/filtering/ToolConstants.js.map +1 -1
  457. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  458. package/dist/filtering/ToolFilter.js +10 -13
  459. package/dist/filtering/ToolFilter.js.map +1 -1
  460. package/dist/pool/ConnectionPool.js +1 -1
  461. package/dist/pool/ConnectionPool.js.map +1 -1
  462. package/dist/server/McpServer.d.ts +1 -1
  463. package/dist/server/McpServer.d.ts.map +1 -1
  464. package/dist/server/McpServer.js +1 -2
  465. package/dist/server/McpServer.js.map +1 -1
  466. package/dist/transports/http.d.ts +44 -10
  467. package/dist/transports/http.d.ts.map +1 -1
  468. package/dist/transports/http.js +327 -40
  469. package/dist/transports/http.js.map +1 -1
  470. package/dist/types/filtering.d.ts +2 -2
  471. package/dist/types/filtering.d.ts.map +1 -1
  472. package/dist/utils/icons.d.ts.map +1 -1
  473. package/dist/utils/icons.js +5 -0
  474. package/dist/utils/icons.js.map +1 -1
  475. package/dist/utils/logger.d.ts +6 -6
  476. package/dist/utils/logger.d.ts.map +1 -1
  477. package/dist/utils/logger.js +18 -15
  478. package/dist/utils/logger.js.map +1 -1
  479. package/dist/utils/progress-utils.d.ts +2 -2
  480. package/dist/utils/progress-utils.d.ts.map +1 -1
  481. package/dist/utils/progress-utils.js +2 -3
  482. package/dist/utils/progress-utils.js.map +1 -1
  483. package/dist/utils/version.d.ts +9 -0
  484. package/dist/utils/version.d.ts.map +1 -0
  485. package/dist/utils/version.js +12 -0
  486. package/dist/utils/version.js.map +1 -0
  487. package/dist/utils/where-clause.d.ts +4 -0
  488. package/dist/utils/where-clause.d.ts.map +1 -1
  489. package/dist/utils/where-clause.js +40 -0
  490. package/dist/utils/where-clause.js.map +1 -1
  491. package/package.json +19 -14
  492. package/dist/adapters/postgresql/schemas/core.d.ts.map +0 -1
  493. package/dist/adapters/postgresql/schemas/core.js.map +0 -1
  494. package/dist/adapters/postgresql/schemas/extensions.d.ts +0 -833
  495. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +0 -1
  496. package/dist/adapters/postgresql/schemas/extensions.js +0 -1170
  497. package/dist/adapters/postgresql/schemas/extensions.js.map +0 -1
  498. package/dist/adapters/postgresql/schemas/jsonb.d.ts +0 -533
  499. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +0 -1
  500. package/dist/adapters/postgresql/schemas/jsonb.js +0 -790
  501. package/dist/adapters/postgresql/schemas/jsonb.js.map +0 -1
  502. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +0 -1
  503. package/dist/adapters/postgresql/schemas/postgis.js.map +0 -1
  504. package/dist/adapters/postgresql/schemas/stats.d.ts.map +0 -1
  505. package/dist/adapters/postgresql/schemas/stats.js.map +0 -1
  506. package/dist/adapters/postgresql/tools/citext.d.ts +0 -18
  507. package/dist/adapters/postgresql/tools/citext.d.ts.map +0 -1
  508. package/dist/adapters/postgresql/tools/citext.js.map +0 -1
  509. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +0 -1
  510. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +0 -1
  511. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts +0 -20
  512. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +0 -1
  513. package/dist/adapters/postgresql/tools/jsonb/basic.js +0 -915
  514. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +0 -1
  515. package/dist/adapters/postgresql/tools/monitoring.d.ts +0 -13
  516. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +0 -1
  517. package/dist/adapters/postgresql/tools/monitoring.js.map +0 -1
  518. package/dist/adapters/postgresql/tools/partitioning.d.ts +0 -13
  519. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +0 -1
  520. package/dist/adapters/postgresql/tools/partitioning.js.map +0 -1
  521. package/dist/adapters/postgresql/tools/schema.d.ts +0 -13
  522. package/dist/adapters/postgresql/tools/schema.d.ts.map +0 -1
  523. package/dist/adapters/postgresql/tools/schema.js.map +0 -1
  524. package/dist/adapters/postgresql/tools/text.d.ts +0 -13
  525. package/dist/adapters/postgresql/tools/text.d.ts.map +0 -1
  526. package/dist/adapters/postgresql/tools/text.js +0 -903
  527. package/dist/adapters/postgresql/tools/text.js.map +0 -1
  528. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +0 -1
  529. package/dist/adapters/postgresql/tools/vector/advanced.js +0 -958
  530. package/dist/adapters/postgresql/tools/vector/advanced.js.map +0 -1
  531. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +0 -1
  532. package/dist/adapters/postgresql/tools/vector/basic.js +0 -1165
  533. package/dist/adapters/postgresql/tools/vector/basic.js.map +0 -1
  534. package/dist/codemode/api.d.ts.map +0 -1
  535. package/dist/codemode/api.js +0 -1510
  536. package/dist/codemode/api.js.map +0 -1
  537. package/dist/codemode/sandbox-factory.d.ts +0 -72
  538. package/dist/codemode/sandbox-factory.d.ts.map +0 -1
  539. package/dist/codemode/sandbox-factory.js +0 -88
  540. package/dist/codemode/sandbox-factory.js.map +0 -1
  541. package/dist/codemode/worker-sandbox.d.ts +0 -82
  542. package/dist/codemode/worker-sandbox.d.ts.map +0 -1
  543. package/dist/codemode/worker-sandbox.js +0 -244
  544. package/dist/codemode/worker-sandbox.js.map +0 -1
  545. package/dist/codemode/worker-script.d.ts +0 -8
  546. package/dist/codemode/worker-script.d.ts.map +0 -1
  547. package/dist/codemode/worker-script.js +0 -113
  548. package/dist/codemode/worker-script.js.map +0 -1
@@ -10,37 +10,39 @@ import { ConnectionError, QueryError, TransactionError, } from "../../types/inde
10
10
  import { logger } from "../../utils/logger.js";
11
11
  import { quoteIdentifier } from "../../utils/identifiers.js";
12
12
  import { parsePostgresError } from "./tools/core/error-helpers.js";
13
- // Import tool modules (will be created next)
13
+ import { VERSION } from "../../utils/version.js";
14
+ import { getSchemaInfo, queryAllIndexes, queryListTables, queryDescribeTable, queryListSchemas, queryTableIndexes, queryIsExtensionAvailable, } from "./schema-operations.js";
14
15
  import { getCoreTools } from "./tools/core/index.js";
15
16
  import { getTransactionTools } from "./tools/transactions.js";
16
17
  import { getJsonbTools } from "./tools/jsonb/index.js";
17
- import { getTextTools } from "./tools/text.js";
18
+ import { getTextTools } from "./tools/text/index.js";
18
19
  import { getPerformanceTools } from "./tools/performance/index.js";
19
20
  import { getAdminTools } from "./tools/admin.js";
20
- import { getMonitoringTools } from "./tools/monitoring.js";
21
+ import { getMonitoringTools } from "./tools/monitoring/index.js";
21
22
  import { getBackupTools } from "./tools/backup/index.js";
22
- import { getSchemaTools } from "./tools/schema.js";
23
+ import { getSchemaTools } from "./tools/schema/index.js";
23
24
  import { getVectorTools } from "./tools/vector/index.js";
24
25
  import { getPostgisTools } from "./tools/postgis/index.js";
25
- import { getPartitioningTools } from "./tools/partitioning.js";
26
+ import { getPartitioningTools } from "./tools/partitioning/index.js";
26
27
  import { getStatsTools } from "./tools/stats/index.js";
27
28
  import { getCronTools } from "./tools/cron.js";
28
29
  import { getPartmanTools } from "./tools/partman/index.js";
29
30
  import { getKcacheTools } from "./tools/kcache.js";
30
- import { getCitextTools } from "./tools/citext.js";
31
+ import { getCitextTools } from "./tools/citext/index.js";
31
32
  import { getLtreeTools } from "./tools/ltree.js";
32
33
  import { getPgcryptoTools } from "./tools/pgcrypto.js";
34
+ import { getIntrospectionTools } from "./tools/introspection/index.js";
33
35
  import { getCodeModeTools } from "./tools/codemode/index.js";
34
36
  import { getPostgresResources } from "./resources/index.js";
35
37
  import { getPostgresPrompts } from "./prompts/index.js";
36
38
  /**
37
- * Default cache TTL in milliseconds (configurable via CACHE_TTL_MS env var)
39
+ * Default cache TTL in milliseconds (configurable via METADATA_CACHE_TTL_MS env var)
38
40
  */
39
41
  const DEFAULT_CACHE_TTL_MS = parseInt(process.env["METADATA_CACHE_TTL_MS"] ?? "30000", 10);
40
42
  export class PostgresAdapter extends DatabaseAdapter {
41
43
  type = "postgresql";
42
44
  name = "PostgreSQL Adapter";
43
- version = "0.1.0";
45
+ version = VERSION;
44
46
  pool = null;
45
47
  activeTransactions = new Map();
46
48
  // Performance optimization: cache tool definitions (immutable after creation)
@@ -386,543 +388,50 @@ export class PostgresAdapter extends DatabaseAdapter {
386
388
  }
387
389
  }
388
390
  // =========================================================================
389
- // Schema Operations
391
+ // Schema Operations (delegated to schema-operations.ts)
390
392
  // =========================================================================
391
- async getSchema() {
392
- const tables = await this.listTables();
393
- const views = tables.filter((t) => t.type === "view");
394
- const materializedViews = tables.filter((t) => t.type === "materialized_view");
395
- const realTables = tables.filter((t) => t.type === "table" || t.type === "partitioned_table");
396
- // Performance optimization: fetch all indexes in a single query instead of N+1
397
- const indexes = await this.getAllIndexes();
393
+ /**
394
+ * Cache helpers object for schema operation functions
395
+ */
396
+ get cacheHelpers() {
398
397
  return {
399
- tables: realTables,
400
- views,
401
- materializedViews,
402
- indexes,
398
+ getCached: (key) => this.getCached(key),
399
+ setCache: (key, data) => {
400
+ this.setCache(key, data);
401
+ },
403
402
  };
404
403
  }
404
+ async getSchema() {
405
+ return getSchemaInfo((sql, params) => this.executeQuery(sql, params), this.cacheHelpers);
406
+ }
405
407
  /**
406
408
  * Get all indexes across all user tables in a single query
407
409
  * Performance optimization: eliminates N+1 query pattern
408
410
  * Public so it can be used by pg_get_indexes when no table is specified
409
411
  */
410
412
  async getAllIndexes() {
411
- // Check cache first
412
- const cached = this.getCached("all_indexes");
413
- if (cached)
414
- return cached;
415
- const result = await this.executeQuery(`
416
- SELECT
417
- i.relname as name,
418
- t.relname as table_name,
419
- n.nspname as schema_name,
420
- am.amname as type,
421
- ix.indisunique as is_unique,
422
- pg_get_indexdef(ix.indexrelid) as definition,
423
- array_agg(a.attname ORDER BY x.ordinality) as columns,
424
- pg_relation_size(i.oid) as size_bytes,
425
- COALESCE(pg_stat_get_numscans(i.oid), 0) as num_scans,
426
- COALESCE(pg_stat_get_tuples_returned(i.oid), 0) as tuples_read,
427
- COALESCE(pg_stat_get_tuples_fetched(i.oid), 0) as tuples_fetched
428
- FROM pg_index ix
429
- JOIN pg_class t ON t.oid = ix.indrelid
430
- JOIN pg_class i ON i.oid = ix.indexrelid
431
- JOIN pg_namespace n ON n.oid = t.relnamespace
432
- JOIN pg_am am ON am.oid = i.relam
433
- CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS x(attnum, ordinality)
434
- LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = x.attnum
435
- WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
436
- AND n.nspname !~ '^pg_toast'
437
- GROUP BY i.relname, t.relname, n.nspname, am.amname, ix.indisunique, ix.indexrelid, i.oid
438
- ORDER BY n.nspname, t.relname, i.relname
439
- `);
440
- const indexes = (result.rows ?? []).map((row) => {
441
- const rawColumns = this.parseColumnsArray(row["columns"]);
442
- const definition = row["definition"];
443
- const indexType = row["type"];
444
- return {
445
- name: row["name"],
446
- tableName: row["table_name"],
447
- schemaName: row["schema_name"],
448
- columns: this.extractIndexColumns(rawColumns, definition),
449
- unique: row["is_unique"],
450
- type: indexType,
451
- sizeBytes: Number(row["size_bytes"]) || undefined,
452
- numberOfScans: Number(row["num_scans"]) || undefined,
453
- tuplesRead: Number(row["tuples_read"]) || undefined,
454
- tuplesFetched: Number(row["tuples_fetched"]) || undefined,
455
- };
456
- });
457
- this.setCache("all_indexes", indexes);
458
- return indexes;
459
- }
460
- /**
461
- * Parse columns from PostgreSQL array format
462
- * Handles both native arrays and string representations like "{col1,col2}"
463
- */
464
- parseColumnsArray(columns) {
465
- if (Array.isArray(columns)) {
466
- return columns;
467
- }
468
- if (typeof columns === "string") {
469
- // Handle PostgreSQL array string format: "{col1,col2}"
470
- const trimmed = columns.replace(/^{|}$/g, "");
471
- if (trimmed === "")
472
- return [];
473
- return trimmed.split(",").map((c) => c.trim().replace(/^"|"$/g, ""));
474
- }
475
- return [];
476
- }
477
- /**
478
- * Extract expression columns from index definition when column names are NULL.
479
- * Expression indexes (like LOWER(name)) have attnum=0 which returns NULL from pg_attribute.
480
- * This method parses the index definition to extract the actual expressions.
481
- */
482
- extractIndexColumns(columns, definition) {
483
- // If no NULL columns, return as-is
484
- if (!columns.some((c) => c === null || c === "NULL" || c === "")) {
485
- return columns;
486
- }
487
- // Find the expression portion with balanced parentheses
488
- // Format: CREATE [UNIQUE] INDEX name ON table USING method (col1, expr1, ...) [WHERE ...]
489
- const exprPart = this.extractIndexExpressionPart(definition);
490
- if (!exprPart) {
491
- return columns;
492
- }
493
- // Parse the column expressions, handling nested parentheses
494
- const exprs = this.parseIndexExpressions(exprPart);
495
- // If counts don't match, something is off - return original
496
- if (exprs.length !== columns.length) {
497
- return columns;
498
- }
499
- // Replace NULL columns with the parsed expressions
500
- return columns.map((col, i) => {
501
- if (col === null || col === "NULL" || col === "") {
502
- return exprs[i]?.trim() ?? col;
503
- }
504
- return col;
505
- });
506
- }
507
- /**
508
- * Extract the column expression part from an index definition, handling nested parentheses.
509
- * E.g., "CREATE INDEX idx ON tbl USING btree (lower(name))" → "lower(name)"
510
- */
511
- extractIndexExpressionPart(definition) {
512
- // Find "USING method (" or just the first "(" after ON
513
- const usingMatch = /USING\s+\w+\s*\(/i.exec(definition);
514
- if (!usingMatch) {
515
- return null;
516
- }
517
- const startIdx = usingMatch.index + usingMatch[0].length - 1; // Position of opening paren
518
- let depth = 0;
519
- let endIdx = -1;
520
- for (let i = startIdx; i < definition.length; i++) {
521
- if (definition[i] === "(") {
522
- depth++;
523
- }
524
- else if (definition[i] === ")") {
525
- depth--;
526
- if (depth === 0) {
527
- endIdx = i;
528
- break;
529
- }
530
- }
531
- }
532
- if (endIdx === -1) {
533
- return null;
534
- }
535
- return definition.substring(startIdx + 1, endIdx);
536
- }
537
- /**
538
- * Parse index expressions from the column list, handling nested parentheses.
539
- * E.g., "LOWER(name), id, UPPER(TRIM(email))" → ["LOWER(name)", "id", "UPPER(TRIM(email))"]
540
- */
541
- parseIndexExpressions(columnList) {
542
- const result = [];
543
- let current = "";
544
- let depth = 0;
545
- for (const char of columnList) {
546
- if (char === "(") {
547
- depth++;
548
- current += char;
549
- }
550
- else if (char === ")") {
551
- depth--;
552
- current += char;
553
- }
554
- else if (char === "," && depth === 0) {
555
- result.push(current.trim());
556
- current = "";
557
- }
558
- else {
559
- current += char;
560
- }
561
- }
562
- if (current.trim()) {
563
- result.push(current.trim());
564
- }
565
- return result;
413
+ return queryAllIndexes((sql, params) => this.executeQuery(sql, params), this.cacheHelpers);
566
414
  }
567
415
  async listTables() {
568
- // Performance optimization: return cached result if within TTL
569
- const cached = this.getCached("list_tables");
570
- if (cached)
571
- return cached;
572
- const result = await this.executeQuery(`
573
- SELECT
574
- c.relname as name,
575
- n.nspname as schema,
576
- CASE c.relkind
577
- WHEN 'r' THEN 'table'
578
- WHEN 'v' THEN 'view'
579
- WHEN 'm' THEN 'materialized_view'
580
- WHEN 'f' THEN 'foreign_table'
581
- WHEN 'p' THEN 'partitioned_table'
582
- END as type,
583
- pg_catalog.pg_get_userbyid(c.relowner) as owner,
584
- CASE WHEN c.reltuples = -1 THEN NULL ELSE c.reltuples END::bigint as row_count,
585
- COALESCE(s.n_live_tup, 0)::bigint as live_row_estimate,
586
- (c.reltuples = -1) as stats_stale,
587
- pg_catalog.pg_table_size(c.oid) as size_bytes,
588
- pg_catalog.pg_total_relation_size(c.oid) as total_size_bytes,
589
- obj_description(c.oid, 'pg_class') as comment
590
- FROM pg_catalog.pg_class c
591
- LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
592
- LEFT JOIN pg_stat_user_tables s ON s.relid = c.oid
593
- WHERE c.relkind IN ('r', 'v', 'm', 'f', 'p')
594
- AND n.nspname NOT IN ('pg_catalog', 'information_schema')
595
- AND n.nspname !~ '^pg_toast'
596
- ORDER BY n.nspname, c.relname
597
- `);
598
- const tables = (result.rows ?? []).map((row) => {
599
- const rowCount = row["row_count"];
600
- const liveRowEstimate = Number(row["live_row_estimate"]) || 0;
601
- const statsStale = row["stats_stale"] === true;
602
- // Use live_row_estimate as fallback when stats are stale
603
- const effectiveRowCount = rowCount !== null ? Number(rowCount) : liveRowEstimate;
604
- return {
605
- name: row["name"],
606
- schema: row["schema"],
607
- type: row["type"],
608
- owner: row["owner"],
609
- rowCount: effectiveRowCount,
610
- sizeBytes: Number(row["size_bytes"]) || undefined,
611
- totalSizeBytes: Number(row["total_size_bytes"]) || undefined,
612
- comment: row["comment"],
613
- statsStale,
614
- };
615
- });
616
- this.setCache("list_tables", tables);
617
- return tables;
416
+ return queryListTables((sql, params) => this.executeQuery(sql, params), this.cacheHelpers);
618
417
  }
619
418
  async describeTable(tableName, schemaName = "public") {
620
- // Performance optimization: return cached result if within TTL
621
- const cacheKey = `describe:${schemaName}.${tableName}`;
622
- const cached = this.getCached(cacheKey);
623
- if (cached)
624
- return cached;
625
- // Get column information including foreign key references
626
- const columnsResult = await this.executeQuery(`
627
- SELECT
628
- a.attname as name,
629
- pg_catalog.format_type(a.atttypid, a.atttypmod) as type,
630
- NOT a.attnotnull as nullable,
631
- COALESCE(
632
- (SELECT true FROM pg_constraint c
633
- WHERE c.conrelid = a.attrelid
634
- AND a.attnum = ANY(c.conkey)
635
- AND c.contype = 'p'),
636
- false
637
- ) as primary_key,
638
- pg_get_expr(d.adbin, d.adrelid) as default_value,
639
- a.attgenerated != '' as is_generated,
640
- pg_get_expr(d.adbin, d.adrelid) as generated_expression,
641
- col_description(a.attrelid, a.attnum) as comment,
642
- -- Foreign key reference for this column
643
- (SELECT json_build_object(
644
- 'table', ref_t.relname,
645
- 'schema', ref_n.nspname,
646
- 'column', ref_a.attname
647
- )
648
- FROM pg_constraint c
649
- JOIN pg_class ref_t ON ref_t.oid = c.confrelid
650
- JOIN pg_namespace ref_n ON ref_n.oid = ref_t.relnamespace
651
- JOIN pg_attribute ref_a ON ref_a.attrelid = ref_t.oid
652
- AND ref_a.attnum = c.confkey[array_position(c.conkey, a.attnum)]
653
- WHERE c.conrelid = a.attrelid
654
- AND a.attnum = ANY(c.conkey)
655
- AND c.contype = 'f'
656
- LIMIT 1
657
- ) as foreign_key
658
- FROM pg_catalog.pg_attribute a
659
- LEFT JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum) = (d.adrelid, d.adnum)
660
- WHERE a.attrelid = ($1 || '.' || $2)::regclass
661
- AND a.attnum > 0
662
- AND NOT a.attisdropped
663
- ORDER BY a.attnum
664
- `, [schemaName, tableName]);
665
- const columns = (columnsResult.rows ?? []).map((row) => {
666
- const isGenerated = row["is_generated"];
667
- const fkRef = row["foreign_key"];
668
- const nullable = row["nullable"];
669
- return {
670
- name: row["name"],
671
- type: row["type"],
672
- nullable,
673
- notNull: !nullable, // Alias for consistency with createTable API
674
- primaryKey: row["primary_key"],
675
- defaultValue: row["default_value"],
676
- isGenerated,
677
- // Only set generatedExpression for actual generated columns
678
- generatedExpression: isGenerated
679
- ? row["generated_expression"]
680
- : undefined,
681
- comment: row["comment"],
682
- // Include foreign key reference if present
683
- foreignKey: fkRef
684
- ? {
685
- table: fkRef.table,
686
- schema: fkRef.schema,
687
- column: fkRef.column,
688
- }
689
- : undefined,
690
- };
691
- });
692
- // Get table info
693
- const tableResult = await this.executeQuery(`
694
- SELECT
695
- CASE c.relkind
696
- WHEN 'r' THEN 'table'
697
- WHEN 'v' THEN 'view'
698
- WHEN 'm' THEN 'materialized_view'
699
- WHEN 'f' THEN 'foreign_table'
700
- WHEN 'p' THEN 'partitioned_table'
701
- END as type,
702
- pg_catalog.pg_get_userbyid(c.relowner) as owner,
703
- CASE WHEN c.reltuples = -1 THEN NULL ELSE c.reltuples END::bigint as row_count,
704
- COALESCE(s.n_live_tup, 0)::bigint as live_row_estimate,
705
- (c.reltuples = -1) as stats_stale,
706
- obj_description(c.oid, 'pg_class') as comment,
707
- c.relkind = 'p' as is_partitioned,
708
- pg_get_partkeydef(c.oid) as partition_key
709
- FROM pg_catalog.pg_class c
710
- LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
711
- LEFT JOIN pg_stat_user_tables s ON s.relid = c.oid
712
- WHERE c.relname = $1
713
- AND n.nspname = $2
714
- `, [tableName, schemaName]);
715
- const tableRow = tableResult.rows?.[0];
716
- // Get indexes for this table
717
- const indexesResult = await this.executeQuery(`
718
- SELECT
719
- i.relname as name,
720
- am.amname as type,
721
- ix.indisunique as is_unique,
722
- ix.indisprimary as is_primary,
723
- pg_get_indexdef(ix.indexrelid) as definition,
724
- array_agg(a.attname ORDER BY x.ordinality) as columns
725
- FROM pg_index ix
726
- JOIN pg_class t ON t.oid = ix.indrelid
727
- JOIN pg_class i ON i.oid = ix.indexrelid
728
- JOIN pg_namespace n ON n.oid = t.relnamespace
729
- JOIN pg_am am ON am.oid = i.relam
730
- CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS x(attnum, ordinality)
731
- LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = x.attnum
732
- WHERE t.relname = $1 AND n.nspname = $2
733
- GROUP BY i.relname, am.amname, ix.indisunique, ix.indisprimary, ix.indexrelid
734
- ORDER BY i.relname
735
- `, [tableName, schemaName]);
736
- const indexes = (indexesResult.rows ?? []).map((row) => {
737
- const rawColumns = this.parseColumnsArray(row["columns"]);
738
- const definition = row["definition"];
739
- return {
740
- name: row["name"],
741
- type: row["type"],
742
- isUnique: row["is_unique"],
743
- isPrimary: row["is_primary"],
744
- columns: this.extractIndexColumns(rawColumns, definition),
745
- definition,
746
- };
747
- });
748
- // Get constraints (CHECK, UNIQUE, PRIMARY KEY, EXCLUSION - FK handled separately)
749
- const constraintsResult = await this.executeQuery(`
750
- SELECT
751
- c.conname as name,
752
- CASE c.contype
753
- WHEN 'p' THEN 'primary_key'
754
- WHEN 'c' THEN 'check'
755
- WHEN 'u' THEN 'unique'
756
- WHEN 'x' THEN 'exclusion'
757
- END as type,
758
- pg_get_constraintdef(c.oid) as definition,
759
- array_agg(a.attname ORDER BY x.ordinality) FILTER (WHERE a.attname IS NOT NULL) as columns
760
- FROM pg_constraint c
761
- JOIN pg_class t ON t.oid = c.conrelid
762
- JOIN pg_namespace n ON n.oid = t.relnamespace
763
- LEFT JOIN LATERAL unnest(c.conkey) WITH ORDINALITY AS x(attnum, ordinality) ON true
764
- LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = x.attnum
765
- WHERE t.relname = $1
766
- AND n.nspname = $2
767
- AND c.contype IN ('p', 'c', 'u', 'x')
768
- GROUP BY c.conname, c.contype, c.oid
769
- ORDER BY
770
- CASE c.contype WHEN 'p' THEN 0 WHEN 'u' THEN 1 WHEN 'c' THEN 2 ELSE 3 END,
771
- c.conname
772
- `, [tableName, schemaName]);
773
- const constraints = (constraintsResult.rows ?? []).map((row) => ({
774
- name: row["name"],
775
- type: row["type"],
776
- definition: row["definition"],
777
- columns: this.parseColumnsArray(row["columns"]),
778
- }));
779
- // Add NOT NULL "constraints" from column info (synthetic constraint entries)
780
- const notNullConstraints = [];
781
- for (const col of columns) {
782
- if (!col.nullable && !col.primaryKey) {
783
- // Skip primary key columns as they have inherent NOT NULL
784
- notNullConstraints.push({
785
- name: `${col.name}_not_null`,
786
- type: "not_null",
787
- definition: `NOT NULL`,
788
- columns: [col.name],
789
- });
790
- }
791
- }
792
- // Get foreign keys
793
- const foreignKeysResult = await this.executeQuery(`
794
- SELECT
795
- c.conname as name,
796
- a.attname as column,
797
- ref_t.relname as referenced_table,
798
- ref_n.nspname as referenced_schema,
799
- ref_a.attname as referenced_column,
800
- CASE c.confupdtype
801
- WHEN 'a' THEN 'NO ACTION'
802
- WHEN 'r' THEN 'RESTRICT'
803
- WHEN 'c' THEN 'CASCADE'
804
- WHEN 'n' THEN 'SET NULL'
805
- WHEN 'd' THEN 'SET DEFAULT'
806
- END as on_update,
807
- CASE c.confdeltype
808
- WHEN 'a' THEN 'NO ACTION'
809
- WHEN 'r' THEN 'RESTRICT'
810
- WHEN 'c' THEN 'CASCADE'
811
- WHEN 'n' THEN 'SET NULL'
812
- WHEN 'd' THEN 'SET DEFAULT'
813
- END as on_delete
814
- FROM pg_constraint c
815
- JOIN pg_class t ON t.oid = c.conrelid
816
- JOIN pg_namespace n ON n.oid = t.relnamespace
817
- JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
818
- JOIN pg_class ref_t ON ref_t.oid = c.confrelid
819
- JOIN pg_namespace ref_n ON ref_n.oid = ref_t.relnamespace
820
- JOIN pg_attribute ref_a ON ref_a.attrelid = ref_t.oid AND ref_a.attnum = ANY(c.confkey)
821
- WHERE t.relname = $1
822
- AND n.nspname = $2
823
- AND c.contype = 'f'
824
- ORDER BY c.conname
825
- `, [tableName, schemaName]);
826
- const foreignKeys = (foreignKeysResult.rows ?? []).map((row) => ({
827
- name: row["name"],
828
- column: row["column"],
829
- referencedTable: row["referenced_table"],
830
- referencedSchema: row["referenced_schema"],
831
- referencedColumn: row["referenced_column"],
832
- onUpdate: row["on_update"],
833
- onDelete: row["on_delete"],
834
- }));
835
- // Extract primary key columns from constraints for convenience
836
- const pkConstraint = constraints.find((c) => c.type === "primary_key");
837
- const primaryKey = pkConstraint?.columns ?? null;
838
- const tableInfo = {
839
- name: tableName,
840
- schema: schemaName,
841
- type: tableRow?.["type"] ?? "table",
842
- owner: tableRow?.["owner"],
843
- rowCount: (() => {
844
- const rc = tableRow?.["row_count"];
845
- const liveEst = Number(tableRow?.["live_row_estimate"]) || 0;
846
- return rc !== null && rc !== undefined ? Number(rc) : liveEst;
847
- })(),
848
- comment: tableRow?.["comment"],
849
- isPartitioned: tableRow?.["is_partitioned"],
850
- partitionKey: tableRow?.["partition_key"],
851
- columns,
852
- primaryKey,
853
- indexes,
854
- constraints: [...constraints, ...notNullConstraints],
855
- foreignKeys,
856
- };
857
- this.setCache(cacheKey, tableInfo);
858
- return tableInfo;
419
+ return queryDescribeTable((sql, params) => this.executeQuery(sql, params), this.cacheHelpers, tableName, schemaName);
859
420
  }
860
421
  async listSchemas() {
861
- const result = await this.executeQuery(`
862
- SELECT nspname
863
- FROM pg_catalog.pg_namespace
864
- WHERE nspname NOT IN ('pg_catalog', 'information_schema')
865
- AND nspname !~ '^pg_toast'
866
- AND nspname !~ '^pg_temp'
867
- ORDER BY nspname
868
- `);
869
- return (result.rows ?? []).map((row) => row["nspname"]);
422
+ return queryListSchemas((sql, params) => this.executeQuery(sql, params));
870
423
  }
871
424
  /**
872
425
  * Get indexes for a table
873
426
  */
874
427
  async getTableIndexes(tableName, schemaName = "public") {
875
- const result = await this.executeQuery(`
876
- SELECT
877
- i.relname as name,
878
- am.amname as type,
879
- ix.indisunique as is_unique,
880
- pg_get_indexdef(ix.indexrelid) as definition,
881
- array_agg(a.attname ORDER BY x.ordinality) as columns,
882
- pg_relation_size(i.oid) as size_bytes,
883
- COALESCE(pg_stat_get_numscans(i.oid), 0) as num_scans,
884
- COALESCE(pg_stat_get_tuples_returned(i.oid), 0) as tuples_read,
885
- COALESCE(pg_stat_get_tuples_fetched(i.oid), 0) as tuples_fetched
886
- FROM pg_index ix
887
- JOIN pg_class t ON t.oid = ix.indrelid
888
- JOIN pg_class i ON i.oid = ix.indexrelid
889
- JOIN pg_namespace n ON n.oid = t.relnamespace
890
- JOIN pg_am am ON am.oid = i.relam
891
- CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS x(attnum, ordinality)
892
- LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = x.attnum
893
- WHERE t.relname = $1
894
- AND n.nspname = $2
895
- GROUP BY i.relname, am.amname, ix.indisunique, ix.indexrelid, i.oid
896
- ORDER BY i.relname
897
- `, [tableName, schemaName]);
898
- return (result.rows ?? []).map((row) => {
899
- const rawColumns = this.parseColumnsArray(row["columns"]);
900
- const definition = row["definition"];
901
- const indexType = row["type"];
902
- return {
903
- name: row["name"],
904
- tableName,
905
- schemaName,
906
- columns: this.extractIndexColumns(rawColumns, definition),
907
- unique: row["is_unique"],
908
- type: indexType,
909
- sizeBytes: Number(row["size_bytes"]) || undefined,
910
- numberOfScans: Number(row["num_scans"]) || undefined,
911
- tuplesRead: Number(row["tuples_read"]) || undefined,
912
- tuplesFetched: Number(row["tuples_fetched"]) || undefined,
913
- };
914
- });
428
+ return queryTableIndexes((sql, params) => this.executeQuery(sql, params), tableName, schemaName);
915
429
  }
916
430
  /**
917
431
  * Check if an extension is available
918
432
  */
919
433
  async isExtensionAvailable(extensionName) {
920
- const result = await this.executeQuery(`
921
- SELECT EXISTS(
922
- SELECT 1 FROM pg_extension WHERE extname = $1
923
- ) as available
924
- `, [extensionName]);
925
- return result.rows?.[0]?.["available"] ?? false;
434
+ return queryIsExtensionAvailable((sql, params) => this.executeQuery(sql, params), extensionName);
926
435
  }
927
436
  // =========================================================================
928
437
  // Capabilities
@@ -963,6 +472,7 @@ export class PostgresAdapter extends DatabaseAdapter {
963
472
  "citext",
964
473
  "ltree",
965
474
  "pgcrypto",
475
+ "introspection",
966
476
  "codemode",
967
477
  ];
968
478
  }
@@ -994,6 +504,7 @@ export class PostgresAdapter extends DatabaseAdapter {
994
504
  ...getCitextTools(this),
995
505
  ...getLtreeTools(this),
996
506
  ...getPgcryptoTools(this),
507
+ ...getIntrospectionTools(this),
997
508
  ...getCodeModeTools(this),
998
509
  ];
999
510
  return this.cachedToolDefinitions;