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.
@@ -1,25 +1,70 @@
1
1
  # Benchmark reproducibility
2
2
 
3
- This guide explains how to reproduce the current local Enigma memory benchmark, save the public-safe JSON report, cite the external benchmark standards it is modeled after, and understand what is still required before publishing live third-party comparisons.
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.3`. The local benchmark is available through the package script and the script file it wraps:
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
- npm run benchmark:memory-suite
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 `--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.
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
- The report schema is `enigma.memory_benchmark_suite.v1`. It is designed to be public-safe: it contains aggregate metrics, commitments, citations, cross-provider profile labels, and claim boundaries. It does not include raw fixture memory, private question text, private answer text, provider transcripts, credentials, account ids, or local absolute paths.
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
- ## Reproduce and save JSON
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
- 1. Use a clean checkout containing `enigma-memory@0.1.3`.
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 and optimizer boundary. |
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 has been run and reviewed:
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
- - LoCoMo: https://snap-research.github.io/locomo/ cite for long-term conversational-memory QA, event summarization, and multimodal generation over long conversations.
66
- - LongMemEval: https://arxiv.org/abs/2410.10813 cite for information extraction, multi-session reasoning, temporal reasoning, knowledge updates, and abstention.
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 local report mirrors some task categories from those benchmarks, but it does not download LoCoMo or LongMemEval data, run their official evaluation pipelines, or claim leaderboard-equivalent results.
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 benchmark does 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 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.
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, and reviewed handling of secrets and raw benchmark data. Memory quality can change with the surrounding agent framework and tool loop, so a fair comparison must document more than the memory store.
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 report 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.
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
- ## External comparison requirements
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 datasets are supplied and reviewed: `can_run_in_this_harness: false`, `scores_included: false`, and no recall, abstention, token, latency, or ranking scores.
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 memory | 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. |
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 record count.
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. Per-target raw scoring inputs retained privately when license permits, with public reports limited to safe aggregates.
111
- 6. Explicit boundaries separating memory-store behavior, agent-loop behavior, model behavior, provider-hosted state, and Enigma receipt verification.
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 local benchmark claim: Enigma can reproduce deterministic local memory-fixture operations and emit a public-safe `enigma.memory_benchmark_suite.v1` JSON report.
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.3` package, runs:
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, or local path assumptions. 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.
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
- 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; it does not publish packages, deploy infrastructure, contact hosted Enigma cloud, or call external memory providers.
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
- This repository harness does not download or run LoCoMo, LongMemEval, provider APIs, or third-party agents. It mirrors their task categories with a deterministic local fixture so Enigma can make narrow package claims about local vault operations, context-pack generation, optimizer token estimates, export/import, verification, deduplication, abstention behavior, and latency.
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 and optimizer boundary. | Same fields plus duplicate-removal counts from the Enigma optimizer plan. |
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 claims stay blocked until the required credentials, runtimes, and datasets are supplied and reviewed.
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 this local deterministic fixture only. It is not provider deletion proof, model forgetting proof, compliance certification, ROI evidence, provider invoice savings evidence, benchmark leadership proof, hosted cloud readiness, or a substitute for external LoCoMo/LongMemEval evaluation.
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
- ## Extending with external datasets later
112
+ ## Running official datasets safely
74
113
 
75
- To extend this harness with real external benchmark datasets without weakening claim boundaries:
114
+ To run real LoCoMo or LongMemEval retrieval/proxy scores without weakening claim boundaries:
76
115
 
77
- 1. Add an explicit dataset loader that reads a local file supplied by the operator; do not add network downloads to the benchmark command.
78
- 2. Preserve source license, version, split, and checksum metadata in the report.
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. Route every candidate through the same Enigma vault, context-pack, optimizer, export, and verify operations measured here.
81
- 5. Add separate agent/model evaluation only when the evaluated agent loop is fixed and documented; do not attribute agent/tool behavior solely to the memory store.
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`. 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.
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.3
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",
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.3' });
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,