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,1337 @@
1
+ /**
2
+ * SQLite Output Schemas (MCP 2025-11-25)
3
+ *
4
+ * Zod schemas defining structured output types for all SQLite tools.
5
+ * These schemas enable clients to validate and extract tool responses.
6
+ */
7
+ import { z } from "zod";
8
+ // =============================================================================
9
+ // Common Building Blocks
10
+ // =============================================================================
11
+ /**
12
+ * Generic row record for query results - allows any string keys with unknown values
13
+ */
14
+ const RowRecordSchema = z.record(z.string(), z.unknown());
15
+ // =============================================================================
16
+ // Core Tool Output Schemas (8 tools)
17
+ // =============================================================================
18
+ /**
19
+ * sqlite_read_query output
20
+ */
21
+ export const ReadQueryOutputSchema = z.object({
22
+ success: z.boolean(),
23
+ rowCount: z.number(),
24
+ rows: z.array(RowRecordSchema),
25
+ executionTimeMs: z.number().optional(),
26
+ });
27
+ /**
28
+ * sqlite_write_query output
29
+ */
30
+ export const WriteQueryOutputSchema = z.object({
31
+ success: z.boolean(),
32
+ rowsAffected: z.number(),
33
+ executionTimeMs: z.number().optional(),
34
+ });
35
+ /**
36
+ * sqlite_create_table output
37
+ */
38
+ export const CreateTableOutputSchema = z.object({
39
+ success: z.boolean(),
40
+ message: z.string(),
41
+ sql: z.string(),
42
+ });
43
+ /**
44
+ * Table entry for list_tables
45
+ */
46
+ const TableEntrySchema = z.object({
47
+ name: z.string(),
48
+ type: z.string(),
49
+ rowCount: z.number().optional(),
50
+ columnCount: z.number(),
51
+ });
52
+ /**
53
+ * sqlite_list_tables output
54
+ */
55
+ export const ListTablesOutputSchema = z.object({
56
+ success: z.boolean(),
57
+ count: z.number(),
58
+ tables: z.array(TableEntrySchema),
59
+ });
60
+ /**
61
+ * Column info for describe_table
62
+ */
63
+ const ColumnInfoSchema = z.object({
64
+ name: z.string(),
65
+ type: z.string(),
66
+ nullable: z.boolean().optional(),
67
+ primaryKey: z.boolean().optional(),
68
+ defaultValue: z.unknown().optional(),
69
+ });
70
+ /**
71
+ * sqlite_describe_table output
72
+ */
73
+ export const DescribeTableOutputSchema = z.object({
74
+ success: z.boolean(),
75
+ table: z.string(),
76
+ rowCount: z.number().optional(),
77
+ columns: z.array(ColumnInfoSchema),
78
+ });
79
+ /**
80
+ * sqlite_drop_table output
81
+ */
82
+ export const DropTableOutputSchema = z.object({
83
+ success: z.boolean(),
84
+ message: z.string(),
85
+ });
86
+ /**
87
+ * Index entry for get_indexes
88
+ */
89
+ const IndexEntrySchema = z.object({
90
+ name: z.string(),
91
+ table: z.string(),
92
+ unique: z.boolean(),
93
+ sql: z.string(),
94
+ });
95
+ /**
96
+ * sqlite_get_indexes output
97
+ */
98
+ export const GetIndexesOutputSchema = z.object({
99
+ success: z.boolean(),
100
+ count: z.number(),
101
+ indexes: z.array(IndexEntrySchema),
102
+ });
103
+ /**
104
+ * sqlite_create_index output
105
+ */
106
+ export const CreateIndexOutputSchema = z.object({
107
+ success: z.boolean(),
108
+ message: z.string(),
109
+ sql: z.string(),
110
+ });
111
+ // =============================================================================
112
+ // JSON Helper Tool Output Schemas (6 tools)
113
+ // =============================================================================
114
+ /**
115
+ * sqlite_json_insert output
116
+ */
117
+ export const JsonInsertOutputSchema = z.object({
118
+ success: z.boolean(),
119
+ rowsAffected: z.number(),
120
+ lastInsertRowid: z.number().optional(),
121
+ });
122
+ /**
123
+ * sqlite_json_update output
124
+ */
125
+ export const JsonUpdateOutputSchema = z.object({
126
+ success: z.boolean(),
127
+ rowsAffected: z.number(),
128
+ });
129
+ /**
130
+ * sqlite_json_select output
131
+ */
132
+ export const JsonSelectOutputSchema = z.object({
133
+ success: z.boolean(),
134
+ rowCount: z.number(),
135
+ rows: z.array(RowRecordSchema),
136
+ });
137
+ /**
138
+ * sqlite_json_query output
139
+ */
140
+ export const JsonQueryOutputSchema = z.object({
141
+ success: z.boolean(),
142
+ rowCount: z.number(),
143
+ rows: z.array(RowRecordSchema),
144
+ });
145
+ /**
146
+ * sqlite_json_validate_path output
147
+ */
148
+ export const JsonValidatePathOutputSchema = z.object({
149
+ valid: z.boolean(),
150
+ normalized: z.string().optional(),
151
+ error: z.string().optional(),
152
+ });
153
+ /**
154
+ * sqlite_json_merge output
155
+ */
156
+ export const JsonMergeOutputSchema = z.object({
157
+ success: z.boolean(),
158
+ rowsAffected: z.number(),
159
+ });
160
+ /**
161
+ * JSON property schema info
162
+ */
163
+ const JsonPropertySchemaSchema = z.object({
164
+ type: z.string(),
165
+ nullable: z.boolean(),
166
+ count: z.number(),
167
+ itemType: z.string().optional(),
168
+ });
169
+ /**
170
+ * sqlite_json_analyze_schema output
171
+ */
172
+ export const AnalyzeJsonSchemaOutputSchema = z.object({
173
+ success: z.boolean(),
174
+ schema: z.object({
175
+ type: z.string(),
176
+ properties: z.record(z.string(), JsonPropertySchemaSchema),
177
+ sampleSize: z.number(),
178
+ nullCount: z.number(),
179
+ errorCount: z.number(),
180
+ }),
181
+ });
182
+ /**
183
+ * sqlite_create_json_collection output
184
+ */
185
+ export const CreateJsonCollectionOutputSchema = z.object({
186
+ success: z.boolean(),
187
+ message: z.string(),
188
+ sql: z.array(z.string()),
189
+ indexCount: z.number(),
190
+ });
191
+ // =============================================================================
192
+ // JSON Operation Tool Output Schemas (12 tools)
193
+ // =============================================================================
194
+ /**
195
+ * sqlite_json_extract output
196
+ */
197
+ export const JsonExtractOutputSchema = z.object({
198
+ success: z.boolean(),
199
+ rowCount: z.number(),
200
+ values: z.array(z.unknown()),
201
+ });
202
+ /**
203
+ * sqlite_json_set output
204
+ */
205
+ export const JsonSetOutputSchema = z.object({
206
+ success: z.boolean(),
207
+ rowsAffected: z.number(),
208
+ });
209
+ /**
210
+ * sqlite_json_remove output
211
+ */
212
+ export const JsonRemoveOutputSchema = z.object({
213
+ success: z.boolean(),
214
+ rowsAffected: z.number(),
215
+ });
216
+ /**
217
+ * sqlite_json_type output
218
+ */
219
+ export const JsonTypeOutputSchema = z.object({
220
+ success: z.boolean(),
221
+ rowCount: z.number(),
222
+ types: z.array(z.string().nullable()),
223
+ });
224
+ /**
225
+ * sqlite_json_array_length output
226
+ */
227
+ export const JsonArrayLengthOutputSchema = z.object({
228
+ success: z.boolean(),
229
+ rowCount: z.number(),
230
+ lengths: z.array(z.number().nullable()),
231
+ });
232
+ /**
233
+ * sqlite_json_keys output
234
+ */
235
+ export const JsonKeysOutputSchema = z.object({
236
+ success: z.boolean(),
237
+ rowCount: z.number(),
238
+ keys: z.array(z.union([z.string(), z.number()]).nullable()),
239
+ });
240
+ /**
241
+ * sqlite_json_valid output
242
+ */
243
+ export const JsonValidOutputSchema = z.object({
244
+ valid: z.boolean(),
245
+ error: z.string().optional(),
246
+ });
247
+ /**
248
+ * sqlite_json_group_array output
249
+ * Returns aggregated arrays - either a single array or grouped arrays with group keys
250
+ */
251
+ export const JsonGroupArrayOutputSchema = z.object({
252
+ success: z.boolean(),
253
+ rowCount: z.number(),
254
+ rows: z.array(z.record(z.string(), z.unknown())),
255
+ });
256
+ /**
257
+ * sqlite_json_group_object output
258
+ * Returns aggregated objects - either single object or grouped objects with group keys
259
+ */
260
+ export const JsonGroupObjectOutputSchema = z.object({
261
+ success: z.boolean(),
262
+ rowCount: z.number(),
263
+ rows: z.array(z.record(z.string(), z.unknown())),
264
+ });
265
+ /**
266
+ * sqlite_json_each output
267
+ */
268
+ export const JsonEachOutputSchema = z.object({
269
+ success: z.boolean(),
270
+ rowCount: z.number(),
271
+ elements: z.array(z.object({
272
+ row_id: z.number().optional(),
273
+ key: z.union([z.string(), z.number()]),
274
+ value: z.unknown(),
275
+ type: z.string(),
276
+ })),
277
+ });
278
+ /**
279
+ * sqlite_json_tree output
280
+ */
281
+ export const JsonTreeOutputSchema = z.object({
282
+ success: z.boolean(),
283
+ rowCount: z.number(),
284
+ nodes: z.array(z.object({
285
+ key: z.union([z.string(), z.number()]).nullable(),
286
+ value: z.unknown(),
287
+ type: z.string(),
288
+ path: z.string(),
289
+ })),
290
+ });
291
+ /**
292
+ * sqlite_json_patch output
293
+ */
294
+ export const JsonPatchOutputSchema = z.object({
295
+ success: z.boolean(),
296
+ rowsAffected: z.number(),
297
+ });
298
+ /**
299
+ * sqlite_json_pretty output
300
+ */
301
+ export const JsonPrettyOutputSchema = z.object({
302
+ success: z.boolean(),
303
+ formatted: z.string().optional(),
304
+ error: z.string().optional(),
305
+ });
306
+ // =============================================================================
307
+ // JSONB Tool Output Schemas (3 tools)
308
+ // =============================================================================
309
+ /**
310
+ * sqlite_jsonb_convert output
311
+ */
312
+ export const JsonbConvertOutputSchema = z.object({
313
+ success: z.boolean(),
314
+ message: z.string().optional(),
315
+ rowsAffected: z.number().optional(),
316
+ error: z.string().optional(),
317
+ hint: z.string().optional(),
318
+ });
319
+ /**
320
+ * sqlite_json_storage_info output
321
+ */
322
+ export const JsonStorageInfoOutputSchema = z.object({
323
+ success: z.boolean(),
324
+ jsonbSupported: z.boolean(),
325
+ sampleSize: z.number(),
326
+ formats: z.object({
327
+ text: z.number(),
328
+ jsonb: z.number(),
329
+ null: z.number(),
330
+ unknown: z.number(),
331
+ }),
332
+ recommendation: z.string(),
333
+ });
334
+ /**
335
+ * sqlite_json_normalize_column output
336
+ */
337
+ export const JsonNormalizeColumnOutputSchema = z.object({
338
+ success: z.boolean(),
339
+ message: z.string(),
340
+ normalized: z.number(),
341
+ unchanged: z.number(),
342
+ errors: z.number(),
343
+ total: z.number(),
344
+ outputFormat: z.enum(["text", "jsonb", "preserve"]).optional(),
345
+ });
346
+ // =============================================================================
347
+ // Text Processing Tool Output Schemas (8 tools)
348
+ // =============================================================================
349
+ /**
350
+ * sqlite_regex_match output
351
+ */
352
+ export const RegexMatchOutputSchema = z.object({
353
+ success: z.boolean(),
354
+ rowCount: z.number(),
355
+ matches: z.array(RowRecordSchema),
356
+ });
357
+ /**
358
+ * sqlite_regex_replace output
359
+ */
360
+ export const RegexReplaceOutputSchema = z.object({
361
+ success: z.boolean(),
362
+ rowsAffected: z.number(),
363
+ });
364
+ /**
365
+ * Result item with similarity score for fuzzy search
366
+ */
367
+ const FuzzyResultSchema = z
368
+ .object({
369
+ similarity_score: z.number().optional(),
370
+ })
371
+ .loose();
372
+ /**
373
+ * sqlite_fuzzy_search output
374
+ */
375
+ export const FuzzySearchOutputSchema = z.object({
376
+ success: z.boolean(),
377
+ rowCount: z.number(),
378
+ results: z.array(FuzzyResultSchema),
379
+ });
380
+ /**
381
+ * sqlite_soundex output
382
+ */
383
+ export const SoundexOutputSchema = z.object({
384
+ success: z.boolean(),
385
+ rowCount: z.number(),
386
+ results: z.array(RowRecordSchema),
387
+ });
388
+ /**
389
+ * sqlite_levenshtein output
390
+ */
391
+ export const LevenshteinOutputSchema = z.object({
392
+ success: z.boolean(),
393
+ distance: z.number(),
394
+ string1: z.string(),
395
+ string2: z.string(),
396
+ });
397
+ /**
398
+ * sqlite_trigram_similarity output
399
+ */
400
+ export const TrigramSimilarityOutputSchema = z.object({
401
+ success: z.boolean(),
402
+ similarity: z.number(),
403
+ string1: z.string(),
404
+ string2: z.string(),
405
+ });
406
+ /**
407
+ * sqlite_text_normalize output
408
+ */
409
+ export const TextNormalizeOutputSchema = z.object({
410
+ success: z.boolean(),
411
+ original: z.string(),
412
+ normalized: z.string(),
413
+ operations: z.array(z.string()).optional(),
414
+ });
415
+ /**
416
+ * sqlite_text_split output
417
+ * Returns per-row results with original value and split parts for traceability
418
+ */
419
+ export const TextSplitOutputSchema = z.object({
420
+ success: z.boolean(),
421
+ rowCount: z.number(),
422
+ rows: z.array(z.object({
423
+ rowid: z.number(),
424
+ original: z.string().nullable(),
425
+ parts: z.array(z.string()),
426
+ })),
427
+ });
428
+ // =============================================================================
429
+ // FTS5 Full-Text Search Tool Output Schemas (4 tools)
430
+ // =============================================================================
431
+ /**
432
+ * sqlite_fts_create output
433
+ */
434
+ export const FtsCreateOutputSchema = z.object({
435
+ success: z.boolean(),
436
+ message: z.string(),
437
+ tableName: z.string(),
438
+ triggersCreated: z.array(z.string()).optional(),
439
+ });
440
+ /**
441
+ * Result item with rank/bm25 for FTS search
442
+ */
443
+ const FtsResultSchema = z
444
+ .object({
445
+ rank: z.number().nullable().optional(),
446
+ bm25: z.number().nullable().optional(),
447
+ })
448
+ .loose();
449
+ /**
450
+ * sqlite_fts_search output
451
+ */
452
+ export const FtsSearchOutputSchema = z.object({
453
+ success: z.boolean(),
454
+ rowCount: z.number(),
455
+ results: z.array(FtsResultSchema),
456
+ });
457
+ /**
458
+ * sqlite_fts_rebuild output
459
+ */
460
+ export const FtsRebuildOutputSchema = z.object({
461
+ success: z.boolean(),
462
+ message: z.string(),
463
+ tableName: z.string(),
464
+ });
465
+ /**
466
+ * sqlite_fts_optimize output
467
+ */
468
+ export const FtsOptimizeOutputSchema = z.object({
469
+ success: z.boolean(),
470
+ message: z.string(),
471
+ tableName: z.string(),
472
+ });
473
+ // =============================================================================
474
+ // Statistical Analysis Tool Output Schemas (16 tools)
475
+ // =============================================================================
476
+ /**
477
+ * Generic row record for stats query results
478
+ */
479
+ const StatsRowRecordSchema = z.record(z.string(), z.unknown());
480
+ /**
481
+ * sqlite_stats_basic output
482
+ */
483
+ export const StatsBasicOutputSchema = z.object({
484
+ success: z.boolean(),
485
+ column: z.string(),
486
+ stats: z.object({
487
+ count: z.number(),
488
+ sum: z.number().nullable(),
489
+ avg: z.number().nullable(),
490
+ min: z.number().nullable(),
491
+ max: z.number().nullable(),
492
+ range: z.number().nullable(),
493
+ }),
494
+ });
495
+ /**
496
+ * sqlite_stats_count output
497
+ */
498
+ export const StatsCountOutputSchema = z.object({
499
+ success: z.boolean(),
500
+ count: z.number(),
501
+ distinct: z.boolean().optional(),
502
+ });
503
+ /**
504
+ * sqlite_stats_group_by output
505
+ */
506
+ export const StatsGroupByOutputSchema = z.object({
507
+ success: z.boolean(),
508
+ statistic: z.string(),
509
+ rowCount: z.number(),
510
+ results: z.array(StatsRowRecordSchema),
511
+ });
512
+ /**
513
+ * sqlite_stats_top_n output
514
+ */
515
+ export const StatsTopNOutputSchema = z.object({
516
+ success: z.boolean(),
517
+ column: z.string(),
518
+ direction: z.string(),
519
+ count: z.number(),
520
+ rows: z.array(StatsRowRecordSchema),
521
+ });
522
+ /**
523
+ * sqlite_stats_distinct output
524
+ */
525
+ export const StatsDistinctOutputSchema = z.object({
526
+ success: z.boolean(),
527
+ column: z.string(),
528
+ distinctCount: z.number(),
529
+ values: z.array(z.unknown()),
530
+ });
531
+ /**
532
+ * sqlite_stats_summary output
533
+ */
534
+ export const StatsSummaryOutputSchema = z.object({
535
+ success: z.boolean(),
536
+ table: z.string(),
537
+ summaries: z.array(z.object({
538
+ column: z.string(),
539
+ count: z.number().optional(),
540
+ avg: z.number().nullable().optional(),
541
+ min: z.number().nullable().optional(),
542
+ max: z.number().nullable().optional(),
543
+ error: z.string().optional(),
544
+ })),
545
+ });
546
+ /**
547
+ * sqlite_stats_frequency output
548
+ */
549
+ export const StatsFrequencyOutputSchema = z.object({
550
+ success: z.boolean(),
551
+ column: z.string(),
552
+ distinctValues: z.number(),
553
+ distribution: z.array(z.object({
554
+ value: z.unknown(),
555
+ frequency: z.number(),
556
+ })),
557
+ });
558
+ /**
559
+ * sqlite_stats_describe output
560
+ */
561
+ export const StatsDescribeOutputSchema = z.object({
562
+ success: z.boolean(),
563
+ column: z.string(),
564
+ count: z.number(),
565
+ mean: z.number().nullable(),
566
+ min: z.number().nullable(),
567
+ max: z.number().nullable(),
568
+ sum: z.number().nullable(),
569
+ stddev: z.number().nullable(),
570
+ variance: z.number().nullable(),
571
+ });
572
+ /**
573
+ * sqlite_stats_percentile output (array version for multiple percentiles)
574
+ */
575
+ export const StatsPercentileOutputSchema = z.object({
576
+ success: z.boolean(),
577
+ column: z.string().optional(),
578
+ count: z.number().optional(),
579
+ percentiles: z.array(z.object({
580
+ percentile: z.number(),
581
+ value: z.number().nullable(),
582
+ })),
583
+ });
584
+ /**
585
+ * sqlite_stats_histogram output
586
+ */
587
+ export const StatsHistogramOutputSchema = z.object({
588
+ success: z.boolean(),
589
+ column: z.string().optional(),
590
+ range: z
591
+ .object({
592
+ min: z.number(),
593
+ max: z.number(),
594
+ })
595
+ .optional(),
596
+ bucketSize: z.number().optional(),
597
+ buckets: z.array(z.object({
598
+ bucket: z.number().optional(),
599
+ min: z.number(),
600
+ max: z.number(),
601
+ count: z.number(),
602
+ })),
603
+ });
604
+ /**
605
+ * sqlite_stats_correlation output
606
+ */
607
+ export const StatsCorrelationOutputSchema = z.object({
608
+ success: z.boolean(),
609
+ column1: z.string().optional(),
610
+ column2: z.string().optional(),
611
+ n: z.number().optional(),
612
+ correlation: z.number().nullable(),
613
+ message: z.string().optional(),
614
+ });
615
+ /**
616
+ * sqlite_stats_regression output
617
+ */
618
+ export const StatsRegressionOutputSchema = z.object({
619
+ success: z.boolean(),
620
+ type: z.string(),
621
+ sampleSize: z.number(),
622
+ coefficients: z.object({
623
+ intercept: z.number(),
624
+ linear: z.number().optional(),
625
+ quadratic: z.number().optional(),
626
+ cubic: z.number().optional(),
627
+ }),
628
+ rSquared: z.number(),
629
+ equation: z.string(),
630
+ });
631
+ /**
632
+ * sqlite_stats_mode output
633
+ */
634
+ export const StatsModeOutputSchema = z.object({
635
+ success: z.boolean(),
636
+ column: z.string(),
637
+ mode: z.unknown(),
638
+ frequency: z.number(),
639
+ });
640
+ /**
641
+ * sqlite_stats_median output
642
+ */
643
+ export const StatsMedianOutputSchema = z.object({
644
+ success: z.boolean(),
645
+ column: z.string(),
646
+ median: z.number().nullable(),
647
+ });
648
+ /**
649
+ * sqlite_stats_outliers output
650
+ */
651
+ export const StatsOutliersOutputSchema = z.object({
652
+ success: z.boolean(),
653
+ column: z.string(),
654
+ method: z.string(),
655
+ outliers: z.array(StatsRowRecordSchema),
656
+ count: z.number(),
657
+ });
658
+ // =============================================================================
659
+ // Virtual Table Tool Output Schemas (4 tools)
660
+ // =============================================================================
661
+ /**
662
+ * View entry for list_views
663
+ */
664
+ const ViewEntrySchema = z.object({
665
+ name: z.string(),
666
+ sql: z.string().nullable(),
667
+ });
668
+ /**
669
+ * sqlite_list_views output
670
+ */
671
+ export const ListViewsOutputSchema = z.object({
672
+ success: z.boolean(),
673
+ count: z.number(),
674
+ views: z.array(ViewEntrySchema),
675
+ });
676
+ /**
677
+ * sqlite_generate_series output
678
+ */
679
+ export const GenerateSeriesOutputSchema = z.object({
680
+ success: z.boolean(),
681
+ count: z.number(),
682
+ values: z.array(z.number()),
683
+ });
684
+ /**
685
+ * sqlite_generate_dates output
686
+ */
687
+ export const GenerateDatesOutputSchema = z.object({
688
+ success: z.boolean(),
689
+ count: z.number(),
690
+ dates: z.array(z.string()),
691
+ });
692
+ /**
693
+ * sqlite_cte_recursive output
694
+ */
695
+ export const CteRecursiveOutputSchema = z.object({
696
+ success: z.boolean(),
697
+ rowCount: z.number(),
698
+ rows: z.array(RowRecordSchema),
699
+ });
700
+ /**
701
+ * sqlite_pivot_table output
702
+ */
703
+ export const PivotTableOutputSchema = z.object({
704
+ success: z.boolean(),
705
+ rowCount: z.number(),
706
+ columns: z.array(z.string()),
707
+ rows: z.array(RowRecordSchema),
708
+ });
709
+ // =============================================================================
710
+ // Vector/Semantic Search Tool Output Schemas (11 tools)
711
+ // =============================================================================
712
+ /**
713
+ * sqlite_vector_store output
714
+ */
715
+ export const VectorStoreOutputSchema = z.object({
716
+ success: z.boolean(),
717
+ id: z.union([z.string(), z.number()]),
718
+ dimensions: z.number(),
719
+ });
720
+ /**
721
+ * sqlite_vector_batch_store output
722
+ */
723
+ export const VectorBatchStoreOutputSchema = z.object({
724
+ success: z.boolean(),
725
+ stored: z.number(),
726
+ dimensions: z.number().optional(),
727
+ });
728
+ /**
729
+ * sqlite_vector_get output
730
+ */
731
+ export const VectorGetOutputSchema = z.object({
732
+ success: z.boolean(),
733
+ id: z.union([z.string(), z.number()]).optional(),
734
+ dimensions: z.number().optional(),
735
+ vector: z.array(z.number()).optional(),
736
+ metadata: z.record(z.string(), z.unknown()).optional(),
737
+ error: z.string().optional(),
738
+ });
739
+ /**
740
+ * Result item with _similarity for vector search
741
+ */
742
+ const VectorSearchResultSchema = z
743
+ .object({
744
+ _similarity: z.number(),
745
+ })
746
+ .loose();
747
+ /**
748
+ * sqlite_vector_search output
749
+ */
750
+ export const VectorSearchOutputSchema = z.object({
751
+ success: z.boolean(),
752
+ metric: z.string(),
753
+ count: z.number(),
754
+ results: z.array(VectorSearchResultSchema),
755
+ });
756
+ /**
757
+ * sqlite_vector_delete output
758
+ */
759
+ export const VectorDeleteOutputSchema = z.object({
760
+ success: z.boolean(),
761
+ deleted: z.number(),
762
+ });
763
+ /**
764
+ * sqlite_vector_count output
765
+ */
766
+ export const VectorCountOutputSchema = z.object({
767
+ success: z.boolean(),
768
+ count: z.number(),
769
+ });
770
+ /**
771
+ * Magnitude statistics for vector stats
772
+ */
773
+ const MagnitudeStatsSchema = z.object({
774
+ min: z.number(),
775
+ max: z.number(),
776
+ avg: z.number(),
777
+ });
778
+ /**
779
+ * sqlite_vector_stats output
780
+ */
781
+ export const VectorStatsOutputSchema = z.object({
782
+ success: z.boolean(),
783
+ sampleSize: z.number().optional(),
784
+ dimensions: z.number().optional(),
785
+ magnitudeStats: MagnitudeStatsSchema.optional(),
786
+ count: z.number().optional(),
787
+ message: z.string().optional(),
788
+ });
789
+ /**
790
+ * sqlite_vector_dimensions output
791
+ */
792
+ export const VectorDimensionsOutputSchema = z.object({
793
+ success: z.boolean(),
794
+ dimensions: z.number().nullable(),
795
+ message: z.string().optional(),
796
+ });
797
+ /**
798
+ * sqlite_vector_normalize output
799
+ */
800
+ export const VectorNormalizeOutputSchema = z.object({
801
+ success: z.boolean(),
802
+ original: z.array(z.number()),
803
+ normalized: z.array(z.number()),
804
+ originalMagnitude: z.number(),
805
+ });
806
+ /**
807
+ * sqlite_vector_distance output
808
+ */
809
+ export const VectorDistanceOutputSchema = z.object({
810
+ success: z.boolean(),
811
+ metric: z.string().optional(),
812
+ value: z.number().optional(),
813
+ error: z.string().optional(),
814
+ });
815
+ // =============================================================================
816
+ // Legacy Vector Schemas (kept for compatibility)
817
+ // =============================================================================
818
+ /**
819
+ * sqlite_vector_create output (legacy)
820
+ */
821
+ export const VectorCreateOutputSchema = z.object({
822
+ success: z.boolean(),
823
+ message: z.string(),
824
+ tableName: z.string(),
825
+ dimensions: z.number(),
826
+ });
827
+ /**
828
+ * sqlite_vector_insert output (legacy)
829
+ */
830
+ export const VectorInsertOutputSchema = z.object({
831
+ success: z.boolean(),
832
+ rowsAffected: z.number(),
833
+ });
834
+ /**
835
+ * sqlite_vector_upsert output (legacy)
836
+ */
837
+ export const VectorUpsertOutputSchema = z.object({
838
+ success: z.boolean(),
839
+ inserted: z.number(),
840
+ updated: z.number(),
841
+ });
842
+ /**
843
+ * sqlite_cosine_similarity output (legacy)
844
+ */
845
+ export const CosineSimilarityOutputSchema = z.object({
846
+ success: z.boolean(),
847
+ similarity: z.number(),
848
+ });
849
+ /**
850
+ * sqlite_euclidean_distance output (legacy)
851
+ */
852
+ export const EuclideanDistanceOutputSchema = z.object({
853
+ success: z.boolean(),
854
+ distance: z.number(),
855
+ });
856
+ /**
857
+ * sqlite_dot_product output (legacy)
858
+ */
859
+ export const DotProductOutputSchema = z.object({
860
+ success: z.boolean(),
861
+ product: z.number(),
862
+ });
863
+ /**
864
+ * sqlite_vector_magnitude output (legacy)
865
+ */
866
+ export const VectorMagnitudeOutputSchema = z.object({
867
+ success: z.boolean(),
868
+ magnitude: z.number(),
869
+ });
870
+ /**
871
+ * Result item with hybrid scores
872
+ */
873
+ const HybridResultSchema = z
874
+ .object({
875
+ vector_score: z.number().optional(),
876
+ text_score: z.number().optional(),
877
+ combined_score: z.number().optional(),
878
+ })
879
+ .loose();
880
+ /**
881
+ * sqlite_hybrid_search output
882
+ */
883
+ export const HybridSearchOutputSchema = z.object({
884
+ success: z.boolean(),
885
+ rowCount: z.number(),
886
+ results: z.array(HybridResultSchema),
887
+ });
888
+ // =============================================================================
889
+ // Geospatial Tool Output Schemas (7 tools)
890
+ // =============================================================================
891
+ /**
892
+ * sqlite_geo_distance output
893
+ */
894
+ export const GeoDistanceOutputSchema = z.object({
895
+ success: z.boolean(),
896
+ distance: z.number(),
897
+ unit: z.string(),
898
+ });
899
+ /**
900
+ * sqlite_geo_bounding_box output
901
+ */
902
+ export const GeoBoundingBoxOutputSchema = z.object({
903
+ success: z.boolean(),
904
+ rowCount: z.number(),
905
+ results: z.array(RowRecordSchema),
906
+ });
907
+ /**
908
+ * Result item with distance for geo queries
909
+ */
910
+ const GeoDistanceResultSchema = z
911
+ .object({
912
+ distance: z.number().optional(),
913
+ })
914
+ .loose();
915
+ /**
916
+ * sqlite_geo_within_radius output
917
+ */
918
+ export const GeoWithinRadiusOutputSchema = z.object({
919
+ success: z.boolean(),
920
+ rowCount: z.number(),
921
+ results: z.array(GeoDistanceResultSchema),
922
+ });
923
+ /**
924
+ * sqlite_geo_cluster output
925
+ */
926
+ export const GeoClusterOutputSchema = z.object({
927
+ success: z.boolean(),
928
+ clusters: z.array(z.object({
929
+ clusterId: z.number(),
930
+ center: z.object({
931
+ latitude: z.number(),
932
+ longitude: z.number(),
933
+ }),
934
+ pointCount: z.number(),
935
+ points: z.array(RowRecordSchema).optional(),
936
+ })),
937
+ });
938
+ /**
939
+ * Result item with required distance for nearest
940
+ */
941
+ const GeoNearestResultSchema = z
942
+ .object({
943
+ distance: z.number(),
944
+ })
945
+ .loose();
946
+ /**
947
+ * sqlite_geo_nearest output
948
+ */
949
+ export const GeoNearestOutputSchema = z.object({
950
+ success: z.boolean(),
951
+ rowCount: z.number(),
952
+ results: z.array(GeoNearestResultSchema),
953
+ });
954
+ /**
955
+ * sqlite_geo_polygon_contains output
956
+ */
957
+ export const GeoPolygonContainsOutputSchema = z.object({
958
+ success: z.boolean(),
959
+ contains: z.boolean(),
960
+ });
961
+ /**
962
+ * sqlite_geo_encode output
963
+ */
964
+ export const GeoEncodeOutputSchema = z.object({
965
+ success: z.boolean(),
966
+ geohash: z.string(),
967
+ precision: z.number(),
968
+ });
969
+ // =============================================================================
970
+ // Admin Tool Output Schemas (4 tools)
971
+ // =============================================================================
972
+ /**
973
+ * sqlite_vacuum output
974
+ */
975
+ export const VacuumOutputSchema = z.object({
976
+ success: z.boolean(),
977
+ message: z.string(),
978
+ sizeChange: z
979
+ .object({
980
+ before: z.number(),
981
+ after: z.number(),
982
+ saved: z.number(),
983
+ })
984
+ .optional(),
985
+ });
986
+ /**
987
+ * sqlite_backup output
988
+ */
989
+ export const BackupOutputSchema = z.object({
990
+ success: z.boolean(),
991
+ message: z.string(),
992
+ path: z.string(),
993
+ sizeBytes: z.number().optional(),
994
+ durationMs: z.number().optional(),
995
+ wasmLimitation: z.boolean().optional(),
996
+ note: z.string().optional(),
997
+ });
998
+ /**
999
+ * sqlite_analyze output
1000
+ */
1001
+ export const AnalyzeOutputSchema = z.object({
1002
+ success: z.boolean(),
1003
+ message: z.string(),
1004
+ tablesAnalyzed: z.number().optional(),
1005
+ });
1006
+ /**
1007
+ * sqlite_optimize output
1008
+ */
1009
+ export const OptimizeOutputSchema = z.object({
1010
+ success: z.boolean(),
1011
+ message: z.string(),
1012
+ operations: z.array(z.string()).optional(),
1013
+ });
1014
+ /**
1015
+ * sqlite_integrity_check output
1016
+ */
1017
+ export const IntegrityCheckOutputSchema = z.object({
1018
+ success: z.boolean(),
1019
+ integrity: z.enum(["ok", "errors_found"]),
1020
+ errorCount: z.number(),
1021
+ messages: z.array(z.string()).optional(),
1022
+ });
1023
+ /**
1024
+ * sqlite_restore output
1025
+ */
1026
+ export const RestoreOutputSchema = z.object({
1027
+ success: z.boolean(),
1028
+ message: z.string(),
1029
+ sourcePath: z.string().optional(),
1030
+ durationMs: z.number().optional(),
1031
+ wasmLimitation: z.boolean().optional(),
1032
+ skippedTables: z.array(z.string()).optional(),
1033
+ note: z.string().optional(),
1034
+ });
1035
+ /**
1036
+ * sqlite_verify_backup output
1037
+ */
1038
+ export const VerifyBackupOutputSchema = z.object({
1039
+ success: z.boolean(),
1040
+ valid: z.boolean().optional(),
1041
+ pageCount: z.number().optional(),
1042
+ pageSize: z.number().optional(),
1043
+ integrity: z.enum(["ok", "errors_found"]).optional(),
1044
+ messages: z.array(z.string()).optional(),
1045
+ wasmLimitation: z.boolean().optional(),
1046
+ backupPath: z.string().optional(),
1047
+ });
1048
+ /**
1049
+ * Index column info
1050
+ */
1051
+ const IndexColumnSchema = z.object({
1052
+ name: z.string(),
1053
+ seqno: z.number(),
1054
+ });
1055
+ /**
1056
+ * Index stats entry
1057
+ */
1058
+ const IndexStatsEntrySchema = z.object({
1059
+ name: z.string(),
1060
+ table: z.string(),
1061
+ unique: z.boolean(),
1062
+ partial: z.boolean(),
1063
+ columns: z.array(IndexColumnSchema),
1064
+ });
1065
+ /**
1066
+ * sqlite_index_stats output
1067
+ */
1068
+ export const IndexStatsOutputSchema = z.object({
1069
+ success: z.boolean(),
1070
+ indexes: z.array(IndexStatsEntrySchema),
1071
+ });
1072
+ /**
1073
+ * sqlite_pragma_compile_options output
1074
+ */
1075
+ export const PragmaCompileOptionsOutputSchema = z.object({
1076
+ success: z.boolean(),
1077
+ options: z.array(z.string()),
1078
+ });
1079
+ /**
1080
+ * Database entry for database_list
1081
+ */
1082
+ const DatabaseListEntrySchema = z.object({
1083
+ seq: z.number(),
1084
+ name: z.string(),
1085
+ file: z.string(),
1086
+ });
1087
+ /**
1088
+ * sqlite_pragma_database_list output
1089
+ */
1090
+ export const PragmaDatabaseListOutputSchema = z.object({
1091
+ success: z.boolean(),
1092
+ databases: z.array(DatabaseListEntrySchema),
1093
+ configuredPath: z.string().optional(),
1094
+ note: z.string().optional(),
1095
+ });
1096
+ /**
1097
+ * sqlite_pragma_optimize output
1098
+ */
1099
+ export const PragmaOptimizeOutputSchema = z.object({
1100
+ success: z.boolean(),
1101
+ message: z.string(),
1102
+ durationMs: z.number(),
1103
+ });
1104
+ /**
1105
+ * sqlite_pragma_settings output
1106
+ */
1107
+ export const PragmaSettingsOutputSchema = z.object({
1108
+ success: z.boolean(),
1109
+ pragma: z.string(),
1110
+ value: z.unknown(),
1111
+ oldValue: z.unknown().optional(),
1112
+ newValue: z.unknown().optional(),
1113
+ });
1114
+ /**
1115
+ * Column info for pragma_table_info
1116
+ */
1117
+ const PragmaTableInfoColumnSchema = z.object({
1118
+ cid: z.number(),
1119
+ name: z.string(),
1120
+ type: z.string(),
1121
+ notNull: z.boolean(),
1122
+ defaultValue: z.unknown().nullable(),
1123
+ pk: z.number(),
1124
+ });
1125
+ /**
1126
+ * sqlite_pragma_table_info output
1127
+ */
1128
+ export const PragmaTableInfoOutputSchema = z.object({
1129
+ success: z.boolean(),
1130
+ table: z.string(),
1131
+ columns: z.array(PragmaTableInfoColumnSchema),
1132
+ });
1133
+ // =============================================================================
1134
+ // Transaction Tool Output Schemas (7 tools - Native only)
1135
+ // =============================================================================
1136
+ /**
1137
+ * sqlite_transaction_begin output
1138
+ */
1139
+ export const TransactionBeginOutputSchema = z.object({
1140
+ success: z.boolean(),
1141
+ message: z.string(),
1142
+ mode: z.string().optional(),
1143
+ });
1144
+ /**
1145
+ * sqlite_transaction_commit output
1146
+ */
1147
+ export const TransactionCommitOutputSchema = z.object({
1148
+ success: z.boolean(),
1149
+ message: z.string(),
1150
+ });
1151
+ /**
1152
+ * sqlite_transaction_rollback output
1153
+ */
1154
+ export const TransactionRollbackOutputSchema = z.object({
1155
+ success: z.boolean(),
1156
+ message: z.string(),
1157
+ });
1158
+ /**
1159
+ * sqlite_transaction_savepoint output
1160
+ */
1161
+ export const TransactionSavepointOutputSchema = z.object({
1162
+ success: z.boolean(),
1163
+ message: z.string(),
1164
+ name: z.string(),
1165
+ });
1166
+ /**
1167
+ * sqlite_transaction_release output
1168
+ */
1169
+ export const TransactionReleaseOutputSchema = z.object({
1170
+ success: z.boolean(),
1171
+ message: z.string(),
1172
+ name: z.string(),
1173
+ });
1174
+ /**
1175
+ * sqlite_transaction_rollback_to output
1176
+ */
1177
+ export const TransactionRollbackToOutputSchema = z.object({
1178
+ success: z.boolean(),
1179
+ message: z.string(),
1180
+ name: z.string(),
1181
+ });
1182
+ /**
1183
+ * sqlite_transaction_execute output
1184
+ */
1185
+ export const TransactionExecuteOutputSchema = z.object({
1186
+ success: z.boolean(),
1187
+ message: z.string(),
1188
+ statementsExecuted: z.number(),
1189
+ results: z.array(z.unknown()).optional(),
1190
+ });
1191
+ // =============================================================================
1192
+ // Window Function Tool Output Schemas (6 tools - Native only)
1193
+ // =============================================================================
1194
+ /**
1195
+ * Result item with row_number
1196
+ */
1197
+ const RowNumberResultSchema = z
1198
+ .object({
1199
+ row_number: z.number(),
1200
+ })
1201
+ .loose();
1202
+ /**
1203
+ * sqlite_window_row_number output
1204
+ */
1205
+ export const WindowRowNumberOutputSchema = z.object({
1206
+ success: z.boolean(),
1207
+ rowCount: z.number(),
1208
+ rows: z.array(RowNumberResultSchema),
1209
+ });
1210
+ /**
1211
+ * Result item with rank values
1212
+ */
1213
+ const RankResultSchema = z
1214
+ .object({
1215
+ rank: z.number().optional(),
1216
+ dense_rank: z.number().optional(),
1217
+ percent_rank: z.number().optional(),
1218
+ })
1219
+ .loose();
1220
+ /**
1221
+ * sqlite_window_rank output
1222
+ */
1223
+ export const WindowRankOutputSchema = z.object({
1224
+ success: z.boolean(),
1225
+ rowCount: z.number(),
1226
+ rows: z.array(RankResultSchema),
1227
+ });
1228
+ /**
1229
+ * Result item with lag/lead values
1230
+ */
1231
+ const LagLeadResultSchema = z
1232
+ .object({
1233
+ lag_value: z.unknown().optional(),
1234
+ lead_value: z.unknown().optional(),
1235
+ })
1236
+ .loose();
1237
+ /**
1238
+ * sqlite_window_lag_lead output
1239
+ */
1240
+ export const WindowLagLeadOutputSchema = z.object({
1241
+ success: z.boolean(),
1242
+ rowCount: z.number(),
1243
+ rows: z.array(LagLeadResultSchema),
1244
+ });
1245
+ /**
1246
+ * Result item with running_total
1247
+ */
1248
+ const RunningTotalResultSchema = z
1249
+ .object({
1250
+ running_total: z.number(),
1251
+ })
1252
+ .loose();
1253
+ /**
1254
+ * sqlite_window_running_total output
1255
+ */
1256
+ export const WindowRunningTotalOutputSchema = z.object({
1257
+ success: z.boolean(),
1258
+ rowCount: z.number(),
1259
+ rows: z.array(RunningTotalResultSchema),
1260
+ });
1261
+ /**
1262
+ * Result item with moving_avg
1263
+ */
1264
+ const MovingAvgResultSchema = z
1265
+ .object({
1266
+ moving_avg: z.number(),
1267
+ })
1268
+ .loose();
1269
+ /**
1270
+ * sqlite_window_moving_avg output
1271
+ */
1272
+ export const WindowMovingAvgOutputSchema = z.object({
1273
+ success: z.boolean(),
1274
+ rowCount: z.number(),
1275
+ rows: z.array(MovingAvgResultSchema),
1276
+ });
1277
+ /**
1278
+ * Result item with ntile bucket
1279
+ */
1280
+ const NtileResultSchema = z
1281
+ .object({
1282
+ ntile: z.number(),
1283
+ })
1284
+ .loose();
1285
+ /**
1286
+ * sqlite_window_ntile output
1287
+ */
1288
+ export const WindowNtileOutputSchema = z.object({
1289
+ success: z.boolean(),
1290
+ rowCount: z.number(),
1291
+ rows: z.array(NtileResultSchema),
1292
+ });
1293
+ // =============================================================================
1294
+ // Built-in Server Tool Output Schemas (3 tools)
1295
+ // =============================================================================
1296
+ /**
1297
+ * server_info output
1298
+ */
1299
+ export const ServerInfoOutputSchema = z.object({
1300
+ name: z.string(),
1301
+ version: z.string(),
1302
+ transport: z.string(),
1303
+ adapters: z.array(z.object({
1304
+ id: z.string(),
1305
+ type: z.string(),
1306
+ name: z.string(),
1307
+ })),
1308
+ toolCount: z.number(),
1309
+ toolFilter: z.string().optional(),
1310
+ });
1311
+ /**
1312
+ * server_health output
1313
+ */
1314
+ export const ServerHealthOutputSchema = z.object({
1315
+ status: z.enum(["healthy", "degraded", "unhealthy"]),
1316
+ adapters: z.array(z.object({
1317
+ id: z.string(),
1318
+ connected: z.boolean(),
1319
+ latencyMs: z.number().optional(),
1320
+ error: z.string().optional(),
1321
+ })),
1322
+ uptime: z.number().optional(),
1323
+ });
1324
+ /**
1325
+ * list_adapters output
1326
+ */
1327
+ export const ListAdaptersOutputSchema = z.object({
1328
+ count: z.number(),
1329
+ adapters: z.array(z.object({
1330
+ id: z.string(),
1331
+ type: z.string(),
1332
+ name: z.string(),
1333
+ database: z.string().optional(),
1334
+ connected: z.boolean(),
1335
+ })),
1336
+ });
1337
+ //# sourceMappingURL=output-schemas.js.map