audrey 1.1.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -0
- package/README.md +39 -12
- package/dist/mcp-server/codex-hooks-probe.d.ts +22 -0
- package/dist/mcp-server/codex-hooks-probe.d.ts.map +1 -0
- package/dist/mcp-server/codex-hooks-probe.js +160 -0
- package/dist/mcp-server/codex-hooks-probe.js.map +1 -0
- package/dist/mcp-server/config.d.ts +26 -2
- package/dist/mcp-server/config.d.ts.map +1 -1
- package/dist/mcp-server/config.js +52 -20
- package/dist/mcp-server/config.js.map +1 -1
- package/dist/mcp-server/hooks.d.ts +28 -0
- package/dist/mcp-server/hooks.d.ts.map +1 -1
- package/dist/mcp-server/hooks.js +91 -2
- package/dist/mcp-server/hooks.js.map +1 -1
- package/dist/mcp-server/index.d.ts +242 -2
- package/dist/mcp-server/index.d.ts.map +1 -1
- package/dist/mcp-server/index.js +806 -240
- package/dist/mcp-server/index.js.map +1 -1
- package/dist/mcp-server/tool-schemas.d.ts +32 -2
- package/dist/mcp-server/tool-schemas.d.ts.map +1 -1
- package/dist/mcp-server/tool-schemas.js +55 -0
- package/dist/mcp-server/tool-schemas.js.map +1 -1
- package/dist/src/audrey.d.ts +14 -2
- package/dist/src/audrey.d.ts.map +1 -1
- package/dist/src/audrey.js +152 -28
- package/dist/src/audrey.js.map +1 -1
- package/dist/src/autopilot.d.ts +22 -0
- package/dist/src/autopilot.d.ts.map +1 -1
- package/dist/src/autopilot.js +271 -50
- package/dist/src/autopilot.js.map +1 -1
- package/dist/src/capsule.d.ts +23 -0
- package/dist/src/capsule.d.ts.map +1 -1
- package/dist/src/capsule.js +56 -11
- package/dist/src/capsule.js.map +1 -1
- package/dist/src/confidence.d.ts +9 -1
- package/dist/src/confidence.d.ts.map +1 -1
- package/dist/src/confidence.js +16 -2
- package/dist/src/confidence.js.map +1 -1
- package/dist/src/consolidate.d.ts +4 -0
- package/dist/src/consolidate.d.ts.map +1 -1
- package/dist/src/consolidate.js +206 -34
- package/dist/src/consolidate.js.map +1 -1
- package/dist/src/controller.d.ts +17 -1
- package/dist/src/controller.d.ts.map +1 -1
- package/dist/src/controller.js +244 -128
- package/dist/src/controller.js.map +1 -1
- package/dist/src/db.d.ts.map +1 -1
- package/dist/src/db.js +233 -56
- package/dist/src/db.js.map +1 -1
- package/dist/src/encode.d.ts +2 -1
- package/dist/src/encode.d.ts.map +1 -1
- package/dist/src/encode.js +41 -4
- package/dist/src/encode.js.map +1 -1
- package/dist/src/events.d.ts +48 -1
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +160 -62
- package/dist/src/events.js.map +1 -1
- package/dist/src/export.d.ts.map +1 -1
- package/dist/src/export.js +4 -4
- package/dist/src/export.js.map +1 -1
- package/dist/src/grounding.d.ts +111 -0
- package/dist/src/grounding.d.ts.map +1 -0
- package/dist/src/grounding.js +259 -0
- package/dist/src/grounding.js.map +1 -0
- package/dist/src/hybrid-recall.d.ts +16 -7
- package/dist/src/hybrid-recall.d.ts.map +1 -1
- package/dist/src/hybrid-recall.js +22 -11
- package/dist/src/hybrid-recall.js.map +1 -1
- package/dist/src/import.d.ts +10 -0
- package/dist/src/import.d.ts.map +1 -1
- package/dist/src/import.js +122 -22
- package/dist/src/import.js.map +1 -1
- package/dist/src/llm.d.ts.map +1 -1
- package/dist/src/llm.js +16 -0
- package/dist/src/llm.js.map +1 -1
- package/dist/src/preflight.d.ts.map +1 -1
- package/dist/src/preflight.js +89 -47
- package/dist/src/preflight.js.map +1 -1
- package/dist/src/project.d.ts +4 -1
- package/dist/src/project.d.ts.map +1 -1
- package/dist/src/project.js +65 -5
- package/dist/src/project.js.map +1 -1
- package/dist/src/recall.d.ts.map +1 -1
- package/dist/src/recall.js +138 -13
- package/dist/src/recall.js.map +1 -1
- package/dist/src/redact.d.ts +1 -1
- package/dist/src/redact.d.ts.map +1 -1
- package/dist/src/redact.js +185 -5
- package/dist/src/redact.js.map +1 -1
- package/dist/src/routes.d.ts.map +1 -1
- package/dist/src/routes.js +91 -18
- package/dist/src/routes.js.map +1 -1
- package/dist/src/trust.d.ts +35 -0
- package/dist/src/trust.d.ts.map +1 -0
- package/dist/src/trust.js +77 -0
- package/dist/src/trust.js.map +1 -0
- package/dist/src/types.d.ts +24 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +3 -37
- package/benchmarks/adapter-kit.mjs +0 -20
- package/benchmarks/adapter-self-test.mjs +0 -170
- package/benchmarks/adapters/example-allow.mjs +0 -31
- package/benchmarks/adapters/mem0-platform.mjs +0 -274
- package/benchmarks/adapters/registry.json +0 -51
- package/benchmarks/adapters/zep-cloud.mjs +0 -304
- package/benchmarks/baselines.js +0 -174
- package/benchmarks/build-leaderboard.mjs +0 -183
- package/benchmarks/cases.js +0 -549
- package/benchmarks/create-conformance-card.mjs +0 -148
- package/benchmarks/create-submission-bundle.mjs +0 -190
- package/benchmarks/dry-run-external-adapters.mjs +0 -177
- package/benchmarks/guardbench.js +0 -1265
- package/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +0 -50
- package/benchmarks/output/external/guardbench-external-dry-run.json +0 -69
- package/benchmarks/output/external/guardbench-external-evidence.json +0 -56
- package/benchmarks/output/guardbench-conformance-card.json +0 -63
- package/benchmarks/output/guardbench-manifest.json +0 -414
- package/benchmarks/output/guardbench-raw.json +0 -1279
- package/benchmarks/output/guardbench-summary.json +0 -2123
- package/benchmarks/output/leaderboard/guardbench-leaderboard.json +0 -93
- package/benchmarks/output/leaderboard/guardbench-leaderboard.md +0 -7
- package/benchmarks/output/submission-bundle/guardbench-conformance-card.json +0 -63
- package/benchmarks/output/submission-bundle/guardbench-manifest.json +0 -414
- package/benchmarks/output/submission-bundle/guardbench-raw.json +0 -1279
- package/benchmarks/output/submission-bundle/guardbench-summary.json +0 -2123
- package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-registry.schema.json +0 -69
- package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-self-test.schema.json +0 -156
- package/benchmarks/output/submission-bundle/schemas/guardbench-conformance-card.schema.json +0 -184
- package/benchmarks/output/submission-bundle/schemas/guardbench-external-dry-run.schema.json +0 -74
- package/benchmarks/output/submission-bundle/schemas/guardbench-external-evidence.schema.json +0 -108
- package/benchmarks/output/submission-bundle/schemas/guardbench-external-run.schema.json +0 -160
- package/benchmarks/output/submission-bundle/schemas/guardbench-leaderboard.schema.json +0 -179
- package/benchmarks/output/submission-bundle/schemas/guardbench-manifest.schema.json +0 -213
- package/benchmarks/output/submission-bundle/schemas/guardbench-publication-verification.schema.json +0 -47
- package/benchmarks/output/submission-bundle/schemas/guardbench-raw.schema.json +0 -184
- package/benchmarks/output/submission-bundle/schemas/guardbench-submission-manifest.schema.json +0 -151
- package/benchmarks/output/submission-bundle/schemas/guardbench-summary.schema.json +0 -249
- package/benchmarks/output/submission-bundle/submission-manifest.json +0 -131
- package/benchmarks/output/submission-bundle/validation-report.json +0 -31
- package/benchmarks/output/summary.json +0 -2354
- package/benchmarks/perf-snapshot.js +0 -307
- package/benchmarks/perf.bench.js +0 -169
- package/benchmarks/public-paths.mjs +0 -97
- package/benchmarks/reference-results.js +0 -75
- package/benchmarks/report.js +0 -280
- package/benchmarks/run-external-guardbench.mjs +0 -303
- package/benchmarks/run.js +0 -735
- package/benchmarks/schemas/guardbench-adapter-registry.schema.json +0 -69
- package/benchmarks/schemas/guardbench-adapter-self-test.schema.json +0 -156
- package/benchmarks/schemas/guardbench-conformance-card.schema.json +0 -184
- package/benchmarks/schemas/guardbench-external-dry-run.schema.json +0 -74
- package/benchmarks/schemas/guardbench-external-evidence.schema.json +0 -108
- package/benchmarks/schemas/guardbench-external-run.schema.json +0 -160
- package/benchmarks/schemas/guardbench-leaderboard.schema.json +0 -179
- package/benchmarks/schemas/guardbench-manifest.schema.json +0 -213
- package/benchmarks/schemas/guardbench-publication-verification.schema.json +0 -47
- package/benchmarks/schemas/guardbench-raw.schema.json +0 -184
- package/benchmarks/schemas/guardbench-submission-manifest.schema.json +0 -151
- package/benchmarks/schemas/guardbench-summary.schema.json +0 -249
- package/benchmarks/snapshots/perf-0.22.2.json +0 -123
- package/benchmarks/snapshots/perf-0.23.0.json +0 -123
- package/benchmarks/validate-adapter-module.mjs +0 -107
- package/benchmarks/validate-adapter-registry.mjs +0 -145
- package/benchmarks/validate-adapter-self-test.mjs +0 -96
- package/benchmarks/validate-guardbench-artifacts.mjs +0 -400
- package/benchmarks/verify-external-evidence.mjs +0 -351
- package/benchmarks/verify-publication-artifacts.mjs +0 -309
- package/benchmarks/verify-submission-bundle.mjs +0 -172
- package/docs/AUDREY_PAPER_OUTLINE.md +0 -178
- package/docs/MEMORY_BENCHMARKING.md +0 -59
- package/docs/PRODUCTION_BACKLOG.md +0 -321
- package/docs/assets/audrey-feature-grid.jpg +0 -0
- package/docs/assets/audrey-logo.svg +0 -45
- package/docs/assets/audrey-wordmark.png +0 -0
- package/docs/paper/00-master.md +0 -48
- package/docs/paper/01-introduction.md +0 -27
- package/docs/paper/02-related-work.md +0 -47
- package/docs/paper/03-problem-definition.md +0 -108
- package/docs/paper/04-design.md +0 -164
- package/docs/paper/05-guardbench-spec.md +0 -412
- package/docs/paper/06-implementation.md +0 -115
- package/docs/paper/07-evaluation.md +0 -168
- package/docs/paper/08-discussion-limitations.md +0 -61
- package/docs/paper/09-conclusion.md +0 -11
- package/docs/paper/SUBMISSION_README.md +0 -162
- package/docs/paper/appendix-a-demo-transcript.md +0 -114
- package/docs/paper/arxiv-compile-report.schema.json +0 -116
- package/docs/paper/arxiv-source.schema.json +0 -61
- package/docs/paper/audrey-paper-v1.md +0 -1108
- package/docs/paper/browser-launch-plan.json +0 -209
- package/docs/paper/browser-launch-plan.schema.json +0 -100
- package/docs/paper/browser-launch-results.json +0 -86
- package/docs/paper/browser-launch-results.schema.json +0 -66
- package/docs/paper/claim-register.json +0 -138
- package/docs/paper/claim-register.schema.json +0 -81
- package/docs/paper/evidence-ledger.md +0 -103
- package/docs/paper/output/arxiv/README-arxiv.txt +0 -8
- package/docs/paper/output/arxiv/arxiv-manifest.json +0 -41
- package/docs/paper/output/arxiv/main.tex +0 -951
- package/docs/paper/output/arxiv/references.bib +0 -222
- package/docs/paper/output/arxiv-compile-report.json +0 -24
- package/docs/paper/output/submission-bundle/LICENSE +0 -21
- package/docs/paper/output/submission-bundle/README.md +0 -440
- package/docs/paper/output/submission-bundle/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +0 -50
- package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-dry-run.json +0 -69
- package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-evidence.json +0 -56
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-conformance-card.json +0 -63
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-manifest.json +0 -414
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-raw.json +0 -1279
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-summary.json +0 -2123
- package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.json +0 -93
- package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.md +0 -7
- package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/submission-manifest.json +0 -131
- package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/validation-report.json +0 -31
- package/docs/paper/output/submission-bundle/benchmarks/output/summary.json +0 -2354
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-registry.schema.json +0 -69
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-self-test.schema.json +0 -156
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-conformance-card.schema.json +0 -184
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-dry-run.schema.json +0 -74
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-evidence.schema.json +0 -108
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-run.schema.json +0 -160
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-leaderboard.schema.json +0 -179
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-manifest.schema.json +0 -213
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-publication-verification.schema.json +0 -47
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-raw.schema.json +0 -184
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-submission-manifest.schema.json +0 -151
- package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-summary.schema.json +0 -249
- package/docs/paper/output/submission-bundle/docs/AUDREY_PAPER_OUTLINE.md +0 -178
- package/docs/paper/output/submission-bundle/docs/paper/00-master.md +0 -48
- package/docs/paper/output/submission-bundle/docs/paper/01-introduction.md +0 -27
- package/docs/paper/output/submission-bundle/docs/paper/02-related-work.md +0 -47
- package/docs/paper/output/submission-bundle/docs/paper/03-problem-definition.md +0 -108
- package/docs/paper/output/submission-bundle/docs/paper/04-design.md +0 -164
- package/docs/paper/output/submission-bundle/docs/paper/05-guardbench-spec.md +0 -412
- package/docs/paper/output/submission-bundle/docs/paper/06-implementation.md +0 -115
- package/docs/paper/output/submission-bundle/docs/paper/07-evaluation.md +0 -168
- package/docs/paper/output/submission-bundle/docs/paper/08-discussion-limitations.md +0 -61
- package/docs/paper/output/submission-bundle/docs/paper/09-conclusion.md +0 -11
- package/docs/paper/output/submission-bundle/docs/paper/SUBMISSION_README.md +0 -162
- package/docs/paper/output/submission-bundle/docs/paper/appendix-a-demo-transcript.md +0 -114
- package/docs/paper/output/submission-bundle/docs/paper/arxiv-compile-report.schema.json +0 -116
- package/docs/paper/output/submission-bundle/docs/paper/arxiv-source.schema.json +0 -61
- package/docs/paper/output/submission-bundle/docs/paper/audrey-paper-v1.md +0 -1108
- package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.json +0 -209
- package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.schema.json +0 -100
- package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.json +0 -86
- package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.schema.json +0 -66
- package/docs/paper/output/submission-bundle/docs/paper/claim-register.json +0 -138
- package/docs/paper/output/submission-bundle/docs/paper/claim-register.schema.json +0 -81
- package/docs/paper/output/submission-bundle/docs/paper/evidence-ledger.md +0 -103
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/README-arxiv.txt +0 -8
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/arxiv-manifest.json +0 -41
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/main.tex +0 -951
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/references.bib +0 -222
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv-compile-report.json +0 -24
- package/docs/paper/output/submission-bundle/docs/paper/paper-submission-bundle.schema.json +0 -70
- package/docs/paper/output/submission-bundle/docs/paper/publication-pack.json +0 -81
- package/docs/paper/output/submission-bundle/docs/paper/publication-pack.schema.json +0 -60
- package/docs/paper/output/submission-bundle/docs/paper/references.bib +0 -222
- package/docs/paper/output/submission-bundle/package.json +0 -235
- package/docs/paper/output/submission-bundle/paper-submission-manifest.json +0 -379
- package/docs/paper/paper-submission-bundle.schema.json +0 -70
- package/docs/paper/publication-pack.json +0 -81
- package/docs/paper/publication-pack.schema.json +0 -60
- package/docs/paper/references.bib +0 -222
- package/scripts/audit-release-completion.mjs +0 -440
- package/scripts/create-arxiv-source.mjs +0 -368
- package/scripts/create-paper-submission-bundle.mjs +0 -214
- package/scripts/finalize-release.mjs +0 -601
- package/scripts/prepare-release-cut.mjs +0 -277
- package/scripts/publish-release-bundle.mjs +0 -252
- package/scripts/publish-release-github-api.mjs +0 -494
- package/scripts/run-vitest.mjs +0 -34
- package/scripts/smoke-cli.js +0 -92
- package/scripts/sync-paper-artifacts.mjs +0 -112
- package/scripts/verify-arxiv-compile.mjs +0 -476
- package/scripts/verify-arxiv-source.mjs +0 -224
- package/scripts/verify-browser-launch-plan.mjs +0 -254
- package/scripts/verify-browser-launch-results.mjs +0 -303
- package/scripts/verify-paper-artifacts.mjs +0 -798
- package/scripts/verify-paper-claims.mjs +0 -254
- package/scripts/verify-paper-submission-bundle.mjs +0 -218
- package/scripts/verify-publication-pack.mjs +0 -210
- package/scripts/verify-python-package.py +0 -201
- package/scripts/verify-release-readiness.mjs +0 -920
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
% Primary URL: https://arxiv.org/abs/2504.19413
|
|
2
|
-
@misc{chhikara2025mem0,
|
|
3
|
-
title = {Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory},
|
|
4
|
-
author = {Chhikara, Prateek and Khant, Dev and Aryan, Saket and Singh, Taranjeet and Yadav, Deshraj},
|
|
5
|
-
year = {2025},
|
|
6
|
-
eprint = {2504.19413},
|
|
7
|
-
archivePrefix = {arXiv},
|
|
8
|
-
primaryClass = {cs.CL},
|
|
9
|
-
url = {https://arxiv.org/abs/2504.19413}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
% Primary URL: https://arxiv.org/abs/2310.08560
|
|
13
|
-
@misc{packer2024memgpt,
|
|
14
|
-
title = {MemGPT: Towards LLMs as Operating Systems},
|
|
15
|
-
author = {Packer, Charles and Wooders, Sarah and Lin, Kevin and Fang, Vivian and Patil, Shishir G. and Stoica, Ion and Gonzalez, Joseph E.},
|
|
16
|
-
year = {2024},
|
|
17
|
-
eprint = {2310.08560},
|
|
18
|
-
archivePrefix = {arXiv},
|
|
19
|
-
primaryClass = {cs.AI},
|
|
20
|
-
url = {https://arxiv.org/abs/2310.08560}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
% Primary URL: https://arxiv.org/abs/2410.10813
|
|
24
|
-
@misc{wu2025longmemeval,
|
|
25
|
-
title = {LongMemEval: Benchmarking Chat Assistants on Long-Term Interactive Memory},
|
|
26
|
-
author = {Wu, Di and Wang, Hongwei and Yu, Wenhao and Zhang, Yuwei and Chang, Kai-Wei and Yu, Dong},
|
|
27
|
-
year = {2025},
|
|
28
|
-
eprint = {2410.10813},
|
|
29
|
-
archivePrefix = {arXiv},
|
|
30
|
-
primaryClass = {cs.CL},
|
|
31
|
-
url = {https://arxiv.org/abs/2410.10813}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
% Primary URL: https://arxiv.org/abs/2402.17753
|
|
35
|
-
@misc{maharana2024locomo,
|
|
36
|
-
title = {Evaluating Very Long-Term Conversational Memory of LLM Agents},
|
|
37
|
-
author = {Maharana, Adyasha and Lee, Dong-Ho and Tulyakov, Sergey and Bansal, Mohit and Barbieri, Francesco and Fang, Yuwei},
|
|
38
|
-
year = {2024},
|
|
39
|
-
eprint = {2402.17753},
|
|
40
|
-
archivePrefix = {arXiv},
|
|
41
|
-
primaryClass = {cs.CL},
|
|
42
|
-
url = {https://arxiv.org/abs/2402.17753}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
% Primary URL: https://arxiv.org/abs/2210.07316
|
|
46
|
-
@misc{muennighoff2023mteb,
|
|
47
|
-
title = {MTEB: Massive Text Embedding Benchmark},
|
|
48
|
-
author = {Muennighoff, Niklas and Tazi, Nouamane and Magne, Loic and Reimers, Nils},
|
|
49
|
-
year = {2023},
|
|
50
|
-
eprint = {2210.07316},
|
|
51
|
-
archivePrefix = {arXiv},
|
|
52
|
-
primaryClass = {cs.CL},
|
|
53
|
-
url = {https://arxiv.org/abs/2210.07316}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
% Primary URL: https://arxiv.org/abs/2510.17281
|
|
57
|
-
@misc{ai2026memorybench,
|
|
58
|
-
title = {MemoryBench: A Benchmark for Memory and Continual Learning in LLM Systems},
|
|
59
|
-
author = {Ai, Qingyao and Tang, Yichen and Wang, Changyue and Long, Jianming and Su, Weihang and Liu, Yiqun},
|
|
60
|
-
year = {2026},
|
|
61
|
-
eprint = {2510.17281},
|
|
62
|
-
archivePrefix = {arXiv},
|
|
63
|
-
primaryClass = {cs.LG},
|
|
64
|
-
url = {https://arxiv.org/abs/2510.17281}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
% Primary URL: https://arxiv.org/abs/2501.13956
|
|
68
|
-
@misc{rasmussen2025zep,
|
|
69
|
-
title = {Zep: A Temporal Knowledge Graph Architecture for Agent Memory},
|
|
70
|
-
author = {Rasmussen, Preston and Paliychuk, Pavlo and Beauvais, Travis and Ryan, Jack and Chalef, Daniel},
|
|
71
|
-
year = {2025},
|
|
72
|
-
eprint = {2501.13956},
|
|
73
|
-
archivePrefix = {arXiv},
|
|
74
|
-
primaryClass = {cs.CL},
|
|
75
|
-
url = {https://arxiv.org/abs/2501.13956}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
% Primary URL: https://github.com/getzep/graphiti
|
|
79
|
-
@misc{zep2026graphiti,
|
|
80
|
-
title = {Graphiti: Build Real-Time Knowledge Graphs for AI Agents},
|
|
81
|
-
author = {{Zep}},
|
|
82
|
-
year = {2026},
|
|
83
|
-
howpublished = {GitHub repository},
|
|
84
|
-
url = {https://github.com/getzep/graphiti},
|
|
85
|
-
note = {Accessed 2026-05-08}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
% Primary URL: https://arxiv.org/abs/2507.03724
|
|
89
|
-
@misc{li2025memos,
|
|
90
|
-
title = {MemOS: A Memory OS for AI System},
|
|
91
|
-
author = {Li, Zhiyu and Xi, Chenyang and Li, Chunyu and Chen, Ding and Chen, Boyu and Song, Shichao and Niu, Simin and Wang, Hanyu and Yang, Jiawei and Tang, Chen and Yu, Qingchen and Zhao, Jihao and Wang, Yezhaohui and Liu, Peng and Lin, Zehao and Wang, Pengyuan and Huo, Jiahao and Chen, Tianyi and Chen, Kai and Li, Kehang and Tao, Zhen and Lai, Huayi and Wu, Hao and Tang, Bo and Wang, Zhengren and Fan, Zhaoxin and Zhang, Ningyu and Zhang, Linfeng and Yan, Junchi and Yang, Mingchuan and Xu, Tong and Xu, Wei and Chen, Huajun and Wang, Haofen and Yang, Hongkang and Zhang, Wentao and Xu, Zhi-Qin John and Chen, Siheng and Xiong, Feiyu},
|
|
92
|
-
year = {2025},
|
|
93
|
-
eprint = {2507.03724},
|
|
94
|
-
archivePrefix = {arXiv},
|
|
95
|
-
primaryClass = {cs.CL},
|
|
96
|
-
url = {https://arxiv.org/abs/2507.03724}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
% Primary URL: https://langchain-ai.github.io/langmem/
|
|
100
|
-
@misc{langchain2026langmem,
|
|
101
|
-
title = {LangMem Documentation},
|
|
102
|
-
author = {{LangChain}},
|
|
103
|
-
year = {2026},
|
|
104
|
-
howpublished = {Official documentation},
|
|
105
|
-
url = {https://langchain-ai.github.io/langmem/},
|
|
106
|
-
note = {Accessed 2026-05-08}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
% Primary URL: https://github.com/langchain-ai/langmem
|
|
110
|
-
@misc{langchain2026langmemrepo,
|
|
111
|
-
title = {LangMem},
|
|
112
|
-
author = {{LangChain}},
|
|
113
|
-
year = {2026},
|
|
114
|
-
howpublished = {GitHub repository},
|
|
115
|
-
url = {https://github.com/langchain-ai/langmem},
|
|
116
|
-
note = {Accessed 2026-05-08}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
% Primary URL: https://supermemory.ai/docs
|
|
120
|
-
@misc{supermemory2026docs,
|
|
121
|
-
title = {supermemory Documentation: Memory API for the AI Era},
|
|
122
|
-
author = {{Supermemory}},
|
|
123
|
-
year = {2026},
|
|
124
|
-
howpublished = {Official documentation},
|
|
125
|
-
url = {https://supermemory.ai/docs},
|
|
126
|
-
note = {Accessed 2026-05-08}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
% Primary URL: https://github.com/supermemoryai/supermemory
|
|
130
|
-
@misc{supermemory2026repo,
|
|
131
|
-
title = {Supermemory: Memory Engine and App},
|
|
132
|
-
author = {{Supermemory}},
|
|
133
|
-
year = {2026},
|
|
134
|
-
howpublished = {GitHub repository},
|
|
135
|
-
url = {https://github.com/supermemoryai/supermemory},
|
|
136
|
-
note = {Accessed 2026-05-08}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
% Primary URL: https://arxiv.org/abs/2505.24478
|
|
140
|
-
@misc{markovic2025cognee,
|
|
141
|
-
title = {Optimizing the Interface Between Knowledge Graphs and LLMs for Complex Reasoning},
|
|
142
|
-
author = {Markovic, Vasilije and Obradovic, Lazar and Hajdu, Laszlo and Pavlovic, Jovan},
|
|
143
|
-
year = {2025},
|
|
144
|
-
eprint = {2505.24478},
|
|
145
|
-
archivePrefix = {arXiv},
|
|
146
|
-
primaryClass = {cs.AI},
|
|
147
|
-
url = {https://arxiv.org/abs/2505.24478}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
% Primary URL: https://github.com/topoteretes/cognee
|
|
151
|
-
@misc{cognee2026repo,
|
|
152
|
-
title = {Cognee: Knowledge Engine for AI Agent Memory},
|
|
153
|
-
author = {{Cognee}},
|
|
154
|
-
year = {2026},
|
|
155
|
-
howpublished = {GitHub repository},
|
|
156
|
-
url = {https://github.com/topoteretes/cognee},
|
|
157
|
-
note = {Accessed 2026-05-08}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
% Primary URL: https://modelcontextprotocol.io/specification/2025-11-25/schema
|
|
161
|
-
@misc{mcp2025schema,
|
|
162
|
-
title = {Model Context Protocol Schema Reference, Protocol Revision 2025-11-25},
|
|
163
|
-
author = {{Model Context Protocol}},
|
|
164
|
-
year = {2025},
|
|
165
|
-
howpublished = {Official specification},
|
|
166
|
-
url = {https://modelcontextprotocol.io/specification/2025-11-25/schema},
|
|
167
|
-
note = {Accessed 2026-05-08}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
% Primary URL: https://arxiv.org/abs/2510.15994
|
|
171
|
-
@misc{zhang2026mcpsecuritybench,
|
|
172
|
-
title = {MCP Security Bench (MSB): Benchmarking Attacks Against Model Context Protocol in LLM Agents},
|
|
173
|
-
author = {Zhang, Dongsen and Li, Zekun and Luo, Xu and Liu, Xuannan and Li, Peipei and Xu, Wenjun},
|
|
174
|
-
year = {2026},
|
|
175
|
-
eprint = {2510.15994},
|
|
176
|
-
archivePrefix = {arXiv},
|
|
177
|
-
primaryClass = {cs.CR},
|
|
178
|
-
url = {https://arxiv.org/abs/2510.15994}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
% Primary URL: https://arxiv.org/abs/2512.06556
|
|
182
|
-
@misc{jamshidi2025toolpoisoning,
|
|
183
|
-
title = {Securing the Model Context Protocol: Defending LLMs Against Tool Poisoning and Adversarial Attacks},
|
|
184
|
-
author = {Jamshidi, Saeid and Nafi, Kawser Wazed and Dakhel, Arghavan Moradi and Shahabi, Negar and Khomh, Foutse and Ezzati-Jivan, Naser},
|
|
185
|
-
year = {2025},
|
|
186
|
-
eprint = {2512.06556},
|
|
187
|
-
archivePrefix = {arXiv},
|
|
188
|
-
primaryClass = {cs.CR},
|
|
189
|
-
url = {https://arxiv.org/abs/2512.06556}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
% Primary URL: https://blog.modelcontextprotocol.io/posts/2026-03-16-tool-annotations/
|
|
193
|
-
@misc{mcp2026toolannotations,
|
|
194
|
-
title = {Tool Annotations as Risk Vocabulary: What Hints Can and Can't Do},
|
|
195
|
-
author = {Hungerford, Ola and Morrow, Sam and Chang, Luca},
|
|
196
|
-
year = {2026},
|
|
197
|
-
month = {March},
|
|
198
|
-
howpublished = {Model Context Protocol Blog},
|
|
199
|
-
url = {https://blog.modelcontextprotocol.io/posts/2026-03-16-tool-annotations/},
|
|
200
|
-
note = {Accessed 2026-05-08}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
% Primary URL: https://code.claude.com/docs/en/hooks
|
|
204
|
-
@misc{anthropic2026claudecodehooks,
|
|
205
|
-
title = {Claude Code Hooks Reference},
|
|
206
|
-
author = {{Anthropic}},
|
|
207
|
-
year = {2026},
|
|
208
|
-
howpublished = {Official documentation},
|
|
209
|
-
url = {https://code.claude.com/docs/en/hooks},
|
|
210
|
-
note = {Accessed 2026-05-08}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
% Primary URL: https://mem0.ai/blog/mem0-the-token-efficient-memory-algorithm
|
|
214
|
-
@misc{mem02026tokenefficient,
|
|
215
|
-
title = {Introducing The Token-Efficient Memory Algorithm},
|
|
216
|
-
author = {Yadav, Deshraj},
|
|
217
|
-
year = {2026},
|
|
218
|
-
month = {April},
|
|
219
|
-
howpublished = {Mem0 Blog},
|
|
220
|
-
url = {https://mem0.ai/blog/mem0-the-token-efficient-memory-algorithm},
|
|
221
|
-
note = {Accessed 2026-05-08}
|
|
222
|
-
}
|
|
@@ -1,440 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { spawnSync } from 'node:child_process';
|
|
4
|
-
import { createHash } from 'node:crypto';
|
|
5
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
|
-
import { dirname, resolve } from 'node:path';
|
|
7
|
-
import { fileURLToPath } from 'node:url';
|
|
8
|
-
import { verifyExternalGuardBenchEvidence } from '../benchmarks/verify-external-evidence.mjs';
|
|
9
|
-
import { verifyBrowserLaunchResults } from './verify-browser-launch-results.mjs';
|
|
10
|
-
import { verifyReleaseReadiness } from './verify-release-readiness.mjs';
|
|
11
|
-
|
|
12
|
-
const ROOT = process.cwd();
|
|
13
|
-
const DEFAULT_VERSION = '1.1.1';
|
|
14
|
-
const DEFAULT_OUT = '.tmp/release-artifacts/completion-audit.json';
|
|
15
|
-
const NPM_REGISTRY = 'https://registry.npmjs.org/';
|
|
16
|
-
|
|
17
|
-
function fromRoot(path) {
|
|
18
|
-
return resolve(ROOT, path);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function readText(path) {
|
|
22
|
-
return readFileSync(fromRoot(path), 'utf-8');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function readJson(path) {
|
|
26
|
-
return JSON.parse(readText(path).replace(/^\uFEFF/, ''));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function parseArgs(argv = process.argv.slice(2)) {
|
|
30
|
-
const args = {
|
|
31
|
-
version: DEFAULT_VERSION,
|
|
32
|
-
out: DEFAULT_OUT,
|
|
33
|
-
json: false,
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
for (let i = 0; i < argv.length; i++) {
|
|
37
|
-
const token = argv[i];
|
|
38
|
-
if ((token === '--version' || token === '--target-version') && argv[i + 1])
|
|
39
|
-
args.version = argv[++i];
|
|
40
|
-
else if (token === '--out' && argv[i + 1]) args.out = argv[++i];
|
|
41
|
-
else if (token === '--json') args.json = true;
|
|
42
|
-
else if (token === '--help' || token === '-h') args.help = true;
|
|
43
|
-
else throw new Error(`Unknown argument: ${token}`);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return args;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function usage() {
|
|
50
|
-
return `Usage: node scripts/audit-release-completion.mjs [options]
|
|
51
|
-
|
|
52
|
-
Options:
|
|
53
|
-
--version <version> Target release version. Default: ${DEFAULT_VERSION}.
|
|
54
|
-
--out <path> Output JSON report. Default: ${DEFAULT_OUT}.
|
|
55
|
-
--json Print the full machine-readable report.
|
|
56
|
-
`;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function commandFor(command, args) {
|
|
60
|
-
if (process.platform === 'win32' && command === 'npm') {
|
|
61
|
-
return { command: process.env.ComSpec ?? 'cmd.exe', args: ['/d', '/c', 'npm', ...args] };
|
|
62
|
-
}
|
|
63
|
-
return { command, args };
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function run(command, args, options = {}) {
|
|
67
|
-
const prepared = commandFor(command, args);
|
|
68
|
-
const result = spawnSync(prepared.command, prepared.args, {
|
|
69
|
-
cwd: ROOT,
|
|
70
|
-
encoding: 'utf-8',
|
|
71
|
-
timeout: options.timeout ?? 120_000,
|
|
72
|
-
env: process.env,
|
|
73
|
-
});
|
|
74
|
-
return {
|
|
75
|
-
command: [command, ...args].join(' '),
|
|
76
|
-
ok: result.status === 0,
|
|
77
|
-
status: result.status,
|
|
78
|
-
stdout: result.stdout?.trim() ?? '',
|
|
79
|
-
stderr: result.stderr?.trim() ?? '',
|
|
80
|
-
error: result.error?.message ?? null,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function sha256(path) {
|
|
85
|
-
return createHash('sha256')
|
|
86
|
-
.update(readFileSync(fromRoot(path)))
|
|
87
|
-
.digest('hex');
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function artifactEvidence(path) {
|
|
91
|
-
if (!existsSync(fromRoot(path))) return { path, exists: false };
|
|
92
|
-
return {
|
|
93
|
-
path,
|
|
94
|
-
exists: true,
|
|
95
|
-
sha256: sha256(path),
|
|
96
|
-
bytes: readFileSync(fromRoot(path)).byteLength,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function checklistItem(id, requirement, status, evidence = [], gaps = []) {
|
|
101
|
-
return { id, requirement, status, evidence, gaps };
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
function statusFromGaps(gaps, passed = true) {
|
|
105
|
-
if (!passed) return 'failed';
|
|
106
|
-
return gaps.length ? 'pending' : 'passed';
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function commandEvidence(result) {
|
|
110
|
-
const firstLine = `${result.stderr}\n${result.stdout}`
|
|
111
|
-
.split(/\r?\n/)
|
|
112
|
-
.map(line => line.trim())
|
|
113
|
-
.find(Boolean);
|
|
114
|
-
return `${result.command}: ${result.ok ? 'ok' : `exit ${result.status ?? 'unknown'}`}${firstLine ? ` (${firstLine})` : ''}`;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function extractRemoteRefs(output) {
|
|
118
|
-
const refs = new Map();
|
|
119
|
-
for (const line of output.split(/\r?\n/)) {
|
|
120
|
-
const [sha, ref] = line.trim().split(/\s+/);
|
|
121
|
-
if (sha && ref) refs.set(ref, sha);
|
|
122
|
-
}
|
|
123
|
-
return refs;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
function latestGitObjectReport() {
|
|
127
|
-
const path = '.tmp/release-git-object-report.json';
|
|
128
|
-
return existsSync(fromRoot(path)) ? readJson(path) : null;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
async function checkPypi(version) {
|
|
132
|
-
try {
|
|
133
|
-
const response = await fetch(`https://pypi.org/pypi/audrey-memory/${version}/json`);
|
|
134
|
-
return { ok: response.ok, status: response.status };
|
|
135
|
-
} catch (error) {
|
|
136
|
-
return { ok: false, status: 'network-error', error: error.message };
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
function localPathSweep(paths) {
|
|
141
|
-
const failures = [];
|
|
142
|
-
const localPathPattern = /(^|[^a-z])[A-Z]:\\|\\\\\?\\|file:\/\//i;
|
|
143
|
-
for (const path of paths) {
|
|
144
|
-
const absolute = fromRoot(path);
|
|
145
|
-
if (!existsSync(absolute)) continue;
|
|
146
|
-
const scan = run(
|
|
147
|
-
'rg',
|
|
148
|
-
['-n', '-F', '-e', 'B:\\Projects', '-e', 'C:\\Users', '-e', '\\\\?\\', '-e', 'file://', path],
|
|
149
|
-
{ timeout: 30_000 },
|
|
150
|
-
);
|
|
151
|
-
if (scan.status === 0) failures.push(`${path}: local path match found`);
|
|
152
|
-
if (scan.status !== 0 && scan.status !== 1)
|
|
153
|
-
failures.push(`${path}: local path sweep failed (${scan.stderr || scan.stdout})`);
|
|
154
|
-
if (scan.stdout && localPathPattern.test(scan.stdout))
|
|
155
|
-
failures.push(`${path}: local path sweep output contains local path`);
|
|
156
|
-
}
|
|
157
|
-
return failures;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
export async function auditReleaseCompletion(options = {}) {
|
|
161
|
-
const version = options.version ?? DEFAULT_VERSION;
|
|
162
|
-
const out = options.out ?? DEFAULT_OUT;
|
|
163
|
-
const pkg = readJson('package.json');
|
|
164
|
-
const readiness = await verifyReleaseReadiness({ targetVersion: version, allowPending: true });
|
|
165
|
-
const strictReadiness = await verifyReleaseReadiness({
|
|
166
|
-
targetVersion: version,
|
|
167
|
-
allowPending: false,
|
|
168
|
-
});
|
|
169
|
-
const browserResults = await verifyBrowserLaunchResults();
|
|
170
|
-
const externalEvidence = await verifyExternalGuardBenchEvidence({
|
|
171
|
-
allowPending: true,
|
|
172
|
-
write: false,
|
|
173
|
-
});
|
|
174
|
-
const paperVerify = run('node', ['scripts/verify-paper-artifacts.mjs'], { timeout: 180_000 });
|
|
175
|
-
const paperBundleVerify = run('node', ['scripts/verify-paper-submission-bundle.mjs'], {
|
|
176
|
-
timeout: 120_000,
|
|
177
|
-
});
|
|
178
|
-
const audit = run('npm', ['audit', '--omit=dev', '--audit-level=moderate'], { timeout: 120_000 });
|
|
179
|
-
const diffCheck = run('git', ['diff', '--check'], { timeout: 60_000 });
|
|
180
|
-
const bundleVerify = run(
|
|
181
|
-
'git',
|
|
182
|
-
['bundle', 'verify', `.tmp/release-artifacts/audrey-${version}.git.bundle`],
|
|
183
|
-
{ timeout: 60_000 },
|
|
184
|
-
);
|
|
185
|
-
const remoteRefsResult = run(
|
|
186
|
-
'git',
|
|
187
|
-
[
|
|
188
|
-
'-c',
|
|
189
|
-
'http.sslBackend=openssl',
|
|
190
|
-
'ls-remote',
|
|
191
|
-
'origin',
|
|
192
|
-
'refs/heads/master',
|
|
193
|
-
`refs/tags/v${version}`,
|
|
194
|
-
],
|
|
195
|
-
{ timeout: 60_000 },
|
|
196
|
-
);
|
|
197
|
-
const npmView = run('npm', ['view', `audrey@${version}`, 'version', '--registry', NPM_REGISTRY], {
|
|
198
|
-
timeout: 60_000,
|
|
199
|
-
});
|
|
200
|
-
const pypi = await checkPypi(version);
|
|
201
|
-
const gitObjects = latestGitObjectReport();
|
|
202
|
-
const remoteRefs = extractRemoteRefs(remoteRefsResult.stdout);
|
|
203
|
-
const artifactReport = existsSync(fromRoot('.tmp/release-artifacts/release-finalize-report.json'))
|
|
204
|
-
? readJson('.tmp/release-artifacts/release-finalize-report.json')
|
|
205
|
-
: null;
|
|
206
|
-
const localPathFailures = localPathSweep(['docs/paper/output', 'benchmarks/output']);
|
|
207
|
-
|
|
208
|
-
const checklist = [];
|
|
209
|
-
const versionGaps = [];
|
|
210
|
-
if (pkg.version !== version)
|
|
211
|
-
versionGaps.push(`package.json is ${pkg.version}, expected ${version}`);
|
|
212
|
-
if (!readiness.ok)
|
|
213
|
-
versionGaps.push(...readiness.failures.map(failure => `readiness failure: ${failure}`));
|
|
214
|
-
checklist.push(
|
|
215
|
-
checklistItem(
|
|
216
|
-
'code-release-local-readiness',
|
|
217
|
-
`Audrey codebase is cut to ${version} and local release gates are coherent.`,
|
|
218
|
-
statusFromGaps(versionGaps, readiness.ok),
|
|
219
|
-
[
|
|
220
|
-
`package.json version=${pkg.version}`,
|
|
221
|
-
`readiness ok=${readiness.ok}`,
|
|
222
|
-
`strict readiness ok=${strictReadiness.ok}`,
|
|
223
|
-
`pending blockers=${readiness.blockers.length}`,
|
|
224
|
-
],
|
|
225
|
-
versionGaps,
|
|
226
|
-
),
|
|
227
|
-
);
|
|
228
|
-
|
|
229
|
-
const sourceGaps = [];
|
|
230
|
-
const remoteMaster = remoteRefs.get('refs/heads/master');
|
|
231
|
-
const remoteTag =
|
|
232
|
-
remoteRefs.get(`refs/tags/v${version}`) ?? remoteRefs.get(`refs/tags/v${version}^{}`);
|
|
233
|
-
if (!bundleVerify.ok) sourceGaps.push('release Git bundle does not verify');
|
|
234
|
-
if (!gitObjects?.commit) sourceGaps.push('missing external release commit object report');
|
|
235
|
-
if (gitObjects?.commit && remoteMaster !== gitObjects.commit) {
|
|
236
|
-
sourceGaps.push(
|
|
237
|
-
`remote master is ${remoteMaster ?? 'missing'}, not release commit ${gitObjects.commit}`,
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
if (!remoteTag) sourceGaps.push(`remote tag v${version} is missing`);
|
|
241
|
-
checklist.push(
|
|
242
|
-
checklistItem(
|
|
243
|
-
'source-control-release-state',
|
|
244
|
-
`Final release commit and v${version} tag are present on the public repository.`,
|
|
245
|
-
statusFromGaps(sourceGaps, bundleVerify.ok && remoteRefsResult.ok),
|
|
246
|
-
[
|
|
247
|
-
commandEvidence(bundleVerify),
|
|
248
|
-
`external commit=${gitObjects?.commit ?? 'missing'}`,
|
|
249
|
-
`external tag object=${gitObjects?.tag ?? 'missing'}`,
|
|
250
|
-
`remote master=${remoteMaster ?? 'missing'}`,
|
|
251
|
-
`remote tag=${remoteTag ?? 'missing'}`,
|
|
252
|
-
],
|
|
253
|
-
sourceGaps,
|
|
254
|
-
),
|
|
255
|
-
);
|
|
256
|
-
|
|
257
|
-
const npmArtifact = artifactEvidence(`.tmp/release-artifacts/audrey-${version}.tgz`);
|
|
258
|
-
const npmGaps = [];
|
|
259
|
-
if (!npmArtifact.exists) npmGaps.push('npm tarball missing');
|
|
260
|
-
if (!npmView.ok)
|
|
261
|
-
npmGaps.push(`audrey@${version} is not published on npm or npm registry check failed`);
|
|
262
|
-
checklist.push(
|
|
263
|
-
checklistItem(
|
|
264
|
-
'npm-package-publication',
|
|
265
|
-
`audrey@${version} npm package is packaged and published.`,
|
|
266
|
-
statusFromGaps(npmGaps),
|
|
267
|
-
[JSON.stringify(npmArtifact), commandEvidence(npmView)],
|
|
268
|
-
npmGaps,
|
|
269
|
-
),
|
|
270
|
-
);
|
|
271
|
-
|
|
272
|
-
const wheel = artifactEvidence(`python/dist/audrey_memory-${version}-py3-none-any.whl`);
|
|
273
|
-
const sdist = artifactEvidence(`python/dist/audrey_memory-${version}.tar.gz`);
|
|
274
|
-
const pypiGaps = [];
|
|
275
|
-
if (!wheel.exists) pypiGaps.push('Python wheel missing');
|
|
276
|
-
if (!sdist.exists) pypiGaps.push('Python sdist missing');
|
|
277
|
-
if (!pypi.ok)
|
|
278
|
-
pypiGaps.push(`audrey-memory ${version} is not published on PyPI (status=${pypi.status})`);
|
|
279
|
-
checklist.push(
|
|
280
|
-
checklistItem(
|
|
281
|
-
'python-package-publication',
|
|
282
|
-
`audrey-memory ${version} Python package is built and published.`,
|
|
283
|
-
statusFromGaps(pypiGaps),
|
|
284
|
-
[JSON.stringify(wheel), JSON.stringify(sdist), `PyPI status=${pypi.status}`],
|
|
285
|
-
pypiGaps,
|
|
286
|
-
),
|
|
287
|
-
);
|
|
288
|
-
|
|
289
|
-
const paperGaps = [];
|
|
290
|
-
if (!paperVerify.ok) paperGaps.push('paper artifact verifier failed');
|
|
291
|
-
if (!paperBundleVerify.ok) paperGaps.push('paper submission bundle verifier failed');
|
|
292
|
-
checklist.push(
|
|
293
|
-
checklistItem(
|
|
294
|
-
'paper-local-quality',
|
|
295
|
-
'Research paper, claim register, bibliography, evidence ledger, arXiv source, and submission bundle verify locally.',
|
|
296
|
-
statusFromGaps(paperGaps, paperVerify.ok && paperBundleVerify.ok),
|
|
297
|
-
[commandEvidence(paperVerify), commandEvidence(paperBundleVerify)],
|
|
298
|
-
paperGaps,
|
|
299
|
-
),
|
|
300
|
-
);
|
|
301
|
-
|
|
302
|
-
const publicationGaps = [];
|
|
303
|
-
if (!browserResults.ok) publicationGaps.push(...browserResults.failures);
|
|
304
|
-
if (!browserResults.ready) publicationGaps.push(...browserResults.blockers);
|
|
305
|
-
checklist.push(
|
|
306
|
-
checklistItem(
|
|
307
|
-
'paper-publication',
|
|
308
|
-
'Paper is publicly submitted/published across the launch targets recorded by the browser launch ledger.',
|
|
309
|
-
statusFromGaps(publicationGaps, browserResults.ok),
|
|
310
|
-
[
|
|
311
|
-
`browser results ok=${browserResults.ok}`,
|
|
312
|
-
`browser results ready=${browserResults.ready}`,
|
|
313
|
-
`submitted=${browserResults.targets.filter(target => target.status === 'submitted').length}/${browserResults.targets.length}`,
|
|
314
|
-
],
|
|
315
|
-
publicationGaps,
|
|
316
|
-
),
|
|
317
|
-
);
|
|
318
|
-
|
|
319
|
-
const guardGaps = [];
|
|
320
|
-
if (!externalEvidence.ok) guardGaps.push(...externalEvidence.failures);
|
|
321
|
-
for (const adapter of externalEvidence.adapters.filter(
|
|
322
|
-
adapter => adapter.status !== 'verified',
|
|
323
|
-
)) {
|
|
324
|
-
guardGaps.push(
|
|
325
|
-
`${adapter.id}: ${adapter.missingEnv?.length ? `missing ${adapter.missingEnv.join(', ')}` : adapter.evidenceKind}`,
|
|
326
|
-
);
|
|
327
|
-
}
|
|
328
|
-
checklist.push(
|
|
329
|
-
checklistItem(
|
|
330
|
-
'external-guardbench-evidence',
|
|
331
|
-
'External GuardBench adapters are live-verified, not only dry-run verified.',
|
|
332
|
-
statusFromGaps(guardGaps, externalEvidence.ok),
|
|
333
|
-
externalEvidence.adapters.map(
|
|
334
|
-
adapter => `${adapter.id}: ${adapter.status}/${adapter.evidenceKind}`,
|
|
335
|
-
),
|
|
336
|
-
guardGaps,
|
|
337
|
-
),
|
|
338
|
-
);
|
|
339
|
-
|
|
340
|
-
const safetyGaps = [];
|
|
341
|
-
if (!audit.ok) safetyGaps.push('production dependency audit failed');
|
|
342
|
-
if (!diffCheck.ok) safetyGaps.push('git diff --check failed');
|
|
343
|
-
safetyGaps.push(...localPathFailures);
|
|
344
|
-
checklist.push(
|
|
345
|
-
checklistItem(
|
|
346
|
-
'release-safety-hygiene',
|
|
347
|
-
'Release artifacts pass dependency audit, whitespace checks, and local-path leak sweeps.',
|
|
348
|
-
statusFromGaps(safetyGaps, audit.ok && diffCheck.ok),
|
|
349
|
-
[
|
|
350
|
-
commandEvidence(audit),
|
|
351
|
-
commandEvidence(diffCheck),
|
|
352
|
-
`local path sweep failures=${localPathFailures.length}`,
|
|
353
|
-
],
|
|
354
|
-
safetyGaps,
|
|
355
|
-
),
|
|
356
|
-
);
|
|
357
|
-
|
|
358
|
-
const finalizerGaps = [];
|
|
359
|
-
if (!artifactReport) finalizerGaps.push('missing release-finalize-report.json');
|
|
360
|
-
checklist.push(
|
|
361
|
-
checklistItem(
|
|
362
|
-
'release-finalizer-artifacts',
|
|
363
|
-
'Finalization report records packaged npm/Python artifacts and source-control handoff artifacts.',
|
|
364
|
-
statusFromGaps(finalizerGaps),
|
|
365
|
-
artifactReport?.artifacts?.map(artifact => `${artifact.path} sha256=${artifact.sha256}`) ??
|
|
366
|
-
[],
|
|
367
|
-
finalizerGaps,
|
|
368
|
-
),
|
|
369
|
-
);
|
|
370
|
-
|
|
371
|
-
const complete = checklist.every(item => item.status === 'passed');
|
|
372
|
-
const report = {
|
|
373
|
-
schemaVersion: '1.0.0',
|
|
374
|
-
suite: 'Audrey release completion audit',
|
|
375
|
-
generatedAt: new Date().toISOString(),
|
|
376
|
-
objective: `audrey ${version} release + published audrey research paper`,
|
|
377
|
-
successCriteria: [
|
|
378
|
-
`Audrey code is cut to ${version} with local gates passing.`,
|
|
379
|
-
`Final release commit and v${version} tag are on the public repository.`,
|
|
380
|
-
'npm and Python packages are packaged and publicly published.',
|
|
381
|
-
'Paper artifacts verify locally and compile for arXiv.',
|
|
382
|
-
'Paper publication targets are publicly submitted and operator verified.',
|
|
383
|
-
'GuardBench local and external evidence is verified without leaked secrets or local paths.',
|
|
384
|
-
],
|
|
385
|
-
complete,
|
|
386
|
-
checklist,
|
|
387
|
-
readiness: {
|
|
388
|
-
ok: readiness.ok,
|
|
389
|
-
ready: readiness.ready,
|
|
390
|
-
blockers: readiness.blockers,
|
|
391
|
-
failures: readiness.failures,
|
|
392
|
-
},
|
|
393
|
-
strictReadiness: {
|
|
394
|
-
ok: strictReadiness.ok,
|
|
395
|
-
ready: strictReadiness.ready,
|
|
396
|
-
blockers: strictReadiness.blockers,
|
|
397
|
-
failures: strictReadiness.failures,
|
|
398
|
-
},
|
|
399
|
-
};
|
|
400
|
-
|
|
401
|
-
mkdirSync(dirname(fromRoot(out)), { recursive: true });
|
|
402
|
-
writeFileSync(fromRoot(out), `${JSON.stringify(report, null, 2)}\n`, 'utf-8');
|
|
403
|
-
return report;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
async function main() {
|
|
407
|
-
const args = parseArgs();
|
|
408
|
-
if (args.help) {
|
|
409
|
-
console.log(usage());
|
|
410
|
-
return;
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
const report = await auditReleaseCompletion(args);
|
|
414
|
-
if (args.json) {
|
|
415
|
-
console.log(JSON.stringify(report, null, 2));
|
|
416
|
-
} else {
|
|
417
|
-
console.log(`Audrey release completion audit: complete=${report.complete}`);
|
|
418
|
-
for (const item of report.checklist) {
|
|
419
|
-
console.log(
|
|
420
|
-
`- ${item.id}: ${item.status}${item.gaps.length ? ` (${item.gaps.length} gap(s))` : ''}`,
|
|
421
|
-
);
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
if (!report.complete) process.exit(1);
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
function isDirectRun() {
|
|
429
|
-
return (
|
|
430
|
-
Boolean(process.argv[1]) &&
|
|
431
|
-
resolve(process.argv[1]).toLowerCase() === fileURLToPath(import.meta.url).toLowerCase()
|
|
432
|
-
);
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
if (isDirectRun()) {
|
|
436
|
-
main().catch(error => {
|
|
437
|
-
console.error(error.stack ?? error.message);
|
|
438
|
-
process.exit(1);
|
|
439
|
-
});
|
|
440
|
-
}
|