@softtechai/quickmcp 1.0.8
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 +553 -0
- package/dist/client/MCPClient.d.ts +24 -0
- package/dist/client/MCPClient.d.ts.map +1 -0
- package/dist/client/MCPClient.js +211 -0
- package/dist/client/MCPClient.js.map +1 -0
- package/dist/client/MCPClientUnified.d.ts +31 -0
- package/dist/client/MCPClientUnified.d.ts.map +1 -0
- package/dist/client/MCPClientUnified.js +275 -0
- package/dist/client/MCPClientUnified.js.map +1 -0
- package/dist/client/MCPTestRunner.d.ts +44 -0
- package/dist/client/MCPTestRunner.d.ts.map +1 -0
- package/dist/client/MCPTestRunner.js +220 -0
- package/dist/client/MCPTestRunner.js.map +1 -0
- package/dist/client/MCPTestRunnerUnified.d.ts +48 -0
- package/dist/client/MCPTestRunnerUnified.d.ts.map +1 -0
- package/dist/client/MCPTestRunnerUnified.js +183 -0
- package/dist/client/MCPTestRunnerUnified.js.map +1 -0
- package/dist/database/json-manager.d.ts +55 -0
- package/dist/database/json-manager.d.ts.map +1 -0
- package/dist/database/json-manager.js +128 -0
- package/dist/database/json-manager.js.map +1 -0
- package/dist/database/sqlite-manager.d.ts +53 -0
- package/dist/database/sqlite-manager.d.ts.map +1 -0
- package/dist/database/sqlite-manager.js +193 -0
- package/dist/database/sqlite-manager.js.map +1 -0
- package/dist/dynamic-mcp-executor.d.ts +14 -0
- package/dist/dynamic-mcp-executor.d.ts.map +1 -0
- package/dist/dynamic-mcp-executor.js +274 -0
- package/dist/dynamic-mcp-executor.js.map +1 -0
- package/dist/generators/MCPServerGenerator-new.d.ts +37 -0
- package/dist/generators/MCPServerGenerator-new.d.ts.map +1 -0
- package/dist/generators/MCPServerGenerator-new.js +287 -0
- package/dist/generators/MCPServerGenerator-new.js.map +1 -0
- package/dist/generators/MCPServerGenerator.d.ts +42 -0
- package/dist/generators/MCPServerGenerator.d.ts.map +1 -0
- package/dist/generators/MCPServerGenerator.js +494 -0
- package/dist/generators/MCPServerGenerator.js.map +1 -0
- package/dist/generators/database/sqlite-manager.d.ts +52 -0
- package/dist/generators/database/sqlite-manager.js +143 -0
- package/dist/generators/generators/MCPServerGenerator.d.ts +37 -0
- package/dist/generators/generators/MCPServerGenerator.js +396 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/integrated-mcp-server-new.d.ts +12 -0
- package/dist/integrated-mcp-server-new.d.ts.map +1 -0
- package/dist/integrated-mcp-server-new.js +253 -0
- package/dist/integrated-mcp-server-new.js.map +1 -0
- package/dist/integrated-mcp-server.d.ts +25 -0
- package/dist/integrated-mcp-server.d.ts.map +1 -0
- package/dist/integrated-mcp-server.js +541 -0
- package/dist/integrated-mcp-server.js.map +1 -0
- package/dist/mcp-inspector-server.d.ts +3 -0
- package/dist/mcp-inspector-server.d.ts.map +1 -0
- package/dist/mcp-inspector-server.js +119 -0
- package/dist/mcp-inspector-server.js.map +1 -0
- package/dist/mcp-sdk-server.d.ts +3 -0
- package/dist/mcp-sdk-server.d.ts.map +1 -0
- package/dist/mcp-sdk-server.js +90 -0
- package/dist/mcp-sdk-server.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +300 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/parsers/CsvParser.d.ts +7 -0
- package/dist/parsers/CsvParser.d.ts.map +1 -0
- package/dist/parsers/CsvParser.js +98 -0
- package/dist/parsers/CsvParser.js.map +1 -0
- package/dist/parsers/DatabaseParser.d.ts +18 -0
- package/dist/parsers/DatabaseParser.d.ts.map +1 -0
- package/dist/parsers/DatabaseParser.js +372 -0
- package/dist/parsers/DatabaseParser.js.map +1 -0
- package/dist/parsers/ExcelParser.d.ts +8 -0
- package/dist/parsers/ExcelParser.d.ts.map +1 -0
- package/dist/parsers/ExcelParser.js +119 -0
- package/dist/parsers/ExcelParser.js.map +1 -0
- package/dist/parsers/index.d.ts +13 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +88 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/parsers/ExcelParser.js +118 -0
- package/dist/parsers/types/index.js +2 -0
- package/dist/quickmcp-unified-bridge.d.ts +13 -0
- package/dist/quickmcp-unified-bridge.d.ts.map +1 -0
- package/dist/quickmcp-unified-bridge.js +176 -0
- package/dist/quickmcp-unified-bridge.js.map +1 -0
- package/dist/server/ServerManager.d.ts +37 -0
- package/dist/server/ServerManager.d.ts.map +1 -0
- package/dist/server/ServerManager.js +376 -0
- package/dist/server/ServerManager.js.map +1 -0
- package/dist/sqlite-manager.js +145 -0
- package/dist/start-new-server.d.ts +3 -0
- package/dist/start-new-server.d.ts.map +1 -0
- package/dist/start-new-server.js +10 -0
- package/dist/start-new-server.js.map +1 -0
- package/dist/test-app.d.ts +2 -0
- package/dist/test-app.d.ts.map +1 -0
- package/dist/test-app.js +119 -0
- package/dist/test-app.js.map +1 -0
- package/dist/test-new-architecture.d.ts +3 -0
- package/dist/test-new-architecture.d.ts.map +1 -0
- package/dist/test-new-architecture.js +72 -0
- package/dist/test-new-architecture.js.map +1 -0
- package/dist/transport/base-transport.d.ts +21 -0
- package/dist/transport/base-transport.d.ts.map +1 -0
- package/dist/transport/base-transport.js +16 -0
- package/dist/transport/base-transport.js.map +1 -0
- package/dist/transport/index.d.ts +10 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +12 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/sse-transport.d.ts +13 -0
- package/dist/transport/sse-transport.d.ts.map +1 -0
- package/dist/transport/sse-transport.js +106 -0
- package/dist/transport/sse-transport.js.map +1 -0
- package/dist/transport/stdio-transport.d.ts +8 -0
- package/dist/transport/stdio-transport.d.ts.map +1 -0
- package/dist/transport/stdio-transport.js +53 -0
- package/dist/transport/stdio-transport.js.map +1 -0
- package/dist/transport/streamable-http-transport.d.ts +15 -0
- package/dist/transport/streamable-http-transport.d.ts.map +1 -0
- package/dist/transport/streamable-http-transport.js +151 -0
- package/dist/transport/streamable-http-transport.js.map +1 -0
- package/dist/types/index.d.ts +64 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/web/client/MCPClient.js +348 -0
- package/dist/web/client/MCPTestRunner.js +317 -0
- package/dist/web/database/json-manager.js +124 -0
- package/dist/web/database/sqlite-manager.js +146 -0
- package/dist/web/dynamic-mcp-executor.js +443 -0
- package/dist/web/generators/MCPServerGenerator-new.js +284 -0
- package/dist/web/generators/MCPServerGenerator.js +566 -0
- package/dist/web/integrated-mcp-server-new.js +394 -0
- package/dist/web/parsers/CsvParser.js +144 -0
- package/dist/web/parsers/DatabaseParser.js +637 -0
- package/dist/web/parsers/ExcelParser.js +180 -0
- package/dist/web/parsers/index.js +152 -0
- package/dist/web/server.d.ts +3 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +790 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/types/index.js +2 -0
- package/dist/web/web/server.js +860 -0
- package/package.json +68 -0
- package/quickmcp-direct-stdio.js +328 -0
- package/src/web/public/app.js +1795 -0
- package/src/web/public/database-tables.html +711 -0
- package/src/web/public/how-to-use.html +571 -0
- package/src/web/public/how-to-use.js +255 -0
- package/src/web/public/images/1-claude-quickmcp-stdio.png +0 -0
- package/src/web/public/images/2-claude-tools.png +0 -0
- package/src/web/public/images/3-claude-developer-settings.png +0 -0
- package/src/web/public/images/4-claude-config.png +0 -0
- package/src/web/public/images/5-claude-config-edit.png +0 -0
- package/src/web/public/index.html +626 -0
- package/src/web/public/manage-servers.html +198 -0
- package/src/web/public/modern-styles.css +946 -0
- package/src/web/public/shared-styles.css +2091 -0
- package/src/web/public/shared.js +93 -0
- package/src/web/public/test-servers.html +302 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-manager.js","sourceRoot":"","sources":["../../src/database/json-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface ServerConfig {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
dbConfig: {
|
|
5
|
+
type: 'mssql' | 'mysql' | 'postgresql';
|
|
6
|
+
server: string;
|
|
7
|
+
port: number;
|
|
8
|
+
database: string;
|
|
9
|
+
username: string;
|
|
10
|
+
password: string;
|
|
11
|
+
encrypt?: boolean;
|
|
12
|
+
trustServerCertificate?: boolean;
|
|
13
|
+
};
|
|
14
|
+
createdAt: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ToolDefinition {
|
|
17
|
+
server_id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
inputSchema: any;
|
|
21
|
+
sqlQuery: string;
|
|
22
|
+
operation: 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE';
|
|
23
|
+
}
|
|
24
|
+
export interface ResourceDefinition {
|
|
25
|
+
server_id: string;
|
|
26
|
+
name: string;
|
|
27
|
+
description: string;
|
|
28
|
+
uri_template: string;
|
|
29
|
+
sqlQuery: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class SQLiteManager {
|
|
32
|
+
private db;
|
|
33
|
+
private dbPath;
|
|
34
|
+
constructor();
|
|
35
|
+
private initializeTables;
|
|
36
|
+
saveServer(server: ServerConfig): void;
|
|
37
|
+
getServer(serverId: string): ServerConfig | null;
|
|
38
|
+
getAllServers(): ServerConfig[];
|
|
39
|
+
deleteServer(serverId: string): void;
|
|
40
|
+
saveTools(tools: ToolDefinition[]): void;
|
|
41
|
+
getToolsForServer(serverId: string): ToolDefinition[];
|
|
42
|
+
getAllTools(): ToolDefinition[];
|
|
43
|
+
saveResources(resources: ResourceDefinition[]): void;
|
|
44
|
+
getResourcesForServer(serverId: string): ResourceDefinition[];
|
|
45
|
+
getAllResources(): ResourceDefinition[];
|
|
46
|
+
close(): void;
|
|
47
|
+
getStats(): {
|
|
48
|
+
servers: number;
|
|
49
|
+
tools: number;
|
|
50
|
+
resources: number;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=sqlite-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-manager.d.ts","sourceRoot":"","sources":["../../src/database/sqlite-manager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAS;;IAsBvB,OAAO,CAAC,gBAAgB;IA+CxB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IActC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAchD,aAAa,IAAI,YAAY,EAAE;IAY/B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMpC,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAsBxC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IAcrD,WAAW,IAAI,cAAc,EAAE;IAe/B,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAqBpD,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAa7D,eAAe,IAAI,kBAAkB,EAAE;IAcvC,KAAK,IAAI,IAAI;IAKb,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAWlE"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SQLiteManager = void 0;
|
|
7
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
class SQLiteManager {
|
|
11
|
+
constructor() {
|
|
12
|
+
// Resolve data directory relative to the project root (not process.cwd())
|
|
13
|
+
// This prevents attempts to write to "/data" when the process CWD is '/'.
|
|
14
|
+
const projectRoot = path_1.default.resolve(__dirname, '..', '..');
|
|
15
|
+
const configuredDir = process.env.QUICKMCP_DATA_DIR;
|
|
16
|
+
const dbDir = configuredDir
|
|
17
|
+
? (path_1.default.isAbsolute(configuredDir)
|
|
18
|
+
? configuredDir
|
|
19
|
+
: path_1.default.join(projectRoot, configuredDir))
|
|
20
|
+
: path_1.default.join(projectRoot, 'data');
|
|
21
|
+
if (!fs_1.default.existsSync(dbDir)) {
|
|
22
|
+
fs_1.default.mkdirSync(dbDir, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
this.dbPath = path_1.default.join(dbDir, 'quickmcp.sqlite');
|
|
25
|
+
this.db = new better_sqlite3_1.default(this.dbPath);
|
|
26
|
+
this.initializeTables();
|
|
27
|
+
}
|
|
28
|
+
initializeTables() {
|
|
29
|
+
// Servers table
|
|
30
|
+
this.db.exec(`
|
|
31
|
+
CREATE TABLE IF NOT EXISTS servers (
|
|
32
|
+
id TEXT PRIMARY KEY,
|
|
33
|
+
name TEXT NOT NULL,
|
|
34
|
+
db_config TEXT NOT NULL,
|
|
35
|
+
created_at TEXT NOT NULL,
|
|
36
|
+
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
37
|
+
)
|
|
38
|
+
`);
|
|
39
|
+
// Tools table
|
|
40
|
+
this.db.exec(`
|
|
41
|
+
CREATE TABLE IF NOT EXISTS tools (
|
|
42
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
43
|
+
server_id TEXT NOT NULL,
|
|
44
|
+
name TEXT NOT NULL,
|
|
45
|
+
description TEXT NOT NULL,
|
|
46
|
+
input_schema TEXT NOT NULL,
|
|
47
|
+
sql_query TEXT NOT NULL,
|
|
48
|
+
operation TEXT NOT NULL CHECK (operation IN ('SELECT', 'INSERT', 'UPDATE', 'DELETE')),
|
|
49
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
50
|
+
FOREIGN KEY (server_id) REFERENCES servers (id) ON DELETE CASCADE,
|
|
51
|
+
UNIQUE(server_id, name)
|
|
52
|
+
)
|
|
53
|
+
`);
|
|
54
|
+
// Resources table
|
|
55
|
+
this.db.exec(`
|
|
56
|
+
CREATE TABLE IF NOT EXISTS resources (
|
|
57
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
58
|
+
server_id TEXT NOT NULL,
|
|
59
|
+
name TEXT NOT NULL,
|
|
60
|
+
description TEXT NOT NULL,
|
|
61
|
+
uri_template TEXT NOT NULL,
|
|
62
|
+
sql_query TEXT NOT NULL,
|
|
63
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
64
|
+
FOREIGN KEY (server_id) REFERENCES servers (id) ON DELETE CASCADE,
|
|
65
|
+
UNIQUE(server_id, name)
|
|
66
|
+
)
|
|
67
|
+
`);
|
|
68
|
+
//console.error('✅ SQLite database initialized:', this.dbPath);
|
|
69
|
+
}
|
|
70
|
+
// Server operations
|
|
71
|
+
saveServer(server) {
|
|
72
|
+
const stmt = this.db.prepare(`
|
|
73
|
+
INSERT OR REPLACE INTO servers (id, name, db_config, created_at, updated_at)
|
|
74
|
+
VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)
|
|
75
|
+
`);
|
|
76
|
+
stmt.run(server.id, server.name, JSON.stringify(server.dbConfig), server.createdAt);
|
|
77
|
+
}
|
|
78
|
+
getServer(serverId) {
|
|
79
|
+
const stmt = this.db.prepare('SELECT * FROM servers WHERE id = ?');
|
|
80
|
+
const row = stmt.get(serverId);
|
|
81
|
+
if (!row)
|
|
82
|
+
return null;
|
|
83
|
+
return {
|
|
84
|
+
id: row.id,
|
|
85
|
+
name: row.name,
|
|
86
|
+
dbConfig: JSON.parse(row.db_config),
|
|
87
|
+
createdAt: row.created_at
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
getAllServers() {
|
|
91
|
+
const stmt = this.db.prepare('SELECT * FROM servers ORDER BY created_at DESC');
|
|
92
|
+
const rows = stmt.all();
|
|
93
|
+
return rows.map(row => ({
|
|
94
|
+
id: row.id,
|
|
95
|
+
name: row.name,
|
|
96
|
+
dbConfig: JSON.parse(row.db_config),
|
|
97
|
+
createdAt: row.created_at
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
deleteServer(serverId) {
|
|
101
|
+
const stmt = this.db.prepare('DELETE FROM servers WHERE id = ?');
|
|
102
|
+
stmt.run(serverId);
|
|
103
|
+
}
|
|
104
|
+
// Tool operations
|
|
105
|
+
saveTools(tools) {
|
|
106
|
+
const stmt = this.db.prepare(`
|
|
107
|
+
INSERT OR REPLACE INTO tools (server_id, name, description, input_schema, sql_query, operation)
|
|
108
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
109
|
+
`);
|
|
110
|
+
const transaction = this.db.transaction((tools) => {
|
|
111
|
+
for (const tool of tools) {
|
|
112
|
+
stmt.run(tool.server_id, tool.name, tool.description, JSON.stringify(tool.inputSchema), tool.sqlQuery, tool.operation);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
transaction(tools);
|
|
116
|
+
}
|
|
117
|
+
getToolsForServer(serverId) {
|
|
118
|
+
const stmt = this.db.prepare('SELECT * FROM tools WHERE server_id = ?');
|
|
119
|
+
const rows = stmt.all(serverId);
|
|
120
|
+
return rows.map(row => ({
|
|
121
|
+
server_id: row.server_id,
|
|
122
|
+
name: row.name,
|
|
123
|
+
description: row.description,
|
|
124
|
+
inputSchema: JSON.parse(row.input_schema),
|
|
125
|
+
sqlQuery: row.sql_query,
|
|
126
|
+
operation: row.operation
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
getAllTools() {
|
|
130
|
+
const stmt = this.db.prepare('SELECT * FROM tools ORDER BY server_id, name');
|
|
131
|
+
const rows = stmt.all();
|
|
132
|
+
return rows.map(row => ({
|
|
133
|
+
server_id: row.server_id,
|
|
134
|
+
name: row.name,
|
|
135
|
+
description: row.description,
|
|
136
|
+
inputSchema: JSON.parse(row.input_schema),
|
|
137
|
+
sqlQuery: row.sql_query,
|
|
138
|
+
operation: row.operation
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
// Resource operations
|
|
142
|
+
saveResources(resources) {
|
|
143
|
+
const stmt = this.db.prepare(`
|
|
144
|
+
INSERT OR REPLACE INTO resources (server_id, name, description, uri_template, sql_query)
|
|
145
|
+
VALUES (?, ?, ?, ?, ?)
|
|
146
|
+
`);
|
|
147
|
+
const transaction = this.db.transaction((resources) => {
|
|
148
|
+
for (const resource of resources) {
|
|
149
|
+
stmt.run(resource.server_id, resource.name, resource.description, resource.uri_template, resource.sqlQuery);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
transaction(resources);
|
|
153
|
+
}
|
|
154
|
+
getResourcesForServer(serverId) {
|
|
155
|
+
const stmt = this.db.prepare('SELECT * FROM resources WHERE server_id = ?');
|
|
156
|
+
const rows = stmt.all(serverId);
|
|
157
|
+
return rows.map(row => ({
|
|
158
|
+
server_id: row.server_id,
|
|
159
|
+
name: row.name,
|
|
160
|
+
description: row.description,
|
|
161
|
+
uri_template: row.uri_template,
|
|
162
|
+
sqlQuery: row.sql_query
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
getAllResources() {
|
|
166
|
+
const stmt = this.db.prepare('SELECT * FROM resources ORDER BY server_id, name');
|
|
167
|
+
const rows = stmt.all();
|
|
168
|
+
return rows.map(row => ({
|
|
169
|
+
server_id: row.server_id,
|
|
170
|
+
name: row.name,
|
|
171
|
+
description: row.description,
|
|
172
|
+
uri_template: row.uri_template,
|
|
173
|
+
sqlQuery: row.sql_query
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
// Cleanup
|
|
177
|
+
close() {
|
|
178
|
+
this.db.close();
|
|
179
|
+
}
|
|
180
|
+
// Statistics
|
|
181
|
+
getStats() {
|
|
182
|
+
const serversCount = this.db.prepare('SELECT COUNT(*) as count FROM servers').get();
|
|
183
|
+
const toolsCount = this.db.prepare('SELECT COUNT(*) as count FROM tools').get();
|
|
184
|
+
const resourcesCount = this.db.prepare('SELECT COUNT(*) as count FROM resources').get();
|
|
185
|
+
return {
|
|
186
|
+
servers: serversCount.count,
|
|
187
|
+
tools: toolsCount.count,
|
|
188
|
+
resources: resourcesCount.count
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
exports.SQLiteManager = SQLiteManager;
|
|
193
|
+
//# sourceMappingURL=sqlite-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-manager.js","sourceRoot":"","sources":["../../src/database/sqlite-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class DynamicMCPExecutor {
|
|
2
|
+
private sqliteManager;
|
|
3
|
+
private dbConnections;
|
|
4
|
+
constructor();
|
|
5
|
+
getAllTools(): Promise<any[]>;
|
|
6
|
+
getAllResources(): Promise<any[]>;
|
|
7
|
+
executeTool(toolName: string, args: any): Promise<any>;
|
|
8
|
+
readResource(resourceName: string): Promise<any>;
|
|
9
|
+
private getOrCreateConnection;
|
|
10
|
+
private executeQuery;
|
|
11
|
+
getStats(): any;
|
|
12
|
+
close(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=dynamic-mcp-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-mcp-executor.d.ts","sourceRoot":"","sources":["../src/dynamic-mcp-executor.ts"],"names":[],"mappings":"AAWA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAA8C;;IAM7D,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAU7B,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAUjC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA2CtD,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YA6CxC,qBAAqB;YAwErB,YAAY;IAqF1B,QAAQ,IAAI,GAAG;IAOT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAwB7B"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DynamicMCPExecutor = void 0;
|
|
7
|
+
const sqlite_manager_1 = require("./database/sqlite-manager");
|
|
8
|
+
const mssql_1 = __importDefault(require("mssql"));
|
|
9
|
+
const promise_1 = __importDefault(require("mysql2/promise"));
|
|
10
|
+
const pg_1 = require("pg");
|
|
11
|
+
class DynamicMCPExecutor {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.dbConnections = new Map();
|
|
14
|
+
this.sqliteManager = new sqlite_manager_1.SQLiteManager();
|
|
15
|
+
}
|
|
16
|
+
async getAllTools() {
|
|
17
|
+
const tools = this.sqliteManager.getAllTools();
|
|
18
|
+
return tools.map(tool => ({
|
|
19
|
+
name: `${tool.server_id}__${tool.name}`,
|
|
20
|
+
description: `[${tool.server_id}] ${tool.description}`,
|
|
21
|
+
inputSchema: typeof tool.inputSchema === 'string' ? JSON.parse(tool.inputSchema) : tool.inputSchema
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
async getAllResources() {
|
|
25
|
+
const resources = this.sqliteManager.getAllResources();
|
|
26
|
+
return resources.map(resource => ({
|
|
27
|
+
name: `${resource.server_id}__${resource.name}`,
|
|
28
|
+
description: `[${resource.server_id}] ${resource.description}`,
|
|
29
|
+
uri: resource.uri_template
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
async executeTool(toolName, args) {
|
|
33
|
+
try {
|
|
34
|
+
// Parse tool name: "serverId__toolName"
|
|
35
|
+
const parts = toolName.split('__');
|
|
36
|
+
if (parts.length !== 2) {
|
|
37
|
+
throw new Error(`Invalid tool name format: ${toolName}`);
|
|
38
|
+
}
|
|
39
|
+
const [serverId, actualToolName] = parts;
|
|
40
|
+
// Get tool definition from JSON database
|
|
41
|
+
const tools = this.sqliteManager.getToolsForServer(serverId);
|
|
42
|
+
const tool = tools.find(t => t.name === actualToolName);
|
|
43
|
+
if (!tool) {
|
|
44
|
+
throw new Error(`Tool not found: ${toolName}`);
|
|
45
|
+
}
|
|
46
|
+
// Get server config from JSON database
|
|
47
|
+
const serverConfig = this.sqliteManager.getServer(serverId);
|
|
48
|
+
if (!serverConfig) {
|
|
49
|
+
throw new Error(`Server not found: ${serverId}`);
|
|
50
|
+
}
|
|
51
|
+
// Get or create database connection
|
|
52
|
+
const dbConnection = await this.getOrCreateConnection(serverId, serverConfig.dbConfig);
|
|
53
|
+
// Execute the SQL query
|
|
54
|
+
const result = await this.executeQuery(dbConnection, tool.sqlQuery, args, tool.operation);
|
|
55
|
+
console.error(`✅ Executed tool ${toolName} successfully`);
|
|
56
|
+
return {
|
|
57
|
+
success: true,
|
|
58
|
+
data: result,
|
|
59
|
+
rowCount: Array.isArray(result) ? result.length : (result.rowsAffected || 0)
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error(`❌ Error executing tool ${toolName}:`, error);
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async readResource(resourceName) {
|
|
68
|
+
try {
|
|
69
|
+
// Parse resource name: "serverId__resourceName"
|
|
70
|
+
const parts = resourceName.split('__');
|
|
71
|
+
if (parts.length !== 2) {
|
|
72
|
+
throw new Error(`Invalid resource name format: ${resourceName}`);
|
|
73
|
+
}
|
|
74
|
+
const [serverId, actualResourceName] = parts;
|
|
75
|
+
// Get resource definition from JSON database
|
|
76
|
+
const resources = this.sqliteManager.getResourcesForServer(serverId);
|
|
77
|
+
const resource = resources.find(r => r.name === actualResourceName);
|
|
78
|
+
if (!resource) {
|
|
79
|
+
throw new Error(`Resource not found: ${resourceName}`);
|
|
80
|
+
}
|
|
81
|
+
// Get server config from JSON database
|
|
82
|
+
const serverConfig = this.sqliteManager.getServer(serverId);
|
|
83
|
+
if (!serverConfig) {
|
|
84
|
+
throw new Error(`Server not found: ${serverId}`);
|
|
85
|
+
}
|
|
86
|
+
// Get or create database connection
|
|
87
|
+
const dbConnection = await this.getOrCreateConnection(serverId, serverConfig.dbConfig);
|
|
88
|
+
// Execute the SQL query
|
|
89
|
+
const result = await this.executeQuery(dbConnection, resource.sqlQuery, {}, 'SELECT');
|
|
90
|
+
console.error(`✅ Read resource ${resourceName} successfully`);
|
|
91
|
+
return {
|
|
92
|
+
contents: [{
|
|
93
|
+
uri: resource.uri_template,
|
|
94
|
+
mimeType: 'application/json',
|
|
95
|
+
text: JSON.stringify(result, null, 2)
|
|
96
|
+
}]
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
console.error(`❌ Error reading resource ${resourceName}:`, error);
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async getOrCreateConnection(serverId, dbConfig) {
|
|
105
|
+
if (this.dbConnections.has(serverId)) {
|
|
106
|
+
return this.dbConnections.get(serverId);
|
|
107
|
+
}
|
|
108
|
+
let connection;
|
|
109
|
+
let dbConnection;
|
|
110
|
+
try {
|
|
111
|
+
switch (dbConfig.type) {
|
|
112
|
+
case 'mssql':
|
|
113
|
+
connection = await mssql_1.default.connect({
|
|
114
|
+
server: dbConfig.host,
|
|
115
|
+
port: dbConfig.port || 1433,
|
|
116
|
+
database: dbConfig.database,
|
|
117
|
+
user: dbConfig.username,
|
|
118
|
+
password: dbConfig.password,
|
|
119
|
+
options: {
|
|
120
|
+
encrypt: dbConfig.encrypt || false,
|
|
121
|
+
trustServerCertificate: dbConfig.trustServerCertificate ?? true
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
console.error(`🔗 Connected to MSSQL database for server ${serverId}`);
|
|
125
|
+
break;
|
|
126
|
+
case 'mysql':
|
|
127
|
+
connection = promise_1.default.createConnection({
|
|
128
|
+
host: dbConfig.host,
|
|
129
|
+
port: dbConfig.port || 3306,
|
|
130
|
+
database: dbConfig.database,
|
|
131
|
+
user: dbConfig.username,
|
|
132
|
+
password: dbConfig.password
|
|
133
|
+
});
|
|
134
|
+
await connection.connect();
|
|
135
|
+
console.error(`🔗 Connected to MySQL database for server ${serverId}`);
|
|
136
|
+
break;
|
|
137
|
+
case 'postgresql':
|
|
138
|
+
connection = new pg_1.Pool({
|
|
139
|
+
host: dbConfig.host,
|
|
140
|
+
port: dbConfig.port || 5432,
|
|
141
|
+
database: dbConfig.database,
|
|
142
|
+
user: dbConfig.username,
|
|
143
|
+
password: dbConfig.password
|
|
144
|
+
});
|
|
145
|
+
// Test connection
|
|
146
|
+
await connection.query('SELECT 1');
|
|
147
|
+
console.error(`🔗 Connected to PostgreSQL database for server ${serverId}`);
|
|
148
|
+
break;
|
|
149
|
+
default:
|
|
150
|
+
throw new Error(`Unsupported database type: ${dbConfig.type}`);
|
|
151
|
+
}
|
|
152
|
+
dbConnection = {
|
|
153
|
+
type: dbConfig.type,
|
|
154
|
+
connection,
|
|
155
|
+
config: dbConfig
|
|
156
|
+
};
|
|
157
|
+
this.dbConnections.set(serverId, dbConnection);
|
|
158
|
+
return dbConnection;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
console.error(`❌ Failed to connect to database for server ${serverId}:`, error);
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
async executeQuery(dbConnection, sqlQuery, args, operation) {
|
|
166
|
+
const { type, connection } = dbConnection;
|
|
167
|
+
try {
|
|
168
|
+
switch (type) {
|
|
169
|
+
case 'mssql':
|
|
170
|
+
const request = connection.request();
|
|
171
|
+
// Extract all @param references from the SQL query
|
|
172
|
+
const paramRegex = /@(\w+)/g;
|
|
173
|
+
let match;
|
|
174
|
+
const sqlParams = new Set();
|
|
175
|
+
while ((match = paramRegex.exec(sqlQuery)) !== null) {
|
|
176
|
+
sqlParams.add(match[1]);
|
|
177
|
+
}
|
|
178
|
+
// For SQL Server, handle data type compatibility issues
|
|
179
|
+
// If no filter parameters are provided (all are null), simplify the query
|
|
180
|
+
const hasActiveFilters = Array.from(sqlParams).some((paramName) => {
|
|
181
|
+
if (paramName === 'limit' || paramName === 'offset')
|
|
182
|
+
return false;
|
|
183
|
+
const value = args[paramName];
|
|
184
|
+
return value !== undefined && value !== null;
|
|
185
|
+
});
|
|
186
|
+
let modifiedQuery = sqlQuery;
|
|
187
|
+
if (!hasActiveFilters && operation === 'SELECT') {
|
|
188
|
+
// Remove complex WHERE clause that causes ntext compatibility issues
|
|
189
|
+
modifiedQuery = sqlQuery.replace(/WHERE.*?(?=ORDER BY|GROUP BY|HAVING|$)/gi, '');
|
|
190
|
+
}
|
|
191
|
+
// Always add all SQL parameters, using provided values or defaults
|
|
192
|
+
for (const paramName of sqlParams) {
|
|
193
|
+
const paramNameStr = paramName;
|
|
194
|
+
let value = args[paramNameStr];
|
|
195
|
+
// Set defaults for limit and offset if not provided
|
|
196
|
+
if (paramNameStr === 'limit' && (value === undefined || value === null)) {
|
|
197
|
+
value = 100;
|
|
198
|
+
}
|
|
199
|
+
else if (paramNameStr === 'offset' && (value === undefined || value === null)) {
|
|
200
|
+
value = 0;
|
|
201
|
+
}
|
|
202
|
+
if (value !== undefined && value !== null) {
|
|
203
|
+
request.input(paramNameStr, value);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
request.input(paramNameStr, null);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const result = await request.query(modifiedQuery);
|
|
210
|
+
if (operation === 'SELECT') {
|
|
211
|
+
return result.recordset;
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
return { rowsAffected: result.rowsAffected[0] };
|
|
215
|
+
}
|
|
216
|
+
case 'mysql':
|
|
217
|
+
const [rows] = await connection.execute(sqlQuery, Object.values(args).filter(v => v !== undefined && v !== null));
|
|
218
|
+
if (operation === 'SELECT') {
|
|
219
|
+
return rows;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
return { rowsAffected: rows.affectedRows };
|
|
223
|
+
}
|
|
224
|
+
case 'postgresql':
|
|
225
|
+
const values = Object.values(args).filter(v => v !== undefined && v !== null);
|
|
226
|
+
const pgResult = await connection.query(sqlQuery, values);
|
|
227
|
+
if (operation === 'SELECT') {
|
|
228
|
+
return pgResult.rows;
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
return { rowsAffected: pgResult.rowCount };
|
|
232
|
+
}
|
|
233
|
+
default:
|
|
234
|
+
throw new Error(`Unsupported database type: ${type}`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
console.error(`❌ Database query failed:`, error);
|
|
239
|
+
throw error;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
getStats() {
|
|
243
|
+
return {
|
|
244
|
+
...this.sqliteManager.getStats(),
|
|
245
|
+
activeConnections: this.dbConnections.size
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
async close() {
|
|
249
|
+
// Close all database connections
|
|
250
|
+
for (const [serverId, dbConnection] of this.dbConnections.entries()) {
|
|
251
|
+
try {
|
|
252
|
+
switch (dbConnection.type) {
|
|
253
|
+
case 'mssql':
|
|
254
|
+
await dbConnection.connection.close();
|
|
255
|
+
break;
|
|
256
|
+
case 'mysql':
|
|
257
|
+
await dbConnection.connection.end();
|
|
258
|
+
break;
|
|
259
|
+
case 'postgresql':
|
|
260
|
+
await dbConnection.connection.end();
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
console.error(`🔌 Closed database connection for server ${serverId}`);
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
console.error(`❌ Error closing connection for server ${serverId}:`, error);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
this.dbConnections.clear();
|
|
270
|
+
this.sqliteManager.close();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
exports.DynamicMCPExecutor = DynamicMCPExecutor;
|
|
274
|
+
//# sourceMappingURL=dynamic-mcp-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-mcp-executor.js","sourceRoot":"","sources":["../src/dynamic-mcp-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ServerConfig, ToolDefinition, ResourceDefinition } from '../database/sqlite-manager.js';
|
|
2
|
+
interface ParsedData {
|
|
3
|
+
[tableName: string]: any[];
|
|
4
|
+
}
|
|
5
|
+
export declare class MCPServerGenerator {
|
|
6
|
+
private sqliteManager;
|
|
7
|
+
constructor();
|
|
8
|
+
generateServer(serverId: string, serverName: string, parsedData: ParsedData, dbConfig: any): Promise<{
|
|
9
|
+
success: boolean;
|
|
10
|
+
message: string;
|
|
11
|
+
}>;
|
|
12
|
+
private generateToolsForData;
|
|
13
|
+
private generateResourcesForData;
|
|
14
|
+
private analyzeColumns;
|
|
15
|
+
private generateFilterProperties;
|
|
16
|
+
private generateInputProperties;
|
|
17
|
+
private generateSelectQuery;
|
|
18
|
+
private generateInsertQuery;
|
|
19
|
+
private generateUpdateQuery;
|
|
20
|
+
private generateDeleteQuery;
|
|
21
|
+
private sanitizeName;
|
|
22
|
+
getAllServers(): ServerConfig[];
|
|
23
|
+
getServer(serverId: string): ServerConfig | null;
|
|
24
|
+
deleteServer(serverId: string): void;
|
|
25
|
+
getAllTools(): ToolDefinition[];
|
|
26
|
+
getToolsForServer(serverId: string): ToolDefinition[];
|
|
27
|
+
getAllResources(): ResourceDefinition[];
|
|
28
|
+
getResourcesForServer(serverId: string): ResourceDefinition[];
|
|
29
|
+
getStats(): {
|
|
30
|
+
servers: number;
|
|
31
|
+
tools: number;
|
|
32
|
+
resources: number;
|
|
33
|
+
};
|
|
34
|
+
close(): void;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=MCPServerGenerator-new.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MCPServerGenerator-new.d.ts","sourceRoot":"","sources":["../../src/generators/MCPServerGenerator-new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAQhH,UAAU,UAAU;IAClB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;CAC5B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAgB;;IAM/B,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,GAAG,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA6CjD,OAAO,CAAC,oBAAoB;IAiG5B,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,YAAY;IAQpB,aAAa,IAAI,YAAY,EAAE;IAI/B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIhD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,WAAW,IAAI,cAAc,EAAE;IAI/B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IAIrD,eAAe,IAAI,kBAAkB,EAAE;IAIvC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAI7D,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAIjE,KAAK,IAAI,IAAI;CAGd"}
|