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
package/dist/src/recall.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { computeConfidence, DEFAULT_HALF_LIVES, salienceModifier, sourceReliability, } from './confidence.js';
|
|
2
2
|
import { interferenceModifier } from './interference.js';
|
|
3
3
|
import { contextMatchRatio, contextModifier } from './context.js';
|
|
4
|
+
import { groundingForMemories, describeBrokenGrounding, groundingModifier } from './grounding.js';
|
|
4
5
|
import { moodCongruenceModifier, affectSimilarity } from './affect.js';
|
|
5
6
|
import { daysBetween, requireAgent, resolveMemoryScope, safeJsonParse } from './utils.js';
|
|
6
7
|
import { ftsIdsByType, fuseResults } from './hybrid-recall.js';
|
|
@@ -15,8 +16,10 @@ const STOPWORDS = new Set([
|
|
|
15
16
|
'did',
|
|
16
17
|
'do',
|
|
17
18
|
'does',
|
|
19
|
+
'find',
|
|
18
20
|
'for',
|
|
19
21
|
'from',
|
|
22
|
+
'give',
|
|
20
23
|
'had',
|
|
21
24
|
'has',
|
|
22
25
|
'have',
|
|
@@ -25,6 +28,7 @@ const STOPWORDS = new Set([
|
|
|
25
28
|
'in',
|
|
26
29
|
'is',
|
|
27
30
|
'it',
|
|
31
|
+
'lookup',
|
|
28
32
|
'me',
|
|
29
33
|
'my',
|
|
30
34
|
'now',
|
|
@@ -33,8 +37,8 @@ const STOPWORDS = new Set([
|
|
|
33
37
|
'or',
|
|
34
38
|
'our',
|
|
35
39
|
's',
|
|
36
|
-
'sam',
|
|
37
40
|
'she',
|
|
41
|
+
'show',
|
|
38
42
|
'that',
|
|
39
43
|
'the',
|
|
40
44
|
'their',
|
|
@@ -42,6 +46,7 @@ const STOPWORDS = new Set([
|
|
|
42
46
|
'there',
|
|
43
47
|
'they',
|
|
44
48
|
'this',
|
|
49
|
+
'tell',
|
|
45
50
|
'to',
|
|
46
51
|
'was',
|
|
47
52
|
'we',
|
|
@@ -65,6 +70,7 @@ const IDENTIFIER_TERMS = new Set([
|
|
|
65
70
|
'identifier',
|
|
66
71
|
'key',
|
|
67
72
|
'number',
|
|
73
|
+
'passport',
|
|
68
74
|
'password',
|
|
69
75
|
'secret',
|
|
70
76
|
'ssn',
|
|
@@ -137,17 +143,60 @@ function hasIdentifierIntent(query) {
|
|
|
137
143
|
const mentionsIdentifier = /\b(account number|api key|credential|id|identifier|key|number|passport number|password|secret|ssn|token)\b/.test(normalized);
|
|
138
144
|
return asksForValue && mentionsIdentifier;
|
|
139
145
|
}
|
|
140
|
-
function
|
|
141
|
-
const
|
|
142
|
-
if (
|
|
146
|
+
function looksLikeIdentifierValue(raw) {
|
|
147
|
+
const value = raw.replace(/^["']|["']$/g, '').replace(/[.,;]+$/, '');
|
|
148
|
+
if (value.length < 4)
|
|
149
|
+
return false;
|
|
150
|
+
if (/^sk-[a-z0-9_-]{4,}$/i.test(value))
|
|
151
|
+
return true;
|
|
152
|
+
if (/^\d{4,}$/.test(value))
|
|
153
|
+
return true;
|
|
154
|
+
if (/[a-z]/i.test(value) && /\d/.test(value))
|
|
155
|
+
return true;
|
|
156
|
+
return /[_@./-]/.test(value) && /[a-z0-9]/i.test(value);
|
|
157
|
+
}
|
|
158
|
+
function hasIdentifierValueEvidence(content) {
|
|
159
|
+
if (/\bsk-[a-z0-9_-]{4,}\b/i.test(content))
|
|
143
160
|
return true;
|
|
161
|
+
const labeledValue = /\b(?:account(?:\s+(?:id|number))?|api\s+key|credential|id|identifier|passport(?:\s+(?:id|number))?|password|secret|ssn|token)\b\s*(?:(?:is|equals)\s+|[:=]\s*|\s+)(["']?[a-z0-9][a-z0-9_.:@/-]*["']?)/gi;
|
|
162
|
+
for (const match of content.matchAll(labeledValue)) {
|
|
163
|
+
if (looksLikeIdentifierValue(match[1]))
|
|
164
|
+
return true;
|
|
144
165
|
}
|
|
145
|
-
return
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
function identifierKinds(text) {
|
|
169
|
+
const normalized = String(text || '').toLowerCase();
|
|
170
|
+
const kinds = new Set();
|
|
171
|
+
if (/\baccount\b/.test(normalized))
|
|
172
|
+
kinds.add('account');
|
|
173
|
+
if (/\bpassport\b/.test(normalized))
|
|
174
|
+
kinds.add('passport');
|
|
175
|
+
if (/\b(?:ssn|social security)\b/.test(normalized))
|
|
176
|
+
kinds.add('ssn');
|
|
177
|
+
if (/\b(?:api\s+key|credential|key|password|secret|token)\b/.test(normalized)) {
|
|
178
|
+
kinds.add('credential');
|
|
179
|
+
}
|
|
180
|
+
if (/\b(?:id|identifier)\b/.test(normalized))
|
|
181
|
+
kinds.add('id');
|
|
182
|
+
if (kinds.size === 0 && /\bnumber\b/.test(normalized))
|
|
183
|
+
kinds.add('number');
|
|
184
|
+
return kinds;
|
|
185
|
+
}
|
|
186
|
+
function hasIdentifierAnchor(query, content) {
|
|
187
|
+
const queryTokens = significantTokens(query);
|
|
188
|
+
const contentTokens = new Set(significantTokens(content));
|
|
189
|
+
const queryKinds = identifierKinds(query);
|
|
190
|
+
const contentKinds = identifierKinds(content);
|
|
191
|
+
if (![...queryKinds].some(kind => contentKinds.has(kind)))
|
|
192
|
+
return false;
|
|
193
|
+
const contextTokens = queryTokens.filter(token => !IDENTIFIER_TERMS.has(token));
|
|
194
|
+
return contextTokens.length === 0 || contextTokens.every(token => contentTokens.has(token));
|
|
146
195
|
}
|
|
147
196
|
function adjustedScore(query, entry) {
|
|
148
197
|
const coverage = lexicalCoverage(query, entry.content);
|
|
149
198
|
let score = entry.score;
|
|
150
|
-
if (hasIdentifierIntent(query) && !
|
|
199
|
+
if (hasIdentifierIntent(query) && !hasIdentifierValueEvidence(entry.content)) {
|
|
151
200
|
score *= 0.02;
|
|
152
201
|
}
|
|
153
202
|
return { score, coverage };
|
|
@@ -179,21 +228,49 @@ function shouldSuppressDuplicate(existing, candidate) {
|
|
|
179
228
|
return false;
|
|
180
229
|
const existingReliability = reliabilityForRecallSource(existing.source);
|
|
181
230
|
const candidateReliability = reliabilityForRecallSource(candidate.source);
|
|
231
|
+
if (existingReliability === candidateReliability) {
|
|
232
|
+
// The reliability gap below can never fire for two results from the same
|
|
233
|
+
// source class (e.g. two consolidation-derived semantics both at 0.85),
|
|
234
|
+
// so an equal-reliability duplicate pair falls back to the score, with a
|
|
235
|
+
// deterministic id tiebreak so ordering never depends on iteration order.
|
|
236
|
+
// With no reliability signal to lean on, the general 0.5 overlap gate is
|
|
237
|
+
// too loose here — "low salience episode memory" and "high salience
|
|
238
|
+
// episode memory" clear it while describing opposite things, so this
|
|
239
|
+
// branch additionally requires near-identical content before treating
|
|
240
|
+
// the pair as a duplicate at all.
|
|
241
|
+
if (overlap < 0.95)
|
|
242
|
+
return false;
|
|
243
|
+
if (existing.score > candidate.score)
|
|
244
|
+
return true;
|
|
245
|
+
if (existing.score < candidate.score)
|
|
246
|
+
return false;
|
|
247
|
+
return existing.id < candidate.id;
|
|
248
|
+
}
|
|
182
249
|
if (existingReliability < candidateReliability)
|
|
183
250
|
return false;
|
|
184
251
|
if (existingReliability - candidateReliability < 0.2)
|
|
185
252
|
return false;
|
|
186
253
|
return existing.score >= candidate.score * 0.95;
|
|
187
254
|
}
|
|
188
|
-
function applyResultGuards(query, results, limit) {
|
|
255
|
+
function applyResultGuards(query, results, limit, retrieval) {
|
|
189
256
|
const identifierIntent = hasIdentifierIntent(query);
|
|
190
257
|
const rescored = results
|
|
191
258
|
.map(entry => {
|
|
192
259
|
const { score, coverage } = adjustedScore(query, entry);
|
|
193
260
|
return { ...entry, score, lexicalCoverage: coverage };
|
|
194
261
|
})
|
|
195
|
-
.filter(entry => !identifierIntent ||
|
|
196
|
-
|
|
262
|
+
.filter(entry => !identifierIntent ||
|
|
263
|
+
(hasIdentifierValueEvidence(entry.content) &&
|
|
264
|
+
(retrieval === 'keyword'
|
|
265
|
+
? entry.lexicalCoverage === 1
|
|
266
|
+
: hasIdentifierAnchor(query, entry.content))))
|
|
267
|
+
// Tie-break on id, not just score: shouldSuppressDuplicate's own id
|
|
268
|
+
// tiebreak only produces a deterministic winner if the smaller-id member
|
|
269
|
+
// of an exact-score tie is guaranteed to be processed (and accepted)
|
|
270
|
+
// first. Without this, which one wins would depend on whatever order
|
|
271
|
+
// fuseResults happened to emit them in, and a duplicate could survive
|
|
272
|
+
// simply by landing on the "processed first" side of an arbitrary order.
|
|
273
|
+
.sort((a, b) => b.score - a.score || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
197
274
|
const accepted = [];
|
|
198
275
|
for (const candidate of rescored) {
|
|
199
276
|
if (accepted.some(existing => shouldSuppressDuplicate(existing, candidate))) {
|
|
@@ -238,6 +315,8 @@ function computeSemanticConfidence(sem, now, confidenceConfig = {}) {
|
|
|
238
315
|
daysSinceRetrieval,
|
|
239
316
|
weights: confidenceConfig.weights,
|
|
240
317
|
customSourceReliability: confidenceConfig.sourceReliability,
|
|
318
|
+
sourceTypeDiversity: sem.source_type_diversity,
|
|
319
|
+
sourceDiversityWeight: confidenceConfig.sourceDiversityWeight,
|
|
241
320
|
});
|
|
242
321
|
confidence *= interferenceModifier(sem.interference_count || 0, confidenceConfig.interferenceWeight);
|
|
243
322
|
confidence *= salienceModifier(sem.salience);
|
|
@@ -259,6 +338,8 @@ function computeProceduralConfidence(proc, now, confidenceConfig = {}) {
|
|
|
259
338
|
daysSinceRetrieval,
|
|
260
339
|
weights: confidenceConfig.weights,
|
|
261
340
|
customSourceReliability: confidenceConfig.sourceReliability,
|
|
341
|
+
sourceTypeDiversity: proc.source_type_diversity,
|
|
342
|
+
sourceDiversityWeight: confidenceConfig.sourceDiversityWeight,
|
|
262
343
|
});
|
|
263
344
|
confidence *= interferenceModifier(proc.interference_count || 0, confidenceConfig.interferenceWeight);
|
|
264
345
|
confidence *= salienceModifier(proc.salience);
|
|
@@ -604,10 +685,11 @@ export async function* recallStream(db, embeddingProvider, query, options = {})
|
|
|
604
685
|
let ftsLookupSucceeded = false;
|
|
605
686
|
if (retrieval !== 'vector') {
|
|
606
687
|
const candidateK = initialCandidateK(limit, Boolean(hasFilters));
|
|
688
|
+
const ftsQuery = hasIdentifierIntent(query) ? significantTokens(query).join(' ') : query;
|
|
607
689
|
try {
|
|
608
690
|
ftsIds = profile
|
|
609
|
-
? profile.measureSync('recall.fts_lookup', () => ftsIdsByType(db,
|
|
610
|
-
: ftsIdsByType(db,
|
|
691
|
+
? profile.measureSync('recall.fts_lookup', () => ftsIdsByType(db, ftsQuery, searchTypes, candidateK, agentFilter))
|
|
692
|
+
: ftsIdsByType(db, ftsQuery, searchTypes, candidateK, agentFilter);
|
|
611
693
|
ftsLookupSucceeded = true;
|
|
612
694
|
}
|
|
613
695
|
catch (err) {
|
|
@@ -635,8 +717,8 @@ export async function* recallStream(db, embeddingProvider, query, options = {})
|
|
|
635
717
|
}
|
|
636
718
|
}
|
|
637
719
|
return profile
|
|
638
|
-
? profile.measureSync('recall.result_guards', () => applyResultGuards(query, resultsToGuard, limit))
|
|
639
|
-
: applyResultGuards(query, resultsToGuard, limit);
|
|
720
|
+
? profile.measureSync('recall.result_guards', () => applyResultGuards(query, resultsToGuard, limit, retrieval))
|
|
721
|
+
: applyResultGuards(query, resultsToGuard, limit, retrieval);
|
|
640
722
|
};
|
|
641
723
|
let top = fuseAndGuard(vectorResults);
|
|
642
724
|
if (agentFilter && queryBuffer && vectorCounts && top.length < limit) {
|
|
@@ -688,6 +770,49 @@ export async function recall(db, embeddingProvider, query, options = {}) {
|
|
|
688
770
|
results.partialFailure = true;
|
|
689
771
|
results.errors = errors;
|
|
690
772
|
}
|
|
773
|
+
annotateGrounding(db, results);
|
|
691
774
|
return results;
|
|
692
775
|
}
|
|
776
|
+
/**
|
|
777
|
+
* Labels results whose checkable claims have stopped holding, and demotes
|
|
778
|
+
* them. A memory that still asserts a deleted path outranking one that does
|
|
779
|
+
* not is the failure this exists to prevent, so the penalty has to reach
|
|
780
|
+
* score and not just the displayed confidence — otherwise the stale memory
|
|
781
|
+
* keeps its position and only gains a caption nobody acts on.
|
|
782
|
+
*
|
|
783
|
+
* Runs as one batched lookup after collection rather than per candidate
|
|
784
|
+
* during scoring: recall is a hot path and most memories carry no anchors
|
|
785
|
+
* at all, so the common case must cost a single query returning nothing.
|
|
786
|
+
* Failure here is swallowed deliberately — grounding is an annotation, and
|
|
787
|
+
* losing it must never take a recall down with it.
|
|
788
|
+
*/
|
|
789
|
+
function annotateGrounding(db, results) {
|
|
790
|
+
if (results.length === 0)
|
|
791
|
+
return;
|
|
792
|
+
try {
|
|
793
|
+
const grounding = groundingForMemories(db, results.map(entry => entry.id));
|
|
794
|
+
if (grounding.size === 0)
|
|
795
|
+
return;
|
|
796
|
+
let demoted = false;
|
|
797
|
+
for (const entry of results) {
|
|
798
|
+
const state = grounding.get(entry.id);
|
|
799
|
+
if (!state)
|
|
800
|
+
continue;
|
|
801
|
+
entry.grounding = state.state;
|
|
802
|
+
if (state.state !== 'broken')
|
|
803
|
+
continue;
|
|
804
|
+
entry.groundingNote = describeBrokenGrounding(state);
|
|
805
|
+
const modifier = groundingModifier(state.state);
|
|
806
|
+
entry.confidence *= modifier;
|
|
807
|
+
entry.score *= modifier;
|
|
808
|
+
demoted = true;
|
|
809
|
+
}
|
|
810
|
+
if (demoted) {
|
|
811
|
+
results.sort((a, b) => b.score - a.score || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
catch {
|
|
815
|
+
// Annotation only. An unreadable anchors table leaves recall intact.
|
|
816
|
+
}
|
|
817
|
+
}
|
|
693
818
|
//# sourceMappingURL=recall.js.map
|
package/dist/src/recall.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/recall.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/recall.ts"],"names":[],"mappings":"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"}
|
package/dist/src/redact.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Rules are intentionally conservative: false positives are far cheaper than
|
|
8
8
|
* leaking a real credential into long-lived memory.
|
|
9
9
|
*/
|
|
10
|
-
export type RedactionClass = 'aws_access_key' | 'openai_api_key' | 'anthropic_api_key' | 'github_token' | 'stripe_live_key' | 'stripe_test_key' | 'google_api_key' | 'slack_token' | 'generic_bearer' | 'basic_auth' | 'private_key_block' | 'jwt' | 'url_credentials' | 'password_assignment' | 'credit_card_number' | 'cvv' | 'us_ssn' | 'signed_url_signature' | 'session_cookie' | 'high_entropy_secret';
|
|
10
|
+
export type RedactionClass = 'aws_access_key' | 'openai_api_key' | 'anthropic_api_key' | 'github_token' | 'stripe_live_key' | 'stripe_test_key' | 'google_api_key' | 'slack_token' | 'generic_bearer' | 'basic_auth' | 'private_key_block' | 'jwt' | 'url_credentials' | 'password_assignment' | 'credit_card_number' | 'cvv' | 'us_ssn' | 'signed_url_signature' | 'session_cookie' | 'high_entropy_secret' | 'passphrase';
|
|
11
11
|
export interface RedactionHit {
|
|
12
12
|
class: RedactionClass;
|
|
13
13
|
count: number;
|
package/dist/src/redact.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,mBAAmB,GACnB,KAAK,GACL,iBAAiB,GACjB,qBAAqB,GACrB,oBAAoB,GACpB,KAAK,GACL,QAAQ,GACR,sBAAsB,GACtB,gBAAgB,GAChB,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,mBAAmB,GACnB,KAAK,GACL,iBAAiB,GACjB,qBAAqB,GACrB,oBAAoB,GACpB,KAAK,GACL,QAAQ,GACR,sBAAsB,GACtB,gBAAgB,GAChB,qBAAqB,GACrB,YAAY,CAAC;AAQjB,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;CAC7B;AAkXD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CA4BrD;AAkCD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;CAC7B,CAqDA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAGhE;AAOD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,YAAY,EAAO,GAC9B,MAAM,CA8BR"}
|
package/dist/src/redact.js
CHANGED
|
@@ -134,6 +134,17 @@ const RULES = [
|
|
|
134
134
|
return `${prefix}[REDACTED:password_assignment]`;
|
|
135
135
|
},
|
|
136
136
|
},
|
|
137
|
+
{
|
|
138
|
+
// Independent of looksLikeWordIdentifier: catches space-separated BIP39
|
|
139
|
+
// mnemonics (which never form a single token at all) and hyphen-joined
|
|
140
|
+
// word runs long enough that they're implausible as identifiers.
|
|
141
|
+
class: 'passphrase',
|
|
142
|
+
pattern: /\b[a-z]{3,12}(?:[ -][a-z]{3,12}){7,}\b/g,
|
|
143
|
+
replacement: (match) => {
|
|
144
|
+
const words = match.split(/[ -]/);
|
|
145
|
+
return looksLikeOrdinaryProse(words) ? match : '[REDACTED:passphrase]';
|
|
146
|
+
},
|
|
147
|
+
},
|
|
137
148
|
{
|
|
138
149
|
class: 'high_entropy_secret',
|
|
139
150
|
pattern: /(?<![A-Za-z0-9+/=_-])[A-Za-z0-9+/=_-]{32,}(?![A-Za-z0-9+/=_-])/g,
|
|
@@ -179,8 +190,13 @@ function shannonEntropy(value) {
|
|
|
179
190
|
* this shape explicitly.
|
|
180
191
|
*
|
|
181
192
|
* Each segment must be consistently cased (all-lowercase or all-uppercase)
|
|
182
|
-
* the way machine identifiers are.
|
|
183
|
-
*
|
|
193
|
+
* the way machine identifiers are. This also exempts short (fewer than
|
|
194
|
+
* eight words) all-lowercase dash-joined phrases such as
|
|
195
|
+
* "correct-horse-battery-staple" — real Diceware passphrases are not
|
|
196
|
+
* reliably title-cased, but narrowing this exemption further would start
|
|
197
|
+
* misclassifying real identifiers as secrets. Longer lowercase word runs
|
|
198
|
+
* (BIP39-length passphrases and mnemonics) are still caught below by the
|
|
199
|
+
* dedicated 'passphrase' rule, which does not consult this exemption.
|
|
184
200
|
*/
|
|
185
201
|
function looksLikeWordIdentifier(value) {
|
|
186
202
|
const segments = value.split(/[_\-.]+/).filter(Boolean);
|
|
@@ -188,6 +204,146 @@ function looksLikeWordIdentifier(value) {
|
|
|
188
204
|
return false;
|
|
189
205
|
return segments.every(segment => (/^[a-z]+$/.test(segment) || /^[A-Z]+$/.test(segment)) && segment.length <= 20);
|
|
190
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Common English function words. A real Diceware/BIP39 passphrase is drawn
|
|
209
|
+
* from a wordlist chosen for randomness, so a run of eight or more such
|
|
210
|
+
* words essentially never contains one of these; ordinary prose of the same
|
|
211
|
+
* length almost always does. This is what lets the 'passphrase' rule below
|
|
212
|
+
* catch bare word-salad secrets without flagging normal sentences.
|
|
213
|
+
*/
|
|
214
|
+
const PASSPHRASE_STOPWORDS = new Set([
|
|
215
|
+
'a',
|
|
216
|
+
'an',
|
|
217
|
+
'the',
|
|
218
|
+
'and',
|
|
219
|
+
'or',
|
|
220
|
+
'but',
|
|
221
|
+
'is',
|
|
222
|
+
'are',
|
|
223
|
+
'was',
|
|
224
|
+
'were',
|
|
225
|
+
'be',
|
|
226
|
+
'been',
|
|
227
|
+
'being',
|
|
228
|
+
'to',
|
|
229
|
+
'of',
|
|
230
|
+
'in',
|
|
231
|
+
'on',
|
|
232
|
+
'at',
|
|
233
|
+
'for',
|
|
234
|
+
'with',
|
|
235
|
+
'as',
|
|
236
|
+
'by',
|
|
237
|
+
'from',
|
|
238
|
+
'that',
|
|
239
|
+
'this',
|
|
240
|
+
'these',
|
|
241
|
+
'those',
|
|
242
|
+
'it',
|
|
243
|
+
'its',
|
|
244
|
+
'he',
|
|
245
|
+
'she',
|
|
246
|
+
'they',
|
|
247
|
+
'we',
|
|
248
|
+
'you',
|
|
249
|
+
'not',
|
|
250
|
+
'has',
|
|
251
|
+
'have',
|
|
252
|
+
'had',
|
|
253
|
+
'will',
|
|
254
|
+
'would',
|
|
255
|
+
'can',
|
|
256
|
+
'could',
|
|
257
|
+
'should',
|
|
258
|
+
'do',
|
|
259
|
+
'does',
|
|
260
|
+
'did',
|
|
261
|
+
'if',
|
|
262
|
+
'then',
|
|
263
|
+
'than',
|
|
264
|
+
'so',
|
|
265
|
+
'no',
|
|
266
|
+
'yes',
|
|
267
|
+
'my',
|
|
268
|
+
'your',
|
|
269
|
+
'his',
|
|
270
|
+
'her',
|
|
271
|
+
'our',
|
|
272
|
+
'their',
|
|
273
|
+
'what',
|
|
274
|
+
'which',
|
|
275
|
+
'who',
|
|
276
|
+
'when',
|
|
277
|
+
'where',
|
|
278
|
+
'why',
|
|
279
|
+
'how',
|
|
280
|
+
'all',
|
|
281
|
+
'any',
|
|
282
|
+
'some',
|
|
283
|
+
'more',
|
|
284
|
+
'most',
|
|
285
|
+
'other',
|
|
286
|
+
'such',
|
|
287
|
+
'only',
|
|
288
|
+
'own',
|
|
289
|
+
'same',
|
|
290
|
+
'too',
|
|
291
|
+
'very',
|
|
292
|
+
'just',
|
|
293
|
+
'about',
|
|
294
|
+
'into',
|
|
295
|
+
'over',
|
|
296
|
+
'after',
|
|
297
|
+
'before',
|
|
298
|
+
'between',
|
|
299
|
+
'during',
|
|
300
|
+
'without',
|
|
301
|
+
'under',
|
|
302
|
+
'again',
|
|
303
|
+
'once',
|
|
304
|
+
'here',
|
|
305
|
+
'there',
|
|
306
|
+
'near',
|
|
307
|
+
]);
|
|
308
|
+
function looksLikeOrdinaryProse(words) {
|
|
309
|
+
return words.some(word => PASSPHRASE_STOPWORDS.has(word));
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Filesystem paths share the secret alphabet (letters, digits, /, -, _),
|
|
313
|
+
* and a mixed-case POSIX path past 32 chars can cross the entropy gate —
|
|
314
|
+
* which would mangle cwd/file metadata at encode time and silently break
|
|
315
|
+
* project scoping. Two or more separator-delimited word-like segments is a
|
|
316
|
+
* path shape; base64 material essentially never splits into short clean
|
|
317
|
+
* segments and, unlike paths, routinely contains '+' or '='.
|
|
318
|
+
*
|
|
319
|
+
* Path shape raises the entropy bar rather than granting an exemption. A
|
|
320
|
+
* blanket exemption was measurably unsafe: an AWS secret access key draws
|
|
321
|
+
* from an alphabet that includes '/', so about one in seventeen lands in
|
|
322
|
+
* this segment shape by chance alone — not "deliberately formatted to look
|
|
323
|
+
* like a path", just unlucky — and every one of those stayed plaintext.
|
|
324
|
+
* Directory and file names are English-ish and repeat characters heavily,
|
|
325
|
+
* so real paths cluster well below the raised bar while random credential
|
|
326
|
+
* material sits above it. See PATH_SHAPE_ENTROPY_MIN.
|
|
327
|
+
*/
|
|
328
|
+
function looksLikePathShape(value) {
|
|
329
|
+
if (/[+=]/.test(value))
|
|
330
|
+
return false;
|
|
331
|
+
const segments = value.split('/');
|
|
332
|
+
if (segments.length < 3)
|
|
333
|
+
return false;
|
|
334
|
+
return segments.every(segment => segment.length <= 28 && /^[A-Za-z0-9._~-]*$/.test(segment));
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Entropy floor applied to values that carry a filesystem-path shape.
|
|
338
|
+
* Calibrated against a corpus of real absolute, relative, temp-dir and
|
|
339
|
+
* toolchain paths, whose highest observed token entropy was 4.33, and
|
|
340
|
+
* against randomly generated 40-character AWS secret access keys, whose
|
|
341
|
+
* path-shaped subset bottomed out at the same figure but sat at 4.75 by
|
|
342
|
+
* the median. 4.4 clears every real path in that corpus while leaving
|
|
343
|
+
* about one in four thousand keys below the bar.
|
|
344
|
+
*/
|
|
345
|
+
const PATH_SHAPE_ENTROPY_MIN = 4.4;
|
|
346
|
+
const GENERIC_ENTROPY_MIN = 4.0;
|
|
191
347
|
function looksLikeHighEntropySecret(value) {
|
|
192
348
|
if (value.length < 32)
|
|
193
349
|
return false;
|
|
@@ -208,7 +364,7 @@ function looksLikeHighEntropySecret(value) {
|
|
|
208
364
|
// common public-hash sizes (>=80 hex chars) AND have hash-grade entropy.
|
|
209
365
|
return value.length >= 80 && entropy >= 3.3;
|
|
210
366
|
}
|
|
211
|
-
return entropy >=
|
|
367
|
+
return entropy >= (looksLikePathShape(value) ? PATH_SHAPE_ENTROPY_MIN : GENERIC_ENTROPY_MIN);
|
|
212
368
|
}
|
|
213
369
|
export function redact(input) {
|
|
214
370
|
if (!input) {
|
|
@@ -235,10 +391,34 @@ export function redact(input) {
|
|
|
235
391
|
state: redactions.length === 0 ? 'clean' : 'redacted',
|
|
236
392
|
};
|
|
237
393
|
}
|
|
238
|
-
|
|
394
|
+
/**
|
|
395
|
+
* Matches the sensitive word as a whole underscore/dash-delimited component
|
|
396
|
+
* anywhere in the key, not only as its suffix. Canonical credential fields
|
|
397
|
+
* are compounds — aws_secret_access_key, stripe_secret_key,
|
|
398
|
+
* refresh_token_expires_at — and a suffix-anchored pattern misses every one
|
|
399
|
+
* of them, which also stops redactJson's sensitive-ancestor fallback from
|
|
400
|
+
* covering their values. Plurals stay unmatched ('tokens', 'credentials'
|
|
401
|
+
* without the trailing delimiter are ordinary count/collection fields).
|
|
402
|
+
*/
|
|
403
|
+
const SENSITIVE_KEY_PATTERN = /(^|_|-)(password|passwd|pwd|secret|passphrase|credential|api[_-]?key|auth[_-]?token|bearer[_-]?token|access[_-]?token|refresh[_-]?token|client[_-]?secret|private[_-]?key|session[_-]?token|jwt|aws[_-]?secret|token)([_-]|$)/i;
|
|
239
404
|
function isSensitiveKey(key) {
|
|
240
405
|
return SENSITIVE_KEY_PATTERN.test(key);
|
|
241
406
|
}
|
|
407
|
+
/**
|
|
408
|
+
* Assigns an own property without ever going through [[Set]]. A literal key
|
|
409
|
+
* named "__proto__" on a normal object triggers Object.prototype's accessor
|
|
410
|
+
* via bracket/dot assignment, silently swapping the object's prototype
|
|
411
|
+
* instead of storing the value — this is how redactJson previously lost or
|
|
412
|
+
* corrupted a payload nested under a "__proto__" key.
|
|
413
|
+
*/
|
|
414
|
+
function setOwnProperty(target, key, value) {
|
|
415
|
+
Object.defineProperty(target, key, {
|
|
416
|
+
value,
|
|
417
|
+
writable: true,
|
|
418
|
+
enumerable: true,
|
|
419
|
+
configurable: true,
|
|
420
|
+
});
|
|
421
|
+
}
|
|
242
422
|
export function redactJson(value) {
|
|
243
423
|
const counts = new Map();
|
|
244
424
|
function addHits(hits) {
|
|
@@ -275,7 +455,7 @@ export function redactJson(value) {
|
|
|
275
455
|
addHits(keyRedaction.redactions);
|
|
276
456
|
const redactedKey = keyRedaction.text;
|
|
277
457
|
const keyIsSensitive = isSensitiveKey(key) || keyRedaction.redactions.length > 0;
|
|
278
|
-
out
|
|
458
|
+
setOwnProperty(out, redactedKey, walk(val, key, sensitiveAncestor || keyIsSensitive));
|
|
279
459
|
}
|
|
280
460
|
return out;
|
|
281
461
|
}
|