@monoes/monomindcli 2.7.12 → 2.7.14
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/.claude/commands/mastermind/createorg.md +2 -0
- package/.claude/commands/mastermind/okf-import.md +6 -1
- package/.claude/helpers/handlers/route-handler.cjs +40 -7
- package/.claude/helpers/handlers/session-restore-handler.cjs +24 -6
- package/.claude/skills/mastermind-createorg/SKILL.md +11 -4
- package/README.md +12 -6
- package/dist/src/capabilities/index.d.ts.map +1 -1
- package/dist/src/capabilities/index.js +17 -0
- package/dist/src/capabilities/index.js.map +1 -1
- package/dist/src/capabilities/types.d.ts +0 -11
- package/dist/src/capabilities/types.d.ts.map +1 -1
- package/dist/src/commands/doc.d.ts.map +1 -1
- package/dist/src/commands/doc.js +251 -8
- package/dist/src/commands/doc.js.map +1 -1
- package/dist/src/commands/doctor-project-checks.d.ts +25 -3
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +111 -8
- package/dist/src/commands/doctor-project-checks.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +18 -2
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +32 -3
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/monograph.d.ts.map +1 -1
- package/dist/src/commands/monograph.js +26 -3
- package/dist/src/commands/monograph.js.map +1 -1
- package/dist/src/commands/org.d.ts +15 -0
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +251 -6
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +4 -1
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/knowledge/document-pipeline.d.ts +77 -4
- package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
- package/dist/src/knowledge/document-pipeline.js +261 -15
- package/dist/src/knowledge/document-pipeline.js.map +1 -1
- package/dist/src/knowledge/eval/corpus.d.ts +56 -0
- package/dist/src/knowledge/eval/corpus.d.ts.map +1 -0
- package/dist/src/knowledge/eval/corpus.js +126 -0
- package/dist/src/knowledge/eval/corpus.js.map +1 -0
- package/dist/src/knowledge/eval/golden-set.d.ts +62 -0
- package/dist/src/knowledge/eval/golden-set.d.ts.map +1 -0
- package/dist/src/knowledge/eval/golden-set.js +331 -0
- package/dist/src/knowledge/eval/golden-set.js.map +1 -0
- package/dist/src/knowledge/eval/harness.d.ts +221 -0
- package/dist/src/knowledge/eval/harness.d.ts.map +1 -0
- package/dist/src/knowledge/eval/harness.js +610 -0
- package/dist/src/knowledge/eval/harness.js.map +1 -0
- package/dist/src/knowledge/eval/metrics.d.ts +120 -0
- package/dist/src/knowledge/eval/metrics.d.ts.map +1 -0
- package/dist/src/knowledge/eval/metrics.js +243 -0
- package/dist/src/knowledge/eval/metrics.js.map +1 -0
- package/dist/src/knowledge/eval/model-presence.d.ts +48 -0
- package/dist/src/knowledge/eval/model-presence.d.ts.map +1 -0
- package/dist/src/knowledge/eval/model-presence.js +128 -0
- package/dist/src/knowledge/eval/model-presence.js.map +1 -0
- package/dist/src/knowledge/eval/network-guard.d.ts +46 -0
- package/dist/src/knowledge/eval/network-guard.d.ts.map +1 -0
- package/dist/src/knowledge/eval/network-guard.js +112 -0
- package/dist/src/knowledge/eval/network-guard.js.map +1 -0
- package/dist/src/knowledge/eval/retrievers.d.ts +65 -0
- package/dist/src/knowledge/eval/retrievers.d.ts.map +1 -0
- package/dist/src/knowledge/eval/retrievers.js +180 -0
- package/dist/src/knowledge/eval/retrievers.js.map +1 -0
- package/dist/src/knowledge/eval/signals.d.ts +111 -0
- package/dist/src/knowledge/eval/signals.d.ts.map +1 -0
- package/dist/src/knowledge/eval/signals.js +232 -0
- package/dist/src/knowledge/eval/signals.js.map +1 -0
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +7 -34
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/knowledge-tools.js +88 -6
- package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +44 -144
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts.map +1 -1
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +30 -38
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts +1 -0
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +76 -111
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +3 -28
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/memory/bm25-index.d.ts +137 -0
- package/dist/src/memory/bm25-index.d.ts.map +1 -0
- package/dist/src/memory/bm25-index.js +219 -0
- package/dist/src/memory/bm25-index.js.map +1 -0
- package/dist/src/memory/embedding-operations.d.ts.map +1 -1
- package/dist/src/memory/embedding-operations.js +8 -7
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +2 -1
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/hnsw-operations.d.ts.map +1 -1
- package/dist/src/memory/hnsw-operations.js +4 -3
- package/dist/src/memory/hnsw-operations.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +2 -1
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +34 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +184 -26
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +4 -3
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-schema.d.ts +1 -1
- package/dist/src/memory/memory-schema.js +1 -1
- package/dist/src/memory/text-tokens.d.ts +10 -0
- package/dist/src/memory/text-tokens.d.ts.map +1 -0
- package/dist/src/memory/text-tokens.js +37 -0
- package/dist/src/memory/text-tokens.js.map +1 -0
- package/dist/src/orgrt/daemon.d.ts +16 -1
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +65 -9
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/scheduler.d.ts +14 -1
- package/dist/src/orgrt/scheduler.d.ts.map +1 -1
- package/dist/src/orgrt/scheduler.js +51 -5
- package/dist/src/orgrt/scheduler.js.map +1 -1
- package/dist/src/orgrt/session.js +12 -0
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +61 -831
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +7 -1
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/services/crash-reporter.d.ts.map +1 -1
- package/dist/src/services/crash-reporter.js +7 -0
- package/dist/src/services/crash-reporter.js.map +1 -1
- package/dist/src/ui/dashboard.html +57 -25
- package/dist/src/ui/orgs.html +30 -13
- package/dist/src/ui/routes-monograph.mjs +929 -0
- package/dist/src/ui/routes-org.mjs +2513 -0
- package/dist/src/ui/server.mjs +726 -4117
- package/dist/src/utils/json-file.d.ts +11 -0
- package/dist/src/utils/json-file.d.ts.map +1 -1
- package/dist/src/utils/json-file.js +27 -0
- package/dist/src/utils/json-file.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -6
package/dist/src/commands/doc.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as path from 'node:path';
|
|
5
5
|
import { output } from '../output.js';
|
|
6
|
-
import { getGlobalBrainDir } from '../memory/memory-bridge.js';
|
|
6
|
+
import { getGlobalBrainDir, getProjectRoot } from '../memory/memory-bridge.js';
|
|
7
7
|
const ingestCommand = {
|
|
8
8
|
name: 'ingest',
|
|
9
9
|
description: 'Ingest documents into the knowledge base',
|
|
@@ -25,14 +25,17 @@ const ingestCommand = {
|
|
|
25
25
|
const fs = await import('node:fs');
|
|
26
26
|
const resolved = path.resolve(target);
|
|
27
27
|
// Zero-decision routing: an explicit --global wins; otherwise paths OUTSIDE
|
|
28
|
-
//
|
|
29
|
-
//
|
|
28
|
+
// this project belong to the personal brain (a project-scoped store would
|
|
29
|
+
// never surface them again from another project).
|
|
30
30
|
let scope = String(ctx.flags.scope || 'shared');
|
|
31
31
|
if (ctx.flags.global === true) {
|
|
32
32
|
scope = 'global';
|
|
33
33
|
}
|
|
34
34
|
else if (!ctx.flags.scope) {
|
|
35
|
-
|
|
35
|
+
// Against the PROJECT ROOT, not the cwd: from a package subdirectory,
|
|
36
|
+
// `doc ingest ../../docs` targets this very project, and routing it to
|
|
37
|
+
// the personal brain because it sits above the cwd is simply wrong.
|
|
38
|
+
const relToCwd = path.relative(getProjectRoot(ctx.cwd || process.cwd()), resolved);
|
|
36
39
|
if (relToCwd.startsWith('..') || path.isAbsolute(relToCwd)) {
|
|
37
40
|
scope = 'global';
|
|
38
41
|
output.writeln(output.dim(` ${target} is outside this project — ingesting into the global brain (use --scope shared to force project scope)`));
|
|
@@ -44,7 +47,7 @@ const ingestCommand = {
|
|
|
44
47
|
const stat = fs.statSync(resolved);
|
|
45
48
|
if (stat.isDirectory()) {
|
|
46
49
|
const result = await ingestDirectory(resolved, scope, {
|
|
47
|
-
rootDir: ctx.cwd || process.cwd(),
|
|
50
|
+
rootDir: getProjectRoot(ctx.cwd || process.cwd()),
|
|
48
51
|
onProgress: (file, done, total) => {
|
|
49
52
|
spinner.setText(`[${done + 1}/${total}] ${path.basename(file)}`);
|
|
50
53
|
},
|
|
@@ -192,7 +195,7 @@ const listDocCommand = {
|
|
|
192
195
|
const { listDocuments } = await import('../knowledge/document-pipeline.js');
|
|
193
196
|
const isGlobal = ctx.flags.global === true;
|
|
194
197
|
const scope = isGlobal ? 'global' : ctx.flags.scope ? String(ctx.flags.scope) : undefined;
|
|
195
|
-
const docs = listDocuments(isGlobal ? getGlobalBrainDir() :
|
|
198
|
+
const docs = listDocuments(isGlobal ? getGlobalBrainDir() : getProjectRoot(), scope);
|
|
196
199
|
if (!docs.length) {
|
|
197
200
|
output.writeln(output.dim('No documents indexed. Run: monomind doc ingest <path>'));
|
|
198
201
|
return { success: true, data: [] };
|
|
@@ -226,7 +229,7 @@ const exportDocCommand = {
|
|
|
226
229
|
const spinner = output.createSpinner({ text: 'Exporting to OKF...' });
|
|
227
230
|
spinner.start();
|
|
228
231
|
try {
|
|
229
|
-
const result = await exportToOKF(outDir, isGlobal ? getGlobalBrainDir() :
|
|
232
|
+
const result = await exportToOKF(outDir, isGlobal ? getGlobalBrainDir() : getProjectRoot(), scope);
|
|
230
233
|
spinner.succeed(`Exported ${result.exported} documents to ${result.outputDir}`);
|
|
231
234
|
return { success: true, data: result };
|
|
232
235
|
}
|
|
@@ -236,17 +239,254 @@ const exportDocCommand = {
|
|
|
236
239
|
}
|
|
237
240
|
},
|
|
238
241
|
};
|
|
242
|
+
const removeDocCommand = {
|
|
243
|
+
name: 'remove',
|
|
244
|
+
description: 'Forget an indexed document',
|
|
245
|
+
aliases: ['rm', 'forget'],
|
|
246
|
+
options: [
|
|
247
|
+
{ name: 'scope', short: 's', description: 'Knowledge scope (default: shared)', type: 'string', default: 'shared' },
|
|
248
|
+
{ name: 'global', short: 'g', description: 'Remove from the personal cross-project global brain', type: 'boolean' },
|
|
249
|
+
],
|
|
250
|
+
examples: [
|
|
251
|
+
{ command: 'monomind doc remove ./docs/old-spec.md', description: 'Stop returning a document in search' },
|
|
252
|
+
{ command: 'monomind doc remove ~/notes/stale.md --global', description: 'Forget it from the personal brain' },
|
|
253
|
+
],
|
|
254
|
+
action: async (ctx) => {
|
|
255
|
+
const target = ctx.args[0];
|
|
256
|
+
if (!target) {
|
|
257
|
+
output.printError('Document path required: monomind doc remove <path>');
|
|
258
|
+
return { success: false, exitCode: 1 };
|
|
259
|
+
}
|
|
260
|
+
const { listDocuments, removeDocument } = await import('../knowledge/document-pipeline.js');
|
|
261
|
+
const isGlobal = ctx.flags.global === true;
|
|
262
|
+
const scope = isGlobal ? 'global' : String(ctx.flags.scope || 'shared');
|
|
263
|
+
const root = isGlobal ? getGlobalBrainDir() : getProjectRoot();
|
|
264
|
+
const resolved = path.resolve(target);
|
|
265
|
+
// The metadata log keys on the resolved path recorded at ingest, so a
|
|
266
|
+
// mistyped path would otherwise write a tombstone that matches nothing and
|
|
267
|
+
// report success. Fail like `rm` does instead.
|
|
268
|
+
if (!listDocuments(root, scope).some(d => path.resolve(d.filePath) === resolved)) {
|
|
269
|
+
output.printError(`Not indexed under scope '${scope}': ${resolved}`);
|
|
270
|
+
output.writeln(output.dim(` See what is indexed: monomind doc list${isGlobal ? ' --global' : ''}`));
|
|
271
|
+
return { success: false, exitCode: 1 };
|
|
272
|
+
}
|
|
273
|
+
await removeDocument(resolved, scope, root);
|
|
274
|
+
output.writeln(`Forgot ${output.highlight(path.basename(resolved))} (${scope})`);
|
|
275
|
+
// Honest about what happened on disk: the tombstone hides the chunks from
|
|
276
|
+
// every search surface, but the bridge exposes no delete-by-prefix, so the
|
|
277
|
+
// rows themselves go on the next full re-index.
|
|
278
|
+
output.writeln(output.dim(' Chunks are hidden from search immediately; storage is reclaimed on the next full re-index.'));
|
|
279
|
+
return { success: true, data: { filePath: resolved, scope } };
|
|
280
|
+
},
|
|
281
|
+
};
|
|
282
|
+
const reconcileDocCommand = {
|
|
283
|
+
name: 'reconcile',
|
|
284
|
+
description: 'Find and forget indexed documents whose source file no longer exists',
|
|
285
|
+
options: [
|
|
286
|
+
{ name: 'scope', short: 's', description: 'Knowledge scope (default: shared)', type: 'string', default: 'shared' },
|
|
287
|
+
{ name: 'global', short: 'g', description: 'Reconcile the personal cross-project global brain', type: 'boolean' },
|
|
288
|
+
{ name: 'apply', description: 'Actually forget the stale entries (default: dry run)', type: 'boolean' },
|
|
289
|
+
],
|
|
290
|
+
examples: [
|
|
291
|
+
{ command: 'monomind doc reconcile', description: 'Show indexed documents whose file is gone (changes nothing)' },
|
|
292
|
+
{ command: 'monomind doc reconcile --apply', description: 'Forget them' },
|
|
293
|
+
{ command: 'monomind doc reconcile --global --apply', description: 'Same, for the personal brain' },
|
|
294
|
+
],
|
|
295
|
+
action: async (ctx) => {
|
|
296
|
+
const { reconcileIndex } = await import('../knowledge/document-pipeline.js');
|
|
297
|
+
const isGlobal = ctx.flags.global === true;
|
|
298
|
+
const scope = isGlobal ? 'global' : String(ctx.flags.scope || 'shared');
|
|
299
|
+
const root = isGlobal ? getGlobalBrainDir() : getProjectRoot();
|
|
300
|
+
const apply = ctx.flags.apply === true;
|
|
301
|
+
let report;
|
|
302
|
+
try {
|
|
303
|
+
report = await reconcileIndex(root, { scope, apply });
|
|
304
|
+
}
|
|
305
|
+
catch (err) {
|
|
306
|
+
// reconcileIndex refuses to run against a missing root or a missing
|
|
307
|
+
// metadata log, because there every indexed file looks deleted. Surface
|
|
308
|
+
// that as a refusal, never as "0 stale entries found".
|
|
309
|
+
output.printError(String(err instanceof Error ? err.message : err));
|
|
310
|
+
return { success: false, exitCode: 1 };
|
|
311
|
+
}
|
|
312
|
+
if (report.missing.length === 0) {
|
|
313
|
+
output.writeln(`Index is consistent — all ${report.scanned} indexed documents still exist.`);
|
|
314
|
+
return { success: true, data: report };
|
|
315
|
+
}
|
|
316
|
+
output.writeln(`${output.highlight(String(report.missing.length))} of ${report.scanned} indexed documents no longer exist on disk:`);
|
|
317
|
+
for (const m of report.missing.slice(0, 20)) {
|
|
318
|
+
output.writeln(output.dim(` ${m.filePath}`));
|
|
319
|
+
}
|
|
320
|
+
if (report.missing.length > 20) {
|
|
321
|
+
output.writeln(output.dim(` ... and ${report.missing.length - 20} more`));
|
|
322
|
+
}
|
|
323
|
+
if (!apply) {
|
|
324
|
+
// Dry run is the default because "the file is missing" also describes an
|
|
325
|
+
// unmounted volume, a checked-out branch, and a partial clone. The user
|
|
326
|
+
// is the one who knows which it is.
|
|
327
|
+
output.writeln('');
|
|
328
|
+
output.writeln(output.dim('Nothing was changed. Re-run with --apply to forget these entries.'));
|
|
329
|
+
return { success: true, data: report };
|
|
330
|
+
}
|
|
331
|
+
output.writeln('');
|
|
332
|
+
output.writeln(`Forgot ${output.highlight(String(report.removed))} stale ${report.removed === 1 ? 'entry' : 'entries'}.`);
|
|
333
|
+
if (report.archivePath) {
|
|
334
|
+
output.writeln(output.dim(` Archived first, and reversible from: ${report.archivePath}`));
|
|
335
|
+
}
|
|
336
|
+
output.writeln(output.dim(' Chunks are hidden from search immediately; storage is reclaimed on the next full re-index.'));
|
|
337
|
+
return { success: true, data: report };
|
|
338
|
+
},
|
|
339
|
+
};
|
|
340
|
+
const importDocCommand = {
|
|
341
|
+
name: 'import',
|
|
342
|
+
description: 'Import an OKF bundle produced by `doc export`',
|
|
343
|
+
options: [
|
|
344
|
+
{ name: 'scope', short: 's', description: 'Knowledge scope (default: shared)', type: 'string', default: 'shared' },
|
|
345
|
+
{ name: 'global', short: 'g', description: 'Import into the personal cross-project global brain', type: 'boolean' },
|
|
346
|
+
],
|
|
347
|
+
examples: [
|
|
348
|
+
{ command: 'monomind doc import ./.monomind/knowledge-export', description: 'Import a bundle into this project' },
|
|
349
|
+
{ command: 'monomind doc import ~/brain-bundle --global', description: 'Restore a personal brain on another machine' },
|
|
350
|
+
],
|
|
351
|
+
action: async (ctx) => {
|
|
352
|
+
const bundle = ctx.args[0];
|
|
353
|
+
if (!bundle) {
|
|
354
|
+
output.printError('Bundle directory required: monomind doc import <bundle-dir>');
|
|
355
|
+
return { success: false, exitCode: 1 };
|
|
356
|
+
}
|
|
357
|
+
const { importFromOKF } = await import('../knowledge/document-pipeline.js');
|
|
358
|
+
const fs = await import('node:fs');
|
|
359
|
+
const resolved = path.resolve(bundle);
|
|
360
|
+
if (!fs.existsSync(resolved) || !fs.statSync(resolved).isDirectory()) {
|
|
361
|
+
output.printError(`Not a directory: ${resolved}`);
|
|
362
|
+
return { success: false, exitCode: 1 };
|
|
363
|
+
}
|
|
364
|
+
const isGlobal = ctx.flags.global === true;
|
|
365
|
+
const scope = isGlobal ? 'global' : String(ctx.flags.scope || 'shared');
|
|
366
|
+
const spinner = output.createSpinner({ text: 'Importing OKF bundle...' });
|
|
367
|
+
spinner.start();
|
|
368
|
+
try {
|
|
369
|
+
// importFromOKF, not ingestDirectory: the bundle's own index.md is a
|
|
370
|
+
// manifest, not knowledge, and plain ingest would index it as a document.
|
|
371
|
+
const result = await importFromOKF(resolved, scope, isGlobal ? getGlobalBrainDir() : getProjectRoot());
|
|
372
|
+
spinner.succeed(`Imported ${result.totalChunks} chunks from ${result.filesProcessed} documents (${result.filesSkipped} already indexed)`);
|
|
373
|
+
if (result.errors.length) {
|
|
374
|
+
output.writeln(output.dim(` Errors: ${result.errors.length}`));
|
|
375
|
+
for (const err of result.errors.slice(0, 5))
|
|
376
|
+
output.writeln(output.dim(` ${err}`));
|
|
377
|
+
}
|
|
378
|
+
return { success: true, data: result };
|
|
379
|
+
}
|
|
380
|
+
catch (err) {
|
|
381
|
+
spinner.fail(String(err));
|
|
382
|
+
return { success: false, exitCode: 1 };
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
};
|
|
386
|
+
const evalCommand = {
|
|
387
|
+
name: 'eval',
|
|
388
|
+
description: 'Measure retrieval quality (Recall@1/5/10, MRR@10) on the local golden set',
|
|
389
|
+
aliases: ['benchmark', 'scoreboard'],
|
|
390
|
+
options: [
|
|
391
|
+
{ name: 'split', description: "Golden-set split: dev (tunable) | test (sealed, stop-condition only) | all", type: 'string', default: 'dev' },
|
|
392
|
+
{ name: 'k', description: 'Retrieval cutoff (default: 10)', type: 'number', default: 10 },
|
|
393
|
+
{ name: 'json', description: 'Emit the machine-readable report only', type: 'boolean' },
|
|
394
|
+
{ name: 'out', short: 'o', description: 'Write the JSON report to this path', type: 'string' },
|
|
395
|
+
{ name: 'rebuild', description: 'Rebuild the isolated eval store from scratch', type: 'boolean' },
|
|
396
|
+
{ name: 'screen', description: 'Screen a JSON file of candidate golden pairs for lexical overlap before adding them', type: 'string' },
|
|
397
|
+
{ name: 'provision-model', description: 'Download the embedding weights (the ONLY networked step; run once before evaluating)', type: 'boolean' },
|
|
398
|
+
{ name: 'store-root', description: 'Where the isolated eval store lives (default: <repo>/.monomind/eval)', type: 'string' },
|
|
399
|
+
],
|
|
400
|
+
examples: [
|
|
401
|
+
{ command: 'monomind doc eval', description: 'Score the dev split and print the table' },
|
|
402
|
+
{ command: 'monomind doc eval --split test --json', description: 'Sealed run — aggregates only, appended to the exposure ledger' },
|
|
403
|
+
{ command: 'monomind doc eval --provision-model', description: 'One-off: fetch the embedding weights (the only networked step)' },
|
|
404
|
+
{ command: 'monomind doc eval --out scoreboard.json', description: 'Persist the machine-readable report' },
|
|
405
|
+
],
|
|
406
|
+
action: async (ctx) => {
|
|
407
|
+
const { runEval, renderReport } = await import('../knowledge/eval/harness.js');
|
|
408
|
+
// Authoring-time screening: reject high-overlap candidates BEFORE they
|
|
409
|
+
// enter the set, rather than discovering the distribution afterwards.
|
|
410
|
+
if (ctx.flags.screen) {
|
|
411
|
+
const fs = await import('node:fs');
|
|
412
|
+
const { screenCandidates } = await import('../knowledge/eval/harness.js');
|
|
413
|
+
const cands = JSON.parse(fs.readFileSync(String(ctx.flags.screen), 'utf8'));
|
|
414
|
+
const rep = await screenCandidates(getProjectRoot(ctx.cwd || process.cwd()), cands);
|
|
415
|
+
if (ctx.flags.out)
|
|
416
|
+
fs.writeFileSync(String(ctx.flags.out), JSON.stringify(rep, null, 2));
|
|
417
|
+
if (ctx.flags.json === true) {
|
|
418
|
+
output.writeln(JSON.stringify(rep, null, 2));
|
|
419
|
+
return { success: true, data: rep };
|
|
420
|
+
}
|
|
421
|
+
output.writeln(`\nscreened ${rep.total}: ${rep.accepted} accepted, ${rep.rejected} rejected (corpus ${rep.corpusHash})`);
|
|
422
|
+
output.writeln(`overlap bands of accepted: low ${rep.bands.low} mid ${rep.bands.mid} high ${rep.bands.high}`);
|
|
423
|
+
for (const c of rep.candidates.filter(x => !x.accepted))
|
|
424
|
+
output.writeln(` REJECT ${c.id}: ${c.reason}`);
|
|
425
|
+
return { success: true, data: rep };
|
|
426
|
+
}
|
|
427
|
+
// The explicit, non-query-time provisioning step. Separating this from
|
|
428
|
+
// measurement is what makes "clean checkout" and "zero network at query
|
|
429
|
+
// time" jointly satisfiable — `doc eval` itself never fetches.
|
|
430
|
+
if (ctx.flags['provision-model'] === true) {
|
|
431
|
+
const { provisionModel } = await import('../knowledge/eval/model-presence.js');
|
|
432
|
+
try {
|
|
433
|
+
const p = await provisionModel(m => output.writeln(output.dim(' ' + m)));
|
|
434
|
+
output.printSuccess(`Embedding model provisioned (${(p.bytes / 1e6).toFixed(0)}MB).`);
|
|
435
|
+
return { success: true, data: p };
|
|
436
|
+
}
|
|
437
|
+
catch (err) {
|
|
438
|
+
output.printError(String(err instanceof Error ? err.message : err));
|
|
439
|
+
return { success: false, exitCode: 1 };
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
const split = String(ctx.flags.split || 'dev');
|
|
443
|
+
if (!['dev', 'test', 'all'].includes(split)) {
|
|
444
|
+
output.printError(`--split must be dev, test or all (got "${split}")`);
|
|
445
|
+
return { success: false, exitCode: 1 };
|
|
446
|
+
}
|
|
447
|
+
const asJson = ctx.flags.json === true;
|
|
448
|
+
const repoRoot = getProjectRoot(ctx.cwd || process.cwd());
|
|
449
|
+
try {
|
|
450
|
+
const report = await runEval({
|
|
451
|
+
repoRoot,
|
|
452
|
+
k: Number(ctx.flags.k || 10),
|
|
453
|
+
rebuild: ctx.flags.rebuild === true,
|
|
454
|
+
storeRoot: ctx.flags['store-root'] ? String(ctx.flags['store-root']) : undefined,
|
|
455
|
+
split: split,
|
|
456
|
+
onProgress: (msg) => { if (!asJson)
|
|
457
|
+
output.writeln(output.dim(' ' + msg)); },
|
|
458
|
+
});
|
|
459
|
+
if (ctx.flags.out) {
|
|
460
|
+
const fs = await import('node:fs');
|
|
461
|
+
fs.writeFileSync(String(ctx.flags.out), JSON.stringify(report, null, 2));
|
|
462
|
+
}
|
|
463
|
+
if (asJson)
|
|
464
|
+
output.writeln(JSON.stringify(report, null, 2));
|
|
465
|
+
else
|
|
466
|
+
output.writeln(renderReport(report));
|
|
467
|
+
// A network attempt during the query phase invalidates the run outright.
|
|
468
|
+
return { success: report.networkFree.verdict === 'proven-blocked', data: report };
|
|
469
|
+
}
|
|
470
|
+
catch (err) {
|
|
471
|
+
output.printError(String(err instanceof Error ? err.message : err));
|
|
472
|
+
return { success: false, exitCode: 1 };
|
|
473
|
+
}
|
|
474
|
+
},
|
|
475
|
+
};
|
|
239
476
|
export const docCommand = {
|
|
240
477
|
name: 'doc',
|
|
241
478
|
description: 'Second Brain — document knowledge management',
|
|
242
479
|
aliases: ['docs', 'knowledge'],
|
|
243
|
-
subcommands: [ingestCommand, searchDocCommand, listDocCommand, exportDocCommand],
|
|
480
|
+
subcommands: [ingestCommand, searchDocCommand, listDocCommand, exportDocCommand, importDocCommand, removeDocCommand, reconcileDocCommand, evalCommand],
|
|
244
481
|
options: [],
|
|
245
482
|
examples: [
|
|
246
483
|
{ command: 'monomind doc ingest ./docs', description: 'Index documents' },
|
|
247
484
|
{ command: 'monomind doc search -q "auth flow"', description: 'Semantic search' },
|
|
248
485
|
{ command: 'monomind doc list', description: 'List indexed docs' },
|
|
249
486
|
{ command: 'monomind doc export', description: 'Export as OKF bundle' },
|
|
487
|
+
{ command: 'monomind doc import ./bundle', description: 'Import an OKF bundle' },
|
|
488
|
+
{ command: 'monomind doc remove ./docs/old.md', description: 'Forget an indexed document' },
|
|
489
|
+
{ command: 'monomind doc eval', description: 'Score retrieval quality on the golden set' },
|
|
250
490
|
],
|
|
251
491
|
action: async () => {
|
|
252
492
|
output.writeln();
|
|
@@ -260,6 +500,9 @@ export const docCommand = {
|
|
|
260
500
|
`${output.highlight('search')} - Semantic search over indexed documents`,
|
|
261
501
|
`${output.highlight('list')} - List indexed documents`,
|
|
262
502
|
`${output.highlight('export')} - Export as OKF bundle (markdown + frontmatter)`,
|
|
503
|
+
`${output.highlight('import')} - Import an OKF bundle produced by export`,
|
|
504
|
+
`${output.highlight('remove')} - Forget an indexed document (aliases: rm, forget)`,
|
|
505
|
+
`${output.highlight('eval')} - Retrieval-quality scoreboard: Recall@1/5/10, MRR@10`,
|
|
263
506
|
]);
|
|
264
507
|
return { success: true };
|
|
265
508
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc.js","sourceRoot":"","sources":["../../../src/commands/doc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doc.js","sourceRoot":"","sources":["../../../src/commands/doc.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE/E,MAAM,aAAa,GAAY;IAC7B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,0CAA0C;IACvD,OAAO,EAAE;QACP,uEAAuE;QACvE,uEAAuE;QACvE,wDAAwD;QACxD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,wFAAwF,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpJ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,gFAAgF,EAAE,IAAI,EAAE,SAAS,EAAE;KAC/I;IACD,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,gCAAgC,EAAE;QACxF,EAAE,OAAO,EAAE,sCAAsC,EAAE,WAAW,EAAE,4EAA4E,EAAE;QAC9I,EAAE,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,sBAAsB,EAAE;KACnF;IACD,MAAM,EAAE,KAAK,EAAE,GAAmB,EAA0B,EAAE;QAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QAElC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC9F,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEtC,4EAA4E;QAC5E,0EAA0E;QAC1E,kDAAkD;QAClD,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC9B,KAAK,GAAG,QAAQ,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,sEAAsE;YACtE,uEAAuE;YACvE,oEAAoE;YACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YACnF,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3D,KAAK,GAAG,QAAQ,CAAC;gBACjB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,wGAAwG,CAAC,CAAC,CAAC;YAClJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE;oBACpD,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBACjD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;wBAChC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnE,CAAC;iBACF,CAAC,CAAC;gBACH,OAAO,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,WAAW,gBAAgB,MAAM,CAAC,cAAc,WAAW,MAAM,CAAC,YAAY,WAAW,CAAC,CAAC;gBAC7H,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAChE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACrD,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACpC,OAAO,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,aAAa,UAAU,CAAC,CAAC;gBAClG,CAAC;qBAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,aAAa,gBAAgB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC5F,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAY;IAChC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,wCAAwC;IACrD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1F,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,2BAA2B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACpG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;QAClH,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE;QACrG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kFAAkF,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAClJ,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2FAA2F,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC/I;IACD,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,8CAA8C,EAAE,WAAW,EAAE,+BAA+B,EAAE;QACzG,EAAE,OAAO,EAAE,uDAAuD,EAAE,WAAW,EAAE,uCAAuC,EAAE;KAC3H;IACD,MAAM,EAAE,KAAK,EAAE,GAAmB,EAA0B,EAAE;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,UAAU,CAAC,qDAAqD,CAAC,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC9E,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC/F,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAE5C,qEAAqE;QACrE,oEAAoE;QACpE,mEAAmE;QACnE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnG,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/H,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM;YAC/B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEnG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAC1D,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzB,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE;oBACrB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;oBAC1C,KAAK;oBACL,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;oBAC/C,KAAK,EAAE,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;iBAC7E,CAAC;gBACJ,CAAC,CAAC,EAAE;YACN,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACnF,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAC1I,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SAC9H,CAAC,CAAC;QAEH,uEAAuE;QACvE,yEAAyE;QACzE,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,aAAa,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1K,QAAQ,GAAG,IAAI,CAAC;YAChB,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAyC,EAAE,QAAQ,CAAC,CAAC;YACnF,aAAa,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE;gBAC3C,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;gBAC1C,KAAK;gBACL,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;gBAC/C,KAAK,EAAE,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;aAC7E,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC;YACpB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzG,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAChI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YACpI,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;SACzH,EAAE,KAAK,CAAC,CAAC;QAEV,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,YAAY,MAAM,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClK,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAA4B,CAAC;YAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;YAC9F,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACjH,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC;gBAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAClC,MAAM,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC;AAEF,MAAM,cAAc,GAAY;IAC9B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,wBAAwB;IACrC,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7E,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,8CAA8C,EAAE,IAAI,EAAE,SAAS,EAAE;KAC7G;IACD,MAAM,EAAE,KAAK,EAAE,GAAmB,EAA0B,EAAE;QAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC;QAErF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACpF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;gBACjC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBAC5C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACxC,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,aAAa,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7H,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAY;IAChC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,8DAA8D;IAC3E,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,EAAE;QACtH,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;QAClH,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,4EAA4E,EAAE,IAAI,EAAE,SAAS,EAAE;KAC3I;IACD,MAAM,EAAE,KAAK,EAAE,GAAmB,EAA0B,EAAE;QAC5D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,4BAA4B,CAAC,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QAExE,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC;YACnG,OAAO,CAAC,OAAO,CAAC,YAAY,MAAM,CAAC,QAAQ,iBAAiB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAChF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAY;IAChC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,4BAA4B;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;IACzB,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;QAClH,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,qDAAqD,EAAE,IAAI,EAAE,SAAS,EAAE;KACpH;IACD,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,wCAAwC,EAAE,WAAW,EAAE,qCAAqC,EAAE;QACzG,EAAE,OAAO,EAAE,+CAA+C,EAAE,WAAW,EAAE,mCAAmC,EAAE;KAC/G;IACD,MAAM,EAAE,KAAK,EAAE,GAAmB,EAA0B,EAAE;QAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,UAAU,CAAC,oDAAoD,CAAC,CAAC;YACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEtC,sEAAsE;QACtE,2EAA2E;QAC3E,+CAA+C;QAC/C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,UAAU,CAAC,4BAA4B,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;YACrE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACrG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;QACjF,0EAA0E;QAC1E,2EAA2E;QAC3E,gDAAgD;QAChD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC,CAAC;QAC3H,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;IAChE,CAAC;CACF,CAAC;AAEF,MAAM,mBAAmB,GAAY;IACnC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,sEAAsE;IACnF,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;QAClH,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,mDAAmD,EAAE,IAAI,EAAE,SAAS,EAAE;QACjH,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sDAAsD,EAAE,IAAI,EAAE,SAAS,EAAE;KACxG;IACD,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,6DAA6D,EAAE;QACjH,EAAE,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,aAAa,EAAE;QACzE,EAAE,OAAO,EAAE,yCAAyC,EAAE,WAAW,EAAE,8BAA8B,EAAE;KACpG;IACD,MAAM,EAAE,KAAK,EAAE,GAAmB,EAA0B,EAAE;QAC5D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;QAEvC,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oEAAoE;YACpE,wEAAwE;YACxE,uDAAuD;YACvD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,6BAA6B,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;YAC7F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,OAAO,CACZ,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,6CAA6C,CACrH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,yEAAyE;YACzE,wEAAwE;YACxE,oCAAoC;YACpC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;YAChG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1H,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,0CAA0C,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC,CAAC;QAC3H,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzC,CAAC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAY;IAChC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,+CAA+C;IAC5D,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;QAClH,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,qDAAqD,EAAE,IAAI,EAAE,SAAS,EAAE;KACpH;IACD,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,kDAAkD,EAAE,WAAW,EAAE,mCAAmC,EAAE;QACjH,EAAE,OAAO,EAAE,6CAA6C,EAAE,WAAW,EAAE,6CAA6C,EAAE;KACvH;IACD,MAAM,EAAE,KAAK,EAAE,GAAmB,EAA0B,EAAE;QAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,UAAU,CAAC,6DAA6D,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACrE,MAAM,CAAC,UAAU,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QAExE,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,qEAAqE;YACrE,0EAA0E;YAC1E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YACvG,OAAO,CAAC,OAAO,CAAC,YAAY,MAAM,CAAC,WAAW,gBAAgB,MAAM,CAAC,cAAc,eAAe,MAAM,CAAC,YAAY,mBAAmB,CAAC,CAAC;YAC1I,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAChE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,WAAW,GAAY;IAC3B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,2EAA2E;IACxF,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACpC,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4EAA4E,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAC5I,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,gCAAgC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACzF,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE,IAAI,EAAE,SAAS,EAAE;QACvF,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,oCAAoC,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9F,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8CAA8C,EAAE,IAAI,EAAE,SAAS,EAAE;QACjG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qFAAqF,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtI,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,sFAAsF,EAAE,IAAI,EAAE,SAAS,EAAE;QACjJ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,sEAAsE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC5H;IACD,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,yCAAyC,EAAE;QACxF,EAAE,OAAO,EAAE,uCAAuC,EAAE,WAAW,EAAE,+DAA+D,EAAE;QAClI,EAAE,OAAO,EAAE,qCAAqC,EAAE,WAAW,EAAE,gEAAgE,EAAE;QACjI,EAAE,OAAO,EAAE,yCAAyC,EAAE,WAAW,EAAE,qCAAqC,EAAE;KAC3G;IACD,MAAM,EAAE,KAAK,EAAE,GAAmB,EAA0B,EAAE;QAC5D,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAE/E,uEAAuE;QACvE,sEAAsE;QACtE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5E,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACpF,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG;gBAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACzF,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YAAC,CAAC;YACnH,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,QAAQ,cAAc,GAAG,CAAC,QAAQ,qBAAqB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YACzH,MAAM,CAAC,OAAO,CAAC,kCAAkC,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAChH,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACzG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QACtC,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,+DAA+D;QAC/D,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;YAC/E,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,MAAM,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACtF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACpC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,0CAA0C,KAAK,IAAI,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAE1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,QAAQ;gBACR,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI;gBACnC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChF,KAAK,EAAE,KAA+B;gBACtC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM;oBAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9E,CAAC,CAAC;YAEH,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAClB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,MAAM;gBAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;gBACvD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YAE1C,yEAAyE;YACzE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,KAAK,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACpF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAY;IACjC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,8CAA8C;IAC3D,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,WAAW,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,CAAC;IACtJ,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,iBAAiB,EAAE;QACzE,EAAE,OAAO,EAAE,oCAAoC,EAAE,WAAW,EAAE,iBAAiB,EAAE;QACjF,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE;QAClE,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,sBAAsB,EAAE;QACvE,EAAE,OAAO,EAAE,8BAA8B,EAAE,WAAW,EAAE,sBAAsB,EAAE;QAChF,EAAE,OAAO,EAAE,mCAAmC,EAAE,WAAW,EAAE,4BAA4B,EAAE;QAC3F,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,2CAA2C,EAAE;KAC3F;IACD,MAAM,EAAE,KAAK,IAA4B,EAAE;QACzC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/B,MAAM,CAAC,SAAS,CAAC;YACf,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,8CAA8C;YAC3E,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,4CAA4C;YACzE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,8BAA8B;YACzD,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,mDAAmD;YAChF,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,6CAA6C;YAC1E,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,sDAAsD;YACnF,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,2DAA2D;SACvF,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -10,9 +10,10 @@ export declare function checkMemoryDatabase(): Promise<HealthCheck>;
|
|
|
10
10
|
* from sessions and org runs. Informational — an empty graph on a fresh
|
|
11
11
|
* project is normal, so it never fails. */
|
|
12
12
|
export declare function checkMemoryKnowledgeGraph(): Promise<HealthCheck>;
|
|
13
|
-
/** Second Brain: when
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
/** Second Brain: when there is any indexed knowledge — ingested docs in this
|
|
14
|
+
* project, the personal global brain, or the monograph god-node chunk —
|
|
15
|
+
* semantic search needs the local embedding model. Its absence is silent
|
|
16
|
+
* (search degrades to keyword matching), so surface it here instead. */
|
|
16
17
|
export declare function checkSecondBrainModel(): Promise<HealthCheck>;
|
|
17
18
|
export declare function checkApiKeys(): Promise<HealthCheck>;
|
|
18
19
|
export declare function checkMcpServers(): Promise<HealthCheck>;
|
|
@@ -43,4 +44,25 @@ export declare function checkSecurityAuditFindings(): Promise<HealthCheck>;
|
|
|
43
44
|
* AutoMem proficiency check — reports memory learning health
|
|
44
45
|
*/
|
|
45
46
|
export declare function checkMemoryProficiency(): Promise<HealthCheck>;
|
|
47
|
+
/** AppleDouble sidecars (`._name`) under `.claude/`.
|
|
48
|
+
*
|
|
49
|
+
* macOS writes these whenever a file carrying extended attributes is copied to
|
|
50
|
+
* a filesystem that cannot store them natively — exFAT, most USB/network
|
|
51
|
+
* volumes. Harmless as data, but Claude Code discovers skills and commands by
|
|
52
|
+
* reading `.claude/skills/` and `.claude/commands/`, and a stray
|
|
53
|
+
* `._createorg.md` is registered as a real command: a garbage entry named
|
|
54
|
+
* `mastermind:._createorg` appears in the roster, and its "content" is a binary
|
|
55
|
+
* resource fork. They also reappear after any Finder copy, `cp`, or tar
|
|
56
|
+
* extract, so a one-time delete does not hold.
|
|
57
|
+
*
|
|
58
|
+
* Reported here rather than swept silently, because deleting files under
|
|
59
|
+
* `.claude/` should be something the operator sees. `doctor --fix` removes them.
|
|
60
|
+
*/
|
|
61
|
+
export declare function checkAppleDoubleSidecars(): Promise<HealthCheck>;
|
|
62
|
+
/** Every `._*` file under the project's `.claude/` trees. Both the repo-root
|
|
63
|
+
* tree and the npm-shipped copy under packages/, since a sidecar in the latter
|
|
64
|
+
* ships to users. */
|
|
65
|
+
export declare function findAppleDoubleSidecars(cwd: string): string[];
|
|
66
|
+
/** Delete every AppleDouble sidecar found. Returns how many were removed. */
|
|
67
|
+
export declare function fixAppleDoubleSidecars(cwd: string): number;
|
|
46
68
|
//# sourceMappingURL=doctor-project-checks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-project-checks.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor-project-checks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAS1D,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAiB5D;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC,CAahE;AAED;;2CAE2C;AAC3C,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,WAAW,CAAC,CAkBtE;
|
|
1
|
+
{"version":3,"file":"doctor-project-checks.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor-project-checks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAS1D,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAiB5D;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC,CAahE;AAED;;2CAE2C;AAC3C,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,WAAW,CAAC,CAkBtE;AAaD;;;wEAGwE;AACxE,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CA4ClE;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAyBzD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAsB5D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CA6B3D;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC,CA+BpE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAwB9D;AAoED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAiBxD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAa9D;AAoDD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,WAAW,CAAC,CAWnE;AAyCD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,WAAW,CAAC,CAiBnE;AA4BD;6EAC6E;AAC7E,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAoB7D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CAuC/D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CA+B/D;AAkBD;;;;;GAKG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAiClE;AAED;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,WAAW,CAAC,CA6BvE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,WAAW,CAAC,CAyBnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,WAAW,CAAC,CAWrE;AAED;;sBAEsB;AACtB,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB7D;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM1D"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Doctor — project/monomind health checks
|
|
3
3
|
* Config, memory, API keys, MCP, monograph, helpers, routing, gates, gitignore, worker metrics
|
|
4
4
|
*/
|
|
5
|
-
import { existsSync, readFileSync, readdirSync, statSync, mkdirSync, copyFileSync, writeFileSync, appendFileSync } from 'fs';
|
|
5
|
+
import { existsSync, readFileSync, readdirSync, statSync, mkdirSync, copyFileSync, writeFileSync, appendFileSync, rmSync } from 'fs';
|
|
6
6
|
import { join, dirname } from 'path';
|
|
7
7
|
import { fileURLToPath } from 'url';
|
|
8
8
|
import { execSync } from 'child_process';
|
|
@@ -67,14 +67,42 @@ export async function checkMemoryKnowledgeGraph() {
|
|
|
67
67
|
return { name, status: 'warn', message: `Check failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
70
|
+
/** Count live (non-tombstoned) ingested documents under a brain root, without
|
|
71
|
+
* creating the directory — `listDocuments` mkdir's its metadata dir, which
|
|
72
|
+
* would materialize an empty global brain just by running doctor. */
|
|
73
|
+
async function countBrainDocs(root) {
|
|
74
|
+
if (!existsSync(join(root, '.monomind', 'knowledge', 'doc-metadata.jsonl')))
|
|
75
|
+
return 0;
|
|
76
|
+
try {
|
|
77
|
+
const { listDocuments } = await import('../knowledge/document-pipeline.js');
|
|
78
|
+
return listDocuments(root).length;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Second Brain: when there is any indexed knowledge — ingested docs in this
|
|
85
|
+
* project, the personal global brain, or the monograph god-node chunk —
|
|
86
|
+
* semantic search needs the local embedding model. Its absence is silent
|
|
87
|
+
* (search degrades to keyword matching), so surface it here instead. */
|
|
73
88
|
export async function checkSecondBrainModel() {
|
|
74
89
|
const name = 'Second Brain Model';
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
90
|
+
const { getGlobalBrainDir, getProjectRoot } = await import('../memory/memory-bridge.js');
|
|
91
|
+
const projectDocs = await countBrainDocs(getProjectRoot());
|
|
92
|
+
const globalDocs = await countBrainDocs(getGlobalBrainDir());
|
|
93
|
+
// chunks.jsonl holds the monograph god-node chunk — knowledge with no doc
|
|
94
|
+
// ingest. Unlike the document store it is written per-CWD by the session
|
|
95
|
+
// hook, not at the project root, so check both rather than assuming.
|
|
96
|
+
const chunksIn = (root) => existsSync(join(root, '.monomind', 'knowledge', 'chunks.jsonl'));
|
|
97
|
+
const hasChunks = chunksIn(getProjectRoot()) || chunksIn(process.cwd());
|
|
98
|
+
if (!projectDocs && !globalDocs && !hasChunks) {
|
|
99
|
+
return { name, status: 'pass', message: 'No knowledge indexed (nothing to check)' };
|
|
100
|
+
}
|
|
101
|
+
const indexed = [
|
|
102
|
+
projectDocs ? `${projectDocs} project doc${projectDocs === 1 ? '' : 's'}` : null,
|
|
103
|
+
globalDocs ? `${globalDocs} global doc${globalDocs === 1 ? '' : 's'}` : null,
|
|
104
|
+
!projectDocs && !globalDocs ? 'monograph god-nodes' : null,
|
|
105
|
+
].filter(Boolean).join(' · ');
|
|
78
106
|
let entryPath = null;
|
|
79
107
|
try {
|
|
80
108
|
// exports map blocks package.json — resolve the entry file, then walk UP
|
|
@@ -101,7 +129,7 @@ export async function checkSecondBrainModel() {
|
|
|
101
129
|
pkgDir = dirname(pkgDir);
|
|
102
130
|
const modelCache = join(pkgDir, '.cache', 'Xenova');
|
|
103
131
|
if (pkgDir.endsWith('transformers') && existsSync(modelCache)) {
|
|
104
|
-
return { name, status: 'pass', message:
|
|
132
|
+
return { name, status: 'pass', message: `Local embedding model cached — semantic search active (${indexed})` };
|
|
105
133
|
}
|
|
106
134
|
return { name, status: 'warn', message: 'Embedding model not downloaded yet — searches use keyword matching until it is', fix: 'run once while online: monomind doc search -q "warmup" (downloads ~90MB locally, one time)' };
|
|
107
135
|
}
|
|
@@ -761,4 +789,79 @@ export async function checkMemoryProficiency() {
|
|
|
761
789
|
return { name: 'Memory Proficiency', status: 'warn', message: 'Could not load intelligence module' };
|
|
762
790
|
}
|
|
763
791
|
}
|
|
792
|
+
/** AppleDouble sidecars (`._name`) under `.claude/`.
|
|
793
|
+
*
|
|
794
|
+
* macOS writes these whenever a file carrying extended attributes is copied to
|
|
795
|
+
* a filesystem that cannot store them natively — exFAT, most USB/network
|
|
796
|
+
* volumes. Harmless as data, but Claude Code discovers skills and commands by
|
|
797
|
+
* reading `.claude/skills/` and `.claude/commands/`, and a stray
|
|
798
|
+
* `._createorg.md` is registered as a real command: a garbage entry named
|
|
799
|
+
* `mastermind:._createorg` appears in the roster, and its "content" is a binary
|
|
800
|
+
* resource fork. They also reappear after any Finder copy, `cp`, or tar
|
|
801
|
+
* extract, so a one-time delete does not hold.
|
|
802
|
+
*
|
|
803
|
+
* Reported here rather than swept silently, because deleting files under
|
|
804
|
+
* `.claude/` should be something the operator sees. `doctor --fix` removes them.
|
|
805
|
+
*/
|
|
806
|
+
export async function checkAppleDoubleSidecars() {
|
|
807
|
+
const name = 'AppleDouble Sidecars';
|
|
808
|
+
const found = findAppleDoubleSidecars(process.cwd());
|
|
809
|
+
if (found.length === 0)
|
|
810
|
+
return { name, status: 'pass', message: 'None under .claude/' };
|
|
811
|
+
const shown = found.slice(0, 3).map(p => p.replace(process.cwd() + '/', '')).join(', ');
|
|
812
|
+
return {
|
|
813
|
+
name,
|
|
814
|
+
status: 'warn',
|
|
815
|
+
message: `${found.length} AppleDouble file${found.length === 1 ? '' : 's'} under .claude/ (${shown}${found.length > 3 ? ', …' : ''}) — skills/commands dirs register these as real entries`,
|
|
816
|
+
fix: 'monomind doctor --fix (or: find .claude -name "._*" -type f -delete)',
|
|
817
|
+
};
|
|
818
|
+
}
|
|
819
|
+
/** Every `._*` file under the project's `.claude/` trees. Both the repo-root
|
|
820
|
+
* tree and the npm-shipped copy under packages/, since a sidecar in the latter
|
|
821
|
+
* ships to users. */
|
|
822
|
+
export function findAppleDoubleSidecars(cwd) {
|
|
823
|
+
const roots = [join(cwd, '.claude'), join(cwd, 'packages', '@monomind', 'cli', '.claude')];
|
|
824
|
+
const out = [];
|
|
825
|
+
const walk = (dir, depth = 0) => {
|
|
826
|
+
if (depth > 8)
|
|
827
|
+
return;
|
|
828
|
+
let entries;
|
|
829
|
+
try {
|
|
830
|
+
entries = readdirSync(dir);
|
|
831
|
+
}
|
|
832
|
+
catch {
|
|
833
|
+
return;
|
|
834
|
+
}
|
|
835
|
+
for (const e of entries) {
|
|
836
|
+
const full = join(dir, e);
|
|
837
|
+
let isDir;
|
|
838
|
+
try {
|
|
839
|
+
isDir = statSync(full).isDirectory();
|
|
840
|
+
}
|
|
841
|
+
catch {
|
|
842
|
+
continue;
|
|
843
|
+
}
|
|
844
|
+
if (isDir)
|
|
845
|
+
walk(full, depth + 1);
|
|
846
|
+
else if (e.startsWith('._'))
|
|
847
|
+
out.push(full);
|
|
848
|
+
}
|
|
849
|
+
};
|
|
850
|
+
for (const r of roots)
|
|
851
|
+
if (existsSync(r))
|
|
852
|
+
walk(r);
|
|
853
|
+
return out;
|
|
854
|
+
}
|
|
855
|
+
/** Delete every AppleDouble sidecar found. Returns how many were removed. */
|
|
856
|
+
export function fixAppleDoubleSidecars(cwd) {
|
|
857
|
+
let removed = 0;
|
|
858
|
+
for (const f of findAppleDoubleSidecars(cwd)) {
|
|
859
|
+
try {
|
|
860
|
+
rmSync(f, { force: true });
|
|
861
|
+
removed++;
|
|
862
|
+
}
|
|
863
|
+
catch { /* best effort */ }
|
|
864
|
+
}
|
|
865
|
+
return removed;
|
|
866
|
+
}
|
|
764
867
|
//# sourceMappingURL=doctor-project-checks.js.map
|