@proletariat/cli 0.3.94 → 0.3.95
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/dist/commands/agent/cleanup.d.ts +3 -4
- package/dist/commands/agent/cleanup.js +5 -4
- package/dist/commands/agent/cleanup.js.map +1 -1
- package/dist/commands/agent/gc.d.ts +3 -4
- package/dist/commands/agent/gc.js +5 -4
- package/dist/commands/agent/gc.js.map +1 -1
- package/dist/commands/agent/index.d.ts +3 -4
- package/dist/commands/agent/index.js +5 -4
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/list.d.ts +3 -4
- package/dist/commands/agent/list.js +5 -4
- package/dist/commands/agent/list.js.map +1 -1
- package/dist/commands/agent/remove.d.ts +3 -4
- package/dist/commands/agent/remove.js +5 -4
- package/dist/commands/agent/remove.js.map +1 -1
- package/dist/commands/agent/staff/index.d.ts +3 -4
- package/dist/commands/agent/staff/index.js +5 -4
- package/dist/commands/agent/staff/index.js.map +1 -1
- package/dist/commands/agent/staff/remove.d.ts +3 -4
- package/dist/commands/agent/staff/remove.js +5 -4
- package/dist/commands/agent/staff/remove.js.map +1 -1
- package/dist/commands/agent/status.d.ts +3 -4
- package/dist/commands/agent/status.js +5 -4
- package/dist/commands/agent/status.js.map +1 -1
- package/dist/commands/agent/visit.d.ts +3 -4
- package/dist/commands/agent/visit.js +5 -4
- package/dist/commands/agent/visit.js.map +1 -1
- package/dist/commands/branch/create.js +1 -12
- package/dist/commands/branch/create.js.map +1 -1
- package/dist/commands/branch/list.d.ts +3 -4
- package/dist/commands/branch/list.js +5 -4
- package/dist/commands/branch/list.js.map +1 -1
- package/dist/commands/branch/validate.d.ts +3 -4
- package/dist/commands/branch/validate.js +6 -5
- package/dist/commands/branch/validate.js.map +1 -1
- package/dist/commands/branch/where.d.ts +3 -4
- package/dist/commands/branch/where.js +5 -4
- package/dist/commands/branch/where.js.map +1 -1
- package/dist/commands/commit.js +1 -1
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/db/backup.d.ts +16 -0
- package/dist/commands/db/backup.js +125 -0
- package/dist/commands/db/backup.js.map +1 -0
- package/dist/commands/db/repair.js +8 -11
- package/dist/commands/db/repair.js.map +1 -1
- package/dist/commands/execution/config.d.ts +3 -4
- package/dist/commands/execution/config.js +5 -4
- package/dist/commands/execution/config.js.map +1 -1
- package/dist/commands/execution/index.d.ts +3 -4
- package/dist/commands/execution/index.js +5 -4
- package/dist/commands/execution/index.js.map +1 -1
- package/dist/commands/execution/list.d.ts +3 -4
- package/dist/commands/execution/list.js +5 -4
- package/dist/commands/execution/list.js.map +1 -1
- package/dist/commands/execution/logs.d.ts +3 -4
- package/dist/commands/execution/logs.js +5 -4
- package/dist/commands/execution/logs.js.map +1 -1
- package/dist/commands/execution/stop.d.ts +3 -4
- package/dist/commands/execution/stop.js +5 -4
- package/dist/commands/execution/stop.js.map +1 -1
- package/dist/commands/execution/view.d.ts +3 -4
- package/dist/commands/execution/view.js +5 -4
- package/dist/commands/execution/view.js.map +1 -1
- package/dist/commands/hook/export.d.ts +3 -4
- package/dist/commands/hook/export.js +5 -4
- package/dist/commands/hook/export.js.map +1 -1
- package/dist/commands/hook/fire.d.ts +3 -4
- package/dist/commands/hook/fire.js +5 -4
- package/dist/commands/hook/fire.js.map +1 -1
- package/dist/commands/hook/list.d.ts +3 -4
- package/dist/commands/hook/list.js +5 -4
- package/dist/commands/hook/list.js.map +1 -1
- package/dist/commands/hook/preset.d.ts +3 -4
- package/dist/commands/hook/preset.js +5 -4
- package/dist/commands/hook/preset.js.map +1 -1
- package/dist/commands/orchestrate/index.d.ts +3 -4
- package/dist/commands/orchestrate/index.js +5 -4
- package/dist/commands/orchestrate/index.js.map +1 -1
- package/dist/commands/orchestrator/index.d.ts +3 -4
- package/dist/commands/orchestrator/index.js +5 -4
- package/dist/commands/orchestrator/index.js.map +1 -1
- package/dist/commands/pr/checks.d.ts +3 -4
- package/dist/commands/pr/checks.js +5 -4
- package/dist/commands/pr/checks.js.map +1 -1
- package/dist/commands/repo/add.d.ts +3 -4
- package/dist/commands/repo/add.js +5 -4
- package/dist/commands/repo/add.js.map +1 -1
- package/dist/commands/repo/create.d.ts +3 -4
- package/dist/commands/repo/create.js +5 -4
- package/dist/commands/repo/create.js.map +1 -1
- package/dist/commands/repo/fix-remotes.d.ts +3 -4
- package/dist/commands/repo/fix-remotes.js +5 -4
- package/dist/commands/repo/fix-remotes.js.map +1 -1
- package/dist/commands/repo/index.d.ts +3 -4
- package/dist/commands/repo/index.js +5 -4
- package/dist/commands/repo/index.js.map +1 -1
- package/dist/commands/repo/list.d.ts +3 -4
- package/dist/commands/repo/list.js +5 -4
- package/dist/commands/repo/list.js.map +1 -1
- package/dist/commands/session/cleanup.d.ts +3 -4
- package/dist/commands/session/cleanup.js +5 -4
- package/dist/commands/session/cleanup.js.map +1 -1
- package/dist/commands/session/create.d.ts +3 -4
- package/dist/commands/session/create.js +5 -4
- package/dist/commands/session/create.js.map +1 -1
- package/dist/commands/session/exec.d.ts +3 -4
- package/dist/commands/session/exec.js +5 -4
- package/dist/commands/session/exec.js.map +1 -1
- package/dist/commands/session/health.js +18 -0
- package/dist/commands/session/health.js.map +1 -1
- package/dist/commands/session/index.d.ts +3 -4
- package/dist/commands/session/index.js +9 -4
- package/dist/commands/session/index.js.map +1 -1
- package/dist/commands/session/inspect.d.ts +3 -4
- package/dist/commands/session/inspect.js +5 -4
- package/dist/commands/session/inspect.js.map +1 -1
- package/dist/commands/session/list.d.ts +3 -4
- package/dist/commands/session/list.js +19 -5
- package/dist/commands/session/list.js.map +1 -1
- package/dist/commands/session/prune.d.ts +3 -4
- package/dist/commands/session/prune.js +5 -4
- package/dist/commands/session/prune.js.map +1 -1
- package/dist/commands/session/report.d.ts +25 -5
- package/dist/commands/session/report.js +201 -5
- package/dist/commands/session/report.js.map +1 -1
- package/dist/commands/session/restart.d.ts +3 -4
- package/dist/commands/session/restart.js +5 -4
- package/dist/commands/session/restart.js.map +1 -1
- package/dist/commands/session/watch.d.ts +17 -0
- package/dist/commands/session/watch.js +139 -0
- package/dist/commands/session/watch.js.map +1 -0
- package/dist/commands/ticket/index.d.ts +3 -4
- package/dist/commands/ticket/index.js +5 -4
- package/dist/commands/ticket/index.js.map +1 -1
- package/dist/commands/web.d.ts +20 -0
- package/dist/commands/web.js +82 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/commands/work/hooks/add.d.ts +3 -4
- package/dist/commands/work/hooks/add.js +5 -4
- package/dist/commands/work/hooks/add.js.map +1 -1
- package/dist/commands/work/hooks/list.d.ts +3 -4
- package/dist/commands/work/hooks/list.js +5 -4
- package/dist/commands/work/hooks/list.js.map +1 -1
- package/dist/commands/work/hooks/toggle.d.ts +3 -4
- package/dist/commands/work/hooks/toggle.js +5 -4
- package/dist/commands/work/hooks/toggle.js.map +1 -1
- package/dist/commands/work/peek.d.ts +3 -4
- package/dist/commands/work/peek.js +5 -4
- package/dist/commands/work/peek.js.map +1 -1
- package/dist/commands/work/propose.d.ts +23 -0
- package/dist/commands/work/propose.js +57 -0
- package/dist/commands/work/propose.js.map +1 -0
- package/dist/commands/work/ready.js +2 -2
- package/dist/commands/work/ready.js.map +1 -1
- package/dist/commands/work/rebase.d.ts +1 -1
- package/dist/commands/work/rebase.js +52 -49
- package/dist/commands/work/rebase.js.map +1 -1
- package/dist/commands/work/ship.d.ts +6 -0
- package/dist/commands/work/ship.js +217 -48
- package/dist/commands/work/ship.js.map +1 -1
- package/dist/commands/work/start.js +3 -6
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/stop.d.ts +3 -4
- package/dist/commands/work/stop.js +5 -4
- package/dist/commands/work/stop.js.map +1 -1
- package/dist/hooks/init.js +11 -1
- package/dist/hooks/init.js.map +1 -1
- package/dist/lib/branch/index.d.ts +6 -5
- package/dist/lib/branch/index.js +8 -13
- package/dist/lib/branch/index.js.map +1 -1
- package/dist/lib/dashboard/html.d.ts +2 -1
- package/dist/lib/dashboard/html.js +150 -522
- package/dist/lib/dashboard/html.js.map +1 -1
- package/dist/lib/database/db-safety.d.ts +48 -9
- package/dist/lib/database/db-safety.js +308 -43
- package/dist/lib/database/db-safety.js.map +1 -1
- package/dist/lib/database/index.d.ts +1 -1
- package/dist/lib/database/index.js +1 -1
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/database/workspace.js +3 -1
- package/dist/lib/database/workspace.js.map +1 -1
- package/dist/lib/execution/runners/docker.js +8 -0
- package/dist/lib/execution/runners/docker.js.map +1 -1
- package/dist/lib/execution/runners/prompt-builder.js +9 -6
- package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
- package/dist/lib/execution/spawner.js +2 -4
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/storage.d.ts +29 -1
- package/dist/lib/execution/storage.js +77 -0
- package/dist/lib/execution/storage.js.map +1 -1
- package/dist/lib/execution/types.d.ts +17 -6
- package/dist/lib/execution/types.js +10 -7
- package/dist/lib/execution/types.js.map +1 -1
- package/dist/lib/machine-config.d.ts +8 -0
- package/dist/lib/machine-config.js +37 -0
- package/dist/lib/machine-config.js.map +1 -1
- package/dist/lib/orchestrate/poller.d.ts +1 -1
- package/dist/lib/orchestrate/poller.js +1 -1
- package/dist/lib/pmo/storage/base.js +5 -3
- package/dist/lib/pmo/storage/base.js.map +1 -1
- package/dist/lib/providers/index.d.ts +1 -0
- package/dist/lib/providers/index.js +1 -0
- package/dist/lib/providers/index.js.map +1 -1
- package/dist/lib/providers/resolver.js +16 -0
- package/dist/lib/providers/resolver.js.map +1 -1
- package/dist/lib/providers/trello-provider.d.ts +28 -0
- package/dist/lib/providers/trello-provider.js +381 -0
- package/dist/lib/providers/trello-provider.js.map +1 -0
- package/dist/lib/session/heartbeat.d.ts +45 -0
- package/dist/lib/session/heartbeat.js +150 -0
- package/dist/lib/session/heartbeat.js.map +1 -0
- package/dist/lib/session/index.d.ts +7 -0
- package/dist/lib/session/index.js +8 -0
- package/dist/lib/session/index.js.map +1 -0
- package/dist/lib/session/watcher.d.ts +79 -0
- package/dist/lib/session/watcher.js +142 -0
- package/dist/lib/session/watcher.js.map +1 -0
- package/dist/lib/shipping/auto-merge.d.ts +57 -0
- package/dist/lib/shipping/auto-merge.js +311 -0
- package/dist/lib/shipping/auto-merge.js.map +1 -0
- package/dist/lib/shipping/github.d.ts +68 -0
- package/dist/lib/shipping/github.js +217 -0
- package/dist/lib/shipping/github.js.map +1 -0
- package/dist/lib/shipping/index.d.ts +13 -0
- package/dist/lib/shipping/index.js +11 -0
- package/dist/lib/shipping/index.js.map +1 -0
- package/dist/lib/shipping/rebase.d.ts +35 -0
- package/dist/lib/shipping/rebase.js +107 -0
- package/dist/lib/shipping/rebase.js.map +1 -0
- package/dist/lib/shipping/types.d.ts +181 -0
- package/dist/lib/shipping/types.js +9 -0
- package/dist/lib/shipping/types.js.map +1 -0
- package/dist/lib/trello/client.d.ts +1 -0
- package/dist/lib/trello/client.js +6 -0
- package/dist/lib/trello/client.js.map +1 -1
- package/oclif.manifest.json +908 -1009
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/lib/dashboard/html.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/lib/dashboard/html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2SD,CAAA;AACR,CAAC"}
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides:
|
|
5
5
|
* - WAL journal mode configuration
|
|
6
|
-
* -
|
|
6
|
+
* - Timestamped backup in .proletariat/backups/ (keeps last 5)
|
|
7
7
|
* - Integrity check on open with auto-recovery
|
|
8
8
|
* - Manual repair via dump/reimport
|
|
9
|
+
* - Migration of legacy scattered backup files
|
|
9
10
|
*
|
|
10
|
-
* See: PRLT-1081
|
|
11
|
+
* See: PRLT-1081, PRLT-1154
|
|
11
12
|
*/
|
|
12
13
|
import Database from 'better-sqlite3';
|
|
13
14
|
/**
|
|
@@ -16,18 +17,56 @@ import Database from 'better-sqlite3';
|
|
|
16
17
|
* more resistant to corruption than the default journal_mode=delete.
|
|
17
18
|
*/
|
|
18
19
|
export declare function enableWALMode(db: Database.Database): void;
|
|
20
|
+
/**
|
|
21
|
+
* Get the backups directory for a given database path.
|
|
22
|
+
* The backups directory is always a sibling `backups/` directory
|
|
23
|
+
* relative to the database file (e.g., `.proletariat/backups/`).
|
|
24
|
+
*/
|
|
25
|
+
export declare function getBackupsDir(dbPath: string): string;
|
|
19
26
|
/**
|
|
20
27
|
* Get the backup path for a given database path and backup number.
|
|
28
|
+
* Backups are stored in the backups/ directory with timestamps.
|
|
29
|
+
*
|
|
30
|
+
* For numbered access (used by backup restore), returns a path
|
|
31
|
+
* based on sorted backup files in the directory.
|
|
32
|
+
* Returns null if the backup doesn't exist.
|
|
21
33
|
*/
|
|
22
|
-
export declare function getBackupPath(dbPath: string, n: number): string;
|
|
34
|
+
export declare function getBackupPath(dbPath: string, n: number): string | null;
|
|
23
35
|
/**
|
|
24
|
-
* Create a
|
|
25
|
-
* Keeps the last MAX_BACKUPS copies,
|
|
26
|
-
* Rotates existing backups before copying the current database.
|
|
36
|
+
* Create a timestamped backup of the database file in the backups/ directory.
|
|
37
|
+
* Keeps the last MAX_BACKUPS copies, deletes older ones.
|
|
27
38
|
*
|
|
28
|
-
* Returns
|
|
39
|
+
* Returns the backup path if created, null if source didn't exist.
|
|
40
|
+
*/
|
|
41
|
+
export declare function createRotatingBackup(dbPath: string): string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Create a manual backup with an optional label.
|
|
44
|
+
* Unlike auto-backups, manual backups include a "manual" prefix.
|
|
45
|
+
* Returns the backup path.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createManualBackup(dbPath: string, label?: string): string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Migrate legacy backup files from the .proletariat/ top level into backups/.
|
|
50
|
+
*
|
|
51
|
+
* Handles:
|
|
52
|
+
* - workspace.db.backup (plain backup)
|
|
53
|
+
* - workspace.db.backup-YYYYMMDD-HHMMSS (timestamped backups)
|
|
54
|
+
* - workspace.db.backup.N (numbered backups with -wal/-shm companions)
|
|
55
|
+
* - workspace.db.corrupt (corrupt file preservations)
|
|
56
|
+
*
|
|
57
|
+
* Called on first run after upgrade. Safe to call multiple times.
|
|
58
|
+
*/
|
|
59
|
+
export declare function migrateExistingBackups(dbPath: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* List all backup entries with metadata, sorted newest-first.
|
|
62
|
+
* Used by the repair and backup commands to display backup info.
|
|
29
63
|
*/
|
|
30
|
-
export declare function
|
|
64
|
+
export declare function listBackups(dbPath: string): Array<{
|
|
65
|
+
path: string;
|
|
66
|
+
filename: string;
|
|
67
|
+
size: number;
|
|
68
|
+
mtime: Date;
|
|
69
|
+
}>;
|
|
31
70
|
export interface IntegrityCheckResult {
|
|
32
71
|
ok: boolean;
|
|
33
72
|
errors: string[];
|
|
@@ -54,6 +93,6 @@ export interface RepairResult {
|
|
|
54
93
|
* 1. Try dump/reimport — opens the corrupt DB, dumps all SQL, creates a new DB
|
|
55
94
|
* 2. If dump fails, fall back to the most recent backup
|
|
56
95
|
*
|
|
57
|
-
* The original corrupt file is preserved
|
|
96
|
+
* The original corrupt file is preserved in backups/ for forensics.
|
|
58
97
|
*/
|
|
59
98
|
export declare function repairDatabase(dbPath: string): RepairResult;
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides:
|
|
5
5
|
* - WAL journal mode configuration
|
|
6
|
-
* -
|
|
6
|
+
* - Timestamped backup in .proletariat/backups/ (keeps last 5)
|
|
7
7
|
* - Integrity check on open with auto-recovery
|
|
8
8
|
* - Manual repair via dump/reimport
|
|
9
|
+
* - Migration of legacy scattered backup files
|
|
9
10
|
*
|
|
10
|
-
* See: PRLT-1081
|
|
11
|
+
* See: PRLT-1081, PRLT-1154
|
|
11
12
|
*/
|
|
12
13
|
import Database from 'better-sqlite3';
|
|
13
14
|
import * as fs from 'node:fs';
|
|
@@ -21,53 +22,314 @@ const MAX_BACKUPS = 5;
|
|
|
21
22
|
export function enableWALMode(db) {
|
|
22
23
|
db.pragma('journal_mode = WAL');
|
|
23
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Get the backups directory for a given database path.
|
|
27
|
+
* The backups directory is always a sibling `backups/` directory
|
|
28
|
+
* relative to the database file (e.g., `.proletariat/backups/`).
|
|
29
|
+
*/
|
|
30
|
+
export function getBackupsDir(dbPath) {
|
|
31
|
+
return path.join(path.dirname(dbPath), 'backups');
|
|
32
|
+
}
|
|
24
33
|
/**
|
|
25
34
|
* Get the backup path for a given database path and backup number.
|
|
35
|
+
* Backups are stored in the backups/ directory with timestamps.
|
|
36
|
+
*
|
|
37
|
+
* For numbered access (used by backup restore), returns a path
|
|
38
|
+
* based on sorted backup files in the directory.
|
|
39
|
+
* Returns null if the backup doesn't exist.
|
|
26
40
|
*/
|
|
27
41
|
export function getBackupPath(dbPath, n) {
|
|
28
|
-
|
|
42
|
+
const backupsDir = getBackupsDir(dbPath);
|
|
43
|
+
if (!fs.existsSync(backupsDir)) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const backups = listBackupFiles(backupsDir);
|
|
47
|
+
if (n < 1 || n > backups.length) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
// backups are sorted newest-first, so n=1 is the most recent
|
|
51
|
+
return backups[n - 1];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* List backup files in the backups directory, sorted newest-first.
|
|
55
|
+
* Only returns .db files (excludes -wal, -shm, and .corrupt files).
|
|
56
|
+
*/
|
|
57
|
+
function listBackupFiles(backupsDir) {
|
|
58
|
+
if (!fs.existsSync(backupsDir)) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
const files = fs.readdirSync(backupsDir)
|
|
62
|
+
.filter(f => f.endsWith('.db') && !f.endsWith('.corrupt.db'))
|
|
63
|
+
.map(f => path.join(backupsDir, f))
|
|
64
|
+
.sort((a, b) => {
|
|
65
|
+
// Sort by modification time, newest first
|
|
66
|
+
const statA = fs.statSync(a);
|
|
67
|
+
const statB = fs.statSync(b);
|
|
68
|
+
return statB.mtimeMs - statA.mtimeMs;
|
|
69
|
+
});
|
|
70
|
+
return files;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate a unique timestamped backup filename.
|
|
74
|
+
* Checks the backups directory to avoid filename collisions.
|
|
75
|
+
*/
|
|
76
|
+
function generateUniqueBackupPath(backupsDir, prefix = 'workspace') {
|
|
77
|
+
const ts = formatTimestamp(new Date());
|
|
78
|
+
const baseName = `${prefix}-${ts}`;
|
|
79
|
+
const candidate = path.join(backupsDir, `${baseName}.db`);
|
|
80
|
+
if (!fs.existsSync(candidate)) {
|
|
81
|
+
return candidate;
|
|
82
|
+
}
|
|
83
|
+
// If collision, append a counter
|
|
84
|
+
for (let i = 1; i < 100; i++) {
|
|
85
|
+
const alt = path.join(backupsDir, `${baseName}-${i}.db`);
|
|
86
|
+
if (!fs.existsSync(alt)) {
|
|
87
|
+
return alt;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Extremely unlikely fallback
|
|
91
|
+
return path.join(backupsDir, `${baseName}-${Date.now()}.db`);
|
|
29
92
|
}
|
|
30
93
|
/**
|
|
31
|
-
* Create a
|
|
32
|
-
* Keeps the last MAX_BACKUPS copies,
|
|
33
|
-
* Rotates existing backups before copying the current database.
|
|
94
|
+
* Create a timestamped backup of the database file in the backups/ directory.
|
|
95
|
+
* Keeps the last MAX_BACKUPS copies, deletes older ones.
|
|
34
96
|
*
|
|
35
|
-
* Returns
|
|
97
|
+
* Returns the backup path if created, null if source didn't exist.
|
|
36
98
|
*/
|
|
37
99
|
export function createRotatingBackup(dbPath) {
|
|
38
100
|
if (!fs.existsSync(dbPath)) {
|
|
39
|
-
return
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const backupsDir = getBackupsDir(dbPath);
|
|
104
|
+
fs.mkdirSync(backupsDir, { recursive: true });
|
|
105
|
+
const backupPath = generateUniqueBackupPath(backupsDir);
|
|
106
|
+
// Copy current database as timestamped backup
|
|
107
|
+
try {
|
|
108
|
+
fs.copyFileSync(dbPath, backupPath);
|
|
109
|
+
// Also copy WAL and SHM files if they exist (for WAL-mode databases)
|
|
110
|
+
const walPath = `${dbPath}-wal`;
|
|
111
|
+
const shmPath = `${dbPath}-shm`;
|
|
112
|
+
if (fs.existsSync(walPath)) {
|
|
113
|
+
fs.copyFileSync(walPath, `${backupPath}-wal`);
|
|
114
|
+
}
|
|
115
|
+
if (fs.existsSync(shmPath)) {
|
|
116
|
+
fs.copyFileSync(shmPath, `${backupPath}-shm`);
|
|
117
|
+
}
|
|
40
118
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
fs.unlinkSync(oldest);
|
|
119
|
+
catch {
|
|
120
|
+
// Backup failure is not fatal — log and continue
|
|
121
|
+
return null;
|
|
45
122
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
123
|
+
// Rotate: delete older backups beyond MAX_BACKUPS
|
|
124
|
+
rotateBackups(backupsDir);
|
|
125
|
+
return backupPath;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Delete older backups beyond MAX_BACKUPS.
|
|
129
|
+
* Keeps the newest MAX_BACKUPS .db files, deletes the rest
|
|
130
|
+
* (along with their -wal and -shm companions).
|
|
131
|
+
*/
|
|
132
|
+
function rotateBackups(backupsDir) {
|
|
133
|
+
const backups = listBackupFiles(backupsDir);
|
|
134
|
+
// Keep the first MAX_BACKUPS, delete the rest
|
|
135
|
+
for (let i = MAX_BACKUPS; i < backups.length; i++) {
|
|
136
|
+
const bp = backups[i];
|
|
137
|
+
try {
|
|
138
|
+
fs.unlinkSync(bp);
|
|
139
|
+
// Also clean up WAL and SHM companions
|
|
140
|
+
for (const suffix of ['-wal', '-shm']) {
|
|
141
|
+
const companion = `${bp}${suffix}`;
|
|
142
|
+
if (fs.existsSync(companion)) {
|
|
143
|
+
fs.unlinkSync(companion);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// Best-effort cleanup
|
|
51
149
|
}
|
|
52
150
|
}
|
|
53
|
-
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Create a manual backup with an optional label.
|
|
154
|
+
* Unlike auto-backups, manual backups include a "manual" prefix.
|
|
155
|
+
* Returns the backup path.
|
|
156
|
+
*/
|
|
157
|
+
export function createManualBackup(dbPath, label) {
|
|
158
|
+
if (!fs.existsSync(dbPath)) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const backupsDir = getBackupsDir(dbPath);
|
|
162
|
+
fs.mkdirSync(backupsDir, { recursive: true });
|
|
163
|
+
const suffix = label ? `-${label}` : '';
|
|
164
|
+
const backupPath = generateUniqueBackupPath(backupsDir, `workspace-manual${suffix}`);
|
|
54
165
|
try {
|
|
55
|
-
fs.copyFileSync(dbPath,
|
|
56
|
-
// Also copy WAL and SHM files if they exist (for WAL-mode databases)
|
|
166
|
+
fs.copyFileSync(dbPath, backupPath);
|
|
57
167
|
const walPath = `${dbPath}-wal`;
|
|
58
168
|
const shmPath = `${dbPath}-shm`;
|
|
59
169
|
if (fs.existsSync(walPath)) {
|
|
60
|
-
fs.copyFileSync(walPath, `${
|
|
170
|
+
fs.copyFileSync(walPath, `${backupPath}-wal`);
|
|
61
171
|
}
|
|
62
172
|
if (fs.existsSync(shmPath)) {
|
|
63
|
-
fs.copyFileSync(shmPath, `${
|
|
173
|
+
fs.copyFileSync(shmPath, `${backupPath}-shm`);
|
|
64
174
|
}
|
|
65
|
-
return
|
|
175
|
+
return backupPath;
|
|
66
176
|
}
|
|
67
177
|
catch {
|
|
68
|
-
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Migrate legacy backup files from the .proletariat/ top level into backups/.
|
|
183
|
+
*
|
|
184
|
+
* Handles:
|
|
185
|
+
* - workspace.db.backup (plain backup)
|
|
186
|
+
* - workspace.db.backup-YYYYMMDD-HHMMSS (timestamped backups)
|
|
187
|
+
* - workspace.db.backup.N (numbered backups with -wal/-shm companions)
|
|
188
|
+
* - workspace.db.corrupt (corrupt file preservations)
|
|
189
|
+
*
|
|
190
|
+
* Called on first run after upgrade. Safe to call multiple times.
|
|
191
|
+
*/
|
|
192
|
+
export function migrateExistingBackups(dbPath) {
|
|
193
|
+
const proletariatDir = path.dirname(dbPath);
|
|
194
|
+
const backupsDir = getBackupsDir(dbPath);
|
|
195
|
+
const dbBasename = path.basename(dbPath); // workspace.db
|
|
196
|
+
let files;
|
|
197
|
+
try {
|
|
198
|
+
files = fs.readdirSync(proletariatDir);
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// Find legacy backup/corrupt files at the top level
|
|
204
|
+
const legacyFiles = files.filter(f => {
|
|
205
|
+
// Match workspace.db.backup*, workspace.db.corrupt*
|
|
206
|
+
if (f.startsWith(`${dbBasename}.backup`) || f.startsWith(`${dbBasename}.corrupt`)) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
// Match workspace.db.repair-temp (leftover from failed repairs)
|
|
210
|
+
if (f === `${dbBasename}.repair-temp`) {
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
69
213
|
return false;
|
|
214
|
+
});
|
|
215
|
+
if (legacyFiles.length === 0) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// Ensure backups directory exists
|
|
219
|
+
fs.mkdirSync(backupsDir, { recursive: true });
|
|
220
|
+
for (const file of legacyFiles) {
|
|
221
|
+
const srcPath = path.join(proletariatDir, file);
|
|
222
|
+
let destName;
|
|
223
|
+
if (file.endsWith('.corrupt') || file.includes('.corrupt')) {
|
|
224
|
+
// Corrupt files → workspace-corrupt-TIMESTAMP.db or just move as-is
|
|
225
|
+
const stat = fs.statSync(srcPath);
|
|
226
|
+
const ts = formatTimestamp(stat.mtime);
|
|
227
|
+
destName = `workspace-corrupt-${ts}.db`;
|
|
228
|
+
}
|
|
229
|
+
else if (file === `${dbBasename}.backup`) {
|
|
230
|
+
// Plain backup → workspace-migrated-TIMESTAMP.db
|
|
231
|
+
const stat = fs.statSync(srcPath);
|
|
232
|
+
const ts = formatTimestamp(stat.mtime);
|
|
233
|
+
destName = `workspace-migrated-${ts}.db`;
|
|
234
|
+
}
|
|
235
|
+
else if (file.match(/\.backup-\d{8}-\d{6}$/)) {
|
|
236
|
+
// Timestamped backup (workspace.db.backup-20260106-112422)
|
|
237
|
+
const match = file.match(/\.backup-(\d{8}-\d{6})$/);
|
|
238
|
+
destName = `workspace-migrated-${match[1]}.db`;
|
|
239
|
+
}
|
|
240
|
+
else if (file.match(/\.backup\.\d+$/)) {
|
|
241
|
+
// Numbered backup (workspace.db.backup.1)
|
|
242
|
+
const stat = fs.statSync(srcPath);
|
|
243
|
+
const ts = formatTimestamp(stat.mtime);
|
|
244
|
+
destName = `workspace-migrated-${ts}.db`;
|
|
245
|
+
}
|
|
246
|
+
else if (file.match(/\.backup\.\d+-(wal|shm)$/)) {
|
|
247
|
+
// WAL/SHM companion for numbered backup — these follow their .db file
|
|
248
|
+
// Skip them here; they'll be handled when we move the main backup
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
else if (file === `${dbBasename}.repair-temp`) {
|
|
252
|
+
// Leftover repair temp file — just move it
|
|
253
|
+
destName = 'workspace-repair-temp.db';
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
// Fallback: use file modification time
|
|
257
|
+
const stat = fs.statSync(srcPath);
|
|
258
|
+
const ts = formatTimestamp(stat.mtime);
|
|
259
|
+
destName = `workspace-legacy-${ts}.db`;
|
|
260
|
+
}
|
|
261
|
+
const destPath = path.join(backupsDir, destName);
|
|
262
|
+
// Don't overwrite existing files in backups/
|
|
263
|
+
if (fs.existsSync(destPath)) {
|
|
264
|
+
// Add a suffix to avoid collision
|
|
265
|
+
const ext = path.extname(destName);
|
|
266
|
+
const base = destName.slice(0, -ext.length);
|
|
267
|
+
const uniqueDest = path.join(backupsDir, `${base}-${Date.now()}${ext}`);
|
|
268
|
+
try {
|
|
269
|
+
fs.renameSync(srcPath, uniqueDest);
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
// Best-effort migration
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
try {
|
|
277
|
+
fs.renameSync(srcPath, destPath);
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
// Best-effort migration
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Also move WAL/SHM companions if they exist
|
|
284
|
+
for (const suffix of ['-wal', '-shm']) {
|
|
285
|
+
const companionSrc = `${srcPath}${suffix}`;
|
|
286
|
+
if (fs.existsSync(companionSrc)) {
|
|
287
|
+
const companionDest = `${destPath}${suffix}`;
|
|
288
|
+
try {
|
|
289
|
+
fs.renameSync(companionSrc, companionDest);
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
// Best-effort
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
70
296
|
}
|
|
297
|
+
// After migration, rotate to keep only MAX_BACKUPS
|
|
298
|
+
rotateBackups(backupsDir);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Format a Date as YYYYMMDD-HHMMSS-mmm for backup filenames.
|
|
302
|
+
* Includes milliseconds to avoid collisions when called multiple times per second.
|
|
303
|
+
*/
|
|
304
|
+
function formatTimestamp(date) {
|
|
305
|
+
return [
|
|
306
|
+
date.getFullYear(),
|
|
307
|
+
String(date.getMonth() + 1).padStart(2, '0'),
|
|
308
|
+
String(date.getDate()).padStart(2, '0'),
|
|
309
|
+
'-',
|
|
310
|
+
String(date.getHours()).padStart(2, '0'),
|
|
311
|
+
String(date.getMinutes()).padStart(2, '0'),
|
|
312
|
+
String(date.getSeconds()).padStart(2, '0'),
|
|
313
|
+
'-',
|
|
314
|
+
String(date.getMilliseconds()).padStart(3, '0'),
|
|
315
|
+
].join('');
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* List all backup entries with metadata, sorted newest-first.
|
|
319
|
+
* Used by the repair and backup commands to display backup info.
|
|
320
|
+
*/
|
|
321
|
+
export function listBackups(dbPath) {
|
|
322
|
+
const backupsDir = getBackupsDir(dbPath);
|
|
323
|
+
const backups = listBackupFiles(backupsDir);
|
|
324
|
+
return backups.map(bp => {
|
|
325
|
+
const stat = fs.statSync(bp);
|
|
326
|
+
return {
|
|
327
|
+
path: bp,
|
|
328
|
+
filename: path.basename(bp),
|
|
329
|
+
size: stat.size,
|
|
330
|
+
mtime: stat.mtime,
|
|
331
|
+
};
|
|
332
|
+
});
|
|
71
333
|
}
|
|
72
334
|
/**
|
|
73
335
|
* Run PRAGMA integrity_check on a database.
|
|
@@ -114,7 +376,7 @@ export function quickCheckIntegrity(db) {
|
|
|
114
376
|
* 1. Try dump/reimport — opens the corrupt DB, dumps all SQL, creates a new DB
|
|
115
377
|
* 2. If dump fails, fall back to the most recent backup
|
|
116
378
|
*
|
|
117
|
-
* The original corrupt file is preserved
|
|
379
|
+
* The original corrupt file is preserved in backups/ for forensics.
|
|
118
380
|
*/
|
|
119
381
|
export function repairDatabase(dbPath) {
|
|
120
382
|
// Try dump/reimport first
|
|
@@ -133,6 +395,17 @@ export function repairDatabase(dbPath) {
|
|
|
133
395
|
message: `Could not repair database. Dump failed: ${dumpResult.message}. No usable backups found.`,
|
|
134
396
|
};
|
|
135
397
|
}
|
|
398
|
+
/**
|
|
399
|
+
* Move a corrupt database file to the backups/ directory with a corrupt prefix.
|
|
400
|
+
* Returns the destination path.
|
|
401
|
+
*/
|
|
402
|
+
function moveCorruptToBackups(dbPath) {
|
|
403
|
+
const backupsDir = getBackupsDir(dbPath);
|
|
404
|
+
fs.mkdirSync(backupsDir, { recursive: true });
|
|
405
|
+
const corruptPath = generateUniqueBackupPath(backupsDir, 'workspace-corrupt');
|
|
406
|
+
fs.renameSync(dbPath, corruptPath);
|
|
407
|
+
return corruptPath;
|
|
408
|
+
}
|
|
136
409
|
/**
|
|
137
410
|
* Attempt recovery via .dump and reimport.
|
|
138
411
|
* Opens the corrupt database, extracts as much SQL as possible,
|
|
@@ -189,12 +462,9 @@ function attemptDumpReimport(dbPath) {
|
|
|
189
462
|
corruptDb = null;
|
|
190
463
|
newDb.close();
|
|
191
464
|
newDb = null;
|
|
192
|
-
//
|
|
193
|
-
const corruptBackupPath =
|
|
194
|
-
|
|
195
|
-
fs.unlinkSync(corruptBackupPath);
|
|
196
|
-
}
|
|
197
|
-
fs.renameSync(dbPath, corruptBackupPath);
|
|
465
|
+
// Move corrupt file to backups/ directory
|
|
466
|
+
const corruptBackupPath = moveCorruptToBackups(dbPath);
|
|
467
|
+
// Move repaired database into place
|
|
198
468
|
fs.renameSync(tempPath, dbPath);
|
|
199
469
|
// Clean up old WAL/SHM files from the corrupt database
|
|
200
470
|
for (const suffix of ['-wal', '-shm']) {
|
|
@@ -238,14 +508,13 @@ function attemptDumpReimport(dbPath) {
|
|
|
238
508
|
}
|
|
239
509
|
/**
|
|
240
510
|
* Attempt recovery by restoring from the most recent valid backup.
|
|
241
|
-
* Tries backups
|
|
511
|
+
* Tries backups from newest to oldest, validates each with integrity_check.
|
|
242
512
|
*/
|
|
243
513
|
function attemptBackupRestore(dbPath) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}
|
|
514
|
+
const backupsDir = getBackupsDir(dbPath);
|
|
515
|
+
const backups = listBackupFiles(backupsDir);
|
|
516
|
+
for (let i = 0; i < backups.length; i++) {
|
|
517
|
+
const backupPath = backups[i];
|
|
249
518
|
// Validate the backup
|
|
250
519
|
let backupDb = null;
|
|
251
520
|
try {
|
|
@@ -257,11 +526,7 @@ function attemptBackupRestore(dbPath) {
|
|
|
257
526
|
continue;
|
|
258
527
|
}
|
|
259
528
|
// Backup is valid — swap it in
|
|
260
|
-
const corruptBackupPath =
|
|
261
|
-
if (fs.existsSync(corruptBackupPath)) {
|
|
262
|
-
fs.unlinkSync(corruptBackupPath);
|
|
263
|
-
}
|
|
264
|
-
fs.renameSync(dbPath, corruptBackupPath);
|
|
529
|
+
const corruptBackupPath = moveCorruptToBackups(dbPath);
|
|
265
530
|
fs.copyFileSync(backupPath, dbPath);
|
|
266
531
|
// Clean up old WAL/SHM files
|
|
267
532
|
for (const suffix of ['-wal', '-shm']) {
|
|
@@ -273,7 +538,7 @@ function attemptBackupRestore(dbPath) {
|
|
|
273
538
|
return {
|
|
274
539
|
success: true,
|
|
275
540
|
method: 'backup-restore',
|
|
276
|
-
message: `Restored from
|
|
541
|
+
message: `Restored from ${path.basename(backupPath)}. Corrupt file saved as ${path.basename(corruptBackupPath)}.`,
|
|
277
542
|
};
|
|
278
543
|
}
|
|
279
544
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-safety.js","sourceRoot":"","sources":["../../../src/lib/database/db-safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAGjC,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,CAAS;IACrD,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,CAAA;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,0DAA0D;IAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACjD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACxC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,CAAC;QACH,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;QACjD,qEAAqE;QACrE,MAAM,OAAO,GAAG,GAAG,MAAM,MAAM,CAAA;QAC/B,MAAM,OAAO,GAAG,GAAG,MAAM,MAAM,CAAA;QAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QAC7D,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;QACjD,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAqB;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAkC,CAAA;QAC1E,MAAM,MAAM,GAAG,IAAI;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;aAC3B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;QAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAqB;IACvD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAA8B,CAAA;QAClE,MAAM,MAAM,GAAG,IAAI;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aACvB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;QAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAA;IACH,CAAC;AACH,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,0BAA0B;IAC1B,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC9C,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACjD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,2CAA2C,UAAU,CAAC,OAAO,4BAA4B;KACnG,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,MAAc;IACzC,IAAI,SAAS,GAA6B,IAAI,CAAA;IAC9C,IAAI,KAAK,GAA6B,IAAI,CAAA;IAC1C,MAAM,QAAQ,GAAG,GAAG,MAAM,cAAc,CAAA;IAExC,IAAI,CAAC;QACH,6CAA6C;QAC7C,SAAS,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAEpD,2BAA2B;QAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAC9B,2HAA2H,CAC5H,CAAC,GAAG,EAAuB,CAAA;QAE5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAA;QACpG,CAAC;QAED,4CAA4C;QAC5C,KAAK,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC9B,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;QAElC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,0EAA0E;YAC5E,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAClC,gFAAgF,CACjF,CAAC,GAAG,EAAwB,CAAA;QAE7B,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;gBAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAQ;gBAE/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAA4B,CAAC,CAAA;gBAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACtD,MAAM,SAAS,GAAG,0BAA0B,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,YAAY,GAAG,CAAA;gBAEvH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;gBAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAA+B,EAAE,EAAE;oBACtE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC7C,CAAC;gBACH,CAAC,CAAC,CAAA;gBAEF,SAAS,CAAC,IAAiC,CAAC,CAAA;gBAC5C,aAAa,IAAI,IAAI,CAAC,MAAM,CAAA;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;YACnC,CAAC;QACH,CAAC;QAED,SAAS,CAAC,KAAK,EAAE,CAAA;QACjB,SAAS,GAAG,IAAI,CAAA;QAChB,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,KAAK,GAAG,IAAI,CAAA;QAEZ,sDAAsD;QACtD,MAAM,iBAAiB,GAAG,GAAG,MAAM,UAAU,CAAA;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;QAClC,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;QACxC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAE/B,uDAAuD;QACvD,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;YAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE,aAAa,aAAa,cAAc,UAAU,CAAC,MAAM,kCAAkC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG;SACxI,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sBAAsB;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBAAC,SAAS,CAAC,KAAK,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,sEAAsE,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,sEAAsE,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;QAClF,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAChE,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,MAAc;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,SAAQ;QACV,CAAC;QAED,sBAAsB;QACtB,IAAI,QAAQ,GAA6B,IAAI,CAAA;QAC7C,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;YACvD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;YACtC,QAAQ,CAAC,KAAK,EAAE,CAAA;YAChB,QAAQ,GAAG,IAAI,CAAA;YAEf,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACd,SAAQ;YACV,CAAC;YAED,+BAA+B;YAC/B,MAAM,iBAAiB,GAAG,GAAG,MAAM,UAAU,CAAA;YAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;YAClC,CAAC;YACD,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;YACxC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAEnC,6BAA6B;YAC7B,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;gBACtC,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;gBAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,wBAAwB,CAAC,2BAA2B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG;aACjG,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,sEAAsE,CAAC,CAAC;YAC3G,CAAC;YACD,SAAQ;QACV,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,wBAAwB;KAClC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"db-safety.js","sourceRoot":"","sources":["../../../src/lib/database/db-safety.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,4 +26,4 @@ export { checkPMOExists, getPMOSetting, dropPMOTables, upsertWorkspaceSetting, }
|
|
|
26
26
|
export { type DatabaseDriver, type PreparedStatement, type RunResult, BetterSqlite3Driver, wrapDatabase, openDriver, getRawDatabase, } from './driver.js';
|
|
27
27
|
export { SettingsStore, createSettingsStore, } from './settings-store.js';
|
|
28
28
|
export { isCredentialKey, getCredentialDatabasePath, getCredential, setCredential, deleteCredential, hasCredential, closeAllCredentialStores, migrateCredentials, } from './credential-store.js';
|
|
29
|
-
export { enableWALMode, createRotatingBackup, checkIntegrity, quickCheckIntegrity, repairDatabase, getBackupPath, type IntegrityCheckResult, type RepairResult, } from './db-safety.js';
|
|
29
|
+
export { enableWALMode, createRotatingBackup, createManualBackup, checkIntegrity, quickCheckIntegrity, repairDatabase, getBackupPath, getBackupsDir, listBackups, migrateExistingBackups, type IntegrityCheckResult, type RepairResult, } from './db-safety.js';
|
|
@@ -38,5 +38,5 @@ export { SettingsStore, createSettingsStore, } from './settings-store.js';
|
|
|
38
38
|
// Credential store (PRLT-1114: agent secret isolation)
|
|
39
39
|
export { isCredentialKey, getCredentialDatabasePath, getCredential, setCredential, deleteCredential, hasCredential, closeAllCredentialStores, migrateCredentials, } from './credential-store.js';
|
|
40
40
|
// Database safety (WAL, backup, integrity, repair)
|
|
41
|
-
export { enableWALMode, createRotatingBackup, checkIntegrity, quickCheckIntegrity, repairDatabase, getBackupPath, } from './db-safety.js';
|
|
41
|
+
export { enableWALMode, createRotatingBackup, createManualBackup, checkIntegrity, quickCheckIntegrity, repairDatabase, getBackupPath, getBackupsDir, listBackups, migrateExistingBackups, } from './db-safety.js';
|
|
42
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/database/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,0DAA0D;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,sBAAsB;AACtB,OAAO,EAEL,WAAW,EACX,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAEvB,mBAAmB;AACnB,OAAO,EAQL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AAEpB,wBAAwB;AACxB,OAAO,EAEL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAE1B,mBAAmB;AACnB,OAAO,EAGL,cAAc,EACd,cAAc,EACd,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,sBAAsB;AACtB,OAAO,EAEL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAEvB,wBAAwB;AACxB,OAAO,EAEL,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AAEnB,2BAA2B;AAC3B,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAE3B,8BAA8B;AAC9B,OAAO,EAIL,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAA;AAEpB,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAE5B,uDAAuD;AACvD,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,mDAAmD;AACnD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/database/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,0DAA0D;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,sBAAsB;AACtB,OAAO,EAEL,WAAW,EACX,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAEvB,mBAAmB;AACnB,OAAO,EAQL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AAEpB,wBAAwB;AACxB,OAAO,EAEL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAE1B,mBAAmB;AACnB,OAAO,EAGL,cAAc,EACd,cAAc,EACd,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,sBAAsB;AACtB,OAAO,EAEL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAEvB,wBAAwB;AACxB,OAAO,EAEL,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AAEnB,2BAA2B;AAC3B,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAE3B,8BAA8B;AAC9B,OAAO,EAIL,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAA;AAEpB,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAE5B,uDAAuD;AACvD,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,mDAAmD;AACnD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EACX,sBAAsB,GAGvB,MAAM,gBAAgB,CAAA"}
|
|
@@ -15,7 +15,7 @@ import { migrateCredentials } from './credential-store.js';
|
|
|
15
15
|
import { createDrizzleConnection } from './drizzle.js';
|
|
16
16
|
import { workspace as workspaceTable, } from './drizzle-schema.js';
|
|
17
17
|
import { BetterSqlite3Driver } from './driver.js';
|
|
18
|
-
import { enableWALMode, createRotatingBackup, quickCheckIntegrity, repairDatabase, } from './db-safety.js';
|
|
18
|
+
import { enableWALMode, createRotatingBackup, quickCheckIntegrity, repairDatabase, migrateExistingBackups, } from './db-safety.js';
|
|
19
19
|
/**
|
|
20
20
|
* Open the workspace database, wrap it with Drizzle, run a function,
|
|
21
21
|
* and close the connection. Handles the open/close lifecycle.
|
|
@@ -90,6 +90,8 @@ export function openWorkspaceDatabase(workspacePath, options) {
|
|
|
90
90
|
// local/test databases as read-only.
|
|
91
91
|
const readOnly = options?.readonly ?? isReadOnlyHQMount(workspacePath);
|
|
92
92
|
if (!readOnly) {
|
|
93
|
+
// PRLT-1154: Migrate any legacy scattered backup files into backups/ directory
|
|
94
|
+
migrateExistingBackups(dbPath);
|
|
93
95
|
// Auto-backup before opening (cheap insurance against corruption)
|
|
94
96
|
createRotatingBackup(dbPath);
|
|
95
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/lib/database/workspace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,uBAAuB,EAAkB,MAAM,cAAc,CAAA;AACtE,OAAO,EACL,SAAS,IAAI,cAAc,GAC5B,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/lib/database/workspace.ts"],"names":[],"mappings":"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"}
|