@neverinfamous/postgres-mcp 1.1.0 → 1.3.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 (243) hide show
  1. package/README.md +95 -81
  2. package/dist/__tests__/mocks/adapter.d.ts.map +1 -1
  3. package/dist/__tests__/mocks/adapter.js +0 -1
  4. package/dist/__tests__/mocks/adapter.js.map +1 -1
  5. package/dist/__tests__/mocks/pool.d.ts.map +1 -1
  6. package/dist/__tests__/mocks/pool.js +0 -1
  7. package/dist/__tests__/mocks/pool.js.map +1 -1
  8. package/dist/adapters/DatabaseAdapter.js +1 -1
  9. package/dist/adapters/DatabaseAdapter.js.map +1 -1
  10. package/dist/adapters/postgresql/PostgresAdapter.d.ts.map +1 -1
  11. package/dist/adapters/postgresql/PostgresAdapter.js +78 -8
  12. package/dist/adapters/postgresql/PostgresAdapter.js.map +1 -1
  13. package/dist/adapters/postgresql/prompts/backup.d.ts.map +1 -1
  14. package/dist/adapters/postgresql/prompts/backup.js +2 -3
  15. package/dist/adapters/postgresql/prompts/backup.js.map +1 -1
  16. package/dist/adapters/postgresql/prompts/citext.d.ts.map +1 -1
  17. package/dist/adapters/postgresql/prompts/citext.js +3 -4
  18. package/dist/adapters/postgresql/prompts/citext.js.map +1 -1
  19. package/dist/adapters/postgresql/prompts/extensionSetup.d.ts.map +1 -1
  20. package/dist/adapters/postgresql/prompts/extensionSetup.js +2 -3
  21. package/dist/adapters/postgresql/prompts/extensionSetup.js.map +1 -1
  22. package/dist/adapters/postgresql/prompts/health.d.ts.map +1 -1
  23. package/dist/adapters/postgresql/prompts/health.js +2 -3
  24. package/dist/adapters/postgresql/prompts/health.js.map +1 -1
  25. package/dist/adapters/postgresql/prompts/index.js +20 -27
  26. package/dist/adapters/postgresql/prompts/index.js.map +1 -1
  27. package/dist/adapters/postgresql/prompts/indexTuning.d.ts.map +1 -1
  28. package/dist/adapters/postgresql/prompts/indexTuning.js +2 -3
  29. package/dist/adapters/postgresql/prompts/indexTuning.js.map +1 -1
  30. package/dist/adapters/postgresql/prompts/kcache.d.ts.map +1 -1
  31. package/dist/adapters/postgresql/prompts/kcache.js +3 -4
  32. package/dist/adapters/postgresql/prompts/kcache.js.map +1 -1
  33. package/dist/adapters/postgresql/prompts/ltree.d.ts.map +1 -1
  34. package/dist/adapters/postgresql/prompts/ltree.js +5 -6
  35. package/dist/adapters/postgresql/prompts/ltree.js.map +1 -1
  36. package/dist/adapters/postgresql/prompts/partman.d.ts.map +1 -1
  37. package/dist/adapters/postgresql/prompts/partman.js +2 -3
  38. package/dist/adapters/postgresql/prompts/partman.js.map +1 -1
  39. package/dist/adapters/postgresql/prompts/pgcron.d.ts.map +1 -1
  40. package/dist/adapters/postgresql/prompts/pgcron.js +2 -3
  41. package/dist/adapters/postgresql/prompts/pgcron.js.map +1 -1
  42. package/dist/adapters/postgresql/prompts/pgcrypto.d.ts.map +1 -1
  43. package/dist/adapters/postgresql/prompts/pgcrypto.js +3 -4
  44. package/dist/adapters/postgresql/prompts/pgcrypto.js.map +1 -1
  45. package/dist/adapters/postgresql/prompts/pgvector.d.ts.map +1 -1
  46. package/dist/adapters/postgresql/prompts/pgvector.js +3 -4
  47. package/dist/adapters/postgresql/prompts/pgvector.js.map +1 -1
  48. package/dist/adapters/postgresql/prompts/postgis.d.ts.map +1 -1
  49. package/dist/adapters/postgresql/prompts/postgis.js +2 -3
  50. package/dist/adapters/postgresql/prompts/postgis.js.map +1 -1
  51. package/dist/adapters/postgresql/schemas/admin.d.ts +10 -5
  52. package/dist/adapters/postgresql/schemas/admin.d.ts.map +1 -1
  53. package/dist/adapters/postgresql/schemas/admin.js +10 -5
  54. package/dist/adapters/postgresql/schemas/admin.js.map +1 -1
  55. package/dist/adapters/postgresql/schemas/backup.d.ts +8 -4
  56. package/dist/adapters/postgresql/schemas/backup.d.ts.map +1 -1
  57. package/dist/adapters/postgresql/schemas/backup.js +11 -4
  58. package/dist/adapters/postgresql/schemas/backup.js.map +1 -1
  59. package/dist/adapters/postgresql/schemas/core.d.ts +54 -19
  60. package/dist/adapters/postgresql/schemas/core.d.ts.map +1 -1
  61. package/dist/adapters/postgresql/schemas/core.js +65 -17
  62. package/dist/adapters/postgresql/schemas/core.js.map +1 -1
  63. package/dist/adapters/postgresql/schemas/cron.d.ts +51 -32
  64. package/dist/adapters/postgresql/schemas/cron.d.ts.map +1 -1
  65. package/dist/adapters/postgresql/schemas/cron.js +64 -44
  66. package/dist/adapters/postgresql/schemas/cron.js.map +1 -1
  67. package/dist/adapters/postgresql/schemas/extensions.d.ts +168 -73
  68. package/dist/adapters/postgresql/schemas/extensions.d.ts.map +1 -1
  69. package/dist/adapters/postgresql/schemas/extensions.js +179 -62
  70. package/dist/adapters/postgresql/schemas/extensions.js.map +1 -1
  71. package/dist/adapters/postgresql/schemas/index.d.ts +5 -5
  72. package/dist/adapters/postgresql/schemas/index.d.ts.map +1 -1
  73. package/dist/adapters/postgresql/schemas/index.js +9 -7
  74. package/dist/adapters/postgresql/schemas/index.js.map +1 -1
  75. package/dist/adapters/postgresql/schemas/jsonb.d.ts +94 -42
  76. package/dist/adapters/postgresql/schemas/jsonb.d.ts.map +1 -1
  77. package/dist/adapters/postgresql/schemas/jsonb.js +101 -30
  78. package/dist/adapters/postgresql/schemas/jsonb.js.map +1 -1
  79. package/dist/adapters/postgresql/schemas/monitoring.d.ts +28 -11
  80. package/dist/adapters/postgresql/schemas/monitoring.d.ts.map +1 -1
  81. package/dist/adapters/postgresql/schemas/monitoring.js +49 -24
  82. package/dist/adapters/postgresql/schemas/monitoring.js.map +1 -1
  83. package/dist/adapters/postgresql/schemas/partitioning.d.ts +15 -11
  84. package/dist/adapters/postgresql/schemas/partitioning.d.ts.map +1 -1
  85. package/dist/adapters/postgresql/schemas/partitioning.js +17 -13
  86. package/dist/adapters/postgresql/schemas/partitioning.js.map +1 -1
  87. package/dist/adapters/postgresql/schemas/performance.d.ts +62 -31
  88. package/dist/adapters/postgresql/schemas/performance.d.ts.map +1 -1
  89. package/dist/adapters/postgresql/schemas/performance.js +86 -24
  90. package/dist/adapters/postgresql/schemas/performance.js.map +1 -1
  91. package/dist/adapters/postgresql/schemas/postgis.d.ts +20 -0
  92. package/dist/adapters/postgresql/schemas/postgis.d.ts.map +1 -1
  93. package/dist/adapters/postgresql/schemas/postgis.js +20 -3
  94. package/dist/adapters/postgresql/schemas/postgis.js.map +1 -1
  95. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts +35 -23
  96. package/dist/adapters/postgresql/schemas/schema-mgmt.d.ts.map +1 -1
  97. package/dist/adapters/postgresql/schemas/schema-mgmt.js +69 -26
  98. package/dist/adapters/postgresql/schemas/schema-mgmt.js.map +1 -1
  99. package/dist/adapters/postgresql/schemas/stats.d.ts +33 -20
  100. package/dist/adapters/postgresql/schemas/stats.d.ts.map +1 -1
  101. package/dist/adapters/postgresql/schemas/stats.js +36 -20
  102. package/dist/adapters/postgresql/schemas/stats.js.map +1 -1
  103. package/dist/adapters/postgresql/schemas/text-search.d.ts +8 -5
  104. package/dist/adapters/postgresql/schemas/text-search.d.ts.map +1 -1
  105. package/dist/adapters/postgresql/schemas/text-search.js +15 -5
  106. package/dist/adapters/postgresql/schemas/text-search.js.map +1 -1
  107. package/dist/adapters/postgresql/tools/admin.d.ts.map +1 -1
  108. package/dist/adapters/postgresql/tools/admin.js +211 -140
  109. package/dist/adapters/postgresql/tools/admin.js.map +1 -1
  110. package/dist/adapters/postgresql/tools/backup/dump.d.ts.map +1 -1
  111. package/dist/adapters/postgresql/tools/backup/dump.js +410 -387
  112. package/dist/adapters/postgresql/tools/backup/dump.js.map +1 -1
  113. package/dist/adapters/postgresql/tools/backup/planning.d.ts.map +1 -1
  114. package/dist/adapters/postgresql/tools/backup/planning.js +175 -172
  115. package/dist/adapters/postgresql/tools/backup/planning.js.map +1 -1
  116. package/dist/adapters/postgresql/tools/citext.d.ts.map +1 -1
  117. package/dist/adapters/postgresql/tools/citext.js +221 -163
  118. package/dist/adapters/postgresql/tools/citext.js.map +1 -1
  119. package/dist/adapters/postgresql/tools/core/convenience.d.ts +9 -1
  120. package/dist/adapters/postgresql/tools/core/convenience.d.ts.map +1 -1
  121. package/dist/adapters/postgresql/tools/core/convenience.js +96 -9
  122. package/dist/adapters/postgresql/tools/core/convenience.js.map +1 -1
  123. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts +48 -0
  124. package/dist/adapters/postgresql/tools/core/error-helpers.d.ts.map +1 -0
  125. package/dist/adapters/postgresql/tools/core/error-helpers.js +256 -0
  126. package/dist/adapters/postgresql/tools/core/error-helpers.js.map +1 -0
  127. package/dist/adapters/postgresql/tools/core/health.d.ts.map +1 -1
  128. package/dist/adapters/postgresql/tools/core/health.js +23 -6
  129. package/dist/adapters/postgresql/tools/core/health.js.map +1 -1
  130. package/dist/adapters/postgresql/tools/core/indexes.d.ts.map +1 -1
  131. package/dist/adapters/postgresql/tools/core/indexes.js +45 -4
  132. package/dist/adapters/postgresql/tools/core/indexes.js.map +1 -1
  133. package/dist/adapters/postgresql/tools/core/objects.d.ts.map +1 -1
  134. package/dist/adapters/postgresql/tools/core/objects.js +104 -85
  135. package/dist/adapters/postgresql/tools/core/objects.js.map +1 -1
  136. package/dist/adapters/postgresql/tools/core/query.d.ts.map +1 -1
  137. package/dist/adapters/postgresql/tools/core/query.js +100 -42
  138. package/dist/adapters/postgresql/tools/core/query.js.map +1 -1
  139. package/dist/adapters/postgresql/tools/core/schemas.d.ts +52 -25
  140. package/dist/adapters/postgresql/tools/core/schemas.d.ts.map +1 -1
  141. package/dist/adapters/postgresql/tools/core/schemas.js +55 -25
  142. package/dist/adapters/postgresql/tools/core/schemas.js.map +1 -1
  143. package/dist/adapters/postgresql/tools/core/tables.d.ts.map +1 -1
  144. package/dist/adapters/postgresql/tools/core/tables.js +74 -30
  145. package/dist/adapters/postgresql/tools/core/tables.js.map +1 -1
  146. package/dist/adapters/postgresql/tools/cron.d.ts.map +1 -1
  147. package/dist/adapters/postgresql/tools/cron.js +274 -179
  148. package/dist/adapters/postgresql/tools/cron.js.map +1 -1
  149. package/dist/adapters/postgresql/tools/jsonb/advanced.d.ts.map +1 -1
  150. package/dist/adapters/postgresql/tools/jsonb/advanced.js +372 -284
  151. package/dist/adapters/postgresql/tools/jsonb/advanced.js.map +1 -1
  152. package/dist/adapters/postgresql/tools/jsonb/basic.d.ts.map +1 -1
  153. package/dist/adapters/postgresql/tools/jsonb/basic.js +617 -398
  154. package/dist/adapters/postgresql/tools/jsonb/basic.js.map +1 -1
  155. package/dist/adapters/postgresql/tools/kcache.d.ts.map +1 -1
  156. package/dist/adapters/postgresql/tools/kcache.js +282 -220
  157. package/dist/adapters/postgresql/tools/kcache.js.map +1 -1
  158. package/dist/adapters/postgresql/tools/ltree.d.ts.map +1 -1
  159. package/dist/adapters/postgresql/tools/ltree.js +126 -35
  160. package/dist/adapters/postgresql/tools/ltree.js.map +1 -1
  161. package/dist/adapters/postgresql/tools/monitoring.d.ts.map +1 -1
  162. package/dist/adapters/postgresql/tools/monitoring.js +59 -40
  163. package/dist/adapters/postgresql/tools/monitoring.js.map +1 -1
  164. package/dist/adapters/postgresql/tools/partitioning.d.ts.map +1 -1
  165. package/dist/adapters/postgresql/tools/partitioning.js +150 -15
  166. package/dist/adapters/postgresql/tools/partitioning.js.map +1 -1
  167. package/dist/adapters/postgresql/tools/partman/management.d.ts.map +1 -1
  168. package/dist/adapters/postgresql/tools/partman/management.js +12 -5
  169. package/dist/adapters/postgresql/tools/partman/management.js.map +1 -1
  170. package/dist/adapters/postgresql/tools/partman/operations.d.ts.map +1 -1
  171. package/dist/adapters/postgresql/tools/partman/operations.js +135 -22
  172. package/dist/adapters/postgresql/tools/partman/operations.js.map +1 -1
  173. package/dist/adapters/postgresql/tools/performance/analysis.d.ts.map +1 -1
  174. package/dist/adapters/postgresql/tools/performance/analysis.js +264 -160
  175. package/dist/adapters/postgresql/tools/performance/analysis.js.map +1 -1
  176. package/dist/adapters/postgresql/tools/performance/explain.d.ts.map +1 -1
  177. package/dist/adapters/postgresql/tools/performance/explain.js +61 -21
  178. package/dist/adapters/postgresql/tools/performance/explain.js.map +1 -1
  179. package/dist/adapters/postgresql/tools/performance/monitoring.d.ts.map +1 -1
  180. package/dist/adapters/postgresql/tools/performance/monitoring.js +44 -7
  181. package/dist/adapters/postgresql/tools/performance/monitoring.js.map +1 -1
  182. package/dist/adapters/postgresql/tools/performance/optimization.d.ts.map +1 -1
  183. package/dist/adapters/postgresql/tools/performance/optimization.js +92 -81
  184. package/dist/adapters/postgresql/tools/performance/optimization.js.map +1 -1
  185. package/dist/adapters/postgresql/tools/performance/stats.d.ts.map +1 -1
  186. package/dist/adapters/postgresql/tools/performance/stats.js +128 -37
  187. package/dist/adapters/postgresql/tools/performance/stats.js.map +1 -1
  188. package/dist/adapters/postgresql/tools/pgcrypto.d.ts.map +1 -1
  189. package/dist/adapters/postgresql/tools/pgcrypto.js +242 -87
  190. package/dist/adapters/postgresql/tools/pgcrypto.js.map +1 -1
  191. package/dist/adapters/postgresql/tools/postgis/advanced.d.ts.map +1 -1
  192. package/dist/adapters/postgresql/tools/postgis/advanced.js +293 -201
  193. package/dist/adapters/postgresql/tools/postgis/advanced.js.map +1 -1
  194. package/dist/adapters/postgresql/tools/postgis/basic.d.ts.map +1 -1
  195. package/dist/adapters/postgresql/tools/postgis/basic.js +359 -249
  196. package/dist/adapters/postgresql/tools/postgis/basic.js.map +1 -1
  197. package/dist/adapters/postgresql/tools/postgis/standalone.d.ts.map +1 -1
  198. package/dist/adapters/postgresql/tools/postgis/standalone.js +135 -51
  199. package/dist/adapters/postgresql/tools/postgis/standalone.js.map +1 -1
  200. package/dist/adapters/postgresql/tools/schema.d.ts.map +1 -1
  201. package/dist/adapters/postgresql/tools/schema.js +515 -226
  202. package/dist/adapters/postgresql/tools/schema.js.map +1 -1
  203. package/dist/adapters/postgresql/tools/stats/advanced.d.ts.map +1 -1
  204. package/dist/adapters/postgresql/tools/stats/advanced.js +515 -476
  205. package/dist/adapters/postgresql/tools/stats/advanced.js.map +1 -1
  206. package/dist/adapters/postgresql/tools/stats/basic.d.ts.map +1 -1
  207. package/dist/adapters/postgresql/tools/stats/basic.js +302 -293
  208. package/dist/adapters/postgresql/tools/stats/basic.js.map +1 -1
  209. package/dist/adapters/postgresql/tools/text.d.ts.map +1 -1
  210. package/dist/adapters/postgresql/tools/text.js +398 -220
  211. package/dist/adapters/postgresql/tools/text.js.map +1 -1
  212. package/dist/adapters/postgresql/tools/transactions.d.ts.map +1 -1
  213. package/dist/adapters/postgresql/tools/transactions.js +157 -50
  214. package/dist/adapters/postgresql/tools/transactions.js.map +1 -1
  215. package/dist/adapters/postgresql/tools/vector/advanced.d.ts.map +1 -1
  216. package/dist/adapters/postgresql/tools/vector/advanced.js +70 -38
  217. package/dist/adapters/postgresql/tools/vector/advanced.js.map +1 -1
  218. package/dist/adapters/postgresql/tools/vector/basic.d.ts +8 -0
  219. package/dist/adapters/postgresql/tools/vector/basic.d.ts.map +1 -1
  220. package/dist/adapters/postgresql/tools/vector/basic.js +194 -82
  221. package/dist/adapters/postgresql/tools/vector/basic.js.map +1 -1
  222. package/dist/cli/args.d.ts +2 -0
  223. package/dist/cli/args.d.ts.map +1 -1
  224. package/dist/cli/args.js +15 -0
  225. package/dist/cli/args.js.map +1 -1
  226. package/dist/cli.js +7 -6
  227. package/dist/cli.js.map +1 -1
  228. package/dist/codemode/api.d.ts.map +1 -1
  229. package/dist/codemode/api.js +4 -3
  230. package/dist/codemode/api.js.map +1 -1
  231. package/dist/constants/ServerInstructions.d.ts +1 -1
  232. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  233. package/dist/constants/ServerInstructions.js +76 -34
  234. package/dist/constants/ServerInstructions.js.map +1 -1
  235. package/dist/filtering/ToolConstants.d.ts +29 -13
  236. package/dist/filtering/ToolConstants.d.ts.map +1 -1
  237. package/dist/filtering/ToolConstants.js +44 -27
  238. package/dist/filtering/ToolConstants.js.map +1 -1
  239. package/dist/utils/logger.js +2 -2
  240. package/dist/utils/logger.js.map +1 -1
  241. package/dist/utils/progress-utils.js +1 -1
  242. package/dist/utils/progress-utils.js.map +1 -1
  243. package/package.json +13 -9
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { readOnly, write } from "../../../../utils/annotations.js";
7
7
  import { getToolIcons } from "../../../../utils/icons.js";
8
+ import { parsePostgresError } from "./error-helpers.js";
8
9
  import { ReadQuerySchemaBase, ReadQuerySchema, WriteQuerySchemaBase, WriteQuerySchema, } from "../../schemas/index.js";
9
10
  import { ReadQueryOutputSchema, WriteQueryOutputSchema } from "./schemas.js";
10
11
  /**
@@ -20,28 +21,55 @@ export function createReadQueryTool(adapter) {
20
21
  annotations: readOnly("Read Query"),
21
22
  icons: getToolIcons("core", readOnly("Read Query")),
22
23
  handler: async (params, _context) => {
23
- const { sql, params: queryParams, transactionId, } = ReadQuerySchema.parse(params);
24
- let result;
25
- if (transactionId !== undefined) {
26
- const client = adapter.getTransactionConnection(transactionId);
27
- if (!client) {
28
- throw new Error(`Invalid or expired transactionId: ${transactionId}. Use pg_transaction_begin to start a new transaction.`);
24
+ try {
25
+ const { sql, params: queryParams, transactionId, } = ReadQuerySchema.parse(params);
26
+ let result;
27
+ if (transactionId !== undefined) {
28
+ const client = adapter.getTransactionConnection(transactionId);
29
+ if (!client) {
30
+ return {
31
+ success: false,
32
+ error: `Invalid or expired transactionId: ${transactionId}. Use pg_transaction_begin to start a new transaction.`,
33
+ };
34
+ }
35
+ try {
36
+ result = await adapter.executeOnConnection(client, sql, queryParams);
37
+ }
38
+ catch (error) {
39
+ const parsed = parsePostgresError(error, {
40
+ tool: "pg_read_query",
41
+ sql,
42
+ });
43
+ return { success: false, error: parsed.message };
44
+ }
29
45
  }
30
- result = await adapter.executeOnConnection(client, sql, queryParams);
46
+ else {
47
+ try {
48
+ result = await adapter.executeReadQuery(sql, queryParams);
49
+ }
50
+ catch (error) {
51
+ const parsed = parsePostgresError(error, {
52
+ tool: "pg_read_query",
53
+ sql,
54
+ });
55
+ return { success: false, error: parsed.message };
56
+ }
57
+ }
58
+ return {
59
+ rows: result.rows,
60
+ rowCount: result.rows?.length ?? 0,
61
+ // Include column metadata if available
62
+ fields: result.fields?.map((f) => ({
63
+ name: f.name,
64
+ dataTypeID: f.dataTypeID,
65
+ })),
66
+ executionTimeMs: result.executionTimeMs,
67
+ };
31
68
  }
32
- else {
33
- result = await adapter.executeReadQuery(sql, queryParams);
69
+ catch (error) {
70
+ const message = error instanceof Error ? error.message : String(error);
71
+ return { success: false, error: message };
34
72
  }
35
- return {
36
- rows: result.rows,
37
- rowCount: result.rows?.length ?? 0,
38
- // Include column metadata if available
39
- fields: result.fields?.map((f) => ({
40
- name: f.name,
41
- dataTypeID: f.dataTypeID,
42
- })),
43
- executionTimeMs: result.executionTimeMs,
44
- };
45
73
  },
46
74
  };
47
75
  }
@@ -58,32 +86,62 @@ export function createWriteQueryTool(adapter) {
58
86
  annotations: write("Write Query"),
59
87
  icons: getToolIcons("core", write("Write Query")),
60
88
  handler: async (params, _context) => {
61
- const { sql, params: queryParams, transactionId, } = WriteQuerySchema.parse(params);
62
- // Block SELECT statements - use pg_read_query instead
63
- const trimmedUpper = sql.trim().toUpperCase();
64
- if (trimmedUpper.startsWith("SELECT")) {
65
- throw new Error("pg_write_query is for INSERT/UPDATE/DELETE only. Use pg_read_query for SELECT statements.");
66
- }
67
- let result;
68
- if (transactionId !== undefined) {
69
- const client = adapter.getTransactionConnection(transactionId);
70
- if (!client) {
71
- throw new Error(`Invalid or expired transactionId: ${transactionId}. Use pg_transaction_begin to start a new transaction.`);
89
+ try {
90
+ const { sql, params: queryParams, transactionId, } = WriteQuerySchema.parse(params);
91
+ // Block SELECT statements - use pg_read_query instead
92
+ const trimmedUpper = sql.trim().toUpperCase();
93
+ if (trimmedUpper.startsWith("SELECT")) {
94
+ return {
95
+ success: false,
96
+ error: "pg_write_query is for INSERT/UPDATE/DELETE only. Use pg_read_query for SELECT statements.",
97
+ };
98
+ }
99
+ let result;
100
+ if (transactionId !== undefined) {
101
+ const client = adapter.getTransactionConnection(transactionId);
102
+ if (!client) {
103
+ return {
104
+ success: false,
105
+ error: `Invalid or expired transactionId: ${transactionId}. Use pg_transaction_begin to start a new transaction.`,
106
+ };
107
+ }
108
+ try {
109
+ result = await adapter.executeOnConnection(client, sql, queryParams);
110
+ }
111
+ catch (error) {
112
+ const parsed = parsePostgresError(error, {
113
+ tool: "pg_write_query",
114
+ sql,
115
+ });
116
+ return { success: false, error: parsed.message };
117
+ }
118
+ }
119
+ else {
120
+ try {
121
+ result = await adapter.executeWriteQuery(sql, queryParams);
122
+ }
123
+ catch (error) {
124
+ const parsed = parsePostgresError(error, {
125
+ tool: "pg_write_query",
126
+ sql,
127
+ });
128
+ return { success: false, error: parsed.message };
129
+ }
72
130
  }
73
- result = await adapter.executeOnConnection(client, sql, queryParams);
131
+ return {
132
+ rowsAffected: result.rowsAffected ?? 0,
133
+ affectedRows: result.rowsAffected ?? 0, // Alias for common API naming
134
+ rowCount: result.rowsAffected ?? 0, // Alias for consistency
135
+ command: result.command,
136
+ executionTimeMs: result.executionTimeMs,
137
+ // Include returned rows when using RETURNING clause
138
+ ...(result.rows && result.rows.length > 0 && { rows: result.rows }),
139
+ };
74
140
  }
75
- else {
76
- result = await adapter.executeWriteQuery(sql, queryParams);
141
+ catch (error) {
142
+ const message = error instanceof Error ? error.message : String(error);
143
+ return { success: false, error: message };
77
144
  }
78
- return {
79
- rowsAffected: result.rowsAffected,
80
- affectedRows: result.rowsAffected, // Alias for common API naming
81
- rowCount: result.rowsAffected, // Alias for consistency
82
- command: result.command,
83
- executionTimeMs: result.executionTimeMs,
84
- // Include returned rows when using RETURNING clause
85
- ...(result.rows && result.rows.length > 0 && { rows: result.rows }),
86
- };
87
145
  },
88
146
  };
89
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/query.ts"],"names":[],"mappings":"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"}
@@ -96,14 +96,25 @@ export declare const ObjectDetailsSchema: z.ZodPipe<z.ZodPipe<z.ZodTransform<unk
96
96
  type?: "function" | "table" | "view" | "materialized_view" | "partitioned_table" | "index" | "sequence" | undefined;
97
97
  objectType?: "function" | "table" | "view" | "materialized_view" | "partitioned_table" | "index" | "sequence" | undefined;
98
98
  }>>;
99
+ export declare const AnalyzeDbHealthSchemaBase: z.ZodObject<{
100
+ includeIndexes: z.ZodOptional<z.ZodBoolean>;
101
+ includeVacuum: z.ZodOptional<z.ZodBoolean>;
102
+ includeConnections: z.ZodOptional<z.ZodBoolean>;
103
+ }, z.core.$strip>;
99
104
  export declare const AnalyzeDbHealthSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
100
105
  includeIndexes: z.ZodOptional<z.ZodBoolean>;
101
106
  includeVacuum: z.ZodOptional<z.ZodBoolean>;
102
107
  includeConnections: z.ZodOptional<z.ZodBoolean>;
103
108
  }, z.core.$strip>>;
109
+ export declare const AnalyzeWorkloadIndexesSchemaBase: z.ZodObject<{
110
+ topQueries: z.ZodOptional<z.ZodNumber>;
111
+ minCalls: z.ZodOptional<z.ZodNumber>;
112
+ queryPreviewLength: z.ZodOptional<z.ZodNumber>;
113
+ }, z.core.$strip>;
104
114
  export declare const AnalyzeWorkloadIndexesSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
105
115
  topQueries: z.ZodOptional<z.ZodNumber>;
106
116
  minCalls: z.ZodOptional<z.ZodNumber>;
117
+ queryPreviewLength: z.ZodOptional<z.ZodNumber>;
107
118
  }, z.core.$strip>>;
108
119
  export declare const AnalyzeQueryIndexesSchemaBase: z.ZodObject<{
109
120
  sql: z.ZodOptional<z.ZodString>;
@@ -133,18 +144,20 @@ export declare const AnalyzeQueryIndexesSchema: z.ZodPipe<z.ZodObject<{
133
144
  verbosity?: "full" | "summary" | undefined;
134
145
  }>>;
135
146
  export declare const ReadQueryOutputSchema: z.ZodObject<{
136
- rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
137
- rowCount: z.ZodNumber;
147
+ success: z.ZodOptional<z.ZodBoolean>;
148
+ rows: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
149
+ rowCount: z.ZodOptional<z.ZodNumber>;
138
150
  fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
139
151
  name: z.ZodString;
140
152
  dataTypeID: z.ZodOptional<z.ZodNumber>;
141
153
  }, z.core.$strip>>>;
142
154
  executionTimeMs: z.ZodOptional<z.ZodNumber>;
155
+ error: z.ZodOptional<z.ZodString>;
143
156
  }, z.core.$strip>;
144
157
  export declare const WriteQueryOutputSchema: z.ZodObject<{
145
158
  success: z.ZodOptional<z.ZodBoolean>;
146
159
  operation: z.ZodOptional<z.ZodString>;
147
- rowsAffected: z.ZodNumber;
160
+ rowsAffected: z.ZodOptional<z.ZodNumber>;
148
161
  affectedRows: z.ZodOptional<z.ZodNumber>;
149
162
  rowCount: z.ZodOptional<z.ZodNumber>;
150
163
  insertedCount: z.ZodOptional<z.ZodNumber>;
@@ -153,6 +166,7 @@ export declare const WriteQueryOutputSchema: z.ZodObject<{
153
166
  rows: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
154
167
  sql: z.ZodOptional<z.ZodString>;
155
168
  hint: z.ZodOptional<z.ZodString>;
169
+ error: z.ZodOptional<z.ZodString>;
156
170
  }, z.core.$strip>;
157
171
  export declare const TableListOutputSchema: z.ZodObject<{
158
172
  tables: z.ZodArray<z.ZodObject<{
@@ -168,37 +182,42 @@ export declare const TableListOutputSchema: z.ZodObject<{
168
182
  hint: z.ZodOptional<z.ZodString>;
169
183
  }, z.core.$strip>;
170
184
  export declare const TableDescribeOutputSchema: z.ZodObject<{
171
- name: z.ZodString;
172
- schema: z.ZodString;
173
- type: z.ZodString;
174
- columns: z.ZodArray<z.ZodObject<{
185
+ success: z.ZodOptional<z.ZodBoolean>;
186
+ name: z.ZodOptional<z.ZodString>;
187
+ schema: z.ZodOptional<z.ZodString>;
188
+ type: z.ZodOptional<z.ZodString>;
189
+ columns: z.ZodOptional<z.ZodArray<z.ZodObject<{
175
190
  name: z.ZodString;
176
191
  type: z.ZodString;
177
192
  nullable: z.ZodBoolean;
178
193
  default: z.ZodOptional<z.ZodString>;
179
194
  primaryKey: z.ZodOptional<z.ZodBoolean>;
180
- }, z.core.$strip>>;
181
- primaryKey: z.ZodOptional<z.ZodArray<z.ZodString>>;
195
+ }, z.core.$strip>>>;
196
+ primaryKey: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
182
197
  foreignKeys: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
183
198
  indexes: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
184
199
  rowCount: z.ZodOptional<z.ZodNumber>;
200
+ error: z.ZodOptional<z.ZodString>;
185
201
  }, z.core.$strip>;
186
202
  export declare const TableOperationOutputSchema: z.ZodObject<{
187
- success: z.ZodBoolean;
203
+ success: z.ZodOptional<z.ZodBoolean>;
188
204
  table: z.ZodOptional<z.ZodString>;
189
205
  dropped: z.ZodOptional<z.ZodString>;
190
206
  existed: z.ZodOptional<z.ZodBoolean>;
191
207
  sql: z.ZodOptional<z.ZodString>;
192
208
  compositePrimaryKey: z.ZodOptional<z.ZodArray<z.ZodString>>;
209
+ error: z.ZodOptional<z.ZodString>;
193
210
  }, z.core.$strip>;
194
211
  export declare const TruncateOutputSchema: z.ZodObject<{
195
212
  success: z.ZodBoolean;
196
- table: z.ZodString;
197
- cascade: z.ZodBoolean;
198
- restartIdentity: z.ZodBoolean;
213
+ table: z.ZodOptional<z.ZodString>;
214
+ cascade: z.ZodOptional<z.ZodBoolean>;
215
+ restartIdentity: z.ZodOptional<z.ZodBoolean>;
216
+ error: z.ZodOptional<z.ZodString>;
199
217
  }, z.core.$strip>;
200
218
  export declare const IndexListOutputSchema: z.ZodObject<{
201
- indexes: z.ZodArray<z.ZodObject<{
219
+ success: z.ZodOptional<z.ZodBoolean>;
220
+ indexes: z.ZodOptional<z.ZodArray<z.ZodObject<{
202
221
  name: z.ZodString;
203
222
  table: z.ZodOptional<z.ZodString>;
204
223
  tableName: z.ZodOptional<z.ZodString>;
@@ -208,19 +227,21 @@ export declare const IndexListOutputSchema: z.ZodObject<{
208
227
  type: z.ZodOptional<z.ZodString>;
209
228
  unique: z.ZodOptional<z.ZodBoolean>;
210
229
  columns: z.ZodOptional<z.ZodArray<z.ZodString>>;
211
- }, z.core.$strip>>;
212
- count: z.ZodNumber;
230
+ }, z.core.$strip>>>;
231
+ count: z.ZodOptional<z.ZodNumber>;
213
232
  totalCount: z.ZodOptional<z.ZodNumber>;
214
233
  truncated: z.ZodOptional<z.ZodBoolean>;
215
234
  hint: z.ZodOptional<z.ZodString>;
235
+ error: z.ZodOptional<z.ZodString>;
216
236
  }, z.core.$strip>;
217
237
  export declare const IndexOperationOutputSchema: z.ZodObject<{
218
- success: z.ZodBoolean;
238
+ success: z.ZodOptional<z.ZodBoolean>;
219
239
  message: z.ZodOptional<z.ZodString>;
220
240
  index: z.ZodOptional<z.ZodString>;
221
241
  table: z.ZodOptional<z.ZodString>;
222
242
  sql: z.ZodOptional<z.ZodString>;
223
243
  hint: z.ZodOptional<z.ZodString>;
244
+ error: z.ZodOptional<z.ZodString>;
224
245
  }, z.core.$strip>;
225
246
  export declare const ObjectListOutputSchema: z.ZodObject<{
226
247
  objects: z.ZodArray<z.ZodObject<{
@@ -235,11 +256,13 @@ export declare const ObjectListOutputSchema: z.ZodObject<{
235
256
  hint: z.ZodOptional<z.ZodString>;
236
257
  }, z.core.$strip>;
237
258
  export declare const ObjectDetailsOutputSchema: z.ZodObject<{
238
- name: z.ZodString;
239
- schema: z.ZodString;
240
- type: z.ZodString;
259
+ success: z.ZodOptional<z.ZodBoolean>;
260
+ name: z.ZodOptional<z.ZodString>;
261
+ schema: z.ZodOptional<z.ZodString>;
262
+ type: z.ZodOptional<z.ZodString>;
241
263
  owner: z.ZodOptional<z.ZodString>;
242
264
  details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
265
+ error: z.ZodOptional<z.ZodString>;
243
266
  }, z.core.$strip>;
244
267
  export declare const ExtensionListOutputSchema: z.ZodObject<{
245
268
  extensions: z.ZodArray<z.ZodObject<{
@@ -284,16 +307,20 @@ export declare const QueryIndexAnalysisOutputSchema: z.ZodObject<{
284
307
  error: z.ZodOptional<z.ZodString>;
285
308
  }, z.core.$strip>;
286
309
  export declare const CountOutputSchema: z.ZodObject<{
287
- count: z.ZodNumber;
310
+ success: z.ZodOptional<z.ZodBoolean>;
311
+ count: z.ZodOptional<z.ZodNumber>;
312
+ error: z.ZodOptional<z.ZodString>;
288
313
  }, z.core.$strip>;
289
314
  export declare const ExistsOutputSchema: z.ZodObject<{
290
- exists: z.ZodBoolean;
291
- table: z.ZodString;
292
- mode: z.ZodEnum<{
315
+ success: z.ZodOptional<z.ZodBoolean>;
316
+ exists: z.ZodOptional<z.ZodBoolean>;
317
+ table: z.ZodOptional<z.ZodString>;
318
+ mode: z.ZodOptional<z.ZodEnum<{
293
319
  filtered: "filtered";
294
320
  any_rows: "any_rows";
295
- }>;
321
+ }>>;
296
322
  where: z.ZodOptional<z.ZodString>;
297
323
  hint: z.ZodOptional<z.ZodString>;
324
+ error: z.ZodOptional<z.ZodString>;
298
325
  }, z.core.$strip>;
299
326
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBA4BhC,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;kBAG7B,CAAC;AAuEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;iBAiClC,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS5B,CAAC;AAEL,eAAO,MAAM,qBAAqB;;;;kBAgBjC,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;kBASxC,CAAC;AAGF,eAAO,MAAM,6BAA6B;;;;;;;;iBAaxC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;GAOlC,CAAC;AAWL,eAAO,MAAM,qBAAqB;;;;;;;;iBAOhC,CAAC;AAGH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;iBAejC,CAAC;AAYH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAMhC,CAAC;AAYH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;iBAepC,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;;iBAUrC,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;iBAK/B,CAAC;AAgBH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;iBAMhC,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;;iBAOrC,CAAC;AAWH,eAAO,MAAM,sBAAsB;;;;;;;;;;;iBAMjC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;iBASpC,CAAC;AAWH,eAAO,MAAM,yBAAyB;;;;;;;;iBAGpC,CAAC;AAWH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;iBA+BrC,CAAC;AAGH,eAAO,MAAM,gCAAgC;;;;iBAM3C,CAAC;AAGH,eAAO,MAAM,8BAA8B;;;;;;;;;;iBAmBzC,CAAC;AAGH,eAAO,MAAM,iBAAiB;;iBAE5B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;iBAM7B,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBA4BhC,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;kBAG7B,CAAC;AAuEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;iBAiClC,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS5B,CAAC;AAEL,eAAO,MAAM,yBAAyB;;;;iBAapC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;kBAGjC,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;iBAY3C,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;kBAGxC,CAAC;AAGF,eAAO,MAAM,6BAA6B;;;;;;;;iBAaxC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;GAOlC,CAAC;AAWL,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAUhC,CAAC;AAGH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;iBAgBjC,CAAC;AAYH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAMhC,CAAC;AAYH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;iBAqBpC,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;;;iBAWrC,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;iBAS/B,CAAC;AAgBH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;iBAQhC,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;;;iBAQrC,CAAC;AAWH,eAAO,MAAM,sBAAsB;;;;;;;;;;;iBAMjC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;iBAWpC,CAAC;AAWH,eAAO,MAAM,yBAAyB;;;;;;;;iBAGpC,CAAC;AAWH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;iBA+BrC,CAAC;AAGH,eAAO,MAAM,gCAAgC;;;;iBAM3C,CAAC;AAGH,eAAO,MAAM,8BAA8B;;;;;;;;;;iBAmBzC,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAQ7B,CAAC"}
@@ -176,7 +176,7 @@ export const ObjectDetailsSchema = z
176
176
  .refine((data) => data.name !== "", {
177
177
  message: "name (or object/objectName/table alias) is required",
178
178
  });
179
- export const AnalyzeDbHealthSchema = z.preprocess(defaultToEmpty, z.object({
179
+ export const AnalyzeDbHealthSchemaBase = z.object({
180
180
  includeIndexes: z
181
181
  .boolean()
182
182
  .optional()
@@ -189,14 +189,20 @@ export const AnalyzeDbHealthSchema = z.preprocess(defaultToEmpty, z.object({
189
189
  .boolean()
190
190
  .optional()
191
191
  .describe("Include connection stats (default: true)"),
192
- }));
193
- export const AnalyzeWorkloadIndexesSchema = z.preprocess(defaultToEmpty, z.object({
192
+ });
193
+ export const AnalyzeDbHealthSchema = z.preprocess(defaultToEmpty, AnalyzeDbHealthSchemaBase);
194
+ export const AnalyzeWorkloadIndexesSchemaBase = z.object({
194
195
  topQueries: z
195
196
  .number()
196
197
  .optional()
197
198
  .describe("Number of top queries to analyze (default: 20)"),
198
199
  minCalls: z.number().optional().describe("Minimum call count threshold"),
199
- }));
200
+ queryPreviewLength: z
201
+ .number()
202
+ .optional()
203
+ .describe("Maximum characters for query preview (default: 200). Truncated queries end with '…'"),
204
+ });
205
+ export const AnalyzeWorkloadIndexesSchema = z.preprocess(defaultToEmpty, AnalyzeWorkloadIndexesSchemaBase);
200
206
  // Base schema for MCP visibility - exported so tool can use it for inputSchema
201
207
  export const AnalyzeQueryIndexesSchemaBase = z.object({
202
208
  sql: z
@@ -226,18 +232,21 @@ const FieldSchema = z.object({
226
232
  });
227
233
  // Output schema for pg_read_query
228
234
  export const ReadQueryOutputSchema = z.object({
235
+ success: z.boolean().optional().describe("Whether the operation succeeded"),
229
236
  rows: z
230
237
  .array(z.record(z.string(), z.unknown()))
238
+ .optional()
231
239
  .describe("Query result rows"),
232
- rowCount: z.number().describe("Number of rows returned"),
240
+ rowCount: z.number().optional().describe("Number of rows returned"),
233
241
  fields: z.array(FieldSchema).optional().describe("Column metadata"),
234
242
  executionTimeMs: z.number().optional().describe("Query execution time in ms"),
243
+ error: z.string().optional().describe("Error message if operation failed"),
235
244
  });
236
245
  // Output schema for pg_write_query, pg_upsert, pg_batch_insert
237
246
  export const WriteQueryOutputSchema = z.object({
238
247
  success: z.boolean().optional().describe("Whether the operation succeeded"),
239
248
  operation: z.string().optional().describe("Operation type (insert/update)"),
240
- rowsAffected: z.number().describe("Number of rows affected"),
249
+ rowsAffected: z.number().optional().describe("Number of rows affected"),
241
250
  affectedRows: z.number().optional().describe("Alias for rowsAffected"),
242
251
  rowCount: z.number().optional().describe("Alias for rowsAffected"),
243
252
  insertedCount: z.number().optional().describe("Rows inserted (batch insert)"),
@@ -249,6 +258,7 @@ export const WriteQueryOutputSchema = z.object({
249
258
  .describe("Returned rows (RETURNING clause)"),
250
259
  sql: z.string().optional().describe("Generated SQL statement"),
251
260
  hint: z.string().optional().describe("Additional information"),
261
+ error: z.string().optional().describe("Error message if operation failed"),
252
262
  });
253
263
  // Table info schema for list tables
254
264
  const TableInfoSchema = z.object({
@@ -276,11 +286,16 @@ const ColumnInfoSchema = z.object({
276
286
  });
277
287
  // Output schema for pg_describe_table
278
288
  export const TableDescribeOutputSchema = z.object({
279
- name: z.string().describe("Table name"),
280
- schema: z.string().describe("Schema name"),
281
- type: z.string().describe("Object type"),
282
- columns: z.array(ColumnInfoSchema).describe("Column definitions"),
283
- primaryKey: z.array(z.string()).optional().describe("Primary key columns"),
289
+ success: z.boolean().optional().describe("Whether the operation succeeded"),
290
+ name: z.string().optional().describe("Table name"),
291
+ schema: z.string().optional().describe("Schema name"),
292
+ type: z.string().optional().describe("Object type"),
293
+ columns: z.array(ColumnInfoSchema).optional().describe("Column definitions"),
294
+ primaryKey: z
295
+ .array(z.string())
296
+ .nullable()
297
+ .optional()
298
+ .describe("Primary key columns"),
284
299
  foreignKeys: z
285
300
  .array(z.record(z.string(), z.unknown()))
286
301
  .optional()
@@ -290,10 +305,11 @@ export const TableDescribeOutputSchema = z.object({
290
305
  .optional()
291
306
  .describe("Index definitions"),
292
307
  rowCount: z.number().optional().describe("Estimated row count"),
308
+ error: z.string().optional().describe("Error message if operation failed"),
293
309
  });
294
310
  // Output schema for pg_create_table, pg_drop_table
295
311
  export const TableOperationOutputSchema = z.object({
296
- success: z.boolean().describe("Whether the operation succeeded"),
312
+ success: z.boolean().optional().describe("Whether the operation succeeded"),
297
313
  table: z.string().optional().describe("Qualified table name"),
298
314
  dropped: z.string().optional().describe("Dropped table name (drop only)"),
299
315
  existed: z.boolean().optional().describe("Whether table existed before drop"),
@@ -302,13 +318,18 @@ export const TableOperationOutputSchema = z.object({
302
318
  .array(z.string())
303
319
  .optional()
304
320
  .describe("Composite PK columns"),
321
+ error: z.string().optional().describe("Error message if operation failed"),
305
322
  });
306
323
  // Output schema for pg_truncate
307
324
  export const TruncateOutputSchema = z.object({
308
325
  success: z.boolean().describe("Whether the operation succeeded"),
309
- table: z.string().describe("Truncated table"),
310
- cascade: z.boolean().describe("Whether CASCADE was used"),
311
- restartIdentity: z.boolean().describe("Whether identity was restarted"),
326
+ table: z.string().optional().describe("Truncated table"),
327
+ cascade: z.boolean().optional().describe("Whether CASCADE was used"),
328
+ restartIdentity: z
329
+ .boolean()
330
+ .optional()
331
+ .describe("Whether identity was restarted"),
332
+ error: z.string().optional().describe("Error message if operation failed"),
312
333
  });
313
334
  // Index info schema
314
335
  const IndexInfoSchema = z.object({
@@ -324,20 +345,23 @@ const IndexInfoSchema = z.object({
324
345
  });
325
346
  // Output schema for pg_get_indexes
326
347
  export const IndexListOutputSchema = z.object({
327
- indexes: z.array(IndexInfoSchema).describe("List of indexes"),
328
- count: z.number().describe("Number of indexes"),
348
+ success: z.boolean().optional().describe("Whether the operation succeeded"),
349
+ indexes: z.array(IndexInfoSchema).optional().describe("List of indexes"),
350
+ count: z.number().optional().describe("Number of indexes"),
329
351
  totalCount: z.number().optional().describe("Total count before truncation"),
330
352
  truncated: z.boolean().optional().describe("Whether results were truncated"),
331
353
  hint: z.string().optional().describe("Additional information"),
354
+ error: z.string().optional().describe("Error message if operation failed"),
332
355
  });
333
356
  // Output schema for pg_create_index, pg_drop_index
334
357
  export const IndexOperationOutputSchema = z.object({
335
- success: z.boolean().describe("Whether the operation succeeded"),
358
+ success: z.boolean().optional().describe("Whether the operation succeeded"),
336
359
  message: z.string().optional().describe("Result message"),
337
360
  index: z.string().optional().describe("Index name"),
338
361
  table: z.string().optional().describe("Table name"),
339
362
  sql: z.string().optional().describe("Generated SQL"),
340
363
  hint: z.string().optional().describe("Additional information"),
364
+ error: z.string().optional().describe("Error message if operation failed"),
341
365
  });
342
366
  // Database object schema
343
367
  const DatabaseObjectSchema = z.object({
@@ -356,14 +380,16 @@ export const ObjectListOutputSchema = z.object({
356
380
  });
357
381
  // Output schema for pg_object_details - flexible due to different object types
358
382
  export const ObjectDetailsOutputSchema = z.object({
359
- name: z.string().describe("Object name"),
360
- schema: z.string().describe("Schema name"),
361
- type: z.string().describe("Object type"),
383
+ success: z.boolean().optional().describe("Whether the operation succeeded"),
384
+ name: z.string().optional().describe("Object name"),
385
+ schema: z.string().optional().describe("Schema name"),
386
+ type: z.string().optional().describe("Object type"),
362
387
  owner: z.string().optional().describe("Object owner"),
363
388
  details: z
364
389
  .record(z.string(), z.unknown())
365
390
  .optional()
366
391
  .describe("Type-specific details"),
392
+ error: z.string().optional().describe("Error message if operation failed"),
367
393
  });
368
394
  // Extension info schema
369
395
  const ExtensionInfoSchema = z.object({
@@ -446,14 +472,18 @@ export const QueryIndexAnalysisOutputSchema = z.object({
446
472
  });
447
473
  // Output schema for pg_count
448
474
  export const CountOutputSchema = z.object({
449
- count: z.number().describe("Row count"),
475
+ success: z.boolean().optional().describe("Whether the operation succeeded"),
476
+ count: z.number().optional().describe("Row count"),
477
+ error: z.string().optional().describe("Error message if operation failed"),
450
478
  });
451
479
  // Output schema for pg_exists
452
480
  export const ExistsOutputSchema = z.object({
453
- exists: z.boolean().describe("Whether rows exist"),
454
- table: z.string().describe("Table checked"),
455
- mode: z.enum(["filtered", "any_rows"]).describe("Check mode"),
481
+ success: z.boolean().optional().describe("Whether the operation succeeded"),
482
+ exists: z.boolean().optional().describe("Whether rows exist"),
483
+ table: z.string().optional().describe("Table checked"),
484
+ mode: z.enum(["filtered", "any_rows"]).optional().describe("Check mode"),
456
485
  where: z.string().optional().describe("WHERE clause used (filtered mode)"),
457
486
  hint: z.string().optional().describe("Clarifying hint (any_rows mode)"),
487
+ error: z.string().optional().describe("Error message if operation failed"),
458
488
  });
459
489
  //# sourceMappingURL=schemas.js.map