@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
@@ -3,9 +3,10 @@
3
3
  *
4
4
  * Advanced spatial tools: geocode, geo_transform, geo_index_optimize, geo_cluster.
5
5
  */
6
- import { z } from "zod";
6
+ import { z, ZodError } from "zod";
7
7
  import { readOnly } from "../../../../utils/annotations.js";
8
8
  import { getToolIcons } from "../../../../utils/icons.js";
9
+ import { formatPostgresError } from "../core/error-helpers.js";
9
10
  import { GeocodeSchemaBase, GeocodeSchema, GeoTransformSchemaBase, GeoTransformSchema, GeoClusterSchemaBase, GeoClusterSchema,
10
11
  // Output schemas
11
12
  GeocodeOutputSchema, GeoTransformOutputSchema, GeoIndexOptimizeOutputSchema, GeoClusterOutputSchema, } from "../../schemas/index.js";
@@ -19,27 +20,41 @@ export function createGeocodeTool(adapter) {
19
20
  annotations: readOnly("Geocode"),
20
21
  icons: getToolIcons("postgis", readOnly("Geocode")),
21
22
  handler: async (params, _context) => {
22
- const parsed = GeocodeSchema.parse(params ?? {});
23
- const srid = parsed.srid ?? 4326;
24
- const sql = `SELECT
23
+ try {
24
+ const parsed = GeocodeSchema.parse(params ?? {});
25
+ const srid = parsed.srid ?? 4326;
26
+ const sql = `SELECT
25
27
  ST_AsGeoJSON(ST_SetSRID(ST_MakePoint($1, $2), $3)) as geojson,
26
28
  ST_AsText(ST_SetSRID(ST_MakePoint($1, $2), $3)) as wkt`;
27
- const result = await adapter.executeQuery(sql, [
28
- parsed.lng,
29
- parsed.lat,
30
- srid,
31
- ]);
32
- // Add note about SRID for non-4326 cases
33
- const row = result.rows?.[0];
34
- if (row === undefined) {
35
- return {};
29
+ const result = await adapter.executeQuery(sql, [
30
+ parsed.lng,
31
+ parsed.lat,
32
+ srid,
33
+ ]);
34
+ // Add note about SRID for non-4326 cases
35
+ const row = result.rows?.[0];
36
+ if (row === undefined) {
37
+ return {};
38
+ }
39
+ const response = { ...row };
40
+ if (srid !== 4326) {
41
+ response["note"] =
42
+ `Coordinates are WGS84 lat/lng with SRID ${String(srid)} metadata. Use pg_geo_transform to convert to target CRS.`;
43
+ }
44
+ return response;
36
45
  }
37
- const response = { ...row };
38
- if (srid !== 4326) {
39
- response["note"] =
40
- `Coordinates are WGS84 lat/lng with SRID ${String(srid)} metadata. Use pg_geo_transform to convert to target CRS.`;
46
+ catch (error) {
47
+ if (error instanceof ZodError) {
48
+ return {
49
+ success: false,
50
+ error: error.issues.map((i) => i.message).join("; "),
51
+ };
52
+ }
53
+ return {
54
+ success: false,
55
+ error: formatPostgresError(error, { tool: "pg_geocode" }),
56
+ };
41
57
  }
42
- return response;
43
58
  },
44
59
  };
45
60
  }
@@ -56,55 +71,114 @@ export function createGeoTransformTool(adapter) {
56
71
  annotations: readOnly("Transform Geometry"),
57
72
  icons: getToolIcons("postgis", readOnly("Transform Geometry")),
58
73
  handler: async (params, _context) => {
59
- const parsed = GeoTransformSchema.parse(params ?? {});
60
- const schemaName = parsed.schema ?? "public";
61
- const qualifiedTable = schemaName !== "public"
62
- ? `"${schemaName}"."${parsed.table}"`
63
- : `"${parsed.table}"`;
64
- const columnName = `"${parsed.column}"`;
65
- const whereClause = parsed.where !== undefined ? `WHERE ${parsed.where}` : "";
66
- // Default limit of 50 to prevent large payloads, use limit: 0 for all
67
- const effectiveLimit = parsed.limit ?? 50;
68
- const limitClause = effectiveLimit > 0 ? `LIMIT ${String(effectiveLimit)}` : "";
69
- // Get non-geometry columns to avoid returning raw WKB
70
- const colQuery = `
71
- SELECT column_name FROM information_schema.columns
72
- WHERE table_schema = $1 AND table_name = $2
73
- AND udt_name NOT IN ('geometry', 'geography')
74
- ORDER BY ordinal_position
75
- `;
76
- const colResult = await adapter.executeQuery(colQuery, [
77
- schemaName,
78
- parsed.table,
79
- ]);
80
- const nonGeomCols = (colResult.rows ?? [])
81
- .map((row) => `"${String(row["column_name"])}"`)
82
- .join(", ");
83
- // Select non-geometry columns + transformed geometry representations
84
- const selectCols = nonGeomCols.length > 0
85
- ? `${nonGeomCols}, ST_AsGeoJSON(ST_Transform(ST_SetSRID(${columnName}, ${String(parsed.fromSrid)}), ${String(parsed.toSrid)})) as transformed_geojson, ST_AsText(ST_Transform(ST_SetSRID(${columnName}, ${String(parsed.fromSrid)}), ${String(parsed.toSrid)})) as transformed_wkt, ${String(parsed.toSrid)} as output_srid`
86
- : `ST_AsGeoJSON(ST_Transform(ST_SetSRID(${columnName}, ${String(parsed.fromSrid)}), ${String(parsed.toSrid)})) as transformed_geojson, ST_AsText(ST_Transform(ST_SetSRID(${columnName}, ${String(parsed.fromSrid)}), ${String(parsed.toSrid)})) as transformed_wkt, ${String(parsed.toSrid)} as output_srid`;
87
- const sql = `SELECT ${selectCols} FROM ${qualifiedTable} ${whereClause} ${limitClause}`;
88
- const result = await adapter.executeQuery(sql);
89
- // Build response with truncation indicators if default limit was applied
90
- const response = {
91
- results: result.rows,
92
- count: result.rows?.length ?? 0,
93
- fromSrid: parsed.fromSrid,
94
- toSrid: parsed.toSrid,
95
- };
96
- // When using default limit, check if more rows exist
97
- if (parsed.limit === undefined && effectiveLimit > 0) {
98
- const countSql = `SELECT COUNT(*) as cnt FROM ${qualifiedTable} ${whereClause}`;
99
- const countResult = await adapter.executeQuery(countSql);
100
- const totalCount = Number(countResult.rows?.[0]?.["cnt"] ?? 0);
101
- if (totalCount > effectiveLimit) {
102
- response["truncated"] = true;
103
- response["totalCount"] = totalCount;
104
- response["limit"] = effectiveLimit;
74
+ try {
75
+ const parsed = GeoTransformSchema.parse(params ?? {});
76
+ const schemaName = parsed.schema ?? "public";
77
+ const qualifiedTable = schemaName !== "public"
78
+ ? `"${schemaName}"."${parsed.table}"`
79
+ : `"${parsed.table}"`;
80
+ const columnName = `"${parsed.column}"`;
81
+ // Auto-detect fromSrid from column metadata if not provided
82
+ let fromSrid = parsed.fromSrid;
83
+ if (fromSrid === 0) {
84
+ // Check if table exists before attempting SRID auto-detection
85
+ const tableCheckSql = `SELECT 1 FROM information_schema.tables WHERE table_schema = $1 AND table_name = $2`;
86
+ const tableCheckResult = await adapter.executeQuery(tableCheckSql, [
87
+ schemaName,
88
+ parsed.table,
89
+ ]);
90
+ if ((tableCheckResult.rows?.length ?? 0) === 0) {
91
+ return {
92
+ success: false,
93
+ error: `Table or view '${parsed.table}' not found. Use pg_list_tables to see available tables.`,
94
+ };
95
+ }
96
+ const sridQuery = `
97
+ SELECT srid FROM geometry_columns
98
+ WHERE f_table_schema = $1 AND f_table_name = $2 AND f_geometry_column = $3
99
+ UNION
100
+ SELECT srid FROM geography_columns
101
+ WHERE f_table_schema = $1 AND f_table_name = $2 AND f_geography_column = $3
102
+ LIMIT 1
103
+ `;
104
+ const sridResult = await adapter.executeQuery(sridQuery, [
105
+ schemaName,
106
+ parsed.table,
107
+ parsed.column,
108
+ ]);
109
+ const sridValue = sridResult.rows?.[0]?.["srid"];
110
+ if (sridValue !== undefined && sridValue !== null) {
111
+ fromSrid = Number(sridValue);
112
+ }
113
+ else {
114
+ return {
115
+ success: false,
116
+ error: `Could not auto-detect SRID for column "${parsed.column}" on table "${parsed.table}". Provide fromSrid (or sourceSrid) explicitly.`,
117
+ suggestion: `Use fromSrid: 4326 for WGS84/GPS coordinates, or fromSrid: 3857 for Web Mercator`,
118
+ };
119
+ }
105
120
  }
121
+ const whereClause = parsed.where !== undefined ? `WHERE ${parsed.where}` : "";
122
+ // Default limit of 50 to prevent large payloads, use limit: 0 for all
123
+ const effectiveLimit = parsed.limit ?? 50;
124
+ const limitClause = effectiveLimit > 0 ? `LIMIT ${String(effectiveLimit)}` : "";
125
+ // Get non-geometry columns to avoid returning raw WKB
126
+ const colQuery = `
127
+ SELECT column_name FROM information_schema.columns
128
+ WHERE table_schema = $1 AND table_name = $2
129
+ AND udt_name NOT IN ('geometry', 'geography')
130
+ ORDER BY ordinal_position
131
+ `;
132
+ const colResult = await adapter.executeQuery(colQuery, [
133
+ schemaName,
134
+ parsed.table,
135
+ ]);
136
+ const nonGeomCols = (colResult.rows ?? [])
137
+ .map((row) => `"${String(row["column_name"])}"`)
138
+ .join(", ");
139
+ // Select non-geometry columns + transformed geometry representations
140
+ const selectCols = nonGeomCols.length > 0
141
+ ? `${nonGeomCols}, ST_AsGeoJSON(ST_Transform(ST_SetSRID(${columnName}, ${String(fromSrid)}), ${String(parsed.toSrid)})) as transformed_geojson, ST_AsText(ST_Transform(ST_SetSRID(${columnName}, ${String(fromSrid)}), ${String(parsed.toSrid)})) as transformed_wkt, ${String(parsed.toSrid)} as output_srid`
142
+ : `ST_AsGeoJSON(ST_Transform(ST_SetSRID(${columnName}, ${String(fromSrid)}), ${String(parsed.toSrid)})) as transformed_geojson, ST_AsText(ST_Transform(ST_SetSRID(${columnName}, ${String(fromSrid)}), ${String(parsed.toSrid)})) as transformed_wkt, ${String(parsed.toSrid)} as output_srid`;
143
+ const sql = `SELECT ${selectCols} FROM ${qualifiedTable} ${whereClause} ${limitClause}`;
144
+ const result = await adapter.executeQuery(sql);
145
+ // Build response with truncation indicators if default limit was applied
146
+ const response = {
147
+ results: result.rows,
148
+ count: result.rows?.length ?? 0,
149
+ fromSrid: fromSrid,
150
+ toSrid: parsed.toSrid,
151
+ ...(parsed.fromSrid === 0 && { autoDetectedSrid: true }),
152
+ };
153
+ // Check if results were truncated (works for both default and explicit limits)
154
+ if (effectiveLimit > 0) {
155
+ const countSql = `SELECT COUNT(*) as cnt FROM ${qualifiedTable} ${whereClause}`;
156
+ const countResult = await adapter.executeQuery(countSql);
157
+ const totalCount = Number(countResult.rows?.[0]?.["cnt"] ?? 0);
158
+ if (totalCount > effectiveLimit) {
159
+ response["truncated"] = true;
160
+ response["totalCount"] = totalCount;
161
+ response["limit"] = effectiveLimit;
162
+ }
163
+ }
164
+ return response;
165
+ }
166
+ catch (error) {
167
+ if (error instanceof ZodError) {
168
+ return {
169
+ success: false,
170
+ error: error.issues.map((i) => i.message).join("; "),
171
+ };
172
+ }
173
+ return {
174
+ success: false,
175
+ error: formatPostgresError(error, {
176
+ tool: "pg_geo_transform",
177
+ table: params?.["table"] ??
178
+ undefined,
179
+ }),
180
+ };
106
181
  }
107
- return response;
108
182
  },
109
183
  };
110
184
  }
@@ -238,151 +312,169 @@ export function createGeoClusterTool(adapter) {
238
312
  annotations: readOnly("Geo Cluster"),
239
313
  icons: getToolIcons("postgis", readOnly("Geo Cluster")),
240
314
  handler: async (params, _context) => {
241
- const parsed = GeoClusterSchema.parse(params ?? {});
242
- const method = parsed.method ?? "dbscan";
243
- const schemaName = parsed.schema ?? "public";
244
- const qualifiedTable = schemaName !== "public"
245
- ? `"${schemaName}"."${parsed.table}"`
246
- : `"${parsed.table}"`;
247
- const whereClause = parsed.where !== undefined ? `WHERE ${parsed.where}` : "";
248
- const limitClause = parsed.limit !== undefined && parsed.limit > 0
249
- ? `LIMIT ${String(parsed.limit)}`
250
- : "";
251
- // Track warning if K > N
252
- let warning;
253
- // For K-Means, validate and adjust numClusters
254
- let effectiveNumClusters = parsed.numClusters ?? 5;
255
- let rowCount = 0;
256
- if (method === "kmeans") {
257
- // Validate numClusters > 0
258
- if (effectiveNumClusters <= 0) {
259
- return {
260
- error: `numClusters must be greater than 0 (received: ${String(effectiveNumClusters)}).`,
261
- method,
262
- table: parsed.table,
263
- numClusters: effectiveNumClusters,
264
- suggestion: "Provide a positive integer for numClusters (e.g., numClusters: 3)",
265
- };
315
+ try {
316
+ const parsed = GeoClusterSchema.parse(params ?? {});
317
+ const method = parsed.method ?? "dbscan";
318
+ const schemaName = parsed.schema ?? "public";
319
+ const qualifiedTable = schemaName !== "public"
320
+ ? `"${schemaName}"."${parsed.table}"`
321
+ : `"${parsed.table}"`;
322
+ const whereClause = parsed.where !== undefined ? `WHERE ${parsed.where}` : "";
323
+ const limitClause = parsed.limit !== undefined && parsed.limit > 0
324
+ ? `LIMIT ${String(parsed.limit)}`
325
+ : "";
326
+ // Track warning if K > N
327
+ let warning;
328
+ // For K-Means, validate and adjust numClusters
329
+ let effectiveNumClusters = parsed.numClusters ?? 5;
330
+ let rowCount;
331
+ if (method === "kmeans") {
332
+ // Validate numClusters > 0
333
+ if (effectiveNumClusters <= 0) {
334
+ return {
335
+ error: `numClusters must be greater than 0 (received: ${String(effectiveNumClusters)}).`,
336
+ method,
337
+ table: parsed.table,
338
+ numClusters: effectiveNumClusters,
339
+ suggestion: "Provide a positive integer for numClusters (e.g., numClusters: 3)",
340
+ };
341
+ }
342
+ const countResult = await adapter.executeQuery(`SELECT COUNT(*) as cnt FROM ${qualifiedTable} ${whereClause}`);
343
+ rowCount = Number(countResult.rows?.[0]?.["cnt"] ?? 0);
344
+ if (rowCount === 0) {
345
+ return {
346
+ error: `No rows found in table ${parsed.table}${whereClause !== "" ? " matching filter" : ""}. K-Means requires at least 1 row.`,
347
+ method,
348
+ table: parsed.table,
349
+ rowCount: 0,
350
+ };
351
+ }
352
+ // Clamp K to row count and warn if exceeded
353
+ if (effectiveNumClusters > rowCount) {
354
+ warning = `Requested ${String(parsed.numClusters)} clusters but only ${String(rowCount)} rows available. Using ${String(rowCount)} clusters instead.`;
355
+ effectiveNumClusters = rowCount;
356
+ }
266
357
  }
267
- const countResult = await adapter.executeQuery(`SELECT COUNT(*) as cnt FROM ${qualifiedTable} ${whereClause}`);
268
- rowCount = Number(countResult.rows?.[0]?.["cnt"] ?? 0);
269
- if (rowCount === 0) {
270
- return {
271
- error: `No rows found in table ${parsed.table}${whereClause !== "" ? " matching filter" : ""}. K-Means requires at least 1 row.`,
272
- method,
273
- table: parsed.table,
274
- rowCount: 0,
275
- };
358
+ let clusterFunction;
359
+ if (method === "kmeans") {
360
+ clusterFunction = `ST_ClusterKMeans("${parsed.column}", ${String(effectiveNumClusters)}) OVER ()`;
276
361
  }
277
- // Clamp K to row count and warn if exceeded
278
- if (effectiveNumClusters > rowCount) {
279
- warning = `Requested ${String(parsed.numClusters)} clusters but only ${String(rowCount)} rows available. Using ${String(rowCount)} clusters instead.`;
280
- effectiveNumClusters = rowCount;
362
+ else {
363
+ const eps = parsed.eps ?? 100;
364
+ const minPoints = parsed.minPoints ?? 3;
365
+ clusterFunction = `ST_ClusterDBSCAN("${parsed.column}", ${String(eps)}, ${String(minPoints)}) OVER ()`;
281
366
  }
282
- }
283
- let clusterFunction;
284
- if (method === "kmeans") {
285
- clusterFunction = `ST_ClusterKMeans("${parsed.column}", ${String(effectiveNumClusters)}) OVER ()`;
286
- }
287
- else {
288
- const eps = parsed.eps ?? 100;
289
- const minPoints = parsed.minPoints ?? 3;
290
- clusterFunction = `ST_ClusterDBSCAN("${parsed.column}", ${String(eps)}, ${String(minPoints)}) OVER ()`;
291
- }
292
- const sql = `
293
- WITH clustered AS (
294
- SELECT
295
- *,
296
- ${clusterFunction} as cluster_id
297
- FROM ${qualifiedTable}
298
- ${whereClause}
299
- )
300
- SELECT
301
- cluster_id,
302
- COUNT(*) as point_count,
303
- ST_AsGeoJSON(ST_Centroid(ST_Collect("${parsed.column}"))) as centroid,
304
- ST_AsGeoJSON(ST_ConvexHull(ST_Collect("${parsed.column}"))) as hull
305
- FROM clustered
306
- WHERE cluster_id IS NOT NULL
307
- GROUP BY cluster_id
308
- ORDER BY point_count DESC
309
- ${limitClause}
310
- `;
311
- const [clustersResult, summaryResult] = await Promise.all([
312
- adapter.executeQuery(sql),
313
- adapter.executeQuery(`
314
- WITH clustered AS (
315
- SELECT ${clusterFunction} as cluster_id
316
- FROM ${qualifiedTable}
317
- ${whereClause}
318
- )
319
- SELECT
320
- COUNT(DISTINCT cluster_id) as num_clusters,
321
- COUNT(*) FILTER (WHERE cluster_id IS NULL) as noise_points,
322
- COUNT(*) as total_points
323
- FROM clustered
324
- `),
325
- ]);
326
- // Normalize cluster point_count to numbers
327
- const normalizedClusters = (clustersResult.rows ?? []).map((row) => ({
328
- ...row,
329
- point_count: Number(row["point_count"]),
330
- }));
331
- // Normalize summary values to numbers for consistency
332
- const rawSummary = summaryResult.rows?.[0] ?? {};
333
- const normalizedSummary = {
334
- num_clusters: Number(rawSummary["num_clusters"] ?? 0),
335
- noise_points: Number(rawSummary["noise_points"] ?? 0),
336
- total_points: Number(rawSummary["total_points"] ?? 0),
337
- };
338
- // Build response
339
- const response = {
340
- method,
341
- parameters: method === "kmeans"
342
- ? { numClusters: effectiveNumClusters }
343
- : { eps: parsed.eps ?? 100, minPoints: parsed.minPoints ?? 3 },
344
- summary: normalizedSummary,
345
- clusters: normalizedClusters,
346
- };
347
- // Add warning if K was clamped
348
- if (warning !== undefined) {
349
- response["warning"] = warning;
350
- response["requestedClusters"] = parsed.numClusters;
351
- response["actualClusters"] = effectiveNumClusters;
352
- }
353
- // Add contextual hints based on method and results
354
- const numClusters = normalizedSummary.num_clusters;
355
- const noisePoints = normalizedSummary.noise_points;
356
- const totalPoints = normalizedSummary.total_points;
357
- if (method === "dbscan") {
358
- const eps = parsed.eps ?? 100;
359
- const minPoints = parsed.minPoints ?? 3;
360
- // Provide hints about DBSCAN parameter trade-offs
361
- const hints = [];
362
- if (numClusters === 1 && totalPoints > 1) {
363
- hints.push(`All ${String(totalPoints)} points formed a single cluster. Consider decreasing eps (currently ${String(eps)}m) to create more distinct clusters.`);
367
+ const sql = `
368
+ WITH clustered AS (
369
+ SELECT
370
+ *,
371
+ ${clusterFunction} as cluster_id
372
+ FROM ${qualifiedTable}
373
+ ${whereClause}
374
+ )
375
+ SELECT
376
+ cluster_id,
377
+ COUNT(*) as point_count,
378
+ ST_AsGeoJSON(ST_Centroid(ST_Collect("${parsed.column}"))) as centroid,
379
+ ST_AsGeoJSON(ST_ConvexHull(ST_Collect("${parsed.column}"))) as hull
380
+ FROM clustered
381
+ WHERE cluster_id IS NOT NULL
382
+ GROUP BY cluster_id
383
+ ORDER BY point_count DESC
384
+ ${limitClause}
385
+ `;
386
+ const [clustersResult, summaryResult] = await Promise.all([
387
+ adapter.executeQuery(sql),
388
+ adapter.executeQuery(`
389
+ WITH clustered AS (
390
+ SELECT ${clusterFunction} as cluster_id
391
+ FROM ${qualifiedTable}
392
+ ${whereClause}
393
+ )
394
+ SELECT
395
+ COUNT(DISTINCT cluster_id) as num_clusters,
396
+ COUNT(*) FILTER (WHERE cluster_id IS NULL) as noise_points,
397
+ COUNT(*) as total_points
398
+ FROM clustered
399
+ `),
400
+ ]);
401
+ // Normalize cluster point_count to numbers
402
+ const normalizedClusters = (clustersResult.rows ?? []).map((row) => ({
403
+ ...row,
404
+ point_count: Number(row["point_count"]),
405
+ }));
406
+ // Normalize summary values to numbers for consistency
407
+ const rawSummary = summaryResult.rows?.[0] ?? {};
408
+ const normalizedSummary = {
409
+ num_clusters: Number(rawSummary["num_clusters"] ?? 0),
410
+ noise_points: Number(rawSummary["noise_points"] ?? 0),
411
+ total_points: Number(rawSummary["total_points"] ?? 0),
412
+ };
413
+ // Build response
414
+ const response = {
415
+ method,
416
+ parameters: method === "kmeans"
417
+ ? { numClusters: effectiveNumClusters }
418
+ : { eps: parsed.eps ?? 100, minPoints: parsed.minPoints ?? 3 },
419
+ summary: normalizedSummary,
420
+ clusters: normalizedClusters,
421
+ };
422
+ // Add warning if K was clamped
423
+ if (warning !== undefined) {
424
+ response["warning"] = warning;
425
+ response["requestedClusters"] = parsed.numClusters;
426
+ response["actualClusters"] = effectiveNumClusters;
364
427
  }
365
- if (noisePoints > 0 && noisePoints > totalPoints * 0.5) {
366
- hints.push(`${String(noisePoints)} of ${String(totalPoints)} points (${String(Math.round((noisePoints / totalPoints) * 100))}%) are noise. Consider increasing eps or decreasing minPoints (currently ${String(minPoints)}).`);
428
+ // Add contextual hints based on method and results
429
+ const numClusters = normalizedSummary.num_clusters;
430
+ const noisePoints = normalizedSummary.noise_points;
431
+ const totalPoints = normalizedSummary.total_points;
432
+ if (method === "dbscan") {
433
+ const eps = parsed.eps ?? 100;
434
+ const minPoints = parsed.minPoints ?? 3;
435
+ // Provide hints about DBSCAN parameter trade-offs
436
+ const hints = [];
437
+ if (numClusters === 1 && totalPoints > 1) {
438
+ hints.push(`All ${String(totalPoints)} points formed a single cluster. Consider decreasing eps (currently ${String(eps)}m) to create more distinct clusters.`);
439
+ }
440
+ if (noisePoints > 0 && noisePoints > totalPoints * 0.5) {
441
+ hints.push(`${String(noisePoints)} of ${String(totalPoints)} points (${String(Math.round((noisePoints / totalPoints) * 100))}%) are noise. Consider increasing eps or decreasing minPoints (currently ${String(minPoints)}).`);
442
+ }
443
+ if (numClusters === 0 && totalPoints > 0) {
444
+ hints.push(`No clusters formed - all points are noise. Try increasing eps (currently ${String(eps)}m) or decreasing minPoints (currently ${String(minPoints)}).`);
445
+ }
446
+ response["notes"] =
447
+ "Noise points (cluster_id = NULL) are points not belonging to any cluster";
448
+ if (hints.length > 0) {
449
+ response["hints"] = hints;
450
+ }
451
+ response["parameterGuide"] = {
452
+ eps: `Distance threshold in meters. Larger values group more distant points together.`,
453
+ minPoints: `Minimum points required to form a cluster. Higher values create fewer, denser clusters.`,
454
+ };
367
455
  }
368
- if (numClusters === 0 && totalPoints > 0) {
369
- hints.push(`No clusters formed - all points are noise. Try increasing eps (currently ${String(eps)}m) or decreasing minPoints (currently ${String(minPoints)}).`);
456
+ else {
457
+ response["notes"] =
458
+ "K-Means will always assign all points to a cluster";
370
459
  }
371
- response["notes"] =
372
- "Noise points (cluster_id = NULL) are points not belonging to any cluster";
373
- if (hints.length > 0) {
374
- response["hints"] = hints;
460
+ return response;
461
+ }
462
+ catch (error) {
463
+ if (error instanceof ZodError) {
464
+ return {
465
+ success: false,
466
+ error: error.issues.map((i) => i.message).join("; "),
467
+ };
375
468
  }
376
- response["parameterGuide"] = {
377
- eps: `Distance threshold in meters. Larger values group more distant points together.`,
378
- minPoints: `Minimum points required to form a cluster. Higher values create fewer, denser clusters.`,
469
+ return {
470
+ success: false,
471
+ error: formatPostgresError(error, {
472
+ tool: "pg_geo_cluster",
473
+ table: params?.["table"] ??
474
+ undefined,
475
+ }),
379
476
  };
380
477
  }
381
- else {
382
- response["notes"] =
383
- "K-Means will always assign all points to a cluster";
384
- }
385
- return response;
386
478
  },
387
479
  };
388
480
  }
@@ -1 +1 @@
1
- {"version":3,"file":"advanced.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/postgis/advanced.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advanced.js","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/postgis/advanced.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/postgis/basic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AAkCpC,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,eAAe,GACvB,cAAc,CAchB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,cAAc,CA2EhB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,cAAc,CAuEhB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CA4D3E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAwFzE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,GACvB,cAAc,CA2FhB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CAkFhB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,GACvB,cAAc,CA0EhB"}
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/postgresql/tools/postgis/basic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AAsCpC,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,eAAe,GACvB,cAAc,CAchB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,cAAc,CA2EhB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,cAAc,CAyFhB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CA8E3E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAyGzE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,GACvB,cAAc,CA8GhB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,cAAc,CA6GhB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,GACvB,cAAc,CAiFhB"}