@seanhogg/builderforce-memory-mcp 2026.9.27 → 2026.9.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +25 -0
  2. package/dist/backends/memory-store.d.ts.map +1 -1
  3. package/dist/backends/memory-store.js +15 -68
  4. package/dist/backends/memory-store.js.map +1 -1
  5. package/dist/bin/http.d.ts +1 -0
  6. package/dist/bin/http.d.ts.map +1 -1
  7. package/dist/bin/http.js +9 -0
  8. package/dist/bin/http.js.map +1 -1
  9. package/dist/bin/stdio.d.ts +4 -0
  10. package/dist/bin/stdio.d.ts.map +1 -1
  11. package/dist/bin/stdio.js +7 -0
  12. package/dist/bin/stdio.js.map +1 -1
  13. package/dist/dynamic-import.d.ts +10 -0
  14. package/dist/dynamic-import.d.ts.map +1 -0
  15. package/dist/dynamic-import.js +13 -0
  16. package/dist/dynamic-import.js.map +1 -0
  17. package/dist/embedding/evermind-embedder.d.ts +0 -1
  18. package/dist/embedding/evermind-embedder.d.ts.map +1 -1
  19. package/dist/embedding/evermind-embedder.js +8 -44
  20. package/dist/embedding/evermind-embedder.js.map +1 -1
  21. package/dist/experience/file-store.d.ts +52 -0
  22. package/dist/experience/file-store.d.ts.map +1 -0
  23. package/dist/experience/file-store.js +119 -0
  24. package/dist/experience/file-store.js.map +1 -0
  25. package/dist/experience/host.d.ts +46 -0
  26. package/dist/experience/host.d.ts.map +1 -0
  27. package/dist/experience/host.js +57 -0
  28. package/dist/experience/host.js.map +1 -0
  29. package/dist/experience/tools.d.ts +16 -0
  30. package/dist/experience/tools.d.ts.map +1 -0
  31. package/dist/experience/tools.js +279 -0
  32. package/dist/experience/tools.js.map +1 -0
  33. package/dist/experience/train.d.ts +48 -0
  34. package/dist/experience/train.d.ts.map +1 -0
  35. package/dist/experience/train.js +72 -0
  36. package/dist/experience/train.js.map +1 -0
  37. package/dist/gateway-tools.d.ts +8 -0
  38. package/dist/gateway-tools.d.ts.map +1 -0
  39. package/dist/gateway-tools.js +71 -0
  40. package/dist/gateway-tools.js.map +1 -0
  41. package/dist/index.d.ts +5 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/model/evermind-package.d.ts +55 -0
  46. package/dist/model/evermind-package.d.ts.map +1 -0
  47. package/dist/model/evermind-package.js +86 -0
  48. package/dist/model/evermind-package.js.map +1 -0
  49. package/dist/persistence/shared-json-file.d.ts +65 -0
  50. package/dist/persistence/shared-json-file.d.ts.map +1 -0
  51. package/dist/persistence/shared-json-file.js +110 -0
  52. package/dist/persistence/shared-json-file.js.map +1 -0
  53. package/dist/tool-core.d.ts +28 -0
  54. package/dist/tool-core.d.ts.map +1 -0
  55. package/dist/tool-core.js +19 -0
  56. package/dist/tool-core.js.map +1 -0
  57. package/dist/tools.d.ts +9 -17
  58. package/dist/tools.d.ts.map +1 -1
  59. package/dist/tools.js +5 -73
  60. package/dist/tools.js.map +1 -1
  61. package/dist/transports/http.d.ts.map +1 -1
  62. package/dist/transports/http.js +8 -1
  63. package/dist/transports/http.js.map +1 -1
  64. package/dist/transports/sdk.d.ts.map +1 -1
  65. package/dist/transports/sdk.js +2 -4
  66. package/dist/transports/sdk.js.map +1 -1
  67. package/package.json +6 -6
  68. package/server.json +3 -3
  69. package/src/backends/memory-store.ts +16 -85
  70. package/src/bin/http.ts +12 -0
  71. package/src/bin/stdio.ts +7 -0
  72. package/src/dynamic-import.ts +12 -0
  73. package/src/embedding/evermind-embedder.ts +11 -61
  74. package/src/experience/file-store.ts +143 -0
  75. package/src/experience/host.ts +113 -0
  76. package/src/experience/tools.ts +363 -0
  77. package/src/experience/train.ts +96 -0
  78. package/src/gateway-tools.ts +97 -0
  79. package/src/index.ts +8 -1
  80. package/src/model/evermind-package.ts +127 -0
  81. package/src/persistence/shared-json-file.ts +131 -0
  82. package/src/tool-core.ts +39 -0
  83. package/src/tools.ts +13 -116
  84. package/src/transports/http.ts +8 -1
  85. package/src/transports/sdk.ts +2 -5
package/README.md CHANGED
@@ -115,6 +115,31 @@ const backend = await createLocalMemoryStoreBackend({ runtime: ssmMemoryService.
115
115
 
116
116
  Either way, recall quality improves automatically as that model is adapted/distilled.
117
117
 
118
+ ## Experience — what Evermind has done (opt-in)
119
+
120
+ Facts are one kind of learned item; **experience** is another. An *episode* is a
121
+ recorded demonstration (a program and the UI steps a person took in it), a *skill* is
122
+ what Train Once compiles from one (typed values become parameters, secrets never stored,
123
+ irreversible clicks gated for approval), and a *run* is one execution with its audit
124
+ trail. The domain lives in `@seanhogg/builderforce-memory-engine`; this server keeps it
125
+ durable and exposes it.
126
+
127
+ Set `BUILDERFORCE_MEMORY_EXPERIENCE=1` to register the tools (Synapse does). Off by
128
+ default, so ordinary coding-agent installs never carry them in their tool list.
129
+
130
+ | Tools | |
131
+ |---|---|
132
+ | `experience_info` | Snapshot file, screenshot folder, model path, counts. |
133
+ | `experience_forget_all` | Delete every episode, screenshot, skill and run (`confirm: true`). Memories and the model are untouched. |
134
+ | `episode_save` / `_list` / `_get` / `_forget` | Demonstrations. Screenshots go in `episodes/<id>/` and are deleted with the episode. |
135
+ | `skill_preview` / `_compile` / `_list` / `_get` / `_forget` / `_schedule`, `skills_due` | Train Once and routines. |
136
+ | `run_start` / `_step` / `_finish` / `_list` / `_get` | Runs and their audit trail (newest 500 kept). |
137
+ | `experience_train` | Adapt the private model (`BUILDERFORCE_MEMORY_MODEL`) on every procedure it has not learned, through the engine's one adaptation recipe. The previous model is kept as `<model>.prev`. |
138
+
139
+ Stored beside the memory snapshot as `experience.json` (shared across processes exactly
140
+ like `memory.json`) plus `episodes/`. Never served to a token-selected tenant of the
141
+ HTTP handler.
142
+
118
143
  ## One-shot install into any MCP host (not just Claude)
119
144
 
120
145
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/backends/memory-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI3F,UAAU,eAAe;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,eAAe;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC1D,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACxC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACrD,kFAAkF;IAClF,YAAY,CACR,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,eAAe,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IACxG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAaD,qBAAa,kBAAmB,YAAW,aAAa;IAEhD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAFR,KAAK,EAAE,eAAe;IACvC,wEAAwE;IACvD,OAAO,CAAC,EAAE,OAAO,YAAA;IAGtC,oFAAoF;IAC9E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIzD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKhE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAKhD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK7D,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,qFAAqF;IAC/E,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3C;AAED,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAChC,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAwMD;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC,CAkC1G"}
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/backends/memory-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAM3F,UAAU,eAAe;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,eAAe;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC1D,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACxC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACrD,kFAAkF;IAClF,YAAY,CACR,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,eAAe,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IACxG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAaD,qBAAa,kBAAmB,YAAW,aAAa;IAEhD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAFR,KAAK,EAAE,eAAe;IACvC,wEAAwE;IACvD,OAAO,CAAC,EAAE,OAAO,YAAA;IAGtC,oFAAoF;IAC9E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIzD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKhE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAKhD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK7D,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,qFAAqF;IAC/E,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3C;AAED,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAChC,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAsID;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC,CA6B1G"}
@@ -13,6 +13,8 @@
13
13
  * engine is a pure-CPU `EvermindLM`, which is what lets the headless stdio server
14
14
  * rank recall semantically (see ./evermind-embedder.ts).
15
15
  */
16
+ import { dynamicImport } from "../dynamic-import.js";
17
+ import { SharedJsonFile } from "../persistence/shared-json-file.js";
16
18
  function toHit(e, score) {
17
19
  return {
18
20
  key: e.key,
@@ -64,20 +66,6 @@ export class MemoryStoreBackend {
64
66
  await this.store.forget(key);
65
67
  }
66
68
  }
67
- /**
68
- * FNV-1a over the snapshot text. Non-cryptographic on purpose: this only has to
69
- * separate "someone rewrote the file" from "the mtime moved but the bytes are
70
- * ours", and node:crypto is deliberately not imported here (this module must stay
71
- * bundleable for the browser, where the disk path is never taken).
72
- */
73
- function contentHash(text) {
74
- let h = 0x811c9dc5;
75
- for (let i = 0; i < text.length; i++) {
76
- h ^= text.charCodeAt(i);
77
- h = Math.imul(h, 0x01000193);
78
- }
79
- return (h >>> 0).toString(16);
80
- }
81
69
  /** Parse a snapshot's text into its durable entries, or null when unusable. */
82
70
  function parseSnapshot(text) {
83
71
  let parsed;
@@ -106,22 +94,17 @@ function parseSnapshot(text) {
106
94
  * {@link DiskPersistedBackend.ensureFresh}, which re-hydrates the store from disk
107
95
  * when — and only when — the file changed underneath us.
108
96
  *
109
- * The loop guard is the {@link FileStamp} recorded immediately AFTER each of our own
110
- * writes: the next check stats the file, sees the same mtime+size, and returns
111
- * without reading a byte. A stat per call is the entire steady-state cost.
97
+ * The freshness check and the loop guard are {@link SharedJsonFile}'s — the one
98
+ * implementation every shared local store (memory, experience) uses.
112
99
  */
113
100
  class DiskPersistedBackend {
114
101
  inner;
115
102
  store;
116
103
  file;
117
- fs;
118
- /** How the file looked when this process last wrote or read it. */
119
- stamp = null;
120
- constructor(inner, store, file, fs) {
104
+ constructor(inner, store, file) {
121
105
  this.inner = inner;
122
106
  this.store = store;
123
107
  this.file = file;
124
- this.fs = fs;
125
108
  }
126
109
  async recall(query, topK) {
127
110
  await this.ensureFresh();
@@ -162,39 +145,17 @@ class DiskPersistedBackend {
162
145
  * two different paths.
163
146
  */
164
147
  async ensureFresh() {
165
- if (!this.fs.existsSync(this.file))
166
- return;
167
- let st;
168
- try {
169
- st = this.fs.statSync(this.file);
170
- }
171
- catch {
172
- return;
173
- }
174
- // Fast path: byte-for-byte what we last wrote. No read, no parse, no writes.
175
- if (this.stamp && st.mtimeMs === this.stamp.mtimeMs && st.size === this.stamp.size)
148
+ const changed = this.file.readIfChanged();
149
+ if (!changed)
176
150
  return;
177
- let text;
178
- try {
179
- text = this.fs.readFileSync(this.file, "utf8");
180
- }
181
- catch {
182
- return;
183
- }
184
- const hash = contentHash(text);
185
- // Touched (mtime moved) but identical content — re-stamp, don't re-hydrate.
186
- if (this.stamp && hash === this.stamp.hash) {
187
- this.stamp = { mtimeMs: st.mtimeMs, size: st.size, hash };
188
- return;
189
- }
190
- const entries = parseSnapshot(text);
151
+ const entries = parseSnapshot(changed.text);
191
152
  // Corrupt/partial snapshot (a half-written file, say): keep what we have
192
153
  // rather than wiping the live store, and leave the stamp alone so the next
193
154
  // call re-checks.
194
155
  if (!entries)
195
156
  return;
196
157
  await this.replaceStore(entries);
197
- this.stamp = { mtimeMs: st.mtimeMs, size: st.size, hash };
158
+ changed.accept();
198
159
  }
199
160
  /**
200
161
  * Make the in-memory store equal the snapshot: drop keys the file no longer has,
@@ -220,17 +181,7 @@ class DiskPersistedBackend {
220
181
  tags: e.tags,
221
182
  importance: e.importance,
222
183
  }));
223
- const json = JSON.stringify(out, null, 2);
224
- this.fs.writeFileSync(this.file, json);
225
- // Stamp OUR write immediately — this is what stops the watch above from
226
- // treating our own output as an external edit (and looping).
227
- try {
228
- const st = this.fs.statSync(this.file);
229
- this.stamp = { mtimeMs: st.mtimeMs, size: st.size, hash: contentHash(json) };
230
- }
231
- catch {
232
- this.stamp = null;
233
- }
184
+ this.file.write(JSON.stringify(out, null, 2));
234
185
  }
235
186
  }
236
187
  /**
@@ -240,16 +191,12 @@ class DiskPersistedBackend {
240
191
  * wants a custom backend (or the HTTP thin-client) never has to install them.
241
192
  */
242
193
  export async function createLocalMemoryStoreBackend(opts = {}) {
243
- // Indirect import prevents the bundler/tsc from resolving optional peers.
244
- const _import = (m) =>
245
- // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
246
- new Function("m", "return import(m)")(m);
247
- const memoryMod = (await _import("@seanhogg/builderforce-memory"));
194
+ const memoryMod = (await dynamicImport("@seanhogg/builderforce-memory"));
248
195
  const { MemoryStore } = memoryMod;
249
196
  // IndexedDB shim for Node. In the browser the global is used automatically.
250
197
  let idbFactory;
251
198
  try {
252
- const fake = (await _import("fake-indexeddb"));
199
+ const fake = (await dynamicImport("fake-indexeddb"));
253
200
  idbFactory = new fake.IDBFactory();
254
201
  }
255
202
  catch {
@@ -261,12 +208,12 @@ export async function createLocalMemoryStoreBackend(opts = {}) {
261
208
  return backend;
262
209
  // Disk-mirror requested. node:fs/path are loaded indirectly so a browser
263
210
  // bundle of this module never statically pulls in Node builtins.
264
- const fs = (await _import("node:fs"));
265
- const path = (await _import("node:path"));
211
+ const fs = (await dynamicImport("node:fs"));
212
+ const path = (await dynamicImport("node:path"));
266
213
  const dir = path.dirname(opts.persistFile);
267
214
  if (dir && !fs.existsSync(dir))
268
215
  fs.mkdirSync(dir, { recursive: true });
269
- const persisted = new DiskPersistedBackend(backend, store, opts.persistFile, fs);
216
+ const persisted = new DiskPersistedBackend(backend, store, new SharedJsonFile(opts.persistFile, fs));
270
217
  // Boot hydration IS the freshness check with no stamp yet — see ensureFresh().
271
218
  await persisted.ensureFresh();
272
219
  return persisted;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/backends/memory-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/backends/memory-store.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@
16
16
  * BUILDERFORCE_MEMORY_VECTORS Persistent vector-cache path.
17
17
  * BUILDERFORCE_GATEWAY_URL Gateway base URL (default https://api.builderforce.ai).
18
18
  * BUILDERFORCE_API_KEY `bfk_*` tenant key. When set, exposes the cost tools.
19
+ * BUILDERFORCE_MEMORY_EXPERIENCE '1' to expose the experience tools.
19
20
  */
20
21
  export {};
21
22
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/bin/http.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/bin/http.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG"}
package/dist/bin/http.js CHANGED
@@ -16,15 +16,20 @@
16
16
  * BUILDERFORCE_MEMORY_VECTORS Persistent vector-cache path.
17
17
  * BUILDERFORCE_GATEWAY_URL Gateway base URL (default https://api.builderforce.ai).
18
18
  * BUILDERFORCE_API_KEY `bfk_*` tenant key. When set, exposes the cost tools.
19
+ * BUILDERFORCE_MEMORY_EXPERIENCE '1' to expose the experience tools.
19
20
  */
20
21
  import http from "node:http";
21
22
  import { createLocalMemoryStoreBackend } from "../backends/memory-store.js";
22
23
  import { createRecallEmbedder } from "../embedding/index.js";
24
+ import { createExperienceHost } from "../experience/host.js";
23
25
  import { resolveMemoryFile } from "../install/server-spec.js";
24
26
  import { createMemoryHttpHandler } from "../transports/http.js";
25
27
  const memoryFile = resolveMemoryFile();
26
28
  const backend = await createLocalMemoryStoreBackend({
27
29
  dbName: process.env["BUILDERFORCE_MEMORY_DB"],
30
+ // Durable like the stdio bin — without it every restart of this server lost the
31
+ // store even though BUILDERFORCE_MEMORY_FILE was documented as its snapshot.
32
+ persistFile: memoryFile,
28
33
  // Same embedder decision as the stdio bin, from the same helper — the two
29
34
  // servers must not rank recall differently.
30
35
  runtime: (await createRecallEmbedder({ memoryFile })) ?? undefined,
@@ -36,7 +41,11 @@ const handler = createMemoryHttpHandler(backend, {
36
41
  // exposed when an API key is present; URL defaults to the public gateway.
37
42
  gatewayUrl: process.env["BUILDERFORCE_GATEWAY_URL"] ?? "https://api.builderforce.ai",
38
43
  gatewayApiKey: process.env["BUILDERFORCE_API_KEY"],
44
+ experience: await createExperienceHost({ memoryFile }),
39
45
  });
46
+ if (process.env["BUILDERFORCE_MEMORY_EXPERIENCE"] === "1" && !process.env["BUILDERFORCE_MEMORY_TOKEN"]) {
47
+ process.stderr.write("[builderforce-memory-mcp-http] experience tools stay off: they are served only to callers holding BUILDERFORCE_MEMORY_TOKEN\n");
48
+ }
40
49
  const port = Number(process.env["PORT"] ?? 8787);
41
50
  http.createServer((req, res) => {
42
51
  void handler(req, res).catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/bin/http.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC7C,0EAA0E;IAC1E,4CAA4C;IAC5C,OAAO,EAAE,CAAC,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,SAAS;CACrE,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE;IAC7C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACnD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,KAAK,GAAG;IAC7D,2EAA2E;IAC3E,0EAA0E;IAC1E,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,6BAA6B;IACpF,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;CACrD,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;AAEjD,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3B,KAAK,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACjC,IAAI,CAAC,GAAG,CAAC,WAAW;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,IAAI,IAAI,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/bin/http.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC7C,gFAAgF;IAChF,6EAA6E;IAC7E,WAAW,EAAE,UAAU;IACvB,0EAA0E;IAC1E,4CAA4C;IAC5C,OAAO,EAAE,CAAC,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,SAAS;CACrE,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE;IAC7C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACnD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,KAAK,GAAG;IAC7D,2EAA2E;IAC3E,0EAA0E;IAC1E,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,6BAA6B;IACpF,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAClD,UAAU,EAAE,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC;CACzD,CAAC,CAAC;AAEH,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,CAAC;IACrG,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,+HAA+H,CAClI,CAAC;AACN,CAAC;AAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;AAEjD,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3B,KAAK,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACjC,IAAI,CAAC,GAAG,CAAC,WAAW;YAAE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,IAAI,IAAI,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC"}
@@ -23,6 +23,10 @@
23
23
  * BUILDERFORCE_GATEWAY_URL Gateway base URL (default https://api.builderforce.ai).
24
24
  * BUILDERFORCE_API_KEY `bfk_*` tenant key. When set, exposes the cost tools
25
25
  * (token_usage, model_efficiency).
26
+ * BUILDERFORCE_MEMORY_EXPERIENCE '1' to expose the experience tools (episodes, Train
27
+ * Once skills, runs, experience_train). Kept beside the
28
+ * snapshot in experience.json + episodes/; trains the
29
+ * BUILDERFORCE_MEMORY_MODEL package.
26
30
  *
27
31
  * With no model configured recall ranks lexically (BM25) and the tool result SAYS
28
32
  * so ("Ranked by: lexical recall (fallback …)"), so a degrade is never silent.
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/bin/stdio.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG"}
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/bin/stdio.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG"}
package/dist/bin/stdio.js CHANGED
@@ -23,12 +23,17 @@
23
23
  * BUILDERFORCE_GATEWAY_URL Gateway base URL (default https://api.builderforce.ai).
24
24
  * BUILDERFORCE_API_KEY `bfk_*` tenant key. When set, exposes the cost tools
25
25
  * (token_usage, model_efficiency).
26
+ * BUILDERFORCE_MEMORY_EXPERIENCE '1' to expose the experience tools (episodes, Train
27
+ * Once skills, runs, experience_train). Kept beside the
28
+ * snapshot in experience.json + episodes/; trains the
29
+ * BUILDERFORCE_MEMORY_MODEL package.
26
30
  *
27
31
  * With no model configured recall ranks lexically (BM25) and the tool result SAYS
28
32
  * so ("Ranked by: lexical recall (fallback …)"), so a degrade is never silent.
29
33
  */
30
34
  import { createLocalMemoryStoreBackend } from "../backends/memory-store.js";
31
35
  import { createRecallEmbedder } from "../embedding/index.js";
36
+ import { createExperienceHost } from "../experience/host.js";
32
37
  import { resolveMemoryFile } from "../install/server-spec.js";
33
38
  import { runStdio } from "../transports/stdio.js";
34
39
  const memoryFile = resolveMemoryFile();
@@ -45,5 +50,7 @@ await runStdio(backend, {
45
50
  // exposed when an API key is present; URL defaults to the public gateway.
46
51
  gatewayUrl: process.env["BUILDERFORCE_GATEWAY_URL"] ?? "https://api.builderforce.ai",
47
52
  gatewayApiKey: process.env["BUILDERFORCE_API_KEY"],
53
+ // Null unless BUILDERFORCE_MEMORY_EXPERIENCE=1 — Synapse's opt-in.
54
+ experience: await createExperienceHost({ memoryFile }),
48
55
  });
49
56
  //# sourceMappingURL=stdio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/bin/stdio.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC7C,WAAW,EAAE,UAAU;IACvB,6EAA6E;IAC7E,2EAA2E;IAC3E,OAAO,EAAE,CAAC,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,SAAS;CACrE,CAAC,CAAC;AAEH,MAAM,QAAQ,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,KAAK,GAAG;IAC7D,2EAA2E;IAC3E,0EAA0E;IAC1E,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,6BAA6B;IACpF,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;CACrD,CAAC,CAAC"}
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/bin/stdio.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AAEvC,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC7C,WAAW,EAAE,UAAU;IACvB,6EAA6E;IAC7E,2EAA2E;IAC3E,OAAO,EAAE,CAAC,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,SAAS;CACrE,CAAC,CAAC;AAEH,MAAM,QAAQ,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,KAAK,GAAG;IAC7D,2EAA2E;IAC3E,0EAA0E;IAC1E,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,6BAA6B;IACpF,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAClD,mEAAmE;IACnE,UAAU,EAAE,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC;CACzD,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Load a module by name at run time without the bundler or tsc resolving it.
3
+ *
4
+ * The optional peers (the memory runtime, the engine, fake-indexeddb, the Claude
5
+ * Agent SDK) and Node builtins are reached through this, so a consumer that never
6
+ * takes those paths — a browser bundle, a custom backend, the HTTP thin client —
7
+ * never has to install or ship them.
8
+ */
9
+ export declare function dynamicImport(m: string): Promise<unknown>;
10
+ //# sourceMappingURL=dynamic-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-import.d.ts","sourceRoot":"","sources":["../src/dynamic-import.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Load a module by name at run time without the bundler or tsc resolving it.
3
+ *
4
+ * The optional peers (the memory runtime, the engine, fake-indexeddb, the Claude
5
+ * Agent SDK) and Node builtins are reached through this, so a consumer that never
6
+ * takes those paths — a browser bundle, a custom backend, the HTTP thin client —
7
+ * never has to install or ship them.
8
+ */
9
+ export function dynamicImport(m) {
10
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
11
+ return new Function("m", "return import(m)")(m);
12
+ }
13
+ //# sourceMappingURL=dynamic-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-import.js","sourceRoot":"","sources":["../src/dynamic-import.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS;IACnC,2EAA2E;IAC3E,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAqB,CAAC;AACxE,CAAC"}
@@ -64,7 +64,6 @@ export interface EvermindEmbedderOptions {
64
64
  }
65
65
  type FsLike = {
66
66
  readFileSync(path: string, enc: "utf8"): string;
67
- readFileSync(path: string): Uint8Array;
68
67
  writeFileSync(path: string, data: string): void;
69
68
  existsSync(path: string): boolean;
70
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"evermind-embedder.d.ts","sourceRoot":"","sources":["../../src/embedding/evermind-embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,oBAAoB;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAChC;AAED,yDAAyD;AACzD,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D,sEAAsE;IACtE,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACpC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAkBD,KAAK,MAAM,GAAG;IACV,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAChD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IACvC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC,CAAC;AA+BF;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CACxC,IAAI,EAAE,uBAAuB,GAC9B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAgCxC;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,sBAAsB;IAazD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAbvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAA8C;gBAGtC,KAAK,EAAE,gBAAgB,EACvB,EAAE,EAAE,MAAM,EAC3B,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;IAU9E,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAahD,iEAAiE;IACjE,KAAK,IAAI,IAAI;IAmBb,OAAO,CAAC,GAAG;IAUX;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB;;;;OAIG;IACH,OAAO,CAAC,OAAO;CAelB"}
1
+ {"version":3,"file":"evermind-embedder.d.ts","sourceRoot":"","sources":["../../src/embedding/evermind-embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,oBAAoB;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAChC;AAED,yDAAyD;AACzD,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D,sEAAsE;IACtE,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACpC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,MAAM,GAAG;IACV,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAChD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC,CAAC;AAaF;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CACxC,IAAI,EAAE,uBAAuB,GAC9B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAcxC;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,sBAAsB;IAazD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAbvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAA8C;gBAGtC,KAAK,EAAE,gBAAgB,EACvB,EAAE,EAAE,MAAM,EAC3B,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;IAU9E,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAahD,iEAAiE;IACjE,KAAK,IAAI,IAAI;IAmBb,OAAO,CAAC,GAAG;IAUX;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB;;;;OAIG;IACH,OAAO,CAAC,OAAO;CAelB"}
@@ -20,26 +20,10 @@
20
20
  * memory snapshot, written by the process that owns it, tolerant of a corrupt or
21
21
  * absent file (drop it and recompute — a cache is never the source of truth).
22
22
  */
23
+ import { dynamicImport } from "../dynamic-import.js";
24
+ import { loadEvermindPackage } from "../model/evermind-package.js";
23
25
  const DEFAULT_MAX_ENTRIES = 4000;
24
26
  const DEFAULT_FLUSH_DELAY_MS = 500;
25
- /** Indirect import so the optional engine peer is never statically resolved. */
26
- function dynamicImport(m) {
27
- // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
28
- return new Function("m", "return import(m)")(m);
29
- }
30
- /**
31
- * Load the tokenizer spec from `file`, accepting either `BPETokenizer.toObject()`
32
- * output or a Hugging Face `tokenizer.json`.
33
- */
34
- function loadCodec(engine, fs, file) {
35
- const spec = JSON.parse(fs.readFileSync(file, "utf8"));
36
- const tok = new engine.BPETokenizer();
37
- if (spec.vocab && spec.merges)
38
- tok.loadFromSpec(spec);
39
- else
40
- tok.loadHuggingFace(spec);
41
- return tok;
42
- }
43
27
  /**
44
28
  * Build a CPU text embedder from a `.evermind` package + its tokenizer, wrapped in
45
29
  * a persistent vector cache.
@@ -52,34 +36,14 @@ function loadCodec(engine, fs, file) {
52
36
  */
53
37
  export async function createEvermindEmbedder(opts) {
54
38
  try {
55
- const engine = (await dynamicImport("@seanhogg/builderforce-memory-engine"));
56
- if (!engine?.EvermindModelPackage || !engine.BPETokenizer || !engine.EvermindTextEmbedder)
39
+ const loaded = await loadEvermindPackage(opts.modelFile, opts.tokenizerFile);
40
+ if (!loaded)
57
41
  return null;
58
- const fs = (await dynamicImport("node:fs"));
59
- if (!fs.existsSync(opts.modelFile))
60
- return null;
61
- const bytes = fs.readFileSync(opts.modelFile);
62
- const blob = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
63
- const pkg = engine.EvermindModelPackage.fromBlob(blob);
64
- if (pkg.manifest.modelType !== "evermind-lm")
42
+ const engine = (await dynamicImport("@seanhogg/builderforce-memory-engine"));
43
+ if (!engine?.EvermindTextEmbedder)
65
44
  return null;
66
- // Prefer the package's OWN tokenizer. It is checksummed and cross-checked
67
- // against the checkpoint's vocab size at package time, so it cannot be the
68
- // wrong vocabulary — which a separate file silently can be. Falling back to a
69
- // file keeps every package written before the section existed working.
70
- const embedded = pkg.loadTokenizer?.() ?? null;
71
- let codec;
72
- if (embedded) {
73
- codec = embedded;
74
- }
75
- else {
76
- const tokenizerFile = opts.tokenizerFile ?? `${opts.modelFile}.tokenizer.json`;
77
- if (!fs.existsSync(tokenizerFile))
78
- return null;
79
- codec = loadCodec(engine, fs, tokenizerFile);
80
- }
81
- const inner = new engine.EvermindTextEmbedder(pkg.loadLM(), codec);
82
- return new CachedTextEmbedder(inner, fs, opts);
45
+ const inner = new engine.EvermindTextEmbedder(loaded.pkg.loadLM(), loaded.codec);
46
+ return new CachedTextEmbedder(inner, loaded.fs, opts);
83
47
  }
84
48
  catch {
85
49
  // Any failure to stand the model up is a degrade, not a fault.
@@ -1 +1 @@
1
- {"version":3,"file":"evermind-embedder.js","sourceRoot":"","sources":["../../src/embedding/evermind-embedder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evermind-embedder.js","sourceRoot":"","sources":["../../src/embedding/evermind-embedder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The engine's experience store, made durable on disk.
3
+ *
4
+ * The engine owns experience — the types, Train Once, the snapshot format and the
5
+ * reference `InMemoryExperienceStore`. This host adds only what a pure package
6
+ * cannot: the snapshot lives in `experience.json` beside `memory.json`, shared by
7
+ * every process on the machine the same way memories are (one {@link SharedJsonFile}
8
+ * implementation, so the freshness check and the loop guard are the memory store's),
9
+ * and each episode's screenshots live in `episodes/<id>/`, removed when it is forgotten.
10
+ */
11
+ import type { Adaptation, Episode, EpisodeSummary, ExperienceSnapshot, ExperienceStore, InMemoryExperienceStore, Run, RunStepLog, Skill } from "@seanhogg/builderforce-memory-engine";
12
+ import type { SharedJsonFile } from "../persistence/shared-json-file.js";
13
+ /** The filesystem calls the store makes besides the snapshot's own. */
14
+ export interface EpisodeFolders {
15
+ /**
16
+ * Delete one episode's screenshot folder, if it exists. Only ever called with a safe
17
+ * id. Forgetting everything calls this once per KNOWN episode — never a recursive
18
+ * delete of the parent, which sits beside a user-chosen memory file.
19
+ */
20
+ remove(episodeId: string): void;
21
+ }
22
+ /** Episode ids are also folder names — anything that could leave the folder is refused. */
23
+ export declare function isSafeExperienceId(id: string): boolean;
24
+ export declare class FileExperienceStore implements ExperienceStore {
25
+ private readonly inner;
26
+ private readonly file;
27
+ private readonly parse;
28
+ private readonly folders;
29
+ constructor(inner: InMemoryExperienceStore, file: SharedJsonFile, parse: (raw: unknown) => ExperienceSnapshot, folders: EpisodeFolders);
30
+ /**
31
+ * Absorb the file when another process rewrote it. Also the boot hydration. A file
32
+ * that does not parse is left unabsorbed (a half-written snapshot): the store keeps
33
+ * what it has and the next call looks again.
34
+ */
35
+ private fresh;
36
+ putEpisode(episode: Episode): Promise<void>;
37
+ getEpisode(id: string): Promise<Episode | undefined>;
38
+ listEpisodes(): Promise<EpisodeSummary[]>;
39
+ deleteEpisode(id: string): Promise<boolean>;
40
+ putSkill(skill: Skill): Promise<void>;
41
+ getSkill(id: string): Promise<Skill | undefined>;
42
+ listSkills(): Promise<Skill[]>;
43
+ deleteSkill(id: string): Promise<boolean>;
44
+ putRun(run: Run): Promise<void>;
45
+ appendRunStep(runId: string, step: RunStepLog): Promise<boolean>;
46
+ getRun(id: string): Promise<Run | undefined>;
47
+ listRuns(limit: number): Promise<Run[]>;
48
+ recordAdaptation(adaptation: Adaptation): Promise<void>;
49
+ snapshot(): Promise<ExperienceSnapshot>;
50
+ clear(): Promise<void>;
51
+ }
52
+ //# sourceMappingURL=file-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../../src/experience/file-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACR,UAAU,EACV,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,GAAG,EACH,UAAU,EACV,KAAK,EACR,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC3B;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,qBAAa,mBAAoB,YAAW,eAAe;IAEnD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,kBAAkB,EAC3C,OAAO,EAAE,cAAc;IAG5C;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAsBP,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAIpD,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIzC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO3C,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAIhD,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAI5C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAKvC,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}