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.
Files changed (38) hide show
  1. package/LICENSE +35 -0
  2. package/README.md +194 -358
  3. package/dist/constants.d.ts +21 -0
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +47 -1
  6. package/dist/constants.js.map +1 -1
  7. package/dist/database.d.ts +1 -1
  8. package/dist/database.d.ts.map +1 -1
  9. package/dist/database.js +47 -16
  10. package/dist/database.js.map +1 -1
  11. package/dist/global-db.d.ts.map +1 -1
  12. package/dist/global-db.js +3 -0
  13. package/dist/global-db.js.map +1 -1
  14. package/dist/index.js +3 -2
  15. package/dist/index.js.map +1 -1
  16. package/dist/installer/config-writer.d.ts +31 -10
  17. package/dist/installer/config-writer.d.ts.map +1 -1
  18. package/dist/installer/config-writer.js +79 -15
  19. package/dist/installer/config-writer.js.map +1 -1
  20. package/dist/installer/ide-configs.d.ts +9 -0
  21. package/dist/installer/ide-configs.d.ts.map +1 -1
  22. package/dist/installer/ide-configs.js +7 -19
  23. package/dist/installer/ide-configs.js.map +1 -1
  24. package/dist/installer/ide-detector.d.ts +10 -6
  25. package/dist/installer/ide-detector.d.ts.map +1 -1
  26. package/dist/installer/ide-detector.js +32 -7
  27. package/dist/installer/ide-detector.js.map +1 -1
  28. package/dist/installer/index.d.ts.map +1 -1
  29. package/dist/installer/index.js +25 -6
  30. package/dist/installer/index.js.map +1 -1
  31. package/dist/utils.d.ts +4 -1
  32. package/dist/utils.d.ts.map +1 -1
  33. package/dist/utils.js +149 -13
  34. package/dist/utils.js.map +1 -1
  35. package/package.json +2 -3
  36. package/scripts/fix-mcp-config.js +0 -23
  37. package/scripts/inject-release-notes.js +0 -67
  38. package/scripts/install-mcp.js +0 -175
@@ -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";
@@ -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;AAGH,eAAO,MAAM,eAAe,UAmB3B,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"}
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
- export const PROJECT_MARKERS = [
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";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export interface Services {
9
9
  update: UpdateService;
10
10
  agentRules: AgentRulesService;
11
11
  }
12
- export declare function initDatabase(projectRoot: string): Promise<DatabaseType>;
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;
@@ -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;AAwDD,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAiC7E;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;AAkBD,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"}
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
- * If the WAL or SHM files cause SQLITE_CORRUPT, they are removed and the
21
- * main DB is reopened (which is almost always intact in WAL mode).
22
- * If the main DB itself is corrupt, it is renamed to a timestamped .corrupt
23
- * file and a fresh database is created.
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
- // First attempt
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("journal_mode = WAL"); // quick smoke-test
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
- if (code !== "SQLITE_CORRUPT" && code !== "SQLITE_NOTADB")
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 the main file is usually fine in WAL mode
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 !== "SQLITE_CORRUPT" && code !== "SQLITE_NOTADB")
70
+ const code = err.code ?? "";
71
+ if (!CORRUPTION_CODES.has(code))
60
72
  throw err;
61
73
  }
62
- // Main DB is also corrupt — rename it and start fresh
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
- return new Database(dbPath);
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
- export async function initDatabase(projectRoot) {
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)) {
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
@@ -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,CAgBlE;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"}
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);
@@ -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":"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"}
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
- /** Read the installed package version (used to stamp _engram_version in IDE configs). */
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
- * @param ide IDE definition (controls type, cmd wrapper, etc.)
9
- * @param universal When true, adds --mode=universal and --project-root to args.
10
- * Uses IDE-appropriate workspace variable when available.
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. Returns null if file doesn't exist or is invalid.
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
- * Uses the IDE's configKey ("mcpServers" or "servers") to write the correct JSON structure.
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" — fresh install, no prior entry
28
- * "exists" — already installed at the same version, no changes made
29
- * "upgraded" — updated from an older tracked version to the current one
30
- * "legacy-upgraded" — entry existed but had no _engram_version (pre-tracking era), now stamped
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,yFAAyF;AACzF,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,UAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA8B1F;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAMrE;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;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,UAAQ,GAAG,aAAa,CA2BpG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAgBhF"}
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
- /** Read the installed package version (used to stamp _engram_version in IDE configs). */
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
- const pkgPath = path.resolve(__dirname, "../../package.json");
12
- return JSON.parse(fs.readFileSync(pkgPath, "utf-8")).version;
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
- * @param ide IDE definition (controls type, cmd wrapper, etc.)
23
- * @param universal When true, adds --mode=universal and --project-root to args.
24
- * Uses IDE-appropriate workspace variable when available.
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. Returns null if file doesn't exist or is invalid.
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
- return null;
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
- * Uses the IDE's configKey ("mcpServers" or "servers") to write the correct JSON structure.
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" — fresh install, no prior entry
77
- * "exists" — already installed at the same version, no changes made
78
- * "upgraded" — updated from an older tracked version to the current one
79
- * "legacy-upgraded" — entry existed but had no _engram_version (pre-tracking era), now stamped
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 = readJson(configPath) || {};
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":"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"}
1
+ {"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"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"}