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,440 +0,0 @@
1
- <div align="center">
2
- <img src="docs/assets/audrey-wordmark.png" alt="Audrey" width="720">
3
-
4
- <p><strong>Memory that shows up before your coding agent makes the same mistake twice.</strong></p>
5
-
6
- <p>
7
- Audrey gives Codex and Claude Code one local, evidence-backed memory loop:
8
- remember what mattered, recall it automatically, check before acting, and learn from what happened next.
9
- </p>
10
-
11
- <p>
12
- <a href="https://github.com/Evilander/Audrey/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/Evilander/Audrey/actions/workflows/ci.yml/badge.svg?branch=master"></a>
13
- <a href="https://www.npmjs.com/package/audrey"><img alt="npm version" src="https://img.shields.io/npm/v/audrey.svg"></a>
14
- <a href="LICENSE"><img alt="MIT license" src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
15
- </p>
16
- </div>
17
-
18
- ## Your agent should remember the work, not just the chat
19
-
20
- You fix the deploy command on Monday. On Thursday, a fresh session tries the broken version again.
21
-
22
- You explain that this repository never commits generated files. The next agent helpfully commits them.
23
-
24
- You discover a subtle migration rule, write it down somewhere, and still have to remember to paste it into every new conversation.
25
-
26
- That is the gap Audrey closes.
27
-
28
- Audrey sits beside the agent and participates in the work automatically. At the start of a session it brings back a small, relevant memory packet. When you submit a prompt, it recalls project facts, preferences, procedures, and recent risks. Before a side-effectful tool runs, Audrey checks the proposed action against prior evidence. Afterward, it links the outcome back to the exact check that preceded it.
29
-
30
- The model does not have to remember that a memory tool exists. That is the point.
31
-
32
- ## Meet Audrey Autopilot
33
-
34
- Install Audrey once, review the hooks once, and then use Codex or Claude Code normally.
35
-
36
- ```bash
37
- npm install -g audrey --allow-scripts=better-sqlite3,onnxruntime-node,sharp,protobufjs
38
- audrey install --host auto
39
- ```
40
-
41
- The explicit install-script list is for npm 12's safer dependency policy. It permits only the four packages Audrey needs for SQLite, local inference, and their generated runtime files. With npm 11 or earlier, the shorter `npm install -g audrey` is equivalent.
42
-
43
- `auto` configures whichever supported CLIs are installed. You can choose one explicitly:
44
-
45
- ```bash
46
- audrey install --host codex
47
- audrey install --host claude-code
48
- ```
49
-
50
- Restart the host after installation. Codex asks you to trust non-managed hooks once through `/hooks`; Claude Code may also ask you to approve project or plugin components. Audrey is automatic after that explicit install-and-trust step—never secretly installed.
51
-
52
- Autopilot then closes the loop:
53
-
54
- | Moment | What Audrey does |
55
- |---|---|
56
- | Session starts | Injects a compact, agent-scoped memory briefing |
57
- | You send a prompt | Recalls relevant evidence; explicitly durable phrases such as “remember that…” or “I prefer…” can become memories |
58
- | Bash/edit/write is proposed | Checks exact prior failures, trusted rules, procedures, contradictions, and memory health |
59
- | The tool finishes | Correlates `tool_use_id` to the Guard receipt and records the redacted outcome |
60
- | A tool failure is reported | Forms a durable, sanitized failure memory for the next attempt |
61
- | The turn stops or context compacts | Runs lightweight, due-only consolidation without holding the conversation open |
62
-
63
- Infrastructure failures are fail-open by default: a broken memory service must not strand a developer. Teams that need enforcement can set `AUDREY_HOOK_FAIL_CLOSED=1`.
64
-
65
- ## A small story about a failed deploy
66
-
67
- The first attempt fails:
68
-
69
- ```text
70
- $ npm run deploy
71
- Error: deployment target is missing
72
- ```
73
-
74
- Audrey keeps a redacted trace and the exact action fingerprint. If another session proposes the same action before the problem is fixed, Guard returns a denial with evidence. Change the command or fix the target and Audrey lets the work continue. Once that exact action succeeds, the old failure no longer blocks it.
75
-
76
- This is more useful than “the vector search found a vaguely similar error.” Audrey creates a receipt before the action, records what happened after it, and preserves the lineage between the two.
77
-
78
- Try the complete loop without an API key or network call:
79
-
80
- ```bash
81
- audrey demo --scenario repeated-failure
82
- ```
83
-
84
- ## What Audrey remembers
85
-
86
- Audrey treats memory as more than a pile of text chunks.
87
-
88
- - Episodes are things that happened: a user decision, a tool result, a project fact, a preference.
89
- - Semantic memories are principles supported by accumulated evidence.
90
- - Procedural memories are ways of acting: how to retry, verify, avoid, or recover.
91
- - Contradictions stay visible instead of being silently overwritten.
92
- - Confidence changes with source quality, evidence, age, retrieval, interference, context, and feedback.
93
- - Low-value memories decay; repeated evidence can consolidate into longer-lived knowledge.
94
-
95
- Every context packet includes memory IDs, confidence, provenance where available, and a reason for inclusion. Uncertain or disputed memories are labeled as such. Retrieved content is wrapped with a simple rule: memory is evidence, not authority; current system and user instructions always win.
96
-
97
- ## What Audrey deliberately does not do
98
-
99
- Audrey does not upload your memory to a hosted service by default. It does not treat every sentence as permanent truth. It does not promote instructions from arbitrary tool output into trusted policy. It does not claim that a small local benchmark proves state-of-the-art memory quality.
100
-
101
- Raw prompt events and tool bodies are not retained by default. Audrey stores hashes, bounded summaries, fingerprints, and redaction metadata. Explicit user-memory language is persisted intentionally; tool failure memories are sanitized first. Admin export/import/forget surfaces are disabled unless `AUDREY_ENABLE_ADMIN_TOOLS=1`.
102
-
103
- At-rest encryption, identity-bound tenant authorization, rate limiting, and regulated retention remain deployment responsibilities today. They are not hidden behind a “production ready” badge.
104
-
105
- ## Why a team might actually want this
106
-
107
- ### Fewer repeated mistakes
108
-
109
- Guard checks memory at the point where it can change an action, not after the damage is done. Exact failure fingerprints avoid the noisy “one Bash command failed, so all Bash commands are suspicious” behavior.
110
-
111
- ### Continuity across agent sessions
112
-
113
- Audrey is not tied to one model vendor. Codex and Claude Code use the same memory runtime and the same evidence contract. MCP, REST, JavaScript, and Python clients make the core usable in custom agents too.
114
-
115
- ### Evidence a human can inspect
116
-
117
- Allow, warn, and block decisions carry receipts and evidence IDs. Outcome records connect back to those receipts. Teams can ask not only “what did the agent remember?” but “which memory changed this action, and was that useful?”
118
-
119
- ### Local control
120
-
121
- The default store is SQLite, FTS5, and `sqlite-vec`. Local embeddings are the default. Cloud embedding or LLM providers require explicit configuration.
122
-
123
- ### A safer shared store
124
-
125
- Agent-scoped recall now continues through validation, contradiction detection, interference, affect, failure lookup, capsules, greetings, Guard, and REST request routing. Hidden retrieval candidates do not reinforce themselves; only memories actually surfaced to the caller receive retrieval bookkeeping.
126
-
127
- Vector candidates are partitioned by agent before nearest-neighbor ranking, so one busy agent cannot crowd another out of a bounded search. For hard tenant boundaries, still use a distinct `AUDREY_DATA_DIR` per tenant or security domain.
128
-
129
- ## See it before installing anything
130
-
131
- ```bash
132
- npm exec --yes --package=audrey --allow-scripts=better-sqlite3,onnxruntime-node,sharp,protobufjs -- audrey demo --scenario repeated-failure
133
- ```
134
-
135
- That command runs from the npm cache, exercises the full SQLite-backed Guard loop, and leaves host configuration unchanged.
136
-
137
- <div align="center">
138
- <img src="docs/assets/audrey-feature-grid.jpg" alt="Audrey memory continuity, recall, evidence, local storage, and memory-before-action" width="760">
139
- </div>
140
-
141
- ## Where we want to take it
142
-
143
- The ambition is a temporal evidence graph for agents: immutable observations, explicit validity windows, source trust, evolving claims, scoped procedures, and outcome-calibrated policy. The defensible part is not storing more text. It is knowing what was believed, why, in which context, for how long, and whether acting on it helped.
144
-
145
- Near-term work includes durable background cognition jobs, tenant namespaces bound to credentials, memory quarantine and taint propagation, public long-horizon evaluations, encrypted backup options, and a persistent local daemon that removes per-hook model startup entirely.
146
-
147
- If that is the kind of agent infrastructure you want to build, open an issue or start with the demo. Audrey is MIT licensed, and the product boundary is intentionally inspectable.
148
-
149
- ---
150
-
151
- ## Technical reference
152
-
153
- Everything below is the machinery. The short version above is the product.
154
-
155
- ### Requirements and packages
156
-
157
- - Node.js 20+
158
- - npm package: `audrey`
159
- - Python client: `audrey-memory`
160
- - Default storage: local SQLite + FTS5 + `sqlite-vec`
161
- - Default embeddings: local 384-dimensional model
162
-
163
- ```bash
164
- npm install audrey
165
- pip install audrey-memory
166
- ```
167
-
168
- For a project install with npm 12, approve Audrey's reviewed dependency scripts in the project root and rebuild once if npm reported that it blocked them:
169
-
170
- ```bash
171
- npm install-scripts approve better-sqlite3 onnxruntime-node sharp protobufjs
172
- npm rebuild
173
- ```
174
-
175
- For Autopilot, prefer a global or otherwise stable installation. Hook and MCP configuration pins the actual Node executable and Audrey entrypoint; an ephemeral `npx` cache is not a durable production runtime.
176
-
177
- ### Host configuration
178
-
179
- Preview or apply lifecycle hooks independently:
180
-
181
- ```bash
182
- audrey hook-config claude-code
183
- audrey hook-config claude-code --apply --scope local
184
- audrey hook-config claude-code --apply --scope project
185
- audrey hook-config claude-code --apply --scope user
186
-
187
- audrey hook-config codex
188
- audrey hook-config codex --apply --scope project
189
- audrey hook-config codex --apply --scope user
190
- ```
191
-
192
- Claude Code scope mapping follows the host’s terminology:
193
-
194
- - `local` → `.claude/settings.local.json`
195
- - `project` → `.claude/settings.json`
196
- - `user` → `~/.claude/settings.json`
197
-
198
- Codex supports project `.codex/hooks.json` and user `~/.codex/hooks.json`; it has no local hook scope. Audrey preserves unrelated hooks, replaces older Audrey-owned handlers, writes a private timestamped backup, and is idempotent on repeat installation. Project-adjacent backup names match `*.audrey-*.bak`; keep that pattern ignored because a host config can contain unrelated credentials.
199
-
200
- Audrey respects `CLAUDE_CONFIG_DIR` and `CODEX_HOME`. Generated hooks pin the stable Node executable, Audrey entrypoint, data directory, agent identity, and non-secret provider choices used at install time. With local embeddings, an Autopilot install performs one warmup so the first real hook is not also the first model load; set `AUDREY_DISABLE_WARMUP=1` to skip it.
201
-
202
- Generate MCP configuration without applying it:
203
-
204
- ```bash
205
- audrey mcp-config codex
206
- audrey mcp-config generic
207
- audrey mcp-config vscode
208
- ```
209
-
210
- Remove Audrey-owned MCP registrations and hooks with the same host and scope you installed:
211
-
212
- ```bash
213
- audrey uninstall --host auto --scope user
214
- audrey uninstall --host claude-code --scope local
215
- audrey uninstall --host codex --scope project
216
- ```
217
-
218
- Add `--dry-run` to preview uninstall without changing either host. Add `--mcp-only` only when you intentionally want to preserve Audrey hooks.
219
-
220
- ### Autopilot safety contract
221
-
222
- The shared hook adapter normalizes current Codex and Claude Code payloads.
223
-
224
- - Context injection is bounded by `AUDREY_CONTEXT_BUDGET_CHARS` (default 4000; Autopilot uses a conservative 3200-character packet unless overridden).
225
- - Prompt and tool retrieval queries are bounded before embedding. Large edits carry hashes and lengths instead of file bodies; exact Guard identity uses a full redacted digest rather than a truncated prefix.
226
- - Only `Bash`, `Edit`, `Write`, `NotebookEdit`, and `apply_patch` are guarded and observed by the generated default hooks.
227
- - Pre/post correlation uses `session_id + tool_use_id`, so parallel tool calls do not attach to the wrong receipt.
228
- - Claude `PostToolUseFailure` and Codex responses that explicitly expose a non-zero exit normalize to the same failure path. Current Codex hooks can omit Bash exit status; Audrey records an opaque result as `unknown`, never as invented success.
229
- - Context and Guard failures emit `{}` and log to stderr unless fail-closed mode is explicitly enabled.
230
- - Stop hooks always emit valid JSON and never continue or block a completed turn.
231
-
232
- Codex hook interception is a guardrail, not a complete shell-policy boundary. The current host contract does not intercept every richer `unified_exec` path and may omit the exit status of silent Bash failures. See the [Codex hooks documentation](https://learn.chatgpt.com/docs/hooks). Use the Guard receipt as evidence, and keep sandboxing, approvals, CI, and deployment controls in place.
233
-
234
- ### JavaScript API
235
-
236
- ```js
237
- import { Audrey, MemoryController } from 'audrey';
238
-
239
- const memory = new Audrey({
240
- dataDir: './audrey-data',
241
- agent: 'payments-agent',
242
- embedding: { provider: 'local', dimensions: 384 },
243
- });
244
-
245
- await memory.encode({
246
- content: 'Stripe returns HTTP 429 above 100 requests per second.',
247
- source: 'direct-observation',
248
- tags: ['stripe', 'rate-limit'],
249
- context: { service: 'billing' },
250
- });
251
-
252
- const capsule = await memory.capsule('increase Stripe throughput', {
253
- scope: 'agent',
254
- budgetChars: 3000,
255
- });
256
-
257
- const guard = new MemoryController(memory);
258
- const before = await guard.beforeAction({
259
- action: 'deploy the billing worker',
260
- tool: 'Bash',
261
- command: 'npm run deploy:billing',
262
- cwd: process.cwd(),
263
- });
264
-
265
- console.log(before.decision, before.evidenceIds);
266
- await memory.closeAsync();
267
- ```
268
-
269
- ### REST sidecar
270
-
271
- ```bash
272
- AUDREY_AGENT=payments-agent audrey serve
273
- curl http://127.0.0.1:7437/health
274
- ```
275
-
276
- Core routes:
277
-
278
- | Need | Route |
279
- |---|---|
280
- | Encode an episode | `POST /v1/encode` |
281
- | Recall memory | `POST /v1/recall` |
282
- | Build a context packet | `POST /v1/capsule` |
283
- | Check before an action | `POST /v1/preflight` |
284
- | Create a Guard receipt | `POST /v1/guard/before` |
285
- | Close a Guard receipt | `POST /v1/guard/after` |
286
- | Consolidate and decay | `POST /v1/dream` |
287
- | Health and index state | `GET /v1/status` |
288
-
289
- Use `AUDREY_API_KEY` for any non-loopback deployment. `X-Audrey-Agent` scopes encode, recall, capsules, preflight, Guard, consolidation, and greetings inside a trusted deployment; it is a routing header, not an authentication boundary. Bind agent/tenant identity at your gateway rather than trusting an arbitrary public header.
290
-
291
- ### Python client
292
-
293
- ```python
294
- from audrey_memory import Audrey
295
-
296
- memory = Audrey(base_url="http://127.0.0.1:7437", agent="payments-agent")
297
- memory_id = memory.encode(
298
- "Stripe returns HTTP 429 above 100 requests per second.",
299
- source="direct-observation",
300
- )
301
- results = memory.recall("Stripe rate limit", limit=5)
302
- memory.close()
303
- ```
304
-
305
- The Python package is a client for the REST sidecar; the memory runtime remains in the Node process.
306
-
307
- ### Memory and retrieval pipeline
308
-
309
- ```text
310
- episode
311
- ├─ transactional SQLite + vector + FTS write
312
- ├─ agent-scoped interference / resonance / validation
313
- ├─ reinforcement or contradiction evidence
314
- └─ sleep-time consolidation into semantic or procedural memory
315
-
316
- query
317
- ├─ bounded vector candidates
318
- ├─ FTS5 lexical candidates
319
- ├─ reciprocal-rank fusion and confidence scoring
320
- ├─ context / affect / recency / interference modifiers
321
- └─ final-only retrieval bookkeeping
322
- ```
323
-
324
- Agent-scoped vector search uses a native `sqlite-vec` partition key before nearest-neighbor ranking, not post-filtered whole-store candidates. If fusion underfills, Audrey makes one bounded partition-local retry. Semantic and procedural retrieval counts update only as final results are yielded; deduplicated, over-limit, and unconsumed stream candidates receive no authority boost.
325
-
326
- ### MCP surface
327
-
328
- Audrey exposes 22 MCP tools plus status, recent-memory, and principle resources and briefing/recall/reflection prompts. The main groups are:
329
-
330
- - capture: `memory_encode`, `memory_reflect`, `memory_observe_tool`
331
- - retrieval: `memory_recall`, `memory_capsule`, `memory_greeting`
332
- - action safety: `memory_preflight`, `memory_guard_before`, `memory_guard_after`, `memory_reflexes`
333
- - lifecycle: `memory_consolidate`, `memory_dream`, `memory_decay`, `memory_resolve_truth`
334
- - governance: `memory_validate`, `memory_promote`, `memory_forget`, `memory_export`, `memory_import`, `memory_status`, `memory_introspect`
335
-
336
- The server also sends host instructions explaining the Guard receipt loop when lifecycle hooks are unavailable.
337
-
338
- ### Environment variables
339
-
340
- | Variable | Default | Purpose |
341
- |---|---|---|
342
- | `AUDREY_DATA_DIR` | `~/.audrey/data` | SQLite store; use a distinct directory per tenant/security boundary |
343
- | `AUDREY_AGENT` | host-specific | Logical memory owner used for scoped operations |
344
- | `AUDREY_EMBEDDING_PROVIDER` | `local` | `local`, `gemini`, `openai`, or `mock` |
345
- | `AUDREY_LLM_PROVIDER` | auto | `anthropic`, `openai`, or `mock` for reflection/consolidation |
346
- | `AUDREY_LLM_MODEL` | provider default | Explicit LLM model override |
347
- | `AUDREY_DEVICE` | `gpu` | Local embedding device; falls back to CPU |
348
- | `AUDREY_CONTEXT_BUDGET_CHARS` | `4000` | Maximum default capsule size |
349
- | `AUDREY_AUTOPILOT_SCOPE` | `agent` | `agent` or explicit cross-agent `shared` recall for hooks |
350
- | `AUDREY_PACKET_FORMAT` | `compact` | Injected packet style: `compact` line format or `verbose` key=value |
351
- | `AUDREY_PACKET_DELTA` | `1` | Inject each memory once per session; `0` resends full packets every prompt |
352
- | `AUDREY_HOOK_FAIL_CLOSED` | `0` | Deny guarded actions when Audrey itself fails |
353
- | `AUDREY_API_KEY` | unset | Bearer token for REST access |
354
- | `AUDREY_HOST` | `127.0.0.1` | REST bind address |
355
- | `AUDREY_PORT` | `7437` | REST port |
356
- | `AUDREY_ENABLE_ADMIN_TOOLS` | `0` | Enable export, import, and forget operations |
357
- | `AUDREY_ENABLE_SHARED_SCOPE` | `0` | Allow explicit cross-agent REST recall; admin tools also enable it |
358
- | `AUDREY_PROFILE` | `0` | Include stage timing diagnostics |
359
- | `AUDREY_DISABLE_WARMUP` | `0` | Disable MCP embedding warmup |
360
- | `AUDREY_PRAGMA_DEFAULTS` | `1` | Set `0` to use better-sqlite3 PRAGMA defaults |
361
-
362
- Provider secrets are never embedded in generated hook commands. `--include-secrets` applies only to MCP registration; prefer host environment injection or a secret manager.
363
-
364
- ### Production checklist
365
-
366
- - Give every tenant or hard isolation domain its own `AUDREY_DATA_DIR`.
367
- - Pin embedding and LLM providers explicitly.
368
- - Back up the store before provider, dimension, or version migrations.
369
- - Put the REST sidecar behind authentication and rate limits; do not expose an agent-selection header as identity.
370
- - Leave REST shared scope disabled unless cross-agent retrieval is intentional and authorized by your own identity layer.
371
- - Keep credentials and regulated raw content out of encoded memories.
372
- - Decide retention, deletion, encryption, and audit policy before regulated use.
373
- - Monitor `audrey status --json --fail-on-unhealthy`.
374
- - Keep the hook runtime on a stable installed path.
375
- - Load-test concurrent writers for your topology; SQLite WAL is not a distributed coordination layer.
376
-
377
- ### Benchmarks and evidence
378
-
379
- Run the release gates locally:
380
-
381
- ```bash
382
- npm test
383
- npm run bench:memory:check
384
- npm run bench:guard:check
385
- npm run bench:guard:publication:verify
386
- npm run smoke:cli
387
- npm run pack:check
388
- ```
389
-
390
- GuardBench currently contains ten local, deterministic pre-action scenarios covering repeated failures, procedures, scope changes, recovery, redaction, conflicting instructions, and noisy stores. The checked-in v1 methodology uses a mock 64-dimensional embedding provider and exists to catch regressions. A perfect local pass is not a claim about real-provider latency or production false-positive rates.
391
-
392
- <!-- guardbench-summary:start -->
393
- Latest local result in this checkout: 10/10 scenarios passed, 100% prevention rate, 0% false-block rate, 0 raw secret leaks, 0 published artifact leaks, and 4.253ms / 21.196ms p50/p95 Guard latency under the mock-provider methodology.
394
- <!-- guardbench-summary:end -->
395
-
396
- `benchmarks/perf-snapshot.js` measures encode and hybrid-recall p50/p95/p99 at configurable corpus sizes with machine and provider provenance. Run it on the hardware and embedding provider you plan to operate; hosted-provider latency is dominated by its network round trip.
397
-
398
- The longer-term public evaluation target includes [LongMemEval](https://arxiv.org/abs/2410.10813), [MemoryAgentBench](https://arxiv.org/abs/2507.05257), and adversarial memory-poisoning cases. Relevant design directions include bitemporal knowledge graphs in [Zep/Graphiti](https://arxiv.org/abs/2501.13956), evolving memory organization in [A-MEM](https://arxiv.org/abs/2502.12110), and sleep-time agent compute in [Sleep-time Compute](https://arxiv.org/abs/2504.13171).
399
-
400
- ### Development
401
-
402
- ```bash
403
- git clone https://github.com/Evilander/Audrey.git
404
- cd Audrey
405
- npm ci
406
- npm run build
407
- npm run lint
408
- npm run format:check
409
- npm test
410
- ```
411
-
412
- See [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md), and [docs/MEMORY_BENCHMARKING.md](docs/MEMORY_BENCHMARKING.md).
413
-
414
- ### Maintainer release gates
415
-
416
- These commands are intentionally documented because the paper and release evidence ledger verifies them against the public source tree:
417
-
418
- ```bash
419
- npm run bench:guard:zep
420
- npm run bench:guard:external:dry-run
421
- npm run bench:guard:external:evidence
422
- npm run bench:guard:external:evidence:strict
423
-
424
- npm run paper:arxiv:compile
425
- npm run paper:arxiv:compile:strict
426
- npm run paper:launch-results
427
- npm run paper:launch-results:strict
428
-
429
- npm run release:cut:plan
430
- npm run release:cut:apply
431
- npm run release:readiness
432
- npm run release:readiness:strict
433
- npm run python:release:check
434
- ```
435
-
436
- Live Zep runs require `ZEP_API_KEY`; `ZEP_GUARDBENCH_INGEST_DELAY_MS` tunes ingestion settling time. The external dry-run matrix proves adapter shape without credentials, while external evidence verification distinguishes pending runs from verified live evidence.
437
-
438
- Publication packaging performs an absolute-path sweep, reserves an X URL reserve in social copy, and checks submitted artifact-url targets. Release readiness separately reports source-control state, live remote-head verification, npm registry/auth readiness, and PyPI publish readiness.
439
-
440
- MIT licensed. Built for agents that should get better at the work without becoming less accountable.
@@ -1,50 +0,0 @@
1
- {
2
- "schemaVersion": "1.0.0",
3
- "suite": "GuardBench adapter self-test",
4
- "generatedAt": "2026-07-13T14:48:54.144Z",
5
- "ok": true,
6
- "adapter": {
7
- "name": "Example Allow Adapter",
8
- "path": "benchmarks/adapters/example-allow.mjs",
9
- "moduleFile": "example-allow.mjs",
10
- "description": "Credential-free GuardBench adapter example. It always allows and is useful for adapter-loading smoke tests."
11
- },
12
- "conformance": {
13
- "ok": true,
14
- "adapter": "Example Allow Adapter",
15
- "requestedAdapter": "Example Allow Adapter",
16
- "scenarios": 10,
17
- "expectedScenarios": 10,
18
- "fullContractPassRate": 0.1,
19
- "decisionAccuracy": 0.1,
20
- "redactionLeaks": 0,
21
- "failures": []
22
- },
23
- "score": {
24
- "scenarios": 10,
25
- "fullContractPassRate": 0.1,
26
- "decisionAccuracy": 0.1,
27
- "evidenceRecall": 0.1,
28
- "redactionLeaks": 0,
29
- "latency": {
30
- "p50Ms": 0.011,
31
- "p95Ms": 0.041,
32
- "maxMs": 0.041
33
- }
34
- },
35
- "contract": {
36
- "expectedAnswersWithheld": true,
37
- "lowScoreAllowed": true,
38
- "requiredScenarioRows": 10,
39
- "requiredResultFields": [
40
- "decision",
41
- "riskScore",
42
- "evidenceIds",
43
- "recommendedActions",
44
- "summary",
45
- "recallErrors"
46
- ],
47
- "redactionLeakTolerance": 0
48
- },
49
- "failures": []
50
- }
@@ -1,69 +0,0 @@
1
- {
2
- "schemaVersion": "1.0.0",
3
- "suite": "GuardBench external adapter dry-run matrix",
4
- "generatedAt": "2026-07-13T14:48:54.712Z",
5
- "ok": true,
6
- "registry": "benchmarks/adapters/registry.json",
7
- "outRoot": "benchmarks/output/external",
8
- "adapters": [
9
- {
10
- "id": "mem0-platform",
11
- "name": "Mem0 Platform",
12
- "credentialMode": "runtime-env",
13
- "requiredEnv": [
14
- "MEM0_API_KEY"
15
- ],
16
- "missingEnv": [
17
- "MEM0_API_KEY"
18
- ],
19
- "status": "dry-run-missing-env",
20
- "command": [
21
- "node",
22
- "benchmarks/guardbench.js",
23
- "--adapter",
24
- "benchmarks/adapters/mem0-platform.mjs",
25
- "--out-dir",
26
- "benchmarks/output/external/mem0-platform",
27
- "--check",
28
- "--json"
29
- ],
30
- "validationCommand": [
31
- "node",
32
- "benchmarks/validate-guardbench-artifacts.mjs",
33
- "--dir",
34
- "benchmarks/output/external/mem0-platform"
35
- ],
36
- "metadataPath": "benchmarks/output/external/mem0-platform/external-run-metadata.json"
37
- },
38
- {
39
- "id": "zep-cloud",
40
- "name": "Zep Cloud",
41
- "credentialMode": "runtime-env",
42
- "requiredEnv": [
43
- "ZEP_API_KEY"
44
- ],
45
- "missingEnv": [
46
- "ZEP_API_KEY"
47
- ],
48
- "status": "dry-run-missing-env",
49
- "command": [
50
- "node",
51
- "benchmarks/guardbench.js",
52
- "--adapter",
53
- "benchmarks/adapters/zep-cloud.mjs",
54
- "--out-dir",
55
- "benchmarks/output/external/zep-cloud",
56
- "--check",
57
- "--json"
58
- ],
59
- "validationCommand": [
60
- "node",
61
- "benchmarks/validate-guardbench-artifacts.mjs",
62
- "--dir",
63
- "benchmarks/output/external/zep-cloud"
64
- ],
65
- "metadataPath": "benchmarks/output/external/zep-cloud/external-run-metadata.json"
66
- }
67
- ],
68
- "failures": []
69
- }
@@ -1,56 +0,0 @@
1
- {
2
- "schemaVersion": "1.0.0",
3
- "suite": "GuardBench external evidence verification",
4
- "generatedAt": "2026-07-13T14:48:54.992Z",
5
- "ok": true,
6
- "allowPending": true,
7
- "registry": "benchmarks/adapters/registry.json",
8
- "outRoot": "benchmarks/output/external",
9
- "adapters": [
10
- {
11
- "id": "mem0-platform",
12
- "name": "Mem0 Platform",
13
- "path": "benchmarks/adapters/mem0-platform.mjs",
14
- "credentialMode": "runtime-env",
15
- "requiredEnv": [
16
- "MEM0_API_KEY"
17
- ],
18
- "outDir": "benchmarks/output/external/mem0-platform",
19
- "metadataPath": "benchmarks/output/external/mem0-platform/external-run-metadata.json",
20
- "status": "pending",
21
- "evidenceKind": "dry-run",
22
- "metadataStatus": "dry-run-missing-env",
23
- "dryRun": true,
24
- "missingEnv": [
25
- "MEM0_API_KEY"
26
- ],
27
- "artifactValidationOk": null,
28
- "adapterConformanceOk": null,
29
- "secretLeakCount": 0,
30
- "failures": []
31
- },
32
- {
33
- "id": "zep-cloud",
34
- "name": "Zep Cloud",
35
- "path": "benchmarks/adapters/zep-cloud.mjs",
36
- "credentialMode": "runtime-env",
37
- "requiredEnv": [
38
- "ZEP_API_KEY"
39
- ],
40
- "outDir": "benchmarks/output/external/zep-cloud",
41
- "metadataPath": "benchmarks/output/external/zep-cloud/external-run-metadata.json",
42
- "status": "pending",
43
- "evidenceKind": "dry-run",
44
- "metadataStatus": "dry-run-missing-env",
45
- "dryRun": true,
46
- "missingEnv": [
47
- "ZEP_API_KEY"
48
- ],
49
- "artifactValidationOk": null,
50
- "adapterConformanceOk": null,
51
- "secretLeakCount": 0,
52
- "failures": []
53
- }
54
- ],
55
- "failures": []
56
- }
@@ -1,63 +0,0 @@
1
- {
2
- "schemaVersion": "1.0.0",
3
- "suite": "GuardBench conformance card",
4
- "generatedAt": "2026-07-13T14:48:49.667Z",
5
- "sourceDir": "benchmarks/output",
6
- "manifestVersion": "0.2.0",
7
- "suiteId": "guardbench-local-comparative",
8
- "subject": {
9
- "name": "Audrey Guard",
10
- "requestedAdapter": null,
11
- "external": false
12
- },
13
- "run": {
14
- "status": "validated",
15
- "startedAt": null,
16
- "completedAt": null,
17
- "command": null,
18
- "validationCommand": null
19
- },
20
- "score": {
21
- "scenarios": 10,
22
- "fullContractPassed": 10,
23
- "fullContractPassRate": 1,
24
- "decisionAccuracy": 1,
25
- "evidenceRecall": 1,
26
- "redactionLeaks": 0,
27
- "latency": {
28
- "p50Ms": 4.253,
29
- "p95Ms": 21.196,
30
- "maxMs": 21.196
31
- }
32
- },
33
- "conformance": {
34
- "ok": true,
35
- "failures": [],
36
- "artifactValidationOk": true,
37
- "artifactValidationFailures": []
38
- },
39
- "integrity": {
40
- "artifactHashes": {
41
- "guardbench-manifest.json": "57636ce19fdaa6e50fc3fc961d9e499a9f43632f588c713a9fefe8e8a6fa724c",
42
- "guardbench-summary.json": "3ba1c059558aa8b511ae510276078930649ba6aca9669324148726fac10c7ee8",
43
- "guardbench-raw.json": "786b03ff8570444620c23b35621bbb14897f06310de7e8bd3a337a1acf5ce776"
44
- },
45
- "externalRunMetadataHash": null
46
- },
47
- "provenance": {
48
- "generatedAt": "2026-07-13T14:48:49.313Z",
49
- "gitSha": "7111c630be69d3ab96439018f094dc4fac826aca",
50
- "gitDirty": false,
51
- "node": "v24.18.0",
52
- "v8": "13.6.233.17-node.50",
53
- "platform": "linux",
54
- "arch": "x64",
55
- "osRelease": "6.17.0-1018-azure",
56
- "cpuModel": "AMD EPYC 9V74 80-Core Processor",
57
- "cpuCount": 4,
58
- "totalMemoryGb": 15.61,
59
- "embeddingProvider": "mock",
60
- "embeddingDimensions": 64,
61
- "llmProvider": "mock"
62
- }
63
- }