crbro-memory 1.16.0 → 2.0.1

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 (45) hide show
  1. package/README.md +57 -30
  2. package/dist/engine/brain.js +1 -1
  3. package/dist/engine/brain.js.map +1 -1
  4. package/dist/engine/cortex.d.ts +189 -1
  5. package/dist/engine/cortex.d.ts.map +1 -1
  6. package/dist/engine/cortex.js +639 -17
  7. package/dist/engine/cortex.js.map +1 -1
  8. package/dist/engine/hippocampus.d.ts +27 -1
  9. package/dist/engine/hippocampus.d.ts.map +1 -1
  10. package/dist/engine/hippocampus.js +51 -2
  11. package/dist/engine/hippocampus.js.map +1 -1
  12. package/dist/engine/maintenance.d.ts +49 -2
  13. package/dist/engine/maintenance.d.ts.map +1 -1
  14. package/dist/engine/maintenance.js +301 -28
  15. package/dist/engine/maintenance.js.map +1 -1
  16. package/dist/engine/prefrontal.d.ts +25 -7
  17. package/dist/engine/prefrontal.d.ts.map +1 -1
  18. package/dist/engine/prefrontal.js +55 -27
  19. package/dist/engine/prefrontal.js.map +1 -1
  20. package/dist/engine/synapses.d.ts +38 -0
  21. package/dist/engine/synapses.d.ts.map +1 -1
  22. package/dist/engine/synapses.js +116 -11
  23. package/dist/engine/synapses.js.map +1 -1
  24. package/dist/search/index.d.ts +14 -2
  25. package/dist/search/index.d.ts.map +1 -1
  26. package/dist/search/index.js +40 -6
  27. package/dist/search/index.js.map +1 -1
  28. package/dist/server.d.ts +7 -0
  29. package/dist/server.d.ts.map +1 -1
  30. package/dist/server.js +760 -830
  31. package/dist/server.js.map +1 -1
  32. package/dist/sync/materialize.d.ts +1 -1
  33. package/dist/sync/materialize.d.ts.map +1 -1
  34. package/dist/sync/materialize.js +40 -3
  35. package/dist/sync/materialize.js.map +1 -1
  36. package/dist/sync/ops.d.ts +9 -4
  37. package/dist/sync/ops.d.ts.map +1 -1
  38. package/dist/sync/ops.js.map +1 -1
  39. package/dist/sync/space.d.ts +27 -0
  40. package/dist/sync/space.d.ts.map +1 -1
  41. package/dist/sync/space.js +113 -1
  42. package/dist/sync/space.js.map +1 -1
  43. package/dist/types/index.d.ts +29 -0
  44. package/dist/types/index.d.ts.map +1 -1
  45. package/package.json +1 -1
@@ -41,11 +41,29 @@ class Prefrontal {
41
41
  }
42
42
  /**
43
43
  * Update the active context.
44
+ *
45
+ * A call with nothing to change is a read: it returns the context and does
46
+ * NOT touch the file. It used to rewrite last_updated on every read, so the
47
+ * timestamp said "changed just now" about a context nobody had changed.
44
48
  */
45
49
  async updateContext(updates) {
46
50
  const ctx = await this.getContext();
47
- const tasks = ctx.pending_tasks.map(toTask);
51
+ const hayCambio = updates.clear === true ||
52
+ updates.set_topics !== undefined ||
53
+ (updates.add_pending !== undefined && updates.add_pending !== '') ||
54
+ (updates.resolve_pending !== undefined && updates.resolve_pending !== '') ||
55
+ (updates.discard_pending !== undefined && updates.discard_pending !== '');
56
+ if (!hayCambio) {
57
+ return { ...ctx, resolved: [], discarded: [], written: false };
58
+ }
59
+ if (updates.clear) {
60
+ ctx.active_topics = [];
61
+ ctx.pending_tasks = [];
62
+ ctx.recently_closed = [];
63
+ }
64
+ let tasks = ctx.pending_tasks.map(toTask);
48
65
  let resolved = [];
66
+ let discarded = [];
49
67
  if (updates.set_topics) {
50
68
  ctx.active_topics = updates.set_topics;
51
69
  }
@@ -56,27 +74,44 @@ class Prefrontal {
56
74
  tasks.push({ id, text, added: (0, fs_js_1.now)() });
57
75
  }
58
76
  }
59
- if (updates.resolve_pending) {
60
- const needle = updates.resolve_pending.trim();
77
+ // Id, exact text, or a case-insensitive substring of at least 8 chars in
78
+ // either direction — the same predicate for resolving and discarding.
79
+ const matcher = (needleRaw) => {
80
+ const needle = needleRaw.trim();
61
81
  const lower = needle.toLowerCase();
62
- const hit = (t) => t.id === needle ||
82
+ return (t) => t.id === needle ||
63
83
  t.text === needle ||
64
84
  (lower.length >= 8 &&
65
85
  (t.text.toLowerCase().includes(lower) || lower.includes(t.text.toLowerCase())));
86
+ };
87
+ if (updates.resolve_pending) {
88
+ const hit = matcher(updates.resolve_pending);
66
89
  resolved = tasks.filter(hit).map(t => ({ ...t, closed: (0, fs_js_1.now)() }));
67
- const keep = tasks.filter(t => !hit(t));
90
+ tasks = tasks.filter(t => !hit(t));
68
91
  if (resolved.length > 0) {
69
92
  ctx.recently_closed = [...resolved, ...(ctx.recently_closed || [])]
70
93
  .slice(0, RECENTLY_CLOSED_CAP);
71
94
  }
72
- ctx.pending_tasks = keep;
73
95
  }
74
- else {
75
- ctx.pending_tasks = tasks;
96
+ if (updates.discard_pending) {
97
+ const hit = matcher(updates.discard_pending);
98
+ discarded = tasks.filter(hit);
99
+ tasks = tasks.filter(t => !hit(t));
76
100
  }
101
+ ctx.pending_tasks = tasks;
102
+ ctx.last_updated = (0, fs_js_1.now)();
103
+ await (0, fs_js_1.writeJSON)(this.brain.paths.activeContext(), ctx);
104
+ return { ...ctx, resolved, discarded, written: true };
105
+ }
106
+ /**
107
+ * Record which session was logged last. Nothing else in the context moves.
108
+ * Before this, nothing ever wrote last_session, so boot reported null forever.
109
+ */
110
+ async setLastSession(sessionId) {
111
+ const ctx = await this.getContext();
112
+ ctx.last_session = sessionId;
77
113
  ctx.last_updated = (0, fs_js_1.now)();
78
114
  await (0, fs_js_1.writeJSON)(this.brain.paths.activeContext(), ctx);
79
- return { ...ctx, resolved };
80
115
  }
81
116
  // ─── Hot Topics ─────────────────────────────────────────────────
82
117
  /**
@@ -94,9 +129,16 @@ class Prefrontal {
94
129
  }
95
130
  // ─── Global Map ────────────────────────────────────────────────
96
131
  /**
97
- * Build the global map — clusters of related neurons and bridges between domains.
132
+ * The global map — clusters of related neurons and bridges between domains.
133
+ *
134
+ * Computed live from the cortex and the connections on every call, and
135
+ * never written to disk. The cached global_map.json it replaces was the one
136
+ * file a maintenance dry run still rewrote, and it went stale between
137
+ * rebuilds; a map that is always current costs one pass over the neurons.
138
+ * `last_rebuilt` keeps its name so the GlobalMap shape does not change: it
139
+ * is the moment this map was computed.
98
140
  */
99
- async buildGlobalMap() {
141
+ async getGlobalMap() {
100
142
  const ids = await (0, fs_js_1.listJSONFiles)(this.brain.paths.cortex);
101
143
  const neurons = [];
102
144
  for (const id of ids) {
@@ -129,7 +171,7 @@ class Prefrontal {
129
171
  // Find bridges — neurons that connect different domains
130
172
  const bridges = [];
131
173
  for (const neuron of neurons) {
132
- if (neuron.connections.length === 0)
174
+ if (!neuron.connections || neuron.connections.length === 0)
133
175
  continue;
134
176
  // Get connected neurons' domains
135
177
  const connectedDomains = new Set();
@@ -160,25 +202,11 @@ class Prefrontal {
160
202
  }
161
203
  }
162
204
  }
163
- const globalMap = {
205
+ return {
164
206
  last_rebuilt: (0, fs_js_1.now)(),
165
207
  clusters: clusters.sort((a, b) => b.heat - a.heat),
166
208
  bridges,
167
209
  };
168
- await (0, fs_js_1.writeJSON)(this.brain.paths.globalMap(), globalMap);
169
- return globalMap;
170
- }
171
- /**
172
- * Get the current global map (read from cache, or build if missing).
173
- */
174
- async getGlobalMap(rebuild = false) {
175
- if (rebuild) {
176
- return this.buildGlobalMap();
177
- }
178
- const existing = await (0, fs_js_1.readJSON)(this.brain.paths.globalMap());
179
- if (existing)
180
- return existing;
181
- return this.buildGlobalMap();
182
210
  }
183
211
  }
184
212
  exports.Prefrontal = Prefrontal;
@@ -1 +1 @@
1
- {"version":3,"file":"prefrontal.js","sourceRoot":"","sources":["../../src/engine/prefrontal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefrontal.js","sourceRoot":"","sources":["../../src/engine/prefrontal.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,48 @@ export declare class Synapses {
11
11
  initialStrength?: number;
12
12
  /** On strengthen, keep whatever context is already there instead of replacing it. */
13
13
  keepExistingContext?: boolean;
14
+ /**
15
+ * Absolute strength 0..1, applied on create AND on strengthen instead
16
+ * of the +0.1 rule. The caller says how strong the link is; the engine
17
+ * stops guessing.
18
+ */
19
+ strength?: number;
14
20
  }): Promise<{
15
21
  synapse: Synapse;
16
22
  action: 'created' | 'strengthened';
17
23
  }>;
24
+ /**
25
+ * Remove one synapse and unlink both neurons. Absent → removed:false, no
26
+ * error: "disconnect what is not connected" is a no-op, not a failure.
27
+ */
28
+ disconnect(fromId: string, toId: string): Promise<{
29
+ synapse_id: string;
30
+ removed: boolean;
31
+ }>;
32
+ /**
33
+ * Set the strength of an EXISTING synapse without touching anything else:
34
+ * no co-access bump, no type or context change. Null when there is no such
35
+ * synapse — this never creates one.
36
+ */
37
+ setStrength(fromId: string, toId: string, strength: number): Promise<Synapse | null>;
38
+ /**
39
+ * Remove every synapse touching a neuron. Returns how many went. Used when
40
+ * a whole neuron is forgotten, after the Cortex has deleted its file.
41
+ */
42
+ removeAllFor(neuronId: string): Promise<number>;
43
+ /**
44
+ * Move every synapse of `fromId` onto `intoId`, for a neuron merge.
45
+ * - the other end is `intoId` itself → dropped (it would be a self loop);
46
+ * - `intoId` already links to the other end → merged: max strength, summed
47
+ * co-access, later last_co_access, the existing context kept;
48
+ * - otherwise the synapse is rewritten under its new id and nodes (moved).
49
+ * Neuron connection lists follow. Manifest goes down by merged + dropped.
50
+ */
51
+ rewire(fromId: string, intoId: string): Promise<{
52
+ moved: number;
53
+ merged: number;
54
+ dropped: number;
55
+ }>;
18
56
  /**
19
57
  * Get all connections for a neuron.
20
58
  */
@@ -1 +1 @@
1
- {"version":3,"file":"synapses.d.ts","sourceRoot":"","sources":["../../src/engine/synapses.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAU,MAAM,mBAAmB,CAAC;AAEtE,qBAAa,QAAQ;IACP,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEhC;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACR,uFAAuF;QACvF,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,qFAAqF;QACrF,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,GACA,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAAA;KAAE,CAAC;IAyCpE;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,KAAK,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,WAAW,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IAoCH;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAKhE;;;OAGG;IACG,KAAK,CAAC,cAAc,GAAE,MAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAwC3D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YAOhB,qBAAqB;YAUrB,0BAA0B;CAOzC"}
1
+ {"version":3,"file":"synapses.d.ts","sourceRoot":"","sources":["../../src/engine/synapses.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAU,MAAM,mBAAmB,CAAC;AAQtE,qBAAa,QAAQ;IACP,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEhC;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACR,uFAAuF;QACvF,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,qFAAqF;QACrF,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B;;;;WAIG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAAA;KAAE,CAAC;IA0CpE;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAmBjG;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAS1F;;;OAGG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrD;;;;;;;OAOG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAiDzG;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,KAAK,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,WAAW,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IAoCH;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAKhE;;;OAGG;IACG,KAAK,CAAC,cAAc,GAAE,MAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA+B3D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YAOhB,qBAAqB;YAUrB,0BAA0B;CAOzC"}
@@ -5,6 +5,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.Synapses = void 0;
6
6
  const fs_js_1 = require("../utils/fs.js");
7
7
  const ids_js_1 = require("../utils/ids.js");
8
+ /** Strength is stored in [0, 1] with three decimals, like decay writes it. */
9
+ function clampStrength(value) {
10
+ const v = Number.isFinite(value) ? Math.min(1, Math.max(0, value)) : 0;
11
+ return Math.round(v * 1000) / 1000;
12
+ }
8
13
  class Synapses {
9
14
  brain;
10
15
  constructor(brain) {
@@ -17,9 +22,10 @@ class Synapses {
17
22
  const id = (0, ids_js_1.synapseId)(fromId, toId);
18
23
  let synapse = await (0, fs_js_1.readJSON)(this.brain.paths.synapse(id));
19
24
  let action;
25
+ const absoluta = typeof options?.strength === 'number' ? clampStrength(options.strength) : undefined;
20
26
  if (synapse) {
21
27
  // Strengthen existing synapse
22
- synapse.strength = Math.min(1.0, synapse.strength + 0.1);
28
+ synapse.strength = absoluta !== undefined ? absoluta : Math.min(1.0, synapse.strength + 0.1);
23
29
  synapse.co_access_count += 1;
24
30
  synapse.last_co_access = (0, fs_js_1.now)();
25
31
  if (context && !(options?.keepExistingContext && synapse.context)) {
@@ -32,7 +38,7 @@ class Synapses {
32
38
  synapse = {
33
39
  id,
34
40
  nodes: [fromId, toId],
35
- strength: options?.initialStrength ?? 0.5,
41
+ strength: absoluta !== undefined ? absoluta : (options?.initialStrength ?? 0.5),
36
42
  type,
37
43
  context: context || '',
38
44
  co_access_count: 1,
@@ -49,6 +55,110 @@ class Synapses {
49
55
  await this.addConnectionToNeuron(toId, fromId);
50
56
  return { synapse, action };
51
57
  }
58
+ /**
59
+ * Remove one synapse and unlink both neurons. Absent → removed:false, no
60
+ * error: "disconnect what is not connected" is a no-op, not a failure.
61
+ */
62
+ async disconnect(fromId, toId) {
63
+ const id = (0, ids_js_1.synapseId)(fromId, toId);
64
+ const synapse = await (0, fs_js_1.readJSON)(this.brain.paths.synapse(id));
65
+ if (!synapse)
66
+ return { synapse_id: id, removed: false };
67
+ await (0, fs_js_1.deleteJSON)(this.brain.paths.synapse(id));
68
+ // Remove from neuron connection lists. Use the nodes the file recorded,
69
+ // not the ids the caller passed: the id is order-free and prefix-free, so
70
+ // the caller's spelling may differ from what the neurons hold.
71
+ await this.removeConnectionFromNeuron(synapse.nodes[0], synapse.nodes[1]);
72
+ await this.removeConnectionFromNeuron(synapse.nodes[1], synapse.nodes[0]);
73
+ const manifest = await this.brain.getManifest();
74
+ await this.brain.updateManifest({ total_synapses: Math.max(0, manifest.total_synapses - 1) });
75
+ return { synapse_id: id, removed: true };
76
+ }
77
+ /**
78
+ * Set the strength of an EXISTING synapse without touching anything else:
79
+ * no co-access bump, no type or context change. Null when there is no such
80
+ * synapse — this never creates one.
81
+ */
82
+ async setStrength(fromId, toId, strength) {
83
+ const id = (0, ids_js_1.synapseId)(fromId, toId);
84
+ const synapse = await (0, fs_js_1.readJSON)(this.brain.paths.synapse(id));
85
+ if (!synapse)
86
+ return null;
87
+ synapse.strength = clampStrength(strength);
88
+ await (0, fs_js_1.writeJSON)(this.brain.paths.synapse(id), synapse);
89
+ return synapse;
90
+ }
91
+ /**
92
+ * Remove every synapse touching a neuron. Returns how many went. Used when
93
+ * a whole neuron is forgotten, after the Cortex has deleted its file.
94
+ */
95
+ async removeAllFor(neuronId) {
96
+ let removed = 0;
97
+ for (const id of await (0, fs_js_1.listJSONFiles)(this.brain.paths.synapses)) {
98
+ const synapse = await (0, fs_js_1.readJSON)(this.brain.paths.synapse(id));
99
+ if (!synapse || !synapse.nodes.includes(neuronId))
100
+ continue;
101
+ const r = await this.disconnect(synapse.nodes[0], synapse.nodes[1]);
102
+ if (r.removed)
103
+ removed++;
104
+ }
105
+ return removed;
106
+ }
107
+ /**
108
+ * Move every synapse of `fromId` onto `intoId`, for a neuron merge.
109
+ * - the other end is `intoId` itself → dropped (it would be a self loop);
110
+ * - `intoId` already links to the other end → merged: max strength, summed
111
+ * co-access, later last_co_access, the existing context kept;
112
+ * - otherwise the synapse is rewritten under its new id and nodes (moved).
113
+ * Neuron connection lists follow. Manifest goes down by merged + dropped.
114
+ */
115
+ async rewire(fromId, intoId) {
116
+ const out = { moved: 0, merged: 0, dropped: 0 };
117
+ if (fromId === intoId)
118
+ return out;
119
+ for (const id of await (0, fs_js_1.listJSONFiles)(this.brain.paths.synapses)) {
120
+ const synapse = await (0, fs_js_1.readJSON)(this.brain.paths.synapse(id));
121
+ if (!synapse || !synapse.nodes.includes(fromId))
122
+ continue;
123
+ const other = synapse.nodes[0] === fromId ? synapse.nodes[1] : synapse.nodes[0];
124
+ if (other === intoId) {
125
+ await (0, fs_js_1.deleteJSON)(this.brain.paths.synapse(id));
126
+ await this.removeConnectionFromNeuron(intoId, fromId);
127
+ out.dropped++;
128
+ continue;
129
+ }
130
+ const nuevoId = (0, ids_js_1.synapseId)(intoId, other);
131
+ // Ids drop the type prefix, so two neurons differing only by prefix
132
+ // yield the same synapse id: then the file stays, only the nodes move.
133
+ const existente = nuevoId === id ? null : await (0, fs_js_1.readJSON)(this.brain.paths.synapse(nuevoId));
134
+ if (existente) {
135
+ existente.strength = clampStrength(Math.max(existente.strength, synapse.strength));
136
+ existente.co_access_count = (existente.co_access_count || 0) + (synapse.co_access_count || 0);
137
+ if ((synapse.last_co_access || '') > (existente.last_co_access || '')) {
138
+ existente.last_co_access = synapse.last_co_access;
139
+ }
140
+ await (0, fs_js_1.writeJSON)(this.brain.paths.synapse(nuevoId), existente);
141
+ await (0, fs_js_1.deleteJSON)(this.brain.paths.synapse(id));
142
+ out.merged++;
143
+ }
144
+ else {
145
+ const movido = { ...synapse, id: nuevoId, nodes: [intoId, other] };
146
+ await (0, fs_js_1.writeJSON)(this.brain.paths.synapse(nuevoId), movido);
147
+ if (nuevoId !== id)
148
+ await (0, fs_js_1.deleteJSON)(this.brain.paths.synapse(id));
149
+ out.moved++;
150
+ }
151
+ await this.removeConnectionFromNeuron(other, fromId);
152
+ await this.addConnectionToNeuron(other, intoId);
153
+ await this.addConnectionToNeuron(intoId, other);
154
+ }
155
+ const bajan = out.merged + out.dropped;
156
+ if (bajan > 0) {
157
+ const manifest = await this.brain.getManifest();
158
+ await this.brain.updateManifest({ total_synapses: Math.max(0, manifest.total_synapses - bajan) });
159
+ }
160
+ return out;
161
+ }
52
162
  /**
53
163
  * Get all connections for a neuron.
54
164
  */
@@ -109,15 +219,10 @@ class Synapses {
109
219
  decayFactor = 0.95;
110
220
  synapse.strength = Math.round(synapse.strength * decayFactor * 1000) / 1000;
111
221
  if (synapse.strength < pruneThreshold) {
112
- // Prune weak synapse
113
- const { deleteJSON } = await import('../utils/fs.js');
114
- await deleteJSON(this.brain.paths.synapse(id));
115
- // Remove from neuron connection lists
116
- await this.removeConnectionFromNeuron(synapse.nodes[0], synapse.nodes[1]);
117
- await this.removeConnectionFromNeuron(synapse.nodes[1], synapse.nodes[0]);
118
- const manifest = await this.brain.getManifest();
119
- await this.brain.updateManifest({ total_synapses: Math.max(0, manifest.total_synapses - 1) });
120
- pruned++;
222
+ // Prune weak synapse: same path as an explicit disconnect.
223
+ const r = await this.disconnect(synapse.nodes[0], synapse.nodes[1]);
224
+ if (r.removed)
225
+ pruned++;
121
226
  }
122
227
  else {
123
228
  await (0, fs_js_1.writeJSON)(this.brain.paths.synapse(id), synapse);
@@ -1 +1 @@
1
- {"version":3,"file":"synapses.js","sourceRoot":"","sources":["../../src/engine/synapses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synapses.js","sourceRoot":"","sources":["../../src/engine/synapses.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,11 @@ import type { Neuron, SearchResult } from '../types/index.js';
6
6
  * matched nothing, so every index built before it carries chunks for facts
7
7
  * that were later revised or forgotten. The bump forces those poisoned
8
8
  * indexes to rebuild once, which heals them.
9
+ * v5: retired decisions / patterns / errors / debts (entry_status sidecar,
10
+ * 2.0) are no longer chunked, so an index built before it must be rebuilt or
11
+ * it would keep serving entries that were retired.
9
12
  */
10
- export declare const INDEX_VERSION = 4;
13
+ export declare const INDEX_VERSION = 5;
11
14
  export declare class SearchEngine {
12
15
  private brain;
13
16
  private db;
@@ -69,6 +72,11 @@ export declare class SearchEngine {
69
72
  * Re-index a single neuron: drop its old chunks, insert the current ones.
70
73
  */
71
74
  indexNeuron(neuron: Neuron): Promise<void>;
75
+ /**
76
+ * Drop every chunk of a neuron that no longer exists (forgotten or merged
77
+ * away). No-op when the index is not loaded or the neuron has no chunks.
78
+ */
79
+ removeNeuron(neuronId: string): Promise<void>;
72
80
  /** Wait for the background embedding job of a rebuild, if one is running. */
73
81
  awaitEmbeddings(): Promise<void>;
74
82
  /** Write the index to disk now. */
@@ -123,7 +131,11 @@ export declare class SearchEngine {
123
131
  * re-indexed; chunks of deleted neurons are removed on the spot.
124
132
  */
125
133
  private materializeResults;
126
- /** Does the chunk still describe something the neuron holds as current? */
134
+ /**
135
+ * Does the chunk still describe something the neuron holds as current?
136
+ * A retired entry (entry_status sidecar) counts as dead, exactly like a
137
+ * superseded fact: it is still in the file, but recall must not serve it.
138
+ */
127
139
  private chunkVive;
128
140
  /**
129
141
  * Search one term. Exact first; only if a reasonably long term finds
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAQ,MAAM,mBAAmB,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAiE/B,qBAAa,YAAY;IA2BX,OAAO,CAAC,KAAK;IA1BzB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAA+B;IAEnD;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,CAAkC;IAExD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAA8B;IAC9C,gEAAgE;IAChE,OAAO,CAAC,YAAY,CAA6B;IACjD,gEAAgE;IAChE,OAAO,CAAC,SAAS,CAA8B;gBAE3B,KAAK,EAAE,KAAK;IAMhC,6DAA6D;IAC7D,aAAa,IAAI,MAAM;IAMvB;;;;;;;;OAQG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B;;;;;;;;;;OAUG;YACW,OAAO;IAQrB;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA0BhC;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhD,6EAA6E;IACvE,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,mCAAmC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,0EAA0E;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC;IAoE1B;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAChD,OAAO,CAAC,YAAY,EAAE,CAAC;IA+C1B;;;;;;OAMG;YACW,YAAY;IA0C1B,mEAAmE;YACrD,eAAe;IAY7B;;;;;;;;;;;;OAYG;YACW,kBAAkB;IA8FhC,2EAA2E;IAC3E,OAAO,CAAC,SAAS;IA2BjB;;;;;OAKG;YACW,UAAU;IAyCxB,gDAAgD;YAClC,kBAAkB;YAgHlB,GAAG;IAwBjB;;;;;;;OAOG;YACW,kBAAkB;IAkBhC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,SAAS;IAYjB;;;;OAIG;YACW,eAAe;CAO9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAQ,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAiE/B,qBAAa,YAAY;IA2BX,OAAO,CAAC,KAAK;IA1BzB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAA+B;IAEnD;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,CAAkC;IAExD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAA8B;IAC9C,gEAAgE;IAChE,OAAO,CAAC,YAAY,CAA6B;IACjD,gEAAgE;IAChE,OAAO,CAAC,SAAS,CAA8B;gBAE3B,KAAK,EAAE,KAAK;IAMhC,6DAA6D;IAC7D,aAAa,IAAI,MAAM;IAMvB;;;;;;;;OAQG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B;;;;;;;;;;OAUG;YACW,OAAO;IAQrB;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA0BhC;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhD;;;OAGG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,6EAA6E;IACvE,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,mCAAmC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,0EAA0E;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC;IAoE1B;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAChD,OAAO,CAAC,YAAY,EAAE,CAAC;IA+C1B;;;;;;OAMG;YACW,YAAY;IA0C1B,mEAAmE;YACrD,eAAe;IAY7B;;;;;;;;;;;;OAYG;YACW,kBAAkB;IA8FhC;;;;OAIG;IACH,OAAO,CAAC,SAAS;IA2BjB;;;;;OAKG;YACW,UAAU;IAyCxB,gDAAgD;YAClC,kBAAkB;YAoHlB,GAAG;IAwBjB;;;;;;;OAOG;YACW,kBAAkB;IAkBhC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,SAAS;IAYjB;;;;OAIG;YACW,eAAe;CAO9B"}
@@ -32,8 +32,11 @@ const ops_js_1 = require("../sync/ops.js");
32
32
  * matched nothing, so every index built before it carries chunks for facts
33
33
  * that were later revised or forgotten. The bump forces those poisoned
34
34
  * indexes to rebuild once, which heals them.
35
+ * v5: retired decisions / patterns / errors / debts (entry_status sidecar,
36
+ * 2.0) are no longer chunked, so an index built before it must be rebuilt or
37
+ * it would keep serving entries that were retired.
35
38
  */
36
- exports.INDEX_VERSION = 4; // 4: keys field (1.15)
39
+ exports.INDEX_VERSION = 5; // 4: keys field (1.15) · 5: entry_status (2.0)
37
40
  /** Weight given to a neuron for each *additional* chunk that matches. */
38
41
  const BREADTH_BONUS = 0.05;
39
42
  /** Cap on the breadth bonus — breadth is a tiebreaker, never the main signal. */
@@ -212,6 +215,18 @@ class SearchEngine {
212
215
  await this.flushEmbeddings();
213
216
  this.markDirty();
214
217
  }
218
+ /**
219
+ * Drop every chunk of a neuron that no longer exists (forgotten or merged
220
+ * away). No-op when the index is not loaded or the neuron has no chunks.
221
+ */
222
+ async removeNeuron(neuronId) {
223
+ if (!this.db)
224
+ return;
225
+ if (!this.chunksByNeuron.has(neuronId))
226
+ return;
227
+ await this.removeNeuronChunks(neuronId);
228
+ this.markDirty();
229
+ }
215
230
  /** Wait for the background embedding job of a rebuild, if one is running. */
216
231
  async awaitEmbeddings() {
217
232
  if (this.embedding)
@@ -538,25 +553,29 @@ class SearchEngine {
538
553
  }
539
554
  return top.map(x => x.r);
540
555
  }
541
- /** Does the chunk still describe something the neuron holds as current? */
556
+ /**
557
+ * Does the chunk still describe something the neuron holds as current?
558
+ * A retired entry (entry_status sidecar) counts as dead, exactly like a
559
+ * superseded fact: it is still in the file, but recall must not serve it.
560
+ */
542
561
  chunkVive(chunk, neuron) {
543
562
  switch (chunk.kind) {
544
563
  case 'fact':
545
564
  return (neuron.facts || []).some(f => !isRetired(f) && f.text === chunk.text);
546
565
  case 'error':
547
- return (neuron.errors || []).includes(chunk.text);
566
+ return (neuron.errors || []).includes(chunk.text) && !entryRetired(neuron, chunk.text);
548
567
  case 'debt':
549
- return (neuron.debts || []).includes(chunk.text);
568
+ return (neuron.debts || []).includes(chunk.text) && !entryRetired(neuron, chunk.text);
550
569
  case 'map':
551
570
  return neuron.map?.text === chunk.text;
552
571
  case 'pattern':
553
- return (neuron.patterns || []).includes(chunk.text);
572
+ return (neuron.patterns || []).includes(chunk.text) && !entryRetired(neuron, chunk.text);
554
573
  case 'preference':
555
574
  return (neuron.preferences || []).includes(chunk.text);
556
575
  case 'decision':
557
576
  return (neuron.decisions || []).some(d => {
558
577
  const texto = d.rationale ? `${d.text} — ${d.rationale}` : d.text;
559
- return texto === chunk.text;
578
+ return texto === chunk.text && !entryRetired(neuron, d.text);
560
579
  });
561
580
  default:
562
581
  // Headers describe the neuron itself; identity, not content.
@@ -651,6 +670,8 @@ class SearchEngine {
651
670
  for (const decision of neuron.decisions || []) {
652
671
  if (!decision || !decision.text)
653
672
  continue;
673
+ if (entryRetired(neuron, decision.text))
674
+ continue;
654
675
  const text = decision.rationale
655
676
  ? `${decision.text} — ${decision.rationale}`
656
677
  : decision.text;
@@ -668,6 +689,8 @@ class SearchEngine {
668
689
  for (const pattern of neuron.patterns || []) {
669
690
  if (!pattern)
670
691
  continue;
692
+ if (entryRetired(neuron, pattern))
693
+ continue;
671
694
  await this.put({
672
695
  ...base,
673
696
  id: (0, hash_js_1.chunkId)(neuron.id, pattern),
@@ -690,6 +713,8 @@ class SearchEngine {
690
713
  for (const err of neuron.errors || []) {
691
714
  if (!err)
692
715
  continue;
716
+ if (entryRetired(neuron, err))
717
+ continue;
693
718
  await this.put({
694
719
  ...base,
695
720
  id: (0, hash_js_1.chunkId)(neuron.id, `error:${err}`),
@@ -701,6 +726,8 @@ class SearchEngine {
701
726
  for (const debt of neuron.debts || []) {
702
727
  if (!debt)
703
728
  continue;
729
+ if (entryRetired(neuron, debt))
730
+ continue;
704
731
  await this.put({
705
732
  ...base,
706
733
  id: (0, hash_js_1.chunkId)(neuron.id, `debt:${debt}`),
@@ -846,4 +873,11 @@ exports.SearchEngine = SearchEngine;
846
873
  function isRetired(fact) {
847
874
  return fact.status === 'superseded' || fact.status === 'retracted';
848
875
  }
876
+ /**
877
+ * A decision, pattern, error or debt retired through the entry_status
878
+ * sidecar (2.0). Keyed by entryId(text), like entry_dates; absent === active.
879
+ */
880
+ function entryRetired(neuron, text) {
881
+ return !!neuron.entry_status?.[(0, ops_js_1.entryId)(text)];
882
+ }
849
883
  //# sourceMappingURL=index.js.map