@dotdo/postgres 0.1.1 → 0.1.3
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.
- package/README.md +73 -1
- package/dist/client/index.d.ts +47 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +47 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/postgres-client.d.ts +273 -0
- package/dist/client/postgres-client.d.ts.map +1 -0
- package/dist/client/postgres-client.js +389 -0
- package/dist/client/postgres-client.js.map +1 -0
- package/dist/client/types.d.ts +167 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +7 -0
- package/dist/client/types.js.map +1 -0
- package/dist/do/index.d.ts +18 -0
- package/dist/do/index.d.ts.map +1 -0
- package/dist/do/index.js +18 -0
- package/dist/do/index.js.map +1 -0
- package/dist/do/postgres.d.ts +110 -0
- package/dist/do/postgres.d.ts.map +1 -0
- package/dist/do/postgres.js +266 -0
- package/dist/do/postgres.js.map +1 -0
- package/dist/do/sql.d.ts +92 -0
- package/dist/do/sql.d.ts.map +1 -0
- package/dist/do/sql.js +204 -0
- package/dist/do/sql.js.map +1 -0
- package/dist/index.d.ts +25 -30
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -30
- package/dist/index.js.map +1 -1
- package/dist/mcp/binding.d.ts +47 -0
- package/dist/mcp/binding.d.ts.map +1 -0
- package/dist/mcp/binding.js +183 -0
- package/dist/mcp/binding.js.map +1 -0
- package/dist/mcp/index.d.ts +92 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +91 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +62 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +278 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +58 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +356 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +139 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +7 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/pglite/workers-pglite.d.ts +13 -4
- package/dist/pglite/workers-pglite.d.ts.map +1 -1
- package/dist/pglite/workers-pglite.js +110 -5
- package/dist/pglite/workers-pglite.js.map +1 -1
- package/dist/pglite-assets/pglite.data +0 -0
- package/dist/pglite-assets/pglite.wasm +0 -0
- package/dist/worker/auth.d.ts.map +1 -1
- package/dist/worker/auth.js +16 -6
- package/dist/worker/auth.js.map +1 -1
- package/dist/worker/background-pglite-manager.d.ts +243 -0
- package/dist/worker/background-pglite-manager.d.ts.map +1 -0
- package/dist/worker/background-pglite-manager.js +528 -0
- package/dist/worker/background-pglite-manager.js.map +1 -0
- package/dist/worker/do-pglite-manager.d.ts +77 -0
- package/dist/worker/do-pglite-manager.d.ts.map +1 -1
- package/dist/worker/do-pglite-manager.js +189 -12
- package/dist/worker/do-pglite-manager.js.map +1 -1
- package/dist/worker/entry.d.ts.map +1 -1
- package/dist/worker/entry.js +108 -26
- package/dist/worker/entry.js.map +1 -1
- package/dist/worker/index.d.ts +7 -1
- package/dist/worker/index.d.ts.map +1 -1
- package/dist/worker/index.js +19 -1
- package/dist/worker/index.js.map +1 -1
- package/dist/worker/lazy-pglite-manager.d.ts +242 -0
- package/dist/worker/lazy-pglite-manager.d.ts.map +1 -0
- package/dist/worker/lazy-pglite-manager.js +463 -0
- package/dist/worker/lazy-pglite-manager.js.map +1 -0
- package/package.json +20 -6
- package/src/client/index.ts +61 -0
- package/src/client/postgres-client.ts +442 -0
- package/src/client/types.ts +211 -0
- package/src/do/index.ts +18 -0
- package/src/do/postgres.ts +367 -0
- package/src/do/sql.ts +280 -0
- package/src/index.ts +50 -30
- package/src/mcp/binding.ts +236 -0
- package/src/mcp/index.ts +122 -0
- package/src/mcp/server.ts +361 -0
- package/src/mcp/tools.ts +464 -0
- package/src/mcp/types.ts +148 -0
- package/src/pglite/workers-pglite.ts +141 -12
- package/src/pglite-assets/pglite.data +0 -0
- package/src/pglite-assets/pglite.wasm +0 -0
- package/src/worker/auth.ts +17 -6
- package/src/worker/background-pglite-manager.ts +680 -0
- package/src/worker/do-pglite-manager.ts +235 -19
- package/src/worker/entry.ts +112 -30
- package/src/worker/index.ts +71 -1
- package/src/worker/lazy-pglite-manager.ts +595 -0
- package/dist/iceberg/duckdb-wasm.d.ts +0 -447
- package/dist/iceberg/duckdb-wasm.d.ts.map +0 -1
- package/dist/iceberg/duckdb-wasm.js +0 -600
- package/dist/iceberg/duckdb-wasm.js.map +0 -1
- package/dist/iceberg/test-fixtures.d.ts +0 -151
- package/dist/iceberg/test-fixtures.d.ts.map +0 -1
- package/dist/iceberg/test-fixtures.js +0 -446
- package/dist/iceberg/test-fixtures.js.map +0 -1
- package/dist/worker/__mocks__/cloudflare-workers.d.ts +0 -31
- package/dist/worker/__mocks__/cloudflare-workers.d.ts.map +0 -1
- package/dist/worker/__mocks__/cloudflare-workers.js +0 -33
- package/dist/worker/__mocks__/cloudflare-workers.js.map +0 -1
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools for PostgresDO
|
|
3
|
+
*
|
|
4
|
+
* Implements the three core MCP tools: search, fetch, and do.
|
|
5
|
+
*/
|
|
6
|
+
import { createPGBinding, PG_BINDING_TYPES } from './binding.js';
|
|
7
|
+
/**
|
|
8
|
+
* Search tool definition
|
|
9
|
+
*/
|
|
10
|
+
export const searchTool = {
|
|
11
|
+
name: 'search',
|
|
12
|
+
description: 'Search the PostgreSQL database. Supports SQL queries, table listing, and schema introspection.',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
query: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Search query. Can be: SQL query (SELECT ...), "tables" to list tables, or "schema:<table>" to get table schema',
|
|
19
|
+
},
|
|
20
|
+
limit: {
|
|
21
|
+
type: 'number',
|
|
22
|
+
description: 'Maximum number of results to return',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
required: ['query'],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Fetch tool definition
|
|
30
|
+
*/
|
|
31
|
+
export const fetchTool = {
|
|
32
|
+
name: 'fetch',
|
|
33
|
+
description: 'Fetch a specific resource from the database. Format: "table/id" or "schema/table/column"',
|
|
34
|
+
inputSchema: {
|
|
35
|
+
type: 'object',
|
|
36
|
+
properties: {
|
|
37
|
+
resource: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
description: 'Resource identifier. Format: "table/id" to get a row, or "schema/table" for table schema',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
required: ['resource'],
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Do tool definition
|
|
47
|
+
*/
|
|
48
|
+
export const doTool = {
|
|
49
|
+
name: 'do',
|
|
50
|
+
description: `Execute TypeScript/JavaScript code with access to the PostgreSQL database via the 'pg' binding.
|
|
51
|
+
|
|
52
|
+
Available APIs:
|
|
53
|
+
${PG_BINDING_TYPES}`,
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
code: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
description: 'TypeScript/JavaScript code to execute',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
required: ['code'],
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Create the search tool handler
|
|
67
|
+
*/
|
|
68
|
+
export function createSearchHandler(executor) {
|
|
69
|
+
return async (input) => {
|
|
70
|
+
try {
|
|
71
|
+
const { query, limit = 100 } = input;
|
|
72
|
+
// Handle special commands
|
|
73
|
+
if (query.toLowerCase() === 'tables') {
|
|
74
|
+
const result = await executor.rpcQuery(`
|
|
75
|
+
SELECT
|
|
76
|
+
table_name as name,
|
|
77
|
+
table_schema as schema,
|
|
78
|
+
table_type as type
|
|
79
|
+
FROM information_schema.tables
|
|
80
|
+
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
81
|
+
ORDER BY table_schema, table_name
|
|
82
|
+
LIMIT $1
|
|
83
|
+
`, [limit]);
|
|
84
|
+
const results = result.rows.map((row) => ({
|
|
85
|
+
id: `${row.schema}.${row.name}`,
|
|
86
|
+
title: row.name,
|
|
87
|
+
snippet: `${row.type} in schema ${row.schema}`,
|
|
88
|
+
metadata: { schema: row.schema, type: row.type },
|
|
89
|
+
}));
|
|
90
|
+
return {
|
|
91
|
+
content: [{ type: 'text', text: JSON.stringify(results, null, 2) }],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// Handle schema introspection: "schema:tablename"
|
|
95
|
+
if (query.toLowerCase().startsWith('schema:')) {
|
|
96
|
+
const tableName = query.slice(7).trim();
|
|
97
|
+
// Validate table name
|
|
98
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(tableName)) {
|
|
99
|
+
return {
|
|
100
|
+
content: [{ type: 'text', text: JSON.stringify({ error: 'Invalid table name' }) }],
|
|
101
|
+
isError: true,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const result = await executor.rpcQuery(`
|
|
105
|
+
SELECT
|
|
106
|
+
column_name as name,
|
|
107
|
+
data_type as type,
|
|
108
|
+
is_nullable,
|
|
109
|
+
column_default
|
|
110
|
+
FROM information_schema.columns
|
|
111
|
+
WHERE table_name = $1
|
|
112
|
+
AND table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
113
|
+
ORDER BY ordinal_position
|
|
114
|
+
`, [tableName]);
|
|
115
|
+
const results = result.rows.map((row) => ({
|
|
116
|
+
id: `${tableName}.${row.name}`,
|
|
117
|
+
title: row.name,
|
|
118
|
+
snippet: `${row.type}${row.is_nullable === 'NO' ? ' NOT NULL' : ''}${row.column_default ? ` DEFAULT ${row.column_default}` : ''}`,
|
|
119
|
+
metadata: {
|
|
120
|
+
table: tableName,
|
|
121
|
+
type: row.type,
|
|
122
|
+
nullable: row.is_nullable === 'YES',
|
|
123
|
+
default: row.column_default,
|
|
124
|
+
},
|
|
125
|
+
}));
|
|
126
|
+
return {
|
|
127
|
+
content: [{ type: 'text', text: JSON.stringify(results, null, 2) }],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
// Execute SQL query
|
|
131
|
+
// Add LIMIT if not present and query is a SELECT
|
|
132
|
+
let sql = query.trim();
|
|
133
|
+
const isSelect = sql.toLowerCase().startsWith('select');
|
|
134
|
+
if (isSelect && !sql.toLowerCase().includes('limit')) {
|
|
135
|
+
sql = `${sql} LIMIT ${limit}`;
|
|
136
|
+
}
|
|
137
|
+
const result = await executor.rpcQuery(sql);
|
|
138
|
+
const results = result.rows.map((row, index) => {
|
|
139
|
+
// Try to find an id-like field
|
|
140
|
+
const idField = Object.keys(row).find((k) => k === 'id' || k.endsWith('_id') || k === 'uuid');
|
|
141
|
+
const id = idField ? String(row[idField]) : String(index);
|
|
142
|
+
// Create a title from the first non-id field
|
|
143
|
+
const titleField = Object.keys(row).find((k) => k !== idField && typeof row[k] === 'string');
|
|
144
|
+
const title = titleField ? String(row[titleField]) : `Row ${index + 1}`;
|
|
145
|
+
return {
|
|
146
|
+
id,
|
|
147
|
+
title,
|
|
148
|
+
snippet: JSON.stringify(row),
|
|
149
|
+
metadata: row,
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
return {
|
|
153
|
+
content: [{ type: 'text', text: JSON.stringify(results, null, 2) }],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
158
|
+
return {
|
|
159
|
+
content: [{ type: 'text', text: JSON.stringify({ error: message }) }],
|
|
160
|
+
isError: true,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Create the fetch tool handler
|
|
167
|
+
*/
|
|
168
|
+
export function createFetchHandler(executor) {
|
|
169
|
+
return async (input) => {
|
|
170
|
+
try {
|
|
171
|
+
const { resource } = input;
|
|
172
|
+
const parts = resource.split('/');
|
|
173
|
+
// Handle schema fetch: "schema/tablename"
|
|
174
|
+
if (parts[0].toLowerCase() === 'schema' && parts.length === 2) {
|
|
175
|
+
const tableName = parts[1];
|
|
176
|
+
// Validate table name
|
|
177
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(tableName)) {
|
|
178
|
+
return {
|
|
179
|
+
content: [{ type: 'text', text: JSON.stringify({ error: 'Invalid table name' }) }],
|
|
180
|
+
isError: true,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const result = await executor.rpcQuery(`
|
|
184
|
+
SELECT
|
|
185
|
+
column_name as name,
|
|
186
|
+
data_type as type,
|
|
187
|
+
is_nullable = 'YES' as nullable,
|
|
188
|
+
column_default as "default"
|
|
189
|
+
FROM information_schema.columns
|
|
190
|
+
WHERE table_name = $1
|
|
191
|
+
AND table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
192
|
+
ORDER BY ordinal_position
|
|
193
|
+
`, [tableName]);
|
|
194
|
+
const fetchResult = {
|
|
195
|
+
content: JSON.stringify(result.rows, null, 2),
|
|
196
|
+
contentType: 'application/json',
|
|
197
|
+
metadata: {
|
|
198
|
+
table: tableName,
|
|
199
|
+
columnCount: result.rows.length,
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
return {
|
|
203
|
+
content: [{ type: 'text', text: JSON.stringify(fetchResult, null, 2) }],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
// Handle row fetch: "tablename/id"
|
|
207
|
+
if (parts.length === 2) {
|
|
208
|
+
const [tableName, id] = parts;
|
|
209
|
+
// Validate table name
|
|
210
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(tableName)) {
|
|
211
|
+
return {
|
|
212
|
+
content: [{ type: 'text', text: JSON.stringify({ error: 'Invalid table name' }) }],
|
|
213
|
+
isError: true,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
// Try to find the primary key column
|
|
217
|
+
const pkResult = await executor.rpcQuery(`
|
|
218
|
+
SELECT kcu.column_name
|
|
219
|
+
FROM information_schema.key_column_usage kcu
|
|
220
|
+
JOIN information_schema.table_constraints tc
|
|
221
|
+
ON kcu.constraint_name = tc.constraint_name
|
|
222
|
+
WHERE tc.constraint_type = 'PRIMARY KEY'
|
|
223
|
+
AND kcu.table_name = $1
|
|
224
|
+
LIMIT 1
|
|
225
|
+
`, [tableName]);
|
|
226
|
+
const pkColumn = pkResult.rows.length > 0 ? pkResult.rows[0].column_name : 'id';
|
|
227
|
+
// Fetch the row
|
|
228
|
+
const result = await executor.rpcQuery(`SELECT * FROM "${tableName}" WHERE "${pkColumn}" = $1 LIMIT 1`, [id]);
|
|
229
|
+
if (result.rows.length === 0) {
|
|
230
|
+
return {
|
|
231
|
+
content: [
|
|
232
|
+
{
|
|
233
|
+
type: 'text',
|
|
234
|
+
text: JSON.stringify({ error: `Row not found: ${resource}` }),
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
isError: true,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const fetchResult = {
|
|
241
|
+
content: JSON.stringify(result.rows[0], null, 2),
|
|
242
|
+
contentType: 'application/json',
|
|
243
|
+
metadata: {
|
|
244
|
+
table: tableName,
|
|
245
|
+
primaryKey: pkColumn,
|
|
246
|
+
id,
|
|
247
|
+
},
|
|
248
|
+
};
|
|
249
|
+
return {
|
|
250
|
+
content: [{ type: 'text', text: JSON.stringify(fetchResult, null, 2) }],
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
content: [
|
|
255
|
+
{
|
|
256
|
+
type: 'text',
|
|
257
|
+
text: JSON.stringify({
|
|
258
|
+
error: 'Invalid resource format. Use "table/id" for rows or "schema/table" for schema',
|
|
259
|
+
}),
|
|
260
|
+
},
|
|
261
|
+
],
|
|
262
|
+
isError: true,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
267
|
+
return {
|
|
268
|
+
content: [{ type: 'text', text: JSON.stringify({ error: message }) }],
|
|
269
|
+
isError: true,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Create the do tool handler
|
|
276
|
+
*/
|
|
277
|
+
export function createDoHandler(executor, options = {}) {
|
|
278
|
+
const { timeout = 5000 } = options;
|
|
279
|
+
return async (input) => {
|
|
280
|
+
const startTime = Date.now();
|
|
281
|
+
const logs = [];
|
|
282
|
+
try {
|
|
283
|
+
const { code } = input;
|
|
284
|
+
// Create the pg binding
|
|
285
|
+
const pg = createPGBinding(executor);
|
|
286
|
+
// Create sandbox console that captures logs
|
|
287
|
+
const sandboxConsole = {
|
|
288
|
+
log: (...args) => logs.push(['log', args.map(String).join(' ')]),
|
|
289
|
+
error: (...args) => logs.push(['error', args.map(String).join(' ')]),
|
|
290
|
+
warn: (...args) => logs.push(['warn', args.map(String).join(' ')]),
|
|
291
|
+
info: (...args) => logs.push(['info', args.map(String).join(' ')]),
|
|
292
|
+
};
|
|
293
|
+
// Create and execute function with sandbox
|
|
294
|
+
// Note: In production, use ai-evaluate for proper V8 isolation
|
|
295
|
+
const fn = new Function('pg', 'console', `
|
|
296
|
+
return (async () => {
|
|
297
|
+
${code}
|
|
298
|
+
})()
|
|
299
|
+
`);
|
|
300
|
+
// Execute with timeout
|
|
301
|
+
const result = await Promise.race([
|
|
302
|
+
fn(pg, sandboxConsole),
|
|
303
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Execution timeout')), timeout)),
|
|
304
|
+
]);
|
|
305
|
+
const duration = Date.now() - startTime;
|
|
306
|
+
return {
|
|
307
|
+
content: [
|
|
308
|
+
{
|
|
309
|
+
type: 'text',
|
|
310
|
+
text: JSON.stringify({
|
|
311
|
+
success: true,
|
|
312
|
+
value: result,
|
|
313
|
+
logs: logs.map(([level, msg]) => ({ level, message: msg })),
|
|
314
|
+
duration,
|
|
315
|
+
}, null, 2),
|
|
316
|
+
},
|
|
317
|
+
],
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
const duration = Date.now() - startTime;
|
|
322
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
323
|
+
return {
|
|
324
|
+
content: [
|
|
325
|
+
{
|
|
326
|
+
type: 'text',
|
|
327
|
+
text: JSON.stringify({
|
|
328
|
+
success: false,
|
|
329
|
+
error: message,
|
|
330
|
+
logs: logs.map(([level, msg]) => ({ level, message: msg })),
|
|
331
|
+
duration,
|
|
332
|
+
}, null, 2),
|
|
333
|
+
},
|
|
334
|
+
],
|
|
335
|
+
isError: true,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Get all tool definitions
|
|
342
|
+
*/
|
|
343
|
+
export function getToolDefinitions() {
|
|
344
|
+
return [searchTool, fetchTool, doTool];
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Create all tool handlers
|
|
348
|
+
*/
|
|
349
|
+
export function createToolHandlers(executor, options = {}) {
|
|
350
|
+
return {
|
|
351
|
+
search: createSearchHandler(executor),
|
|
352
|
+
fetch: createFetchHandler(executor),
|
|
353
|
+
do: createDoHandler(executor, options),
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAehE;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,gGAAgG;IAClG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,gHAAgH;aACnH;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qCAAqC;aACnD;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;CACF,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,IAAI,EAAE,OAAO;IACb,WAAW,EACT,0FAA0F;IAC5F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,0FAA0F;aAC7F;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;CACF,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAS;IAC1B,IAAI,EAAE,IAAI;IACV,WAAW,EAAE;;;EAGb,gBAAgB,EAAE;IAClB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAuB;IAEvB,OAAO,KAAK,EAAE,KAAkB,EAAyB,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,KAAK,CAAA;YAEpC,0BAA0B;YAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;;;;;;;;;SAStC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;gBAEX,MAAM,OAAO,GAAsB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC3D,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE;oBAC/B,KAAK,EAAE,GAAG,CAAC,IAAc;oBACzB,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,MAAM,EAAE;oBAC9C,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;iBACjD,CAAC,CAAC,CAAA;gBAEH,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAA;YACH,CAAC;YAED,kDAAkD;YAClD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAEvC,sBAAsB;gBACtB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChD,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC;wBAClF,OAAO,EAAE,IAAI;qBACd,CAAA;gBACH,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACpC;;;;;;;;;;SAUD,EACC,CAAC,SAAS,CAAC,CACZ,CAAA;gBAED,MAAM,OAAO,GAAsB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC3D,EAAE,EAAE,GAAG,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE;oBAC9B,KAAK,EAAE,GAAG,CAAC,IAAc;oBACzB,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;oBACjI,QAAQ,EAAE;wBACR,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,QAAQ,EAAE,GAAG,CAAC,WAAW,KAAK,KAAK;wBACnC,OAAO,EAAE,GAAG,CAAC,cAAc;qBAC5B;iBACF,CAAC,CAAC,CAAA;gBAEH,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAA;YACH,CAAC;YAED,oBAAoB;YACpB,iDAAiD;YACjD,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;YACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAEvD,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrD,GAAG,GAAG,GAAG,GAAG,UAAU,KAAK,EAAE,CAAA;YAC/B,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YAE3C,MAAM,OAAO,GAAsB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAChE,+BAA+B;gBAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CACvD,CAAA;gBACD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAEzD,6CAA6C;gBAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CACnD,CAAA;gBACD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE,CAAA;gBAEvE,OAAO;oBACL,EAAE;oBACF,KAAK;oBACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;oBAC5B,QAAQ,EAAE,GAA8B;iBACzC,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACpE,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;YACxE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAuB;IAEvB,OAAO,KAAK,EAAE,KAAiB,EAAyB,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;YAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEjC,0CAA0C;YAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBAE1B,sBAAsB;gBACtB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChD,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC;wBAClF,OAAO,EAAE,IAAI;qBACd,CAAA;gBACH,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACpC;;;;;;;;;;SAUD,EACC,CAAC,SAAS,CAAC,CACZ,CAAA;gBAED,MAAM,WAAW,GAAmB;oBAClC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7C,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE;wBACR,KAAK,EAAE,SAAS;wBAChB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;qBAChC;iBACF,CAAA;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACxE,CAAA;YACH,CAAC;YAED,mCAAmC;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,KAAK,CAAA;gBAE7B,sBAAsB;gBACtB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChD,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC;wBAClF,OAAO,EAAE,IAAI;qBACd,CAAA;gBACH,CAAC;gBAED,qCAAqC;gBACrC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACtC;;;;;;;;SAQD,EACC,CAAC,SAAS,CAAC,CACZ,CAAA;gBAED,MAAM,QAAQ,GACZ,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAsB,CAAC,CAAC,CAAC,IAAI,CAAA;gBAE5E,gBAAgB;gBAChB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACpC,kBAAkB,SAAS,YAAY,QAAQ,gBAAgB,EAC/D,CAAC,EAAE,CAAC,CACL,CAAA;gBAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kBAAkB,QAAQ,EAAE,EAAE,CAAC;6BAC9D;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAA;gBACH,CAAC;gBAED,MAAM,WAAW,GAAmB;oBAClC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChD,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE;wBACR,KAAK,EAAE,SAAS;wBAChB,UAAU,EAAE,QAAQ;wBACpB,EAAE;qBACH;iBACF,CAAA;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACxE,CAAA;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EACH,+EAA+E;yBAClF,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;YACxE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAuB,EACvB,UAA8D,EAAE;IAEhE,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IAElC,OAAO,KAAK,EAAE,KAAc,EAAyB,EAAE;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,IAAI,GAA4B,EAAE,CAAA;QAExC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;YAEtB,wBAAwB;YACxB,MAAM,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAEpC,4CAA4C;YAC5C,MAAM,cAAc,GAAG;gBACrB,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3E,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/E,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7E,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aAC9E,CAAA;YAED,2CAA2C;YAC3C,+DAA+D;YAC/D,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;;YAEnC,IAAI;;OAET,CAAC,CAAA;YAEF,uBAAuB;YACvB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAChC,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC;gBACtB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACxB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAClE;aACF,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;YAEvC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE,MAAM;4BACb,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC3D,QAAQ;yBACT,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;YACvC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;YAExE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,OAAO;4BACd,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC3D,QAAQ;yBACT,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAuB,EACvB,UAA8D,EAAE;IAEhE,OAAO;QACL,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAA8C;QAClF,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAA8C;QAChF,EAAE,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAA8C;KACpF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Types for PostgresDO
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the MCP (Model Context Protocol) server implementation.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Query result from pg.query()
|
|
8
|
+
*/
|
|
9
|
+
export interface QueryResult<T = Record<string, unknown>> {
|
|
10
|
+
rows: T[];
|
|
11
|
+
rowCount: number;
|
|
12
|
+
fields: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
dataTypeID: number;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Table information from pg.tables()
|
|
19
|
+
*/
|
|
20
|
+
export interface TableInfo {
|
|
21
|
+
name: string;
|
|
22
|
+
schema: string;
|
|
23
|
+
type: 'table' | 'view' | 'materialized_view';
|
|
24
|
+
rowCount?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Column schema from pg.schema()
|
|
28
|
+
*/
|
|
29
|
+
export interface ColumnInfo {
|
|
30
|
+
name: string;
|
|
31
|
+
type: string;
|
|
32
|
+
nullable: boolean;
|
|
33
|
+
default?: string;
|
|
34
|
+
primaryKey: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Search result for MCP search tool
|
|
38
|
+
*/
|
|
39
|
+
export interface MCPSearchResult {
|
|
40
|
+
id: string;
|
|
41
|
+
title: string;
|
|
42
|
+
snippet?: string;
|
|
43
|
+
score?: number;
|
|
44
|
+
metadata?: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Fetch result for MCP fetch tool
|
|
48
|
+
*/
|
|
49
|
+
export interface MCPFetchResult {
|
|
50
|
+
content: string;
|
|
51
|
+
contentType?: string;
|
|
52
|
+
metadata?: Record<string, unknown>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The pg binding exposed to the do tool
|
|
56
|
+
*/
|
|
57
|
+
export interface PGBinding {
|
|
58
|
+
/**
|
|
59
|
+
* Execute a SQL query with optional parameters
|
|
60
|
+
*/
|
|
61
|
+
query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
|
|
62
|
+
/**
|
|
63
|
+
* Execute a SQL statement (INSERT, UPDATE, DELETE)
|
|
64
|
+
*/
|
|
65
|
+
execute(sql: string, params?: unknown[]): Promise<{
|
|
66
|
+
rowCount: number;
|
|
67
|
+
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Execute multiple statements in a transaction
|
|
70
|
+
*/
|
|
71
|
+
transaction<T>(fn: (tx: PGTransaction) => Promise<T>): Promise<T>;
|
|
72
|
+
/**
|
|
73
|
+
* List all tables in the database
|
|
74
|
+
*/
|
|
75
|
+
tables(): Promise<TableInfo[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Get schema information for a table
|
|
78
|
+
*/
|
|
79
|
+
schema(tableName: string): Promise<ColumnInfo[]>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Transaction context for pg.transaction()
|
|
83
|
+
*/
|
|
84
|
+
export interface PGTransaction {
|
|
85
|
+
query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
|
|
86
|
+
execute(sql: string, params?: unknown[]): Promise<{
|
|
87
|
+
rowCount: number;
|
|
88
|
+
}>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* MCP tool response format
|
|
92
|
+
*/
|
|
93
|
+
export interface ToolResponse {
|
|
94
|
+
content: Array<{
|
|
95
|
+
type: string;
|
|
96
|
+
text: string;
|
|
97
|
+
}>;
|
|
98
|
+
isError?: boolean;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Search tool input
|
|
102
|
+
*/
|
|
103
|
+
export interface SearchInput {
|
|
104
|
+
query: string;
|
|
105
|
+
limit?: number;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Fetch tool input
|
|
109
|
+
*/
|
|
110
|
+
export interface FetchInput {
|
|
111
|
+
resource: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Do tool input
|
|
115
|
+
*/
|
|
116
|
+
export interface DoInput {
|
|
117
|
+
code: string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Auth context from oauth.do JWT
|
|
121
|
+
*/
|
|
122
|
+
export interface MCPAuthContext {
|
|
123
|
+
userId: string;
|
|
124
|
+
email?: string;
|
|
125
|
+
scopes?: string[];
|
|
126
|
+
metadata?: Record<string, unknown>;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* MCP Server configuration
|
|
130
|
+
*/
|
|
131
|
+
export interface MCPServerConfig {
|
|
132
|
+
/** Database ID for the PostgresDO instance */
|
|
133
|
+
databaseId: string;
|
|
134
|
+
/** Optional auth context from JWT */
|
|
135
|
+
authContext?: MCPAuthContext;
|
|
136
|
+
/** Timeout for code execution in ms (default: 5000) */
|
|
137
|
+
timeout?: number;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
* - Properly handles fsBundle as ArrayBuffer or Blob
|
|
12
12
|
* - Provides query/exec/transaction interface compatible with PostgresDO
|
|
13
13
|
*
|
|
14
|
+
* IMPORTANT: This module uses dynamic imports to ensure environment patches
|
|
15
|
+
* are applied BEFORE pglite.js is evaluated. The Emscripten-generated code
|
|
16
|
+
* checks `typeof WorkerGlobalScope` at module load time, which must happen
|
|
17
|
+
* AFTER we've patched the global environment.
|
|
18
|
+
*
|
|
14
19
|
* @example
|
|
15
20
|
* ```typescript
|
|
16
21
|
* import { createWorkersPGLite } from './workers-pglite'
|
|
@@ -27,8 +32,7 @@
|
|
|
27
32
|
* console.log(result.rows[0].sum) // 2
|
|
28
33
|
* ```
|
|
29
34
|
*/
|
|
30
|
-
import
|
|
31
|
-
type PGliteWorkersOptions = PGliteOptions;
|
|
35
|
+
import type { DebugLevel } from '@dotdo/pglite';
|
|
32
36
|
type QueryResult<T = unknown> = {
|
|
33
37
|
rows: T[];
|
|
34
38
|
fields: {
|
|
@@ -85,7 +89,7 @@ export interface WorkersPGLiteLike {
|
|
|
85
89
|
ready?: boolean;
|
|
86
90
|
}
|
|
87
91
|
/**
|
|
88
|
-
* Wrapper around
|
|
92
|
+
* Wrapper around PGlite that provides a compatible interface
|
|
89
93
|
* for PostgresDO and handles fsBundle conversion
|
|
90
94
|
*/
|
|
91
95
|
export declare class WorkersPGLite implements WorkersPGLiteLike {
|
|
@@ -94,6 +98,10 @@ export declare class WorkersPGLite implements WorkersPGLiteLike {
|
|
|
94
98
|
private constructor();
|
|
95
99
|
/**
|
|
96
100
|
* Create a new WorkersPGLite instance
|
|
101
|
+
*
|
|
102
|
+
* IMPORTANT: This method uses dynamic import to load @dotdo/pglite
|
|
103
|
+
* AFTER applying environment patches. This is necessary because
|
|
104
|
+
* pglite.js evaluates environment detection code at module load time.
|
|
97
105
|
*/
|
|
98
106
|
static create(options: WorkersPGLiteOptions): Promise<WorkersPGLite>;
|
|
99
107
|
/**
|
|
@@ -134,5 +142,6 @@ export declare function createWorkersPGLite(options: WorkersPGLiteOptions): Prom
|
|
|
134
142
|
* Type guard to check if a value is a WorkersPGLite instance
|
|
135
143
|
*/
|
|
136
144
|
export declare function isWorkersPGLite(value: unknown): value is WorkersPGLite;
|
|
137
|
-
export type {
|
|
145
|
+
export type { QueryResult };
|
|
146
|
+
export type PGliteWorkersOptions = WorkersPGLiteOptions;
|
|
138
147
|
//# sourceMappingURL=workers-pglite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers-pglite.d.ts","sourceRoot":"","sources":["../../src/pglite/workers-pglite.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workers-pglite.d.ts","sourceRoot":"","sources":["../../src/pglite/workers-pglite.ts"],"names":[],"mappings":"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"}
|