audrey 1.0.2 → 1.1.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 +57 -0
- package/README.md +303 -429
- package/SECURITY.md +3 -3
- package/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +3 -3
- package/benchmarks/output/external/guardbench-external-dry-run.json +1 -1
- package/benchmarks/output/external/guardbench-external-evidence.json +1 -1
- package/benchmarks/output/guardbench-conformance-card.json +11 -11
- package/benchmarks/output/guardbench-raw.json +105 -104
- package/benchmarks/output/guardbench-summary.json +169 -167
- package/benchmarks/output/leaderboard/guardbench-leaderboard.json +5 -5
- package/benchmarks/output/leaderboard/guardbench-leaderboard.md +2 -2
- package/benchmarks/output/submission-bundle/guardbench-conformance-card.json +11 -11
- package/benchmarks/output/submission-bundle/guardbench-raw.json +105 -104
- package/benchmarks/output/submission-bundle/guardbench-summary.json +169 -167
- package/benchmarks/output/submission-bundle/submission-manifest.json +11 -11
- package/benchmarks/output/submission-bundle/validation-report.json +1 -1
- package/benchmarks/output/summary.json +58 -58
- package/benchmarks/public-paths.mjs +14 -1
- package/dist/mcp-server/config.d.ts +4 -1
- package/dist/mcp-server/config.d.ts.map +1 -1
- package/dist/mcp-server/config.js +47 -7
- package/dist/mcp-server/config.js.map +1 -1
- package/dist/mcp-server/hooks.d.ts +41 -0
- package/dist/mcp-server/hooks.d.ts.map +1 -0
- package/dist/mcp-server/hooks.js +313 -0
- package/dist/mcp-server/hooks.js.map +1 -0
- package/dist/mcp-server/index.d.ts +8 -354
- package/dist/mcp-server/index.d.ts.map +1 -1
- package/dist/mcp-server/index.js +593 -565
- package/dist/mcp-server/index.js.map +1 -1
- package/dist/mcp-server/tool-schemas.d.ts +341 -0
- package/dist/mcp-server/tool-schemas.d.ts.map +1 -0
- package/dist/mcp-server/tool-schemas.js +248 -0
- package/dist/mcp-server/tool-schemas.js.map +1 -0
- package/dist/mcp-server/tool-validation.d.ts +17 -0
- package/dist/mcp-server/tool-validation.d.ts.map +1 -0
- package/dist/mcp-server/tool-validation.js +41 -0
- package/dist/mcp-server/tool-validation.js.map +1 -0
- package/dist/src/action-key.d.ts +1 -0
- package/dist/src/action-key.d.ts.map +1 -1
- package/dist/src/action-key.js +11 -13
- package/dist/src/action-key.js.map +1 -1
- package/dist/src/affect.d.ts +1 -0
- package/dist/src/affect.d.ts.map +1 -1
- package/dist/src/affect.js +9 -4
- package/dist/src/affect.js.map +1 -1
- package/dist/src/audrey.d.ts +11 -3
- package/dist/src/audrey.d.ts.map +1 -1
- package/dist/src/audrey.js +59 -25
- package/dist/src/audrey.js.map +1 -1
- package/dist/src/autopilot.d.ts +32 -0
- package/dist/src/autopilot.d.ts.map +1 -0
- package/dist/src/autopilot.js +997 -0
- package/dist/src/autopilot.js.map +1 -0
- package/dist/src/capsule.d.ts +2 -0
- package/dist/src/capsule.d.ts.map +1 -1
- package/dist/src/capsule.js +27 -12
- package/dist/src/capsule.js.map +1 -1
- package/dist/src/consolidate.d.ts +1 -1
- package/dist/src/consolidate.d.ts.map +1 -1
- package/dist/src/consolidate.js +14 -8
- package/dist/src/consolidate.js.map +1 -1
- package/dist/src/controller.d.ts +2 -0
- package/dist/src/controller.d.ts.map +1 -1
- package/dist/src/controller.js +18 -11
- package/dist/src/controller.js.map +1 -1
- package/dist/src/db.d.ts.map +1 -1
- package/dist/src/db.js +121 -33
- package/dist/src/db.js.map +1 -1
- package/dist/src/decay.d.ts +2 -1
- package/dist/src/decay.d.ts.map +1 -1
- package/dist/src/decay.js +14 -10
- package/dist/src/decay.js.map +1 -1
- package/dist/src/embedding.d.ts.map +1 -1
- package/dist/src/embedding.js.map +1 -1
- package/dist/src/encode.d.ts.map +1 -1
- package/dist/src/encode.js +4 -2
- package/dist/src/encode.js.map +1 -1
- package/dist/src/events.d.ts +2 -0
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +15 -1
- package/dist/src/events.js.map +1 -1
- package/dist/src/feedback.d.ts +1 -0
- package/dist/src/feedback.d.ts.map +1 -1
- package/dist/src/feedback.js +13 -9
- package/dist/src/feedback.js.map +1 -1
- package/dist/src/forget.d.ts.map +1 -1
- package/dist/src/forget.js.map +1 -1
- package/dist/src/impact.d.ts +1 -1
- package/dist/src/impact.d.ts.map +1 -1
- package/dist/src/impact.js +40 -30
- package/dist/src/impact.js.map +1 -1
- package/dist/src/import.d.ts.map +1 -1
- package/dist/src/import.js +13 -9
- package/dist/src/import.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/interference.d.ts +2 -1
- package/dist/src/interference.d.ts.map +1 -1
- package/dist/src/interference.js +44 -17
- package/dist/src/interference.js.map +1 -1
- package/dist/src/llm.d.ts.map +1 -1
- package/dist/src/llm.js +12 -1
- package/dist/src/llm.js.map +1 -1
- package/dist/src/migrate.d.ts.map +1 -1
- package/dist/src/migrate.js +9 -9
- package/dist/src/migrate.js.map +1 -1
- package/dist/src/preflight.d.ts +2 -0
- package/dist/src/preflight.d.ts.map +1 -1
- package/dist/src/preflight.js +29 -12
- package/dist/src/preflight.js.map +1 -1
- package/dist/src/promote.d.ts +1 -0
- package/dist/src/promote.d.ts.map +1 -1
- package/dist/src/promote.js +12 -8
- package/dist/src/promote.js.map +1 -1
- package/dist/src/recall.d.ts.map +1 -1
- package/dist/src/recall.js +152 -100
- package/dist/src/recall.js.map +1 -1
- package/dist/src/reflexes.d.ts.map +1 -1
- package/dist/src/reflexes.js.map +1 -1
- package/dist/src/rollback.d.ts.map +1 -1
- package/dist/src/rollback.js.map +1 -1
- package/dist/src/routes.d.ts +1 -0
- package/dist/src/routes.d.ts.map +1 -1
- package/dist/src/routes.js +73 -20
- package/dist/src/routes.js.map +1 -1
- package/dist/src/server.d.ts +1 -0
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +2 -2
- package/dist/src/server.js.map +1 -1
- package/dist/src/types.d.ts +1 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +2 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +18 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/validate.d.ts +1 -0
- package/dist/src/validate.d.ts.map +1 -1
- package/dist/src/validate.js +19 -10
- package/dist/src/validate.js.map +1 -1
- package/docs/AUDREY_PAPER_OUTLINE.md +6 -3
- package/docs/PRODUCTION_BACKLOG.md +47 -30
- package/docs/paper/06-implementation.md +5 -3
- package/docs/paper/07-evaluation.md +5 -5
- package/docs/paper/08-discussion-limitations.md +1 -1
- package/docs/paper/audrey-paper-v1.md +11 -9
- package/docs/paper/evidence-ledger.md +8 -8
- package/docs/paper/output/arxiv/arxiv-manifest.json +4 -4
- package/docs/paper/output/arxiv/main.tex +11 -9
- package/docs/paper/output/arxiv-compile-report.json +3 -3
- package/docs/paper/output/submission-bundle/README.md +303 -429
- package/docs/paper/output/submission-bundle/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +3 -3
- package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-dry-run.json +1 -1
- package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-evidence.json +1 -1
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-conformance-card.json +11 -11
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-raw.json +105 -104
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-summary.json +169 -167
- package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.json +5 -5
- package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.md +2 -2
- package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/submission-manifest.json +11 -11
- package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/validation-report.json +1 -1
- package/docs/paper/output/submission-bundle/benchmarks/output/summary.json +45 -45
- package/docs/paper/output/submission-bundle/docs/AUDREY_PAPER_OUTLINE.md +6 -3
- package/docs/paper/output/submission-bundle/docs/paper/06-implementation.md +5 -3
- package/docs/paper/output/submission-bundle/docs/paper/07-evaluation.md +5 -5
- package/docs/paper/output/submission-bundle/docs/paper/08-discussion-limitations.md +1 -1
- package/docs/paper/output/submission-bundle/docs/paper/audrey-paper-v1.md +11 -9
- package/docs/paper/output/submission-bundle/docs/paper/evidence-ledger.md +8 -8
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/arxiv-manifest.json +4 -4
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/main.tex +11 -9
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv-compile-report.json +3 -3
- package/docs/paper/output/submission-bundle/package.json +5 -2
- package/docs/paper/output/submission-bundle/paper-submission-manifest.json +41 -41
- package/package.json +5 -2
- package/scripts/audit-release-completion.mjs +8 -8
- package/scripts/finalize-release.mjs +1 -1
- package/scripts/prepare-release-cut.mjs +1 -1
- package/scripts/publish-release-bundle.mjs +8 -4
- package/scripts/publish-release-github-api.mjs +1 -1
- package/scripts/sync-paper-artifacts.mjs +4 -5
- package/scripts/verify-release-readiness.mjs +1 -1
|
@@ -841,11 +841,13 @@ The JSON walker redacts sensitive keys and values recursively. If a value sits u
|
|
|
841
841
|
|
|
842
842
|
### MCP, CLI, and REST Surfaces
|
|
843
843
|
|
|
844
|
-
The MCP server registers
|
|
844
|
+
The MCP server registers 22 tools: `memory_dream`, `memory_encode`, `memory_recall`, `memory_consolidate`, `memory_introspect`, `memory_resolve_truth`, `memory_export`, `memory_import`, `memory_forget`, `memory_validate`, `memory_decay`, `memory_status`, `memory_reflect`, `memory_greeting`, `memory_observe_tool`, `memory_recent_failures`, `memory_capsule`, `memory_preflight`, `memory_guard_before`, `memory_guard_after`, `memory_reflexes`, and `memory_promote` (Ledger: E32). The Guard-relevant MCP surface is `memory_observe_tool`, `memory_recent_failures`, `memory_capsule`, `memory_preflight`, `memory_guard_before`, `memory_guard_after`, and `memory_reflexes`, with `memory_validate` supporting closed-loop validation and REST or CLI impact reporting supporting aggregate impact inspection (Ledger: E16-E19, E32-E34).
|
|
845
845
|
|
|
846
|
-
The CLI recognizes `install`, `uninstall`, `mcp-config`, `hook-config`, `demo`, `guard`, `reembed`, `dream`, `greeting`, `reflect`, `serve`, `status`, `doctor`, `observe-tool`, `promote`, and `impact` (Ledger: E34). The `guard` subcommand
|
|
846
|
+
The CLI recognizes `install`, `uninstall`, `mcp-config`, `hook-config`, `demo`, `guard`, `guard-after`, `hook`, `reembed`, `dream`, `greeting`, `reflect`, `serve`, `status`, `doctor`, `observe-tool`, `promote`, and `impact` (Ledger: E34). The `guard` subcommand remains available for explicit checks, while the host-facing `hook` subcommand normalizes current Claude Code and Codex lifecycle payloads. `audrey install --host auto` discovers installed supported CLIs, registers the MCP server, and applies host-specific lifecycle hooks from a stable Node and Audrey entrypoint. Generated settings preserve unrelated hooks, replace older Audrey-owned handlers, write backups before changing non-empty files, and are idempotent. Claude Code supports local, project, and user hook scopes; Codex supports project and user scopes and requires one-time review of non-managed hooks through `/hooks` (Ledger: E26, E43).
|
|
847
847
|
|
|
848
|
-
The
|
|
848
|
+
The generated lifecycle covers session start, user prompt submission, guarded pre-tool use, correlated post-tool outcomes, post-compaction, and turn stop. Session and prompt hooks inject bounded, agent-scoped memory context. Pre-tool hooks create Guard receipts, and post-tool hooks close the matching receipt by `session_id + tool_use_id`; sanitized failures may become durable memories. Claude Code exposes an explicit failure event. Current Codex Bash hooks can omit exit status, so Audrey records an opaque result as `unknown` unless structured fields or response text establish success or failure. Stop and post-compaction hooks run consolidation only when due. Audrey fails open on hook-runtime errors by default, with explicit fail-closed operation available through `AUDREY_HOOK_FAIL_CLOSED=1`. This is lifecycle integration, not a complete enforcement boundary: Audrey can inspect only the events and tool paths emitted by each host, and the short-lived hook process still pays provider startup cost instead of using a persistent daemon (Ledger: E43).
|
|
849
|
+
|
|
850
|
+
The REST sidecar exposes routes for health, encode, recall, validate, mark-used, capsule, preflight, Guard before/after receipts, reflexes, consolidate, dream, introspect, impact, resolve-truth, export, import, forget, decay, status, reflect, and greeting (Ledger: E33). The sidecar defaults to loopback binding, refuses non-loopback binds without `AUDREY_API_KEY` unless `AUDREY_ALLOW_NO_AUTH=1`, and emits an explicit warning when that no-auth override is used (Ledger: E35). Export, import, and forget are disabled unless `AUDREY_ENABLE_ADMIN_TOOLS=1` (Ledger: E33).
|
|
849
851
|
|
|
850
852
|
### Configuration
|
|
851
853
|
|
|
@@ -895,13 +897,13 @@ These numbers measure Audrey's local call path under an in-process mock embeddin
|
|
|
895
897
|
|
|
896
898
|
### Behavioral Regression Result
|
|
897
899
|
|
|
898
|
-
The current `benchmarks/output/summary.json` was generated on 2026-
|
|
900
|
+
The current `benchmarks/output/summary.json` was generated on 2026-07-10T15:00:37.705Z with command `node benchmarks/run.js --provider mock --dimensions 64` (Ledger: E24). It reports:
|
|
899
901
|
|
|
900
902
|
| System | Score Percent | Pass Rate | Average Duration Ms |
|
|
901
903
|
|---|---:|---:|---:|
|
|
902
|
-
| Audrey | 100 | 100 |
|
|
903
|
-
| Vector Only | 41.66666666666667 | 25 | 0.
|
|
904
|
-
| Keyword + Recency | 41.66666666666667 | 25 | 0.
|
|
904
|
+
| Audrey | 100 | 100 | 16.25 |
|
|
905
|
+
| Vector Only | 41.66666666666667 | 25 | 0.25 |
|
|
906
|
+
| Keyword + Recency | 41.66666666666667 | 25 | 0.5833333333333334 |
|
|
905
907
|
| Recent Window | 37.5 | 25 | 0 |
|
|
906
908
|
|
|
907
909
|
This output is a regression-gate result. The baselines are toy local baselines used to catch retrieval and lifecycle regressions in the Audrey codebase. They are not external systems, not tuned competitor implementations, and not GuardBench baselines (Ledger: E23-E24). The current suite covers retrieval and operation families such as information extraction, knowledge updates, multi-session reasoning, conflict resolution, procedural learning, privacy boundary, overwrite, delete-and-abstain, semantic merge, and procedural merge (Ledger: E23-E24).
|
|
@@ -924,7 +926,7 @@ It reports local adapters only, not external-system comparisons (Ledger: E46):
|
|
|
924
926
|
| Evidence recall | 100% |
|
|
925
927
|
| Redaction leaks | 0 |
|
|
926
928
|
| Recall-degradation detection | 100% |
|
|
927
|
-
| Guard latency p50 / p95 |
|
|
929
|
+
| Guard latency p50 / p95 | 3.501 ms / 20.658 ms |
|
|
928
930
|
| Published artifact raw-secret leaks | 0 |
|
|
929
931
|
| Audrey Guard decision accuracy | 100% |
|
|
930
932
|
| No-memory decision accuracy | 10% |
|
|
@@ -1071,7 +1073,7 @@ Reflex generation is deterministic, not adaptive. Reflexes are mapped from prefl
|
|
|
1071
1073
|
|
|
1072
1074
|
### Open Problems
|
|
1073
1075
|
|
|
1074
|
-
Host hook
|
|
1076
|
+
Host hook coverage and process model. Audrey 1.1 generates, applies, and removes lifecycle hooks for current Claude Code and Codex CLIs; the shared adapter injects bounded context, runs Guard before selected side-effectful tools, correlates post-tool outcomes, and performs due-only maintenance (Ledger: E43). This closes the configuration gap, not the enforcement gap. Hook execution still depends on host trust and on the host emitting a supported event for the relevant tool path. Alternate or incompletely intercepted host tool paths remain outside Audrey's view. Each hook also starts a short-lived Audrey process, so the default local embedding provider can pay cold-start cost repeatedly. Production follow-up is a persistent local runtime, measured compatibility gates against supported host versions, and organization-managed deployment that binds tenant identity and enforcement policy outside a caller-controlled routing header. Claude Code's documented hook surface remains an example of the underlying host boundary [@anthropic2026claudecodehooks].
|
|
1075
1077
|
|
|
1076
1078
|
Validation lineage is implemented but not yet policy-adaptive. Audrey can bind validation events to the exact preflight event, evidence IDs, and action key that produced a decision, and rejects mismatched evidence claims (Ledger: E44). The next step is using that closed-loop signal to tune warning priority and recommendation wording without giving the model direct control over policy.
|
|
1077
1079
|
|
|
@@ -21,7 +21,7 @@ Every implementation claim in the paper should point to one or more ledger IDs i
|
|
|
21
21
|
| E15 - Recall degradation is represented as `RecallError[]`, propagated through `partialFailure` and `errors`, and exposed in memory status as `recall_degraded` and `last_recall_errors`. | Recall degradation types and status | src/types.ts:129-137,568-570; src/recall.ts:741-753; src/audrey.ts:844-846 | Yes, 2026-05-08 |
|
|
22
22
|
| E16 - Closed-loop validation accepts `used`, `helpful`, and `wrong` outcomes and updates salience, usage count, retrieval count, challenge count, and last-use/reinforcement timestamps by memory type. | Feedback application | src/feedback.ts:3-18,32-45,91-163 | Yes, 2026-05-08 |
|
|
23
23
|
| E17 - Impact reporting computes memory totals, all-time and windowed validation counts, challenge counts, per-outcome validation events, top-used memories, weakest memories, and recent activity. | Impact report | src/impact.ts:12-35,100-158 | Yes, 2026-05-08 |
|
|
24
|
-
| E18 - The MCP surface registers
|
|
24
|
+
| E18 - The MCP surface registers 22 tools; Guard-relevant tools include `memory_observe_tool`, `memory_capsule`, `memory_preflight`, `memory_guard_before`, `memory_guard_after`, and `memory_reflexes`. | MCP tool surface | mcp-server/index.ts | Yes, `rg "server\.tool\(" mcp-server/index.ts` count = 22 on 2026-07-10 |
|
|
25
25
|
| E19 - Audrey exposes `memory_validate`, `memory_dream`, `memory_observe_tool`, `memory_capsule`, `memory_preflight`, and `memory_reflexes` in the server help and registers each as an MCP tool. | MCP guard and lifecycle tools | mcp-server/index.ts:639-654,1456,1779,1835,1905,1944,1982 | Yes, 2026-05-08 |
|
|
26
26
|
| E20 - `benchmarks/snapshots/perf-0.22.2.json` is the canonical performance snapshot generated on 2026-05-01 from git SHA `e2e821b`, using mock in-process 64-dimensional embeddings, hybrid recall limit 5, corpus sizes 100/1000/5000, and 50 recall runs per size on Node 25.5.0 with a 24-core Ryzen 9 7900X3D and 62.9 GB RAM. | Performance snapshot methodology and provenance | benchmarks/snapshots/perf-0.22.2.json:2-16,19-26 | Yes, 2026-05-08 |
|
|
27
27
|
| E21 - The canonical perf snapshot reports hybrid recall p95 of 1.82 ms at 100 memories, 2.364 ms at 1,000 memories, and 3.417 ms at 5,000 memories under the mock-provider methodology. | Performance snapshot recall p95 | benchmarks/snapshots/perf-0.22.2.json:42-44,73-75,104-106 | Yes, 2026-05-08 |
|
|
@@ -35,21 +35,21 @@ Every implementation claim in the paper should point to one or more ledger IDs i
|
|
|
35
35
|
| E29 - Audrey stores episodic, semantic, and procedural memories alongside causal links, contradictions, consolidation runs and metrics, configuration, and tool/memory events in SQLite tables with indexes on created time, source, state, session, tool, and outcome. | Storage schema | src/db.ts:8-158 | Yes, 2026-05-08 |
|
|
36
36
|
| E30 - Audrey creates sqlite-vec virtual tables for episodic, semantic, and procedural embeddings, creates FTS5 virtual tables for the same memory classes, backfills FTS tables, and manages schema evolution through in-code migrations. | Vector, FTS, and migrations | src/db.ts:193-208,318-370; src/fts.ts:15-21,143-159 | Yes, 2026-05-08 |
|
|
37
37
|
| E31 - Audrey's runtime stack is Node 20+, TypeScript, Hono, MCP stdio, better-sqlite3, sqlite-vec, transformers.js local embeddings, and optional OpenAI or Gemini embedding providers. The local provider uses a 384-dimensional `Xenova/all-MiniLM-L6-v2` model; mock, OpenAI, and Gemini default to 64, 1536, and 3072 dimensions respectively. | Runtime stack and embedding providers | package.json:105-115,122; mcp-server/index.ts:1605,2061-2064; mcp-server/config.ts:29-79; src/embedding.ts:39-46,122-180,207-218,288-299 | Yes, 2026-05-08 |
|
|
38
|
-
| E32 - The MCP server registers exactly
|
|
39
|
-
| E33 - The REST sidecar exposes health, encode, recall, validate, mark-used, capsule, preflight,
|
|
40
|
-
| E34 - The CLI recognizes `install`, `uninstall`, `mcp-config`, `hook-config`, `demo`, `guard`, `reembed`, `dream`, `greeting`, `reflect`, `serve`, `status`, `doctor`, `observe-tool`, `promote`, and `impact`. | CLI subcommands | mcp-server/index.ts; tests/mcp-server.test.js | Yes, 2026-
|
|
38
|
+
| E32 - The MCP server registers exactly 22 tools by name: `memory_dream`, `memory_encode`, `memory_recall`, `memory_consolidate`, `memory_introspect`, `memory_resolve_truth`, `memory_export`, `memory_import`, `memory_forget`, `memory_validate`, `memory_decay`, `memory_status`, `memory_reflect`, `memory_greeting`, `memory_observe_tool`, `memory_recent_failures`, `memory_capsule`, `memory_preflight`, `memory_guard_before`, `memory_guard_after`, `memory_reflexes`, and `memory_promote`. | MCP tool registry | mcp-server/index.ts | Yes, `rg "server\.tool\(" mcp-server/index.ts` count = 22 on 2026-07-10 |
|
|
39
|
+
| E33 - The REST sidecar exposes health, encode, recall, validate, mark-used, capsule, preflight, Guard before/after receipt, reflex, consolidation, dream, introspection, impact, truth-resolution, export, import, forget, decay, status, reflection, and greeting routes; API-key middleware uses bearer-token constant-time comparison, and export/import/forget are disabled unless admin tools are enabled. | REST route surface and auth/admin gates | src/routes.ts; tests/http-api.test.js | Yes, focused HTTP API coverage passed on 2026-07-10 |
|
|
40
|
+
| E34 - The CLI recognizes `install`, `uninstall`, `mcp-config`, `hook-config`, `demo`, `guard`, `guard-after`, `hook`, `reembed`, `dream`, `greeting`, `reflect`, `serve`, `status`, `doctor`, `observe-tool`, `promote`, and `impact`. | CLI subcommands | mcp-server/index.ts; tests/mcp-server.test.js; tests/hooks-config.test.js | Yes, relevant CLI and hook-config cases passed in the targeted 2026-07-10 run |
|
|
41
41
|
| E35 - The REST sidecar defaults to `127.0.0.1`, refuses non-loopback binds without `AUDREY_API_KEY` unless `AUDREY_ALLOW_NO_AUTH=1`, and emits a no-auth warning when that override is used. | Loopback bind discipline | src/server.ts:13-31; mcp-server/index.ts:217-225,1266-1280 | Yes, 2026-05-08 |
|
|
42
42
|
| E36 - Audrey ships a Python client that calls the REST sidecar and exposes synchronous and asynchronous encode, recall, recall-response, and impact operations. | Python client | README.md:127-184; python/audrey_memory/client.py:116-181,258-310 | Yes, 2026-05-08 |
|
|
43
|
-
| E37 - The documented environment matrix includes security-relevant defaults for data directory, agent identity, embedding and LLM provider selection, device, port, host, API key, no-auth override, admin tools,
|
|
43
|
+
| E37 - The documented environment matrix includes security-relevant defaults for data directory, agent identity, embedding and LLM provider selection and model override, device, port, host, API key, no-auth override, admin tools, hook memory scope, hook failure policy, debug/profile flags, warmup, ONNX verbosity, SQLite pragmas, and context budget. | README configuration matrix | README.md; .env.example; mcp-server/config.ts | Yes, re-verified 2026-07-10 |
|
|
44
44
|
| E38 - `AUDREY_MODEL` is not a documented Audrey environment variable in the README matrix; embedding model selection is represented by provider defaults in configuration and embedding-provider constructors. | Environment variable scope and provider defaults | README.md:220-236; mcp-server/config.ts:38-79; src/embedding.ts:39-46,122-180,207-218 | Yes, `rg "AUDREY_MODEL" README.md src mcp-server package.json` returned no Audrey runtime variable on 2026-05-08 |
|
|
45
45
|
| E39 - Release and verification scripts include build, typecheck, Vitest, perf benchmark, performance snapshot, memory regression check, GuardBench check, npm pack dry-run, release gate, sandbox release gate, and documented Python unittest/build commands. | Test and release gates | package.json:39-58; README.md:200,247-300,352-356; python/tests/test_client.py:124-149,195-245 | Yes, 2026-05-12 |
|
|
46
46
|
| E40 - Recall checks vector-table availability, records per-type partial failures for missing vector tables or KNN errors, records FTS lookup failures, and attaches collected `RecallError[]` to the returned recall result while preserving available partial results. | Recall partial-failure pathway | src/recall.ts:82-105,626-721,741-753 | Yes, 2026-05-08 |
|
|
47
47
|
| E41 - The Phase 3 demo run rebuilt the project with `npm run build`, which completed successfully before executing the repeated-failure demo. | Build command for evaluation demo | package.json:39-40; Phase 3 command output | Yes, command succeeded on 2026-05-08 |
|
|
48
48
|
| E42 - The Phase 3 repeated-failure demo printed an Audrey Guard `BLOCKED` decision with risk score `0.90`, two blocking memory reflexes, one warning reflex, three evidence IDs, one repeated failure prevented, one helpful memory validation recorded, and three evidence IDs attached. | Demo transcript captured for evaluation | mcp-server/index.ts:828-880; Phase 3 command output | Yes, command succeeded on 2026-05-08 |
|
|
49
|
-
| E43 - Audrey
|
|
50
|
-
| E44 - Audrey preflight events now persist `preflight_evidence_ids` and `audrey_guard_action_key`; `memory_validate` accepts optional `preflight_event_id`, action key, and evidence ids, persists them on the validation audit event, and rejects validation lineage when the memory id was not evidence for that preflight. | Validation lineage implementation | src/action-key.ts; src/controller.ts; src/preflight.ts; src/audrey.ts; mcp-server/index.ts; tests/controller.test.js | Yes, focused Vitest passed on 2026-
|
|
49
|
+
| E43 - Audrey 1.1 ships one normalized lifecycle adapter and host-specific configuration for current Claude Code and Codex CLIs. `audrey install --host auto` registers MCP and applies hooks for detected hosts from stable executable paths. `hook-config` supports preview, scoped apply, private backups, and idempotent Audrey-handler replacement; `uninstall` supports non-mutating preview and removes Audrey-owned registrations and handlers in the selected scope. Session and prompt hooks inject bounded, agent-scoped context; PreToolUse creates Guard receipts; post-tool events correlate outcomes by `session_id + tool_use_id`; sanitized failures may form durable memories; Stop and PostCompact run due-only maintenance. Codex requires explicit non-managed hook trust through `/hooks`. Hook errors fail open unless `AUDREY_HOOK_FAIL_CLOSED=1`. Coverage remains limited to events and tool paths emitted by the host, and each hook starts a short-lived Audrey process rather than using a persistent daemon. | Automatic lifecycle integration and boundary | README.md; CHANGELOG.md; mcp-server/hooks.ts; mcp-server/index.ts; src/autopilot.ts; tests/autopilot.test.js; tests/hooks-config.test.js; tests/mcp-server.test.js | Yes, build plus 191 focused install, hook, Autopilot, preflight, controller, and HTTP tests passed on 2026-07-10 |
|
|
50
|
+
| E44 - Audrey preflight events now persist `preflight_evidence_ids` and `audrey_guard_action_key`; `memory_validate` accepts optional `preflight_event_id`, action key, and evidence ids, persists them on the validation audit event, and rejects validation lineage when the memory id was not evidence for that preflight. Preflight embedding queries are bounded, while exact action identity hashes the full normalized, redacted action so large inputs with a shared prefix do not collide. | Validation lineage implementation | src/action-key.ts; src/controller.ts; src/preflight.ts; src/audrey.ts; mcp-server/index.ts; tests/controller.test.js | Yes, focused Vitest passed on 2026-07-10, including a large-action prefix-collision regression |
|
|
51
51
|
| E45 - Preflight risk scoring uses a fixed severity map (`info=0.1`, `low=0.25`, `medium=0.55`, `high=0.85`), sorts warnings by severity, and strict mode blocks on high-severity warnings; the scoring path does not consume validation feedback. | Fixed risk scoring boundary | src/preflight.ts:6-60,291-299,332-338; src/feedback.ts:3-18,70-163 | Yes, 2026-05-08 |
|
|
52
|
-
| E46 - `benchmarks/guardbench.js` runs ten local comparative GuardBench scenarios across Audrey Guard, no-memory, recent-window, vector-only, and FTS-only adapters and writes `benchmarks/output/guardbench-summary.json`, `benchmarks/output/guardbench-manifest.json`, and `benchmarks/output/guardbench-raw.json`; the latest local run has Audrey Guard passing 10/10 scenarios with 100% prevention rate, 0% false-block rate, 100% evidence recall, zero decision-output redaction leaks, zero published artifact raw-secret leaks, 100% recall-degradation detection, 100% decision accuracy, and
|
|
52
|
+
| E46 - `benchmarks/guardbench.js` runs ten local comparative GuardBench scenarios across Audrey Guard, no-memory, recent-window, vector-only, and FTS-only adapters and writes `benchmarks/output/guardbench-summary.json`, `benchmarks/output/guardbench-manifest.json`, and `benchmarks/output/guardbench-raw.json`; the latest local run has Audrey Guard passing 10/10 scenarios with 100% prevention rate, 0% false-block rate, 100% evidence recall, zero decision-output redaction leaks, zero published artifact raw-secret leaks, 100% recall-degradation detection, 100% decision accuracy, and 3.501ms/20.658ms p50/p95 guard latency under the mock-provider methodology. Baseline decision accuracy was no-memory 10%, recent-window 60%, vector-only 40%, and FTS-only 10%, with 0% full-contract pass rate for each baseline. | GuardBench local comparative results | benchmarks/guardbench.js; benchmarks/output/guardbench-summary.json; benchmarks/output/guardbench-manifest.json; benchmarks/output/guardbench-raw.json; package.json | Yes, `npm run bench:guard:check` passed on 2026-05-13 |
|
|
53
53
|
| E47 - GuardBench accepts external ESM adapters through `--adapter`, supports `default`, `adapter`, or `createGuardBenchAdapter()` exports, withholds `expectedDecision` and `requiredEvidence` during adapter execution, then scores adapter output against the same full-contract decision/evidence/redaction checks. | GuardBench external adapter contract | benchmarks/guardbench.js; tests/guardbench.test.js; package.json | Yes, `node scripts/run-vitest.mjs run tests/guardbench.test.js` passed on 2026-05-12 |
|
|
54
54
|
| E48 - Audrey ships a Mem0 Platform GuardBench adapter that uses the current Mem0 REST shape: V3 async memory add with event polling, V2 filtered memory search, and user-entity cleanup. It requires runtime `MEM0_API_KEY` and is not run by default. | First external-system GuardBench adapter | benchmarks/adapters/mem0-platform.mjs; tests/guardbench.test.js; README.md | Import/contract and mocked REST-flow tests passed on 2026-05-12; live Mem0 run not yet executed |
|
|
55
55
|
| E49 - GuardBench ships a credential-free example external adapter and a `bench:guard:adapter-smoke` script so the adapter loader can be exercised through the real CLI path without external credentials. | External adapter smoke path | benchmarks/adapters/example-allow.mjs; package.json; README.md; tests/guardbench.test.js | Yes, `npm run bench:guard:adapter-smoke` passed on 2026-05-12 |
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "Audrey arXiv source package",
|
|
4
|
-
"generatedAt": "2026-
|
|
4
|
+
"generatedAt": "2026-07-10T15:00:47.587Z",
|
|
5
5
|
"sourceMarkdown": "docs/paper/audrey-paper-v1.md",
|
|
6
6
|
"publicationPack": "docs/paper/publication-pack.json",
|
|
7
7
|
"sourceHashes": {
|
|
8
|
-
"sourceMarkdown": "
|
|
8
|
+
"sourceMarkdown": "d8eca75076e4ce06b1d6f15a5f2c91b2fab6da767c0bd613539b6fb9dace802d",
|
|
9
9
|
"publicationPack": "a1a523d5938faea72be568b843ac3890e61cea6070b0cfa46acf22ad3d2fb974",
|
|
10
10
|
"referencesBib": "c0bfcaf7bfe37d6933c812e46352be8a95397eaa430a0f5bc94037600a53f654"
|
|
11
11
|
},
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
{
|
|
14
14
|
"path": "main.tex",
|
|
15
15
|
"source": "docs/paper/audrey-paper-v1.md",
|
|
16
|
-
"bytes":
|
|
17
|
-
"sha256": "
|
|
16
|
+
"bytes": 124811,
|
|
17
|
+
"sha256": "1dbe78fa0648e70bd02db6ff29352d8af859af25e27eb28e39a3cd78fa0965f9"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"path": "references.bib",
|
|
@@ -673,11 +673,13 @@ The JSON walker redacts sensitive keys and values recursively. If a value sits u
|
|
|
673
673
|
|
|
674
674
|
\subsection{MCP, CLI, and REST Surfaces}
|
|
675
675
|
|
|
676
|
-
The MCP server registers
|
|
676
|
+
The MCP server registers 22 tools: \texttt{memory\_dream}, \texttt{memory\_encode}, \texttt{memory\_recall}, \texttt{memory\_consolidate}, \texttt{memory\_introspect}, \texttt{memory\_resolve\_truth}, \texttt{memory\_export}, \texttt{memory\_import}, \texttt{memory\_forget}, \texttt{memory\_validate}, \texttt{memory\_decay}, \texttt{memory\_status}, \texttt{memory\_reflect}, \texttt{memory\_greeting}, \texttt{memory\_observe\_tool}, \texttt{memory\_recent\_failures}, \texttt{memory\_capsule}, \texttt{memory\_preflight}, \texttt{memory\_guard\_before}, \texttt{memory\_guard\_after}, \texttt{memory\_reflexes}, and \texttt{memory\_promote} (Ledger: E32). The Guard-relevant MCP surface is \texttt{memory\_observe\_tool}, \texttt{memory\_recent\_failures}, \texttt{memory\_capsule}, \texttt{memory\_preflight}, \texttt{memory\_guard\_before}, \texttt{memory\_guard\_after}, and \texttt{memory\_reflexes}, with \texttt{memory\_validate} supporting closed-loop validation and REST or CLI impact reporting supporting aggregate impact inspection (Ledger: E16-E19, E32-E34).
|
|
677
677
|
|
|
678
|
-
The CLI recognizes \texttt{install}, \texttt{uninstall}, \texttt{mcp-config}, \texttt{hook-config}, \texttt{demo}, \texttt{guard}, \texttt{reembed}, \texttt{dream}, \texttt{greeting}, \texttt{reflect}, \texttt{serve}, \texttt{status}, \texttt{doctor}, \texttt{observe-tool}, \texttt{promote}, and \texttt{impact} (Ledger: E34). The \texttt{guard} subcommand
|
|
678
|
+
The CLI recognizes \texttt{install}, \texttt{uninstall}, \texttt{mcp-config}, \texttt{hook-config}, \texttt{demo}, \texttt{guard}, \texttt{guard-after}, \texttt{hook}, \texttt{reembed}, \texttt{dream}, \texttt{greeting}, \texttt{reflect}, \texttt{serve}, \texttt{status}, \texttt{doctor}, \texttt{observe-tool}, \texttt{promote}, and \texttt{impact} (Ledger: E34). The \texttt{guard} subcommand remains available for explicit checks, while the host-facing \texttt{hook} subcommand normalizes current Claude Code and Codex lifecycle payloads. \texttt{audrey install --host auto} discovers installed supported CLIs, registers the MCP server, and applies host-specific lifecycle hooks from a stable Node and Audrey entrypoint. Generated settings preserve unrelated hooks, replace older Audrey-owned handlers, write backups before changing non-empty files, and are idempotent. Claude Code supports local, project, and user hook scopes; Codex supports project and user scopes and requires one-time review of non-managed hooks through \texttt{/hooks} (Ledger: E26, E43).
|
|
679
679
|
|
|
680
|
-
The
|
|
680
|
+
The generated lifecycle covers session start, user prompt submission, guarded pre-tool use, correlated post-tool outcomes, post-compaction, and turn stop. Session and prompt hooks inject bounded, agent-scoped memory context. Pre-tool hooks create Guard receipts, and post-tool hooks close the matching receipt by \texttt{session\_id + tool\_use\_id}; sanitized failures may become durable memories. Claude Code exposes an explicit failure event. Current Codex Bash hooks can omit exit status, so Audrey records an opaque result as \texttt{unknown} unless structured fields or response text establish success or failure. Stop and post-compaction hooks run consolidation only when due. Audrey fails open on hook-runtime errors by default, with explicit fail-closed operation available through \texttt{AUDREY\_HOOK\_FAIL\_CLOSED=1}. This is lifecycle integration, not a complete enforcement boundary: Audrey can inspect only the events and tool paths emitted by each host, and the short-lived hook process still pays provider startup cost instead of using a persistent daemon (Ledger: E43).
|
|
681
|
+
|
|
682
|
+
The REST sidecar exposes routes for health, encode, recall, validate, mark-used, capsule, preflight, Guard before/after receipts, reflexes, consolidate, dream, introspect, impact, resolve-truth, export, import, forget, decay, status, reflect, and greeting (Ledger: E33). The sidecar defaults to loopback binding, refuses non-loopback binds without \texttt{AUDREY\_API\_KEY} unless \texttt{AUDREY\_ALLOW\_NO\_AUTH=1}, and emits an explicit warning when that no-auth override is used (Ledger: E35). Export, import, and forget are disabled unless \texttt{AUDREY\_ENABLE\_ADMIN\_TOOLS=1} (Ledger: E33).
|
|
681
683
|
|
|
682
684
|
\subsection{Configuration}
|
|
683
685
|
|
|
@@ -729,13 +731,13 @@ These numbers measure Audrey's local call path under an in-process mock embeddin
|
|
|
729
731
|
|
|
730
732
|
\subsection{Behavioral Regression Result}
|
|
731
733
|
|
|
732
|
-
The current \texttt{benchmarks/output/summary.json} was generated on 2026-
|
|
734
|
+
The current \texttt{benchmarks/output/summary.json} was generated on 2026-07-10T15:00:37.705Z with command \texttt{node benchmarks/run.js --provider mock --dimensions 64} (Ledger: E24). It reports:
|
|
733
735
|
|
|
734
736
|
\begin{verbatim}
|
|
735
737
|
| System | Score Percent | Pass Rate | Average Duration Ms |
|
|
736
|
-
| Audrey | 100 | 100 |
|
|
737
|
-
| Vector Only | 41.66666666666667 | 25 | 0.
|
|
738
|
-
| Keyword + Recency | 41.66666666666667 | 25 | 0.
|
|
738
|
+
| Audrey | 100 | 100 | 16.25 |
|
|
739
|
+
| Vector Only | 41.66666666666667 | 25 | 0.25 |
|
|
740
|
+
| Keyword + Recency | 41.66666666666667 | 25 | 0.5833333333333334 |
|
|
739
741
|
| Recent Window | 37.5 | 25 | 0 |
|
|
740
742
|
\end{verbatim}
|
|
741
743
|
|
|
@@ -759,7 +761,7 @@ It reports local adapters only, not external-system comparisons (Ledger: E46):
|
|
|
759
761
|
| Evidence recall | 100% |
|
|
760
762
|
| Redaction leaks | 0 |
|
|
761
763
|
| Recall-degradation detection | 100% |
|
|
762
|
-
| Guard latency p50 / p95 |
|
|
764
|
+
| Guard latency p50 / p95 | 3.501 ms / 20.658 ms |
|
|
763
765
|
| Published artifact raw-secret leaks | 0 |
|
|
764
766
|
| Audrey Guard decision accuracy | 100% |
|
|
765
767
|
| No-memory decision accuracy | 10% |
|
|
@@ -908,7 +910,7 @@ Reflex generation is deterministic, not adaptive. Reflexes are mapped from prefl
|
|
|
908
910
|
|
|
909
911
|
\subsection{Open Problems}
|
|
910
912
|
|
|
911
|
-
Host hook
|
|
913
|
+
Host hook coverage and process model. Audrey 1.1 generates, applies, and removes lifecycle hooks for current Claude Code and Codex CLIs; the shared adapter injects bounded context, runs Guard before selected side-effectful tools, correlates post-tool outcomes, and performs due-only maintenance (Ledger: E43). This closes the configuration gap, not the enforcement gap. Hook execution still depends on host trust and on the host emitting a supported event for the relevant tool path. Alternate or incompletely intercepted host tool paths remain outside Audrey's view. Each hook also starts a short-lived Audrey process, so the default local embedding provider can pay cold-start cost repeatedly. Production follow-up is a persistent local runtime, measured compatibility gates against supported host versions, and organization-managed deployment that binds tenant identity and enforcement policy outside a caller-controlled routing header. Claude Code's documented hook surface remains an example of the underlying host boundary \cite{anthropic2026claudecodehooks}.
|
|
912
914
|
|
|
913
915
|
Validation lineage is implemented but not yet policy-adaptive. Audrey can bind validation events to the exact preflight event, evidence IDs, and action key that produced a decision, and rejects mismatched evidence claims (Ledger: E44). The next step is using that closed-loop signal to tune warning priority and recommendation wording without giving the model direct control over policy.
|
|
914
916
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "Audrey arXiv compile check",
|
|
4
|
-
"generatedAt": "2026-
|
|
4
|
+
"generatedAt": "2026-07-10T15:00:49.374Z",
|
|
5
5
|
"source": {
|
|
6
6
|
"sourceDir": "docs/paper/output/arxiv",
|
|
7
7
|
"manifest": "docs/paper/output/arxiv/arxiv-manifest.json",
|
|
8
|
-
"manifestSha256": "
|
|
8
|
+
"manifestSha256": "9df7fee92964064551d7eb23098800f909f7ae8dc770be2ddcc29ff3cb33723a",
|
|
9
9
|
"mainTex": "docs/paper/output/arxiv/main.tex",
|
|
10
|
-
"mainTexSha256": "
|
|
10
|
+
"mainTexSha256": "1dbe78fa0648e70bd02db6ff29352d8af859af25e27eb28e39a3cd78fa0965f9",
|
|
11
11
|
"referencesBib": "docs/paper/output/arxiv/references.bib",
|
|
12
12
|
"referencesBibSha256": "c0bfcaf7bfe37d6933c812e46352be8a95397eaa430a0f5bc94037600a53f654"
|
|
13
13
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "audrey",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Automatic, evidence-backed memory and pre-action Guard for Codex, Claude Code, and custom AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
7
7
|
"types": "dist/src/index.d.ts",
|
|
@@ -176,6 +176,9 @@
|
|
|
176
176
|
"local-first-memory",
|
|
177
177
|
"rag",
|
|
178
178
|
"claude",
|
|
179
|
+
"claude-code",
|
|
180
|
+
"codex",
|
|
181
|
+
"agent-memory-autopilot",
|
|
179
182
|
"agent-framework",
|
|
180
183
|
"rest-api",
|
|
181
184
|
"http-server"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "Audrey paper submission bundle",
|
|
4
|
-
"generatedAt": "2026-
|
|
4
|
+
"generatedAt": "2026-07-10T15:00:49.652Z",
|
|
5
5
|
"sourceRoot": ".",
|
|
6
6
|
"outDir": "docs/paper/output/submission-bundle",
|
|
7
7
|
"claimVerification": {
|
|
@@ -17,33 +17,33 @@
|
|
|
17
17
|
"scenarios": 10,
|
|
18
18
|
"redactionLeaks": 0,
|
|
19
19
|
"artifactLeaks": 0,
|
|
20
|
-
"latencyP50Ms":
|
|
21
|
-
"latencyP95Ms":
|
|
20
|
+
"latencyP50Ms": 3.501,
|
|
21
|
+
"latencyP95Ms": 20.658
|
|
22
22
|
},
|
|
23
23
|
"files": [
|
|
24
24
|
{
|
|
25
25
|
"path": "benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json",
|
|
26
26
|
"source": "benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json",
|
|
27
27
|
"bytes": 1266,
|
|
28
|
-
"sha256": "
|
|
28
|
+
"sha256": "cec260495a24c16d95d34a327100b29c0247a67ef4d575bfb9a8d64e438b1cc4"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"path": "benchmarks/output/external/guardbench-external-dry-run.json",
|
|
32
32
|
"source": "benchmarks/output/external/guardbench-external-dry-run.json",
|
|
33
33
|
"bytes": 1831,
|
|
34
|
-
"sha256": "
|
|
34
|
+
"sha256": "5660f3ebcddb2edc196f800885de302749f48f21952dc4e8ab6363a24a33a9f4"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"path": "benchmarks/output/external/guardbench-external-evidence.json",
|
|
38
38
|
"source": "benchmarks/output/external/guardbench-external-evidence.json",
|
|
39
39
|
"bytes": 1638,
|
|
40
|
-
"sha256": "
|
|
40
|
+
"sha256": "23b47bc6d66f3d2e892853fdeef43d179b6aaf8695520cbbf9cbde2bc8926500"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"path": "benchmarks/output/guardbench-conformance-card.json",
|
|
44
44
|
"source": "benchmarks/output/guardbench-conformance-card.json",
|
|
45
|
-
"bytes":
|
|
46
|
-
"sha256": "
|
|
45
|
+
"bytes": 1735,
|
|
46
|
+
"sha256": "f7e755fdc52216dbe387f28b3acdd6068b51b908db0cabde455b6d793b62ed43"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"path": "benchmarks/output/guardbench-manifest.json",
|
|
@@ -54,44 +54,44 @@
|
|
|
54
54
|
{
|
|
55
55
|
"path": "benchmarks/output/guardbench-raw.json",
|
|
56
56
|
"source": "benchmarks/output/guardbench-raw.json",
|
|
57
|
-
"bytes":
|
|
58
|
-
"sha256": "
|
|
57
|
+
"bytes": 43454,
|
|
58
|
+
"sha256": "1888c8524d54f10bb403ef09b923cec63376518bf6d202ef271ba895811d37d8"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"path": "benchmarks/output/guardbench-summary.json",
|
|
62
62
|
"source": "benchmarks/output/guardbench-summary.json",
|
|
63
|
-
"bytes":
|
|
64
|
-
"sha256": "
|
|
63
|
+
"bytes": 69347,
|
|
64
|
+
"sha256": "88cd54e091e5aa89e7ef873a2e440430b3c35eb3f4664d963a56d197cc3691e9"
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
"path": "benchmarks/output/leaderboard/guardbench-leaderboard.json",
|
|
68
68
|
"source": "benchmarks/output/leaderboard/guardbench-leaderboard.json",
|
|
69
|
-
"bytes":
|
|
70
|
-
"sha256": "
|
|
69
|
+
"bytes": 2798,
|
|
70
|
+
"sha256": "28f0bdac7ab72cf2a1a217663580fbc0735754ab975b1bb015529ea5b264760e"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"path": "benchmarks/output/leaderboard/guardbench-leaderboard.md",
|
|
74
74
|
"source": "benchmarks/output/leaderboard/guardbench-leaderboard.md",
|
|
75
|
-
"bytes":
|
|
76
|
-
"sha256": "
|
|
75
|
+
"bytes": 364,
|
|
76
|
+
"sha256": "5f108590c11c9d1904ea6339a7da63b311bf9bdd82ec078fa0f795530eff9386"
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
"path": "benchmarks/output/submission-bundle/submission-manifest.json",
|
|
80
80
|
"source": "benchmarks/output/submission-bundle/submission-manifest.json",
|
|
81
|
-
"bytes":
|
|
82
|
-
"sha256": "
|
|
81
|
+
"bytes": 3986,
|
|
82
|
+
"sha256": "9a038de29a775fc5e870bab0575c96fce21a22eed6992acefb9404b61b3426e4"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
"path": "benchmarks/output/submission-bundle/validation-report.json",
|
|
86
86
|
"source": "benchmarks/output/submission-bundle/validation-report.json",
|
|
87
87
|
"bytes": 739,
|
|
88
|
-
"sha256": "
|
|
88
|
+
"sha256": "9db6530947c3f88de484235f44eaa47e7aca98dee8d3603ea0daf067d28a98d3"
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
"path": "benchmarks/output/summary.json",
|
|
92
92
|
"source": "benchmarks/output/summary.json",
|
|
93
|
-
"bytes":
|
|
94
|
-
"sha256": "
|
|
93
|
+
"bytes": 100724,
|
|
94
|
+
"sha256": "6683760a6b72a2562aa3d8ee35492db7bf599aa4ed089676fb69a6fad5124b3d"
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
97
|
"path": "benchmarks/schemas/guardbench-adapter-registry.schema.json",
|
|
@@ -168,8 +168,8 @@
|
|
|
168
168
|
{
|
|
169
169
|
"path": "docs/AUDREY_PAPER_OUTLINE.md",
|
|
170
170
|
"source": "docs/AUDREY_PAPER_OUTLINE.md",
|
|
171
|
-
"bytes":
|
|
172
|
-
"sha256": "
|
|
171
|
+
"bytes": 9555,
|
|
172
|
+
"sha256": "68662927f742f9f9947b30a4885e1fa166f78daa5ccb4a811e4e8df5834976f7"
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
175
|
"path": "docs/paper/00-master.md",
|
|
@@ -210,20 +210,20 @@
|
|
|
210
210
|
{
|
|
211
211
|
"path": "docs/paper/06-implementation.md",
|
|
212
212
|
"source": "docs/paper/06-implementation.md",
|
|
213
|
-
"bytes":
|
|
214
|
-
"sha256": "
|
|
213
|
+
"bytes": 16223,
|
|
214
|
+
"sha256": "f1f2bedbc3766246201121c51e0319820acb51af2a61715383c630dad716ce56"
|
|
215
215
|
},
|
|
216
216
|
{
|
|
217
217
|
"path": "docs/paper/07-evaluation.md",
|
|
218
218
|
"source": "docs/paper/07-evaluation.md",
|
|
219
|
-
"bytes":
|
|
220
|
-
"sha256": "
|
|
219
|
+
"bytes": 11242,
|
|
220
|
+
"sha256": "cbe7d6823de7d9d2f16da1b7915ae0f9043dd0cde14913164941ef0e555610f7"
|
|
221
221
|
},
|
|
222
222
|
{
|
|
223
223
|
"path": "docs/paper/08-discussion-limitations.md",
|
|
224
224
|
"source": "docs/paper/08-discussion-limitations.md",
|
|
225
|
-
"bytes":
|
|
226
|
-
"sha256": "
|
|
225
|
+
"bytes": 9595,
|
|
226
|
+
"sha256": "ef6b836ba450e18aa6c0eb0b1793183f7c1b7661a9ccbd9ba076409f73de8cbd"
|
|
227
227
|
},
|
|
228
228
|
{
|
|
229
229
|
"path": "docs/paper/09-conclusion.md",
|
|
@@ -252,8 +252,8 @@
|
|
|
252
252
|
{
|
|
253
253
|
"path": "docs/paper/audrey-paper-v1.md",
|
|
254
254
|
"source": "docs/paper/audrey-paper-v1.md",
|
|
255
|
-
"bytes":
|
|
256
|
-
"sha256": "
|
|
255
|
+
"bytes": 118697,
|
|
256
|
+
"sha256": "d8eca75076e4ce06b1d6f15a5f2c91b2fab6da767c0bd613539b6fb9dace802d"
|
|
257
257
|
},
|
|
258
258
|
{
|
|
259
259
|
"path": "docs/paper/browser-launch-plan.json",
|
|
@@ -294,26 +294,26 @@
|
|
|
294
294
|
{
|
|
295
295
|
"path": "docs/paper/evidence-ledger.md",
|
|
296
296
|
"source": "docs/paper/evidence-ledger.md",
|
|
297
|
-
"bytes":
|
|
298
|
-
"sha256": "
|
|
297
|
+
"bytes": 63088,
|
|
298
|
+
"sha256": "ae1266e442a5211200b2b3c71396794645a43d0e9893aa285b26a91c9b5d7890"
|
|
299
299
|
},
|
|
300
300
|
{
|
|
301
301
|
"path": "docs/paper/output/arxiv-compile-report.json",
|
|
302
302
|
"source": "docs/paper/output/arxiv-compile-report.json",
|
|
303
303
|
"bytes": 924,
|
|
304
|
-
"sha256": "
|
|
304
|
+
"sha256": "ebf699f79454b8237e04f6973dc00035a7385054b23fdda9ba3f528d16197ae8"
|
|
305
305
|
},
|
|
306
306
|
{
|
|
307
307
|
"path": "docs/paper/output/arxiv/arxiv-manifest.json",
|
|
308
308
|
"source": "docs/paper/output/arxiv/arxiv-manifest.json",
|
|
309
309
|
"bytes": 1316,
|
|
310
|
-
"sha256": "
|
|
310
|
+
"sha256": "9df7fee92964064551d7eb23098800f909f7ae8dc770be2ddcc29ff3cb33723a"
|
|
311
311
|
},
|
|
312
312
|
{
|
|
313
313
|
"path": "docs/paper/output/arxiv/main.tex",
|
|
314
314
|
"source": "docs/paper/output/arxiv/main.tex",
|
|
315
|
-
"bytes":
|
|
316
|
-
"sha256": "
|
|
315
|
+
"bytes": 124811,
|
|
316
|
+
"sha256": "1dbe78fa0648e70bd02db6ff29352d8af859af25e27eb28e39a3cd78fa0965f9"
|
|
317
317
|
},
|
|
318
318
|
{
|
|
319
319
|
"path": "docs/paper/output/arxiv/README-arxiv.txt",
|
|
@@ -366,14 +366,14 @@
|
|
|
366
366
|
{
|
|
367
367
|
"path": "package.json",
|
|
368
368
|
"source": "package.json",
|
|
369
|
-
"bytes":
|
|
370
|
-
"sha256": "
|
|
369
|
+
"bytes": 12556,
|
|
370
|
+
"sha256": "769edc3fca3b2cb559222b74def8c71d3b489368d9552d753ea188d4daef6123"
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
"path": "README.md",
|
|
374
374
|
"source": "README.md",
|
|
375
|
-
"bytes":
|
|
376
|
-
"sha256": "
|
|
375
|
+
"bytes": 21876,
|
|
376
|
+
"sha256": "ef1479943d891b6c7e3a77424790a6c79acf8e2ed1833cd7da4761ea454abedd"
|
|
377
377
|
}
|
|
378
378
|
]
|
|
379
379
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "audrey",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Automatic, evidence-backed memory and pre-action Guard for Codex, Claude Code, and custom AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
7
7
|
"types": "dist/src/index.d.ts",
|
|
@@ -176,6 +176,9 @@
|
|
|
176
176
|
"local-first-memory",
|
|
177
177
|
"rag",
|
|
178
178
|
"claude",
|
|
179
|
+
"claude-code",
|
|
180
|
+
"codex",
|
|
181
|
+
"agent-memory-autopilot",
|
|
179
182
|
"agent-framework",
|
|
180
183
|
"rest-api",
|
|
181
184
|
"http-server"
|
|
@@ -10,7 +10,7 @@ import { verifyBrowserLaunchResults } from './verify-browser-launch-results.mjs'
|
|
|
10
10
|
import { verifyReleaseReadiness } from './verify-release-readiness.mjs';
|
|
11
11
|
|
|
12
12
|
const ROOT = process.cwd();
|
|
13
|
-
const DEFAULT_VERSION = '1.
|
|
13
|
+
const DEFAULT_VERSION = '1.1.0';
|
|
14
14
|
const DEFAULT_OUT = '.tmp/release-artifacts/completion-audit.json';
|
|
15
15
|
const NPM_REGISTRY = 'https://registry.npmjs.org/';
|
|
16
16
|
|
|
@@ -214,7 +214,7 @@ export async function auditReleaseCompletion(options = {}) {
|
|
|
214
214
|
checklist.push(
|
|
215
215
|
checklistItem(
|
|
216
216
|
'code-release-local-readiness',
|
|
217
|
-
|
|
217
|
+
`Audrey codebase is cut to ${version} and local release gates are coherent.`,
|
|
218
218
|
statusFromGaps(versionGaps, readiness.ok),
|
|
219
219
|
[
|
|
220
220
|
`package.json version=${pkg.version}`,
|
|
@@ -241,7 +241,7 @@ export async function auditReleaseCompletion(options = {}) {
|
|
|
241
241
|
checklist.push(
|
|
242
242
|
checklistItem(
|
|
243
243
|
'source-control-release-state',
|
|
244
|
-
|
|
244
|
+
`Final release commit and v${version} tag are present on the public repository.`,
|
|
245
245
|
statusFromGaps(sourceGaps, bundleVerify.ok && remoteRefsResult.ok),
|
|
246
246
|
[
|
|
247
247
|
commandEvidence(bundleVerify),
|
|
@@ -262,7 +262,7 @@ export async function auditReleaseCompletion(options = {}) {
|
|
|
262
262
|
checklist.push(
|
|
263
263
|
checklistItem(
|
|
264
264
|
'npm-package-publication',
|
|
265
|
-
|
|
265
|
+
`audrey@${version} npm package is packaged and published.`,
|
|
266
266
|
statusFromGaps(npmGaps),
|
|
267
267
|
[JSON.stringify(npmArtifact), commandEvidence(npmView)],
|
|
268
268
|
npmGaps,
|
|
@@ -279,7 +279,7 @@ export async function auditReleaseCompletion(options = {}) {
|
|
|
279
279
|
checklist.push(
|
|
280
280
|
checklistItem(
|
|
281
281
|
'python-package-publication',
|
|
282
|
-
|
|
282
|
+
`audrey-memory ${version} Python package is built and published.`,
|
|
283
283
|
statusFromGaps(pypiGaps),
|
|
284
284
|
[JSON.stringify(wheel), JSON.stringify(sdist), `PyPI status=${pypi.status}`],
|
|
285
285
|
pypiGaps,
|
|
@@ -373,10 +373,10 @@ export async function auditReleaseCompletion(options = {}) {
|
|
|
373
373
|
schemaVersion: '1.0.0',
|
|
374
374
|
suite: 'Audrey release completion audit',
|
|
375
375
|
generatedAt: new Date().toISOString(),
|
|
376
|
-
objective:
|
|
376
|
+
objective: `audrey ${version} release + published audrey research paper`,
|
|
377
377
|
successCriteria: [
|
|
378
|
-
|
|
379
|
-
|
|
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
380
|
'npm and Python packages are packaged and publicly published.',
|
|
381
381
|
'Paper artifacts verify locally and compile for arXiv.',
|
|
382
382
|
'Paper publication targets are publicly submitted and operator verified.',
|
|
@@ -7,7 +7,7 @@ import { dirname, isAbsolute, join, relative, resolve } from 'node:path';
|
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
8
8
|
|
|
9
9
|
const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
10
|
-
const DEFAULT_VERSION = '1.
|
|
10
|
+
const DEFAULT_VERSION = '1.1.0';
|
|
11
11
|
const DEFAULT_ARTIFACT_DIR = '.tmp/release-artifacts';
|
|
12
12
|
const NPM_REGISTRY = 'https://registry.npmjs.org/';
|
|
13
13
|
const RELEASE_COMMANDS = new Set(['git', 'node', 'npm', 'python']);
|
|
@@ -3,7 +3,7 @@ import { resolve } from 'node:path';
|
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
|
|
5
5
|
const ROOT = process.cwd();
|
|
6
|
-
const DEFAULT_TARGET_VERSION = '1.
|
|
6
|
+
const DEFAULT_TARGET_VERSION = '1.1.0';
|
|
7
7
|
const VERSION_RE =
|
|
8
8
|
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
9
9
|
|