sqlew 3.7.3 → 3.7.4
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 +184 -0
- package/LICENSE +0 -0
- package/README.md +2 -2
- package/assets/config.example.toml +0 -0
- package/assets/kanban-style.png +0 -0
- package/assets/sample-agents/README.md +0 -0
- package/assets/sample-agents/sqlew-architect.md +0 -0
- package/assets/sample-agents/sqlew-researcher.md +0 -0
- package/assets/sample-agents/sqlew-scrum-master.md +0 -0
- package/assets/schema.sql +0 -0
- package/assets/sqlew-logo.png +0 -0
- package/dist/cli/db-export.d.ts +29 -0
- package/dist/cli/db-export.d.ts.map +1 -0
- package/dist/cli/db-export.js +251 -0
- package/dist/cli/db-export.js.map +1 -0
- package/dist/cli/db-import.d.ts +31 -0
- package/dist/cli/db-import.d.ts.map +1 -0
- package/dist/cli/db-import.js +258 -0
- package/dist/cli/db-import.js.map +1 -0
- package/dist/cli.js +24 -2
- package/dist/cli.js.map +1 -1
- package/dist/tests/migrations/test-all-versions-real.js +3 -2
- package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
- package/dist/types.d.ts +121 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/exporter/export.d.ts +100 -0
- package/dist/utils/exporter/export.d.ts.map +1 -0
- package/dist/utils/exporter/export.js +363 -0
- package/dist/utils/exporter/export.js.map +1 -0
- package/dist/utils/importer/import.d.ts +29 -0
- package/dist/utils/importer/import.d.ts.map +1 -0
- package/dist/utils/importer/import.js +514 -0
- package/dist/utils/importer/import.js.map +1 -0
- package/dist/utils/importer/master-tables.d.ts +18 -0
- package/dist/utils/importer/master-tables.d.ts.map +1 -0
- package/dist/utils/importer/master-tables.js +255 -0
- package/dist/utils/importer/master-tables.js.map +1 -0
- package/dist/utils/importer/topological-sort.d.ts +61 -0
- package/dist/utils/importer/topological-sort.d.ts.map +1 -0
- package/dist/utils/importer/topological-sort.js +143 -0
- package/dist/utils/importer/topological-sort.js.map +1 -0
- package/docs/ACCEPTANCE_CRITERIA.md +0 -0
- package/docs/AI_AGENT_GUIDE.md +0 -0
- package/docs/ARCHITECTURE.md +0 -0
- package/docs/AUTO_FILE_TRACKING.md +0 -1
- package/docs/BEST_PRACTICES.md +0 -0
- package/docs/CONFIGURATION.md +0 -0
- package/docs/DATABASE_AUTH.md +1 -2
- package/docs/DECISION_CONTEXT.md +0 -0
- package/docs/DECISION_TO_TASK_MIGRATION_GUIDE.md +0 -0
- package/docs/GIT_AWARE_AUTO_COMPLETE.md +0 -0
- package/docs/SHARED_CONCEPTS.md +0 -0
- package/docs/SPECIALIZED_AGENTS.md +0 -0
- package/docs/TASK_ACTIONS.md +0 -0
- package/docs/TASK_DEPENDENCIES.md +0 -0
- package/docs/TASK_LINKING.md +0 -0
- package/docs/TASK_MIGRATION.md +0 -0
- package/docs/TASK_OVERVIEW.md +0 -0
- package/docs/TASK_PRUNING.md +0 -0
- package/docs/TASK_SYSTEM.md +0 -0
- package/docs/TOOL_REFERENCE.md +0 -2
- package/docs/TOOL_SELECTION.md +0 -0
- package/docs/WORKFLOWS.md +0 -0
- package/docs/{DATABASE_MIGRATION.md → cli/DATABASE_MIGRATION.md} +71 -32
- package/docs/cli/DATA_EXPORT_IMPORT.md +400 -0
- package/docs/cli/README.md +227 -0
- package/package.json +3 -2
- package/docs/BASEADAPTER_IMPLEMENTATION.md +0 -399
- package/docs/HELP_PREVIEW_COMPARISON.md +0 -259
- package/docs/MIGRATION_CHAIN.md +0 -293
- package/docs/MIGRATION_v2.md +0 -538
- package/docs/MIGRATION_v3.3.md +0 -602
- package/docs/MIGRATION_v3.6.0.md +0 -170
- package/docs/MULTI_PROJECT_ARCHITECTURE.md +0 -497
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,111 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [3.7.4] - 2025-11-08
|
|
11
|
+
|
|
12
|
+
### Added - Complete JSON Import/Export System
|
|
13
|
+
|
|
14
|
+
**Full-featured data migration system with smart ID remapping and dependency resolution**
|
|
15
|
+
|
|
16
|
+
#### New Features
|
|
17
|
+
|
|
18
|
+
- **db:import CLI Command** - Import project data from JSON exports with automatic ID remapping
|
|
19
|
+
- Smart conflict detection (skip-if-exists, project-name override)
|
|
20
|
+
- Dry-run mode for validation before import
|
|
21
|
+
- Comprehensive error messages with validation details
|
|
22
|
+
- **Topological Sort Algorithm** - Resolves task dependencies during import
|
|
23
|
+
- Circular dependency detection prevents import of invalid dependency graphs
|
|
24
|
+
- BFS-based topological sorting ensures dependencies imported before dependents
|
|
25
|
+
- Preserves all task relationships and blocking constraints
|
|
26
|
+
- **Smart ID Remapping** - Handles complex foreign key relationships
|
|
27
|
+
- Master table merge logic (reuse existing entries by name/path)
|
|
28
|
+
- Transaction table ID translation with bidirectional mapping
|
|
29
|
+
- Junction table relationship preservation
|
|
30
|
+
- Automatic orphan cleanup for invalid references
|
|
31
|
+
|
|
32
|
+
#### Import System Architecture
|
|
33
|
+
|
|
34
|
+
- **4 Core Modules**:
|
|
35
|
+
1. `import.ts` - Main orchestrator with transaction management
|
|
36
|
+
2. `master-tables.ts` - Master table merge logic (m_files, m_tags, m_scopes, etc.)
|
|
37
|
+
3. `topological-sort.ts` - Dependency graph analysis and sorting
|
|
38
|
+
4. `db-import.ts` - CLI command with argument parsing and validation
|
|
39
|
+
|
|
40
|
+
#### Data Migration Strategy
|
|
41
|
+
|
|
42
|
+
- **ID Remapping**: All imported data gets fresh auto-incremented IDs (no ID preservation)
|
|
43
|
+
- **Master Table Deduplication**: Reuse existing entries for agents, tags, scopes, files by name/path
|
|
44
|
+
- **Transaction Atomicity**: All-or-nothing semantics (full rollback on any error)
|
|
45
|
+
- **Project Isolation**: Each import creates independent project with no cross-contamination
|
|
46
|
+
|
|
47
|
+
#### CLI Examples
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Import project from JSON export
|
|
51
|
+
npx sqlew db:import --source=project-backup.json
|
|
52
|
+
|
|
53
|
+
# Import with custom project name
|
|
54
|
+
npx sqlew db:import --source=data.json --project-name=my-project
|
|
55
|
+
|
|
56
|
+
# Dry-run validation (no actual import)
|
|
57
|
+
npx sqlew db:import --source=data.json --dry-run
|
|
58
|
+
|
|
59
|
+
# Export project for migration
|
|
60
|
+
npx sqlew db:export --project=visualizer --output=visualizer-data.json
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
#### Technical Details
|
|
64
|
+
|
|
65
|
+
- **Batch Inserts** - 10-row batches to avoid SQLite UNION ALL limits
|
|
66
|
+
- **Foreign Key Validation** - Validates all foreign key references before insertion
|
|
67
|
+
- **View Handling** - Temporarily drops/restores views during schema changes
|
|
68
|
+
- **Idempotent Operations** - Safe to retry on failure
|
|
69
|
+
- **Error Recovery** - Detailed error messages with validation guidance
|
|
70
|
+
|
|
71
|
+
#### Use Cases
|
|
72
|
+
|
|
73
|
+
- **Multi-Project Single Database** - Consolidate multiple projects when database creation permissions are limited
|
|
74
|
+
- **Project Sharing** - Share context with team members or between machines
|
|
75
|
+
- **Cross-Database Migration** - Move projects between different databases (different machine, SQLite → MySQL, etc.)
|
|
76
|
+
|
|
77
|
+
**Note**: Import uses `--skip-if-exists=true` by default. This is NOT a backup/restore solution for the same database.
|
|
78
|
+
Use database-level backups (SQLite file copy, MySQL dump) for backup/restore scenarios.
|
|
79
|
+
|
|
80
|
+
#### Impact
|
|
81
|
+
|
|
82
|
+
- ✅ **Complete migration solution** - Export from one database, import to another
|
|
83
|
+
- ✅ **Multi-project support** - Merge multiple project exports into single database
|
|
84
|
+
- ✅ **Permission-friendly** - Works for users who can't create multiple databases
|
|
85
|
+
- ✅ **Data integrity** - Zero data loss, all relationships preserved
|
|
86
|
+
- ✅ **Production ready** - Comprehensive error handling and validation
|
|
87
|
+
- ✅ **Cross-database compatible** - JSON format works across SQLite, MySQL, PostgreSQL
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### Fixed - Multi-Project Migration (HOTFIX)
|
|
92
|
+
|
|
93
|
+
**Critical fix for v3.7.0-v3.7.2 migration in multi-project scenarios**
|
|
94
|
+
|
|
95
|
+
#### Problem
|
|
96
|
+
|
|
97
|
+
- Users upgrading from v3.6.10 to v3.7.0+ could end up with duplicate projects
|
|
98
|
+
- Migration 20251104000000 created project #1 with fake name "default-project"
|
|
99
|
+
- Users creating second project manually resulted in namespace conflicts
|
|
100
|
+
|
|
101
|
+
#### Solution
|
|
102
|
+
|
|
103
|
+
- Enhanced migration idempotency checks
|
|
104
|
+
- Improved project consolidation logic
|
|
105
|
+
- Better handling of existing project scenarios
|
|
106
|
+
|
|
107
|
+
#### Impact
|
|
108
|
+
|
|
109
|
+
- ✅ **Safe multi-project migration** - No duplicate projects created
|
|
110
|
+
- ✅ **Backward compatible** - Works for both fresh installs and upgrades
|
|
111
|
+
- ✅ **Data preservation** - All existing data maintained correctly
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
10
115
|
## [3.7.3] - 2025-11-06
|
|
11
116
|
|
|
12
117
|
### Fixed - Master Tables Namespace Collision Bug
|
|
@@ -582,6 +687,85 @@ if (!hasProjectId) {
|
|
|
582
687
|
|
|
583
688
|
---
|
|
584
689
|
|
|
690
|
+
### Added - Environment Variable Support for Project Root
|
|
691
|
+
|
|
692
|
+
**New `SQLEW_PROJECT_ROOT` environment variable for project-relative databases**
|
|
693
|
+
|
|
694
|
+
#### Problem
|
|
695
|
+
- Junie AI and other MCP clients require absolute paths in configuration
|
|
696
|
+
- Users had to hardcode project-specific paths in MCP server config
|
|
697
|
+
- No easy way to use project-relative database paths
|
|
698
|
+
|
|
699
|
+
#### Solution
|
|
700
|
+
- Added `SQLEW_PROJECT_ROOT` environment variable support (inspired by serena-mcp pattern)
|
|
701
|
+
- MCP clients can now pass project directory via environment variable
|
|
702
|
+
- Database automatically created at `$SQLEW_PROJECT_ROOT/.sqlew/sqlew.db`
|
|
703
|
+
|
|
704
|
+
#### Priority Order
|
|
705
|
+
1. `SQLEW_PROJECT_ROOT` environment variable (NEW - highest priority)
|
|
706
|
+
2. `--db-path` CLI argument (absolute path)
|
|
707
|
+
3. `--config-path` CLI argument (absolute path)
|
|
708
|
+
4. `database.path` in config file (absolute path)
|
|
709
|
+
5. `process.cwd()` fallback
|
|
710
|
+
|
|
711
|
+
#### Junie AI Configuration Example
|
|
712
|
+
```json
|
|
713
|
+
{
|
|
714
|
+
"mcpServers": {
|
|
715
|
+
"sqlew": {
|
|
716
|
+
"command": "npx",
|
|
717
|
+
"args": ["sqlew"],
|
|
718
|
+
"env": {
|
|
719
|
+
"SQLEW_PROJECT_ROOT": "{projectDir}"
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
**Note:** Junie AI uses `{projectDir}` variable which expands to the current project's absolute path. This ensures each project gets its own isolated database without hardcoded paths. Other MCP clients may use different variable names like `${workspaceFolder}` (VS Code/Cline) - check your client's documentation.
|
|
727
|
+
|
|
728
|
+
#### Impact
|
|
729
|
+
- ✅ **Project-relative databases** without hardcoded absolute paths
|
|
730
|
+
- ✅ **Cleaner MCP configuration** (no per-project path updates needed)
|
|
731
|
+
- ✅ **Compatible with Junie AI, Claude Desktop, and other MCP clients**
|
|
732
|
+
- ✅ **No breaking changes** (environment variable is optional)
|
|
733
|
+
|
|
734
|
+
---
|
|
735
|
+
|
|
736
|
+
### Fixed - MCP Protocol Compliance (EPIPE Fix)
|
|
737
|
+
|
|
738
|
+
**Eliminated console output for strict JSON-RPC protocol compliance**
|
|
739
|
+
|
|
740
|
+
#### Problem
|
|
741
|
+
- EPIPE (broken pipe) errors when running with Junie AI on Windows
|
|
742
|
+
- Console output to stdout/stderr violated MCP JSON-RPC protocol requirements
|
|
743
|
+
- Strict MCP clients (like Junie AI) expect pure JSON-RPC on stdio streams
|
|
744
|
+
|
|
745
|
+
#### Changes
|
|
746
|
+
- **Redirected all diagnostic output to debug log file** - stdout/stderr reserved exclusively for JSON-RPC
|
|
747
|
+
- Modified `safeConsoleError()` to write to debug log instead of stderr
|
|
748
|
+
- Replaced 50+ console.log/console.error calls across codebase:
|
|
749
|
+
- `src/database.ts` - Database initialization messages
|
|
750
|
+
- `src/watcher/file-watcher.ts` - File watcher status and events
|
|
751
|
+
- `src/watcher/gitignore-parser.ts` - .gitignore loading warnings
|
|
752
|
+
- `src/tools/tasks.ts` - Task file registration warnings
|
|
753
|
+
- `src/config/example-generator.ts` - First launch messages
|
|
754
|
+
|
|
755
|
+
#### Technical Details
|
|
756
|
+
- **MCP Protocol Requirement**: stdin/stdout/stderr must carry only JSON-RPC messages
|
|
757
|
+
- **Debug Logging**: All diagnostic messages now use `debugLog()` with appropriate levels (INFO, WARN, ERROR)
|
|
758
|
+
- **Zero stdout pollution**: Server starts silently, waits for JSON-RPC requests
|
|
759
|
+
- **Tested with Junie AI**: Confirmed no EPIPE errors on Windows
|
|
760
|
+
|
|
761
|
+
#### Impact
|
|
762
|
+
- ✅ **Works with strict MCP clients** (Junie AI, etc.)
|
|
763
|
+
- ✅ **Maintains full diagnostics** via debug log file
|
|
764
|
+
- ✅ **Pure JSON-RPC protocol** compliance
|
|
765
|
+
- ✅ **No breaking changes** to MCP tool functionality
|
|
766
|
+
|
|
767
|
+
---
|
|
768
|
+
|
|
585
769
|
### Fixed - Windows Absolute Path Handling
|
|
586
770
|
|
|
587
771
|
**Fixed path normalization for Windows environments**
|
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -219,7 +219,7 @@ All tools support:
|
|
|
219
219
|
### For Developers
|
|
220
220
|
|
|
221
221
|
- [Configuration Guide](docs/CONFIGURATION.md) - TOML config file setup
|
|
222
|
-
- [
|
|
222
|
+
- [CLI Mode Overview](docs/cli/README.md) - Database migration, export/import commands
|
|
223
223
|
- [Building from Source](docs/ARCHITECTURE.md#development) - Setup instructions
|
|
224
224
|
- [Migration Guides](docs/MIGRATION_v2.md) - Version upgrade guides
|
|
225
225
|
|
|
@@ -245,7 +245,7 @@ Support development via [GitHub Sponsors](https://github.com/sponsors/sin5ddd) -
|
|
|
245
245
|
|
|
246
246
|
## Version
|
|
247
247
|
|
|
248
|
-
Current version: **3.7.
|
|
248
|
+
Current version: **3.7.4**
|
|
249
249
|
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
250
250
|
|
|
251
251
|
## License
|
|
File without changes
|
package/assets/kanban-style.png
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/assets/schema.sql
CHANGED
|
File without changes
|
package/assets/sqlew-logo.png
CHANGED
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* db:export CLI command - JSON data-only export for append-import
|
|
3
|
+
* Complementary to db:dump (SQL export with schema)
|
|
4
|
+
*/
|
|
5
|
+
interface DbExportArgs {
|
|
6
|
+
project?: string;
|
|
7
|
+
output?: string;
|
|
8
|
+
'db-path'?: string;
|
|
9
|
+
config?: string;
|
|
10
|
+
help?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Show help message for db:export command
|
|
14
|
+
*/
|
|
15
|
+
export declare function showDbExportHelp(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Parse command-line arguments for db:export
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseDbExportArgs(args: string[]): DbExportArgs;
|
|
20
|
+
/**
|
|
21
|
+
* Execute db:export command
|
|
22
|
+
*/
|
|
23
|
+
export declare function executeDbExport(args: DbExportArgs): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Main entry point for db:export command
|
|
26
|
+
*/
|
|
27
|
+
export declare function dbExportCommand(args: string[]): Promise<void>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=db-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-export.d.ts","sourceRoot":"","sources":["../../src/cli/db-export.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAoDvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAyC9D;AAWD;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgIvE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnE"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* db:export CLI command - JSON data-only export for append-import
|
|
3
|
+
* Complementary to db:dump (SQL export with schema)
|
|
4
|
+
*/
|
|
5
|
+
import knex from 'knex';
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import knexConfig from '../knexfile.js';
|
|
9
|
+
import { generateJsonExport } from '../utils/exporter/export.js';
|
|
10
|
+
import { loadConfigFile } from '../config/loader.js';
|
|
11
|
+
/**
|
|
12
|
+
* Show help message for db:export command
|
|
13
|
+
*/
|
|
14
|
+
export function showDbExportHelp() {
|
|
15
|
+
console.log(`
|
|
16
|
+
sqlew db:export - Export project data to JSON format
|
|
17
|
+
|
|
18
|
+
USAGE:
|
|
19
|
+
npx sqlew db:export [options]
|
|
20
|
+
|
|
21
|
+
OPTIONS:
|
|
22
|
+
--project <name> Export specific project by name (required for multi-project databases)
|
|
23
|
+
If not specified, exports all projects
|
|
24
|
+
--output <file> Output file path (default: stdout)
|
|
25
|
+
--db-path <path> SQLite database file path (overrides config file)
|
|
26
|
+
--config <path> Config file path (default: auto-detect .sqlew/config.toml or config.toml)
|
|
27
|
+
--help Show this help message
|
|
28
|
+
|
|
29
|
+
CONFIG FILE:
|
|
30
|
+
The command automatically loads database settings from config.toml.
|
|
31
|
+
Priority: CLI args > config file > environment variables > defaults
|
|
32
|
+
|
|
33
|
+
EXAMPLES:
|
|
34
|
+
# Export specific project to file
|
|
35
|
+
npx sqlew db:export --project=visualizer --output=visualizer-data.json
|
|
36
|
+
|
|
37
|
+
# Export all projects
|
|
38
|
+
npx sqlew db:export --output=full-backup.json
|
|
39
|
+
|
|
40
|
+
# Export to stdout (pipe to file or another command)
|
|
41
|
+
npx sqlew db:export --project=myproject
|
|
42
|
+
|
|
43
|
+
# Export with explicit database path
|
|
44
|
+
npx sqlew db:export --project=myproject --db-path=.sqlew/sqlew.db --output=data.json
|
|
45
|
+
|
|
46
|
+
EXPORT FORMAT:
|
|
47
|
+
The exported JSON contains:
|
|
48
|
+
- Project metadata
|
|
49
|
+
- Master tables (agents, files, tags, etc.) - only entries used by project
|
|
50
|
+
- Transaction tables (decisions, tasks, constraints, etc.) - filtered by project_id
|
|
51
|
+
- Statistics (decision count, task count, etc.)
|
|
52
|
+
|
|
53
|
+
IMPORT WORKFLOW:
|
|
54
|
+
1. Export data from source database:
|
|
55
|
+
npx sqlew db:export --project=visualizer --output=data.json
|
|
56
|
+
|
|
57
|
+
2. Copy JSON file to target project directory
|
|
58
|
+
|
|
59
|
+
3. Import data into target database:
|
|
60
|
+
npx sqlew db:import --source=data.json --project-name=visualizer-v2
|
|
61
|
+
|
|
62
|
+
SEE ALSO:
|
|
63
|
+
npx sqlew db:dump --help # SQL export with schema (for full database migration)
|
|
64
|
+
npx sqlew db:import --help # Import JSON data (append to existing database)
|
|
65
|
+
`);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Parse command-line arguments for db:export
|
|
69
|
+
*/
|
|
70
|
+
export function parseDbExportArgs(args) {
|
|
71
|
+
const parsed = {};
|
|
72
|
+
for (let i = 0; i < args.length; i++) {
|
|
73
|
+
const arg = args[i];
|
|
74
|
+
if (arg.startsWith('--')) {
|
|
75
|
+
// Handle both --key=value and --key value formats
|
|
76
|
+
let key;
|
|
77
|
+
let value;
|
|
78
|
+
if (arg.includes('=')) {
|
|
79
|
+
// --key=value format
|
|
80
|
+
const [k, ...v] = arg.slice(2).split('=');
|
|
81
|
+
key = k;
|
|
82
|
+
value = v.join('='); // Rejoin in case value contains '='
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// --key value format
|
|
86
|
+
key = arg.slice(2);
|
|
87
|
+
value = args[i + 1];
|
|
88
|
+
}
|
|
89
|
+
if (key === 'help') {
|
|
90
|
+
parsed.help = true;
|
|
91
|
+
}
|
|
92
|
+
else if (value && !value.startsWith('--')) {
|
|
93
|
+
if (key === 'db-path') {
|
|
94
|
+
parsed['db-path'] = value;
|
|
95
|
+
}
|
|
96
|
+
else if (key === 'config') {
|
|
97
|
+
parsed.config = value;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
parsed[key] = value;
|
|
101
|
+
}
|
|
102
|
+
// Only skip next arg if we used --key value format (not --key=value)
|
|
103
|
+
if (!arg.includes('=')) {
|
|
104
|
+
i++;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return parsed;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Validate db:export arguments
|
|
113
|
+
*/
|
|
114
|
+
function validateArgs(args) {
|
|
115
|
+
// No required arguments - project name is optional
|
|
116
|
+
// If not specified, exports all projects
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Execute db:export command
|
|
121
|
+
*/
|
|
122
|
+
export async function executeDbExport(args) {
|
|
123
|
+
// Show help if requested
|
|
124
|
+
if (args.help) {
|
|
125
|
+
showDbExportHelp();
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// Validate arguments
|
|
129
|
+
const validationError = validateArgs(args);
|
|
130
|
+
if (validationError) {
|
|
131
|
+
console.error(validationError);
|
|
132
|
+
console.error('Run "npx sqlew db:export --help" for usage information.');
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
const projectName = args.project;
|
|
136
|
+
const output = args.output;
|
|
137
|
+
// Load config file - prioritize: explicit --config > default locations
|
|
138
|
+
console.error(`Loading config file...`);
|
|
139
|
+
const fileConfig = loadConfigFile(process.cwd(), args.config);
|
|
140
|
+
if (fileConfig.database) {
|
|
141
|
+
console.error(`Config loaded: database.type = ${fileConfig.database.type || 'sqlite'}`);
|
|
142
|
+
if (fileConfig.database.path) {
|
|
143
|
+
console.error(`Config loaded: database.path = ${fileConfig.database.path}`);
|
|
144
|
+
}
|
|
145
|
+
if (fileConfig.database.connection) {
|
|
146
|
+
console.error(`Config loaded: database.connection configured`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Determine source database - normalize 'postgres' to 'postgresql'
|
|
150
|
+
const configDbType = fileConfig.database?.type || 'sqlite';
|
|
151
|
+
const sourceDb = configDbType === 'postgres' ? 'postgresql' : configDbType;
|
|
152
|
+
try {
|
|
153
|
+
console.error(`Reading from ${sourceDb.toUpperCase()} database...`);
|
|
154
|
+
if (projectName) {
|
|
155
|
+
console.error(`Exporting project: ${projectName}`);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.error(`Exporting all projects`);
|
|
159
|
+
}
|
|
160
|
+
// Create Knex instance based on source database
|
|
161
|
+
let db;
|
|
162
|
+
if (sourceDb === 'sqlite') {
|
|
163
|
+
// SQLite source - prioritize: CLI arg > config file (default) > env var > hardcoded default
|
|
164
|
+
const dbPath = args['db-path'] || fileConfig.database?.path || process.env.SQLEW_DB_PATH || '.sqlew/sqlew.db';
|
|
165
|
+
const resolvedDbPath = path.resolve(process.cwd(), dbPath);
|
|
166
|
+
// Check if database exists
|
|
167
|
+
if (!fs.existsSync(resolvedDbPath)) {
|
|
168
|
+
console.error(`Error: SQLite database not found at ${resolvedDbPath}`);
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
const config = { ...knexConfig.development };
|
|
172
|
+
config.connection = { filename: resolvedDbPath };
|
|
173
|
+
db = knex(config);
|
|
174
|
+
console.error(`Connected to SQLite: ${resolvedDbPath}`);
|
|
175
|
+
}
|
|
176
|
+
else if (sourceDb === 'mysql') {
|
|
177
|
+
// MySQL source - use config file (default) or environment variables
|
|
178
|
+
const config = { ...knexConfig.mysql };
|
|
179
|
+
if (fileConfig.database?.connection) {
|
|
180
|
+
// Override with config file settings
|
|
181
|
+
config.connection = {
|
|
182
|
+
host: fileConfig.database.connection.host || '127.0.0.1',
|
|
183
|
+
port: fileConfig.database.connection.port || 3306,
|
|
184
|
+
user: fileConfig.database.auth?.user || 'root',
|
|
185
|
+
password: fileConfig.database.auth?.password || '',
|
|
186
|
+
database: fileConfig.database.connection.database || 'mcp_context',
|
|
187
|
+
charset: 'utf8mb4',
|
|
188
|
+
};
|
|
189
|
+
console.error(`Using MySQL connection from config file`);
|
|
190
|
+
}
|
|
191
|
+
db = knex(config);
|
|
192
|
+
const conn = config.connection;
|
|
193
|
+
console.error(`Connected to MySQL: ${conn.host}:${conn.port}/${conn.database}`);
|
|
194
|
+
}
|
|
195
|
+
else if (sourceDb === 'postgresql') {
|
|
196
|
+
// PostgreSQL source - use config file (default) or environment variables
|
|
197
|
+
const config = { ...knexConfig.postgresql };
|
|
198
|
+
if (fileConfig.database?.connection) {
|
|
199
|
+
// Override with config file settings
|
|
200
|
+
config.connection = {
|
|
201
|
+
host: fileConfig.database.connection.host || 'localhost',
|
|
202
|
+
port: fileConfig.database.connection.port || 5432,
|
|
203
|
+
user: fileConfig.database.auth?.user || 'postgres',
|
|
204
|
+
password: fileConfig.database.auth?.password || '',
|
|
205
|
+
database: fileConfig.database.connection.database || 'mcp_context',
|
|
206
|
+
};
|
|
207
|
+
console.error(`Using PostgreSQL connection from config file`);
|
|
208
|
+
}
|
|
209
|
+
db = knex(config);
|
|
210
|
+
const conn = config.connection;
|
|
211
|
+
console.error(`Connected to PostgreSQL: ${conn.host}:${conn.port}/${conn.database}`);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
console.error(`Error: Unsupported source database: ${sourceDb}`);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
// Generate JSON export
|
|
219
|
+
const json = await generateJsonExport(db, {
|
|
220
|
+
projectName,
|
|
221
|
+
});
|
|
222
|
+
// Output to file or stdout
|
|
223
|
+
if (output) {
|
|
224
|
+
fs.writeFileSync(output, json, 'utf-8');
|
|
225
|
+
console.error(`✓ JSON export written to: ${output}`);
|
|
226
|
+
console.error(`\nNext steps:`);
|
|
227
|
+
console.error(` 1. Copy file to target project directory`);
|
|
228
|
+
console.error(` 2. Import data: npx sqlew db:import --source=${output}`);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
// Output to stdout (user can pipe to file)
|
|
232
|
+
console.log(json);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
finally {
|
|
236
|
+
await db.destroy();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
console.error('Error generating JSON export:', error instanceof Error ? error.message : String(error));
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Main entry point for db:export command
|
|
246
|
+
*/
|
|
247
|
+
export async function dbExportCommand(args) {
|
|
248
|
+
const parsedArgs = parseDbExportArgs(args);
|
|
249
|
+
await executeDbExport(parsedArgs);
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=db-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-export.js","sourceRoot":"","sources":["../../src/cli/db-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* db:import CLI command - JSON data import for multi-project migration
|
|
3
|
+
* Complements db:export (JSON export) and db:dump (SQL export)
|
|
4
|
+
*/
|
|
5
|
+
interface DbImportArgs {
|
|
6
|
+
source: string;
|
|
7
|
+
'project-name'?: string;
|
|
8
|
+
'skip-if-exists'?: boolean;
|
|
9
|
+
'dry-run'?: boolean;
|
|
10
|
+
'db-path'?: string;
|
|
11
|
+
config?: string;
|
|
12
|
+
help?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Show help message for db:import command
|
|
16
|
+
*/
|
|
17
|
+
export declare function showDbImportHelp(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Parse command-line arguments for db:import
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseDbImportArgs(args: string[]): DbImportArgs;
|
|
22
|
+
/**
|
|
23
|
+
* Execute db:import command
|
|
24
|
+
*/
|
|
25
|
+
export declare function executeDbImport(args: DbImportArgs): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Main entry point for db:import command
|
|
28
|
+
*/
|
|
29
|
+
export declare function dbImportCommand(args: string[]): Promise<void>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=db-import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-import.d.ts","sourceRoot":"","sources":["../../src/cli/db-import.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAqDvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAiD9D;AAiBD;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HvE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnE"}
|