enigma-memory 0.1.3 → 0.1.5
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/docs/benchmark-reproducibility.md +128 -30
- package/docs/developer-ecosystem.md +13 -3
- package/docs/memory-benchmarks.md +53 -15
- package/docs/sdk-api.md +1 -1
- package/examples/ci/github-actions.yml +27 -1
- package/package.json +5 -1
- package/packages/mcp-server/src/index.js +1 -1
- package/packages/passport/src/index.js +125 -4
- package/scripts/build-installer-assets.mjs +1 -1
- package/scripts/download-standard-benchmarks.mjs +399 -0
- package/scripts/run-memory-benchmarks.mjs +11 -0
- package/scripts/run-standard-memory-benchmarks.mjs +1070 -0
|
@@ -1,25 +1,70 @@
|
|
|
1
1
|
# Benchmark reproducibility
|
|
2
2
|
|
|
3
|
-
This guide explains how to reproduce the current local Enigma memory benchmark, save
|
|
3
|
+
This guide explains how to reproduce the current local Enigma memory benchmark, run official-dataset retrieval/evidence proxy benchmarks against LoCoMo and LongMemEval inputs, save public-safe JSON reports, cite source datasets honestly, and understand what is still required before publishing live LLM answer-accuracy or competitor comparisons.
|
|
4
4
|
|
|
5
5
|
## What is reproducible today
|
|
6
6
|
|
|
7
|
-
The current package is `enigma-memory@0.1.
|
|
7
|
+
The current package is `enigma-memory@0.1.4`. Two benchmark paths are reproducible without provider credentials:
|
|
8
|
+
|
|
9
|
+
1. The local deterministic memory suite, available through the package script and the script file it wraps:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
cd enigma
|
|
13
|
+
npm run benchmark:memory-suite
|
|
14
|
+
npm run benchmark:memory-suite -- --out benchmark-report.json
|
|
15
|
+
node scripts/run-memory-benchmarks.mjs --out benchmark-report.json
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The `--out` form writes the report to the requested path and prints only a small status object. Without `--out`, the command writes the full JSON report to stdout. The report schema is `enigma.memory_benchmark_suite.v1`.
|
|
19
|
+
|
|
20
|
+
2. The official-dataset standard runner, which consumes locally downloaded LoCoMo and/or LongMemEval JSON files:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
node scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --max-locomo-qa 25 --max-longmemeval-items 25 --top-k 5 --out .enigma/standard-memory-benchmark-sample.json
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The standard report schema is `enigma.standard_memory_benchmark_suite.v1`. It scores retrieval/evidence coverage over official dataset records with local deterministic methods only. It does not call LLM providers, generate final answers, grade natural-language answer correctness, call competitor SDKs, or create provider/competitor scores.
|
|
27
|
+
|
|
28
|
+
In that standard report, `keyword_filter` is intentionally the simpler lexical baseline. `enigma_relevance` is the deterministic Enigma retrieval approximation: it uses deterministic query expansion, term normalization and stemming, task/category and temporal/date hints, role/session metadata, phrase/proximity scoring, and final reranking for evidence diversity. It does not use raw answer text, evidence labels, or `has_answer` flags to choose records. It must be interpreted only as retrieval/evidence proxy scoring over the local dataset file named in the report, not as LLM answer accuracy, provider performance, competitor performance, or leaderboard standing.
|
|
29
|
+
|
|
30
|
+
| Standard-runner row | Retrieval boundary |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| `full_context` | Scores every parsed local memory record for the dataset item without retrieval filtering. |
|
|
33
|
+
| `recency_last_n` | Scores the most recent parsed records as a deterministic recency baseline. |
|
|
34
|
+
| `keyword_filter` | Scores direct normalized query/content term overlap only. |
|
|
35
|
+
| `enigma_relevance` | Scores deterministic Enigma-style retrieval signals before `--top-k`: query expansion, stemming, role/session metadata, temporal hints, phrase/proximity matches, and evidence-diversity reranking. |
|
|
36
|
+
|
|
37
|
+
Both report families are designed to be public-safe: they contain aggregate metrics, commitments, citations, profile labels, source metadata, and claim boundaries. They do not include raw fixture memory, raw dataset conversation text, private question text, private answer text, provider transcripts, credentials, account ids, or local absolute paths.
|
|
38
|
+
|
|
39
|
+
## Official dataset download runbook
|
|
40
|
+
|
|
41
|
+
Use `scripts/download-standard-benchmarks.mjs` to stage official LoCoMo and LongMemEval files for future standard benchmark runs without adding raw data to the repository. The default mode is a public-safe dry run:
|
|
8
42
|
|
|
9
43
|
```sh
|
|
10
44
|
cd enigma
|
|
11
|
-
|
|
12
|
-
npm run benchmark:memory-suite -- --out benchmark-report.json
|
|
13
|
-
node scripts/run-memory-benchmarks.mjs --out benchmark-report.json
|
|
45
|
+
node scripts/download-standard-benchmarks.mjs --dry-run
|
|
14
46
|
```
|
|
15
47
|
|
|
16
|
-
The
|
|
48
|
+
The dry-run output lists planned fetches only: dataset ids, source URLs, licenses or upstream license-review notes, usage boundaries, expected output files under `.enigma/benchmarks/datasets`, and the manifest path. It does not fetch data, print raw dataset snippets, include credentials, or emit local absolute paths when the default relative paths are used.
|
|
49
|
+
|
|
50
|
+
To download all supported datasets and capture hashes/sizes, opt in explicitly:
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
node scripts/download-standard-benchmarks.mjs --execute --dataset all --out-dir .enigma/benchmarks/datasets --manifest .enigma/benchmarks/dataset-manifest.json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
For a single dataset, use `--dataset locomo`, `--dataset longmemeval-oracle`, `--dataset longmemeval-s`, or `--dataset longmemeval-m`. The manifest schema is `enigma.standard_benchmark_dataset_manifest.v1`; it records source URLs, output file names, byte sizes, SHA-256 hashes, licenses/usage boundaries, and `raw_dataset_content_included: false`.
|
|
57
|
+
|
|
58
|
+
Expected official source facts:
|
|
17
59
|
|
|
18
|
-
|
|
60
|
+
- LoCoMo data source: `https://raw.githubusercontent.com/snap-research/locomo/main/data/locomo10.json`; license: CC BY-NC 4.0.
|
|
61
|
+
- LongMemEval cleaned source files: `https://huggingface.co/datasets/xiaowu0162/longmemeval-cleaned/resolve/main/longmemeval_oracle.json`, `https://huggingface.co/datasets/xiaowu0162/longmemeval-cleaned/resolve/main/longmemeval_s_cleaned.json`, and `https://huggingface.co/datasets/xiaowu0162/longmemeval-cleaned/resolve/main/longmemeval_m_cleaned.json`. LongMemEval covers information extraction, multi-session reasoning, temporal reasoning, knowledge updates, and abstention.
|
|
19
62
|
|
|
20
|
-
|
|
63
|
+
Do not commit downloaded files or raw benchmark conversations. The package `.gitignore` excludes `.enigma/`; keep `.enigma/benchmarks/datasets` and the manifest as local/review artifacts unless a separate publication review approves what can be shared. LoCoMo is licensed CC BY-NC 4.0. LongMemEval cleaned files are hosted by the upstream Hugging Face dataset/repository; review the upstream terms before use or redistribution. Downloading these files enables retrieval/evidence-coverage or other reviewed benchmark scoring, not provider deletion proof, model forgetting proof, ROI/savings claims, compliance certification, live competitor scores, or benchmark-leadership claims.
|
|
21
64
|
|
|
22
|
-
|
|
65
|
+
## Reproduce and save local fixture JSON
|
|
66
|
+
|
|
67
|
+
1. Use a clean checkout containing `enigma-memory@0.1.4`.
|
|
23
68
|
2. From a repository root that contains `enigma/package.json`, enter the package directory:
|
|
24
69
|
|
|
25
70
|
```sh
|
|
@@ -40,10 +85,48 @@ The report schema is `enigma.memory_benchmark_suite.v1`. It is designed to be pu
|
|
|
40
85
|
npm run benchmark:memory-suite -- --out benchmark-report.json
|
|
41
86
|
```
|
|
42
87
|
|
|
43
|
-
5. Preserve the JSON file with the command, package version, operating system/runtime, and review context that produced it.
|
|
88
|
+
5. Preserve the JSON file with the command, package version, operating system/runtime, hardware class when relevant, and review context that produced it.
|
|
44
89
|
6. When sharing the result publicly, share the generated JSON report only after confirming it still has `public_safe: true` and `schema: "enigma.memory_benchmark_suite.v1"`.
|
|
45
90
|
|
|
46
|
-
The local fixture measures Enigma-controlled operations only: vault remember/update, vault export/import, passport context-pack retrieval, optimizer token estimates and duplicate removal, bundle/context-pack verification, abstention behavior, exact-answer recall over the deterministic fixture, and p50/p95 operation latency from `performance.now`.
|
|
91
|
+
The local fixture measures Enigma-controlled operations only: vault remember/update, vault export/import, passport context-pack retrieval, deterministic local relevance filtering before optimizer tiering, optimizer token estimates and duplicate removal, bundle/context-pack verification, abstention behavior, exact-answer recall over the deterministic fixture, and p50/p95 operation latency from `performance.now`.
|
|
92
|
+
|
|
93
|
+
Interpret improvements as local fixture behavior. Enigma reduces context-pack estimated prompt tokens by selecting the deterministic query/purpose/address-relevant local memories before optimizer tiering and deduplication; it does not measure provider invoice savings, token ROI, live model quality, or third-party memory superiority. Token estimates and p50/p95 timings can change across hardware, Node/runtime versions, script revisions, and fixture updates.
|
|
94
|
+
|
|
95
|
+
## Run the official-dataset standard benchmark
|
|
96
|
+
|
|
97
|
+
The standard runner reads local dataset files produced by the downloader and writes a public-safe proxy report to the path supplied with `--out`. A bounded sample is the safest first run:
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
node scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --max-locomo-qa 25 --max-longmemeval-items 25 --top-k 5 --out .enigma/standard-memory-benchmark-sample.json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Useful runner options:
|
|
104
|
+
|
|
105
|
+
- `--locomo <path>` supplies a local LoCoMo JSON file.
|
|
106
|
+
- `--longmemeval <path>` supplies a local LongMemEval JSON file. Use one cleaned split per run when you want split-specific evidence.
|
|
107
|
+
- `--max-locomo-qa <n>` and `--max-longmemeval-items <n>` bound the sample size.
|
|
108
|
+
- `--top-k <n>` controls retrieval depth; the default is `5`.
|
|
109
|
+
- `--out <path>` writes public-safe JSON to that path. Without `--out`, the report is printed to stdout.
|
|
110
|
+
|
|
111
|
+
If only `--locomo` or only `--longmemeval` is supplied, the runner scores only that dataset.
|
|
112
|
+
|
|
113
|
+
For a full local proxy run, remove the sample caps:
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
node scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --top-k 5 --out .enigma/standard-memory-benchmark.json
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Full runs may take materially longer, may produce larger JSON reports, and may change with Node/runtime, hardware, script revision, dataset split, retrieval depth, and any future parsing fixes. They still remain retrieval/evidence proxy runs: no LLM answer generation, no provider APIs, no hosted memory services, and no competitor adapters are exercised. If the generated report shows `enigma_relevance` ahead of `keyword_filter`, describe the improvement as a local deterministic retrieval/evidence proxy result produced by that report, not as a hard-coded final score or any provider/model/competitor claim.
|
|
120
|
+
|
|
121
|
+
When preserving or publishing official-dataset benchmark artifacts, keep the benchmark report and dataset manifest together. The report path is chosen with `--out`; the dataset hash/size capture is the manifest path passed to `--manifest`, usually `.enigma/benchmarks/dataset-manifest.json`.
|
|
122
|
+
|
|
123
|
+
Public sharing should include the generated benchmark report JSON and generated dataset manifest JSON, not raw dataset files or raw conversations. Before publishing generated JSON, verify:
|
|
124
|
+
|
|
125
|
+
1. The report schema is `enigma.standard_memory_benchmark_suite.v1`.
|
|
126
|
+
2. The report does not contain raw conversation text, raw questions, raw answers, secrets, provider transcripts, account ids, or local absolute paths.
|
|
127
|
+
3. The companion manifest schema is `enigma.standard_benchmark_dataset_manifest.v1`.
|
|
128
|
+
4. The manifest includes source URLs, byte sizes, SHA-256 hashes, license/usage boundaries, and local file names for the exact dataset files used.
|
|
129
|
+
5. Any public claim says "retrieval/evidence coverage proxy", quotes scores only from the generated report for the exact dataset hash/top-k/sample bounds, and avoids provider/model/competitor implications unless a separate reviewed provider answer-accuracy run exists.
|
|
47
130
|
|
|
48
131
|
## Local baseline rows in the report
|
|
49
132
|
|
|
@@ -54,40 +137,54 @@ The report now includes `metrics.local_baseline_comparisons`, which compares det
|
|
|
54
137
|
| `full_context` | Supplies every active fixture memory without optimization or deduplication. |
|
|
55
138
|
| `recency_last_n` | Supplies the three most recently updated active fixture memories. |
|
|
56
139
|
| `keyword_filter` | Supplies active fixture memories whose content or tags match deterministic query terms. |
|
|
57
|
-
| `enigma_context_pack` | Uses the Enigma passport context-pack compiler
|
|
140
|
+
| `enigma_context_pack` | Uses the Enigma passport context-pack compiler with deterministic local relevance filtering before optimizer tiering and deduplication. |
|
|
58
141
|
|
|
59
142
|
The report also includes `public_claims_allowed`; keep public copy within those local-fixture boundaries unless separate reviewed external evidence exists.
|
|
60
143
|
|
|
61
144
|
## How to cite external benchmark standards
|
|
62
145
|
|
|
63
|
-
Use these standards as citations and task-category references, not as claimed Enigma results unless the exact external benchmark
|
|
146
|
+
Use these standards as dataset sources, citations, and task-category references, not as claimed Enigma leaderboard-equivalent results unless the exact external benchmark, scoring setup, and source-data hashes have been run and reviewed:
|
|
147
|
+
|
|
148
|
+
- LoCoMo: https://snap-research.github.io/locomo/ and `https://raw.githubusercontent.com/snap-research/locomo/main/data/locomo10.json` — cite for long-term conversational-memory QA, event summarization, and multimodal generation over long conversations. The LoCoMo dataset license is CC BY-NC 4.0.
|
|
149
|
+
- LongMemEval: https://arxiv.org/abs/2410.10813 and cleaned HuggingFace JSON files `https://huggingface.co/datasets/xiaowu0162/longmemeval-cleaned/resolve/main/longmemeval_oracle.json`, `https://huggingface.co/datasets/xiaowu0162/longmemeval-cleaned/resolve/main/longmemeval_s_cleaned.json`, and `https://huggingface.co/datasets/xiaowu0162/longmemeval-cleaned/resolve/main/longmemeval_m_cleaned.json` — cite for information extraction, multi-session reasoning, temporal reasoning, knowledge updates, and abstention.
|
|
150
|
+
|
|
151
|
+
The local report mirrors some task categories from those benchmarks but does not download or score official records. The standard runner consumes official local dataset files and scores retrieval/evidence coverage; it does not run the original papers' full LLM evaluation pipelines or claim leaderboard-equivalent answer accuracy.
|
|
152
|
+
|
|
153
|
+
## Future provider answer-accuracy runs
|
|
154
|
+
|
|
155
|
+
A real answer-accuracy run is a different benchmark from the current standard runner. It would need all of the following before any answer-correctness or model-quality claim is published:
|
|
64
156
|
|
|
65
|
-
|
|
66
|
-
|
|
157
|
+
1. Provider API keys supplied at run time through reviewed environment names only, with secret values never printed, persisted, or copied into reports.
|
|
158
|
+
2. Frozen model ids for generator and, if used, evaluator models. Model aliases are not enough for reproducibility.
|
|
159
|
+
3. Budget caps before execution: maximum records, maximum generated tokens, maximum retries, timeout policy, and maximum provider spend.
|
|
160
|
+
4. Frozen prompts for memory ingestion, retrieval, answer generation, abstention, evaluator grading, and any tool-use instructions.
|
|
161
|
+
5. A fixed evaluator choice: exact-match/structured checks where the dataset supports them, human review where required, or a separately versioned LLM-as-judge prompt/model with known limitations.
|
|
162
|
+
6. Dataset manifest hashes, split names, record counts, source licenses, and any excluded-record policy.
|
|
163
|
+
7. Raw provider inputs/outputs retained only in private reviewed storage when license and policy permit; public reports should expose safe aggregates and hashes, not raw conversations.
|
|
67
164
|
|
|
68
|
-
The current
|
|
165
|
+
The current standard runner is intentionally retrieval/evidence proxy only because it can run without provider keys, prompt variance, evaluator-model drift, provider billing risk, or provider transcript handling. It can say whether the local retrieval/evidence path surfaced expected supporting material, including whether deterministic Enigma relevance outperformed the simpler keyword row in the generated report. It cannot say whether an LLM would answer correctly, abstain correctly, forget something, comply with a deletion request, or outperform a provider/native memory product.
|
|
69
166
|
|
|
70
167
|
## Why live third-party comparisons are not claimed yet
|
|
71
168
|
|
|
72
|
-
The current
|
|
169
|
+
The current benchmarks do not call external provider APIs, external SDKs, hosted memory services, ChatGPT native memory, Claude memory tooling, or third-party agent loops. Cross-provider rows in the local report are profile labels that reuse the same Enigma context-pack boundary; they do not call or compare live provider models and are not live provider rankings. The official-dataset standard report is likewise local retrieval/evidence scoring only.
|
|
73
170
|
|
|
74
|
-
Real comparisons require fixed adapters, fixed datasets, fixed agent/tool loops, explicit provider terms review,
|
|
171
|
+
Real comparisons require fixed adapters, fixed datasets, fixed agent/tool loops, explicit provider terms review, reviewed handling of secrets and raw benchmark data, and a no-score-without-run rule. Memory quality can change with the surrounding agent framework and tool loop, so a fair comparison must document more than the memory store. Until those inputs exist and the adapter is actually run in the same harness, external competitor rows stay requirements-only and must not carry recall, abstention, token, latency, answer-accuracy, cost, or ranking scores.
|
|
75
172
|
|
|
76
|
-
The current
|
|
173
|
+
The current reports must not be used as evidence of provider-side deletion, model forgetting, compliance certification, token ROI, provider invoice savings, benchmark leadership, hosted-cloud readiness, or “best in world” superiority.
|
|
77
174
|
|
|
78
|
-
##
|
|
175
|
+
## Competitor comparison plan and no-score-without-run rule
|
|
79
176
|
|
|
80
|
-
Use placeholder environment names only. Do not commit real tokens, API keys, account ids, provider transcripts, raw benchmark conversations, or private memory.
|
|
177
|
+
Use placeholder environment names only. Do not commit real tokens, API keys, account ids, provider transcripts, raw benchmark conversations, raw provider answers, or private memory.
|
|
81
178
|
|
|
82
|
-
The report field `external_competitor_adapters` is a requirements matrix, not a score table. External rows are expected to remain requirements-only until credentials, runtimes, and
|
|
179
|
+
The report field `external_competitor_adapters` is a requirements matrix, not a score table. External rows are expected to remain requirements-only until credentials, runtimes, datasets, fixed prompts, fixed model ids, budget caps, reset policies, and scoring code are supplied and reviewed. A competitor row must have `can_run_in_this_harness: false`, `scores_included: false`, and no recall, abstention, token, latency, answer-accuracy, cost, or ranking score unless that exact adapter was run over the same dataset manifest in the same harness.
|
|
83
180
|
|
|
84
181
|
| Target | Runtime or SDK needed | Placeholder secrets and local inputs | Dataset requirement | Adapter boundary before results can be claimed |
|
|
85
182
|
| --- | --- | --- | --- | --- |
|
|
86
|
-
| Letta | Letta SDK/runtime; documented SDK packages include `@letta-ai/letta-client` and `letta-client`; API-key-backed service access may be required. | `LETTA_API_KEY`, `LETTA_BASE_URL`, `LETTA_PROJECT_ID`, `BENCHMARK_DATASET_PATH` | Local reviewed LoCoMo/LongMemEval split or another reviewed local dataset file with license, version, split, and checksum metadata. | Build a Letta adapter that fixes the agent loop, memory write/read policy, model settings, and scoring path. Results may describe that configured Letta run only, not generic provider deletion or model forgetting. |
|
|
87
|
-
| LangGraph
|
|
183
|
+
| Letta/MemGPT | Letta SDK/runtime and MemGPT-style memory agent configuration; documented SDK packages include `@letta-ai/letta-client` and `letta-client`; API-key-backed service access may be required. | `LETTA_API_KEY`, `LETTA_BASE_URL`, `LETTA_PROJECT_ID`, `BENCHMARK_DATASET_PATH` | Local reviewed LoCoMo/LongMemEval split or another reviewed local dataset file with license, version, split, and checksum metadata. | Build a Letta adapter that fixes the agent loop, memory write/read policy, model settings, and scoring path. Results may describe that configured Letta/MemGPT run only, not generic provider deletion or model forgetting. |
|
|
184
|
+
| LangGraph | LangGraph runtime with short-term checkpointer memory and long-term namespaced store. | `LANGGRAPH_CHECKPOINTER_URI`, `LANGGRAPH_STORE_URI`, `BENCHMARK_DATASET_PATH` | Same local dataset file and split used for Enigma and every competitor. | Fix graph topology, checkpoint scope, namespace policy, retrieval policy, model/tool loop, and scorer. Do not attribute graph/tool behavior solely to the memory store. |
|
|
88
185
|
| Zep | Zep service/runtime positioned around temporal Context Graph and Context Lake retrieval. | `ZEP_API_KEY`, `ZEP_PROJECT_ID`, `ZEP_BASE_URL`, `BENCHMARK_DATASET_PATH` | Same local dataset file and split; include source checksum and whether any provider-side graph state is reused or reset. | Build a Zep adapter that records ingest, session, retrieval, reset, and scoring policy. Zep’s sub-200ms retrieval positioning is a vendor/source fact, not an Enigma-measured claim until measured in the same harness. |
|
|
89
186
|
| Mem0 | Mem0 platform or open-source stack; positioned as a universal self-improving memory layer. | `MEM0_API_KEY`, `MEM0_BASE_URL`, `MEM0_PROJECT_ID`, `BENCHMARK_DATASET_PATH` | Same local dataset file and split; record Mem0 deployment flavor/version. | Build a Mem0 adapter with fixed extraction, update, retrieval, reset, and scorer behavior. Self-improving or platform behavior must be bounded to the configured run. |
|
|
90
|
-
| OpenAI native ChatGPT memory | ChatGPT consumer-app/native memory environment. It is not directly available through a public API in this harness. | No usable harness secret; `OPENAI_API_KEY` alone is not sufficient to exercise ChatGPT native memory. | No fair automated dataset run until an approved interface can load/reset/query native memory reproducibly. | Do not claim live native ChatGPT memory comparison from this repository. A future adapter would need an approved public interface, reproducible memory reset/load semantics, and provider-policy review. |
|
|
187
|
+
| OpenAI native memory (ChatGPT memory) | ChatGPT consumer-app/native memory environment. It is not directly available through a public API in this harness. | No usable harness secret; `OPENAI_API_KEY` alone is not sufficient to exercise ChatGPT native memory. | No fair automated dataset run until an approved interface can load/reset/query native memory reproducibly. | Do not claim live native ChatGPT memory comparison from this repository. A future adapter would need an approved public interface, reproducible memory reset/load semantics, and provider-policy review. |
|
|
91
188
|
| Claude memory tool | Client-side/provider-specific memory tool environment. | `CLAUDE_MEMORY_TOOL_CONFIG`, `ANTHROPIC_API_KEY`, `BENCHMARK_DATASET_PATH` | Same local dataset file and split, plus reviewed tool-state reset/export rules. | Build an adapter around the exact client/tool environment, not generic Claude model behavior. Results can only cover that configured memory-tool setup. |
|
|
92
189
|
|
|
93
190
|
## Source references for adapter planning
|
|
@@ -104,10 +201,11 @@ The report field `external_competitor_adapters` is a requirements matrix, not a
|
|
|
104
201
|
Before publishing external comparison language, capture all of the following in the benchmark report or an adjacent reviewed evidence file:
|
|
105
202
|
|
|
106
203
|
1. Package version, benchmark schema, command, timestamp, OS/runtime, and adapter version.
|
|
107
|
-
2. Dataset name, source URL, license review status, local file checksum, split, and
|
|
204
|
+
2. Dataset name, source URL, license review status, local file checksum, split, record count, and manifest schema/hash.
|
|
108
205
|
3. Secret names used as placeholders, with confirmation that no secret values are printed or persisted.
|
|
109
|
-
4. Adapter configuration: SDK/runtime version, model where applicable, memory write/read policy, reset policy, context limits, retry policy, and scoring code.
|
|
110
|
-
5.
|
|
111
|
-
6.
|
|
206
|
+
4. Adapter configuration: SDK/runtime version, model ids where applicable, memory write/read policy, reset policy, context limits, retry policy, budget caps, frozen prompts, and scoring code.
|
|
207
|
+
5. Evaluator choice and version: exact deterministic scorer, human rubric/version, or LLM-as-judge model id and frozen prompt.
|
|
208
|
+
6. Per-target raw scoring inputs retained privately when license permits, with public reports limited to safe aggregates and hashes.
|
|
209
|
+
7. Explicit boundaries separating memory-store behavior, agent-loop behavior, model behavior, provider-hosted state, and Enigma receipt verification.
|
|
112
210
|
|
|
113
|
-
Until that evidence exists, use only the
|
|
211
|
+
Until that evidence exists, use only the supported benchmark claims: Enigma can reproduce deterministic local memory-fixture operations with `enigma.memory_benchmark_suite.v1`, and Enigma can run official-dataset retrieval/evidence proxy scoring with `enigma.standard_memory_benchmark_suite.v1` when the local dataset files and manifest are supplied.
|
|
@@ -25,7 +25,7 @@ The example app prints ids, counts, roots, and verification status only. It does
|
|
|
25
25
|
|
|
26
26
|
## CLI and CI loop
|
|
27
27
|
|
|
28
|
-
The CI example installs Node 24, installs the published `enigma-memory@0.1.
|
|
28
|
+
The CI example installs Node 24, installs the published `enigma-memory@0.1.4` package, runs:
|
|
29
29
|
|
|
30
30
|
```sh
|
|
31
31
|
npx enigma quickstart --overwrite
|
|
@@ -33,9 +33,19 @@ npx enigma doctor
|
|
|
33
33
|
npm run benchmark:memory-suite -- --out benchmark-report.json
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
and then runs a small ESM import smoke. It does not require GitHub secrets, cloud provider credentials, npm tokens, private bundles,
|
|
36
|
+
and then runs a small ESM import smoke. It does not require GitHub secrets, cloud provider credentials, npm tokens, private bundles, local path assumptions, or official dataset network downloads in normal CI. The benchmark step writes a public-safe local JSON report using schema `enigma.memory_benchmark_suite.v1`; see the benchmark reproducibility guide for claim boundaries and the requirements for any future live third-party comparison.
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
The workflow also includes optional official-dataset benchmark preparation steps gated behind the manual `workflow_dispatch` input `run_standard_benchmark: true`. Normal `push` and `pull_request` runs skip them, so official dataset downloads are not required in normal CI. Enable the manual path only after the repository has reviewed network use and dataset-license handling:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
node ./node_modules/enigma-memory/scripts/download-standard-benchmarks.mjs --dry-run
|
|
42
|
+
node ./node_modules/enigma-memory/scripts/download-standard-benchmarks.mjs --execute --dataset all --out-dir .enigma/benchmarks/datasets --manifest .enigma/benchmarks/dataset-manifest.json
|
|
43
|
+
node ./node_modules/enigma-memory/scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --max-locomo-qa 25 --max-longmemeval-items 25 --top-k 5 --out .enigma/standard-memory-benchmark-sample.json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Those commands produce a dataset manifest with source URLs, byte sizes, and SHA-256 hashes plus a standard benchmark report using schema `enigma.standard_memory_benchmark_suite.v1`. The standard runner is retrieval/evidence proxy scoring only: it does not call providers, grade generated answers, or produce competitor scores.
|
|
47
|
+
|
|
48
|
+
Use the workflow as a template in a consumer repository. It is intentionally limited to install/import/doctor smoke coverage, local proof generation, and deterministic local benchmark evidence by default; it does not publish packages, deploy infrastructure, contact hosted Enigma cloud, call external memory providers, or download official benchmark datasets unless you intentionally enable `run_standard_benchmark` for a manual workflow run.
|
|
39
49
|
|
|
40
50
|
## MCP client loop
|
|
41
51
|
|
|
@@ -8,15 +8,27 @@ node scripts/run-memory-benchmarks.mjs
|
|
|
8
8
|
node scripts/run-memory-benchmarks.mjs --out ./.enigma/memory-benchmark.json
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
For official-dataset retrieval/evidence proxy scoring over operator-downloaded files:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
cd enigma
|
|
15
|
+
node scripts/run-standard-memory-benchmarks.mjs --locomo ./data/locomo10.json --out ./.enigma/locomo-standard-memory-benchmark.json
|
|
16
|
+
node scripts/run-standard-memory-benchmarks.mjs --longmemeval ./data/longmemeval_s_cleaned.json --top-k 5 --out ./.enigma/longmemeval-standard-memory-benchmark.json
|
|
17
|
+
node scripts/run-standard-memory-benchmarks.mjs --locomo ./data/locomo10.json --longmemeval ./data/longmemeval_s_cleaned.json --max-locomo-qa 100 --max-longmemeval-items 100 --out ./.enigma/standard-memory-benchmark.json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The standard report schema is `enigma.standard_memory_benchmark_suite.v1`. It reads local official dataset JSON files only, scores deterministic retrieval/evidence coverage proxies, and still excludes raw question, answer, and conversation text from reports.
|
|
21
|
+
|
|
11
22
|
The report schema is `enigma.memory_benchmark_suite.v1`. It is public-safe by design: aggregate metrics, commitments, citations, boundaries, and cross-provider profile labels are emitted, but raw fixture memory, question text, and answer text are not included.
|
|
12
23
|
|
|
13
24
|
## External standards and boundaries
|
|
14
25
|
|
|
15
26
|
- LoCoMo is the relevant long-term conversational-memory standard for multi-session QA, event summarization, and multimodal generation over long conversations. See https://snap-research.github.io/locomo/.
|
|
16
27
|
- LongMemEval is the relevant standard for information extraction, multi-session reasoning, temporal reasoning, knowledge updates, and abstention. See https://arxiv.org/abs/2410.10813.
|
|
28
|
+
- Official local inputs for the standard runner are LoCoMo `locomo10.json` from `https://raw.githubusercontent.com/snap-research/locomo/main/data/locomo10.json` and LongMemEval cleaned files `longmemeval_oracle.json`, `longmemeval_s_cleaned.json`, or `longmemeval_m_cleaned.json` from the upstream Hugging Face dataset repository.
|
|
17
29
|
- Letta's benchmark discussion is a useful boundary reminder: measured memory quality depends on the agent/framework/tool loop as well as memory-store mechanics. See https://www.letta.com/blog/benchmarking-ai-agent-memory/.
|
|
18
30
|
|
|
19
|
-
|
|
31
|
+
The fixture harness does not download or run LoCoMo, LongMemEval, provider APIs, or third-party agents. The standard harness (`run-standard-memory-benchmarks.mjs`) can score operator-supplied local LoCoMo and LongMemEval JSON files without credentials, provider APIs, or third-party SDKs.
|
|
20
32
|
|
|
21
33
|
## What the harness measures
|
|
22
34
|
|
|
@@ -26,30 +38,55 @@ The harness measures local Enigma operations only:
|
|
|
26
38
|
|
|
27
39
|
- vault remember/update operations;
|
|
28
40
|
- vault export and import;
|
|
29
|
-
- context-pack retrieval through the passport package;
|
|
30
|
-
- optimizer plan token estimates and duplicate removal;
|
|
41
|
+
- context-pack retrieval through the passport package, including deterministic local relevance filtering before optimizer tiering;
|
|
42
|
+
- optimizer plan token estimates, tiering, and duplicate removal;
|
|
31
43
|
- bundle and context-pack verification;
|
|
32
44
|
- local baseline comparisons over the same deterministic fixture questions;
|
|
33
45
|
- p50/p95 latency with `performance.now`.
|
|
34
46
|
|
|
35
47
|
Reported metrics include exact-answer recall, abstention correctness, estimated prompt tokens, duplicate candidates removed where applicable, operation latency summaries, verification status, and same-boundary cross-provider profile rows.
|
|
36
48
|
|
|
49
|
+
Enigma context-pack token improvements are achieved by local selection, not external-provider behavior: the passport compiler narrows active local memories to the deterministic query/purpose/address-relevant set before optimizer tiering and deduplication. This lowers estimated prompt tokens by excluding locally irrelevant fixture memories while preserving the same recall and abstention scoring boundary.
|
|
50
|
+
|
|
51
|
+
Numeric token and latency values in generated reports are local fixture measurements. They can change with hardware, Node/runtime version, script version, and fixture contents, so copy should cite the command and report artifact rather than treating one run as a universal score.
|
|
52
|
+
|
|
53
|
+
## Official dataset retrieval/proxy runner
|
|
54
|
+
|
|
55
|
+
`scripts/run-standard-memory-benchmarks.mjs` is the dependency-free runner for official dataset files already present on disk. It supports `--locomo <path>`, `--longmemeval <path>`, `--max-locomo-qa <n>`, `--max-longmemeval-items <n>`, `--top-k <n>` (default `5`), and optional `--out <path>`. Supplying only one dataset path scores only that dataset.
|
|
56
|
+
|
|
57
|
+
Reports include only the input file name plus the input SHA-256, not the full local path, so operator usernames or workstation directories are not persisted.
|
|
58
|
+
|
|
59
|
+
The runner parses LoCoMo `conversation` session turns as memory records and maps evidence labels such as `D1:3` or `D8:6; D9:17` to dialog IDs. It parses LongMemEval `haystack_sessions` turns as memory records, uses `has_answer: true` turns plus `answer_session_ids` as gold evidence, and treats `_abs` question IDs as abstention cases.
|
|
60
|
+
|
|
61
|
+
Rows are local methods only: `full_context`, `recency_last_n`, `keyword_filter`, and `enigma_relevance`. `keyword_filter` remains a simple deterministic lexical baseline: it selects records whose public-safe normalized terms overlap the query. `enigma_relevance` is the more production-like local Enigma approximation: it uses deterministic query expansion, term normalization and stemming, task/category and temporal/date hints, role/session metadata, phrase/proximity scoring, and final reranking for evidence diversity. It does not use LLMs, provider APIs, competitor SDKs, hosted services, raw answers, or `has_answer` evidence flags to select records.
|
|
62
|
+
|
|
63
|
+
| Standard-runner row | Retrieval boundary |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `full_context` | Scores every parsed local memory record for the dataset item without retrieval filtering. |
|
|
66
|
+
| `recency_last_n` | Scores the most recent parsed records as a deterministic recency baseline. |
|
|
67
|
+
| `keyword_filter` | Scores direct normalized query/content term overlap only, so it remains intentionally easy to audit. |
|
|
68
|
+
| `enigma_relevance` | Scores deterministic Enigma-style retrieval signals before `--top-k`: query expansion, stemming, role/session metadata, temporal hints, phrase/proximity matches, and evidence-diversity reranking. |
|
|
69
|
+
|
|
70
|
+
Because `enigma_relevance` can match normalized variants, session/role cues, temporal wording, nearby phrases, and diverse evidence-bearing turns that a direct keyword overlap can miss, the benchmark report may show it improving over `keyword_filter` on retrieval/evidence proxy metrics. Those results are whatever the generated report records for the operator-supplied files; do not hard-code unreviewed scores or restate them as LLM answer accuracy, provider quality, competitor ranking, or benchmark-leadership evidence.
|
|
71
|
+
|
|
72
|
+
The standard runner reports retrieval/evidence proxy metrics: LoCoMo evidence-hit@k and exact evidence coverage; LongMemEval turn evidence-hit@k, session evidence-hit@k, exact coverage, and abstention correctness; plus estimated prompt tokens, selected memory counts, and local latency. These are not LLM-generated answer-accuracy scores and must not be described as provider, competitor, or benchmark-leadership results.
|
|
73
|
+
|
|
37
74
|
## Local baseline comparison
|
|
38
75
|
|
|
39
|
-
`metrics.local_baseline_comparisons` compares Enigma against deterministic local baselines only. Every row scores the same private fixture questions and keeps raw memory, question text, and answer text out of the report.
|
|
76
|
+
`local_baseline_comparisons` (also mirrored at `metrics.local_baseline_comparisons`) compares Enigma against deterministic local baselines only. Every row scores the same private fixture questions and keeps raw memory, question text, and answer text out of the report.
|
|
40
77
|
|
|
41
78
|
| Row | Boundary | Reported fields |
|
|
42
79
|
| --- | --- | --- |
|
|
43
80
|
| `full_context` | Supplies every active fixture memory without optimization or deduplication. | Recall, abstention correctness, estimated prompt tokens, selected memory count, p50/p95 local latency. |
|
|
44
81
|
| `recency_last_n` | Supplies the three most recently updated active fixture memories. | Same fields; duplicate removal is marked not applicable. |
|
|
45
82
|
| `keyword_filter` | Supplies active fixture memories whose content or tags match deterministic query terms. | Same fields; duplicate removal is marked not applicable. |
|
|
46
|
-
| `enigma_context_pack` | Uses the Enigma passport context-pack compiler
|
|
83
|
+
| `enigma_context_pack` | Uses the Enigma passport context-pack compiler with deterministic local relevance filtering before optimizer tiering and deduplication. | Same fields plus duplicate-removal counts from the Enigma optimizer plan. |
|
|
47
84
|
|
|
48
85
|
These rows are local package evidence only. They do not compare hosted providers, do not use provider APIs, and do not support invoice savings, ROI, compliance, model-forgetting, or benchmark-leadership claims.
|
|
49
86
|
|
|
50
87
|
## External competitor adapter requirements
|
|
51
88
|
|
|
52
|
-
`external_competitor_adapters` is a requirements matrix, not a score table. Each row has `status: "not_run_requires_credentials_or_runtime"`, `can_run_in_this_harness: false`, `required_artifacts`, `official_doc`, an exact `boundary_reason`, and `scores_included: false`.
|
|
89
|
+
`external_competitor_adapters` is a requirements matrix, not a score table. Each row has `status: "not_run_requires_credentials_or_runtime"`, `can_run_in_this_harness: false`, `required_artifacts`, `official_doc`, `official_positioning`, an exact `boundary_reason`, and `scores_included: false`.
|
|
53
90
|
|
|
54
91
|
| Adapter | Official source | Required artifacts before scoring | Boundary reason |
|
|
55
92
|
| --- | --- | --- | --- |
|
|
@@ -60,23 +97,24 @@ These rows are local package evidence only. They do not compare hosted providers
|
|
|
60
97
|
| OpenAI ChatGPT native memory | https://help.openai.com/en/articles/8590148-memory-faq | ChatGPT account/runtime with native memory enabled; account-safe evaluation protocol; dataset prompts; evidence capture that excludes personal data and credentials. | ChatGPT native memory is a consumer-app feature rather than a public API surface available to this local package harness. |
|
|
61
98
|
| Claude memory tool | https://support.anthropic.com/en/articles/11145838-using-claude-memory | Claude/provider runtime with the memory tool available; client-side tool configuration; fixed model/tool-use policy/prompts/dataset mapping; safe evidence capture. | The memory tool is provider/client-side and requires a Claude runtime plus tool environment that this benchmark does not control. |
|
|
62
99
|
|
|
63
|
-
No external adapter row contains recall, abstention, token, latency, or ranking scores. Third-party
|
|
100
|
+
No external adapter row contains recall, abstention, token, latency, or ranking scores. Third-party rows remain requirements-only until the required credentials, runtimes, fixed agent/tool loops, and reviewed datasets are supplied and reviewed.
|
|
101
|
+
|
|
102
|
+
The `official_positioning` field records only source-attributed context needed to build a future adapter: Letta/MemGPT runtime and SDK/API-key requirements; LangGraph short-term checkpointer and long-term namespaced store memory; Zep temporal Context Graph/Context Lake positioning and retrieval-latency claim; Mem0 platform/open-source memory stack; OpenAI native consumer-app memory; and Claude provider/client-side memory tooling. None of those facts are scored or verified by this local run.
|
|
64
103
|
|
|
65
104
|
## Claim limits
|
|
66
105
|
|
|
67
|
-
The benchmark report is evidence for
|
|
106
|
+
The fixture benchmark report is evidence for the local deterministic fixture only. The standard benchmark report is evidence for retrieval/evidence proxy scoring over the operator-supplied LoCoMo or LongMemEval file only. Reported `enigma_relevance` improvements mean the local deterministic retrieval method surfaced evidence more effectively than the simpler keyword row for that run's questions, top-k, parser, and dataset file; they are not provider deletion proof, model forgetting proof, compliance certification, ROI evidence, provider invoice savings evidence, benchmark leadership proof, hosted cloud readiness, or LLM answer-accuracy evidence.
|
|
68
107
|
|
|
69
108
|
Cross-provider rows are profile labels using the same Enigma context-pack boundary. External competitor rows are adapter requirements only; they do not call, score, or rank live provider models.
|
|
70
109
|
|
|
71
110
|
`public_claims_allowed` is intentionally narrow: deterministic local fixture execution, local recall/abstention metrics, local baseline comparison, local token estimates, duplicate removal where applicable, p50/p95 local latency, Enigma bundle/context-pack verification, and explicit withholding of third-party scores until the required external artifacts exist.
|
|
72
111
|
|
|
73
|
-
##
|
|
112
|
+
## Running official datasets safely
|
|
74
113
|
|
|
75
|
-
To
|
|
114
|
+
To run real LoCoMo or LongMemEval retrieval/proxy scores without weakening claim boundaries:
|
|
76
115
|
|
|
77
|
-
1.
|
|
78
|
-
2. Preserve source
|
|
116
|
+
1. Download the official dataset files separately and pass local paths to `run-standard-memory-benchmarks.mjs`; the benchmark command itself does not fetch network resources.
|
|
117
|
+
2. Preserve source URL, license, split/file name, and checksum metadata beside private run artifacts when publishing internally.
|
|
79
118
|
3. Keep raw conversations, private memory, questions, and answers out of public reports unless the dataset license and review process explicitly allow publication.
|
|
80
|
-
4.
|
|
81
|
-
5.
|
|
82
|
-
6. Keep release notes bounded to the observed command, dataset, timestamp, and review approval.
|
|
119
|
+
4. Treat standard-runner metrics as retrieval/evidence proxy scores only. Add separate LLM answer-accuracy evaluation only when the evaluated agent/model loop is fixed, documented, and credentialed by the operator.
|
|
120
|
+
5. Keep release notes bounded to the observed command, dataset file name, input SHA-256, timestamp, top-k, max-item limits, and review approval.
|
package/docs/sdk-api.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SDK and API guide
|
|
2
2
|
|
|
3
|
-
This guide covers the public package imports for `enigma-memory@0.1.
|
|
3
|
+
This guide covers the public package imports for `enigma-memory@0.1.5`. The SDK runs locally by default: vaults, passports, context packs, receipts, relay/gateway demo state, storage contracts, metering artifacts, and settlement artifacts are package-level developer surfaces. They are not evidence of hosted Enigma cloud, provider-side deletion, provider model forgetting, token ROI, invoice savings, compliance certification, or benchmark leadership.
|
|
4
4
|
|
|
5
5
|
## Install and import style
|
|
6
6
|
|
|
@@ -2,6 +2,15 @@ name: Enigma Memory smoke
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
run_standard_benchmark:
|
|
7
|
+
description: 'Download official LoCoMo/LongMemEval data and run the bounded standard benchmark sample'
|
|
8
|
+
required: false
|
|
9
|
+
default: 'false'
|
|
10
|
+
type: choice
|
|
11
|
+
options:
|
|
12
|
+
- 'false'
|
|
13
|
+
- 'true'
|
|
5
14
|
pull_request:
|
|
6
15
|
push:
|
|
7
16
|
branches:
|
|
@@ -22,7 +31,7 @@ jobs:
|
|
|
22
31
|
run: npm init -y
|
|
23
32
|
|
|
24
33
|
- name: Install Enigma Memory
|
|
25
|
-
run: npm install enigma-memory@0.1.
|
|
34
|
+
run: npm install enigma-memory@0.1.4
|
|
26
35
|
|
|
27
36
|
- name: Expose local benchmark script
|
|
28
37
|
run: |
|
|
@@ -48,6 +57,23 @@ jobs:
|
|
|
48
57
|
cp benchmark-report.json artifacts/benchmark-report.json
|
|
49
58
|
echo "Saved public-safe benchmark report placeholder at artifacts/benchmark-report.json"
|
|
50
59
|
|
|
60
|
+
- name: Dry-run standard benchmark dataset download
|
|
61
|
+
if: ${{ github.event_name == 'workflow_dispatch' && inputs.run_standard_benchmark == 'true' }}
|
|
62
|
+
run: node ./node_modules/enigma-memory/scripts/download-standard-benchmarks.mjs --dry-run
|
|
63
|
+
|
|
64
|
+
- name: Download official benchmark datasets
|
|
65
|
+
if: ${{ github.event_name == 'workflow_dispatch' && inputs.run_standard_benchmark == 'true' }}
|
|
66
|
+
run: |
|
|
67
|
+
node ./node_modules/enigma-memory/scripts/download-standard-benchmarks.mjs --execute --dataset all --out-dir .enigma/benchmarks/datasets --manifest .enigma/benchmarks/dataset-manifest.json
|
|
68
|
+
|
|
69
|
+
- name: Run standard benchmark sample
|
|
70
|
+
if: ${{ github.event_name == 'workflow_dispatch' && inputs.run_standard_benchmark == 'true' }}
|
|
71
|
+
run: |
|
|
72
|
+
node ./node_modules/enigma-memory/scripts/run-standard-memory-benchmarks.mjs --locomo .enigma/benchmarks/datasets/locomo10.json --longmemeval .enigma/benchmarks/datasets/longmemeval_s_cleaned.json --max-locomo-qa 25 --max-longmemeval-items 25 --top-k 5 --out .enigma/standard-memory-benchmark-sample.json
|
|
73
|
+
mkdir -p artifacts
|
|
74
|
+
cp .enigma/benchmarks/dataset-manifest.json artifacts/dataset-manifest.json
|
|
75
|
+
cp .enigma/standard-memory-benchmark-sample.json artifacts/standard-memory-benchmark-sample.json
|
|
76
|
+
|
|
51
77
|
# Optional artifact upload placeholder:
|
|
52
78
|
# If your repository already permits actions/upload-artifact, uncomment a
|
|
53
79
|
# reviewed upload step like this. The example keeps the report saved in the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "enigma-memory",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Provider-agnostic AI memory passport and offline-verifiable proof layer.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -61,6 +61,8 @@
|
|
|
61
61
|
"scripts/install-enigma-local.mjs",
|
|
62
62
|
"scripts/verify-registry-install.mjs",
|
|
63
63
|
"scripts/run-memory-benchmarks.mjs",
|
|
64
|
+
"scripts/download-standard-benchmarks.mjs",
|
|
65
|
+
"scripts/run-standard-memory-benchmarks.mjs",
|
|
64
66
|
"scripts/build-installer-assets.mjs",
|
|
65
67
|
"scripts/package-browser-extension.mjs",
|
|
66
68
|
"scripts/build-production-readiness-manifest.mjs",
|
|
@@ -145,6 +147,8 @@
|
|
|
145
147
|
"infrastructure:readiness": "node scripts/infrastructure-readiness.mjs",
|
|
146
148
|
"memory:benchmark": "node scripts/memory-optimization-benchmark.mjs",
|
|
147
149
|
"benchmark:memory-suite": "node scripts/run-memory-benchmarks.mjs",
|
|
150
|
+
"benchmark:datasets": "node scripts/download-standard-benchmarks.mjs",
|
|
151
|
+
"benchmark:standard": "node scripts/run-standard-memory-benchmarks.mjs",
|
|
148
152
|
"installer:assets": "node scripts/build-installer-assets.mjs",
|
|
149
153
|
"browser:extension:package": "node scripts/package-browser-extension.mjs",
|
|
150
154
|
"production:manifest": "node scripts/build-production-readiness-manifest.mjs",
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
const DEFAULT_BUNDLE = '.enigma/bundle.json';
|
|
18
18
|
const JSONRPC_VERSION = '2.0';
|
|
19
19
|
const MCP_PROTOCOL_VERSION = '2024-11-05';
|
|
20
|
-
const SERVER_INFO = Object.freeze({ name: 'enigma-mcp-server', version: '0.1.
|
|
20
|
+
const SERVER_INFO = Object.freeze({ name: 'enigma-mcp-server', version: '0.1.5' });
|
|
21
21
|
const JSON_RPC_ID_PATTERN = /^[A-Za-z0-9._:-]{1,128}$/;
|
|
22
22
|
const JSON_RPC_ERROR = Object.freeze({
|
|
23
23
|
INVALID_REQUEST: -32600,
|