audrey 1.1.2 → 1.2.0
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/CHANGELOG.md +101 -0
- package/README.md +39 -12
- package/dist/mcp-server/codex-hooks-probe.d.ts +22 -0
- package/dist/mcp-server/codex-hooks-probe.d.ts.map +1 -0
- package/dist/mcp-server/codex-hooks-probe.js +160 -0
- package/dist/mcp-server/codex-hooks-probe.js.map +1 -0
- package/dist/mcp-server/config.d.ts +26 -2
- package/dist/mcp-server/config.d.ts.map +1 -1
- package/dist/mcp-server/config.js +52 -20
- package/dist/mcp-server/config.js.map +1 -1
- package/dist/mcp-server/hooks.d.ts +28 -0
- package/dist/mcp-server/hooks.d.ts.map +1 -1
- package/dist/mcp-server/hooks.js +91 -2
- package/dist/mcp-server/hooks.js.map +1 -1
- package/dist/mcp-server/index.d.ts +242 -2
- package/dist/mcp-server/index.d.ts.map +1 -1
- package/dist/mcp-server/index.js +806 -240
- package/dist/mcp-server/index.js.map +1 -1
- package/dist/mcp-server/tool-schemas.d.ts +32 -2
- package/dist/mcp-server/tool-schemas.d.ts.map +1 -1
- package/dist/mcp-server/tool-schemas.js +55 -0
- package/dist/mcp-server/tool-schemas.js.map +1 -1
- package/dist/src/audrey.d.ts +14 -2
- package/dist/src/audrey.d.ts.map +1 -1
- package/dist/src/audrey.js +152 -28
- package/dist/src/audrey.js.map +1 -1
- package/dist/src/autopilot.d.ts +22 -0
- package/dist/src/autopilot.d.ts.map +1 -1
- package/dist/src/autopilot.js +271 -50
- package/dist/src/autopilot.js.map +1 -1
- package/dist/src/capsule.d.ts +23 -0
- package/dist/src/capsule.d.ts.map +1 -1
- package/dist/src/capsule.js +56 -11
- package/dist/src/capsule.js.map +1 -1
- package/dist/src/confidence.d.ts +9 -1
- package/dist/src/confidence.d.ts.map +1 -1
- package/dist/src/confidence.js +16 -2
- package/dist/src/confidence.js.map +1 -1
- package/dist/src/consolidate.d.ts +4 -0
- package/dist/src/consolidate.d.ts.map +1 -1
- package/dist/src/consolidate.js +206 -34
- package/dist/src/consolidate.js.map +1 -1
- package/dist/src/controller.d.ts +17 -1
- package/dist/src/controller.d.ts.map +1 -1
- package/dist/src/controller.js +244 -128
- package/dist/src/controller.js.map +1 -1
- package/dist/src/db.d.ts.map +1 -1
- package/dist/src/db.js +233 -56
- package/dist/src/db.js.map +1 -1
- package/dist/src/encode.d.ts +2 -1
- package/dist/src/encode.d.ts.map +1 -1
- package/dist/src/encode.js +41 -4
- package/dist/src/encode.js.map +1 -1
- package/dist/src/events.d.ts +48 -1
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +160 -62
- package/dist/src/events.js.map +1 -1
- package/dist/src/export.d.ts.map +1 -1
- package/dist/src/export.js +4 -4
- package/dist/src/export.js.map +1 -1
- package/dist/src/grounding.d.ts +111 -0
- package/dist/src/grounding.d.ts.map +1 -0
- package/dist/src/grounding.js +259 -0
- package/dist/src/grounding.js.map +1 -0
- package/dist/src/hybrid-recall.d.ts +16 -7
- package/dist/src/hybrid-recall.d.ts.map +1 -1
- package/dist/src/hybrid-recall.js +22 -11
- package/dist/src/hybrid-recall.js.map +1 -1
- package/dist/src/import.d.ts +10 -0
- package/dist/src/import.d.ts.map +1 -1
- package/dist/src/import.js +122 -22
- package/dist/src/import.js.map +1 -1
- package/dist/src/llm.d.ts.map +1 -1
- package/dist/src/llm.js +16 -0
- package/dist/src/llm.js.map +1 -1
- package/dist/src/preflight.d.ts.map +1 -1
- package/dist/src/preflight.js +89 -47
- package/dist/src/preflight.js.map +1 -1
- package/dist/src/project.d.ts +4 -1
- package/dist/src/project.d.ts.map +1 -1
- package/dist/src/project.js +65 -5
- package/dist/src/project.js.map +1 -1
- package/dist/src/recall.d.ts.map +1 -1
- package/dist/src/recall.js +138 -13
- package/dist/src/recall.js.map +1 -1
- package/dist/src/redact.d.ts +1 -1
- package/dist/src/redact.d.ts.map +1 -1
- package/dist/src/redact.js +185 -5
- package/dist/src/redact.js.map +1 -1
- package/dist/src/routes.d.ts.map +1 -1
- package/dist/src/routes.js +91 -18
- package/dist/src/routes.js.map +1 -1
- package/dist/src/trust.d.ts +35 -0
- package/dist/src/trust.d.ts.map +1 -0
- package/dist/src/trust.js +77 -0
- package/dist/src/trust.js.map +1 -0
- package/dist/src/types.d.ts +24 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +4 -38
- package/benchmarks/adapter-kit.mjs +0 -20
- package/benchmarks/adapter-self-test.mjs +0 -170
- package/benchmarks/adapters/example-allow.mjs +0 -31
- package/benchmarks/adapters/mem0-platform.mjs +0 -274
- package/benchmarks/adapters/registry.json +0 -51
- package/benchmarks/adapters/zep-cloud.mjs +0 -304
- package/benchmarks/baselines.js +0 -174
- package/benchmarks/build-leaderboard.mjs +0 -183
- package/benchmarks/cases.js +0 -549
- package/benchmarks/create-conformance-card.mjs +0 -148
- package/benchmarks/create-submission-bundle.mjs +0 -190
- package/benchmarks/dry-run-external-adapters.mjs +0 -177
- package/benchmarks/guardbench.js +0 -1265
- package/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +0 -50
- package/benchmarks/output/external/guardbench-external-dry-run.json +0 -69
- package/benchmarks/output/external/guardbench-external-evidence.json +0 -56
- package/benchmarks/output/guardbench-conformance-card.json +0 -63
- package/benchmarks/output/guardbench-manifest.json +0 -414
- package/benchmarks/output/guardbench-raw.json +0 -1279
- package/benchmarks/output/guardbench-summary.json +0 -2123
- package/benchmarks/output/leaderboard/guardbench-leaderboard.json +0 -93
- package/benchmarks/output/leaderboard/guardbench-leaderboard.md +0 -7
- package/benchmarks/output/submission-bundle/guardbench-conformance-card.json +0 -63
- package/benchmarks/output/submission-bundle/guardbench-manifest.json +0 -414
- package/benchmarks/output/submission-bundle/guardbench-raw.json +0 -1279
- package/benchmarks/output/submission-bundle/guardbench-summary.json +0 -2123
- package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-registry.schema.json +0 -69
- package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-self-test.schema.json +0 -156
- package/benchmarks/output/submission-bundle/schemas/guardbench-conformance-card.schema.json +0 -184
- package/benchmarks/output/submission-bundle/schemas/guardbench-external-dry-run.schema.json +0 -74
- package/benchmarks/output/submission-bundle/schemas/guardbench-external-evidence.schema.json +0 -108
- package/benchmarks/output/submission-bundle/schemas/guardbench-external-run.schema.json +0 -160
- package/benchmarks/output/submission-bundle/schemas/guardbench-leaderboard.schema.json +0 -179
- package/benchmarks/output/submission-bundle/schemas/guardbench-manifest.schema.json +0 -213
- package/benchmarks/output/submission-bundle/schemas/guardbench-publication-verification.schema.json +0 -47
- package/benchmarks/output/submission-bundle/schemas/guardbench-raw.schema.json +0 -184
- package/benchmarks/output/submission-bundle/schemas/guardbench-submission-manifest.schema.json +0 -151
- package/benchmarks/output/submission-bundle/schemas/guardbench-summary.schema.json +0 -249
- package/benchmarks/output/submission-bundle/submission-manifest.json +0 -131
- package/benchmarks/output/submission-bundle/validation-report.json +0 -31
- package/benchmarks/output/summary.json +0 -2354
- package/benchmarks/perf-snapshot.js +0 -307
- package/benchmarks/perf.bench.js +0 -169
- package/benchmarks/public-paths.mjs +0 -97
- package/benchmarks/reference-results.js +0 -75
- package/benchmarks/report.js +0 -280
- package/benchmarks/run-external-guardbench.mjs +0 -303
- package/benchmarks/run.js +0 -735
- package/benchmarks/schemas/guardbench-adapter-registry.schema.json +0 -69
- package/benchmarks/schemas/guardbench-adapter-self-test.schema.json +0 -156
- package/benchmarks/schemas/guardbench-conformance-card.schema.json +0 -184
- package/benchmarks/schemas/guardbench-external-dry-run.schema.json +0 -74
- package/benchmarks/schemas/guardbench-external-evidence.schema.json +0 -108
- package/benchmarks/schemas/guardbench-external-run.schema.json +0 -160
- package/benchmarks/schemas/guardbench-leaderboard.schema.json +0 -179
- package/benchmarks/schemas/guardbench-manifest.schema.json +0 -213
- package/benchmarks/schemas/guardbench-publication-verification.schema.json +0 -47
- package/benchmarks/schemas/guardbench-raw.schema.json +0 -184
- package/benchmarks/schemas/guardbench-submission-manifest.schema.json +0 -151
- package/benchmarks/schemas/guardbench-summary.schema.json +0 -249
- package/benchmarks/snapshots/perf-0.22.2.json +0 -123
- package/benchmarks/snapshots/perf-0.23.0.json +0 -123
- package/benchmarks/validate-adapter-module.mjs +0 -107
- package/benchmarks/validate-adapter-registry.mjs +0 -145
- package/benchmarks/validate-adapter-self-test.mjs +0 -96
- package/benchmarks/validate-guardbench-artifacts.mjs +0 -400
- package/benchmarks/verify-external-evidence.mjs +0 -351
- package/benchmarks/verify-publication-artifacts.mjs +0 -309
- package/benchmarks/verify-submission-bundle.mjs +0 -172
- package/docs/AUDREY_PAPER_OUTLINE.md +0 -178
- package/docs/MEMORY_BENCHMARKING.md +0 -59
- package/docs/PRODUCTION_BACKLOG.md +0 -321
- package/docs/assets/audrey-feature-grid.jpg +0 -0
- package/docs/assets/audrey-logo.svg +0 -45
- package/docs/assets/audrey-wordmark.png +0 -0
- package/docs/paper/00-master.md +0 -48
- package/docs/paper/01-introduction.md +0 -27
- package/docs/paper/02-related-work.md +0 -47
- package/docs/paper/03-problem-definition.md +0 -108
- package/docs/paper/04-design.md +0 -164
- package/docs/paper/05-guardbench-spec.md +0 -412
- package/docs/paper/06-implementation.md +0 -115
- package/docs/paper/07-evaluation.md +0 -168
- package/docs/paper/08-discussion-limitations.md +0 -61
- package/docs/paper/09-conclusion.md +0 -11
- package/docs/paper/SUBMISSION_README.md +0 -162
- package/docs/paper/appendix-a-demo-transcript.md +0 -114
- package/docs/paper/arxiv-compile-report.schema.json +0 -116
- package/docs/paper/arxiv-source.schema.json +0 -61
- package/docs/paper/audrey-paper-v1.md +0 -1108
- package/docs/paper/browser-launch-plan.json +0 -209
- package/docs/paper/browser-launch-plan.schema.json +0 -100
- package/docs/paper/browser-launch-results.json +0 -86
- package/docs/paper/browser-launch-results.schema.json +0 -66
- package/docs/paper/claim-register.json +0 -138
- package/docs/paper/claim-register.schema.json +0 -81
- package/docs/paper/evidence-ledger.md +0 -103
- package/docs/paper/output/arxiv/README-arxiv.txt +0 -8
- package/docs/paper/output/arxiv/arxiv-manifest.json +0 -41
- package/docs/paper/output/arxiv/main.tex +0 -951
- package/docs/paper/output/arxiv/references.bib +0 -222
- package/docs/paper/output/arxiv-compile-report.json +0 -24
- package/docs/paper/output/submission-bundle/LICENSE +0 -21
- package/docs/paper/output/submission-bundle/README.md +0 -440
- package/docs/paper/output/submission-bundle/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +0 -50
- package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-dry-run.json +0 -69
- package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-evidence.json +0 -56
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-conformance-card.json +0 -63
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-manifest.json +0 -414
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-raw.json +0 -1279
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-summary.json +0 -2123
- package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.json +0 -93
- package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.md +0 -7
- package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/submission-manifest.json +0 -131
- package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/validation-report.json +0 -31
- package/docs/paper/output/submission-bundle/benchmarks/output/summary.json +0 -2354
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-registry.schema.json +0 -69
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-self-test.schema.json +0 -156
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-conformance-card.schema.json +0 -184
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-dry-run.schema.json +0 -74
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-evidence.schema.json +0 -108
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-run.schema.json +0 -160
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-leaderboard.schema.json +0 -179
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-manifest.schema.json +0 -213
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-publication-verification.schema.json +0 -47
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-raw.schema.json +0 -184
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-submission-manifest.schema.json +0 -151
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-summary.schema.json +0 -249
- package/docs/paper/output/submission-bundle/docs/AUDREY_PAPER_OUTLINE.md +0 -178
- package/docs/paper/output/submission-bundle/docs/paper/00-master.md +0 -48
- package/docs/paper/output/submission-bundle/docs/paper/01-introduction.md +0 -27
- package/docs/paper/output/submission-bundle/docs/paper/02-related-work.md +0 -47
- package/docs/paper/output/submission-bundle/docs/paper/03-problem-definition.md +0 -108
- package/docs/paper/output/submission-bundle/docs/paper/04-design.md +0 -164
- package/docs/paper/output/submission-bundle/docs/paper/05-guardbench-spec.md +0 -412
- package/docs/paper/output/submission-bundle/docs/paper/06-implementation.md +0 -115
- package/docs/paper/output/submission-bundle/docs/paper/07-evaluation.md +0 -168
- package/docs/paper/output/submission-bundle/docs/paper/08-discussion-limitations.md +0 -61
- package/docs/paper/output/submission-bundle/docs/paper/09-conclusion.md +0 -11
- package/docs/paper/output/submission-bundle/docs/paper/SUBMISSION_README.md +0 -162
- package/docs/paper/output/submission-bundle/docs/paper/appendix-a-demo-transcript.md +0 -114
- package/docs/paper/output/submission-bundle/docs/paper/arxiv-compile-report.schema.json +0 -116
- package/docs/paper/output/submission-bundle/docs/paper/arxiv-source.schema.json +0 -61
- package/docs/paper/output/submission-bundle/docs/paper/audrey-paper-v1.md +0 -1108
- package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.json +0 -209
- package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.schema.json +0 -100
- package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.json +0 -86
- package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.schema.json +0 -66
- package/docs/paper/output/submission-bundle/docs/paper/claim-register.json +0 -138
- package/docs/paper/output/submission-bundle/docs/paper/claim-register.schema.json +0 -81
- package/docs/paper/output/submission-bundle/docs/paper/evidence-ledger.md +0 -103
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/README-arxiv.txt +0 -8
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/arxiv-manifest.json +0 -41
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/main.tex +0 -951
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/references.bib +0 -222
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv-compile-report.json +0 -24
- package/docs/paper/output/submission-bundle/docs/paper/paper-submission-bundle.schema.json +0 -70
- package/docs/paper/output/submission-bundle/docs/paper/publication-pack.json +0 -81
- package/docs/paper/output/submission-bundle/docs/paper/publication-pack.schema.json +0 -60
- package/docs/paper/output/submission-bundle/docs/paper/references.bib +0 -222
- package/docs/paper/output/submission-bundle/package.json +0 -235
- package/docs/paper/output/submission-bundle/paper-submission-manifest.json +0 -379
- package/docs/paper/paper-submission-bundle.schema.json +0 -70
- package/docs/paper/publication-pack.json +0 -81
- package/docs/paper/publication-pack.schema.json +0 -60
- package/docs/paper/references.bib +0 -222
- package/scripts/audit-release-completion.mjs +0 -440
- package/scripts/create-arxiv-source.mjs +0 -368
- package/scripts/create-paper-submission-bundle.mjs +0 -214
- package/scripts/finalize-release.mjs +0 -601
- package/scripts/prepare-release-cut.mjs +0 -277
- package/scripts/publish-release-bundle.mjs +0 -252
- package/scripts/publish-release-github-api.mjs +0 -494
- package/scripts/run-vitest.mjs +0 -34
- package/scripts/smoke-cli.js +0 -92
- package/scripts/sync-paper-artifacts.mjs +0 -112
- package/scripts/verify-arxiv-compile.mjs +0 -476
- package/scripts/verify-arxiv-source.mjs +0 -224
- package/scripts/verify-browser-launch-plan.mjs +0 -254
- package/scripts/verify-browser-launch-results.mjs +0 -303
- package/scripts/verify-paper-artifacts.mjs +0 -798
- package/scripts/verify-paper-claims.mjs +0 -254
- package/scripts/verify-paper-submission-bundle.mjs +0 -218
- package/scripts/verify-publication-pack.mjs +0 -210
- package/scripts/verify-python-package.py +0 -201
- package/scripts/verify-release-readiness.mjs +0 -920
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { isAbsolute, join, normalize } from 'node:path';
|
|
3
|
+
import { ulid } from 'ulid';
|
|
4
|
+
/**
|
|
5
|
+
* Multiplier applied to a memory carrying at least one broken anchor. Chosen
|
|
6
|
+
* to push a broken memory below the default recall floor without erasing it:
|
|
7
|
+
* it should stop leading the agent by default while staying inspectable, and
|
|
8
|
+
* still able to outrank noise if it is the only thing that matches.
|
|
9
|
+
*/
|
|
10
|
+
export const BROKEN_GROUNDING_MODIFIER = 0.5;
|
|
11
|
+
/** Directory names whose contents are not the project's own source. */
|
|
12
|
+
const IGNORED_PATH_SEGMENTS = new Set(['node_modules', '.git', 'dist', 'build', 'coverage']);
|
|
13
|
+
/**
|
|
14
|
+
* `npm run build`, `pnpm run test:watch`, `yarn deploy:prod`. The runner is
|
|
15
|
+
* required: a bare word after "run" in prose is not a script name.
|
|
16
|
+
*/
|
|
17
|
+
const SCRIPT_PATTERN = /\b(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?([a-zA-Z][\w:.-]{0,63})\b/g;
|
|
18
|
+
/**
|
|
19
|
+
* A repository-relative path with a real file extension. The extension is
|
|
20
|
+
* what keeps this from matching ordinary prose containing a slash, and the
|
|
21
|
+
* leading anchor keeps it from matching URLs — those are checked separately
|
|
22
|
+
* and rejected, since an http(s) path is not a filesystem claim.
|
|
23
|
+
*/
|
|
24
|
+
const PATH_PATTERN = /(?<![\w:/\\.-])((?:\.{1,2}\/)?[\w.-]+(?:[/\\][\w.-]+)+\.[a-zA-Z][\w]{0,5})\b/g;
|
|
25
|
+
/** Script names that are runner builtins rather than package scripts. */
|
|
26
|
+
const RUNNER_BUILTINS = new Set([
|
|
27
|
+
'install',
|
|
28
|
+
'i',
|
|
29
|
+
'add',
|
|
30
|
+
'remove',
|
|
31
|
+
'update',
|
|
32
|
+
'audit',
|
|
33
|
+
'publish',
|
|
34
|
+
'pack',
|
|
35
|
+
'link',
|
|
36
|
+
'init',
|
|
37
|
+
'exec',
|
|
38
|
+
'dlx',
|
|
39
|
+
'create',
|
|
40
|
+
'why',
|
|
41
|
+
'list',
|
|
42
|
+
'ls',
|
|
43
|
+
'outdated',
|
|
44
|
+
'login',
|
|
45
|
+
'logout',
|
|
46
|
+
'view',
|
|
47
|
+
'run',
|
|
48
|
+
]);
|
|
49
|
+
function normalizeRelativePath(raw) {
|
|
50
|
+
const unified = raw.replace(/\\/g, '/').replace(/^\.\//, '');
|
|
51
|
+
if (!unified || unified.startsWith('../'))
|
|
52
|
+
return null;
|
|
53
|
+
if (isAbsolute(unified) || /^[A-Za-z]:\//.test(unified))
|
|
54
|
+
return null;
|
|
55
|
+
const segments = unified.split('/');
|
|
56
|
+
if (segments.some(segment => IGNORED_PATH_SEGMENTS.has(segment)))
|
|
57
|
+
return null;
|
|
58
|
+
return unified;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Pulls checkable claims out of memory content. Extraction is deliberately
|
|
62
|
+
* narrow: a claim that cannot be checked cheaply and unambiguously is better
|
|
63
|
+
* left unanchored than turned into a signal nobody can trust.
|
|
64
|
+
*/
|
|
65
|
+
export function extractAnchorCandidates(content) {
|
|
66
|
+
const found = new Map();
|
|
67
|
+
if (!content)
|
|
68
|
+
return [];
|
|
69
|
+
for (const match of content.matchAll(SCRIPT_PATTERN)) {
|
|
70
|
+
const name = match[1];
|
|
71
|
+
if (!name || RUNNER_BUILTINS.has(name))
|
|
72
|
+
continue;
|
|
73
|
+
found.set(`npm_script:${name}`, { kind: 'npm_script', value: name });
|
|
74
|
+
}
|
|
75
|
+
for (const match of content.matchAll(PATH_PATTERN)) {
|
|
76
|
+
const raw = match[1];
|
|
77
|
+
if (!raw)
|
|
78
|
+
continue;
|
|
79
|
+
const value = normalizeRelativePath(raw);
|
|
80
|
+
if (!value)
|
|
81
|
+
continue;
|
|
82
|
+
found.set(`path:${value}`, { kind: 'path', value });
|
|
83
|
+
}
|
|
84
|
+
return [...found.values()];
|
|
85
|
+
}
|
|
86
|
+
/** Reads a project's package scripts once per verification pass. */
|
|
87
|
+
function packageScripts(projectRoot, cache) {
|
|
88
|
+
const cached = cache.get(projectRoot);
|
|
89
|
+
if (cached)
|
|
90
|
+
return cached;
|
|
91
|
+
let names = new Set();
|
|
92
|
+
try {
|
|
93
|
+
const parsed = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf8'));
|
|
94
|
+
if (parsed.scripts && typeof parsed.scripts === 'object') {
|
|
95
|
+
names = new Set(Object.keys(parsed.scripts));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// No package.json, or unreadable: script anchors cannot be judged here.
|
|
100
|
+
// verifyAnchor treats that as unknown rather than broken.
|
|
101
|
+
}
|
|
102
|
+
cache.set(projectRoot, names);
|
|
103
|
+
return names;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Returns true when the claim holds, false when it demonstrably does not,
|
|
107
|
+
* and null when it cannot be judged — an unreadable project, or a store
|
|
108
|
+
* whose project no longer exists on this machine. Unknown is never treated
|
|
109
|
+
* as broken: a memory must not be discredited because the checkout moved.
|
|
110
|
+
*/
|
|
111
|
+
export function verifyAnchor(anchor, projectRoot, cache = new Map()) {
|
|
112
|
+
if (!projectRoot || !existsSync(projectRoot))
|
|
113
|
+
return null;
|
|
114
|
+
if (anchor.kind === 'path') {
|
|
115
|
+
const target = normalize(join(projectRoot, anchor.value));
|
|
116
|
+
return existsSync(target);
|
|
117
|
+
}
|
|
118
|
+
const scripts = packageScripts(projectRoot, cache);
|
|
119
|
+
if (scripts.size === 0)
|
|
120
|
+
return null;
|
|
121
|
+
return scripts.has(anchor.value);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Records the anchors in a memory's content that verify right now. Anchors
|
|
125
|
+
* that do not verify at write time are dropped rather than stored as broken:
|
|
126
|
+
* see the module comment — only a claim that was once true carries
|
|
127
|
+
* information when it later stops being true.
|
|
128
|
+
*/
|
|
129
|
+
export function recordAnchors(db, input) {
|
|
130
|
+
const { memoryId, memoryType, agent, content, projectRoot } = input;
|
|
131
|
+
if (!projectRoot)
|
|
132
|
+
return 0;
|
|
133
|
+
const candidates = extractAnchorCandidates(content);
|
|
134
|
+
if (candidates.length === 0)
|
|
135
|
+
return 0;
|
|
136
|
+
const timestamp = (input.now ?? new Date()).toISOString();
|
|
137
|
+
const cache = new Map();
|
|
138
|
+
const verified = candidates.filter(candidate => verifyAnchor(candidate, projectRoot, cache));
|
|
139
|
+
if (verified.length === 0)
|
|
140
|
+
return 0;
|
|
141
|
+
const insert = db.prepare(`
|
|
142
|
+
INSERT OR IGNORE INTO memory_anchors
|
|
143
|
+
(id, memory_id, memory_type, agent, project_root, kind, value, state, created_at, last_verified_at)
|
|
144
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 'intact', ?, ?)
|
|
145
|
+
`);
|
|
146
|
+
const write = db.transaction(() => {
|
|
147
|
+
for (const anchor of verified) {
|
|
148
|
+
insert.run(ulid(), memoryId, memoryType, agent, projectRoot, anchor.kind, anchor.value, timestamp, timestamp);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
write();
|
|
152
|
+
return verified.length;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Re-checks stored anchors against the current state of their project and
|
|
156
|
+
* moves them between intact and broken. Repair is symmetric: a path that
|
|
157
|
+
* comes back — a reverted delete, a restored checkout — clears the broken
|
|
158
|
+
* state, so a transient absence does not permanently discredit a memory.
|
|
159
|
+
*/
|
|
160
|
+
export function verifyAnchors(db, options = {}) {
|
|
161
|
+
const report = {
|
|
162
|
+
checked: 0,
|
|
163
|
+
intact: 0,
|
|
164
|
+
broken: 0,
|
|
165
|
+
repaired: 0,
|
|
166
|
+
newlyBroken: [],
|
|
167
|
+
};
|
|
168
|
+
const limit = options.limit ?? 2000;
|
|
169
|
+
const filters = [];
|
|
170
|
+
const params = [];
|
|
171
|
+
if (options.agent) {
|
|
172
|
+
filters.push('agent = ?');
|
|
173
|
+
params.push(options.agent);
|
|
174
|
+
}
|
|
175
|
+
if (options.projectRoot) {
|
|
176
|
+
filters.push('project_root = ?');
|
|
177
|
+
params.push(options.projectRoot);
|
|
178
|
+
}
|
|
179
|
+
const where = filters.length > 0 ? `WHERE ${filters.join(' AND ')}` : '';
|
|
180
|
+
const rows = db
|
|
181
|
+
.prepare(`SELECT id, memory_id, project_root, kind, value, state
|
|
182
|
+
FROM memory_anchors ${where}
|
|
183
|
+
ORDER BY last_verified_at IS NULL DESC, last_verified_at ASC
|
|
184
|
+
LIMIT ?`)
|
|
185
|
+
.all(...params, limit);
|
|
186
|
+
if (rows.length === 0)
|
|
187
|
+
return report;
|
|
188
|
+
const timestamp = (options.now ?? new Date()).toISOString();
|
|
189
|
+
const cache = new Map();
|
|
190
|
+
const markIntact = db.prepare(`UPDATE memory_anchors SET state = 'intact', last_verified_at = ?, broken_at = NULL WHERE id = ?`);
|
|
191
|
+
const markBroken = db.prepare(`UPDATE memory_anchors SET state = 'broken', last_verified_at = ?, broken_at = ? WHERE id = ?`);
|
|
192
|
+
const run = db.transaction(() => {
|
|
193
|
+
for (const row of rows) {
|
|
194
|
+
const result = verifyAnchor({ kind: row.kind, value: row.value }, row.project_root, cache);
|
|
195
|
+
// Unknown leaves the row exactly as it was, including its previous
|
|
196
|
+
// verification time, so it stays at the front of the queue.
|
|
197
|
+
if (result === null)
|
|
198
|
+
continue;
|
|
199
|
+
report.checked += 1;
|
|
200
|
+
if (result) {
|
|
201
|
+
report.intact += 1;
|
|
202
|
+
if (row.state === 'broken')
|
|
203
|
+
report.repaired += 1;
|
|
204
|
+
markIntact.run(timestamp, row.id);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
report.broken += 1;
|
|
208
|
+
if (row.state !== 'broken') {
|
|
209
|
+
report.newlyBroken.push({ memoryId: row.memory_id, kind: row.kind, value: row.value });
|
|
210
|
+
}
|
|
211
|
+
markBroken.run(timestamp, timestamp, row.id);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
run();
|
|
216
|
+
return report;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Grounding for a set of memory ids, for callers that already hold recall
|
|
220
|
+
* results and need to annotate them. Returns entries only for memories that
|
|
221
|
+
* actually carry anchors, so an unanchored memory stays unlabelled rather
|
|
222
|
+
* than being presented as verified.
|
|
223
|
+
*/
|
|
224
|
+
export function groundingForMemories(db, memoryIds) {
|
|
225
|
+
const grounding = new Map();
|
|
226
|
+
if (memoryIds.length === 0)
|
|
227
|
+
return grounding;
|
|
228
|
+
const placeholders = memoryIds.map(() => '?').join(',');
|
|
229
|
+
const rows = db
|
|
230
|
+
.prepare(`SELECT memory_id, kind, value, state
|
|
231
|
+
FROM memory_anchors WHERE memory_id IN (${placeholders})`)
|
|
232
|
+
.all(...memoryIds);
|
|
233
|
+
for (const row of rows) {
|
|
234
|
+
const entry = grounding.get(row.memory_id) ?? { state: 'grounded', brokenAnchors: [] };
|
|
235
|
+
if (row.state === 'broken') {
|
|
236
|
+
entry.state = 'broken';
|
|
237
|
+
entry.brokenAnchors.push({ kind: row.kind, value: row.value });
|
|
238
|
+
}
|
|
239
|
+
grounding.set(row.memory_id, entry);
|
|
240
|
+
}
|
|
241
|
+
return grounding;
|
|
242
|
+
}
|
|
243
|
+
/** Confidence multiplier for a memory's grounding state. */
|
|
244
|
+
export function groundingModifier(state) {
|
|
245
|
+
return state === 'broken' ? BROKEN_GROUNDING_MODIFIER : 1;
|
|
246
|
+
}
|
|
247
|
+
/** One-line, human-readable statement of what a memory still asserts. */
|
|
248
|
+
export function describeBrokenGrounding(grounding) {
|
|
249
|
+
const described = grounding.brokenAnchors
|
|
250
|
+
.slice(0, 3)
|
|
251
|
+
.map(anchor => (anchor.kind === 'npm_script' ? `script "${anchor.value}"` : anchor.value));
|
|
252
|
+
if (described.length === 0)
|
|
253
|
+
return '';
|
|
254
|
+
const remaining = grounding.brokenAnchors.length - described.length;
|
|
255
|
+
const tail = remaining > 0 ? `, and ${remaining} more` : '';
|
|
256
|
+
const verb = grounding.brokenAnchors.length === 1 ? 'no longer exists' : 'no longer exist';
|
|
257
|
+
return `References ${described.join(', ')}${tail}, which ${verb} in this project.`;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=grounding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grounding.js","sourceRoot":"","sources":["../../src/grounding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Hybrid retrieval: vector KNN + FTS5 BM25, fused
|
|
2
|
+
* Hybrid retrieval: vector KNN + FTS5 BM25, fused into one score per document.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* The two retrievers produce genuinely different kinds of signal. Vector
|
|
5
|
+
* search already yields a continuous, confidence-aware score in [0, 1]
|
|
6
|
+
* (similarity * confidence) — that's `baseScore`, used as-is. FTS5's bm25
|
|
7
|
+
* rank has no comparable continuous scale, so it's converted to a
|
|
8
|
+
* reciprocal-rank term and normalized against its own best-possible value
|
|
9
|
+
* (rank 1): normalizedFtsRank = (k + 1) / (k + rank), which is 1.0 for the
|
|
10
|
+
* top FTS hit and shrinks toward 0 for lower ranks. With both signals now on
|
|
11
|
+
* the same [0, 1] scale, VECTOR_WEIGHT and FTS_WEIGHT set an honest tradeoff
|
|
12
|
+
* instead of one term being numerically invisible next to the other:
|
|
13
|
+
* score(d) = baseScore(d) * VECTOR_WEIGHT + normalizedFtsRank(d) * FTS_WEIGHT
|
|
14
|
+
* A document only vector finds maxes out at VECTOR_WEIGHT; a document only
|
|
15
|
+
* FTS finds at rank 1 reaches FTS_WEIGHT. Since FTS_WEIGHT > VECTOR_WEIGHT,
|
|
16
|
+
* an exact keyword/identifier match beats a merely-similar vector hit even
|
|
17
|
+
* at the vector hit's best possible score — and a document both retrievers
|
|
18
|
+
* surface combines both terms, so it outranks either one alone.
|
|
10
19
|
*
|
|
11
20
|
* This module does NOT re-implement confidence scoring — vector candidates
|
|
12
21
|
* arrive already scored; FTS-only candidates get an enrichment pass that
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-recall.d.ts","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hybrid-recall.d.ts","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA+C1E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,MAAM,GAAG,SAAqB,GAC1C,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CA0B3B;AA4GD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA8BD,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY,EAAE,CAmEnF"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Hybrid retrieval: vector KNN + FTS5 BM25, fused
|
|
2
|
+
* Hybrid retrieval: vector KNN + FTS5 BM25, fused into one score per document.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* The two retrievers produce genuinely different kinds of signal. Vector
|
|
5
|
+
* search already yields a continuous, confidence-aware score in [0, 1]
|
|
6
|
+
* (similarity * confidence) — that's `baseScore`, used as-is. FTS5's bm25
|
|
7
|
+
* rank has no comparable continuous scale, so it's converted to a
|
|
8
|
+
* reciprocal-rank term and normalized against its own best-possible value
|
|
9
|
+
* (rank 1): normalizedFtsRank = (k + 1) / (k + rank), which is 1.0 for the
|
|
10
|
+
* top FTS hit and shrinks toward 0 for lower ranks. With both signals now on
|
|
11
|
+
* the same [0, 1] scale, VECTOR_WEIGHT and FTS_WEIGHT set an honest tradeoff
|
|
12
|
+
* instead of one term being numerically invisible next to the other:
|
|
13
|
+
* score(d) = baseScore(d) * VECTOR_WEIGHT + normalizedFtsRank(d) * FTS_WEIGHT
|
|
14
|
+
* A document only vector finds maxes out at VECTOR_WEIGHT; a document only
|
|
15
|
+
* FTS finds at rank 1 reaches FTS_WEIGHT. Since FTS_WEIGHT > VECTOR_WEIGHT,
|
|
16
|
+
* an exact keyword/identifier match beats a merely-similar vector hit even
|
|
17
|
+
* at the vector hit's best possible score — and a document both retrievers
|
|
18
|
+
* surface combines both terms, so it outranks either one alone.
|
|
10
19
|
*
|
|
11
20
|
* This module does NOT re-implement confidence scoring — vector candidates
|
|
12
21
|
* arrive already scored; FTS-only candidates get an enrichment pass that
|
|
@@ -208,17 +217,19 @@ export function fuseResults(db, input) {
|
|
|
208
217
|
if (result.confidence < minConfidence)
|
|
209
218
|
continue;
|
|
210
219
|
}
|
|
211
|
-
const vrank = ranks.vrank;
|
|
212
220
|
const frank = ranks.frank;
|
|
213
|
-
const rrf = (vrank !== undefined ? 1 / (RRF_K + vrank) : 0) +
|
|
214
|
-
(frank !== undefined ? 1 / (RRF_K + frank) : 0);
|
|
215
221
|
let fusedScore;
|
|
216
222
|
if (mode === 'keyword') {
|
|
217
223
|
fusedScore = frank !== undefined ? 1 / (RRF_K + frank) : 0;
|
|
218
224
|
}
|
|
219
225
|
else {
|
|
220
226
|
const baseScore = result.score ?? 0;
|
|
221
|
-
|
|
227
|
+
// Only the FTS rank feeds this term. The vector side already has its
|
|
228
|
+
// own continuous, confidence-aware score (baseScore) — folding vrank
|
|
229
|
+
// into this term too would double-count vector relevance and make it
|
|
230
|
+
// impossible for an FTS-only match to ever outrank a vector-only one.
|
|
231
|
+
const normalizedFtsRank = frank !== undefined ? (RRF_K + 1) / (RRF_K + frank) : 0;
|
|
232
|
+
fusedScore = baseScore * VECTOR_WEIGHT + normalizedFtsRank * FTS_WEIGHT;
|
|
222
233
|
}
|
|
223
234
|
fused.push({ ...result, score: fusedScore });
|
|
224
235
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-recall.js","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hybrid-recall.js","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"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"}
|
package/dist/src/import.d.ts
CHANGED
|
@@ -32,6 +32,8 @@ export declare const importSnapshotSchema: z.ZodObject<{
|
|
|
32
32
|
superseded_by: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
33
33
|
consolidated: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>>;
|
|
34
34
|
private: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>>;
|
|
35
|
+
usage_count: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
last_used_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
35
37
|
}, z.core.$strip>>;
|
|
36
38
|
semantics: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
37
39
|
id: z.ZodString;
|
|
@@ -62,6 +64,8 @@ export declare const importSnapshotSchema: z.ZodObject<{
|
|
|
62
64
|
challenge_count: z.ZodOptional<z.ZodNumber>;
|
|
63
65
|
interference_count: z.ZodOptional<z.ZodNumber>;
|
|
64
66
|
salience: z.ZodOptional<z.ZodNumber>;
|
|
67
|
+
usage_count: z.ZodOptional<z.ZodNumber>;
|
|
68
|
+
last_used_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
65
69
|
}, z.core.$strip>>>;
|
|
66
70
|
procedures: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
67
71
|
id: z.ZodString;
|
|
@@ -86,6 +90,8 @@ export declare const importSnapshotSchema: z.ZodObject<{
|
|
|
86
90
|
retrieval_count: z.ZodOptional<z.ZodNumber>;
|
|
87
91
|
interference_count: z.ZodOptional<z.ZodNumber>;
|
|
88
92
|
salience: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
usage_count: z.ZodOptional<z.ZodNumber>;
|
|
94
|
+
last_used_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
89
95
|
}, z.core.$strip>>>;
|
|
90
96
|
causalLinks: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
91
97
|
id: z.ZodString;
|
|
@@ -171,6 +177,10 @@ export declare const importSnapshotSchema: z.ZodObject<{
|
|
|
171
177
|
unreviewed: "unreviewed";
|
|
172
178
|
quarantined: "quarantined";
|
|
173
179
|
}>>>;
|
|
180
|
+
action_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
181
|
+
hook_host: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
182
|
+
hook_tool_use_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
183
|
+
receipt_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
174
184
|
metadata: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
175
185
|
created_at: z.ZodString;
|
|
176
186
|
}, z.core.$strip>>>;
|
package/dist/src/import.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/import.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/import.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOpD,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAChD,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD,eAAO,MAAM,8BAA8B,WAAa,CAAC;AAyLzD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkB/B,CAAC;AAgHH,wBAAsB,cAAc,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CAoSf"}
|