agentdb 3.0.0-alpha.18 → 3.0.0-alpha.19

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.
@@ -14,6 +14,32 @@
14
14
  * - PRAGMA commands validated against whitelist
15
15
  * - Removed eval() usage (replaced with async import)
16
16
  */
17
+ export interface FileFingerprint {
18
+ exists: boolean;
19
+ device?: number;
20
+ inode?: number;
21
+ mode?: number;
22
+ size?: number;
23
+ mtimeMs?: number;
24
+ ctimeMs?: number;
25
+ sha256?: string;
26
+ }
27
+ export interface DatabaseFileState {
28
+ database: FileFingerprint;
29
+ wal: FileFingerprint;
30
+ shm: FileFingerprint;
31
+ journal: FileFingerprint;
32
+ }
33
+ export declare class SqlJsConcurrentModificationError extends Error {
34
+ readonly code = "AGENTDB_SQLJS_CONCURRENT_MODIFICATION";
35
+ constructor(filename: string);
36
+ }
37
+ export declare function captureDatabaseFileState(filename: string): DatabaseFileState;
38
+ export declare function loadSqlJsDatabaseFile(filename: string): {
39
+ data: Uint8Array | null;
40
+ state: DatabaseFileState;
41
+ };
42
+ export declare function persistSqlJsDatabase(filename: string, data: Uint8Array, expectedState: DatabaseFileState): DatabaseFileState;
17
43
  /**
18
44
  * Get the SQLite database implementation. Prefers native `better-sqlite3`
19
45
  * when loadable; falls back to WASM `sql.js` (no build tools required).
@@ -1 +1 @@
1
- {"version":3,"file":"db-fallback.d.ts","sourceRoot":"","sources":["../../src/db-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH;;;GAGG;AAEH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,CAuC9D;AAED,4DAA4D;AAC5D,wBAAgB,oCAAoC,IAAI,IAAI,CAG3D;AAoPD;;GAEG;AAEH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAGtF;AAED;;;;;;;GAOG;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,GAAE,MAAmB,GAAG,GAAG,CA8IxF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAiBA"}
1
+ {"version":3,"file":"db-fallback.d.ts","sourceRoot":"","sources":["../../src/db-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,eAAe,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,2CAA2C;gBAE5C,QAAQ,EAAE,MAAM;CAO7B;AAoCD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAO5E;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CA4BvD;AAoBD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,iBAAiB,GAC/B,iBAAiB,CAyDnB;AAED;;;GAGG;AAEH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,CA4C9D;AAED,4DAA4D;AAC5D,wBAAgB,oCAAoC,IAAI,IAAI,CAG3D;AAiPD;;GAEG;AAEH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAGtF;AAED;;;;;;;GAOG;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,GAAE,MAAmB,GAAG,GAAG,CA0JxF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAiBA"}
@@ -15,11 +15,168 @@
15
15
  * - Removed eval() usage (replaced with async import)
16
16
  */
17
17
  import { validatePragmaCommand, ValidationError } from './security/input-validation.js';
18
+ import { createHash, randomUUID } from 'node:crypto';
18
19
  import * as fs from 'fs';
19
20
  import * as path from 'path';
20
21
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- cached impl (better-sqlite3 class or sql.js wrapper class)
21
22
  let cachedImpl = null;
22
23
  let cachedImplKind = null;
24
+ export class SqlJsConcurrentModificationError extends Error {
25
+ code = 'AGENTDB_SQLJS_CONCURRENT_MODIFICATION';
26
+ constructor(filename) {
27
+ super(`Refusing to overwrite "${filename}" because it changed after this sql.js instance opened. ` +
28
+ 'Another process may have written to the database; reopen it before retrying.');
29
+ this.name = 'SqlJsConcurrentModificationError';
30
+ }
31
+ }
32
+ function fingerprintFile(filename) {
33
+ let fd;
34
+ try {
35
+ fd = fs.openSync(filename, 'r');
36
+ const before = fs.fstatSync(fd);
37
+ const data = fs.readFileSync(fd);
38
+ const after = fs.fstatSync(fd);
39
+ if (before.dev !== after.dev ||
40
+ before.ino !== after.ino ||
41
+ before.size !== after.size ||
42
+ before.mtimeMs !== after.mtimeMs ||
43
+ before.ctimeMs !== after.ctimeMs) {
44
+ throw new SqlJsConcurrentModificationError(filename);
45
+ }
46
+ return {
47
+ exists: true,
48
+ device: after.dev,
49
+ inode: after.ino,
50
+ mode: after.mode,
51
+ size: after.size,
52
+ mtimeMs: after.mtimeMs,
53
+ ctimeMs: after.ctimeMs,
54
+ sha256: createHash('sha256').update(data).digest('hex'),
55
+ };
56
+ }
57
+ catch (error) {
58
+ if (error.code === 'ENOENT')
59
+ return { exists: false };
60
+ throw error;
61
+ }
62
+ finally {
63
+ if (fd !== undefined)
64
+ fs.closeSync(fd);
65
+ }
66
+ }
67
+ export function captureDatabaseFileState(filename) {
68
+ return {
69
+ database: fingerprintFile(filename),
70
+ wal: fingerprintFile(`${filename}-wal`),
71
+ shm: fingerprintFile(`${filename}-shm`),
72
+ journal: fingerprintFile(`${filename}-journal`),
73
+ };
74
+ }
75
+ export function loadSqlJsDatabaseFile(filename) {
76
+ const state = captureDatabaseFileState(filename);
77
+ if ((state.wal.exists && state.wal.size > 0) ||
78
+ (state.journal.exists && state.journal.size > 0)) {
79
+ throw new Error(`Refusing to open "${filename}" with sql.js while an active SQLite WAL or journal exists. ` +
80
+ 'Checkpoint/close the other SQLite writer first.');
81
+ }
82
+ if (!state.database.exists)
83
+ return { data: null, state };
84
+ // fingerprintFile hashes the exact bytes read from a stable descriptor.
85
+ // Read once more and verify the digest so the returned bytes and baseline
86
+ // are guaranteed to describe the same database generation.
87
+ const data = fs.readFileSync(filename);
88
+ const digest = createHash('sha256').update(data).digest('hex');
89
+ if (digest !== state.database.sha256) {
90
+ throw new SqlJsConcurrentModificationError(filename);
91
+ }
92
+ if (data.length < 16 ||
93
+ data.subarray(0, 16).toString('utf8') !== 'SQLite format 3\u0000') {
94
+ throw new Error(`Refusing to open invalid SQLite database file "${filename}"`);
95
+ }
96
+ return { data: new Uint8Array(data), state };
97
+ }
98
+ function sameDatabaseFileState(left, right) {
99
+ return JSON.stringify(left) === JSON.stringify(right);
100
+ }
101
+ function fsyncDirectory(directory) {
102
+ let fd;
103
+ try {
104
+ fd = fs.openSync(directory, 'r');
105
+ fs.fsyncSync(fd);
106
+ }
107
+ catch (error) {
108
+ // Some platforms/filesystems do not permit opening or syncing directories.
109
+ const code = error.code;
110
+ if (code !== 'EINVAL' && code !== 'EPERM' && code !== 'EISDIR')
111
+ throw error;
112
+ }
113
+ finally {
114
+ if (fd !== undefined)
115
+ fs.closeSync(fd);
116
+ }
117
+ }
118
+ export function persistSqlJsDatabase(filename, data, expectedState) {
119
+ const directory = path.dirname(filename);
120
+ fs.mkdirSync(directory, { recursive: true });
121
+ if (fs.existsSync(filename) && fs.lstatSync(filename).isSymbolicLink()) {
122
+ throw new Error(`Refusing to replace symbolic-link database path "${filename}"`);
123
+ }
124
+ const lockPath = `${filename}.agentdb.lock`;
125
+ let lockFd;
126
+ let tempPath;
127
+ try {
128
+ try {
129
+ lockFd = fs.openSync(lockPath, 'wx', 0o600);
130
+ fs.writeSync(lockFd, `${process.pid}\n`);
131
+ fs.fsyncSync(lockFd);
132
+ }
133
+ catch (error) {
134
+ if (error.code === 'EEXIST') {
135
+ throw new SqlJsConcurrentModificationError(filename);
136
+ }
137
+ throw error;
138
+ }
139
+ if (!sameDatabaseFileState(captureDatabaseFileState(filename), expectedState)) {
140
+ throw new SqlJsConcurrentModificationError(filename);
141
+ }
142
+ tempPath = path.join(directory, `.${path.basename(filename)}.${process.pid}.${randomUUID()}.tmp`);
143
+ const tempFd = fs.openSync(tempPath, 'wx', 0o600);
144
+ try {
145
+ fs.writeFileSync(tempFd, Buffer.from(data));
146
+ if (expectedState.database.exists && expectedState.database.mode !== undefined) {
147
+ fs.fchmodSync(tempFd, expectedState.database.mode);
148
+ }
149
+ fs.fsyncSync(tempFd);
150
+ }
151
+ finally {
152
+ fs.closeSync(tempFd);
153
+ }
154
+ // Recheck after export/write so a non-cooperating SQLite writer cannot be
155
+ // silently overwritten merely because it raced with the temporary write.
156
+ if (!sameDatabaseFileState(captureDatabaseFileState(filename), expectedState)) {
157
+ throw new SqlJsConcurrentModificationError(filename);
158
+ }
159
+ fs.renameSync(tempPath, filename);
160
+ tempPath = undefined;
161
+ fsyncDirectory(directory);
162
+ return captureDatabaseFileState(filename);
163
+ }
164
+ finally {
165
+ if (tempPath) {
166
+ try {
167
+ fs.unlinkSync(tempPath);
168
+ }
169
+ catch { /* best-effort cleanup */ }
170
+ }
171
+ if (lockFd !== undefined) {
172
+ fs.closeSync(lockFd);
173
+ try {
174
+ fs.unlinkSync(lockPath);
175
+ }
176
+ catch { /* preserve the original error */ }
177
+ }
178
+ }
179
+ }
23
180
  /**
24
181
  * Get the SQLite database implementation. Prefers native `better-sqlite3`
25
182
  * when loadable; falls back to WASM `sql.js` (no build tools required).
@@ -35,9 +192,14 @@ export async function getDatabaseImplementation() {
35
192
  const mod = await import('better-sqlite3');
36
193
  const BetterSqlite3 = mod.default ?? mod;
37
194
  if (typeof BetterSqlite3 === 'function') {
195
+ // Importing the JS wrapper can succeed even when its native binding is
196
+ // missing or incompatible with the current Node ABI. Probe an actual
197
+ // in-memory connection before selecting it.
198
+ const probe = new BetterSqlite3(':memory:');
199
+ probe.close();
38
200
  cachedImpl = BetterSqlite3;
39
201
  cachedImplKind = 'better-sqlite3';
40
- console.log('✅ Using native better-sqlite3');
202
+ console.error('✅ Using native better-sqlite3');
41
203
  return cachedImpl;
42
204
  }
43
205
  }
@@ -47,7 +209,7 @@ export async function getDatabaseImplementation() {
47
209
  }
48
210
  // 2. Fall back to sql.js (WASM, no build tools).
49
211
  try {
50
- console.log('✅ Using sql.js (WASM SQLite, no build tools required)');
212
+ console.error('✅ Using sql.js (WASM SQLite, no build tools required)');
51
213
  // sql.js requires async initialization
52
214
  const mod = await import('sql.js');
53
215
  const SQL = await mod.default();
@@ -77,6 +239,7 @@ function createSqlJsWrapper(SQL) {
77
239
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- sql.js Database instance
78
240
  db;
79
241
  filename;
242
+ fileState;
80
243
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- sql.js Statement instances
81
244
  activeStatements = new Map();
82
245
  // Cache wrappers by SQL text so repeated db.prepare(sameSql) returns the
@@ -90,23 +253,18 @@ function createSqlJsWrapper(SQL) {
90
253
  intervalId = null;
91
254
  constructor(filename, _options) {
92
255
  this.filename = filename;
256
+ const loaded = filename === ':memory:' ? null : loadSqlJsDatabaseFile(filename);
257
+ this.fileState = loaded?.state ?? null;
93
258
  // In-memory database
94
259
  if (filename === ':memory:') {
95
260
  this.db = new SQL.Database();
96
261
  }
97
262
  else {
98
263
  // File-based database - use safe fs module (no eval)
99
- try {
100
- if (fs.existsSync(filename)) {
101
- const buffer = fs.readFileSync(filename);
102
- this.db = new SQL.Database(buffer);
103
- }
104
- else {
105
- this.db = new SQL.Database();
106
- }
264
+ if (loaded.data) {
265
+ this.db = new SQL.Database(loaded.data);
107
266
  }
108
- catch (error) {
109
- console.warn('⚠️ Could not read database file:', error.message);
267
+ else {
110
268
  this.db = new SQL.Database();
111
269
  }
112
270
  }
@@ -223,13 +381,8 @@ function createSqlJsWrapper(SQL) {
223
381
  // Save to file if needed
224
382
  if (this.filename !== ':memory:') {
225
383
  try {
226
- // Create parent directories if they don't exist
227
- const dir = path.dirname(this.filename);
228
- if (!fs.existsSync(dir)) {
229
- fs.mkdirSync(dir, { recursive: true });
230
- }
231
384
  const data = this.db.export();
232
- fs.writeFileSync(this.filename, Buffer.from(data));
385
+ this.fileState = persistSqlJsDatabase(this.filename, data, this.fileState);
233
386
  }
234
387
  catch (error) {
235
388
  console.error('❌ Could not save database to file:', error.message);
@@ -238,6 +391,13 @@ function createSqlJsWrapper(SQL) {
238
391
  }
239
392
  }
240
393
  close() {
394
+ let saveError;
395
+ try {
396
+ this.save();
397
+ }
398
+ catch (error) {
399
+ saveError = error;
400
+ }
241
401
  // Clear interval timer
242
402
  if (this.intervalId) {
243
403
  clearInterval(this.intervalId);
@@ -254,9 +414,9 @@ function createSqlJsWrapper(SQL) {
254
414
  }
255
415
  this.activeStatements.clear();
256
416
  this.statementCache.clear();
257
- // Save to file before closing
258
- this.save();
259
417
  this.db.close();
418
+ if (saveError)
419
+ throw saveError;
260
420
  }
261
421
  pragma(pragma, _options) {
262
422
  try {
@@ -316,6 +476,14 @@ export function wrapExistingSqlJsDatabase(rawDb, filename = ':memory:') {
316
476
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- prepared-statement wrapper objects
317
477
  const statementCache = new Map();
318
478
  let statementCounter = 0;
479
+ const loaded = filename === ':memory:' ? null : loadSqlJsDatabaseFile(filename);
480
+ let fileState = loaded?.state ?? null;
481
+ if (loaded?.data) {
482
+ const rawDigest = createHash('sha256').update(rawDb.export()).digest('hex');
483
+ if (rawDigest !== fileState.database.sha256) {
484
+ throw new SqlJsConcurrentModificationError(filename);
485
+ }
486
+ }
319
487
  return {
320
488
  prepare(sql) {
321
489
  const cached = statementCache.get(sql);
@@ -409,15 +577,18 @@ export function wrapExistingSqlJsDatabase(rawDb, filename = ':memory:') {
409
577
  },
410
578
  save() {
411
579
  if (filename !== ':memory:') {
412
- const dir = path.dirname(filename);
413
- if (!fs.existsSync(dir)) {
414
- fs.mkdirSync(dir, { recursive: true });
415
- }
416
580
  const data = rawDb.export();
417
- fs.writeFileSync(filename, Buffer.from(data));
581
+ fileState = persistSqlJsDatabase(filename, data, fileState);
418
582
  }
419
583
  },
420
584
  close() {
585
+ let saveError;
586
+ try {
587
+ this.save();
588
+ }
589
+ catch (error) {
590
+ saveError = error;
591
+ }
421
592
  for (const [, stmt] of activeStatements.entries()) {
422
593
  try {
423
594
  stmt.free();
@@ -426,8 +597,9 @@ export function wrapExistingSqlJsDatabase(rawDb, filename = ':memory:') {
426
597
  }
427
598
  activeStatements.clear();
428
599
  statementCache.clear();
429
- this.save();
430
600
  rawDb.close();
601
+ if (saveError)
602
+ throw saveError;
431
603
  },
432
604
  pragma(pragma, _options) {
433
605
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"db-fallback.js","sourceRoot":"","sources":["../../src/db-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAK7B,4HAA4H;AAC5H,IAAI,UAAU,GAAQ,IAAI,CAAC;AAC3B,IAAI,cAAc,GAAuC,IAAI,CAAC;AAE9D;;;GAGG;AACH,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,sEAAsE;IACtE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,yFAAyF;YACzF,MAAM,GAAG,GAAQ,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;YACzC,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;gBACxC,UAAU,GAAG,aAAa,CAAC;gBAC3B,cAAc,GAAG,gBAAgB,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBAC7C,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;QAC9D,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QAErE,uCAAuC;QACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QAEhC,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACrC,cAAc,GAAG,QAAQ,CAAC;QAC1B,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,gDAAgD;YAChD,gEAAgE;YAChE,kEAAkE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,oCAAoC;IAClD,UAAU,GAAG,IAAI,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,yFAAyF;AACzF,SAAS,kBAAkB,CAAC,GAAQ;IAClC,OAAO,MAAM,aAAa;QACxB,0FAA0F;QAClF,EAAE,CAAM;QACR,QAAQ,CAAS;QACzB,4FAA4F;QACpF,gBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;QACvD,yEAAyE;QACzE,kEAAkE;QAClE,oDAAoD;QACpD,6DAA6D;QAC7D,sEAAsE;QACtE,oGAAoG;QAC5F,cAAc,GAAqB,IAAI,GAAG,EAAE,CAAC;QAC7C,gBAAgB,GAAW,CAAC,CAAC;QAC7B,UAAU,GAA0B,IAAI,CAAC;QAEjD,YAAY,QAAgB,EAAE,QAAkB;YAC9C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEzB,qBAAqB;YACrB,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,qDAAqD;gBACrD,IAAI,CAAC;oBACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;wBACzC,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACrC,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;oBAC5E,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,6DAA6D;YAC7D,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,+CAA+C,CAAC,CAAC;gBAC1G,CAAC;YACH,CAAC,EAAE,KAAK,CAAC,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,GAAW;YACjB,uEAAuE;YACvE,oEAAoE;YACpE,kEAAkE;YAClE,qCAAqC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC;YAElB,yBAAyB;YACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAExC,MAAM,YAAY,GAAG,GAAG,EAAE;gBACxB,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,WAAW,GAAG,IAAI,CAAC;oBACnB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACrC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG;gBACd,0GAA0G;gBAC1G,GAAG,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;oBACxB,IAAI,WAAW;wBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBAChE,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAClB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACZ,IAAI,CAAC,KAAK,EAAE,CAAC;wBAEb,OAAO;4BACL,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;4BAClC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBACpF,CAAC;oBACJ,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,YAAY,EAAE,CAAC;wBACf,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,0GAA0G;gBAC1G,GAAG,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;oBACxB,IAAI,WAAW;wBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBAChE,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;wBAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;4BACZ,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;wBAEb,MAAM,MAAM,GAA4B,EAAE,CAAC;wBAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;4BAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC5B,CAAC,CAAC,CAAC;wBAEH,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,YAAY,EAAE,CAAC;wBACf,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,0GAA0G;gBAC1G,GAAG,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;oBACxB,IAAI,WAAW;wBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBAChE,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAClB,MAAM,OAAO,GAA8B,EAAE,CAAC;wBAE9C,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;4BACnB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;4BACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BAE1B,MAAM,MAAM,GAA4B,EAAE,CAAC;4BAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;gCAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;4BAC5B,CAAC,CAAC,CAAC;4BAEH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACvB,CAAC;wBAED,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,OAAO,OAAO,CAAC;oBACjB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,YAAY,EAAE,CAAC;wBACf,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,QAAQ,EAAE,GAAG,EAAE;oBACb,oEAAoE;oBACpE,kEAAkE;oBAClE,qBAAqB;gBACvB,CAAC;aACF,CAAC;YAEF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,GAAW;YACd,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI;YACF,yBAAyB;YACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,gDAAgD;oBAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzC,CAAC;oBAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;oBAC9B,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;oBAC9E,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK;YACH,uBAAuB;YACvB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,CAAC;YAED,qDAAqD;YACrD,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;gBACvD,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,iCAAiC;gBACnC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAE5B,8BAA8B;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,MAAc,EAAE,QAAkB;YACvC,IAAI,CAAC;gBACH,+EAA+E;gBAC/E,MAAM,eAAe,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAEtD,2BAA2B;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,eAAe,EAAE,CAAC,CAAC;gBACzD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;oBACrC,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5D,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,WAAW,CAAC,EAAiB;YAC3B,8DAA8D;YAC9D,kFAAkF;YAClF,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC;oBACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;oBAClC,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;oBACpB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACzB,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,+GAA+G;AAC/G,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAiB;IACtE,MAAM,YAAY,GAAG,MAAM,yBAAyB,EAAE,CAAC;IACvD,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,0GAA0G;AAC1G,MAAM,UAAU,yBAAyB,CAAC,KAAU,EAAE,WAAmB,UAAU;IACjF,4FAA4F;IAC5F,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAe,CAAC;IAChD,kEAAkE;IAClE,oGAAoG;IACpG,MAAM,cAAc,GAAG,IAAI,GAAG,EAAe,CAAC;IAC9C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,OAAO;QACL,OAAO,CAAC,GAAW;YACjB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,MAAM,MAAM,GAAG,EAAE,gBAAgB,CAAC;YAClC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAEnC,MAAM,YAAY,GAAG,GAAG,EAAE;gBACxB,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,WAAW,GAAG,IAAI,CAAC;oBACnB,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAChC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG;gBACd,0GAA0G;gBAC1G,GAAG,CAAC,GAAG,MAAa;oBAClB,IAAI,WAAW;wBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBAChE,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAClB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACZ,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,OAAO;4BACL,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE;4BAChC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBAClF,CAAC;oBACJ,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,YAAY,EAAE,CAAC;wBACf,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;gBACD,0GAA0G;gBAC1G,GAAG,CAAC,GAAG,MAAa;oBAClB,IAAI,WAAW;wBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBAChE,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;4BAAC,IAAI,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,SAAS,CAAC;wBAAC,CAAC;wBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,MAAM,MAAM,GAA4B,EAAE,CAAC;wBAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC9E,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,YAAY,EAAE,CAAC;wBACf,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;gBACD,0GAA0G;gBAC1G,GAAG,CAAC,GAAG,MAAa;oBAClB,IAAI,WAAW;wBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBAChE,IAAI,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAClB,MAAM,OAAO,GAA8B,EAAE,CAAC;wBAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;4BACnB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;4BACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BAC1B,MAAM,MAAM,GAA4B,EAAE,CAAC;4BAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC9E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACvB,CAAC;wBACD,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,OAAO,OAAO,CAAC;oBACjB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,YAAY,EAAE,CAAC;wBACf,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;gBACD,QAAQ;oBACN,gDAAgD;gBAClD,CAAC;aACF,CAAC;YAEF,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACjC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,GAAW;YACd,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,IAAI;YACF,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAC,CAAC;gBACpE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC5B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,KAAK;YACH,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC;oBAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;YACpD,CAAC;YACD,gBAAgB,CAAC,KAAK,EAAE,CAAC;YACzB,cAAc,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,CAAC,MAAc,EAAE,QAAkB;YACvC,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACtD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,eAAe,EAAE,CAAC,CAAC;gBACvD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;oBACrC,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC1D,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,WAAW,CAAC,EAAiB;YAC3B,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;oBAChC,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;oBACpB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACrB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACvB,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAM7B,6EAA6E;IAC7E,8CAA8C;IAC9C,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;QACxC,OAAO;YACL,cAAc,EAAE,yBAAyB;YACzC,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,MAAM;YACnB,kBAAkB,EAAE,IAAI;SACzB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,cAAc,EAAE,eAAe;QAC/B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,QAAQ;QACrB,kBAAkB,EAAE,KAAK;KAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"db-fallback.js","sourceRoot":"","sources":["../../src/db-fallback.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,10 @@ import { dirname } from 'path';
26
26
  // ES module equivalent of __dirname
27
27
  const __filename = fileURLToPath(import.meta.url);
28
28
  const __dirname = dirname(__filename);
29
+ // stdout belongs exclusively to JSON-RPC when running over stdio. Route every
30
+ // transitive diagnostic (including legacy controller console.log calls) to
31
+ // stderr before database and embedding initialization begins.
32
+ console.log = (...args) => console.error(...args);
29
33
  // ============================================================================
30
34
  // Helper Functions for Core Vector DB Operations
31
35
  // ============================================================================
@@ -2217,6 +2221,7 @@ async function main() {
2217
2221
  // Clear intervals
2218
2222
  clearInterval(keepAlive);
2219
2223
  clearInterval(autoSaveInterval);
2224
+ let persistenceFailed = false;
2220
2225
  // Save database before exit
2221
2226
  try {
2222
2227
  if (db && typeof db.save === 'function') {
@@ -2226,19 +2231,23 @@ async function main() {
2226
2231
  }
2227
2232
  }
2228
2233
  catch (error) {
2234
+ persistenceFailed = true;
2229
2235
  console.error('❌ Error saving database:', error.message);
2230
2236
  }
2231
- // Close database connection
2237
+ // Close database connection. close() persists sql.js itself, so only call
2238
+ // it after save when save succeeded; a failed optimistic save must not be
2239
+ // retried against the same stale snapshot.
2232
2240
  try {
2233
- if (db && typeof db.close === 'function') {
2241
+ if (!persistenceFailed && db && typeof db.close === 'function') {
2234
2242
  db.close();
2235
2243
  console.error('✅ Database connection closed');
2236
2244
  }
2237
2245
  }
2238
2246
  catch (error) {
2247
+ persistenceFailed = true;
2239
2248
  console.error('❌ Error closing database:', error.message);
2240
2249
  }
2241
- process.exit(0);
2250
+ process.exit(persistenceFailed ? 1 : 0);
2242
2251
  };
2243
2252
  process.on('SIGINT', shutdown);
2244
2253
  process.on('SIGTERM', shutdown);