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.
Files changed (285) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/README.md +39 -12
  3. package/dist/mcp-server/codex-hooks-probe.d.ts +22 -0
  4. package/dist/mcp-server/codex-hooks-probe.d.ts.map +1 -0
  5. package/dist/mcp-server/codex-hooks-probe.js +160 -0
  6. package/dist/mcp-server/codex-hooks-probe.js.map +1 -0
  7. package/dist/mcp-server/config.d.ts +26 -2
  8. package/dist/mcp-server/config.d.ts.map +1 -1
  9. package/dist/mcp-server/config.js +52 -20
  10. package/dist/mcp-server/config.js.map +1 -1
  11. package/dist/mcp-server/hooks.d.ts +28 -0
  12. package/dist/mcp-server/hooks.d.ts.map +1 -1
  13. package/dist/mcp-server/hooks.js +91 -2
  14. package/dist/mcp-server/hooks.js.map +1 -1
  15. package/dist/mcp-server/index.d.ts +242 -2
  16. package/dist/mcp-server/index.d.ts.map +1 -1
  17. package/dist/mcp-server/index.js +806 -240
  18. package/dist/mcp-server/index.js.map +1 -1
  19. package/dist/mcp-server/tool-schemas.d.ts +32 -2
  20. package/dist/mcp-server/tool-schemas.d.ts.map +1 -1
  21. package/dist/mcp-server/tool-schemas.js +55 -0
  22. package/dist/mcp-server/tool-schemas.js.map +1 -1
  23. package/dist/src/audrey.d.ts +14 -2
  24. package/dist/src/audrey.d.ts.map +1 -1
  25. package/dist/src/audrey.js +152 -28
  26. package/dist/src/audrey.js.map +1 -1
  27. package/dist/src/autopilot.d.ts +22 -0
  28. package/dist/src/autopilot.d.ts.map +1 -1
  29. package/dist/src/autopilot.js +271 -50
  30. package/dist/src/autopilot.js.map +1 -1
  31. package/dist/src/capsule.d.ts +23 -0
  32. package/dist/src/capsule.d.ts.map +1 -1
  33. package/dist/src/capsule.js +56 -11
  34. package/dist/src/capsule.js.map +1 -1
  35. package/dist/src/confidence.d.ts +9 -1
  36. package/dist/src/confidence.d.ts.map +1 -1
  37. package/dist/src/confidence.js +16 -2
  38. package/dist/src/confidence.js.map +1 -1
  39. package/dist/src/consolidate.d.ts +4 -0
  40. package/dist/src/consolidate.d.ts.map +1 -1
  41. package/dist/src/consolidate.js +206 -34
  42. package/dist/src/consolidate.js.map +1 -1
  43. package/dist/src/controller.d.ts +17 -1
  44. package/dist/src/controller.d.ts.map +1 -1
  45. package/dist/src/controller.js +244 -128
  46. package/dist/src/controller.js.map +1 -1
  47. package/dist/src/db.d.ts.map +1 -1
  48. package/dist/src/db.js +233 -56
  49. package/dist/src/db.js.map +1 -1
  50. package/dist/src/encode.d.ts +2 -1
  51. package/dist/src/encode.d.ts.map +1 -1
  52. package/dist/src/encode.js +41 -4
  53. package/dist/src/encode.js.map +1 -1
  54. package/dist/src/events.d.ts +48 -1
  55. package/dist/src/events.d.ts.map +1 -1
  56. package/dist/src/events.js +160 -62
  57. package/dist/src/events.js.map +1 -1
  58. package/dist/src/export.d.ts.map +1 -1
  59. package/dist/src/export.js +4 -4
  60. package/dist/src/export.js.map +1 -1
  61. package/dist/src/grounding.d.ts +111 -0
  62. package/dist/src/grounding.d.ts.map +1 -0
  63. package/dist/src/grounding.js +259 -0
  64. package/dist/src/grounding.js.map +1 -0
  65. package/dist/src/hybrid-recall.d.ts +16 -7
  66. package/dist/src/hybrid-recall.d.ts.map +1 -1
  67. package/dist/src/hybrid-recall.js +22 -11
  68. package/dist/src/hybrid-recall.js.map +1 -1
  69. package/dist/src/import.d.ts +10 -0
  70. package/dist/src/import.d.ts.map +1 -1
  71. package/dist/src/import.js +122 -22
  72. package/dist/src/import.js.map +1 -1
  73. package/dist/src/llm.d.ts.map +1 -1
  74. package/dist/src/llm.js +16 -0
  75. package/dist/src/llm.js.map +1 -1
  76. package/dist/src/preflight.d.ts.map +1 -1
  77. package/dist/src/preflight.js +89 -47
  78. package/dist/src/preflight.js.map +1 -1
  79. package/dist/src/project.d.ts +4 -1
  80. package/dist/src/project.d.ts.map +1 -1
  81. package/dist/src/project.js +65 -5
  82. package/dist/src/project.js.map +1 -1
  83. package/dist/src/recall.d.ts.map +1 -1
  84. package/dist/src/recall.js +138 -13
  85. package/dist/src/recall.js.map +1 -1
  86. package/dist/src/redact.d.ts +1 -1
  87. package/dist/src/redact.d.ts.map +1 -1
  88. package/dist/src/redact.js +185 -5
  89. package/dist/src/redact.js.map +1 -1
  90. package/dist/src/routes.d.ts.map +1 -1
  91. package/dist/src/routes.js +91 -18
  92. package/dist/src/routes.js.map +1 -1
  93. package/dist/src/trust.d.ts +35 -0
  94. package/dist/src/trust.d.ts.map +1 -0
  95. package/dist/src/trust.js +77 -0
  96. package/dist/src/trust.js.map +1 -0
  97. package/dist/src/types.d.ts +24 -0
  98. package/dist/src/types.d.ts.map +1 -1
  99. package/package.json +4 -38
  100. package/benchmarks/adapter-kit.mjs +0 -20
  101. package/benchmarks/adapter-self-test.mjs +0 -170
  102. package/benchmarks/adapters/example-allow.mjs +0 -31
  103. package/benchmarks/adapters/mem0-platform.mjs +0 -274
  104. package/benchmarks/adapters/registry.json +0 -51
  105. package/benchmarks/adapters/zep-cloud.mjs +0 -304
  106. package/benchmarks/baselines.js +0 -174
  107. package/benchmarks/build-leaderboard.mjs +0 -183
  108. package/benchmarks/cases.js +0 -549
  109. package/benchmarks/create-conformance-card.mjs +0 -148
  110. package/benchmarks/create-submission-bundle.mjs +0 -190
  111. package/benchmarks/dry-run-external-adapters.mjs +0 -177
  112. package/benchmarks/guardbench.js +0 -1265
  113. package/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +0 -50
  114. package/benchmarks/output/external/guardbench-external-dry-run.json +0 -69
  115. package/benchmarks/output/external/guardbench-external-evidence.json +0 -56
  116. package/benchmarks/output/guardbench-conformance-card.json +0 -63
  117. package/benchmarks/output/guardbench-manifest.json +0 -414
  118. package/benchmarks/output/guardbench-raw.json +0 -1279
  119. package/benchmarks/output/guardbench-summary.json +0 -2123
  120. package/benchmarks/output/leaderboard/guardbench-leaderboard.json +0 -93
  121. package/benchmarks/output/leaderboard/guardbench-leaderboard.md +0 -7
  122. package/benchmarks/output/submission-bundle/guardbench-conformance-card.json +0 -63
  123. package/benchmarks/output/submission-bundle/guardbench-manifest.json +0 -414
  124. package/benchmarks/output/submission-bundle/guardbench-raw.json +0 -1279
  125. package/benchmarks/output/submission-bundle/guardbench-summary.json +0 -2123
  126. package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-registry.schema.json +0 -69
  127. package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-self-test.schema.json +0 -156
  128. package/benchmarks/output/submission-bundle/schemas/guardbench-conformance-card.schema.json +0 -184
  129. package/benchmarks/output/submission-bundle/schemas/guardbench-external-dry-run.schema.json +0 -74
  130. package/benchmarks/output/submission-bundle/schemas/guardbench-external-evidence.schema.json +0 -108
  131. package/benchmarks/output/submission-bundle/schemas/guardbench-external-run.schema.json +0 -160
  132. package/benchmarks/output/submission-bundle/schemas/guardbench-leaderboard.schema.json +0 -179
  133. package/benchmarks/output/submission-bundle/schemas/guardbench-manifest.schema.json +0 -213
  134. package/benchmarks/output/submission-bundle/schemas/guardbench-publication-verification.schema.json +0 -47
  135. package/benchmarks/output/submission-bundle/schemas/guardbench-raw.schema.json +0 -184
  136. package/benchmarks/output/submission-bundle/schemas/guardbench-submission-manifest.schema.json +0 -151
  137. package/benchmarks/output/submission-bundle/schemas/guardbench-summary.schema.json +0 -249
  138. package/benchmarks/output/submission-bundle/submission-manifest.json +0 -131
  139. package/benchmarks/output/submission-bundle/validation-report.json +0 -31
  140. package/benchmarks/output/summary.json +0 -2354
  141. package/benchmarks/perf-snapshot.js +0 -307
  142. package/benchmarks/perf.bench.js +0 -169
  143. package/benchmarks/public-paths.mjs +0 -97
  144. package/benchmarks/reference-results.js +0 -75
  145. package/benchmarks/report.js +0 -280
  146. package/benchmarks/run-external-guardbench.mjs +0 -303
  147. package/benchmarks/run.js +0 -735
  148. package/benchmarks/schemas/guardbench-adapter-registry.schema.json +0 -69
  149. package/benchmarks/schemas/guardbench-adapter-self-test.schema.json +0 -156
  150. package/benchmarks/schemas/guardbench-conformance-card.schema.json +0 -184
  151. package/benchmarks/schemas/guardbench-external-dry-run.schema.json +0 -74
  152. package/benchmarks/schemas/guardbench-external-evidence.schema.json +0 -108
  153. package/benchmarks/schemas/guardbench-external-run.schema.json +0 -160
  154. package/benchmarks/schemas/guardbench-leaderboard.schema.json +0 -179
  155. package/benchmarks/schemas/guardbench-manifest.schema.json +0 -213
  156. package/benchmarks/schemas/guardbench-publication-verification.schema.json +0 -47
  157. package/benchmarks/schemas/guardbench-raw.schema.json +0 -184
  158. package/benchmarks/schemas/guardbench-submission-manifest.schema.json +0 -151
  159. package/benchmarks/schemas/guardbench-summary.schema.json +0 -249
  160. package/benchmarks/snapshots/perf-0.22.2.json +0 -123
  161. package/benchmarks/snapshots/perf-0.23.0.json +0 -123
  162. package/benchmarks/validate-adapter-module.mjs +0 -107
  163. package/benchmarks/validate-adapter-registry.mjs +0 -145
  164. package/benchmarks/validate-adapter-self-test.mjs +0 -96
  165. package/benchmarks/validate-guardbench-artifacts.mjs +0 -400
  166. package/benchmarks/verify-external-evidence.mjs +0 -351
  167. package/benchmarks/verify-publication-artifacts.mjs +0 -309
  168. package/benchmarks/verify-submission-bundle.mjs +0 -172
  169. package/docs/AUDREY_PAPER_OUTLINE.md +0 -178
  170. package/docs/MEMORY_BENCHMARKING.md +0 -59
  171. package/docs/PRODUCTION_BACKLOG.md +0 -321
  172. package/docs/assets/audrey-feature-grid.jpg +0 -0
  173. package/docs/assets/audrey-logo.svg +0 -45
  174. package/docs/assets/audrey-wordmark.png +0 -0
  175. package/docs/paper/00-master.md +0 -48
  176. package/docs/paper/01-introduction.md +0 -27
  177. package/docs/paper/02-related-work.md +0 -47
  178. package/docs/paper/03-problem-definition.md +0 -108
  179. package/docs/paper/04-design.md +0 -164
  180. package/docs/paper/05-guardbench-spec.md +0 -412
  181. package/docs/paper/06-implementation.md +0 -115
  182. package/docs/paper/07-evaluation.md +0 -168
  183. package/docs/paper/08-discussion-limitations.md +0 -61
  184. package/docs/paper/09-conclusion.md +0 -11
  185. package/docs/paper/SUBMISSION_README.md +0 -162
  186. package/docs/paper/appendix-a-demo-transcript.md +0 -114
  187. package/docs/paper/arxiv-compile-report.schema.json +0 -116
  188. package/docs/paper/arxiv-source.schema.json +0 -61
  189. package/docs/paper/audrey-paper-v1.md +0 -1108
  190. package/docs/paper/browser-launch-plan.json +0 -209
  191. package/docs/paper/browser-launch-plan.schema.json +0 -100
  192. package/docs/paper/browser-launch-results.json +0 -86
  193. package/docs/paper/browser-launch-results.schema.json +0 -66
  194. package/docs/paper/claim-register.json +0 -138
  195. package/docs/paper/claim-register.schema.json +0 -81
  196. package/docs/paper/evidence-ledger.md +0 -103
  197. package/docs/paper/output/arxiv/README-arxiv.txt +0 -8
  198. package/docs/paper/output/arxiv/arxiv-manifest.json +0 -41
  199. package/docs/paper/output/arxiv/main.tex +0 -951
  200. package/docs/paper/output/arxiv/references.bib +0 -222
  201. package/docs/paper/output/arxiv-compile-report.json +0 -24
  202. package/docs/paper/output/submission-bundle/LICENSE +0 -21
  203. package/docs/paper/output/submission-bundle/README.md +0 -440
  204. package/docs/paper/output/submission-bundle/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +0 -50
  205. package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-dry-run.json +0 -69
  206. package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-evidence.json +0 -56
  207. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-conformance-card.json +0 -63
  208. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-manifest.json +0 -414
  209. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-raw.json +0 -1279
  210. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-summary.json +0 -2123
  211. package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.json +0 -93
  212. package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.md +0 -7
  213. package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/submission-manifest.json +0 -131
  214. package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/validation-report.json +0 -31
  215. package/docs/paper/output/submission-bundle/benchmarks/output/summary.json +0 -2354
  216. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-registry.schema.json +0 -69
  217. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-self-test.schema.json +0 -156
  218. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-conformance-card.schema.json +0 -184
  219. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-dry-run.schema.json +0 -74
  220. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-evidence.schema.json +0 -108
  221. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-run.schema.json +0 -160
  222. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-leaderboard.schema.json +0 -179
  223. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-manifest.schema.json +0 -213
  224. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-publication-verification.schema.json +0 -47
  225. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-raw.schema.json +0 -184
  226. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-submission-manifest.schema.json +0 -151
  227. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-summary.schema.json +0 -249
  228. package/docs/paper/output/submission-bundle/docs/AUDREY_PAPER_OUTLINE.md +0 -178
  229. package/docs/paper/output/submission-bundle/docs/paper/00-master.md +0 -48
  230. package/docs/paper/output/submission-bundle/docs/paper/01-introduction.md +0 -27
  231. package/docs/paper/output/submission-bundle/docs/paper/02-related-work.md +0 -47
  232. package/docs/paper/output/submission-bundle/docs/paper/03-problem-definition.md +0 -108
  233. package/docs/paper/output/submission-bundle/docs/paper/04-design.md +0 -164
  234. package/docs/paper/output/submission-bundle/docs/paper/05-guardbench-spec.md +0 -412
  235. package/docs/paper/output/submission-bundle/docs/paper/06-implementation.md +0 -115
  236. package/docs/paper/output/submission-bundle/docs/paper/07-evaluation.md +0 -168
  237. package/docs/paper/output/submission-bundle/docs/paper/08-discussion-limitations.md +0 -61
  238. package/docs/paper/output/submission-bundle/docs/paper/09-conclusion.md +0 -11
  239. package/docs/paper/output/submission-bundle/docs/paper/SUBMISSION_README.md +0 -162
  240. package/docs/paper/output/submission-bundle/docs/paper/appendix-a-demo-transcript.md +0 -114
  241. package/docs/paper/output/submission-bundle/docs/paper/arxiv-compile-report.schema.json +0 -116
  242. package/docs/paper/output/submission-bundle/docs/paper/arxiv-source.schema.json +0 -61
  243. package/docs/paper/output/submission-bundle/docs/paper/audrey-paper-v1.md +0 -1108
  244. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.json +0 -209
  245. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.schema.json +0 -100
  246. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.json +0 -86
  247. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.schema.json +0 -66
  248. package/docs/paper/output/submission-bundle/docs/paper/claim-register.json +0 -138
  249. package/docs/paper/output/submission-bundle/docs/paper/claim-register.schema.json +0 -81
  250. package/docs/paper/output/submission-bundle/docs/paper/evidence-ledger.md +0 -103
  251. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/README-arxiv.txt +0 -8
  252. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/arxiv-manifest.json +0 -41
  253. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/main.tex +0 -951
  254. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/references.bib +0 -222
  255. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv-compile-report.json +0 -24
  256. package/docs/paper/output/submission-bundle/docs/paper/paper-submission-bundle.schema.json +0 -70
  257. package/docs/paper/output/submission-bundle/docs/paper/publication-pack.json +0 -81
  258. package/docs/paper/output/submission-bundle/docs/paper/publication-pack.schema.json +0 -60
  259. package/docs/paper/output/submission-bundle/docs/paper/references.bib +0 -222
  260. package/docs/paper/output/submission-bundle/package.json +0 -235
  261. package/docs/paper/output/submission-bundle/paper-submission-manifest.json +0 -379
  262. package/docs/paper/paper-submission-bundle.schema.json +0 -70
  263. package/docs/paper/publication-pack.json +0 -81
  264. package/docs/paper/publication-pack.schema.json +0 -60
  265. package/docs/paper/references.bib +0 -222
  266. package/scripts/audit-release-completion.mjs +0 -440
  267. package/scripts/create-arxiv-source.mjs +0 -368
  268. package/scripts/create-paper-submission-bundle.mjs +0 -214
  269. package/scripts/finalize-release.mjs +0 -601
  270. package/scripts/prepare-release-cut.mjs +0 -277
  271. package/scripts/publish-release-bundle.mjs +0 -252
  272. package/scripts/publish-release-github-api.mjs +0 -494
  273. package/scripts/run-vitest.mjs +0 -34
  274. package/scripts/smoke-cli.js +0 -92
  275. package/scripts/sync-paper-artifacts.mjs +0 -112
  276. package/scripts/verify-arxiv-compile.mjs +0 -476
  277. package/scripts/verify-arxiv-source.mjs +0 -224
  278. package/scripts/verify-browser-launch-plan.mjs +0 -254
  279. package/scripts/verify-browser-launch-results.mjs +0 -303
  280. package/scripts/verify-paper-artifacts.mjs +0 -798
  281. package/scripts/verify-paper-claims.mjs +0 -254
  282. package/scripts/verify-paper-submission-bundle.mjs +0 -218
  283. package/scripts/verify-publication-pack.mjs +0 -210
  284. package/scripts/verify-python-package.py +0 -201
  285. package/scripts/verify-release-readiness.mjs +0 -920
@@ -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 hasIdentifierEvidence(content) {
141
- const tokens = significantTokens(content);
142
- if (tokens.some(token => IDENTIFIER_TERMS.has(token))) {
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 /(?:\b\d{4,}\b|sk-[a-z0-9_-]+)/i.test(content);
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) && !hasIdentifierEvidence(entry.content)) {
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 || entry.score > 0.05)
196
- .sort((a, b) => b.score - a.score);
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, query, searchTypes, candidateK, agentFilter))
610
- : ftsIdsByType(db, query, searchTypes, candidateK, agentFilter);
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
@@ -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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"}
@@ -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;
@@ -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;AAQ1B,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;AAoND,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CA4BrD;AASD,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"}
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"}
@@ -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. Memorable passphrases such as
183
- * "Falcon-River-Cobalt-Meadow" use title-cased words and stay redactable.
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 >= 4.0;
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
- const SENSITIVE_KEY_PATTERN = /(^|_|-)(password|passwd|pwd|secret|api[_-]?key|auth[_-]?token|bearer[_-]?token|access[_-]?token|refresh[_-]?token|client[_-]?secret|private[_-]?key|session[_-]?token|jwt|aws[_-]?secret|token)$/i;
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[redactedKey] = walk(val, key, sensitiveAncestor || keyIsSensitive);
458
+ setOwnProperty(out, redactedKey, walk(val, key, sensitiveAncestor || keyIsSensitive));
279
459
  }
280
460
  return out;
281
461
  }