@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
@@ -11,8 +11,29 @@
11
11
  import { z } from "zod";
12
12
  import { readOnly, write } from "../../../../utils/annotations.js";
13
13
  import { getToolIcons } from "../../../../utils/icons.js";
14
+ import { formatPostgresError } from "./error-helpers.js";
14
15
  import { WriteQueryOutputSchema, CountOutputSchema, ExistsOutputSchema, TruncateOutputSchema, } from "./schemas.js";
15
16
  // =============================================================================
17
+ // Table Existence Validation (P154 Pattern)
18
+ // =============================================================================
19
+ /**
20
+ * Validate that a table exists before executing operations.
21
+ * Throws a high-signal error instead of letting raw PostgreSQL
22
+ * "relation does not exist" errors propagate.
23
+ */
24
+ async function validateTableExists(adapter, table, schema) {
25
+ // Check if the schema exists first for granular error messages
26
+ const schemaResult = await adapter.executeQuery(`SELECT 1 FROM information_schema.schemata WHERE schema_name = $1`, [schema]);
27
+ if (!schemaResult.rows || schemaResult.rows.length === 0) {
28
+ return `Schema '${schema}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`;
29
+ }
30
+ const result = await adapter.executeQuery(`SELECT 1 FROM information_schema.tables WHERE table_schema = $1 AND table_name = $2`, [schema, table]);
31
+ if (!result.rows || result.rows.length === 0) {
32
+ return `Table '${schema}.${table}' not found. Use pg_list_tables to see available tables.`;
33
+ }
34
+ return null;
35
+ }
36
+ // =============================================================================
16
37
  // Schemas
17
38
  // =============================================================================
18
39
  /**
@@ -179,11 +200,32 @@ export const CountSchemaBase = z.object({
179
200
  .array(z.unknown())
180
201
  .optional()
181
202
  .describe("Parameters for WHERE clause placeholders"),
203
+ condition: z.string().optional().describe("Alias for where"),
204
+ filter: z.string().optional().describe("Alias for where"),
182
205
  column: z
183
206
  .string()
184
207
  .optional()
185
208
  .describe("Column to count (default: * for all rows)"),
186
209
  });
210
+ /**
211
+ * Preprocess count params:
212
+ * - All table params from preprocessTableParams
213
+ * - Alias: condition/filter → where
214
+ */
215
+ function preprocessCountParams(input) {
216
+ const result = preprocessTableParams(input);
217
+ if (typeof result !== "object" || result === null)
218
+ return result;
219
+ const obj = result;
220
+ // Alias: condition/filter → where
221
+ if (obj["where"] === undefined) {
222
+ if (obj["condition"] !== undefined)
223
+ obj["where"] = obj["condition"];
224
+ else if (obj["filter"] !== undefined)
225
+ obj["where"] = obj["filter"];
226
+ }
227
+ return obj;
228
+ }
187
229
  // Internal parsing schema - table optional for alias resolution
188
230
  const CountParseSchema = z.object({
189
231
  table: z
@@ -200,16 +242,19 @@ const CountParseSchema = z.object({
200
242
  .array(z.unknown())
201
243
  .optional()
202
244
  .describe("Parameters for WHERE clause placeholders"),
245
+ condition: z.string().optional().describe("Alias for where"),
246
+ filter: z.string().optional().describe("Alias for where"),
203
247
  column: z
204
248
  .string()
205
249
  .optional()
206
250
  .describe("Column to count (default: * for all rows)"),
207
251
  });
208
252
  export const CountSchema = z
209
- .preprocess((val) => preprocessTableParams(val ?? {}), CountParseSchema)
253
+ .preprocess((val) => preprocessCountParams(val ?? {}), CountParseSchema)
210
254
  .transform((data) => ({
211
255
  ...data,
212
256
  table: data.table ?? data.tableName ?? "",
257
+ where: data.where ?? data.condition ?? data.filter,
213
258
  }))
214
259
  .refine((data) => data.table !== "", {
215
260
  message: 'table (or tableName alias) is required. Usage: pg_count({ table: "users" }) or pg_count({ table: "users", where: "active = true" })',
@@ -342,6 +387,10 @@ export function createUpsertTool(adapter) {
342
387
  handler: async (params, _context) => {
343
388
  const parsed = UpsertSchema.parse(params);
344
389
  const schemaName = parsed.schema ?? "public";
390
+ const validationError = await validateTableExists(adapter, parsed.table, schemaName);
391
+ if (validationError) {
392
+ return { success: false, error: validationError };
393
+ }
345
394
  const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
346
395
  const columns = Object.keys(parsed.data);
347
396
  const values = Object.values(parsed.data);
@@ -386,9 +435,7 @@ export function createUpsertTool(adapter) {
386
435
  const operation = xmaxValue === 0 ? "insert" : "update";
387
436
  // Remove _xmax from returned rows if not explicitly requested
388
437
  const cleanedRows = result.rows?.map((row) => {
389
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
390
- const { _xmax, ...rest } = row;
391
- return rest;
438
+ return Object.fromEntries(Object.entries(row).filter(([key]) => key !== "_xmax"));
392
439
  });
393
440
  return {
394
441
  success: true,
@@ -400,7 +447,6 @@ export function createUpsertTool(adapter) {
400
447
  ...(hasReturning &&
401
448
  cleanedRows &&
402
449
  cleanedRows.length > 0 && { rows: cleanedRows }),
403
- sql,
404
450
  };
405
451
  }
406
452
  catch (error) {
@@ -409,7 +455,7 @@ export function createUpsertTool(adapter) {
409
455
  const msg = error.message.toLowerCase();
410
456
  if (msg.includes("no unique or exclusion constraint")) {
411
457
  throw new Error(`conflictColumns [${parsed.conflictColumns.join(", ")}] must reference columns with a UNIQUE constraint or PRIMARY KEY. ` +
412
- `Create a unique constraint first: ALTER TABLE ${qualifiedTable} ADD CONSTRAINT unique_name UNIQUE (${conflictCols})`);
458
+ `Create a unique constraint first: ALTER TABLE ${qualifiedTable} ADD CONSTRAINT unique_name UNIQUE (${conflictCols})`, { cause: error });
413
459
  }
414
460
  }
415
461
  throw error;
@@ -437,6 +483,10 @@ export function createBatchInsertTool(adapter) {
437
483
  'e.g., rows: [{column: "value"}]');
438
484
  }
439
485
  const schemaName = parsed.schema ?? "public";
486
+ const validationError = await validateTableExists(adapter, parsed.table, schemaName);
487
+ if (validationError) {
488
+ return { success: false, error: validationError };
489
+ }
440
490
  const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
441
491
  // Get all unique columns from all rows
442
492
  const allColumns = new Set();
@@ -455,7 +505,6 @@ export function createBatchInsertTool(adapter) {
455
505
  // Execute individual DEFAULT VALUES inserts for each row
456
506
  let totalAffected = 0;
457
507
  const allRows = [];
458
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
459
508
  for (const _row of parsed.rows) {
460
509
  const sql = `INSERT INTO ${qualifiedTable} DEFAULT VALUES${returningClause}`;
461
510
  const result = await adapter.executeQuery(sql);
@@ -498,7 +547,20 @@ export function createBatchInsertTool(adapter) {
498
547
  ? ` RETURNING ${parsed.returning.map((c) => `"${c}"`).join(", ")}`
499
548
  : "";
500
549
  const sql = `INSERT INTO ${qualifiedTable} (${columnList}) VALUES ${rowPlaceholders.join(", ")}${returningClause}`;
501
- const result = await adapter.executeQuery(sql, values);
550
+ let result;
551
+ try {
552
+ result = await adapter.executeQuery(sql, values);
553
+ }
554
+ catch (error) {
555
+ return {
556
+ success: false,
557
+ error: formatPostgresError(error, {
558
+ tool: "pg_batch_insert",
559
+ table: parsed.table,
560
+ schema: schemaName,
561
+ }),
562
+ };
563
+ }
502
564
  return {
503
565
  success: true,
504
566
  rowsAffected: result.rowsAffected ?? 0,
@@ -526,6 +588,10 @@ export function createCountTool(adapter) {
526
588
  handler: async (params, _context) => {
527
589
  const parsed = CountSchema.parse(params);
528
590
  const schemaName = parsed.schema ?? "public";
591
+ const validationError = await validateTableExists(adapter, parsed.table, schemaName);
592
+ if (validationError) {
593
+ return { success: false, error: validationError };
594
+ }
529
595
  const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
530
596
  const countExpr = parsed.column !== undefined ? `"${parsed.column}"` : "*";
531
597
  // Treat empty where string as no where clause
@@ -533,7 +599,20 @@ export function createCountTool(adapter) {
533
599
  ? ` WHERE ${parsed.where}`
534
600
  : "";
535
601
  const sql = `SELECT COUNT(${countExpr}) as count FROM ${qualifiedTable}${whereClause}`;
536
- const result = await adapter.executeQuery(sql, parsed.params);
602
+ let result;
603
+ try {
604
+ result = await adapter.executeQuery(sql, parsed.params);
605
+ }
606
+ catch (error) {
607
+ return {
608
+ success: false,
609
+ error: formatPostgresError(error, {
610
+ tool: "pg_count",
611
+ table: parsed.table,
612
+ schema: schemaName,
613
+ }),
614
+ };
615
+ }
537
616
  const count = Number(result.rows?.[0]?.["count"]) || 0;
538
617
  return { count };
539
618
  },
@@ -554,6 +633,10 @@ export function createExistsTool(adapter) {
554
633
  handler: async (params, _context) => {
555
634
  const parsed = ExistsSchema.parse(params);
556
635
  const schemaName = parsed.schema ?? "public";
636
+ const validationError = await validateTableExists(adapter, parsed.table, schemaName);
637
+ if (validationError) {
638
+ return { success: false, error: validationError };
639
+ }
557
640
  const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
558
641
  // Build SQL with optional WHERE clause
559
642
  const whereValue = parsed.where ?? "";
@@ -590,6 +673,10 @@ export function createTruncateTool(adapter) {
590
673
  handler: async (params, _context) => {
591
674
  const parsed = TruncateSchema.parse(params);
592
675
  const schemaName = parsed.schema ?? "public";
676
+ const validationError = await validateTableExists(adapter, parsed.table, schemaName);
677
+ if (validationError) {
678
+ return { success: false, error: validationError };
679
+ }
593
680
  const qualifiedTable = `"${schemaName}"."${parsed.table}"`;
594
681
  let sql = `TRUNCATE TABLE ${qualifiedTable}`;
595
682
  if (parsed.restartIdentity === true) {
@@ -1 +1 @@
1
- {"version":3,"file":"convenience.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/convenience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convenience.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/convenience.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAEhF;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAChC,OAAwB,EACxB,KAAa,EACb,MAAc;IAEd,+DAA+D;IAC/D,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,YAAY,CAC7C,kEAAkE,EAClE,CAAC,MAAM,CAAC,CACT,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,WAAW,MAAM,mFAAmF,CAAC;IAC9G,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CACvC,qFAAqF,EACrF,CAAC,MAAM,EAAE,KAAK,CAAC,CAChB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,UAAU,MAAM,IAAI,KAAK,0DAA0D,CAAC;IAC7F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,MAAM,GAAG,EAAE,GAAI,KAAiC,EAAE,CAAC;IAEzD,gCAAgC;IAChC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS;YACnC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;aACnC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,4BAA4B;IAC5B,IACE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC7B,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,EAC9B,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,KAAc;IAC5C,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACjE,MAAM,GAAG,GAAG,MAAiC,CAAC;IAE9C,uBAAuB;IACvB,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,8BAA8B,CAAC;IAC3C,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,gBAAgB,CAAC;IAC7B,eAAe,EAAE,CAAC;SACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,uDAAuD,CAAC;IACpE,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,sEAAsE,CACvE;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACxE,CAAC,CAAC;AAEH,iEAAiE;AACjE,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,8BAA8B,CAAC;IAC3C,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,gBAAgB,CAAC;IAC7B,eAAe,EAAE,CAAC;SACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,uDAAuD,CAAC;IACpE,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,sEAAsE,CACvE;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACxE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,UAAU,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;KACrD,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjB,GAAG,CAAC;IACJ,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE;IACnC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE;CAC/B,CAAC,CAAC;KACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE;IAC7B,OAAO,EACL,+HAA+H;CAClI,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IAC7C,OAAO,EAAE,oCAAoC;CAC9C,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3C,OAAO,EACL,4EAA4E;CAC/E,CAAC,CAAC;AAEL,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACxC,QAAQ,CAAC,gCAAgC,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACxE,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACxC,QAAQ,CAAC,gCAAgC,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACxE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,UAAU,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACzD,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,GAAG,IAAI;IACP,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;CAC1C,CAAC,CAAC;KACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;IACnC,OAAO,EACL,gIAAgI;CACnI,CAAC;KACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACtC,OAAO,EAAE,wBAAwB;CAClC,CAAC,CAAC;AAEL,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACzD,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;CACzD,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACjE,MAAM,GAAG,GAAG,MAAiC,CAAC;IAE9C,kCAAkC;IAClC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;aAC/D,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gEAAgE;AAChE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACzD,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;CACzD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,UAAU,CACT,CAAC,GAAY,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,IAAI,EAAE,CAAC,EAClD,gBAAgB,CACjB;KACA,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,GAAG,IAAI;IACP,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;IACzC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM;CACnD,CAAC,CAAC;KACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;IACnC,OAAO,EACL,qIAAqI;CACxI,CAAC,CAAC;AAEL,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CAC1D,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CAC1D,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,KAAc;IAC5C,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACjE,MAAM,GAAG,GAAG,MAAiC,CAAC;IAE9C,kCAAkC;IAClC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;aAC/D,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,UAAU,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;KACrD,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,GAAG,IAAI;IACP,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;IACzC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM;CACnD,CAAC,CAAC;KACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;IACnC,OAAO,EACL,gIAAgI;CACnI,CAAC,CAAC;AAEL,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,4BAA4B,CAAC;CAC1C,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,4BAA4B,CAAC;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,UAAU,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;KACtD,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,GAAG,IAAI;IACP,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;CAC1C,CAAC,CAAC;KACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;IACnC,OAAO,EACL,gIAAgI;CACnI,CAAC,CAAC;AAEL,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAwB;IACvD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,2KAA2K;QAC7K,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,gBAAgB,EAAE,iCAAiC;QAChE,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC;QAC5B,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;YAC7C,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAC/C,OAAO,EACP,MAAM,CAAC,KAAK,EACZ,UAAU,CACX,CAAC;YACF,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,UAAU,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC;YAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE1C,sBAAsB;YACtB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,OAAO;iBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;iBAClC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,2BAA2B;YAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe;iBACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;iBACpB,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,qEAAqE;YACrE,MAAM,UAAU,GACd,MAAM,CAAC,aAAa;gBACpB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7D,IAAI,cAAsB,CAAC;YAC3B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,wCAAwC;gBACxC,cAAc,GAAG,YAAY,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,UAAU;qBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;qBACtC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,cAAc,GAAG,iBAAiB,SAAS,EAAE,CAAC;YAChD,CAAC;YAED,0EAA0E;YAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9C,yEAAyE;YACzE,MAAM,UAAU,GAAG,0BAA0B,CAAC;YAC9C,MAAM,eAAe,GAAG,YAAY;gBAClC,CAAC,CAAC,cAAc,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;gBAC9E,CAAC,CAAC,cAAc,UAAU,EAAE,CAAC;YAE/B,MAAM,GAAG,GAAG,eAAe,cAAc,KAAK,UAAU,aAAa,YAAY,kBAAkB,YAAY,KAAK,cAAc,GAAG,eAAe,EAAE,CAAC;YAEvJ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACvD,oDAAoD;gBACpD,+CAA+C;gBAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnD,MAAM,SAAS,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAExD,8DAA8D;gBAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC3C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CACvD,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,uBAAuB;oBAClC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC;oBACtC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,8BAA8B;oBACtE,QAAQ,EAAE,CAAC,EAAE,gCAAgC;oBAC7C,mEAAmE;oBACnE,GAAG,CAAC,YAAY;wBACd,WAAW;wBACX,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;iBACnD,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,sDAAsD;gBACtD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxC,IAAI,GAAG,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;wBACtD,MAAM,IAAI,KAAK,CACb,oBAAoB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oEAAoE;4BACvH,iDAAiD,cAAc,uCAAuC,YAAY,GAAG,EACvH,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAwB;IAExB,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,mHAAmH;QACrH,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,qBAAqB,EAAE,iCAAiC;QACrE,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;QAClC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAClD,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE/C,mCAAmC;YACnC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,oEAAoE;oBAClE,iCAAiC,CACpC,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;YAC7C,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAC/C,OAAO,EACP,MAAM,CAAC,KAAK,EACZ,UAAU,CACX,CAAC;YACF,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,UAAU,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC;YAE3D,uCAAuC;YACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;YACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvC,4CAA4C;YAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,6CAA6C;gBAC7C,MAAM,eAAe,GACnB,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBAC3D,CAAC,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAClE,CAAC,CAAC,EAAE,CAAC;gBAET,yDAAyD;gBACzD,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,MAAM,OAAO,GAA8B,EAAE,CAAC;gBAC9C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC/B,MAAM,GAAG,GAAG,eAAe,cAAc,kBAAkB,eAAe,EAAE,CAAC;oBAC7E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC/C,aAAa,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;oBAC1C,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,YAAY,EAAE,aAAa;oBAC3B,YAAY,EAAE,aAAa;oBAC3B,aAAa,EAAE,aAAa,EAAE,uCAAuC;oBACrE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;oBAC5B,IAAI,EAAE,kEAAkE;oBACxE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iBAC7C,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,MAAM,eAAe,GAAa,EAAE,CAAC;YACrC,IAAI,UAAU,GAAG,CAAC,CAAC;YAEnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;gBAC/B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;oBAC7B,oEAAoE;oBACpE,mEAAmE;oBACnE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAChD,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAChC,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnB,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBACzC,UAAU,EAAE,CAAC;gBACf,CAAC;gBACD,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,eAAe,GACnB,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAClE,CAAC,CAAC,EAAE,CAAC;YAET,MAAM,GAAG,GAAG,eAAe,cAAc,KAAK,UAAU,YAAY,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,eAAe,EAAE,CAAC;YAEnH,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE;wBAChC,IAAI,EAAE,iBAAiB;wBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,UAAU;qBACnB,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC;gBACtC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,8BAA8B;gBACtE,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,uCAAuC;gBAChF,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;gBAC5B,2DAA2D;gBAC3D,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;aACpE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,2EAA2E;QAC7E,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,eAAe,EAAE,iCAAiC;QAC/D,YAAY,EAAE,iBAAiB;QAC/B,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC9B,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;YAC7C,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAC/C,OAAO,EACP,MAAM,CAAC,KAAK,EACZ,UAAU,CACX,CAAC;YACF,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,UAAU,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC;YAE3D,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3D,8CAA8C;YAC9C,MAAM,WAAW,GACf,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;gBACtD,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE;gBAC1B,CAAC,CAAC,EAAE,CAAC;YAET,MAAM,GAAG,GAAG,gBAAgB,SAAS,mBAAmB,cAAc,GAAG,WAAW,EAAE,CAAC;YACvF,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE;wBAChC,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,UAAU;qBACnB,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;YACvD,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAwB;IACvD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,qMAAqM;QACvM,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,gBAAgB,EAAE,iCAAiC;QAChE,YAAY,EAAE,kBAAkB;QAChC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC/B,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;YAC7C,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAC/C,OAAO,EACP,MAAM,CAAC,KAAK,EACZ,UAAU,CACX,CAAC;YACF,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,UAAU,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC;YAE3D,uCAAuC;YACvC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAG,+BAA+B,cAAc,GAAG,WAAW,aAAa,CAAC;YAErF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAE9D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;YACrD,OAAO;gBACL,MAAM;gBACN,KAAK,EAAE,GAAG,UAAU,IAAI,MAAM,CAAC,KAAK,EAAE;gBACtC,wCAAwC;gBACxC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;gBACxC,GAAG,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;gBACtC,GAAG,CAAC,CAAC,QAAQ,IAAI;oBACf,IAAI,EAAE,8HAA8H;iBACrI,CAAC;aACH,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAwB;IACzD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,wFAAwF;QAC1F,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,kBAAkB,EAAE,iCAAiC;QAClE,YAAY,EAAE,oBAAoB;QAClC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC;QAC9B,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,QAAwB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;YAC7C,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAC/C,OAAO,EACP,MAAM,CAAC,KAAK,EACZ,UAAU,CACX,CAAC;YACF,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,UAAU,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC;YAE3D,IAAI,GAAG,GAAG,kBAAkB,cAAc,EAAE,CAAC;YAE7C,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBACpC,GAAG,IAAI,mBAAmB,CAAC;YAC7B,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5B,GAAG,IAAI,UAAU,CAAC;YACpB,CAAC;YAED,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,GAAG,UAAU,IAAI,MAAM,CAAC,KAAK,EAAE;gBACtC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;gBAChC,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,KAAK;aACjD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAwB;IAExB,OAAO;QACL,gBAAgB,CAAC,OAAO,CAAC;QACzB,qBAAqB,CAAC,OAAO,CAAC;QAC9B,eAAe,CAAC,OAAO,CAAC;QACxB,gBAAgB,CAAC,OAAO,CAAC;QACzB,kBAAkB,CAAC,OAAO,CAAC;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * PostgreSQL Core Tools - Error Helpers
3
+ *
4
+ * Shared helper for mapping raw PostgreSQL exceptions to structured,
5
+ * high-signal error messages with actionable guidance.
6
+ */
7
+ /**
8
+ * Context about the operation that triggered the error.
9
+ */
10
+ interface ErrorContext {
11
+ tool: string;
12
+ sql?: string;
13
+ table?: string;
14
+ index?: string;
15
+ schema?: string;
16
+ target?: string;
17
+ objectType?: string;
18
+ }
19
+ /**
20
+ * Parse a raw PostgreSQL error and return a structured Error with
21
+ * actionable guidance. Non-PG errors (connection refused, auth, etc.)
22
+ * are re-thrown unchanged to preserve their original stack trace.
23
+ *
24
+ * Supported PG error codes:
25
+ * - 42P01: undefined_table (relation does not exist)
26
+ * - 42P07: duplicate_table (relation already exists)
27
+ * - 42P06: duplicate_schema (schema already exists)
28
+ * - 42704: undefined_object (index/type does not exist)
29
+ * - 42601: syntax_error (SQL syntax error)
30
+ * - 42703: undefined_column (column does not exist)
31
+ * - 23505: unique_violation (duplicate key value)
32
+ * - 3F000: invalid_schema_name (schema does not exist)
33
+ * - 3D000: invalid_catalog_name (database does not exist)
34
+ * - 3B001: savepoint_exception (savepoint does not exist)
35
+ * - 25P02: in_failed_sql_transaction (transaction is aborted)
36
+ */
37
+ export declare function parsePostgresError(error: unknown, context: ErrorContext): Error;
38
+ /**
39
+ * Wrapper around parsePostgresError that returns the structured error message
40
+ * as a string instead of throwing. Use this in handler catch blocks where you
41
+ * want to return `{ success: false, error: formatPostgresError(...) }`.
42
+ *
43
+ * parsePostgresError always throws — this function catches the throw and
44
+ * extracts the message for structured error responses.
45
+ */
46
+ export declare function formatPostgresError(error: unknown, context: ErrorContext): string;
47
+ export {};
48
+ //# sourceMappingURL=error-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/core/error-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,YAAY,GACpB,KAAK,CA6UP;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,YAAY,GACpB,MAAM,CAoCR"}
@@ -0,0 +1,256 @@
1
+ /**
2
+ * PostgreSQL Core Tools - Error Helpers
3
+ *
4
+ * Shared helper for mapping raw PostgreSQL exceptions to structured,
5
+ * high-signal error messages with actionable guidance.
6
+ */
7
+ /**
8
+ * Parse a raw PostgreSQL error and return a structured Error with
9
+ * actionable guidance. Non-PG errors (connection refused, auth, etc.)
10
+ * are re-thrown unchanged to preserve their original stack trace.
11
+ *
12
+ * Supported PG error codes:
13
+ * - 42P01: undefined_table (relation does not exist)
14
+ * - 42P07: duplicate_table (relation already exists)
15
+ * - 42P06: duplicate_schema (schema already exists)
16
+ * - 42704: undefined_object (index/type does not exist)
17
+ * - 42601: syntax_error (SQL syntax error)
18
+ * - 42703: undefined_column (column does not exist)
19
+ * - 23505: unique_violation (duplicate key value)
20
+ * - 3F000: invalid_schema_name (schema does not exist)
21
+ * - 3D000: invalid_catalog_name (database does not exist)
22
+ * - 3B001: savepoint_exception (savepoint does not exist)
23
+ * - 25P02: in_failed_sql_transaction (transaction is aborted)
24
+ */
25
+ export function parsePostgresError(error, context) {
26
+ if (!(error instanceof Error)) {
27
+ throw error;
28
+ }
29
+ const pgCode = error["code"];
30
+ // Idempotency guard: if the error has a `cause` but no PG error code,
31
+ // it was already processed by a prior parsePostgresError call (e.g., in the
32
+ // adapter layer). Re-throw unchanged to prevent double-processing, which
33
+ // can produce misleading messages (e.g., "Object 'unknown' not found"
34
+ // instead of "Savepoint 'X' does not exist").
35
+ if (error.cause !== undefined && !pgCode) {
36
+ throw error;
37
+ }
38
+ const msg = error.message;
39
+ // 42P01 — relation does not exist (table, view, sequence)
40
+ // Regex anchored: must NOT be preceded by "of " (which indicates 42703 column errors)
41
+ if (pgCode === "42P01" ||
42
+ (/relation ".*" does not exist/i.test(msg) && !/of relation/i.test(msg))) {
43
+ // pg_reindex with target=index: index-specific message
44
+ if (context.tool === "pg_reindex" && context.target === "index") {
45
+ const match = /relation "([^"]+)"/i.exec(msg);
46
+ const indexName = match?.[1] ?? context.index ?? "unknown";
47
+ throw new Error(`Index '${indexName}' not found. Use pg_get_indexes to see available indexes.`, { cause: error });
48
+ }
49
+ const match = /relation "([^"]+)"/i.exec(msg);
50
+ const objectName = match?.[1] ?? context.table ?? "unknown";
51
+ throw new Error(`Table or view '${objectName}' not found. Use pg_list_tables to see available tables.`, { cause: error });
52
+ }
53
+ // 42P06 — duplicate schema (schema already exists)
54
+ // Note: also checks message text because the adapter wraps PG errors
55
+ // in QueryError (code: "QUERY_ERROR"), stripping the original PG code.
56
+ if (pgCode === "42P06" || /schema ".*" already exists/i.test(msg)) {
57
+ const match = /schema "([^"]+)"/i.exec(msg);
58
+ const objectName = match?.[1] ?? context.schema ?? "unknown";
59
+ throw new Error(`Schema '${objectName}' already exists. Use ifNotExists: true to skip if it exists.`, { cause: error });
60
+ }
61
+ // 42P07 — duplicate relation (table, index, sequence, or view already exists)
62
+ if (pgCode === "42P07" || /already exists/i.test(msg)) {
63
+ const match = /relation "([^"]+)"/i.exec(msg);
64
+ const objectName = match?.[1] ?? context.index ?? context.table ?? "unknown";
65
+ // Distinguish index vs table context
66
+ if (context.tool === "pg_create_index" ||
67
+ /index/i.test(msg) ||
68
+ context.index) {
69
+ throw new Error(`Index '${objectName}' already exists. Use ifNotExists: true to skip if it exists.`, { cause: error });
70
+ }
71
+ // Sequence-specific message
72
+ if (context.objectType === "sequence") {
73
+ throw new Error(`Sequence '${objectName}' already exists. Use ifNotExists: true to skip if it exists.`, { cause: error });
74
+ }
75
+ // View-specific message
76
+ if (context.objectType === "view") {
77
+ throw new Error(`View '${objectName}' already exists. Use orReplace: true to replace it.`, { cause: error });
78
+ }
79
+ throw new Error(`Table '${objectName}' already exists. Use ifNotExists: true to skip if it exists.`, { cause: error });
80
+ }
81
+ // 42601 — syntax error in SQL statement
82
+ if (pgCode === "42601" || /syntax error/i.test(msg)) {
83
+ throw new Error(`SQL syntax error: ${msg}. Verify your SQL is valid.`, {
84
+ cause: error,
85
+ });
86
+ }
87
+ // 42703 — undefined column (checked before 42704 whose broad regex would match)
88
+ if (pgCode === "42703" ||
89
+ /column ".*" (?:of relation .+)?does not exist/i.test(msg)) {
90
+ throw new Error(`Column not found: ${msg}. Use pg_describe_table to see available columns.`, { cause: error });
91
+ }
92
+ // Sub-partitioning PK constraint (42P16 — unique constraint must include all partitioning columns)
93
+ // MUST be checked before the generic 23505 unique constraint handler below,
94
+ // because this message also contains "unique constraint" text.
95
+ if (/unique constraint on partitioned table must include all partitioning columns/i.test(msg)) {
96
+ throw new Error(`Primary key on partitioned table must include all partitioning columns. The sub-partition key column must be part of the parent table's primary key. Recreate the parent with a composite primary key that includes both the partition key and sub-partition key.`, { cause: error });
97
+ }
98
+ // 23505 — unique constraint violation (duplicate key)
99
+ if (pgCode === "23505" ||
100
+ /unique constraint/i.test(msg) ||
101
+ /duplicate key/i.test(msg)) {
102
+ throw new Error(`Unique constraint violated: ${msg}. Use pg_upsert for insert-or-update behavior.`, { cause: error });
103
+ }
104
+ // 3B001 — savepoint does not exist (checked before 42704 whose broad regex would match)
105
+ if (pgCode === "3B001" || /savepoint ".*" does not exist/i.test(msg)) {
106
+ const match = /savepoint "([^"]+)"/i.exec(msg);
107
+ const spName = match?.[1] ?? "unknown";
108
+ throw new Error(`Savepoint '${spName}' does not exist in this transaction. Use pg_transaction_savepoint to create it first.`, { cause: error });
109
+ }
110
+ // 25P02 — current transaction is aborted (checked before 42704 whose broad regex would match)
111
+ if (pgCode === "25P02" || /current transaction is aborted/i.test(msg)) {
112
+ throw new Error("Transaction is in an aborted state — only ROLLBACK or ROLLBACK TO SAVEPOINT commands are allowed. " +
113
+ "A previous statement in this transaction failed, putting it into an error state. " +
114
+ "Use pg_transaction_rollback to end it, or pg_transaction_rollback_to to recover to a savepoint.", { cause: error });
115
+ }
116
+ // Unrecognized configuration parameter (pg_set_config)
117
+ // Standalone check: adapter wraps PG errors with code "QUERY_ERROR",
118
+ // so this won't enter the 42704 block — must match on message text.
119
+ if (/unrecognized configuration parameter/i.test(msg)) {
120
+ const paramMatch = /parameter "([^"]+)"/i.exec(msg);
121
+ const paramName = paramMatch?.[1] ?? "unknown";
122
+ throw new Error(`Unrecognized configuration parameter '${paramName}'. Use pg_show_settings to see available parameters.`, { cause: error });
123
+ }
124
+ // pg_cron: "could not find valid entry for job" (unschedule nonexistent job)
125
+ if (/could not find valid entry for job/i.test(msg)) {
126
+ const jobMatch = /for job\s+'?"?([^'"]+)'?"?/i.exec(msg);
127
+ const jobIdentifier = jobMatch?.[1] ?? context.target ?? "unknown";
128
+ throw new Error(`Job '${jobIdentifier}' not found. Use pg_cron_list_jobs to see available jobs.`, { cause: error });
129
+ }
130
+ // pg_cron: "invalid schedule" (invalid cron syntax passed to pg_cron)
131
+ if (/invalid schedule:/i.test(msg)) {
132
+ throw new Error(`Invalid cron schedule. Use standard cron syntax (e.g., "0 2 * * *") or interval syntax ("1-59 seconds").`, { cause: error });
133
+ }
134
+ // 3D000 — invalid catalog name (database does not exist)
135
+ if (pgCode === "3D000" || /database ".*" does not exist/i.test(msg)) {
136
+ const match = /database "([^"]+)"/i.exec(msg);
137
+ const dbName = match?.[1] ?? "unknown";
138
+ throw new Error(`Database '${dbName}' does not exist. Verify the database name or omit the parameter to use the current database.`, { cause: error });
139
+ }
140
+ // 42704 — undefined object (index, type, etc.)
141
+ if (pgCode === "42704" || /does not exist/i.test(msg)) {
142
+ // Schema-specific: "schema X does not exist" (e.g., CREATE TABLE in nonexistent schema)
143
+ if (/schema ".*" does not exist/i.test(msg)) {
144
+ const schemaMatch = /schema "([^"]+)"/i.exec(msg);
145
+ const schemaName = schemaMatch?.[1] ?? context.schema ?? "unknown";
146
+ throw new Error(`Schema '${schemaName}' does not exist. Create it with pg_create_schema or use pg_list_schemas to see available schemas.`, { cause: error });
147
+ }
148
+ // pg_cluster: index-not-found — omit ifExists (not a valid cluster param)
149
+ if (context.tool === "pg_cluster" &&
150
+ (/index/i.test(msg) || context.index)) {
151
+ const match = /index "([^"]+)"/i.exec(msg);
152
+ const indexName = match?.[1] ?? context.index ?? "unknown";
153
+ throw new Error(`Index '${indexName}' not found. Use pg_get_indexes to see available indexes.`, { cause: error });
154
+ }
155
+ if (context.tool === "pg_drop_index" ||
156
+ /index/i.test(msg) ||
157
+ context.index) {
158
+ const match = /index "([^"]+)"/i.exec(msg);
159
+ const indexName = match?.[1] ?? context.index ?? "unknown";
160
+ throw new Error(`Index '${indexName}' not found. Use ifExists: true to avoid this error, or pg_get_indexes to see available indexes.`, { cause: error });
161
+ }
162
+ // Table-specific fallback for pg_drop_table
163
+ if (context.tool === "pg_drop_table") {
164
+ const objectName = context.table ?? "unknown";
165
+ throw new Error(`Table '${context.schema ?? "public"}.${objectName}' not found. Use ifExists: true to avoid this error, or pg_list_tables to verify.`, { cause: error });
166
+ }
167
+ // Function not found with tsvector argument — column is already tsvector type
168
+ if (/function .*tsvector.* does not exist/i.test(msg)) {
169
+ throw new Error(`Column appears to be a tsvector type, which cannot be used directly with text search tools. ` +
170
+ `Use a text column instead, or query the tsvector column directly with raw SQL (pg_read_query).`, { cause: error });
171
+ }
172
+ // pg_cron tool context guard — provide cron-appropriate messages
173
+ // instead of the misleading generic "Object 'X' not found"
174
+ if (context.tool?.startsWith("pg_cron_")) {
175
+ if (context.tool === "pg_cron_alter_job") {
176
+ const jobId = context.target ?? "unknown";
177
+ throw new Error(`Job ${jobId} not found. Use pg_cron_list_jobs to see available jobs.`, { cause: error });
178
+ }
179
+ if (context.tool === "pg_cron_schedule_in_database") {
180
+ const dbMatch = /database "([^"]+)"/i.exec(msg);
181
+ const dbName = dbMatch?.[1] ?? context.target ?? "unknown";
182
+ throw new Error(`Database '${dbName}' not found or not accessible for cron scheduling. Verify the database name exists.`, { cause: error });
183
+ }
184
+ // Generic cron fallback
185
+ throw new Error(`Cron operation failed: ${msg}. Use pg_cron_list_jobs to verify job state.`, { cause: error });
186
+ }
187
+ // Generic "does not exist" fallback
188
+ const match = /(?:table|relation) "([^"]+)"/i.exec(msg) ??
189
+ /"([^"]+)" does not exist/i.exec(msg);
190
+ const objectName = match?.[1] ?? context.table ?? "unknown";
191
+ throw new Error(`Object '${objectName}' not found. Use ifExists: true to avoid this error.`, { cause: error });
192
+ }
193
+ // 3F000 — invalid schema name
194
+ if (pgCode === "3F000" || /schema ".*" does not exist/i.test(msg)) {
195
+ const match = /schema "([^"]+)"/i.exec(msg);
196
+ const schemaName = match?.[1] ?? context.schema ?? "unknown";
197
+ throw new Error(`Schema '${schemaName}' does not exist. Use pg_list_objects with type 'table' to see available schemas.`, { cause: error });
198
+ }
199
+ // Overlapping partition bounds (RANGE overlap or conflicting LIST values)
200
+ if (/conflicting values for partition/i.test(msg) ||
201
+ /would overlap partition/i.test(msg)) {
202
+ throw new Error(`Partition bounds overlap with an existing partition. Use pg_list_partitions to see current partition bounds.`, { cause: error });
203
+ }
204
+ // Already-attached partition (attempting to attach a table that is already a partition)
205
+ if (/is already a partition/i.test(msg)) {
206
+ const match = /"([^"]+)" is already a partition/i.exec(msg);
207
+ const tableName = match?.[1] ?? context.table ?? "unknown";
208
+ throw new Error(`Table '${tableName}' is already a partition. Use pg_list_partitions to see current partitions, or pg_detach_partition to detach it first.`, { cause: error });
209
+ }
210
+ // XX000 — invalid geometry (PostGIS WKT/GeoJSON parse failure)
211
+ if (/parse error - invalid geometry/i.test(msg)) {
212
+ throw new Error(`Invalid geometry input. Use WKT format (e.g., 'POINT(-74 40)', 'POLYGON((...))') or GeoJSON format (e.g., '{"type":"Point","coordinates":[-74,40]}').`, { cause: error });
213
+ }
214
+ // Unrecognized PG error — re-throw with cause preserved
215
+ throw error;
216
+ }
217
+ /**
218
+ * Wrapper around parsePostgresError that returns the structured error message
219
+ * as a string instead of throwing. Use this in handler catch blocks where you
220
+ * want to return `{ success: false, error: formatPostgresError(...) }`.
221
+ *
222
+ * parsePostgresError always throws — this function catches the throw and
223
+ * extracts the message for structured error responses.
224
+ */
225
+ export function formatPostgresError(error, context) {
226
+ // Handle Zod validation errors: extract clean messages from issues array
227
+ // ZodError instances have an .issues array — detect via duck-typing to
228
+ // avoid importing zod in this shared module.
229
+ if (error instanceof Error &&
230
+ "issues" in error &&
231
+ Array.isArray(error["issues"])) {
232
+ const issues = error["issues"];
233
+ return issues
234
+ .map((issue) => {
235
+ const pathStr = Array.isArray(issue.path) && issue.path.length > 0
236
+ ? issue.path.join(".")
237
+ : "";
238
+ const msg = issue.message ?? "Unknown validation error";
239
+ return pathStr !== ""
240
+ ? `Validation error: ${msg} (${pathStr})`
241
+ : `Validation error: ${msg}`;
242
+ })
243
+ .join("; ");
244
+ }
245
+ try {
246
+ parsePostgresError(error, context);
247
+ // parsePostgresError always throws, but fallback just in case
248
+ return error instanceof Error ? error.message : String(error);
249
+ }
250
+ catch (structured) {
251
+ return structured instanceof Error
252
+ ? structured.message
253
+ : String(structured);
254
+ }
255
+ }
256
+ //# sourceMappingURL=error-helpers.js.map