db-mcp 1.0.1

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 (208) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +860 -0
  3. package/dist/adapters/DatabaseAdapter.d.ts +141 -0
  4. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
  5. package/dist/adapters/DatabaseAdapter.js +131 -0
  6. package/dist/adapters/DatabaseAdapter.js.map +1 -0
  7. package/dist/adapters/sqlite/SchemaManager.d.ts +58 -0
  8. package/dist/adapters/sqlite/SchemaManager.d.ts.map +1 -0
  9. package/dist/adapters/sqlite/SchemaManager.js +187 -0
  10. package/dist/adapters/sqlite/SchemaManager.js.map +1 -0
  11. package/dist/adapters/sqlite/SqliteAdapter.d.ts +161 -0
  12. package/dist/adapters/sqlite/SqliteAdapter.d.ts.map +1 -0
  13. package/dist/adapters/sqlite/SqliteAdapter.js +741 -0
  14. package/dist/adapters/sqlite/SqliteAdapter.js.map +1 -0
  15. package/dist/adapters/sqlite/index.d.ts +9 -0
  16. package/dist/adapters/sqlite/index.d.ts.map +1 -0
  17. package/dist/adapters/sqlite/index.js +8 -0
  18. package/dist/adapters/sqlite/index.js.map +1 -0
  19. package/dist/adapters/sqlite/json-utils.d.ts +100 -0
  20. package/dist/adapters/sqlite/json-utils.d.ts.map +1 -0
  21. package/dist/adapters/sqlite/json-utils.js +274 -0
  22. package/dist/adapters/sqlite/json-utils.js.map +1 -0
  23. package/dist/adapters/sqlite/output-schemas.d.ts +1187 -0
  24. package/dist/adapters/sqlite/output-schemas.d.ts.map +1 -0
  25. package/dist/adapters/sqlite/output-schemas.js +1337 -0
  26. package/dist/adapters/sqlite/output-schemas.js.map +1 -0
  27. package/dist/adapters/sqlite/prompts.d.ts +13 -0
  28. package/dist/adapters/sqlite/prompts.d.ts.map +1 -0
  29. package/dist/adapters/sqlite/prompts.js +605 -0
  30. package/dist/adapters/sqlite/prompts.js.map +1 -0
  31. package/dist/adapters/sqlite/resources.d.ts +13 -0
  32. package/dist/adapters/sqlite/resources.d.ts.map +1 -0
  33. package/dist/adapters/sqlite/resources.js +251 -0
  34. package/dist/adapters/sqlite/resources.js.map +1 -0
  35. package/dist/adapters/sqlite/tools/admin.d.ts +14 -0
  36. package/dist/adapters/sqlite/tools/admin.d.ts.map +1 -0
  37. package/dist/adapters/sqlite/tools/admin.js +788 -0
  38. package/dist/adapters/sqlite/tools/admin.js.map +1 -0
  39. package/dist/adapters/sqlite/tools/core.d.ts +25 -0
  40. package/dist/adapters/sqlite/tools/core.d.ts.map +1 -0
  41. package/dist/adapters/sqlite/tools/core.js +359 -0
  42. package/dist/adapters/sqlite/tools/core.js.map +1 -0
  43. package/dist/adapters/sqlite/tools/fts.d.ts +13 -0
  44. package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -0
  45. package/dist/adapters/sqlite/tools/fts.js +347 -0
  46. package/dist/adapters/sqlite/tools/fts.js.map +1 -0
  47. package/dist/adapters/sqlite/tools/geo.d.ts +14 -0
  48. package/dist/adapters/sqlite/tools/geo.d.ts.map +1 -0
  49. package/dist/adapters/sqlite/tools/geo.js +252 -0
  50. package/dist/adapters/sqlite/tools/geo.js.map +1 -0
  51. package/dist/adapters/sqlite/tools/index.d.ts +30 -0
  52. package/dist/adapters/sqlite/tools/index.d.ts.map +1 -0
  53. package/dist/adapters/sqlite/tools/index.js +61 -0
  54. package/dist/adapters/sqlite/tools/index.js.map +1 -0
  55. package/dist/adapters/sqlite/tools/json-helpers.d.ts +14 -0
  56. package/dist/adapters/sqlite/tools/json-helpers.d.ts.map +1 -0
  57. package/dist/adapters/sqlite/tools/json-helpers.js +477 -0
  58. package/dist/adapters/sqlite/tools/json-helpers.js.map +1 -0
  59. package/dist/adapters/sqlite/tools/json-operations.d.ts +14 -0
  60. package/dist/adapters/sqlite/tools/json-operations.d.ts.map +1 -0
  61. package/dist/adapters/sqlite/tools/json-operations.js +839 -0
  62. package/dist/adapters/sqlite/tools/json-operations.js.map +1 -0
  63. package/dist/adapters/sqlite/tools/stats.d.ts +15 -0
  64. package/dist/adapters/sqlite/tools/stats.d.ts.map +1 -0
  65. package/dist/adapters/sqlite/tools/stats.js +1219 -0
  66. package/dist/adapters/sqlite/tools/stats.js.map +1 -0
  67. package/dist/adapters/sqlite/tools/text.d.ts +14 -0
  68. package/dist/adapters/sqlite/tools/text.d.ts.map +1 -0
  69. package/dist/adapters/sqlite/tools/text.js +1141 -0
  70. package/dist/adapters/sqlite/tools/text.js.map +1 -0
  71. package/dist/adapters/sqlite/tools/vector.d.ts +14 -0
  72. package/dist/adapters/sqlite/tools/vector.d.ts.map +1 -0
  73. package/dist/adapters/sqlite/tools/vector.js +613 -0
  74. package/dist/adapters/sqlite/tools/vector.js.map +1 -0
  75. package/dist/adapters/sqlite/tools/virtual.d.ts +13 -0
  76. package/dist/adapters/sqlite/tools/virtual.d.ts.map +1 -0
  77. package/dist/adapters/sqlite/tools/virtual.js +930 -0
  78. package/dist/adapters/sqlite/tools/virtual.js.map +1 -0
  79. package/dist/adapters/sqlite/types.d.ts +207 -0
  80. package/dist/adapters/sqlite/types.d.ts.map +1 -0
  81. package/dist/adapters/sqlite/types.js +186 -0
  82. package/dist/adapters/sqlite/types.js.map +1 -0
  83. package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts +163 -0
  84. package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts.map +1 -0
  85. package/dist/adapters/sqlite-native/NativeSqliteAdapter.js +748 -0
  86. package/dist/adapters/sqlite-native/NativeSqliteAdapter.js.map +1 -0
  87. package/dist/adapters/sqlite-native/index.d.ts +11 -0
  88. package/dist/adapters/sqlite-native/index.d.ts.map +1 -0
  89. package/dist/adapters/sqlite-native/index.js +11 -0
  90. package/dist/adapters/sqlite-native/index.js.map +1 -0
  91. package/dist/adapters/sqlite-native/tools/spatialite.d.ts +19 -0
  92. package/dist/adapters/sqlite-native/tools/spatialite.d.ts.map +1 -0
  93. package/dist/adapters/sqlite-native/tools/spatialite.js +628 -0
  94. package/dist/adapters/sqlite-native/tools/spatialite.js.map +1 -0
  95. package/dist/adapters/sqlite-native/tools/transactions.d.ts +12 -0
  96. package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +1 -0
  97. package/dist/adapters/sqlite-native/tools/transactions.js +255 -0
  98. package/dist/adapters/sqlite-native/tools/transactions.js.map +1 -0
  99. package/dist/adapters/sqlite-native/tools/window.d.ts +12 -0
  100. package/dist/adapters/sqlite-native/tools/window.d.ts.map +1 -0
  101. package/dist/adapters/sqlite-native/tools/window.js +370 -0
  102. package/dist/adapters/sqlite-native/tools/window.js.map +1 -0
  103. package/dist/auth/AuthorizationServerDiscovery.d.ts +90 -0
  104. package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
  105. package/dist/auth/AuthorizationServerDiscovery.js +204 -0
  106. package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
  107. package/dist/auth/OAuthResourceServer.d.ts +65 -0
  108. package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
  109. package/dist/auth/OAuthResourceServer.js +121 -0
  110. package/dist/auth/OAuthResourceServer.js.map +1 -0
  111. package/dist/auth/TokenValidator.d.ts +60 -0
  112. package/dist/auth/TokenValidator.d.ts.map +1 -0
  113. package/dist/auth/TokenValidator.js +235 -0
  114. package/dist/auth/TokenValidator.js.map +1 -0
  115. package/dist/auth/errors.d.ts +74 -0
  116. package/dist/auth/errors.d.ts.map +1 -0
  117. package/dist/auth/errors.js +133 -0
  118. package/dist/auth/errors.js.map +1 -0
  119. package/dist/auth/index.d.ts +13 -0
  120. package/dist/auth/index.d.ts.map +1 -0
  121. package/dist/auth/index.js +15 -0
  122. package/dist/auth/index.js.map +1 -0
  123. package/dist/auth/middleware.d.ts +81 -0
  124. package/dist/auth/middleware.d.ts.map +1 -0
  125. package/dist/auth/middleware.js +291 -0
  126. package/dist/auth/middleware.js.map +1 -0
  127. package/dist/auth/scopes.d.ts +136 -0
  128. package/dist/auth/scopes.d.ts.map +1 -0
  129. package/dist/auth/scopes.js +349 -0
  130. package/dist/auth/scopes.js.map +1 -0
  131. package/dist/auth/types.d.ts +257 -0
  132. package/dist/auth/types.d.ts.map +1 -0
  133. package/dist/auth/types.js +8 -0
  134. package/dist/auth/types.js.map +1 -0
  135. package/dist/cli.d.ts +8 -0
  136. package/dist/cli.d.ts.map +1 -0
  137. package/dist/cli.js +236 -0
  138. package/dist/cli.js.map +1 -0
  139. package/dist/constants/ServerInstructions.d.ts +45 -0
  140. package/dist/constants/ServerInstructions.d.ts.map +1 -0
  141. package/dist/constants/ServerInstructions.js +356 -0
  142. package/dist/constants/ServerInstructions.js.map +1 -0
  143. package/dist/filtering/ToolConstants.d.ts +34 -0
  144. package/dist/filtering/ToolConstants.d.ts.map +1 -0
  145. package/dist/filtering/ToolConstants.js +174 -0
  146. package/dist/filtering/ToolConstants.js.map +1 -0
  147. package/dist/filtering/ToolFilter.d.ts +82 -0
  148. package/dist/filtering/ToolFilter.d.ts.map +1 -0
  149. package/dist/filtering/ToolFilter.js +296 -0
  150. package/dist/filtering/ToolFilter.js.map +1 -0
  151. package/dist/index.d.ts +13 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/index.js +17 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/server/McpServer.d.ts +61 -0
  156. package/dist/server/McpServer.d.ts.map +1 -0
  157. package/dist/server/McpServer.js +270 -0
  158. package/dist/server/McpServer.js.map +1 -0
  159. package/dist/transports/http.d.ts +134 -0
  160. package/dist/transports/http.d.ts.map +1 -0
  161. package/dist/transports/http.js +516 -0
  162. package/dist/transports/http.js.map +1 -0
  163. package/dist/transports/index.d.ts +5 -0
  164. package/dist/transports/index.d.ts.map +1 -0
  165. package/dist/transports/index.js +5 -0
  166. package/dist/transports/index.js.map +1 -0
  167. package/dist/types/index.d.ts +380 -0
  168. package/dist/types/index.d.ts.map +1 -0
  169. package/dist/types/index.js +68 -0
  170. package/dist/types/index.js.map +1 -0
  171. package/dist/utils/annotations.d.ts +44 -0
  172. package/dist/utils/annotations.d.ts.map +1 -0
  173. package/dist/utils/annotations.js +77 -0
  174. package/dist/utils/annotations.js.map +1 -0
  175. package/dist/utils/errors.d.ts +155 -0
  176. package/dist/utils/errors.d.ts.map +1 -0
  177. package/dist/utils/errors.js +329 -0
  178. package/dist/utils/errors.js.map +1 -0
  179. package/dist/utils/identifiers.d.ts +121 -0
  180. package/dist/utils/identifiers.d.ts.map +1 -0
  181. package/dist/utils/identifiers.js +319 -0
  182. package/dist/utils/identifiers.js.map +1 -0
  183. package/dist/utils/index.d.ts +7 -0
  184. package/dist/utils/index.d.ts.map +1 -0
  185. package/dist/utils/index.js +7 -0
  186. package/dist/utils/index.js.map +1 -0
  187. package/dist/utils/insightsManager.d.ts +39 -0
  188. package/dist/utils/insightsManager.d.ts.map +1 -0
  189. package/dist/utils/insightsManager.js +63 -0
  190. package/dist/utils/insightsManager.js.map +1 -0
  191. package/dist/utils/logger.d.ts +189 -0
  192. package/dist/utils/logger.d.ts.map +1 -0
  193. package/dist/utils/logger.js +394 -0
  194. package/dist/utils/logger.js.map +1 -0
  195. package/dist/utils/progress-utils.d.ts +54 -0
  196. package/dist/utils/progress-utils.d.ts.map +1 -0
  197. package/dist/utils/progress-utils.js +74 -0
  198. package/dist/utils/progress-utils.js.map +1 -0
  199. package/dist/utils/resourceAnnotations.d.ts +36 -0
  200. package/dist/utils/resourceAnnotations.d.ts.map +1 -0
  201. package/dist/utils/resourceAnnotations.js +57 -0
  202. package/dist/utils/resourceAnnotations.js.map +1 -0
  203. package/dist/utils/where-clause.d.ts +41 -0
  204. package/dist/utils/where-clause.d.ts.map +1 -0
  205. package/dist/utils/where-clause.js +116 -0
  206. package/dist/utils/where-clause.js.map +1 -0
  207. package/package.json +83 -0
  208. package/server.json +53 -0
@@ -0,0 +1,628 @@
1
+ /**
2
+ * SpatiaLite Geospatial Tools for Native SQLite Adapter
3
+ *
4
+ * Provides true GIS capabilities via SpatiaLite extension.
5
+ * These tools gracefully fail if SpatiaLite is not installed.
6
+ * 7 tools total (Native-only).
7
+ */
8
+ import { z } from "zod";
9
+ // SpatiaLite extension paths to try (platform-aware)
10
+ const SPATIALITE_PATHS = [
11
+ process.env["SPATIALITE_PATH"],
12
+ "mod_spatialite",
13
+ "mod_spatialite.dll",
14
+ "mod_spatialite.so",
15
+ "/usr/lib/x86_64-linux-gnu/mod_spatialite.so",
16
+ "/usr/local/lib/mod_spatialite.so",
17
+ "/usr/local/lib/mod_spatialite.dylib",
18
+ ].filter((p) => Boolean(p));
19
+ // Track loaded state per database
20
+ const loadedDatabases = new WeakSet();
21
+ // Schemas
22
+ const LoadSpatialiteSchema = z.object({
23
+ extensionPath: z
24
+ .string()
25
+ .optional()
26
+ .describe("Custom path to mod_spatialite extension"),
27
+ forceReload: z
28
+ .boolean()
29
+ .optional()
30
+ .default(false)
31
+ .describe("Force reload if already loaded"),
32
+ });
33
+ const CreateSpatialTableSchema = z.object({
34
+ tableName: z.string().describe("Name of the spatial table to create"),
35
+ geometryColumn: z
36
+ .string()
37
+ .optional()
38
+ .default("geom")
39
+ .describe("Name of the geometry column"),
40
+ geometryType: z
41
+ .enum([
42
+ "POINT",
43
+ "LINESTRING",
44
+ "POLYGON",
45
+ "MULTIPOINT",
46
+ "MULTILINESTRING",
47
+ "MULTIPOLYGON",
48
+ "GEOMETRY",
49
+ ])
50
+ .optional()
51
+ .default("POINT")
52
+ .describe("Type of geometry to store"),
53
+ srid: z
54
+ .number()
55
+ .optional()
56
+ .default(4326)
57
+ .describe("Spatial Reference System ID (4326 for WGS84)"),
58
+ additionalColumns: z
59
+ .array(z.object({
60
+ name: z.string(),
61
+ type: z.string(),
62
+ }))
63
+ .optional()
64
+ .default([])
65
+ .describe("Additional non-spatial columns"),
66
+ });
67
+ const SpatialQuerySchema = z.object({
68
+ query: z.string().describe("Spatial SQL query using SpatiaLite functions"),
69
+ params: z
70
+ .array(z.unknown())
71
+ .optional()
72
+ .default([])
73
+ .describe("Query parameters"),
74
+ });
75
+ const SpatialAnalysisSchema = z.object({
76
+ analysisType: z
77
+ .enum([
78
+ "nearest_neighbor",
79
+ "point_in_polygon",
80
+ "distance_matrix",
81
+ "spatial_extent",
82
+ ])
83
+ .describe("Type of spatial analysis"),
84
+ sourceTable: z.string().describe("Source table for analysis"),
85
+ targetTable: z
86
+ .string()
87
+ .optional()
88
+ .describe("Target table for operations. For point_in_polygon, this should contain POLYGON geometries while sourceTable contains POINTs"),
89
+ geometryColumn: z
90
+ .string()
91
+ .optional()
92
+ .default("geom")
93
+ .describe("Geometry column name"),
94
+ limit: z.number().optional().default(100).describe("Limit results"),
95
+ excludeSelf: z
96
+ .boolean()
97
+ .optional()
98
+ .default(true)
99
+ .describe("For nearest_neighbor: exclude self-matches when source and target tables are the same (default: true)"),
100
+ includeGeometry: z
101
+ .boolean()
102
+ .optional()
103
+ .default(false)
104
+ .describe("Include full WKT geometry in results (default: false to reduce payload size)"),
105
+ });
106
+ const SpatialIndexSchema = z.object({
107
+ tableName: z.string().describe("Name of the spatial table"),
108
+ geometryColumn: z
109
+ .string()
110
+ .optional()
111
+ .default("geom")
112
+ .describe("Geometry column name"),
113
+ action: z
114
+ .enum(["create", "drop", "check"])
115
+ .optional()
116
+ .default("create")
117
+ .describe("Action to perform"),
118
+ });
119
+ const GeometryTransformSchema = z.object({
120
+ operation: z
121
+ .enum([
122
+ "buffer",
123
+ "intersection",
124
+ "union",
125
+ "difference",
126
+ "centroid",
127
+ "envelope",
128
+ "simplify",
129
+ ])
130
+ .describe("Geometry operation to perform"),
131
+ geometry1: z.string().describe("First geometry (WKT format)"),
132
+ geometry2: z.string().optional().describe("Second geometry for binary ops"),
133
+ distance: z
134
+ .number()
135
+ .optional()
136
+ .default(0.001)
137
+ .describe("Distance for buffer or simplify tolerance"),
138
+ srid: z.number().optional().default(4326).describe("SRID for result"),
139
+ simplifyTolerance: z
140
+ .number()
141
+ .optional()
142
+ .describe("For buffer operation: apply ST_Simplify to reduce vertices in output polygon. Recommended: 0.0001-0.001 for lat/lon"),
143
+ });
144
+ const SpatialImportSchema = z.object({
145
+ tableName: z.string().describe("Target table name"),
146
+ format: z.enum(["wkt", "geojson"]).describe("Input format"),
147
+ data: z.string().describe("Geometry data (WKT string or GeoJSON)"),
148
+ srid: z.number().optional().default(4326).describe("SRID of input data"),
149
+ additionalData: z
150
+ .record(z.string(), z.unknown())
151
+ .optional()
152
+ .describe("Additional column values"),
153
+ });
154
+ /**
155
+ * Get all SpatiaLite tools
156
+ */
157
+ export function getSpatialiteTools(adapter) {
158
+ return [
159
+ createLoadSpatialiteTool(adapter),
160
+ createSpatialTableTool(adapter),
161
+ createSpatialQueryTool(adapter),
162
+ createSpatialAnalysisTool(adapter),
163
+ createSpatialIndexTool(adapter),
164
+ createGeometryTransformTool(adapter),
165
+ createSpatialImportTool(adapter),
166
+ ];
167
+ }
168
+ /**
169
+ * Try to load SpatiaLite extension
170
+ */
171
+ function tryLoadSpatialite(adapter, customPath) {
172
+ const db = adapter.getDatabase();
173
+ if (db === null) {
174
+ return { success: false, error: "Database not connected" };
175
+ }
176
+ const paths = customPath
177
+ ? [customPath, ...SPATIALITE_PATHS]
178
+ : SPATIALITE_PATHS;
179
+ // On Windows, SpatiaLite DLL has many dependencies (libgeos, libproj, etc.)
180
+ // These must be in PATH for Windows to find them when loading the extension.
181
+ // Prepend the extension directory to PATH before attempting to load.
182
+ const envPath = process.env["SPATIALITE_PATH"];
183
+ if (envPath && process.platform === "win32") {
184
+ const extensionDir = envPath.replace(/[/\\][^/\\]+$/, ""); // Get directory from DLL path
185
+ const currentPath = process.env["PATH"] ?? "";
186
+ if (!currentPath.includes(extensionDir)) {
187
+ process.env["PATH"] = extensionDir + ";" + currentPath;
188
+ }
189
+ }
190
+ for (const path of paths) {
191
+ try {
192
+ db.loadExtension(path);
193
+ // Initialize spatial metadata
194
+ db.exec("SELECT InitSpatialMetaData(1)");
195
+ loadedDatabases.add(db);
196
+ return { success: true, path };
197
+ }
198
+ catch {
199
+ // Try next path
200
+ }
201
+ }
202
+ return {
203
+ success: false,
204
+ error: "SpatiaLite extension not found. Install mod_spatialite and set SPATIALITE_PATH environment variable.",
205
+ };
206
+ }
207
+ /**
208
+ * Check if SpatiaLite is loaded
209
+ * Exported for health check access
210
+ */
211
+ export function isSpatialiteLoaded(adapter) {
212
+ const db = adapter.getDatabase();
213
+ if (db === null)
214
+ return false;
215
+ if (loadedDatabases.has(db))
216
+ return true;
217
+ try {
218
+ db.exec("SELECT spatialite_version()");
219
+ // Extension is loaded but not tracked - ensure metadata tables exist
220
+ // InitSpatialMetaData(1) safely skips if already initialized
221
+ db.exec("SELECT InitSpatialMetaData(1)");
222
+ loadedDatabases.add(db);
223
+ return true;
224
+ }
225
+ catch {
226
+ return false;
227
+ }
228
+ }
229
+ /**
230
+ * Ensure SpatiaLite is loaded, throw if not
231
+ */
232
+ function ensureSpatialite(adapter) {
233
+ if (!isSpatialiteLoaded(adapter)) {
234
+ const result = tryLoadSpatialite(adapter);
235
+ if (!result.success) {
236
+ throw new Error(result.error ?? "Failed to load SpatiaLite");
237
+ }
238
+ }
239
+ }
240
+ /**
241
+ * Load SpatiaLite extension
242
+ */
243
+ function createLoadSpatialiteTool(adapter) {
244
+ return {
245
+ name: "sqlite_spatialite_load",
246
+ description: "Load SpatiaLite extension for geospatial capabilities. Required before using other spatial tools.",
247
+ group: "geo",
248
+ inputSchema: LoadSpatialiteSchema,
249
+ requiredScopes: ["admin"],
250
+ handler: (_params, _context) => {
251
+ const input = LoadSpatialiteSchema.parse(_params);
252
+ if (!input.forceReload && isSpatialiteLoaded(adapter)) {
253
+ return Promise.resolve({
254
+ success: true,
255
+ message: "SpatiaLite already loaded",
256
+ alreadyLoaded: true,
257
+ });
258
+ }
259
+ const result = tryLoadSpatialite(adapter, input.extensionPath);
260
+ if (result.success) {
261
+ return Promise.resolve({
262
+ success: true,
263
+ message: "SpatiaLite loaded successfully",
264
+ extensionPath: result.path,
265
+ });
266
+ }
267
+ return Promise.resolve({
268
+ success: false,
269
+ message: result.error,
270
+ searchedPaths: SPATIALITE_PATHS,
271
+ });
272
+ },
273
+ };
274
+ }
275
+ /**
276
+ * Create spatial table
277
+ */
278
+ function createSpatialTableTool(adapter) {
279
+ return {
280
+ name: "sqlite_spatialite_create_table",
281
+ description: "Create a spatial table with geometry column using SpatiaLite.",
282
+ group: "geo",
283
+ inputSchema: CreateSpatialTableSchema,
284
+ requiredScopes: ["write"],
285
+ handler: async (params, _context) => {
286
+ const input = CreateSpatialTableSchema.parse(params);
287
+ ensureSpatialite(adapter);
288
+ // Validate table name
289
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(input.tableName)) {
290
+ throw new Error("Invalid table name");
291
+ }
292
+ // Build column definitions
293
+ const columns = ["id INTEGER PRIMARY KEY AUTOINCREMENT"];
294
+ for (const col of input.additionalColumns) {
295
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(col.name)) {
296
+ throw new Error(`Invalid column name: ${col.name}`);
297
+ }
298
+ columns.push(`"${col.name}" ${col.type}`);
299
+ }
300
+ // Create base table
301
+ await adapter.executeWriteQuery(`CREATE TABLE IF NOT EXISTS "${input.tableName}" (${columns.join(", ")})`);
302
+ // Add geometry column using SpatiaLite
303
+ // NOTE: AddGeometryColumn is a SELECT function, must use executeReadQuery
304
+ const addResult = await adapter.executeReadQuery(`SELECT AddGeometryColumn('${input.tableName}', '${input.geometryColumn}', ${input.srid}, '${input.geometryType}', 'XY')`);
305
+ // Verify the geometry column was created
306
+ const verifyResult = await adapter.executeReadQuery(`SELECT name FROM pragma_table_info('${input.tableName}') WHERE name = '${input.geometryColumn}'`);
307
+ if (!verifyResult.rows || verifyResult.rows.length === 0) {
308
+ throw new Error(`Failed to create geometry column '${input.geometryColumn}'. AddGeometryColumn returned: ${JSON.stringify(addResult.rows)}`);
309
+ }
310
+ return {
311
+ success: true,
312
+ message: `Spatial table '${input.tableName}' created`,
313
+ tableName: input.tableName,
314
+ geometryColumn: input.geometryColumn,
315
+ geometryType: input.geometryType,
316
+ srid: input.srid,
317
+ };
318
+ },
319
+ };
320
+ }
321
+ /**
322
+ * Execute spatial query
323
+ */
324
+ function createSpatialQueryTool(adapter) {
325
+ return {
326
+ name: "sqlite_spatialite_query",
327
+ description: "Execute spatial SQL queries using SpatiaLite functions (ST_Distance, ST_Within, etc.).",
328
+ group: "geo",
329
+ inputSchema: SpatialQuerySchema,
330
+ requiredScopes: ["read"],
331
+ handler: async (params, _context) => {
332
+ const input = SpatialQuerySchema.parse(params);
333
+ ensureSpatialite(adapter);
334
+ const result = await adapter.executeReadQuery(input.query);
335
+ return {
336
+ success: true,
337
+ rowCount: result.rows?.length ?? 0,
338
+ rows: result.rows,
339
+ };
340
+ },
341
+ };
342
+ }
343
+ /**
344
+ * Spatial analysis
345
+ */
346
+ function createSpatialAnalysisTool(adapter) {
347
+ return {
348
+ name: "sqlite_spatialite_analyze",
349
+ description: "Perform spatial analysis: nearest neighbor, point in polygon, distance matrix. For point_in_polygon, sourceTable should contain POINTs and targetTable should contain POLYGONs.",
350
+ group: "geo",
351
+ inputSchema: SpatialAnalysisSchema,
352
+ requiredScopes: ["read"],
353
+ handler: async (params, _context) => {
354
+ const input = SpatialAnalysisSchema.parse(params);
355
+ ensureSpatialite(adapter);
356
+ // Validate names
357
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(input.sourceTable)) {
358
+ throw new Error("Invalid source table name");
359
+ }
360
+ if (input.targetTable &&
361
+ !/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(input.targetTable)) {
362
+ throw new Error("Invalid target table name");
363
+ }
364
+ let query;
365
+ switch (input.analysisType) {
366
+ case "spatial_extent":
367
+ query = `SELECT
368
+ MbrMinX(Extent("${input.geometryColumn}")) as min_x,
369
+ MbrMinY(Extent("${input.geometryColumn}")) as min_y,
370
+ MbrMaxX(Extent("${input.geometryColumn}")) as max_x,
371
+ MbrMaxY(Extent("${input.geometryColumn}")) as max_y,
372
+ COUNT(*) as feature_count
373
+ FROM "${input.sourceTable}"`;
374
+ break;
375
+ case "nearest_neighbor": {
376
+ if (!input.targetTable) {
377
+ throw new Error("Missing required parameter 'targetTable' for nearest neighbor analysis");
378
+ }
379
+ // Exclude self-matches when tables are the same and excludeSelf is true
380
+ const sameTable = input.sourceTable === input.targetTable;
381
+ const selfFilter = sameTable && input.excludeSelf ? "WHERE s.id != t.id" : "";
382
+ // Conditionally include WKT geometry based on includeGeometry param
383
+ const geomColumns = input.includeGeometry
384
+ ? `, AsText(s."${input.geometryColumn}") as source_geom, AsText(t."${input.geometryColumn}") as target_geom`
385
+ : "";
386
+ query = `SELECT
387
+ s.id as source_id, t.id as target_id,
388
+ ST_Distance(s."${input.geometryColumn}", t."${input.geometryColumn}") as distance${geomColumns}
389
+ FROM "${input.sourceTable}" s, "${input.targetTable}" t
390
+ ${selfFilter}
391
+ ORDER BY distance LIMIT ${input.limit}`;
392
+ break;
393
+ }
394
+ case "point_in_polygon": {
395
+ if (!input.targetTable) {
396
+ throw new Error("Missing required parameter 'targetTable' for point in polygon analysis");
397
+ }
398
+ // Conditionally include WKT geometry based on includeGeometry param
399
+ const geomCols = input.includeGeometry
400
+ ? `, AsText(s."${input.geometryColumn}") as source_geom, AsText(t."${input.geometryColumn}") as target_geom`
401
+ : "";
402
+ query = `SELECT
403
+ s.id as source_id, t.id as target_id${geomCols}
404
+ FROM "${input.sourceTable}" s, "${input.targetTable}" t
405
+ WHERE ST_Within(s."${input.geometryColumn}", t."${input.geometryColumn}")
406
+ LIMIT ${input.limit}`;
407
+ break;
408
+ }
409
+ case "distance_matrix":
410
+ query = `SELECT a.id as id1, b.id as id2,
411
+ ST_Distance(a."${input.geometryColumn}", b."${input.geometryColumn}") as distance
412
+ FROM "${input.sourceTable}" a, "${input.sourceTable}" b
413
+ WHERE a.id < b.id
414
+ ORDER BY distance LIMIT ${input.limit}`;
415
+ break;
416
+ }
417
+ const result = await adapter.executeReadQuery(query);
418
+ return {
419
+ success: true,
420
+ analysisType: input.analysisType,
421
+ rowCount: result.rows?.length ?? 0,
422
+ results: result.rows,
423
+ };
424
+ },
425
+ };
426
+ }
427
+ /**
428
+ * Spatial index management
429
+ */
430
+ function createSpatialIndexTool(adapter) {
431
+ return {
432
+ name: "sqlite_spatialite_index",
433
+ description: "Create, drop, or check spatial R-Tree index on geometry column.",
434
+ group: "geo",
435
+ inputSchema: SpatialIndexSchema,
436
+ requiredScopes: ["write"],
437
+ handler: async (params, _context) => {
438
+ const input = SpatialIndexSchema.parse(params);
439
+ ensureSpatialite(adapter);
440
+ // Validate names
441
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(input.tableName)) {
442
+ throw new Error("Invalid table name");
443
+ }
444
+ switch (input.action) {
445
+ case "create":
446
+ // NOTE: CreateSpatialIndex is a SELECT function, must use executeReadQuery
447
+ await adapter.executeReadQuery(`SELECT CreateSpatialIndex('${input.tableName}', '${input.geometryColumn}')`);
448
+ return {
449
+ success: true,
450
+ message: `Spatial index created on ${input.tableName}.${input.geometryColumn}`,
451
+ action: "create",
452
+ };
453
+ case "drop":
454
+ // NOTE: DisableSpatialIndex is a SELECT function, must use executeReadQuery
455
+ await adapter.executeReadQuery(`SELECT DisableSpatialIndex('${input.tableName}', '${input.geometryColumn}')`);
456
+ return {
457
+ success: true,
458
+ message: `Spatial index dropped from ${input.tableName}.${input.geometryColumn}`,
459
+ action: "drop",
460
+ };
461
+ case "check": {
462
+ const checkResult = await adapter.executeReadQuery(`SELECT CheckSpatialIndex('${input.tableName}', '${input.geometryColumn}')`);
463
+ return {
464
+ success: true,
465
+ message: "Spatial index check completed",
466
+ action: "check",
467
+ result: checkResult.rows,
468
+ };
469
+ }
470
+ }
471
+ },
472
+ };
473
+ }
474
+ /**
475
+ * Geometry transformation operations
476
+ */
477
+ function createGeometryTransformTool(adapter) {
478
+ return {
479
+ name: "sqlite_spatialite_transform",
480
+ description: "Perform geometry operations: buffer, intersection, union, centroid, simplify.",
481
+ group: "geo",
482
+ inputSchema: GeometryTransformSchema,
483
+ requiredScopes: ["read"],
484
+ handler: async (params, _context) => {
485
+ const input = GeometryTransformSchema.parse(params);
486
+ ensureSpatialite(adapter);
487
+ let query;
488
+ switch (input.operation) {
489
+ case "buffer": {
490
+ const bufferGeom = `Buffer(GeomFromText('${input.geometry1}', ${input.srid}), ${input.distance})`;
491
+ // Auto-simplify buffer output with adaptive tolerance based on buffer distance
492
+ // Tolerance scales with distance (1% of buffer distance) for effective vertex reduction
493
+ // Use simplifyTolerance: 0 to disable, or specify custom tolerance
494
+ const defaultTolerance = Math.max(0.0001, input.distance * 0.01);
495
+ const tolerance = input.simplifyTolerance ?? defaultTolerance;
496
+ const finalGeom = tolerance > 0
497
+ ? `Simplify(${bufferGeom}, ${tolerance})`
498
+ : bufferGeom;
499
+ query = `SELECT AsText(${finalGeom}) as result`;
500
+ break;
501
+ }
502
+ case "intersection":
503
+ if (!input.geometry2) {
504
+ throw new Error("Second geometry required for intersection");
505
+ }
506
+ query = `SELECT AsText(Intersection(
507
+ GeomFromText('${input.geometry1}', ${input.srid}),
508
+ GeomFromText('${input.geometry2}', ${input.srid})
509
+ )) as result`;
510
+ break;
511
+ case "union":
512
+ if (!input.geometry2) {
513
+ throw new Error("Second geometry required for union");
514
+ }
515
+ query = `SELECT AsText(GUnion(
516
+ GeomFromText('${input.geometry1}', ${input.srid}),
517
+ GeomFromText('${input.geometry2}', ${input.srid})
518
+ )) as result`;
519
+ break;
520
+ case "difference":
521
+ if (!input.geometry2) {
522
+ throw new Error("Second geometry required for difference");
523
+ }
524
+ query = `SELECT AsText(Difference(
525
+ GeomFromText('${input.geometry1}', ${input.srid}),
526
+ GeomFromText('${input.geometry2}', ${input.srid})
527
+ )) as result`;
528
+ break;
529
+ case "centroid":
530
+ query = `SELECT AsText(Centroid(GeomFromText('${input.geometry1}', ${input.srid}))) as result`;
531
+ break;
532
+ case "envelope":
533
+ query = `SELECT AsText(Envelope(GeomFromText('${input.geometry1}', ${input.srid}))) as result`;
534
+ break;
535
+ case "simplify":
536
+ query = `SELECT AsText(Simplify(GeomFromText('${input.geometry1}', ${input.srid}), ${input.distance})) as result`;
537
+ break;
538
+ }
539
+ const result = await adapter.executeReadQuery(query);
540
+ const wktResult = result.rows?.[0]?.["result"];
541
+ return {
542
+ success: true,
543
+ operation: input.operation,
544
+ result: wktResult,
545
+ };
546
+ },
547
+ };
548
+ }
549
+ /**
550
+ * Import spatial data
551
+ */
552
+ function createSpatialImportTool(adapter) {
553
+ return {
554
+ name: "sqlite_spatialite_import",
555
+ description: "Import geometry data from WKT or GeoJSON into a spatial table.",
556
+ group: "geo",
557
+ inputSchema: SpatialImportSchema,
558
+ requiredScopes: ["write"],
559
+ handler: async (params, _context) => {
560
+ const input = SpatialImportSchema.parse(params);
561
+ ensureSpatialite(adapter);
562
+ // Validate table name
563
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(input.tableName)) {
564
+ throw new Error("Invalid table name");
565
+ }
566
+ let wkt;
567
+ if (input.format === "geojson") {
568
+ // Parse GeoJSON and convert with SRID
569
+ try {
570
+ // Validate JSON to ensure it's valid GeoJSON
571
+ JSON.parse(input.data);
572
+ // Build INSERT with additional columns (matching WKT path)
573
+ // Use SetSRID(GeomFromGeoJSON(...), srid) to ensure SRID is set correctly
574
+ const columns = ["geom"];
575
+ const values = [
576
+ `SetSRID(GeomFromGeoJSON('${input.data}'), ${input.srid})`,
577
+ ];
578
+ if (input.additionalData) {
579
+ for (const [key, value] of Object.entries(input.additionalData)) {
580
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)) {
581
+ throw new Error(`Invalid column name: ${key}`);
582
+ }
583
+ columns.push(`"${key}"`);
584
+ values.push(typeof value === "string"
585
+ ? `'${value.replace(/'/g, "''")}'`
586
+ : String(value));
587
+ }
588
+ }
589
+ const sql = `INSERT INTO "${input.tableName}" (${columns.join(", ")}) VALUES (${values.join(", ")})`;
590
+ const insertResult = await adapter.executeWriteQuery(sql);
591
+ return {
592
+ success: true,
593
+ message: "GeoJSON geometry imported",
594
+ rowsAffected: insertResult.rowsAffected ?? 1,
595
+ };
596
+ }
597
+ catch (e) {
598
+ throw new Error(`Invalid GeoJSON: ${e instanceof Error ? e.message : String(e)}`);
599
+ }
600
+ }
601
+ else {
602
+ wkt = input.data;
603
+ }
604
+ // Build INSERT with additional columns
605
+ const columns = ["geom"];
606
+ const values = [`GeomFromText('${wkt}', ${input.srid})`];
607
+ if (input.additionalData) {
608
+ for (const [key, value] of Object.entries(input.additionalData)) {
609
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)) {
610
+ throw new Error(`Invalid column name: ${key}`);
611
+ }
612
+ columns.push(`"${key}"`);
613
+ values.push(typeof value === "string"
614
+ ? `'${value.replace(/'/g, "''")}'`
615
+ : String(value));
616
+ }
617
+ }
618
+ const sql = `INSERT INTO "${input.tableName}" (${columns.join(", ")}) VALUES (${values.join(", ")})`;
619
+ const insertResult = await adapter.executeWriteQuery(sql);
620
+ return {
621
+ success: true,
622
+ message: "WKT geometry imported",
623
+ rowsAffected: insertResult.rowsAffected ?? 1,
624
+ };
625
+ },
626
+ };
627
+ }
628
+ //# sourceMappingURL=spatialite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spatialite.js","sourceRoot":"","sources":["../../../../src/adapters/sqlite-native/tools/spatialite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Transaction Tools for Native SQLite Adapter
3
+ *
4
+ * Provides transaction control tools for complex multi-statement operations.
5
+ */
6
+ import type { ToolDefinition } from "../../../types/index.js";
7
+ import type { NativeSqliteAdapter } from "../NativeSqliteAdapter.js";
8
+ /**
9
+ * Get all transaction tools
10
+ */
11
+ export declare function getTransactionTools(adapter: NativeSqliteAdapter): ToolDefinition[];
12
+ //# sourceMappingURL=transactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../../src/adapters/sqlite-native/tools/transactions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA4BrE;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,mBAAmB,GAC3B,cAAc,EAAE,CAUlB"}