engram-mcp-server 1.7.2 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +35 -0
- package/README.md +194 -358
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +47 -1
- package/dist/constants.js.map +1 -1
- package/dist/database.d.ts +1 -1
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +47 -16
- package/dist/database.js.map +1 -1
- package/dist/global-db.d.ts.map +1 -1
- package/dist/global-db.js +3 -0
- package/dist/global-db.js.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/installer/config-writer.d.ts +31 -10
- package/dist/installer/config-writer.d.ts.map +1 -1
- package/dist/installer/config-writer.js +79 -15
- package/dist/installer/config-writer.js.map +1 -1
- package/dist/installer/ide-configs.d.ts +9 -0
- package/dist/installer/ide-configs.d.ts.map +1 -1
- package/dist/installer/ide-configs.js +7 -19
- package/dist/installer/ide-configs.js.map +1 -1
- package/dist/installer/ide-detector.d.ts +10 -6
- package/dist/installer/ide-detector.d.ts.map +1 -1
- package/dist/installer/ide-detector.js +32 -7
- package/dist/installer/ide-detector.js.map +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +25 -6
- package/dist/installer/index.js.map +1 -1
- package/dist/utils.d.ts +4 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +149 -13
- package/dist/utils.js.map +1 -1
- package/package.json +2 -3
- package/scripts/fix-mcp-config.js +0 -23
- package/scripts/inject-release-notes.js +0 -67
- package/scripts/install-mcp.js +0 -175
package/dist/constants.d.ts
CHANGED
|
@@ -20,7 +20,28 @@ export declare const FILE_LOCK_DEFAULT_TIMEOUT_MINUTES = 30;
|
|
|
20
20
|
export declare const DEFAULT_RETENTION_DAYS = 90;
|
|
21
21
|
export declare const MAX_BACKUP_COUNT = 10;
|
|
22
22
|
export declare const EXCLUDED_DIRS: Set<string>;
|
|
23
|
+
/**
|
|
24
|
+
* STRONG markers: unambiguous project boundaries. Found → return immediately.
|
|
25
|
+
* These never appear in IDE install directories or npm global dirs.
|
|
26
|
+
*/
|
|
27
|
+
export declare const STRONG_PROJECT_MARKERS: readonly [".git", ".engram"];
|
|
28
|
+
/**
|
|
29
|
+
* SOFT markers: typically present in real projects but also in Electron/Node
|
|
30
|
+
* app install dirs. Only used after strong markers are exhausted, AND only if
|
|
31
|
+
* the candidate path passes the BLOCKED_PATH_PATTERNS check.
|
|
32
|
+
*/
|
|
33
|
+
export declare const SOFT_PROJECT_MARKERS: string[];
|
|
34
|
+
/**
|
|
35
|
+
* Legacy combined list kept for any external callers.
|
|
36
|
+
* Prefer STRONG_PROJECT_MARKERS + SOFT_PROJECT_MARKERS directly.
|
|
37
|
+
*/
|
|
23
38
|
export declare const PROJECT_MARKERS: string[];
|
|
39
|
+
/**
|
|
40
|
+
* Path-segment patterns that indicate an IDE install, npm global, or OS system
|
|
41
|
+
* directory. A soft-marker candidate whose normalised path matches any of these
|
|
42
|
+
* is rejected so we don't mistake an IDE's own install dir for a project root.
|
|
43
|
+
*/
|
|
44
|
+
export declare const BLOCKED_PATH_PATTERNS: RegExp[];
|
|
24
45
|
export declare const NPM_REGISTRY_URL = "https://registry.npmjs.org/engram-mcp-server/latest";
|
|
25
46
|
export declare const GITHUB_REPO = "keggan-std/Engram";
|
|
26
47
|
export declare const GITHUB_RELEASES_URL = "https://github.com/keggan-std/Engram/releases";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,cAAc,EAAE,MAAqB,CAAC;AACnD,eAAO,MAAM,WAAW,WAAW,CAAC;AAGpC,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,UAAU,KAAK,CAAC;AAI7B,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC,eAAO,MAAM,aAAa,aAqBxB,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,cAAc,EAAE,MAAqB,CAAC;AACnD,eAAO,MAAM,WAAW,WAAW,CAAC;AAGpC,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,UAAU,KAAK,CAAC;AAI7B,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC,eAAO,MAAM,aAAa,aAqBxB,CAAC;AAKH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,8BAGzB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UAkBhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,UAG3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAmBzC,CAAC;AAGF,eAAO,MAAM,gBAAgB,wDAAwD,CAAC;AACtF,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,kDAAkD,CAAC;AACnF,eAAO,MAAM,uBAAuB,mEAAmE,CAAC;AAGxG,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAGvE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAYnD,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -54,8 +54,21 @@ export const EXCLUDED_DIRS = new Set([
|
|
|
54
54
|
".pub-cache",
|
|
55
55
|
]);
|
|
56
56
|
// Project root markers — used to auto-detect project boundaries
|
|
57
|
-
|
|
57
|
+
// FLAW-1 FIX: two tiers prevent IDE install dirs from being picked up.
|
|
58
|
+
/**
|
|
59
|
+
* STRONG markers: unambiguous project boundaries. Found → return immediately.
|
|
60
|
+
* These never appear in IDE install directories or npm global dirs.
|
|
61
|
+
*/
|
|
62
|
+
export const STRONG_PROJECT_MARKERS = [
|
|
58
63
|
".git",
|
|
64
|
+
".engram", // already-initialised Engram project
|
|
65
|
+
];
|
|
66
|
+
/**
|
|
67
|
+
* SOFT markers: typically present in real projects but also in Electron/Node
|
|
68
|
+
* app install dirs. Only used after strong markers are exhausted, AND only if
|
|
69
|
+
* the candidate path passes the BLOCKED_PATH_PATTERNS check.
|
|
70
|
+
*/
|
|
71
|
+
export const SOFT_PROJECT_MARKERS = [
|
|
59
72
|
"package.json",
|
|
60
73
|
"build.gradle",
|
|
61
74
|
"build.gradle.kts",
|
|
@@ -74,6 +87,39 @@ export const PROJECT_MARKERS = [
|
|
|
74
87
|
"Gemfile",
|
|
75
88
|
"composer.json",
|
|
76
89
|
];
|
|
90
|
+
/**
|
|
91
|
+
* Legacy combined list kept for any external callers.
|
|
92
|
+
* Prefer STRONG_PROJECT_MARKERS + SOFT_PROJECT_MARKERS directly.
|
|
93
|
+
*/
|
|
94
|
+
export const PROJECT_MARKERS = [
|
|
95
|
+
...STRONG_PROJECT_MARKERS,
|
|
96
|
+
...SOFT_PROJECT_MARKERS,
|
|
97
|
+
];
|
|
98
|
+
/**
|
|
99
|
+
* Path-segment patterns that indicate an IDE install, npm global, or OS system
|
|
100
|
+
* directory. A soft-marker candidate whose normalised path matches any of these
|
|
101
|
+
* is rejected so we don't mistake an IDE's own install dir for a project root.
|
|
102
|
+
*/
|
|
103
|
+
export const BLOCKED_PATH_PATTERNS = [
|
|
104
|
+
// Windows IDE install / npm global locations
|
|
105
|
+
/[/\\]AppData[/\\]Local[/\\]Programs[/\\]/i,
|
|
106
|
+
/[/\\]AppData[/\\]Roaming[/\\]npm[/\\]/i,
|
|
107
|
+
/[/\\]AppData[/\\]Local[/\\]npm[/\\]/i,
|
|
108
|
+
// Windows system dirs
|
|
109
|
+
/^[A-Za-z]:[/\\]Program Files( \(x86\))?[/\\]/i,
|
|
110
|
+
/^[A-Za-z]:[/\\]Windows[/\\]/i,
|
|
111
|
+
// macOS application bundles and Homebrew
|
|
112
|
+
/\/Applications\/.+\.app\//,
|
|
113
|
+
/\/usr\/local\/(bin|lib|Cellar)\//,
|
|
114
|
+
/\/opt\/(homebrew|local)\//,
|
|
115
|
+
// Linux system dirs
|
|
116
|
+
/^\/usr\/(bin|lib|share|local)\//,
|
|
117
|
+
/^\/opt\//,
|
|
118
|
+
// npm / node global installs (all OSes)
|
|
119
|
+
/[/\\]node_modules[/\\]engram-mcp-server[/\\]/i,
|
|
120
|
+
/[/\\]lib[/\\]node_modules[/\\]/i,
|
|
121
|
+
/[/\\]node_modules\.bin[/\\]/i,
|
|
122
|
+
];
|
|
77
123
|
// Update check
|
|
78
124
|
export const NPM_REGISTRY_URL = "https://registry.npmjs.org/engram-mcp-server/latest";
|
|
79
125
|
export const GITHUB_REPO = "keggan-std/Engram";
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAW,IAAI,CAAC,OAAO,CAAC;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC,WAAW;AACX,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,wFAAwF;AACxF,sFAAsF;AAEpH,SAAS;AACT,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,6EAA6E;AACpH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC,CAAC,uDAAuD;AACjG,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC,CAAC,iDAAiD;AACtG,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,yCAAyC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IACnC,MAAM;IACN,SAAS;IACT,OAAO;IACP,KAAK;IACL,SAAS;IACT,SAAS;IACT,eAAe;IACf,cAAc;IACd,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,aAAa;IACb,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,YAAY;CACb,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/database.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface Services {
|
|
|
9
9
|
update: UpdateService;
|
|
10
10
|
agentRules: AgentRulesService;
|
|
11
11
|
}
|
|
12
|
-
export declare function initDatabase(projectRoot: string):
|
|
12
|
+
export declare function initDatabase(projectRoot: string): DatabaseType;
|
|
13
13
|
export declare function getDb(): DatabaseType;
|
|
14
14
|
export declare function getRepos(): Repositories;
|
|
15
15
|
export declare function getServices(): Services;
|
package/dist/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK/D,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG/I,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,kBAAkB,CAAC;IACzB,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK/D,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG/I,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,kBAAkB,CAAC;IACzB,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AA0ED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAiC9D;AAED,wBAAgB,KAAK,IAAI,YAAY,CAGpC;AAED,wBAAgB,QAAQ,IAAI,YAAY,CAGvC;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAGtC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBxD;AAmCD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAIvF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAK5F;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAI/E;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,GAAG,IAAI,CAQvF;AAID,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAGnD;AAED,wBAAgB,uBAAuB,IAAI;IACzC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;CAC1E,GAAG,IAAI,CAWP;AAED,wBAAgB,WAAW,IAAI,MAAM,CAKpC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,GAAG,OAAmB,EACxC,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAcN"}
|
package/dist/database.js
CHANGED
|
@@ -17,25 +17,36 @@ let _dbPath = "";
|
|
|
17
17
|
// ─── Initialization ──────────────────────────────────────────────────
|
|
18
18
|
/**
|
|
19
19
|
* Open the SQLite database, auto-recovering from WAL/SHM corruption.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
*
|
|
21
|
+
* FLAW-2 FIX: busy_timeout is set immediately after open — BEFORE any other
|
|
22
|
+
* pragma — so concurrent access from multiple IDE windows waits up to 5 s
|
|
23
|
+
* instead of crashing with SQLITE_BUSY.
|
|
24
|
+
*
|
|
25
|
+
* FLAW-3 FIX: SQLITE_BUSY is no longer swallowed by the corruption-recovery
|
|
26
|
+
* path. A busy DB is not corrupt; the two conditions must not be conflated.
|
|
27
|
+
*
|
|
28
|
+
* If WAL/SHM files cause SQLITE_CORRUPT they are removed and the main DB is
|
|
29
|
+
* reopened (almost always intact in WAL mode). If the main DB itself is
|
|
30
|
+
* corrupt it is renamed to a timestamped .corrupt file and a fresh database
|
|
31
|
+
* is created.
|
|
24
32
|
*/
|
|
25
33
|
function openDatabaseWithRecovery(dbPath) {
|
|
26
|
-
|
|
34
|
+
const CORRUPTION_CODES = new Set(["SQLITE_CORRUPT", "SQLITE_NOTADB"]);
|
|
35
|
+
// ── First attempt ──────────────────────────────────────────────────
|
|
27
36
|
try {
|
|
28
37
|
const db = new Database(dbPath);
|
|
29
|
-
db.pragma("
|
|
38
|
+
db.pragma("busy_timeout = 5000"); // FLAW-2: set BEFORE any other pragma
|
|
39
|
+
db.pragma("journal_mode = WAL"); // smoke-test (waits up to 5 s if busy)
|
|
30
40
|
db.pragma("journal_mode = DELETE"); // reset so caller sets it properly
|
|
31
41
|
return db;
|
|
32
42
|
}
|
|
33
43
|
catch (err) {
|
|
34
|
-
const code = err.code;
|
|
35
|
-
|
|
44
|
+
const code = err.code ?? "";
|
|
45
|
+
// FLAW-3: never enter corruption recovery for a locked-but-healthy DB
|
|
46
|
+
if (!CORRUPTION_CODES.has(code))
|
|
36
47
|
throw err;
|
|
37
48
|
}
|
|
38
|
-
// Try removing WAL/SHM
|
|
49
|
+
// ── Try removing WAL/SHM ── main file is usually fine in WAL mode ──
|
|
39
50
|
const walPath = dbPath + "-wal";
|
|
40
51
|
const shmPath = dbPath + "-shm";
|
|
41
52
|
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
@@ -49,37 +60,43 @@ function openDatabaseWithRecovery(dbPath) {
|
|
|
49
60
|
}
|
|
50
61
|
try {
|
|
51
62
|
const db = new Database(dbPath);
|
|
63
|
+
db.pragma("busy_timeout = 5000"); // FLAW-2: set here too
|
|
52
64
|
db.pragma("journal_mode = WAL");
|
|
53
65
|
db.pragma("journal_mode = DELETE");
|
|
54
66
|
console.error("[Engram] [WARN] Recovered from corrupt WAL/SHM — some recent changes may be lost.");
|
|
55
67
|
return db;
|
|
56
68
|
}
|
|
57
69
|
catch (err) {
|
|
58
|
-
const code = err.code;
|
|
59
|
-
if (code
|
|
70
|
+
const code = err.code ?? "";
|
|
71
|
+
if (!CORRUPTION_CODES.has(code))
|
|
60
72
|
throw err;
|
|
61
73
|
}
|
|
62
|
-
// Main DB is also corrupt — rename
|
|
74
|
+
// ── Main DB is also corrupt — rename and start fresh ───────────────
|
|
63
75
|
try {
|
|
64
76
|
fs.renameSync(dbPath, dbPath + `.corrupt.${ts}.bak`);
|
|
65
77
|
}
|
|
66
78
|
catch { /* best-effort */ }
|
|
67
79
|
console.error("[Engram] [WARN] Main database was corrupt — renamed to backup, starting fresh.");
|
|
68
|
-
|
|
80
|
+
const freshDb = new Database(dbPath);
|
|
81
|
+
freshDb.pragma("busy_timeout = 5000"); // FLAW-2: set on fresh DB too
|
|
82
|
+
return freshDb;
|
|
69
83
|
}
|
|
70
|
-
|
|
84
|
+
// FLAW-5 FIX: initDatabase is synchronous (better-sqlite3 is sync throughout).
|
|
85
|
+
// The misleading async/Promise wrapper is removed — callers no longer need
|
|
86
|
+
// to remember to await a function that never actually awaits anything.
|
|
87
|
+
export function initDatabase(projectRoot) {
|
|
71
88
|
_projectRoot = projectRoot;
|
|
72
89
|
const dbDir = path.join(projectRoot, DB_DIR_NAME);
|
|
73
90
|
fs.mkdirSync(dbDir, { recursive: true });
|
|
74
91
|
ensureGitignore(projectRoot);
|
|
75
92
|
_dbPath = path.join(dbDir, DB_FILE_NAME);
|
|
76
93
|
_db = openDatabaseWithRecovery(_dbPath);
|
|
77
|
-
// Performance pragmas
|
|
94
|
+
// Performance pragmas (busy_timeout already set inside openDatabaseWithRecovery)
|
|
78
95
|
_db.pragma("journal_mode = WAL");
|
|
79
96
|
_db.pragma("foreign_keys = ON");
|
|
80
97
|
_db.pragma("synchronous = NORMAL");
|
|
81
98
|
_db.pragma("cache_size = -8000"); // 8MB cache
|
|
82
|
-
_db.pragma("busy_timeout = 5000");
|
|
99
|
+
_db.pragma("busy_timeout = 5000"); // re-affirm after WAL mode switch
|
|
83
100
|
// Run versioned migrations
|
|
84
101
|
runMigrations(_db);
|
|
85
102
|
// Initialize repositories
|
|
@@ -146,7 +163,21 @@ export function backupDatabase(destPath) {
|
|
|
146
163
|
return destPath;
|
|
147
164
|
}
|
|
148
165
|
// ─── Gitignore ───────────────────────────────────────────────────────
|
|
166
|
+
// FLAW-6 / FLAW-13 FIX: Write a self-contained .engram/.gitignore ("*") that
|
|
167
|
+
// protects the DB regardless of whether a root .gitignore exists or is writable.
|
|
168
|
+
// Also append to root .gitignore when present, as a belt-and-suspenders measure.
|
|
149
169
|
function ensureGitignore(projectRoot) {
|
|
170
|
+
// 1. Self-contained: .engram/.gitignore with wildcard — always works
|
|
171
|
+
try {
|
|
172
|
+
const dbDir = path.join(projectRoot, DB_DIR_NAME);
|
|
173
|
+
const innerIgnore = path.join(dbDir, ".gitignore");
|
|
174
|
+
if (!fs.existsSync(innerIgnore)) {
|
|
175
|
+
fs.mkdirSync(dbDir, { recursive: true });
|
|
176
|
+
fs.writeFileSync(innerIgnore, "# Engram AI agent memory — do not commit\n*\n!.gitignore\n", "utf-8");
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch { /* best-effort */ }
|
|
180
|
+
// 2. Belt-and-suspenders: append to root .gitignore if it exists
|
|
150
181
|
const gitignorePath = path.join(projectRoot, ".gitignore");
|
|
151
182
|
try {
|
|
152
183
|
if (fs.existsSync(gitignorePath)) {
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yEAAyE;AACzE,+EAA+E;AAE/E,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAqB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/I,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAWhD,IAAI,GAAG,GAAwB,IAAI,CAAC;AACpC,IAAI,MAAM,GAAwB,IAAI,CAAC;AACvC,IAAI,SAAS,GAAoB,IAAI,CAAC;AACtC,IAAI,YAAY,GAAW,OAAO,CAAC,GAAG,EAAE,CAAC;AACzC,IAAI,OAAO,GAAW,EAAE,CAAC;AAEzB,wEAAwE;AAExE
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/dist/global-db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-db.d.ts","sourceRoot":"","sources":["../src/global-db.ts"],"names":[],"mappings":"AAUA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAWtC,wBAAgB,WAAW,IAAI,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"global-db.d.ts","sourceRoot":"","sources":["../src/global-db.ts"],"names":[],"mappings":"AAUA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAWtC,wBAAgB,WAAW,IAAI,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,IAAI,CAmBlE;AAoCD,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAiB7E;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY3H;AAED,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,iBAAiB,EAAE,CAqB5F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,MAAW,GAAG,mBAAmB,EAAE,CAUhF"}
|
package/dist/global-db.js
CHANGED
|
@@ -23,6 +23,9 @@ export function getGlobalDb() {
|
|
|
23
23
|
fs.mkdirSync(GLOBAL_DB_DIR, { recursive: true });
|
|
24
24
|
}
|
|
25
25
|
const db = new Database(GLOBAL_DB_PATH);
|
|
26
|
+
// FLAW-7 FIX: set busy_timeout before any other pragma so concurrent
|
|
27
|
+
// multi-agent access waits instead of crashing with SQLITE_BUSY.
|
|
28
|
+
db.pragma("busy_timeout = 5000");
|
|
26
29
|
db.pragma("journal_mode = WAL");
|
|
27
30
|
db.pragma("foreign_keys = ON");
|
|
28
31
|
initGlobalSchema(db);
|
package/dist/global-db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-db.js","sourceRoot":"","sources":["../src/global-db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"global-db.js","sourceRoot":"","sources":["../src/global-db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -91,7 +91,7 @@ async function main() {
|
|
|
91
91
|
args.includes("-v") ||
|
|
92
92
|
args.includes("--install-hooks") ||
|
|
93
93
|
args.includes("--remove-hooks")) {
|
|
94
|
-
runInstaller(args);
|
|
94
|
+
await runInstaller(args); // FLAW-12 FIX: runInstaller is async; was missing await
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
// ─── record-commit (git hook handler) ──────────────────────────────
|
|
@@ -102,7 +102,8 @@ async function main() {
|
|
|
102
102
|
// Detect project root
|
|
103
103
|
const projectRoot = findProjectRoot();
|
|
104
104
|
log.info(`Project root: ${projectRoot}`);
|
|
105
|
-
// Initialize database
|
|
105
|
+
// Initialize database (synchronous — better-sqlite3 is sync throughout)
|
|
106
|
+
// FLAW-5 FIX: initDatabase is no longer async; no await needed
|
|
106
107
|
initDatabase(projectRoot);
|
|
107
108
|
log.info(`Database initialized at ${projectRoot}/.engram/memory.db`);
|
|
108
109
|
// Create MCP server
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,+EAA+E;AAC/E,EAAE;AACF,2DAA2D;AAC3D,2DAA2D;AAC3D,2DAA2D;AAC3D,2DAA2D;AAC3D,2DAA2D;AAC3D,2DAA2D;AAC3D,EAAE;AACF,kDAAkD;AAClD,wCAAwC;AACxC,EAAE;AACF,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAkB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,gFAAgF;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,+EAA+E;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,wEAAwE;AACxE,mEAAmE;AACnE,wEAAwE;AACxE,+EAA+E;AAE/E,KAAK,UAAU,eAAe;IAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QAEnB,yCAAyC;QACzC,MAAM,eAAe,GAAG,QAAQ,CAC9B,qCAAqC,EACrC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CACxC,CAAC,IAAI,EAAE,CAAC;QACT,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEpF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,MAAM,SAAS,GAAG,QAAQ,CAAC,6BAA6B,EAAE;YACxD,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;QAEzC,0BAA0B;QAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,4BAA4B,EAAE;YACxD,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,4CAA4C;QAC5C,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,yEAAyE,CAC1E,CAAC,GAAG,EAAgC,CAAC;YACtC,SAAS,GAAG,UAAU,EAAE,EAAE,IAAI,IAAI,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGvB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC,GAAG,CACN,SAAS,EACT,SAAS,EACT,IAAI,EACJ,cAAc,UAAU,KAAK,SAAS,EAAE,EACxC,+CAA+C,CAChD,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,SAAS,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,2BAA2B,YAAY,CAAC,MAAM,wBAAwB,UAAU,EAAE,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,sDAAsD;QACtD,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,yEAAyE;AAEzE,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,yEAAyE;IACzE,IACE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC/B,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
import type { IdeDefinition } from "./ide-configs.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* FLAW-15 FIX: Read version from package.json relative to the dist output,
|
|
4
|
+
* but fall back to the SERVER_VERSION constant as the single source of truth.
|
|
5
|
+
* This is resilient to build output structure changes.
|
|
6
|
+
*/
|
|
3
7
|
export declare function getInstallerVersion(): string;
|
|
4
8
|
/**
|
|
5
9
|
* Generate the Engram server entry tailored to a specific IDE's requirements.
|
|
6
10
|
* Includes _engram_version so the installer can detect upgrades and legacy installs.
|
|
7
11
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
12
|
+
* FLAW-4 FIX: When the IDE definition has a workspaceVar, it is injected as
|
|
13
|
+
* `--project-root=<var>`. At runtime the IDE expands the variable to the actual
|
|
14
|
+
* workspace path before spawning the server, so findProjectRoot() receives the
|
|
15
|
+
* correct root with no heuristics needed.
|
|
16
|
+
*
|
|
17
|
+
* @param ide IDE definition (controls type, cmd wrapper, workspaceVar, etc.)
|
|
18
|
+
* @param universal When true, adds --mode=universal to args.
|
|
11
19
|
*/
|
|
12
20
|
export declare function makeEngramEntry(ide: IdeDefinition, universal?: boolean): Record<string, any>;
|
|
13
21
|
/**
|
|
14
|
-
* Read and parse a JSON config file.
|
|
22
|
+
* Read and parse a JSON config file.
|
|
23
|
+
* FLAW-8 FIX: distinguish between "file not found" and "file has invalid JSON".
|
|
24
|
+
* Returns:
|
|
25
|
+
* null — file does not exist (safe to create fresh)
|
|
26
|
+
* object — parsed successfully
|
|
27
|
+
* Throws ParseError (with .isParseError = true) when the file exists but
|
|
28
|
+
* contains invalid JSON — callers should warn and bail rather than
|
|
29
|
+
* silently overwriting the user's config.
|
|
15
30
|
*/
|
|
31
|
+
export declare class ConfigParseError extends Error {
|
|
32
|
+
readonly filePath: string;
|
|
33
|
+
readonly cause: unknown;
|
|
34
|
+
constructor(filePath: string, cause: unknown);
|
|
35
|
+
}
|
|
16
36
|
export declare function readJson(filePath: string): Record<string, any> | null;
|
|
17
37
|
/**
|
|
18
38
|
* Write a JSON config file, creating parent directories if needed.
|
|
@@ -21,13 +41,14 @@ export declare function writeJson(filePath: string, data: any): void;
|
|
|
21
41
|
export type InstallResult = "added" | "upgraded" | "exists" | "legacy-upgraded";
|
|
22
42
|
/**
|
|
23
43
|
* Add or update the Engram entry in a config file.
|
|
24
|
-
*
|
|
44
|
+
* FLAW-8 FIX: if the config file exists but has invalid JSON, back it up
|
|
45
|
+
* before overwriting so the user doesn't lose their other tool configs.
|
|
25
46
|
*
|
|
26
47
|
* Returns:
|
|
27
|
-
* "added"
|
|
28
|
-
* "exists"
|
|
29
|
-
* "upgraded"
|
|
30
|
-
* "legacy-upgraded" — entry existed but had no _engram_version (pre-tracking era)
|
|
48
|
+
* "added" — fresh install, no prior entry
|
|
49
|
+
* "exists" — already installed at the same version, no changes made
|
|
50
|
+
* "upgraded" — updated from an older tracked version to the current one
|
|
51
|
+
* "legacy-upgraded" — entry existed but had no _engram_version (pre-tracking era)
|
|
31
52
|
*/
|
|
32
53
|
export declare function addToConfig(configPath: string, ide: IdeDefinition, universal?: boolean): InstallResult;
|
|
33
54
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAe5C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,UAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoC1F;AAED;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;aACX,QAAQ,EAAE,MAAM;aAAkB,KAAK,EAAE,OAAO;gBAAhD,QAAQ,EAAE,MAAM,EAAkB,KAAK,EAAE,OAAO;CAI/E;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAQrE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAG3D;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEhF;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,UAAQ,GAAG,aAAa,CA2CpG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAgBhF"}
|
|
@@ -4,12 +4,24 @@
|
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import path from "path";
|
|
6
6
|
import { fileURLToPath } from "url";
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* FLAW-15 FIX: Read version from package.json relative to the dist output,
|
|
9
|
+
* but fall back to the SERVER_VERSION constant as the single source of truth.
|
|
10
|
+
* This is resilient to build output structure changes.
|
|
11
|
+
*/
|
|
8
12
|
export function getInstallerVersion() {
|
|
9
13
|
try {
|
|
10
14
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
// Try dist/installer/ → ../../package.json (standard build layout)
|
|
16
|
+
for (const rel of ["../../package.json", "../../../package.json", "../../../../package.json"]) {
|
|
17
|
+
const pkgPath = path.resolve(__dirname, rel);
|
|
18
|
+
if (fs.existsSync(pkgPath)) {
|
|
19
|
+
const ver = JSON.parse(fs.readFileSync(pkgPath, "utf-8")).version;
|
|
20
|
+
if (ver)
|
|
21
|
+
return ver;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return "unknown";
|
|
13
25
|
}
|
|
14
26
|
catch {
|
|
15
27
|
return "unknown";
|
|
@@ -19,9 +31,13 @@ export function getInstallerVersion() {
|
|
|
19
31
|
* Generate the Engram server entry tailored to a specific IDE's requirements.
|
|
20
32
|
* Includes _engram_version so the installer can detect upgrades and legacy installs.
|
|
21
33
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
34
|
+
* FLAW-4 FIX: When the IDE definition has a workspaceVar, it is injected as
|
|
35
|
+
* `--project-root=<var>`. At runtime the IDE expands the variable to the actual
|
|
36
|
+
* workspace path before spawning the server, so findProjectRoot() receives the
|
|
37
|
+
* correct root with no heuristics needed.
|
|
38
|
+
*
|
|
39
|
+
* @param ide IDE definition (controls type, cmd wrapper, workspaceVar, etc.)
|
|
40
|
+
* @param universal When true, adds --mode=universal to args.
|
|
25
41
|
*/
|
|
26
42
|
export function makeEngramEntry(ide, universal = false) {
|
|
27
43
|
const entry = {};
|
|
@@ -34,6 +50,12 @@ export function makeEngramEntry(ide, universal = false) {
|
|
|
34
50
|
if (universal) {
|
|
35
51
|
baseArgs.push("--mode=universal");
|
|
36
52
|
}
|
|
53
|
+
// FLAW-4 FIX: inject workspace root variable when the IDE supports it.
|
|
54
|
+
// The IDE expands this variable at spawn time (e.g. ${workspaceFolder} →
|
|
55
|
+
// /path/to/project) so the server always receives the correct project path.
|
|
56
|
+
if (ide.workspaceVar) {
|
|
57
|
+
baseArgs.push(`--project-root=${ide.workspaceVar}`);
|
|
58
|
+
}
|
|
37
59
|
// Windows cmd /c wrapper for npx (npx is a .cmd on Windows)
|
|
38
60
|
if (ide.requiresCmdWrapper) {
|
|
39
61
|
entry.command = "cmd";
|
|
@@ -51,14 +73,34 @@ export function makeEngramEntry(ide, universal = false) {
|
|
|
51
73
|
return entry;
|
|
52
74
|
}
|
|
53
75
|
/**
|
|
54
|
-
* Read and parse a JSON config file.
|
|
76
|
+
* Read and parse a JSON config file.
|
|
77
|
+
* FLAW-8 FIX: distinguish between "file not found" and "file has invalid JSON".
|
|
78
|
+
* Returns:
|
|
79
|
+
* null — file does not exist (safe to create fresh)
|
|
80
|
+
* object — parsed successfully
|
|
81
|
+
* Throws ParseError (with .isParseError = true) when the file exists but
|
|
82
|
+
* contains invalid JSON — callers should warn and bail rather than
|
|
83
|
+
* silently overwriting the user's config.
|
|
55
84
|
*/
|
|
85
|
+
export class ConfigParseError extends Error {
|
|
86
|
+
filePath;
|
|
87
|
+
cause;
|
|
88
|
+
constructor(filePath, cause) {
|
|
89
|
+
super(`Failed to parse JSON config at ${filePath}: ${cause}`);
|
|
90
|
+
this.filePath = filePath;
|
|
91
|
+
this.cause = cause;
|
|
92
|
+
this.name = "ConfigParseError";
|
|
93
|
+
}
|
|
94
|
+
}
|
|
56
95
|
export function readJson(filePath) {
|
|
96
|
+
if (!fs.existsSync(filePath))
|
|
97
|
+
return null; // file not found — safe to create
|
|
57
98
|
try {
|
|
58
99
|
return JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
59
100
|
}
|
|
60
|
-
catch {
|
|
61
|
-
|
|
101
|
+
catch (e) {
|
|
102
|
+
// File exists but is invalid JSON — signal this distinctly
|
|
103
|
+
throw new ConfigParseError(filePath, e);
|
|
62
104
|
}
|
|
63
105
|
}
|
|
64
106
|
/**
|
|
@@ -70,16 +112,38 @@ export function writeJson(filePath, data) {
|
|
|
70
112
|
}
|
|
71
113
|
/**
|
|
72
114
|
* Add or update the Engram entry in a config file.
|
|
73
|
-
*
|
|
115
|
+
* FLAW-8 FIX: if the config file exists but has invalid JSON, back it up
|
|
116
|
+
* before overwriting so the user doesn't lose their other tool configs.
|
|
74
117
|
*
|
|
75
118
|
* Returns:
|
|
76
|
-
* "added"
|
|
77
|
-
* "exists"
|
|
78
|
-
* "upgraded"
|
|
79
|
-
* "legacy-upgraded" — entry existed but had no _engram_version (pre-tracking era)
|
|
119
|
+
* "added" — fresh install, no prior entry
|
|
120
|
+
* "exists" — already installed at the same version, no changes made
|
|
121
|
+
* "upgraded" — updated from an older tracked version to the current one
|
|
122
|
+
* "legacy-upgraded" — entry existed but had no _engram_version (pre-tracking era)
|
|
80
123
|
*/
|
|
81
124
|
export function addToConfig(configPath, ide, universal = false) {
|
|
82
|
-
let config
|
|
125
|
+
let config;
|
|
126
|
+
try {
|
|
127
|
+
config = readJson(configPath) ?? {};
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
if (e instanceof ConfigParseError) {
|
|
131
|
+
// Backup the broken file then start fresh
|
|
132
|
+
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
133
|
+
const bakPath = configPath + `.invalid.${ts}.bak`;
|
|
134
|
+
try {
|
|
135
|
+
fs.copyFileSync(configPath, bakPath);
|
|
136
|
+
}
|
|
137
|
+
catch { /* best-effort */ }
|
|
138
|
+
console.warn(`[Engram] Config at ${configPath} contains invalid JSON.`);
|
|
139
|
+
console.warn(` Backed up to: ${bakPath}`);
|
|
140
|
+
console.warn(` Writing a fresh config with only the Engram entry.`);
|
|
141
|
+
config = {};
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
throw e;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
83
147
|
const key = ide.configKey;
|
|
84
148
|
if (!config[key])
|
|
85
149
|
config[key] = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC
|
|
1
|
+
{"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"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"}
|