sqlew 4.0.0 → 4.0.2
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/CHANGELOG.md +126 -0
- package/README.md +12 -8
- package/dist/cli/db-dump.d.ts +4 -0
- package/dist/cli/db-dump.d.ts.map +1 -1
- package/dist/cli/db-dump.js +89 -114
- package/dist/cli/db-dump.js.map +1 -1
- package/dist/cli/db-export.d.ts +1 -0
- package/dist/cli/db-export.d.ts.map +1 -1
- package/dist/cli/db-export.js +46 -80
- package/dist/cli/db-export.js.map +1 -1
- package/dist/cli/db-import.d.ts +1 -0
- package/dist/cli/db-import.d.ts.map +1 -1
- package/dist/cli/db-import.js +52 -90
- package/dist/cli/db-import.js.map +1 -1
- package/dist/cli.d.ts +10 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +57 -59
- package/dist/cli.js.map +1 -1
- package/dist/database/migrations/v4/20251127000002_v4_seed_help_system.d.ts.map +1 -1
- package/dist/database/migrations/v4/20251127000002_v4_seed_help_system.js +7 -4
- package/dist/database/migrations/v4/20251127000002_v4_seed_help_system.js.map +1 -1
- package/dist/database/migrations/v4/20251128000000_drop_all_views.d.ts +24 -0
- package/dist/database/migrations/v4/20251128000000_drop_all_views.d.ts.map +1 -0
- package/dist/database/migrations/v4/20251128000000_drop_all_views.js +67 -0
- package/dist/database/migrations/v4/20251128000000_drop_all_views.js.map +1 -0
- package/dist/database/operations/inserts.d.ts.map +1 -1
- package/dist/database/operations/inserts.js +7 -0
- package/dist/database/operations/inserts.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -48
- package/dist/index.js.map +1 -1
- package/dist/tests/database/testing-config.d.ts +4 -0
- package/dist/tests/database/testing-config.d.ts.map +1 -1
- package/dist/tests/database/testing-config.js +1 -1
- package/dist/tests/database/testing-config.js.map +1 -1
- package/dist/tests/docker/native/test-harness.d.ts +56 -1
- package/dist/tests/docker/native/test-harness.d.ts.map +1 -1
- package/dist/tests/docker/native/test-harness.js +221 -5
- package/dist/tests/docker/native/test-harness.js.map +1 -1
- package/dist/tests/feature/vcs/git-aware-completion.test.js +33 -0
- package/dist/tests/feature/vcs/git-aware-completion.test.js.map +1 -1
- package/dist/tests/unit/utils/case-insensitive-validator.test.d.ts +2 -0
- package/dist/tests/unit/utils/case-insensitive-validator.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/case-insensitive-validator.test.js +97 -0
- package/dist/tests/unit/utils/case-insensitive-validator.test.js.map +1 -0
- package/dist/tools/constraints/actions/get.d.ts +2 -2
- package/dist/tools/constraints/actions/get.d.ts.map +1 -1
- package/dist/tools/constraints/actions/get.js +56 -19
- package/dist/tools/constraints/actions/get.js.map +1 -1
- package/dist/tools/context/actions/create-policy.d.ts.map +1 -1
- package/dist/tools/context/actions/create-policy.js +5 -1
- package/dist/tools/context/actions/create-policy.js.map +1 -1
- package/dist/tools/files/actions/get.d.ts +2 -2
- package/dist/tools/files/actions/get.d.ts.map +1 -1
- package/dist/tools/files/actions/get.js +22 -51
- package/dist/tools/files/actions/get.js.map +1 -1
- package/dist/types.d.ts +10 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/case-insensitive-validator.d.ts +102 -0
- package/dist/utils/case-insensitive-validator.d.ts.map +1 -0
- package/dist/utils/case-insensitive-validator.js +144 -0
- package/dist/utils/case-insensitive-validator.js.map +1 -0
- package/dist/utils/exporter/export.d.ts +22 -7
- package/dist/utils/exporter/export.d.ts.map +1 -1
- package/dist/utils/exporter/export.js +33 -49
- package/dist/utils/exporter/export.js.map +1 -1
- package/dist/utils/importer/import.js +64 -27
- package/dist/utils/importer/import.js.map +1 -1
- package/dist/utils/importer/master-tables.d.ts +3 -1
- package/dist/utils/importer/master-tables.d.ts.map +1 -1
- package/dist/utils/importer/master-tables.js +7 -29
- package/dist/utils/importer/master-tables.js.map +1 -1
- package/dist/utils/sql-dump/core/generate-dump.d.ts.map +1 -1
- package/dist/utils/sql-dump/core/generate-dump.js +25 -5
- package/dist/utils/sql-dump/core/generate-dump.js.map +1 -1
- package/dist/utils/sql-dump/core/index-export.d.ts +3 -2
- package/dist/utils/sql-dump/core/index-export.d.ts.map +1 -1
- package/dist/utils/sql-dump/core/index-export.js +9 -9
- package/dist/utils/sql-dump/core/index-export.js.map +1 -1
- package/dist/utils/sql-dump/schema/indexes.d.ts +14 -0
- package/dist/utils/sql-dump/schema/indexes.d.ts.map +1 -1
- package/dist/utils/sql-dump/schema/indexes.js +81 -15
- package/dist/utils/sql-dump/schema/indexes.js.map +1 -1
- package/dist/utils/sql-dump/schema/tables.d.ts +4 -1
- package/dist/utils/sql-dump/schema/tables.d.ts.map +1 -1
- package/dist/utils/sql-dump/schema/tables.js +81 -51
- package/dist/utils/sql-dump/schema/tables.js.map +1 -1
- package/docs/cli/DATABASE_MIGRATION.md +62 -58
- package/docs/cli/DATA_EXPORT_IMPORT.md +403 -103
- package/docs/cli/README.md +95 -45
- package/package.json +4 -6
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v4.0.1: Drop all database views
|
|
3
|
+
*
|
|
4
|
+
* Problem:
|
|
5
|
+
* - Database views cause migration complexity across different database engines
|
|
6
|
+
* - Views require database-specific SQL syntax (datetime functions, string aggregation)
|
|
7
|
+
* - Architectural decision: No views in v4+ schema - use JOINs instead
|
|
8
|
+
*
|
|
9
|
+
* Solution:
|
|
10
|
+
* - Drop all legacy views that may exist from v3 migrations
|
|
11
|
+
* - Tool files use JOIN queries via Knex query builder (cross-DB compatible)
|
|
12
|
+
* - Reference: src/utils/view-queries.ts for equivalent JOIN-based queries
|
|
13
|
+
*
|
|
14
|
+
* Related files updated:
|
|
15
|
+
* - src/tools/constraints/actions/get.ts - Now uses JOINs
|
|
16
|
+
* - src/tools/files/actions/get.ts - Now uses JOINs
|
|
17
|
+
*
|
|
18
|
+
* IDEMPOTENT: Can be run multiple times safely.
|
|
19
|
+
* SQLite, MySQL, PostgreSQL compatible.
|
|
20
|
+
*/
|
|
21
|
+
// All possible views from v3 schema that may still exist
|
|
22
|
+
const VIEWS_TO_DROP = [
|
|
23
|
+
// v3 views
|
|
24
|
+
'v_tagged_decisions',
|
|
25
|
+
'v_active_context',
|
|
26
|
+
'v_layer_summary',
|
|
27
|
+
'v_unread_messages_by_priority',
|
|
28
|
+
'v_recent_file_changes',
|
|
29
|
+
'v_tagged_constraints',
|
|
30
|
+
'v_task_board',
|
|
31
|
+
// v4 prefixed views (in case any were accidentally created)
|
|
32
|
+
'v4_tagged_decisions',
|
|
33
|
+
'v4_active_context',
|
|
34
|
+
'v4_layer_summary',
|
|
35
|
+
'v4_recent_file_changes',
|
|
36
|
+
'v4_tagged_constraints',
|
|
37
|
+
'v4_task_board',
|
|
38
|
+
];
|
|
39
|
+
export async function up(knex) {
|
|
40
|
+
console.log('🔄 Dropping all database views (v4.0.1 - No views policy)...');
|
|
41
|
+
for (const viewName of VIEWS_TO_DROP) {
|
|
42
|
+
try {
|
|
43
|
+
await knex.raw(`DROP VIEW IF EXISTS ${viewName}`);
|
|
44
|
+
console.log(` ✓ Dropped view: ${viewName}`);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
// Ignore errors if view doesn't exist (different error messages per DB)
|
|
48
|
+
const errorMsg = error.message?.toLowerCase() || '';
|
|
49
|
+
if (errorMsg.includes('does not exist') ||
|
|
50
|
+
errorMsg.includes('unknown') ||
|
|
51
|
+
errorMsg.includes('no such')) {
|
|
52
|
+
console.log(` ⚠️ View ${viewName} does not exist, skipping`);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
console.log('✅ All views dropped successfully');
|
|
60
|
+
console.log('📝 Policy: No views in v4+ - use JOIN queries via Knex query builder');
|
|
61
|
+
}
|
|
62
|
+
export async function down(knex) {
|
|
63
|
+
console.log('⚠️ WARNING: Views will NOT be recreated');
|
|
64
|
+
console.log(' v4+ policy: No database views - use JOINs instead');
|
|
65
|
+
console.log(' Reference: src/utils/view-queries.ts for equivalent queries');
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=20251128000000_drop_all_views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20251128000000_drop_all_views.js","sourceRoot":"","sources":["../../../../src/database/migrations/v4/20251128000000_drop_all_views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,yDAAyD;AACzD,MAAM,aAAa,GAAG;IACpB,WAAW;IACX,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,+BAA+B;IAC/B,uBAAuB;IACvB,sBAAsB;IACtB,cAAc;IACd,4DAA4D;IAC5D,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;IACxB,uBAAuB;IACvB,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAE5E,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,wEAAwE;YACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACpD,IACE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACnC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC5B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5B,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,2BAA2B,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inserts.d.ts","sourceRoot":"","sources":["../../../src/database/operations/inserts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"inserts.d.ts","sourceRoot":"","sources":["../../../src/database/operations/inserts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAgD/D;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,MAAM,GAAG,IAAW,EAClC,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,SAAS,GAAE,MAAM,GAAG,IAAW,EAAG,gCAAgC;AAClE,aAAa,GAAE,MAAM,GAAG,IAAW,EACnC,mBAAmB,GAAE,MAAM,GAAG,IAAW,GACxC,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Database insert operations module
|
|
3
3
|
*/
|
|
4
4
|
import { getProjectContext } from '../../utils/project-context.js';
|
|
5
|
+
import { validateNoCaseInsensitiveDuplicate } from '../../utils/case-insensitive-validator.js';
|
|
5
6
|
/**
|
|
6
7
|
* Validate JSON structure for alternatives array
|
|
7
8
|
*/
|
|
@@ -96,6 +97,9 @@ export async function getOrCreateFile(adapter, projectId, path, trx) {
|
|
|
96
97
|
*/
|
|
97
98
|
export async function getOrCreateTag(adapter, projectId, name, trx) {
|
|
98
99
|
const knex = trx || adapter.getKnex();
|
|
100
|
+
// Case-insensitive duplicate check (v4.0.2)
|
|
101
|
+
// Prevents creating 'DRY' when 'dry' already exists
|
|
102
|
+
await validateNoCaseInsensitiveDuplicate(knex, 'v4_tags', 'name', name, 'tag', { project_id: projectId });
|
|
99
103
|
// Insert with composite key (project_id, name)
|
|
100
104
|
await knex('v4_tags')
|
|
101
105
|
.insert({ project_id: projectId, name })
|
|
@@ -114,6 +118,9 @@ export async function getOrCreateTag(adapter, projectId, name, trx) {
|
|
|
114
118
|
*/
|
|
115
119
|
export async function getOrCreateScope(adapter, projectId, name, trx) {
|
|
116
120
|
const knex = trx || adapter.getKnex();
|
|
121
|
+
// Case-insensitive duplicate check (v4.0.2)
|
|
122
|
+
// Prevents creating 'Global' when 'global' already exists
|
|
123
|
+
await validateNoCaseInsensitiveDuplicate(knex, 'v4_scopes', 'name', name, 'scope', { project_id: projectId });
|
|
117
124
|
// Insert with composite key (project_id, name)
|
|
118
125
|
await knex('v4_scopes')
|
|
119
126
|
.insert({ project_id: projectId, name })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inserts.js","sourceRoot":"","sources":["../../../src/database/operations/inserts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"inserts.js","sourceRoot":"","sources":["../../../src/database/operations/inserts.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* MCP Shared Context Server - Entry Point
|
|
4
4
|
* Provides context management tools via Model Context Protocol
|
|
5
|
+
*
|
|
6
|
+
* Unified entry point (v4.0.2+):
|
|
7
|
+
* - No args or MCP args: Start MCP server
|
|
8
|
+
* - CLI commands (db:export, db:import, db:dump, query): Delegate to CLI
|
|
5
9
|
*/
|
|
6
10
|
export {};
|
|
7
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
|
package/dist/index.js
CHANGED
|
@@ -2,50 +2,78 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* MCP Shared Context Server - Entry Point
|
|
4
4
|
* Provides context management tools via Model Context Protocol
|
|
5
|
+
*
|
|
6
|
+
* Unified entry point (v4.0.2+):
|
|
7
|
+
* - No args or MCP args: Start MCP server
|
|
8
|
+
* - CLI commands (db:export, db:import, db:dump, query): Delegate to CLI
|
|
5
9
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// CLI Command Detection (must be first, before any MCP imports)
|
|
12
|
+
// ============================================================================
|
|
13
|
+
const rawArgs = process.argv.slice(2);
|
|
14
|
+
const firstArg = rawArgs[0] || '';
|
|
15
|
+
// Check if this is a CLI command
|
|
16
|
+
const cliCommands = ['db:dump', 'db:export', 'db:import', 'query'];
|
|
17
|
+
const isCliCommand = cliCommands.includes(firstArg);
|
|
18
|
+
if (isCliCommand) {
|
|
19
|
+
// Delegate to CLI module
|
|
20
|
+
import('./cli.js').then(async (cli) => {
|
|
21
|
+
await cli.runCli(rawArgs);
|
|
22
|
+
}).catch((error) => {
|
|
23
|
+
console.error('CLI Error:', error instanceof Error ? error.message : String(error));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
});
|
|
21
26
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
else {
|
|
28
|
+
// Start MCP Server
|
|
29
|
+
startMcpServer();
|
|
25
30
|
}
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
31
|
+
// ============================================================================
|
|
32
|
+
// MCP Server
|
|
33
|
+
// ============================================================================
|
|
34
|
+
async function startMcpServer() {
|
|
35
|
+
const { Server } = await import('@modelcontextprotocol/sdk/server/index.js');
|
|
36
|
+
const { StdioServerTransport } = await import('@modelcontextprotocol/sdk/server/stdio.js');
|
|
37
|
+
const { CallToolRequestSchema, ListToolsRequestSchema, } = await import('@modelcontextprotocol/sdk/types.js');
|
|
38
|
+
const { parseArgs, validateArgs } = await import('./server/arg-parser.js');
|
|
39
|
+
const { getToolRegistry } = await import('./server/tool-registry.js');
|
|
40
|
+
const { handleToolCall } = await import('./server/tool-handlers.js');
|
|
41
|
+
const { initializeServer, startFileWatcher } = await import('./server/setup.js');
|
|
42
|
+
const { registerShutdownHandlers, performCleanup } = await import('./server/shutdown.js');
|
|
43
|
+
const { handleInitializationError, safeConsoleError } = await import('./utils/error-handler.js');
|
|
44
|
+
// Parse command-line arguments
|
|
45
|
+
const args = process.argv.slice(2);
|
|
46
|
+
const parsedArgs = parseArgs(args);
|
|
47
|
+
// Validate arguments (throws if invalid)
|
|
48
|
+
try {
|
|
49
|
+
validateArgs(parsedArgs);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error('Error:', error instanceof Error ? error.message : String(error));
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
// Create MCP server
|
|
56
|
+
const server = new Server({
|
|
57
|
+
name: 'mcp-sqlew',
|
|
58
|
+
version: '4.0.2',
|
|
59
|
+
}, {
|
|
60
|
+
capabilities: {
|
|
61
|
+
tools: {},
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
// Handle tool listing
|
|
65
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
66
|
+
return {
|
|
67
|
+
tools: getToolRegistry(),
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
// Handle tool execution
|
|
71
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
72
|
+
return await handleToolCall(request);
|
|
73
|
+
});
|
|
74
|
+
// Setup centralized global error handlers
|
|
75
|
+
registerShutdownHandlers();
|
|
76
|
+
// Start server
|
|
49
77
|
let debugLoggerInitialized = false;
|
|
50
78
|
try {
|
|
51
79
|
// Initialize server (database, config, project context)
|
|
@@ -87,11 +115,5 @@ async function main() {
|
|
|
87
115
|
process.exit(1);
|
|
88
116
|
}
|
|
89
117
|
}
|
|
90
|
-
|
|
91
|
-
// Use centralized initialization error handler (writes to log file)
|
|
92
|
-
safeConsoleError('\n❌ FATAL ERROR:');
|
|
93
|
-
handleInitializationError(error);
|
|
94
|
-
performCleanup();
|
|
95
|
-
process.exit(1);
|
|
96
|
-
});
|
|
118
|
+
export {};
|
|
97
119
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,10 @@ export interface DockerContainerConfig {
|
|
|
28
28
|
password: string;
|
|
29
29
|
database: string;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Database configurations for testing environments
|
|
33
|
+
*/
|
|
34
|
+
export declare const TEST_CONFIGS: Record<DatabaseType, Knex.Config | DockerContainerConfig>;
|
|
31
35
|
/**
|
|
32
36
|
* Get Knex configuration for the specified database type
|
|
33
37
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing-config.d.ts","sourceRoot":"","sources":["../../../src/tests/database/testing-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"testing-config.d.ts","sourceRoot":"","sources":["../../../src/tests/database/testing-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAiClF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,MAAM,CAiC/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,qBAAqB,CAG9F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAE1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,MAAM,CAYnF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,MAAM,CAGnF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,OAAO,CAWzF;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,EACvC,SAAS,SAAQ,GAChB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing-config.js","sourceRoot":"","sources":["../../../src/tests/database/testing-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAqBH;;GAEG;AACH,MAAM,YAAY,GAA8D;
|
|
1
|
+
{"version":3,"file":"testing-config.js","sourceRoot":"","sources":["../../../src/tests/database/testing-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* - Automatic cleanup
|
|
12
12
|
*/
|
|
13
13
|
import type { Knex } from 'knex';
|
|
14
|
-
import type
|
|
14
|
+
import { type DatabaseType } from '../../database/testing-config.js';
|
|
15
|
+
import { type DatabaseFormat } from '../../../utils/sql-dump/index.js';
|
|
15
16
|
/**
|
|
16
17
|
* Run the same test suite on MySQL, MariaDB, and PostgreSQL
|
|
17
18
|
*
|
|
@@ -117,4 +118,58 @@ export declare function getLayerId(db: Knex, layerName: string): Promise<number>
|
|
|
117
118
|
* @returns Scope ID
|
|
118
119
|
*/
|
|
119
120
|
export declare function getScopeId(db: Knex, scopeName: string): Promise<number>;
|
|
121
|
+
/**
|
|
122
|
+
* Source databases for cross-database migration testing
|
|
123
|
+
* Includes SQLite (local) + Docker databases (MySQL, MariaDB, PostgreSQL)
|
|
124
|
+
*/
|
|
125
|
+
export type CrossDbSourceType = 'sqlite' | DatabaseType;
|
|
126
|
+
/**
|
|
127
|
+
* Target database formats for SQL dump output
|
|
128
|
+
*/
|
|
129
|
+
export type CrossDbTargetFormat = DatabaseFormat;
|
|
130
|
+
/**
|
|
131
|
+
* Seed rich test data covering all v4 tables for migration testing
|
|
132
|
+
*
|
|
133
|
+
* Creates comprehensive test data including:
|
|
134
|
+
* - Master tables: layers, tags, scopes, task_statuses
|
|
135
|
+
* - Decisions with tags and scopes
|
|
136
|
+
* - Tasks with dependencies
|
|
137
|
+
* - Constraints
|
|
138
|
+
* - File changes
|
|
139
|
+
*
|
|
140
|
+
* @param db - Knex database connection
|
|
141
|
+
* @param projectId - Project ID to use (default: 1)
|
|
142
|
+
*/
|
|
143
|
+
export declare function seedRichTestData(db: Knex, projectId?: number): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* Execute SQL dump generation from a database
|
|
146
|
+
*
|
|
147
|
+
* @param db - Source Knex database connection
|
|
148
|
+
* @param targetFormat - Target database format (mysql, postgresql, sqlite)
|
|
149
|
+
* @returns Generated SQL dump string
|
|
150
|
+
*/
|
|
151
|
+
export declare function executeSqlDump(db: Knex, targetFormat: CrossDbTargetFormat): Promise<string>;
|
|
152
|
+
/**
|
|
153
|
+
* Verify sqlew access by checking row counts and basic CRUD operations
|
|
154
|
+
*
|
|
155
|
+
* @param db - Knex database connection to verify
|
|
156
|
+
* @param expectedCounts - Expected row counts per table
|
|
157
|
+
* @returns Verification result with details
|
|
158
|
+
*/
|
|
159
|
+
export declare function verifySqlewAccess(db: Knex, expectedCounts?: Record<string, number>): Promise<{
|
|
160
|
+
success: boolean;
|
|
161
|
+
tables: Record<string, {
|
|
162
|
+
count: number;
|
|
163
|
+
expected?: number;
|
|
164
|
+
match: boolean;
|
|
165
|
+
}>;
|
|
166
|
+
errors: string[];
|
|
167
|
+
}>;
|
|
168
|
+
/**
|
|
169
|
+
* Get row counts for all v4 tables
|
|
170
|
+
*
|
|
171
|
+
* @param db - Knex database connection
|
|
172
|
+
* @returns Record of table names to row counts
|
|
173
|
+
*/
|
|
174
|
+
export declare function getTableCounts(db: Knex): Promise<Record<string, number>>;
|
|
120
175
|
//# sourceMappingURL=test-harness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-harness.d.ts","sourceRoot":"","sources":["../../../../src/tests/docker/native/test-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"test-harness.d.ts","sourceRoot":"","sources":["../../../../src/tests/docker/native/test-harness.ts"],"names":[],"mappings":"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"}
|