@neverinfamous/postgres-mcp 1.2.0 → 2.0.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 (293) hide show
  1. package/README.md +202 -148
  2. package/dist/__tests__/benchmarks/codemode.bench.d.ts +10 -0
  3. package/dist/__tests__/benchmarks/codemode.bench.d.ts.map +1 -0
  4. package/dist/__tests__/benchmarks/codemode.bench.js +159 -0
  5. package/dist/__tests__/benchmarks/codemode.bench.js.map +1 -0
  6. package/dist/__tests__/benchmarks/connection-pool.bench.d.ts +10 -0
  7. package/dist/__tests__/benchmarks/connection-pool.bench.d.ts.map +1 -0
  8. package/dist/__tests__/benchmarks/connection-pool.bench.js +123 -0
  9. package/dist/__tests__/benchmarks/connection-pool.bench.js.map +1 -0
  10. package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts +11 -0
  11. package/dist/__tests__/benchmarks/handler-dispatch.bench.d.ts.map +1 -0
  12. package/dist/__tests__/benchmarks/handler-dispatch.bench.js +199 -0
  13. package/dist/__tests__/benchmarks/handler-dispatch.bench.js.map +1 -0
  14. package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts +15 -0
  15. package/dist/__tests__/benchmarks/logger-sanitization.bench.d.ts.map +1 -0
  16. package/dist/__tests__/benchmarks/logger-sanitization.bench.js +155 -0
  17. package/dist/__tests__/benchmarks/logger-sanitization.bench.js.map +1 -0
  18. package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts +10 -0
  19. package/dist/__tests__/benchmarks/resource-prompts.bench.d.ts.map +1 -0
  20. package/dist/__tests__/benchmarks/resource-prompts.bench.js +181 -0
  21. package/dist/__tests__/benchmarks/resource-prompts.bench.js.map +1 -0
  22. package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts +11 -0
  23. package/dist/__tests__/benchmarks/schema-parsing.bench.d.ts.map +1 -0
  24. package/dist/__tests__/benchmarks/schema-parsing.bench.js +209 -0
  25. package/dist/__tests__/benchmarks/schema-parsing.bench.js.map +1 -0
  26. package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts +9 -0
  27. package/dist/__tests__/benchmarks/tool-filtering.bench.d.ts.map +1 -0
  28. package/dist/__tests__/benchmarks/tool-filtering.bench.js +83 -0
  29. package/dist/__tests__/benchmarks/tool-filtering.bench.js.map +1 -0
  30. package/dist/__tests__/benchmarks/transport-auth.bench.d.ts +10 -0
  31. package/dist/__tests__/benchmarks/transport-auth.bench.d.ts.map +1 -0
  32. package/dist/__tests__/benchmarks/transport-auth.bench.js +128 -0
  33. package/dist/__tests__/benchmarks/transport-auth.bench.js.map +1 -0
  34. package/dist/__tests__/benchmarks/utilities.bench.d.ts +10 -0
  35. package/dist/__tests__/benchmarks/utilities.bench.d.ts.map +1 -0
  36. package/dist/__tests__/benchmarks/utilities.bench.js +164 -0
  37. package/dist/__tests__/benchmarks/utilities.bench.js.map +1 -0
  38. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -1
  39. package/dist/adapters/DatabaseAdapter.js +12 -0
  40. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  41. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  42. package/dist/adapters/postgresql/PostgresAdapter.js +56 -3
  43. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  44. package/dist/adapters/postgresql/prompts/ltree.js +2 -2
  45. package/dist/adapters/postgresql/prompts/ltree.js.map +1 -1
  46. package/dist/adapters/postgresql/schemas/admin.d.ts +10 -5
  47. package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -1
  48. package/dist/adapters/postgresql/schemas/admin.js +10 -5
  49. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  50. package/dist/adapters/postgresql/schemas/backup.d.ts +45 -27
  51. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  52. package/dist/adapters/postgresql/schemas/backup.js +64 -26
  53. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  54. package/dist/adapters/postgresql/schemas/core.d.ts +53 -19
  55. package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -1
  56. package/dist/adapters/postgresql/schemas/core.js +61 -17
  57. package/dist/adapters/postgresql/schemas/core.js.map +1 -1
  58. package/dist/adapters/postgresql/schemas/cron.d.ts +51 -32
  59. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  60. package/dist/adapters/postgresql/schemas/cron.js +64 -44
  61. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  62. package/dist/adapters/postgresql/schemas/extensions.d.ts +224 -110
  63. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -1
  64. package/dist/adapters/postgresql/schemas/extensions.js +245 -96
  65. package/dist/adapters/postgresql/schemas/extensions.js.map +1 -1
  66. package/dist/adapters/postgresql/schemas/index.d.ts +7 -6
  67. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  68. package/dist/adapters/postgresql/schemas/index.js +16 -8
  69. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  70. package/dist/adapters/postgresql/schemas/introspection.d.ts +445 -0
  71. package/dist/adapters/postgresql/schemas/introspection.d.ts.map +1 -0
  72. package/dist/adapters/postgresql/schemas/introspection.js +478 -0
  73. package/dist/adapters/postgresql/schemas/introspection.js.map +1 -0
  74. package/dist/adapters/postgresql/schemas/jsonb.d.ts +102 -42
  75. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -1
  76. package/dist/adapters/postgresql/schemas/jsonb.js +125 -30
  77. package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -1
  78. package/dist/adapters/postgresql/schemas/monitoring.d.ts +69 -36
  79. package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
  80. package/dist/adapters/postgresql/schemas/monitoring.js +98 -40
  81. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  82. package/dist/adapters/postgresql/schemas/partitioning.d.ts +21 -24
  83. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  84. package/dist/adapters/postgresql/schemas/partitioning.js +26 -14
  85. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  86. package/dist/adapters/postgresql/schemas/partman.d.ts +69 -0
  87. package/dist/adapters/postgresql/schemas/partman.d.ts.map +1 -1
  88. package/dist/adapters/postgresql/schemas/partman.js +46 -33
  89. package/dist/adapters/postgresql/schemas/partman.js.map +1 -1
  90. package/dist/adapters/postgresql/schemas/performance.d.ts +97 -49
  91. package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
  92. package/dist/adapters/postgresql/schemas/performance.js +139 -34
  93. package/dist/adapters/postgresql/schemas/performance.js.map +1 -1
  94. package/dist/adapters/postgresql/schemas/postgis.d.ts +20 -0
  95. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -1
  96. package/dist/adapters/postgresql/schemas/postgis.js +40 -0
  97. package/dist/adapters/postgresql/schemas/postgis.js.map +1 -1
  98. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +50 -30
  99. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  100. package/dist/adapters/postgresql/schemas/schema-mgmt.js +105 -33
  101. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  102. package/dist/adapters/postgresql/schemas/stats.d.ts +33 -20
  103. package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -1
  104. package/dist/adapters/postgresql/schemas/stats.js +36 -20
  105. package/dist/adapters/postgresql/schemas/stats.js.map +1 -1
  106. package/dist/adapters/postgresql/schemas/text-search.d.ts +34 -19
  107. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  108. package/dist/adapters/postgresql/schemas/text-search.js +52 -13
  109. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  110. package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
  111. package/dist/adapters/postgresql/tools/admin.js +272 -186
  112. package/dist/adapters/postgresql/tools/admin.js.map +1 -1
  113. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  114. package/dist/adapters/postgresql/tools/backup/dump.js +376 -350
  115. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  116. package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -1
  117. package/dist/adapters/postgresql/tools/citext.js +333 -243
  118. package/dist/adapters/postgresql/tools/citext.js.map +1 -1
  119. package/dist/adapters/postgresql/tools/codemode/index.d.ts.map +1 -1
  120. package/dist/adapters/postgresql/tools/codemode/index.js +2 -11
  121. package/dist/adapters/postgresql/tools/codemode/index.js.map +1 -1
  122. package/dist/adapters/postgresql/tools/core/convenience.d.ts +9 -1
  123. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  124. package/dist/adapters/postgresql/tools/core/convenience.js +101 -19
  125. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  126. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +48 -0
  127. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -0
  128. package/dist/adapters/postgresql/tools/core/error-helpers.js +256 -0
  129. package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -0
  130. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  131. package/dist/adapters/postgresql/tools/core/health.js +18 -4
  132. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  133. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  134. package/dist/adapters/postgresql/tools/core/indexes.js +48 -6
  135. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  136. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  137. package/dist/adapters/postgresql/tools/core/objects.js +104 -85
  138. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  139. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  140. package/dist/adapters/postgresql/tools/core/query.js +100 -42
  141. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  142. package/dist/adapters/postgresql/tools/core/schemas.d.ts +51 -25
  143. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  144. package/dist/adapters/postgresql/tools/core/schemas.js +51 -25
  145. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  146. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  147. package/dist/adapters/postgresql/tools/core/tables.js +72 -32
  148. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  149. package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -1
  150. package/dist/adapters/postgresql/tools/cron.js +333 -206
  151. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  152. package/dist/adapters/postgresql/tools/introspection.d.ts +15 -0
  153. package/dist/adapters/postgresql/tools/introspection.d.ts.map +1 -0
  154. package/dist/adapters/postgresql/tools/introspection.js +1682 -0
  155. package/dist/adapters/postgresql/tools/introspection.js.map +1 -0
  156. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -1
  157. package/dist/adapters/postgresql/tools/jsonb/advanced.js +394 -297
  158. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -1
  159. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -1
  160. package/dist/adapters/postgresql/tools/jsonb/basic.js +686 -398
  161. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -1
  162. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  163. package/dist/adapters/postgresql/tools/kcache.js +278 -246
  164. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  165. package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -1
  166. package/dist/adapters/postgresql/tools/ltree.js +137 -38
  167. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  168. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -1
  169. package/dist/adapters/postgresql/tools/monitoring.js +86 -55
  170. package/dist/adapters/postgresql/tools/monitoring.js.map +1 -1
  171. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -1
  172. package/dist/adapters/postgresql/tools/partitioning.js +79 -15
  173. package/dist/adapters/postgresql/tools/partitioning.js.map +1 -1
  174. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  175. package/dist/adapters/postgresql/tools/partman/management.js +43 -56
  176. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  177. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  178. package/dist/adapters/postgresql/tools/partman/operations.js +137 -24
  179. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  180. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  181. package/dist/adapters/postgresql/tools/performance/analysis.js +276 -165
  182. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  183. package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -1
  184. package/dist/adapters/postgresql/tools/performance/explain.js +61 -21
  185. package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -1
  186. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  187. package/dist/adapters/postgresql/tools/performance/monitoring.js +52 -12
  188. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  189. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  190. package/dist/adapters/postgresql/tools/performance/optimization.js +92 -81
  191. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  192. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  193. package/dist/adapters/postgresql/tools/performance/stats.js +182 -60
  194. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  195. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  196. package/dist/adapters/postgresql/tools/pgcrypto.js +277 -102
  197. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  198. package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -1
  199. package/dist/adapters/postgresql/tools/postgis/advanced.js +298 -230
  200. package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -1
  201. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  202. package/dist/adapters/postgresql/tools/postgis/basic.js +370 -251
  203. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  204. package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -1
  205. package/dist/adapters/postgresql/tools/postgis/standalone.js +135 -51
  206. package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -1
  207. package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -1
  208. package/dist/adapters/postgresql/tools/schema.js +580 -233
  209. package/dist/adapters/postgresql/tools/schema.js.map +1 -1
  210. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  211. package/dist/adapters/postgresql/tools/stats/advanced.js +567 -506
  212. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  213. package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -1
  214. package/dist/adapters/postgresql/tools/stats/basic.js +340 -316
  215. package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -1
  216. package/dist/adapters/postgresql/tools/text.d.ts.map +1 -1
  217. package/dist/adapters/postgresql/tools/text.js +690 -337
  218. package/dist/adapters/postgresql/tools/text.js.map +1 -1
  219. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  220. package/dist/adapters/postgresql/tools/transactions.js +157 -50
  221. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  222. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -1
  223. package/dist/adapters/postgresql/tools/vector/advanced.js +18 -0
  224. package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -1
  225. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -1
  226. package/dist/adapters/postgresql/tools/vector/basic.js +100 -53
  227. package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -1
  228. package/dist/auth/auth-context.d.ts +28 -0
  229. package/dist/auth/auth-context.d.ts.map +1 -0
  230. package/dist/auth/auth-context.js +37 -0
  231. package/dist/auth/auth-context.js.map +1 -0
  232. package/dist/auth/scope-map.d.ts +20 -0
  233. package/dist/auth/scope-map.d.ts.map +1 -0
  234. package/dist/auth/scope-map.js +40 -0
  235. package/dist/auth/scope-map.js.map +1 -0
  236. package/dist/auth/scopes.d.ts.map +1 -1
  237. package/dist/auth/scopes.js +2 -0
  238. package/dist/auth/scopes.js.map +1 -1
  239. package/dist/cli.js +1 -1
  240. package/dist/cli.js.map +1 -1
  241. package/dist/codemode/api.d.ts +1 -0
  242. package/dist/codemode/api.d.ts.map +1 -1
  243. package/dist/codemode/api.js +35 -1
  244. package/dist/codemode/api.js.map +1 -1
  245. package/dist/codemode/index.d.ts +0 -2
  246. package/dist/codemode/index.d.ts.map +1 -1
  247. package/dist/codemode/index.js +0 -4
  248. package/dist/codemode/index.js.map +1 -1
  249. package/dist/codemode/sandbox.d.ts +14 -1
  250. package/dist/codemode/sandbox.d.ts.map +1 -1
  251. package/dist/codemode/sandbox.js +58 -19
  252. package/dist/codemode/sandbox.js.map +1 -1
  253. package/dist/codemode/types.d.ts.map +1 -1
  254. package/dist/codemode/types.js +3 -0
  255. package/dist/codemode/types.js.map +1 -1
  256. package/dist/constants/ServerInstructions.d.ts +5 -1
  257. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  258. package/dist/constants/ServerInstructions.js +117 -31
  259. package/dist/constants/ServerInstructions.js.map +1 -1
  260. package/dist/filtering/ToolConstants.d.ts +22 -19
  261. package/dist/filtering/ToolConstants.d.ts.map +1 -1
  262. package/dist/filtering/ToolConstants.js +48 -37
  263. package/dist/filtering/ToolConstants.js.map +1 -1
  264. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  265. package/dist/filtering/ToolFilter.js +10 -13
  266. package/dist/filtering/ToolFilter.js.map +1 -1
  267. package/dist/pool/ConnectionPool.js +1 -1
  268. package/dist/pool/ConnectionPool.js.map +1 -1
  269. package/dist/transports/http.d.ts +1 -0
  270. package/dist/transports/http.d.ts.map +1 -1
  271. package/dist/transports/http.js +75 -21
  272. package/dist/transports/http.js.map +1 -1
  273. package/dist/types/filtering.d.ts +2 -2
  274. package/dist/types/filtering.d.ts.map +1 -1
  275. package/dist/utils/icons.d.ts.map +1 -1
  276. package/dist/utils/icons.js +5 -0
  277. package/dist/utils/icons.js.map +1 -1
  278. package/dist/utils/where-clause.d.ts.map +1 -1
  279. package/dist/utils/where-clause.js +24 -0
  280. package/dist/utils/where-clause.js.map +1 -1
  281. package/package.json +20 -13
  282. package/dist/codemode/sandbox-factory.d.ts +0 -72
  283. package/dist/codemode/sandbox-factory.d.ts.map +0 -1
  284. package/dist/codemode/sandbox-factory.js +0 -88
  285. package/dist/codemode/sandbox-factory.js.map +0 -1
  286. package/dist/codemode/worker-sandbox.d.ts +0 -82
  287. package/dist/codemode/worker-sandbox.d.ts.map +0 -1
  288. package/dist/codemode/worker-sandbox.js +0 -244
  289. package/dist/codemode/worker-sandbox.js.map +0 -1
  290. package/dist/codemode/worker-script.d.ts +0 -8
  291. package/dist/codemode/worker-script.d.ts.map +0 -1
  292. package/dist/codemode/worker-script.js +0 -113
  293. package/dist/codemode/worker-script.js.map +0 -1
@@ -15,21 +15,22 @@ import { z } from "zod";
15
15
  * Schema for querying enhanced statistics with kcache data.
16
16
  * Joins pg_stat_statements with pg_stat_kcache for full picture.
17
17
  */
18
- export const KcacheQueryStatsSchema = z.preprocess(normalizeOptionalParams, z.object({
18
+ export const KcacheQueryStatsSchemaBase = z.object({
19
19
  limit: z
20
20
  .number()
21
21
  .optional()
22
22
  .describe("Maximum number of queries to return (default: 20)"),
23
23
  orderBy: z
24
- .enum(["total_time", "cpu_time", "reads", "writes"])
24
+ .string()
25
25
  .optional()
26
- .describe("Order results by metric (default: total_time)"),
26
+ .describe("Order results by metric (default: total_time). Valid: total_time, cpu_time, reads, writes"),
27
27
  minCalls: z.number().optional().describe("Minimum call count to include"),
28
28
  queryPreviewLength: z
29
29
  .number()
30
30
  .optional()
31
31
  .describe("Characters for query preview (default: 100, max: 500, 0 for full)"),
32
- }));
32
+ });
33
+ export const KcacheQueryStatsSchema = z.preprocess(normalizeOptionalParams, KcacheQueryStatsSchemaBase);
33
34
  /**
34
35
  * Schema for top resource consumers query.
35
36
  */
@@ -42,19 +43,54 @@ export const KcacheTopConsumersSchema = z.object({
42
43
  .optional()
43
44
  .describe("Number of top queries to return (default: 10)"),
44
45
  });
46
+ /**
47
+ * Base schema for MCP visibility - pg_kcache_top_cpu parameters.
48
+ */
49
+ export const KcacheTopCpuSchemaBase = z.object({
50
+ limit: z
51
+ .number()
52
+ .optional()
53
+ .describe("Number of top queries to return (default: 10)"),
54
+ queryPreviewLength: z
55
+ .number()
56
+ .optional()
57
+ .describe("Characters for query preview (default: 100, max: 500, 0 for full)"),
58
+ });
59
+ /**
60
+ * Base schema for MCP visibility - pg_kcache_top_io parameters.
61
+ */
62
+ export const KcacheTopIoSchemaBase = z.object({
63
+ type: z
64
+ .enum(["reads", "writes", "both"])
65
+ .optional()
66
+ .describe("I/O type to rank by (default: both)"),
67
+ ioType: z
68
+ .enum(["reads", "writes", "both"])
69
+ .optional()
70
+ .describe("Alias for type"),
71
+ limit: z
72
+ .number()
73
+ .optional()
74
+ .describe("Number of top queries to return (default: 10)"),
75
+ queryPreviewLength: z
76
+ .number()
77
+ .optional()
78
+ .describe("Characters for query preview (default: 100, max: 500, 0 for full)"),
79
+ });
45
80
  /**
46
81
  * Schema for database-level aggregation.
47
82
  */
48
- export const KcacheDatabaseStatsSchema = z.preprocess(normalizeOptionalParams, z.object({
83
+ export const KcacheDatabaseStatsSchemaBase = z.object({
49
84
  database: z
50
85
  .string()
51
86
  .optional()
52
87
  .describe("Database name (current database if omitted)"),
53
- }));
88
+ });
89
+ export const KcacheDatabaseStatsSchema = z.preprocess(normalizeOptionalParams, KcacheDatabaseStatsSchemaBase);
54
90
  /**
55
91
  * Schema for identifying resource-bound queries.
56
92
  */
57
- export const KcacheResourceAnalysisSchema = z.preprocess(normalizeOptionalParams, z.object({
93
+ export const KcacheResourceAnalysisSchemaBase = z.object({
58
94
  queryId: z
59
95
  .string()
60
96
  .optional()
@@ -72,7 +108,8 @@ export const KcacheResourceAnalysisSchema = z.preprocess(normalizeOptionalParams
72
108
  .number()
73
109
  .optional()
74
110
  .describe("Characters for query preview (default: 100, max: 500, 0 for full)"),
75
- }));
111
+ });
112
+ export const KcacheResourceAnalysisSchema = z.preprocess(normalizeOptionalParams, KcacheResourceAnalysisSchemaBase);
76
113
  // =============================================================================
77
114
  // citext Schemas
78
115
  // =============================================================================
@@ -183,7 +220,7 @@ export const CitextAnalyzeCandidatesSchemaBase = z.object({
183
220
  * Schema for analyzing candidate columns for citext conversion.
184
221
  * Preprocesses to handle empty/null params.
185
222
  */
186
- export const CitextAnalyzeCandidatesSchema = z.preprocess(normalizeOptionalParams, CitextAnalyzeCandidatesSchemaBase);
223
+ export const CitextAnalyzeCandidatesSchema = z.preprocess((input) => preprocessCitextTableParams(normalizeOptionalParams(input)), CitextAnalyzeCandidatesSchemaBase);
187
224
  /**
188
225
  * Base schema for MCP visibility (shows all parameters including aliases).
189
226
  */
@@ -407,13 +444,22 @@ export const LtreeSubpathSchema = z.preprocess((input) => {
407
444
  .optional()
408
445
  .describe("Number of labels (omit for rest of path). Alias: len"),
409
446
  }));
447
+ /**
448
+ * Base schema for MCP visibility - no min constraint.
449
+ */
450
+ export const LtreeLcaSchemaBase = z.object({
451
+ paths: z
452
+ .array(z.string())
453
+ .describe("Array of ltree paths to find common ancestor (minimum 2)"),
454
+ });
410
455
  /**
411
456
  * Schema for finding longest common ancestor.
457
+ * Enforces minimum 2 paths; used inside handler try/catch.
412
458
  */
413
459
  export const LtreeLcaSchema = z.object({
414
460
  paths: z
415
461
  .array(z.string())
416
- .min(2)
462
+ .min(2, "At least 2 paths are required to find a common ancestor")
417
463
  .describe("Array of ltree paths to find common ancestor"),
418
464
  });
419
465
  /**
@@ -449,12 +495,13 @@ export const LtreeMatchSchema = z.preprocess((input) => {
449
495
  /**
450
496
  * Schema for listing ltree columns in the database.
451
497
  */
452
- export const LtreeListColumnsSchema = z.preprocess(normalizeOptionalParams, z.object({
498
+ export const LtreeListColumnsSchemaBase = z.object({
453
499
  schema: z
454
500
  .string()
455
501
  .optional()
456
502
  .describe("Schema name to filter (all schemas if omitted)"),
457
- }));
503
+ });
504
+ export const LtreeListColumnsSchema = z.preprocess(normalizeOptionalParams, LtreeListColumnsSchemaBase);
458
505
  /**
459
506
  * Schema for converting a text column to ltree.
460
507
  * Accepts 'tableName'/'name' as aliases for 'table', 'col' as alias for 'column'.
@@ -480,6 +527,15 @@ export const LtreeIndexSchema = z.preprocess(preprocessLtreeTableParams, z.objec
480
527
  // =============================================================================
481
528
  // pgcrypto Schemas
482
529
  // =============================================================================
530
+ /**
531
+ * Base schema for MCP visibility — shows all parameters with relaxed validation.
532
+ * Valid algorithm values described in text for MCP clients.
533
+ */
534
+ export const PgcryptoHashSchemaBase = z.object({
535
+ data: z.string().describe("Data to hash"),
536
+ algorithm: z.string().describe("Hash algorithm"),
537
+ encoding: z.string().optional().describe("Output encoding (default: hex)"),
538
+ });
483
539
  /**
484
540
  * Schema for hashing data with digest().
485
541
  */
@@ -493,6 +549,15 @@ export const PgcryptoHashSchema = z.object({
493
549
  .optional()
494
550
  .describe("Output encoding (default: hex)"),
495
551
  });
552
+ /**
553
+ * Base schema for MCP visibility — shows all parameters with relaxed validation.
554
+ */
555
+ export const PgcryptoHmacSchemaBase = z.object({
556
+ data: z.string().describe("Data to authenticate"),
557
+ key: z.string().describe("Secret key for HMAC"),
558
+ algorithm: z.string().describe("Hash algorithm"),
559
+ encoding: z.string().optional().describe("Output encoding (default: hex)"),
560
+ });
496
561
  /**
497
562
  * Schema for HMAC authentication.
498
563
  */
@@ -562,6 +627,13 @@ export const PgcryptoDecryptSchema = PgcryptoDecryptSchemaBase.transform((data)
562
627
  .refine((data) => data.password !== undefined, {
563
628
  message: "password (or key alias) is required",
564
629
  });
630
+ /**
631
+ * Base schema for MCP visibility — shows all parameters with relaxed validation.
632
+ */
633
+ export const PgcryptoRandomBytesSchemaBase = z.object({
634
+ length: z.number().describe("Number of random bytes to generate (1-1024)"),
635
+ encoding: z.string().optional().describe("Output encoding (default: hex)"),
636
+ });
565
637
  /**
566
638
  * Schema for generating random bytes.
567
639
  */
@@ -576,6 +648,18 @@ export const PgcryptoRandomBytesSchema = z.object({
576
648
  .optional()
577
649
  .describe("Output encoding (default: hex)"),
578
650
  });
651
+ /**
652
+ * Base schema for MCP visibility — shows all parameters with relaxed validation.
653
+ */
654
+ export const PgcryptoGenSaltSchemaBase = z.object({
655
+ type: z
656
+ .string()
657
+ .describe("Salt type: bf (bcrypt, recommended), md5, xdes, or des"),
658
+ iterations: z
659
+ .number()
660
+ .optional()
661
+ .describe("Iteration count (for bf: 4-31, for xdes: odd 1-16777215)"),
662
+ });
579
663
  /**
580
664
  * Schema for generating password salt.
581
665
  */
@@ -605,7 +689,7 @@ export const PgcryptoCryptSchema = z.object({
605
689
  */
606
690
  export const KcacheCreateExtensionOutputSchema = z
607
691
  .object({
608
- success: z.boolean().describe("Whether extension was enabled"),
692
+ success: z.boolean().optional().describe("Whether extension was enabled"),
609
693
  message: z.string().optional().describe("Status message"),
610
694
  note: z.string().optional().describe("Additional note"),
611
695
  error: z.string().optional().describe("Error message"),
@@ -617,13 +701,16 @@ export const KcacheCreateExtensionOutputSchema = z
617
701
  */
618
702
  export const KcacheQueryStatsOutputSchema = z
619
703
  .object({
704
+ success: z.boolean().optional().describe("Whether query succeeded"),
620
705
  queries: z
621
706
  .array(z.record(z.string(), z.unknown()))
707
+ .optional()
622
708
  .describe("Query statistics with CPU/IO metrics"),
623
- count: z.number().describe("Number of queries returned"),
624
- orderBy: z.string().describe("Order by metric"),
625
- truncated: z.boolean().describe("Results were truncated"),
626
- totalCount: z.number().describe("Total available count"),
709
+ count: z.number().optional().describe("Number of queries returned"),
710
+ orderBy: z.string().optional().describe("Order by metric"),
711
+ truncated: z.boolean().optional().describe("Results were truncated"),
712
+ totalCount: z.number().optional().describe("Total available count"),
713
+ error: z.string().optional().describe("Error message"),
627
714
  })
628
715
  .describe("Query statistics with OS-level metrics");
629
716
  /**
@@ -631,13 +718,16 @@ export const KcacheQueryStatsOutputSchema = z
631
718
  */
632
719
  export const KcacheTopCpuOutputSchema = z
633
720
  .object({
721
+ success: z.boolean().optional().describe("Whether query succeeded"),
634
722
  topCpuQueries: z
635
723
  .array(z.record(z.string(), z.unknown()))
724
+ .optional()
636
725
  .describe("Top CPU-consuming queries"),
637
- count: z.number().describe("Number of queries returned"),
638
- description: z.string().describe("Result description"),
639
- truncated: z.boolean().describe("Results were truncated"),
640
- totalCount: z.number().describe("Total available count"),
726
+ count: z.number().optional().describe("Number of queries returned"),
727
+ description: z.string().optional().describe("Result description"),
728
+ truncated: z.boolean().optional().describe("Results were truncated"),
729
+ totalCount: z.number().optional().describe("Total available count"),
730
+ error: z.string().optional().describe("Error message"),
641
731
  })
642
732
  .describe("Top CPU-consuming queries result");
643
733
  /**
@@ -645,14 +735,20 @@ export const KcacheTopCpuOutputSchema = z
645
735
  */
646
736
  export const KcacheTopIoOutputSchema = z
647
737
  .object({
738
+ success: z.boolean().optional().describe("Whether query succeeded"),
648
739
  topIoQueries: z
649
740
  .array(z.record(z.string(), z.unknown()))
741
+ .optional()
650
742
  .describe("Top I/O-consuming queries"),
651
- count: z.number().describe("Number of queries returned"),
652
- ioType: z.enum(["reads", "writes", "both"]).describe("I/O type ranked by"),
653
- description: z.string().describe("Result description"),
654
- truncated: z.boolean().describe("Results were truncated"),
655
- totalCount: z.number().describe("Total available count"),
743
+ count: z.number().optional().describe("Number of queries returned"),
744
+ ioType: z
745
+ .enum(["reads", "writes", "both"])
746
+ .optional()
747
+ .describe("I/O type ranked by"),
748
+ description: z.string().optional().describe("Result description"),
749
+ truncated: z.boolean().optional().describe("Results were truncated"),
750
+ totalCount: z.number().optional().describe("Total available count"),
751
+ error: z.string().optional().describe("Error message"),
656
752
  })
657
753
  .describe("Top I/O-consuming queries result");
658
754
  /**
@@ -660,10 +756,13 @@ export const KcacheTopIoOutputSchema = z
660
756
  */
661
757
  export const KcacheDatabaseStatsOutputSchema = z
662
758
  .object({
759
+ success: z.boolean().optional().describe("Whether query succeeded"),
663
760
  databaseStats: z
664
761
  .array(z.record(z.string(), z.unknown()))
762
+ .optional()
665
763
  .describe("Database-level statistics"),
666
- count: z.number().describe("Number of databases"),
764
+ count: z.number().optional().describe("Number of databases"),
765
+ error: z.string().optional().describe("Error message"),
667
766
  })
668
767
  .describe("Database-level aggregated statistics");
669
768
  /**
@@ -671,10 +770,12 @@ export const KcacheDatabaseStatsOutputSchema = z
671
770
  */
672
771
  export const KcacheResourceAnalysisOutputSchema = z
673
772
  .object({
773
+ success: z.boolean().optional().describe("Whether analysis succeeded"),
674
774
  queries: z
675
775
  .array(z.record(z.string(), z.unknown()))
776
+ .optional()
676
777
  .describe("Analyzed queries with resource classification"),
677
- count: z.number().describe("Number of queries analyzed"),
778
+ count: z.number().optional().describe("Number of queries analyzed"),
678
779
  summary: z
679
780
  .object({
680
781
  cpuBound: z.number().describe("CPU-bound query count"),
@@ -682,10 +783,12 @@ export const KcacheResourceAnalysisOutputSchema = z
682
783
  balanced: z.number().describe("Balanced query count"),
683
784
  threshold: z.number().describe("Classification threshold"),
684
785
  })
786
+ .optional()
685
787
  .describe("Resource classification summary"),
686
- recommendations: z.array(z.string()).describe("Recommendations"),
687
- truncated: z.boolean().describe("Results were truncated"),
688
- totalCount: z.number().describe("Total available count"),
788
+ recommendations: z.array(z.string()).optional().describe("Recommendations"),
789
+ truncated: z.boolean().optional().describe("Results were truncated"),
790
+ totalCount: z.number().optional().describe("Total available count"),
791
+ error: z.string().optional().describe("Error message"),
689
792
  })
690
793
  .describe("Resource classification analysis result");
691
794
  /**
@@ -693,9 +796,10 @@ export const KcacheResourceAnalysisOutputSchema = z
693
796
  */
694
797
  export const KcacheResetOutputSchema = z
695
798
  .object({
696
- success: z.boolean().describe("Whether reset succeeded"),
697
- message: z.string().describe("Status message"),
698
- note: z.string().describe("Additional note"),
799
+ success: z.boolean().optional().describe("Whether reset succeeded"),
800
+ message: z.string().optional().describe("Status message"),
801
+ note: z.string().optional().describe("Additional note"),
802
+ error: z.string().optional().describe("Error message"),
699
803
  })
700
804
  .describe("pg_stat_kcache reset result");
701
805
  // ============================================================================
@@ -706,9 +810,10 @@ export const KcacheResetOutputSchema = z
706
810
  */
707
811
  export const CitextCreateExtensionOutputSchema = z
708
812
  .object({
709
- success: z.boolean().describe("Whether extension was enabled"),
710
- message: z.string().describe("Status message"),
711
- usage: z.string().describe("Usage information"),
813
+ success: z.boolean().optional().describe("Whether extension was enabled"),
814
+ message: z.string().optional().describe("Status message"),
815
+ usage: z.string().optional().describe("Usage information"),
816
+ error: z.string().optional().describe("Error message"),
712
817
  })
713
818
  .describe("citext extension creation result");
714
819
  /**
@@ -716,7 +821,7 @@ export const CitextCreateExtensionOutputSchema = z
716
821
  */
717
822
  export const CitextConvertColumnOutputSchema = z
718
823
  .object({
719
- success: z.boolean().describe("Whether conversion succeeded"),
824
+ success: z.boolean().optional().describe("Whether conversion succeeded"),
720
825
  message: z.string().optional().describe("Status message"),
721
826
  table: z.string().optional().describe("Qualified table name"),
722
827
  previousType: z.string().optional().describe("Previous column type"),
@@ -749,12 +854,15 @@ export const CitextListColumnsOutputSchema = z
749
854
  .object({
750
855
  columns: z
751
856
  .array(z.record(z.string(), z.unknown()))
857
+ .optional()
752
858
  .describe("citext columns"),
753
- count: z.number().describe("Number of columns returned"),
754
- totalCount: z.number().describe("Total available count"),
755
- truncated: z.boolean().describe("Results were truncated"),
859
+ count: z.number().optional().describe("Number of columns returned"),
860
+ totalCount: z.number().optional().describe("Total available count"),
861
+ truncated: z.boolean().optional().describe("Results were truncated"),
756
862
  limit: z.number().optional().describe("Limit applied"),
757
863
  schema: z.string().optional().describe("Schema filter applied"),
864
+ success: z.boolean().optional().describe("Whether operation succeeded"),
865
+ error: z.string().optional().describe("Error message"),
758
866
  })
759
867
  .describe("List of citext columns");
760
868
  /**
@@ -762,12 +870,14 @@ export const CitextListColumnsOutputSchema = z
762
870
  */
763
871
  export const CitextAnalyzeCandidatesOutputSchema = z
764
872
  .object({
873
+ success: z.boolean().optional().describe("Whether analysis succeeded"),
765
874
  candidates: z
766
875
  .array(z.record(z.string(), z.unknown()))
876
+ .optional()
767
877
  .describe("Candidate columns"),
768
- count: z.number().describe("Number of candidates returned"),
769
- totalCount: z.number().describe("Total available count"),
770
- truncated: z.boolean().describe("Results were truncated"),
878
+ count: z.number().optional().describe("Number of candidates returned"),
879
+ totalCount: z.number().optional().describe("Total available count"),
880
+ truncated: z.boolean().optional().describe("Results were truncated"),
771
881
  limit: z.number().optional().describe("Limit applied"),
772
882
  table: z.string().optional().describe("Table filter applied"),
773
883
  schema: z.string().optional().describe("Schema filter applied"),
@@ -776,13 +886,18 @@ export const CitextAnalyzeCandidatesOutputSchema = z
776
886
  highConfidence: z.number().describe("High confidence count"),
777
887
  mediumConfidence: z.number().describe("Medium confidence count"),
778
888
  })
889
+ .optional()
779
890
  .describe("Confidence summary"),
780
- recommendation: z.string().describe("Recommendation"),
891
+ recommendation: z.string().optional().describe("Recommendation"),
781
892
  excludedSchemas: z
782
893
  .array(z.string())
783
894
  .optional()
784
895
  .describe("Excluded schemas"),
785
- patternsUsed: z.array(z.string()).describe("Search patterns used"),
896
+ patternsUsed: z
897
+ .array(z.string())
898
+ .optional()
899
+ .describe("Search patterns used"),
900
+ error: z.string().optional().describe("Error message"),
786
901
  })
787
902
  .describe("Candidate analysis result");
788
903
  /**
@@ -790,13 +905,18 @@ export const CitextAnalyzeCandidatesOutputSchema = z
790
905
  */
791
906
  export const CitextCompareOutputSchema = z
792
907
  .object({
793
- value1: z.string().describe("First value"),
794
- value2: z.string().describe("Second value"),
908
+ value1: z.string().optional().describe("First value"),
909
+ value2: z.string().optional().describe("Second value"),
795
910
  citextEqual: z.boolean().optional().describe("citext equality result"),
796
- textEqual: z.boolean().describe("Text equality result"),
797
- lowerEqual: z.boolean().describe("Lowercase equality result"),
798
- extensionInstalled: z.boolean().describe("Whether citext is installed"),
911
+ textEqual: z.boolean().optional().describe("Text equality result"),
912
+ lowerEqual: z.boolean().optional().describe("Lowercase equality result"),
913
+ extensionInstalled: z
914
+ .boolean()
915
+ .optional()
916
+ .describe("Whether citext is installed"),
799
917
  hint: z.string().optional().describe("Helpful hint"),
918
+ success: z.boolean().optional().describe("Whether operation succeeded"),
919
+ error: z.string().optional().describe("Error message"),
800
920
  })
801
921
  .describe("Comparison result");
802
922
  /**
@@ -804,7 +924,8 @@ export const CitextCompareOutputSchema = z
804
924
  */
805
925
  export const CitextSchemaAdvisorOutputSchema = z
806
926
  .object({
807
- table: z.string().describe("Analyzed table"),
927
+ success: z.boolean().optional().describe("Whether analysis succeeded"),
928
+ table: z.string().optional().describe("Analyzed table"),
808
929
  recommendations: z
809
930
  .array(z.object({
810
931
  column: z.string().describe("Column name"),
@@ -816,6 +937,7 @@ export const CitextSchemaAdvisorOutputSchema = z
816
937
  confidence: z.enum(["high", "medium", "low"]).describe("Confidence"),
817
938
  reason: z.string().describe("Reason for recommendation"),
818
939
  }))
940
+ .optional()
819
941
  .describe("Column recommendations"),
820
942
  summary: z
821
943
  .object({
@@ -824,8 +946,10 @@ export const CitextSchemaAdvisorOutputSchema = z
824
946
  highConfidence: z.number().describe("High confidence count"),
825
947
  alreadyCitext: z.number().describe("Already citext count"),
826
948
  })
949
+ .optional()
827
950
  .describe("Summary statistics"),
828
- nextSteps: z.array(z.string()).describe("Suggested next steps"),
951
+ nextSteps: z.array(z.string()).optional().describe("Suggested next steps"),
952
+ error: z.string().optional().describe("Error message"),
829
953
  })
830
954
  .describe("Schema advisor result");
831
955
  // ============================================================================
@@ -836,8 +960,9 @@ export const CitextSchemaAdvisorOutputSchema = z
836
960
  */
837
961
  export const LtreeCreateExtensionOutputSchema = z
838
962
  .object({
839
- success: z.boolean().describe("Whether extension was enabled"),
840
- message: z.string().describe("Status message"),
963
+ success: z.boolean().optional().describe("Whether extension was enabled"),
964
+ message: z.string().optional().describe("Status message"),
965
+ error: z.string().optional().describe("Error message"),
841
966
  })
842
967
  .describe("ltree extension creation result");
843
968
  /**
@@ -864,7 +989,7 @@ export const LtreeQueryOutputSchema = z
864
989
  */
865
990
  export const LtreeSubpathOutputSchema = z
866
991
  .object({
867
- originalPath: z.string().describe("Original path"),
992
+ originalPath: z.string().optional().describe("Original path"),
868
993
  offset: z.number().optional().describe("Offset used"),
869
994
  length: z
870
995
  .union([z.number(), z.string()])
@@ -882,9 +1007,11 @@ export const LtreeSubpathOutputSchema = z
882
1007
  */
883
1008
  export const LtreeLcaOutputSchema = z
884
1009
  .object({
885
- paths: z.array(z.string()).describe("Input paths"),
886
- longestCommonAncestor: z.string().describe("LCA path"),
887
- hasCommonAncestor: z.boolean().describe("Whether LCA exists"),
1010
+ paths: z.array(z.string()).optional().describe("Input paths"),
1011
+ longestCommonAncestor: z.string().optional().describe("LCA path"),
1012
+ hasCommonAncestor: z.boolean().optional().describe("Whether LCA exists"),
1013
+ success: z.boolean().optional().describe("Whether operation succeeded"),
1014
+ error: z.string().optional().describe("Error message"),
888
1015
  })
889
1016
  .describe("Longest common ancestor result");
890
1017
  /**
@@ -892,13 +1019,16 @@ export const LtreeLcaOutputSchema = z
892
1019
  */
893
1020
  export const LtreeMatchOutputSchema = z
894
1021
  .object({
895
- pattern: z.string().describe("Query pattern"),
1022
+ success: z.boolean().optional().describe("Whether match succeeded"),
1023
+ pattern: z.string().optional().describe("Query pattern"),
896
1024
  results: z
897
1025
  .array(z.record(z.string(), z.unknown()))
1026
+ .optional()
898
1027
  .describe("Matching results"),
899
- count: z.number().describe("Number of results"),
1028
+ count: z.number().optional().describe("Number of results"),
900
1029
  truncated: z.boolean().optional().describe("Results were truncated"),
901
1030
  totalCount: z.number().optional().describe("Total available count"),
1031
+ error: z.string().optional().describe("Error message"),
902
1032
  })
903
1033
  .describe("Pattern match result");
904
1034
  /**
@@ -908,8 +1038,11 @@ export const LtreeListColumnsOutputSchema = z
908
1038
  .object({
909
1039
  columns: z
910
1040
  .array(z.record(z.string(), z.unknown()))
1041
+ .optional()
911
1042
  .describe("ltree columns"),
912
- count: z.number().describe("Number of columns"),
1043
+ count: z.number().optional().describe("Number of columns"),
1044
+ success: z.boolean().optional().describe("Whether operation succeeded"),
1045
+ error: z.string().optional().describe("Error message"),
913
1046
  })
914
1047
  .describe("List of ltree columns");
915
1048
  /**
@@ -917,7 +1050,7 @@ export const LtreeListColumnsOutputSchema = z
917
1050
  */
918
1051
  export const LtreeConvertColumnOutputSchema = z
919
1052
  .object({
920
- success: z.boolean().describe("Whether conversion succeeded"),
1053
+ success: z.boolean().optional().describe("Whether conversion succeeded"),
921
1054
  message: z.string().optional().describe("Status message"),
922
1055
  table: z.string().optional().describe("Qualified table name"),
923
1056
  previousType: z.string().optional().describe("Previous column type"),
@@ -944,13 +1077,14 @@ export const LtreeConvertColumnOutputSchema = z
944
1077
  */
945
1078
  export const LtreeCreateIndexOutputSchema = z
946
1079
  .object({
947
- success: z.boolean().describe("Whether index was created"),
948
- message: z.string().describe("Status message"),
949
- indexName: z.string().describe("Index name"),
1080
+ success: z.boolean().optional().describe("Whether index was created"),
1081
+ message: z.string().optional().describe("Status message"),
1082
+ indexName: z.string().optional().describe("Index name"),
950
1083
  alreadyExists: z.boolean().optional().describe("Index already existed"),
951
1084
  table: z.string().optional().describe("Qualified table name"),
952
1085
  column: z.string().optional().describe("Column name"),
953
1086
  indexType: z.string().optional().describe("Index type (gist)"),
1087
+ error: z.string().optional().describe("Error message"),
954
1088
  })
955
1089
  .describe("Index creation result");
956
1090
  // ============================================================================
@@ -961,8 +1095,9 @@ export const LtreeCreateIndexOutputSchema = z
961
1095
  */
962
1096
  export const PgcryptoCreateExtensionOutputSchema = z
963
1097
  .object({
964
- success: z.boolean().describe("Whether extension was enabled"),
965
- message: z.string().describe("Status message"),
1098
+ success: z.boolean().optional().describe("Whether extension was enabled"),
1099
+ message: z.string().optional().describe("Status message"),
1100
+ error: z.string().optional().describe("Error message"),
966
1101
  })
967
1102
  .describe("pgcrypto extension creation result");
968
1103
  /**
@@ -970,11 +1105,12 @@ export const PgcryptoCreateExtensionOutputSchema = z
970
1105
  */
971
1106
  export const PgcryptoHashOutputSchema = z
972
1107
  .object({
973
- success: z.boolean().describe("Whether hash succeeded"),
974
- algorithm: z.string().describe("Hash algorithm used"),
975
- encoding: z.string().describe("Output encoding"),
976
- hash: z.string().describe("Hash result"),
977
- inputLength: z.number().describe("Input data length"),
1108
+ success: z.boolean().optional().describe("Whether hash succeeded"),
1109
+ algorithm: z.string().optional().describe("Hash algorithm used"),
1110
+ encoding: z.string().optional().describe("Output encoding"),
1111
+ hash: z.string().optional().describe("Hash result"),
1112
+ inputLength: z.number().optional().describe("Input data length"),
1113
+ error: z.string().optional().describe("Error message"),
978
1114
  })
979
1115
  .describe("Hash result");
980
1116
  /**
@@ -982,10 +1118,11 @@ export const PgcryptoHashOutputSchema = z
982
1118
  */
983
1119
  export const PgcryptoHmacOutputSchema = z
984
1120
  .object({
985
- success: z.boolean().describe("Whether HMAC succeeded"),
986
- algorithm: z.string().describe("HMAC algorithm used"),
987
- encoding: z.string().describe("Output encoding"),
988
- hmac: z.string().describe("HMAC result"),
1121
+ success: z.boolean().optional().describe("Whether HMAC succeeded"),
1122
+ algorithm: z.string().optional().describe("HMAC algorithm used"),
1123
+ encoding: z.string().optional().describe("Output encoding"),
1124
+ hmac: z.string().optional().describe("HMAC result"),
1125
+ error: z.string().optional().describe("Error message"),
989
1126
  })
990
1127
  .describe("HMAC result");
991
1128
  /**
@@ -993,9 +1130,10 @@ export const PgcryptoHmacOutputSchema = z
993
1130
  */
994
1131
  export const PgcryptoEncryptOutputSchema = z
995
1132
  .object({
996
- success: z.boolean().describe("Whether encryption succeeded"),
997
- encrypted: z.string().describe("Encrypted data"),
998
- encoding: z.string().describe("Output encoding"),
1133
+ success: z.boolean().optional().describe("Whether encryption succeeded"),
1134
+ encrypted: z.string().optional().describe("Encrypted data"),
1135
+ encoding: z.string().optional().describe("Output encoding"),
1136
+ error: z.string().optional().describe("Error message"),
999
1137
  })
1000
1138
  .describe("Encryption result");
1001
1139
  /**
@@ -1003,9 +1141,10 @@ export const PgcryptoEncryptOutputSchema = z
1003
1141
  */
1004
1142
  export const PgcryptoDecryptOutputSchema = z
1005
1143
  .object({
1006
- success: z.boolean().describe("Whether decryption succeeded"),
1007
- decrypted: z.string().describe("Decrypted data"),
1008
- verified: z.boolean().describe("Whether decryption verified"),
1144
+ success: z.boolean().optional().describe("Whether decryption succeeded"),
1145
+ decrypted: z.string().optional().describe("Decrypted data"),
1146
+ verified: z.boolean().optional().describe("Whether decryption verified"),
1147
+ error: z.string().optional().describe("Error message"),
1009
1148
  })
1010
1149
  .describe("Decryption result");
1011
1150
  /**
@@ -1013,10 +1152,11 @@ export const PgcryptoDecryptOutputSchema = z
1013
1152
  */
1014
1153
  export const PgcryptoGenRandomUuidOutputSchema = z
1015
1154
  .object({
1016
- success: z.boolean().describe("Whether generation succeeded"),
1017
- uuids: z.array(z.string()).describe("Generated UUIDs"),
1018
- count: z.number().describe("Number of UUIDs generated"),
1155
+ success: z.boolean().optional().describe("Whether generation succeeded"),
1156
+ uuids: z.array(z.string()).optional().describe("Generated UUIDs"),
1157
+ count: z.number().optional().describe("Number of UUIDs generated"),
1019
1158
  uuid: z.string().optional().describe("First UUID (for single requests)"),
1159
+ error: z.string().optional().describe("Error message"),
1020
1160
  })
1021
1161
  .describe("UUID generation result");
1022
1162
  /**
@@ -1024,10 +1164,11 @@ export const PgcryptoGenRandomUuidOutputSchema = z
1024
1164
  */
1025
1165
  export const PgcryptoGenRandomBytesOutputSchema = z
1026
1166
  .object({
1027
- success: z.boolean().describe("Whether generation succeeded"),
1028
- randomBytes: z.string().describe("Random bytes"),
1029
- length: z.number().describe("Number of bytes"),
1030
- encoding: z.string().describe("Output encoding"),
1167
+ success: z.boolean().optional().describe("Whether generation succeeded"),
1168
+ randomBytes: z.string().optional().describe("Random bytes"),
1169
+ length: z.number().optional().describe("Number of bytes"),
1170
+ encoding: z.string().optional().describe("Output encoding"),
1171
+ error: z.string().optional().describe("Error message"),
1031
1172
  })
1032
1173
  .describe("Random bytes generation result");
1033
1174
  /**
@@ -1035,9 +1176,13 @@ export const PgcryptoGenRandomBytesOutputSchema = z
1035
1176
  */
1036
1177
  export const PgcryptoGenSaltOutputSchema = z
1037
1178
  .object({
1038
- success: z.boolean().describe("Whether salt generation succeeded"),
1039
- salt: z.string().describe("Generated salt"),
1040
- type: z.string().describe("Salt type"),
1179
+ success: z
1180
+ .boolean()
1181
+ .optional()
1182
+ .describe("Whether salt generation succeeded"),
1183
+ salt: z.string().optional().describe("Generated salt"),
1184
+ type: z.string().optional().describe("Salt type"),
1185
+ error: z.string().optional().describe("Error message"),
1041
1186
  })
1042
1187
  .describe("Salt generation result");
1043
1188
  /**
@@ -1045,9 +1190,13 @@ export const PgcryptoGenSaltOutputSchema = z
1045
1190
  */
1046
1191
  export const PgcryptoCryptOutputSchema = z
1047
1192
  .object({
1048
- success: z.boolean().describe("Whether password hashing succeeded"),
1049
- hash: z.string().describe("Password hash"),
1050
- algorithm: z.string().describe("Detected algorithm"),
1193
+ success: z
1194
+ .boolean()
1195
+ .optional()
1196
+ .describe("Whether password hashing succeeded"),
1197
+ hash: z.string().optional().describe("Password hash"),
1198
+ algorithm: z.string().optional().describe("Detected algorithm"),
1199
+ error: z.string().optional().describe("Error message"),
1051
1200
  })
1052
1201
  .describe("Password crypt result");
1053
1202
  //# sourceMappingURL=extensions.js.map