@nirnex/cli 4.2.1 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +27 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/utils/debug-log.d.ts +8 -1
- package/dist/utils/debug-log.d.ts.map +1 -1
- package/dist/utils/debug-log.js +49 -25
- package/dist/utils/debug-log.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AA2CA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW,CA4I/E"}
|
package/dist/commands/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { openDb, insertParsedModule, setMetaCommitHash, computeGraphEdges } from '@nirnex/core/dist/db.js';
|
|
2
2
|
import { parseFileWithDiagnostics } from '@nirnex/parser/dist/index.js';
|
|
3
|
+
import { checkParserCompatibility } from '@nirnex/parser/dist/compatibility.js';
|
|
3
4
|
import { appendDebugLog } from '../utils/debug-log.js';
|
|
4
5
|
import fs from 'node:fs';
|
|
5
6
|
import path from 'node:path';
|
|
@@ -44,6 +45,26 @@ export function indexCommand(args, commandLabel) {
|
|
|
44
45
|
const isRebuild = args.includes('--rebuild');
|
|
45
46
|
const targetDir = process.cwd();
|
|
46
47
|
const label = commandLabel ?? (isRebuild ? 'index --rebuild' : 'index');
|
|
48
|
+
// ── Pre-flight: parser compatibility check ─────────────────────────────────
|
|
49
|
+
const compat = checkParserCompatibility();
|
|
50
|
+
if (!compat.healthy) {
|
|
51
|
+
const failedTests = compat.smokeTests.filter(t => t.status === 'fail');
|
|
52
|
+
process.stderr.write('\n\x1b[31m[nirnex index] Parser health check FAILED — aborting index\x1b[0m\n');
|
|
53
|
+
process.stderr.write(` tree-sitter: ${compat.treeSitterVersion ?? 'unknown'}\n`);
|
|
54
|
+
process.stderr.write(` tree-sitter-typescript: ${compat.treeSitterTypescriptVersion ?? 'unknown'}\n`);
|
|
55
|
+
for (const t of failedTests) {
|
|
56
|
+
process.stderr.write(` ✖ smoke test "${t.name}" (${t.lang}): ${t.errorMessage}\n`);
|
|
57
|
+
}
|
|
58
|
+
process.stderr.write('\n Fix: npm install -g @nirnex/cli\n\n');
|
|
59
|
+
return { succeeded: 0, failed: 0, failedFiles: [], durationMs: 0 };
|
|
60
|
+
}
|
|
61
|
+
if (!compat.inSupportedMatrix) {
|
|
62
|
+
process.stderr.write(`\x1b[33m[nirnex index] Warning:\x1b[0m Parser dependency versions are outside the tested compatibility matrix.\n` +
|
|
63
|
+
` tree-sitter: ${compat.treeSitterVersion ?? 'unknown'} (supported: 0.21.x)\n` +
|
|
64
|
+
` tree-sitter-typescript: ${compat.treeSitterTypescriptVersion ?? 'unknown'} (supported: 0.23.x)\n` +
|
|
65
|
+
` Smoke tests passed, but parse failures may still occur on complex files.\n` +
|
|
66
|
+
` Run: npm install -g @nirnex/cli to restore tested versions.\n`);
|
|
67
|
+
}
|
|
47
68
|
const dbPath = path.join(targetDir, '.aidos.db');
|
|
48
69
|
console.log('[nirnex index] Starting ' + (isRebuild ? 'full rebuild' : 'incremental update') + ' on ' + targetDir);
|
|
49
70
|
const t0 = performance.now();
|
|
@@ -65,6 +86,11 @@ export function indexCommand(args, commandLabel) {
|
|
|
65
86
|
}
|
|
66
87
|
}
|
|
67
88
|
db.exec('BEGIN TRANSACTION');
|
|
89
|
+
const compatCtx = {
|
|
90
|
+
treeSitterVersion: compat.treeSitterVersion,
|
|
91
|
+
treeSitterTypescriptVersion: compat.treeSitterTypescriptVersion,
|
|
92
|
+
inSupportedMatrix: compat.inSupportedMatrix,
|
|
93
|
+
};
|
|
68
94
|
let succeeded = 0;
|
|
69
95
|
let failed = 0;
|
|
70
96
|
const failedFiles = [];
|
|
@@ -75,7 +101,7 @@ export function indexCommand(args, commandLabel) {
|
|
|
75
101
|
failed++;
|
|
76
102
|
failedFiles.push(file);
|
|
77
103
|
// Write structured debug record — first failure prints the log path
|
|
78
|
-
const logPath = appendDebugLog(targetDir, result.diagnostics, label);
|
|
104
|
+
const logPath = appendDebugLog(targetDir, result.diagnostics, label, compatCtx);
|
|
79
105
|
if (failed === 1) {
|
|
80
106
|
debugLogPath = logPath;
|
|
81
107
|
process.stderr.write(`[nirnex index] suspected cause: ${result.diagnostics.stage} stage failure` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,cAAc,EAA6B,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,SAAS,OAAO,CAAC,GAAW,EAAE,QAAgC;IAC5D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM;YAAE,SAAS;QACnE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,UAAkB;IACvD,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;YAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,OAAe;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAUD,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,YAAqB;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAExE,8EAA8E;IAC9E,MAAM,MAAM,GAAG,wBAAwB,EAAE,CAAC;IAE1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QACtG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,iBAAiB,IAAI,SAAS,IAAI,CAAC,CAAC;QAC7F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,2BAA2B,IAAI,SAAS,IAAI,CAAC,CAAC;QACvG,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAChE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kHAAkH;YAClH,6BAA6B,MAAM,CAAC,iBAAiB,IAAI,SAAS,wBAAwB;YAC1F,6BAA6B,MAAM,CAAC,2BAA2B,IAAI,SAAS,wBAAwB;YACpG,8EAA8E;YAC9E,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IACnH,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1B,IAAI,cAAc,GAAa,EAAE,CAAC;IAElC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YACpG,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;iBACjD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;iBACjC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;YAC3E,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAyB;QACtC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;QAC/D,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;KAC5C,CAAC;IAEF,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,YAAgC,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvB,oEAAoE;YACpE,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAChF,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,YAAY,GAAG,OAAO,CAAC;gBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qCAAqC,MAAM,CAAC,WAAW,CAAC,KAAK,gBAAgB;oBAC7E,KAAK,MAAM,CAAC,WAAW,CAAC,SAAS,MAAM,MAAM,CAAC,WAAW,CAAC,iBAAiB,IAAI,iBAAiB,KAAK;oBACrG,oCAAoC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAC1E,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE/C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;YACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC/D,eAAe,GAAG,QAAQ,KAAK,WAAW,CAAC;YAC7C,CAAC;YACD,OAAO;gBACL,GAAG,GAAG;gBACN,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,eAAe;aAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,kBAAkB,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QAChE,SAAS,EAAE,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACtB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/F,iBAAiB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,2BAA2B;IAC7B,CAAC;IAED,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;IAE3B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACT,4BAA4B,SAAS,IAAI,cAAc,CAAC,MAAM,uBAAuB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC/G,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mDAAmD,SAAS,IAAI,cAAc,CAAC,MAAM,YAAY;YACjG,GAAG,MAAM,cAAc,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CACnD,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,MAAM,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB,MAAM,+BAA+B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAClG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtE,CAAC"}
|
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
* Never throws — debug logging must never interrupt indexing.
|
|
6
6
|
*/
|
|
7
7
|
import type { ParseFileDiagnostics } from '@nirnex/parser/dist/index.js';
|
|
8
|
+
export interface CompatibilityContext {
|
|
9
|
+
treeSitterVersion?: string;
|
|
10
|
+
treeSitterTypescriptVersion?: string;
|
|
11
|
+
inSupportedMatrix: boolean;
|
|
12
|
+
}
|
|
8
13
|
export interface DebugLogEntry {
|
|
9
14
|
timestamp: string;
|
|
10
15
|
level: 'error' | 'warn' | 'info';
|
|
@@ -15,8 +20,10 @@ export interface DebugLogEntry {
|
|
|
15
20
|
nirnex_cli_version?: string;
|
|
16
21
|
nirnex_parser_version?: string;
|
|
17
22
|
tree_sitter_version?: string;
|
|
23
|
+
tree_sitter_typescript_version?: string;
|
|
18
24
|
grammar_package: string;
|
|
19
25
|
grammar_variant?: string;
|
|
26
|
+
in_supported_matrix?: boolean;
|
|
20
27
|
file: string;
|
|
21
28
|
extension: string;
|
|
22
29
|
size_bytes: number;
|
|
@@ -40,5 +47,5 @@ export interface DebugLogEntry {
|
|
|
40
47
|
* Returns the absolute path to the log file.
|
|
41
48
|
* Never throws.
|
|
42
49
|
*/
|
|
43
|
-
export declare function appendDebugLog(cwd: string, diag: ParseFileDiagnostics, command: string): string;
|
|
50
|
+
export declare function appendDebugLog(cwd: string, diag: ParseFileDiagnostics, command: string, compat?: CompatibilityContext): string;
|
|
44
51
|
//# sourceMappingURL=debug-log.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-log.d.ts","sourceRoot":"","sources":["../../src/utils/debug-log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"debug-log.d.ts","sourceRoot":"","sources":["../../src/utils/debug-log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAsBzE,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAmJD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,oBAAoB,GAC5B,MAAM,CA4DR"}
|
package/dist/utils/debug-log.js
CHANGED
|
@@ -18,20 +18,37 @@ function pkgVersion(name) {
|
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
function classify(diag) {
|
|
22
|
-
//
|
|
21
|
+
function classify(diag, compat) {
|
|
22
|
+
// ── Version mismatch — most likely cause when outside the tested matrix ──────
|
|
23
|
+
// Only applies to parse-stage failures; set_language failures have their own cause.
|
|
24
|
+
if (compat &&
|
|
25
|
+
!compat.inSupportedMatrix &&
|
|
26
|
+
(diag.stage === 'parse' || diag.stage === 'set_language')) {
|
|
27
|
+
return {
|
|
28
|
+
suspected_cause: 'parser_dependency_version_mismatch',
|
|
29
|
+
recommended_actions: [
|
|
30
|
+
`Installed: tree-sitter@${compat.treeSitterVersion ?? 'unknown'} + ` +
|
|
31
|
+
`tree-sitter-typescript@${compat.treeSitterTypescriptVersion ?? 'unknown'}`,
|
|
32
|
+
'These versions are outside the tested compatibility matrix for Nirnex',
|
|
33
|
+
'Supported: tree-sitter@0.21.x + tree-sitter-typescript@0.23.x',
|
|
34
|
+
'Fix: npm install -g @nirnex/cli to restore exact pinned versions',
|
|
35
|
+
'Then retry: nirnex index --rebuild',
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// ── Grammar set failed — ABI / binding problem ────────────────────────────
|
|
23
40
|
if (diag.stage === 'set_language') {
|
|
24
41
|
return {
|
|
25
42
|
suspected_cause: 'grammar_binding_problem',
|
|
26
43
|
recommended_actions: [
|
|
27
44
|
'The tree-sitter language could not be set — likely a native ABI or version mismatch',
|
|
28
|
-
|
|
45
|
+
`Run: npm ls tree-sitter tree-sitter-typescript`,
|
|
29
46
|
'Reinstall: npm install -g @nirnex/cli',
|
|
30
47
|
'Check Node.js version compatibility with the tree-sitter native module',
|
|
31
48
|
],
|
|
32
49
|
};
|
|
33
50
|
}
|
|
34
|
-
// TSX file got TypeScript grammar —
|
|
51
|
+
// ── TSX file got TypeScript grammar — Nirnex bug ──────────────────────────
|
|
35
52
|
if (diag.extension === '.tsx' && diag.selected_language === 'typescript') {
|
|
36
53
|
return {
|
|
37
54
|
suspected_cause: 'wrong_grammar_selected',
|
|
@@ -42,7 +59,7 @@ function classify(diag) {
|
|
|
42
59
|
],
|
|
43
60
|
};
|
|
44
61
|
}
|
|
45
|
-
// Null bytes — binary or incorrectly encoded file
|
|
62
|
+
// ── Null bytes — binary or incorrectly encoded file ───────────────────────
|
|
46
63
|
if (diag.has_null_bytes) {
|
|
47
64
|
return {
|
|
48
65
|
suspected_cause: 'invalid_file_encoding',
|
|
@@ -53,7 +70,7 @@ function classify(diag) {
|
|
|
53
70
|
],
|
|
54
71
|
};
|
|
55
72
|
}
|
|
56
|
-
// Non-string passed to parse() — Nirnex bug
|
|
73
|
+
// ── Non-string passed to parse() — Nirnex bug ─────────────────────────────
|
|
57
74
|
if (diag.input_type !== undefined && diag.input_type !== 'string') {
|
|
58
75
|
return {
|
|
59
76
|
suspected_cause: 'invalid_parse_input_type',
|
|
@@ -63,7 +80,7 @@ function classify(diag) {
|
|
|
63
80
|
],
|
|
64
81
|
};
|
|
65
82
|
}
|
|
66
|
-
// File could not be read or decoded
|
|
83
|
+
// ── File could not be read or decoded ─────────────────────────────────────
|
|
67
84
|
if (diag.stage === 'read_file' || diag.stage === 'decode_file') {
|
|
68
85
|
return {
|
|
69
86
|
suspected_cause: 'file_access_or_encoding_error',
|
|
@@ -74,33 +91,38 @@ function classify(diag) {
|
|
|
74
91
|
],
|
|
75
92
|
};
|
|
76
93
|
}
|
|
77
|
-
// Parse stage failure
|
|
94
|
+
// ── Parse stage failure, versions confirmed compatible ────────────────────
|
|
95
|
+
// The environment is healthy (smoke tests passed, versions in matrix),
|
|
96
|
+
// so the failure is specific to this file's content.
|
|
78
97
|
if (diag.stage === 'parse' && diag.extension === '.tsx') {
|
|
98
|
+
const inMatrix = compat?.inSupportedMatrix ?? true; // assume ok if no context
|
|
79
99
|
return {
|
|
80
|
-
suspected_cause:
|
|
100
|
+
suspected_cause: inMatrix
|
|
101
|
+
? 'file_specific_syntax_not_supported_by_grammar'
|
|
102
|
+
: 'unsupported_syntax_or_parser_binding_issue',
|
|
81
103
|
recommended_actions: [
|
|
82
|
-
'The TSX grammar
|
|
83
|
-
'Possible causes: very new JSX/TS syntax,
|
|
84
|
-
'
|
|
85
|
-
'
|
|
86
|
-
'
|
|
87
|
-
'File a bug report with this log entry if the problem persists',
|
|
104
|
+
'The TSX grammar parsed other .tsx files successfully — the issue is specific to this file',
|
|
105
|
+
'Possible causes: very new JSX/TS syntax, unusually deep AST nesting, or unicode edge cases',
|
|
106
|
+
'Try isolating the syntax: comment out sections until the file parses',
|
|
107
|
+
'Check the content_sha256 to identify the exact file version that failed',
|
|
108
|
+
'File a bug report with this log entry so the grammar can be improved',
|
|
88
109
|
],
|
|
89
110
|
};
|
|
90
111
|
}
|
|
91
|
-
// Parse stage failure for .ts
|
|
92
112
|
if (diag.stage === 'parse' && diag.extension === '.ts') {
|
|
113
|
+
const inMatrix = compat?.inSupportedMatrix ?? true;
|
|
93
114
|
return {
|
|
94
|
-
suspected_cause:
|
|
115
|
+
suspected_cause: inMatrix
|
|
116
|
+
? 'file_specific_syntax_not_supported_by_grammar'
|
|
117
|
+
: 'unsupported_syntax_or_parser_binding_issue',
|
|
95
118
|
recommended_actions: [
|
|
96
|
-
'The TypeScript grammar
|
|
97
|
-
'
|
|
98
|
-
'Try reproducing with a minimal .ts snippet',
|
|
119
|
+
'The TypeScript grammar parsed other .ts files successfully — the issue is specific to this file',
|
|
120
|
+
'Try isolating the syntax: comment out sections until the file parses',
|
|
99
121
|
'File a bug report with this log entry if the problem persists',
|
|
100
122
|
],
|
|
101
123
|
};
|
|
102
124
|
}
|
|
103
|
-
// AST traversal bug — Nirnex bug, not user file
|
|
125
|
+
// ── AST traversal bug — Nirnex bug, not user file ─────────────────────────
|
|
104
126
|
if (diag.stage === 'postprocess_ast') {
|
|
105
127
|
return {
|
|
106
128
|
suspected_cause: 'nirnex_ast_traversal_bug',
|
|
@@ -120,13 +142,13 @@ function classify(diag) {
|
|
|
120
142
|
],
|
|
121
143
|
};
|
|
122
144
|
}
|
|
123
|
-
// ─── Main export
|
|
145
|
+
// ─── Main export ──────────────────────────────────────────────────────────────
|
|
124
146
|
/**
|
|
125
147
|
* Appends a structured JSONL record to `.ai-index/nirnex-debug.log`.
|
|
126
148
|
* Returns the absolute path to the log file.
|
|
127
149
|
* Never throws.
|
|
128
150
|
*/
|
|
129
|
-
export function appendDebugLog(cwd, diag, command) {
|
|
151
|
+
export function appendDebugLog(cwd, diag, command, compat) {
|
|
130
152
|
const logDir = path.join(cwd, '.ai-index');
|
|
131
153
|
const logPath = path.join(logDir, 'nirnex-debug.log');
|
|
132
154
|
try {
|
|
@@ -142,7 +164,7 @@ export function appendDebugLog(cwd, diag, command) {
|
|
|
142
164
|
catch {
|
|
143
165
|
// Log may not exist yet — that's fine
|
|
144
166
|
}
|
|
145
|
-
const { suspected_cause, recommended_actions } = classify(diag);
|
|
167
|
+
const { suspected_cause, recommended_actions } = classify(diag, compat);
|
|
146
168
|
const entry = {
|
|
147
169
|
timestamp: new Date().toISOString(),
|
|
148
170
|
level: 'error',
|
|
@@ -152,9 +174,11 @@ export function appendDebugLog(cwd, diag, command) {
|
|
|
152
174
|
platform: `${process.platform}-${process.arch}`,
|
|
153
175
|
nirnex_cli_version: pkgVersion('@nirnex/cli'),
|
|
154
176
|
nirnex_parser_version: pkgVersion('@nirnex/parser'),
|
|
155
|
-
tree_sitter_version: pkgVersion('tree-sitter'),
|
|
177
|
+
tree_sitter_version: compat?.treeSitterVersion ?? pkgVersion('tree-sitter'),
|
|
178
|
+
tree_sitter_typescript_version: compat?.treeSitterTypescriptVersion ?? pkgVersion('tree-sitter-typescript'),
|
|
156
179
|
grammar_package: 'tree-sitter-typescript',
|
|
157
180
|
grammar_variant: diag.grammar_variant,
|
|
181
|
+
in_supported_matrix: compat?.inSupportedMatrix,
|
|
158
182
|
file: diag.file,
|
|
159
183
|
extension: diag.extension,
|
|
160
184
|
size_bytes: diag.size_bytes,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-log.js","sourceRoot":"","sources":["../../src/utils/debug-log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEhD,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AAEhD,gFAAgF;AAEhF,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC;QACH,OAAQ,QAAQ,CAAC,GAAG,IAAI,eAAe,CAAyB,CAAC,OAAO,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"debug-log.js","sourceRoot":"","sources":["../../src/utils/debug-log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEhD,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AAEhD,gFAAgF;AAEhF,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC;QACH,OAAQ,QAAQ,CAAC,GAAG,IAAI,eAAe,CAAyB,CAAC,OAAO,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAqBD,SAAS,QAAQ,CAAC,IAA0B,EAAE,MAA6B;IACzE,gFAAgF;IAChF,oFAAoF;IACpF,IACE,MAAM;QACN,CAAC,MAAM,CAAC,iBAAiB;QACzB,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,EACzD,CAAC;QACD,OAAO;YACL,eAAe,EAAE,oCAAoC;YACrD,mBAAmB,EAAE;gBACnB,0BAA0B,MAAM,CAAC,iBAAiB,IAAI,SAAS,KAAK;oBAClE,0BAA0B,MAAM,CAAC,2BAA2B,IAAI,SAAS,EAAE;gBAC7E,uEAAuE;gBACvE,+DAA+D;gBAC/D,kEAAkE;gBAClE,oCAAoC;aACrC;SACF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO;YACL,eAAe,EAAE,yBAAyB;YAC1C,mBAAmB,EAAE;gBACnB,qFAAqF;gBACrF,gDAAgD;gBAChD,uCAAuC;gBACvC,wEAAwE;aACzE;SACF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,iBAAiB,KAAK,YAAY,EAAE,CAAC;QACzE,OAAO;YACL,eAAe,EAAE,wBAAwB;YACzC,mBAAmB,EAAE;gBACnB,6EAA6E;gBAC7E,oDAAoD;gBACpD,sEAAsE;aACvE;SACF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,OAAO;YACL,eAAe,EAAE,uBAAuB;YACxC,mBAAmB,EAAE;gBACnB,wFAAwF;gBACxF,yDAAyD;gBACzD,4EAA4E;aAC7E;SACF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClE,OAAO;YACL,eAAe,EAAE,0BAA0B;YAC3C,mBAAmB,EAAE;gBACnB,yBAAyB,IAAI,CAAC,UAAU,8CAA8C;gBACtF,uDAAuD;aACxD;SACF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;QAC/D,OAAO;YACL,eAAe,EAAE,+BAA+B;YAChD,mBAAmB,EAAE;gBACnB,mCAAmC,IAAI,CAAC,IAAI,GAAG;gBAC/C,iEAAiE;gBACjE,8CAA8C;aAC/C;SACF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,uEAAuE;IACvE,qDAAqD;IACrD,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC,0BAA0B;QAC9E,OAAO;YACL,eAAe,EAAE,QAAQ;gBACvB,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,4CAA4C;YAChD,mBAAmB,EAAE;gBACnB,2FAA2F;gBAC3F,4FAA4F;gBAC5F,sEAAsE;gBACtE,yEAAyE;gBACzE,sEAAsE;aACvE;SACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,EAAE,iBAAiB,IAAI,IAAI,CAAC;QACnD,OAAO;YACL,eAAe,EAAE,QAAQ;gBACvB,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,4CAA4C;YAChD,mBAAmB,EAAE;gBACnB,iGAAiG;gBACjG,sEAAsE;gBACtE,+DAA+D;aAChE;SACF,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,IAAI,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;QACrC,OAAO;YACL,eAAe,EAAE,0BAA0B;YAC3C,mBAAmB,EAAE;gBACnB,0FAA0F;gBAC1F,8CAA8C;gBAC9C,4EAA4E;aAC7E;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,eAAe,EAAE,SAAS;QAC1B,mBAAmB,EAAE;YACnB,oDAAoD;YACpD,sCAAsC;YACtC,gDAAgD;SACjD;KACF,CAAC;AACJ,CAAC;AA0CD,iFAAiF;AAEjF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,IAA0B,EAC1B,OAAe,EACf,MAA6B;IAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,mCAAmC;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;gBAC/C,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAExE,MAAM,KAAK,GAAkB;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,gBAAgB;YACvB,OAAO;YACP,YAAY,EAAE,OAAO,CAAC,OAAO;YAC7B,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;YAC/C,kBAAkB,EAAE,UAAU,CAAC,aAAa,CAAC;YAC7C,qBAAqB,EAAE,UAAU,CAAC,gBAAgB,CAAC;YACnD,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,IAAI,UAAU,CAAC,aAAa,CAAC;YAC3E,8BAA8B,EAC5B,MAAM,EAAE,2BAA2B,IAAI,UAAU,CAAC,wBAAwB,CAAC;YAC7E,eAAe,EAAE,wBAAwB;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,mBAAmB,EAAE,MAAM,EAAE,iBAAiB;YAC9C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe;YACf,mBAAmB;SACpB,CAAC;QAEF,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|