crbro-memory 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,363 @@
1
+ "use strict";
2
+ // ─── CRBRO Shared Memory: spaces ─────────────────────────────────
3
+ //
4
+ // A space is one shared project, or a few. Physically it is a directory that
5
+ // happens to be a git repository, holding nothing but everyone's notes. The
6
+ // cortex itself is never in it: reading a neuron updates its access count, so
7
+ // putting the cortex under git would produce a commit every time somebody
8
+ // asked a question. On the reference brain one neuron had been read 420 times.
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.getIdentity = getIdentity;
14
+ exports.spaceDir = spaceDir;
15
+ exports.readSpace = readSpace;
16
+ exports.listSpaces = listSpaces;
17
+ exports.createSpace = createSpace;
18
+ exports.joinSpace = joinSpace;
19
+ exports.prepareShare = prepareShare;
20
+ exports.commitShare = commitShare;
21
+ exports.sharedMap = sharedMap;
22
+ exports.markShared = markShared;
23
+ exports.emitOps = emitOps;
24
+ exports.syncSpaceNow = syncSpaceNow;
25
+ exports.syncAll = syncAll;
26
+ exports.attachSync = attachSync;
27
+ const node_fs_1 = require("node:fs");
28
+ const node_path_1 = __importDefault(require("node:path"));
29
+ const fs_js_1 = require("../utils/fs.js");
30
+ const hash_js_1 = require("../utils/hash.js");
31
+ const secrets_js_1 = require("../engine/secrets.js");
32
+ const materialize_js_1 = require("./materialize.js");
33
+ const ops_js_1 = require("./ops.js");
34
+ const git_js_1 = require("./git.js");
35
+ /**
36
+ * Who this machine is. Not a security claim — anyone with push access to the
37
+ * repository can write any name — just a label so a fact says where it came
38
+ * from. Never leaves the machine except inside the notes it signs.
39
+ */
40
+ async function getIdentity(brain, author) {
41
+ const p = node_path_1.default.join(brain.paths.root, 'identity.json');
42
+ const existing = await (0, fs_js_1.readJSON)(p);
43
+ if (existing && existing.author && !author)
44
+ return existing;
45
+ const id = {
46
+ author: (author || existing?.author || 'me').toLowerCase().replace(/[^a-z0-9_-]/g, ''),
47
+ device: existing?.device || (0, hash_js_1.contentHash)(`${(0, fs_js_1.now)()}:${Math.random()}`, 6),
48
+ };
49
+ await (0, fs_js_1.writeJSON)(p, id);
50
+ return id;
51
+ }
52
+ function spaceDir(brain, name) {
53
+ return node_path_1.default.join(brain.paths.shared, name);
54
+ }
55
+ async function readSpace(brain, name) {
56
+ return (0, fs_js_1.readJSON)(node_path_1.default.join(spaceDir(brain, name), 'space.json'));
57
+ }
58
+ async function listSpaces(brain) {
59
+ try {
60
+ const entries = await node_fs_1.promises.readdir(brain.paths.shared, { withFileTypes: true });
61
+ return entries.filter(e => e.isDirectory()).map(e => e.name);
62
+ }
63
+ catch {
64
+ return [];
65
+ }
66
+ }
67
+ // ─── Creating and joining ────────────────────────────────────────
68
+ async function createSpace(brain, name, remote, author, branch = 'main') {
69
+ if (!(0, git_js_1.gitAvailable)()) {
70
+ return { ok: false, message: 'git is not installed, and it is what carries the shared memory. Install it and try again.' };
71
+ }
72
+ const dir = spaceDir(brain, name);
73
+ if (await (0, fs_js_1.fileExists)(node_path_1.default.join(dir, 'space.json'))) {
74
+ return { ok: false, message: `The space "${name}" already exists on this machine.` };
75
+ }
76
+ const id = await getIdentity(brain, author);
77
+ const pushed = await (0, git_js_1.initSpace)(dir, remote, branch);
78
+ const cfg = { v: 1, name, created_by: id.author, created: (0, fs_js_1.now)(), branch };
79
+ await (0, fs_js_1.writeJSON)(node_path_1.default.join(dir, 'space.json'), cfg);
80
+ await node_fs_1.promises.mkdir(node_path_1.default.join(dir, '.local'), { recursive: true });
81
+ (0, git_js_1.git)(['add', '-A', '.'], dir);
82
+ (0, git_js_1.git)(['commit', '-q', '-m', `CRBRO space "${name}"`], dir);
83
+ const again = (0, git_js_1.git)(['push', 'origin', `HEAD:${branch}`], dir, 30_000);
84
+ if (!pushed.ok && !again.ok) {
85
+ return {
86
+ ok: false,
87
+ message: 'The space was created locally but could not reach the remote. Check the URL and that you have push access.',
88
+ detail: (again.stderr || pushed.stderr).slice(0, 300),
89
+ };
90
+ }
91
+ return {
92
+ ok: true,
93
+ message: `Space "${name}" created and pushed. Anyone you invite to ${remote} can now join it.`,
94
+ };
95
+ }
96
+ async function joinSpace(brain, name, remote, author, branch = 'main') {
97
+ if (!(0, git_js_1.gitAvailable)()) {
98
+ return { ok: false, message: 'git is not installed, and it is what carries the shared memory. Install it and try again.' };
99
+ }
100
+ const dir = spaceDir(brain, name);
101
+ if (await (0, fs_js_1.fileExists)(node_path_1.default.join(dir, 'space.json'))) {
102
+ return { ok: false, message: `You are already in the space "${name}".` };
103
+ }
104
+ await getIdentity(brain, author);
105
+ await node_fs_1.promises.mkdir(brain.paths.shared, { recursive: true });
106
+ const r = (0, git_js_1.cloneSpace)(dir, remote, branch);
107
+ if (!r.ok) {
108
+ return {
109
+ ok: false,
110
+ message: r.reason === 'auth'
111
+ ? 'Cloned nothing: no access to that repository. Ask to be added as a collaborator.'
112
+ : 'Could not clone the space. Check the URL and your connection.',
113
+ detail: r.stderr.slice(0, 300),
114
+ };
115
+ }
116
+ await node_fs_1.promises.mkdir(node_path_1.default.join(dir, '.local'), { recursive: true });
117
+ return { ok: true, message: `Joined "${name}". Run a sync to pull in what the others already know.` };
118
+ }
119
+ // ─── Sharing a neuron ────────────────────────────────────────────
120
+ function neuronOps(neuron, id) {
121
+ const at = (0, fs_js_1.now)();
122
+ const ops = [
123
+ { v: ops_js_1.OPS_VERSION, op: 'neuron', nid: neuron.id, by: id.author, at,
124
+ name: neuron.name, ntype: neuron.type, domain: neuron.domain },
125
+ ];
126
+ for (const f of neuron.facts || []) {
127
+ if (!f.text)
128
+ continue;
129
+ const fid = f.id || (0, ops_js_1.entryId)(f.text);
130
+ ops.push({ v: ops_js_1.OPS_VERSION, op: 'fact', nid: neuron.id, by: id.author,
131
+ at: f.added || at, fid, text: f.text, conf: f.confidence ?? 1, src: f.source });
132
+ if (f.status === 'superseded' || f.status === 'retracted') {
133
+ ops.push({ v: ops_js_1.OPS_VERSION, op: 'status', nid: neuron.id, by: id.author,
134
+ at: f.revised || at, fid, to: f.status, why: f.revision_note });
135
+ }
136
+ }
137
+ for (const d of neuron.decisions || []) {
138
+ if (!d.text)
139
+ continue;
140
+ ops.push({ v: ops_js_1.OPS_VERSION, op: 'decision', nid: neuron.id, by: id.author,
141
+ at: d.date || at, did: (0, ops_js_1.entryId)(d.text), text: d.text, why: d.rationale });
142
+ }
143
+ for (const p of neuron.patterns || []) {
144
+ if (p)
145
+ ops.push({ v: ops_js_1.OPS_VERSION, op: 'pattern', nid: neuron.id, by: id.author, at, text: p });
146
+ }
147
+ for (const t of neuron.tags || []) {
148
+ if (t)
149
+ ops.push({ v: ops_js_1.OPS_VERSION, op: 'tag', nid: neuron.id, by: id.author, at, text: t });
150
+ }
151
+ // Preferences are deliberately absent and there is no op for them. They are
152
+ // the smallest field in a real brain and the likeliest to hold a key — on
153
+ // the reference brain, one of eighteen was an API key. Excluding them costs
154
+ // nothing and removes a whole class of leak by construction.
155
+ return ops;
156
+ }
157
+ /**
158
+ * Look at what would be sent. Credentials block the share outright rather than
159
+ * being redacted: silently sending someone a mangled version of a fact is
160
+ * worse than refusing and saying where the problem is.
161
+ */
162
+ async function prepareShare(brain, cortex, neuronRef, spaceName) {
163
+ const cfg = await readSpace(brain, spaceName);
164
+ if (!cfg)
165
+ return { error: `No such space: "${spaceName}". Create it or join it first.` };
166
+ const neuron = (await cortex.peek(neuronRef)) || (await cortex.findByName(neuronRef));
167
+ if (!neuron)
168
+ return { error: `Neuron not found: "${neuronRef}".` };
169
+ const blocked = [];
170
+ const revisar = (where, text) => {
171
+ for (const kind of (0, secrets_js_1.secretKinds)(text || ''))
172
+ blocked.push({ where, kind });
173
+ };
174
+ (neuron.facts || []).forEach((f, i) => revisar(`facts[${i}]`, f.text));
175
+ (neuron.decisions || []).forEach((d, i) => revisar(`decisions[${i}]`, d.text));
176
+ (neuron.patterns || []).forEach((p, i) => revisar(`patterns[${i}]`, p));
177
+ const ops = neuronOps(neuron, await getIdentity(brain));
178
+ return {
179
+ dry_run: true,
180
+ neuron_id: neuron.id,
181
+ space: spaceName,
182
+ ops_to_emit: ops.length,
183
+ blocked,
184
+ skipped_preferences: (neuron.preferences || []).length,
185
+ confirm_token: blocked.length === 0
186
+ ? (0, hash_js_1.contentHash)(`${neuron.id}:${spaceName}:${ops.length}`, 8)
187
+ : undefined,
188
+ };
189
+ }
190
+ async function commitShare(brain, cortex, neuronRef, spaceName, token) {
191
+ const prep = await prepareShare(brain, cortex, neuronRef, spaceName);
192
+ if ('error' in prep)
193
+ return { ok: false, message: prep.error };
194
+ if (prep.blocked.length > 0) {
195
+ return { ok: false, message: 'Still blocked: remove the credentials first with crbro_forget.' };
196
+ }
197
+ if (!prep.confirm_token || prep.confirm_token !== token) {
198
+ return { ok: false, message: 'That confirmation is stale. Run the dry run again and use the new token.' };
199
+ }
200
+ const neuron = (await cortex.peek(prep.neuron_id));
201
+ const id = await getIdentity(brain);
202
+ const dir = spaceDir(brain, spaceName);
203
+ const rel = (0, ops_js_1.opsRelPath)(neuron.id, id.author, id.device);
204
+ const abs = node_path_1.default.join(dir, rel);
205
+ await node_fs_1.promises.mkdir(node_path_1.default.dirname(abs), { recursive: true });
206
+ const ops = neuronOps(neuron, id);
207
+ await node_fs_1.promises.appendFile(abs, ops.map(ops_js_1.encodeOp).join('\n') + '\n', 'utf-8');
208
+ // Remember locally that this neuron belongs to a space, so future writes
209
+ // keep flowing without anyone having to share it again.
210
+ await markShared(brain, neuron.id, spaceName);
211
+ return { ok: true, message: `"${neuron.id}" is now shared in "${spaceName}".`, ops: ops.length };
212
+ }
213
+ function sharedMapPath(brain) {
214
+ return node_path_1.default.join(brain.paths.root, 'shared-map.json');
215
+ }
216
+ async function sharedMap(brain) {
217
+ return (await (0, fs_js_1.readJSON)(sharedMapPath(brain))) || {};
218
+ }
219
+ async function markShared(brain, neuronId, space) {
220
+ const m = await sharedMap(brain);
221
+ m[neuronId] = space;
222
+ await (0, fs_js_1.writeJSON)(sharedMapPath(brain), m);
223
+ }
224
+ /** Append one note for a neuron that is already shared. Silent if it is not. */
225
+ async function emitOps(brain, neuronId, make) {
226
+ const m = await sharedMap(brain);
227
+ const space = m[neuronId];
228
+ if (!space)
229
+ return;
230
+ const dir = spaceDir(brain, space);
231
+ if (!(await (0, fs_js_1.fileExists)(node_path_1.default.join(dir, 'space.json'))))
232
+ return;
233
+ const id = await getIdentity(brain);
234
+ const abs = node_path_1.default.join(dir, (0, ops_js_1.opsRelPath)(neuronId, id.author, id.device));
235
+ await node_fs_1.promises.mkdir(node_path_1.default.dirname(abs), { recursive: true });
236
+ const ops = make(id);
237
+ if (ops.length === 0)
238
+ return;
239
+ await node_fs_1.promises.appendFile(abs, ops.map(ops_js_1.encodeOp).join('\n') + '\n', 'utf-8');
240
+ }
241
+ // ─── Sync ────────────────────────────────────────────────────────
242
+ async function readAllOps(dir, neuronId) {
243
+ const opsDir = node_path_1.default.join(dir, 'neurons', neuronId, 'ops');
244
+ let files;
245
+ try {
246
+ files = await node_fs_1.promises.readdir(opsDir);
247
+ }
248
+ catch {
249
+ return [];
250
+ }
251
+ const all = [];
252
+ for (const f of files) {
253
+ if (!f.endsWith('.jsonl'))
254
+ continue;
255
+ try {
256
+ const raw = await node_fs_1.promises.readFile(node_path_1.default.join(opsDir, f), 'utf-8');
257
+ all.push(...(0, ops_js_1.decodeOps)(raw).ops);
258
+ }
259
+ catch { /* unreadable log: skip it, keep the rest */ }
260
+ }
261
+ return all;
262
+ }
263
+ async function syncSpaceNow(brain, cortex, spaceName, timeoutMs = 30_000) {
264
+ const base = {
265
+ space: spaceName, state: 'ok', neurons_touched: [], merged: [], pushed: false, message: '',
266
+ };
267
+ const cfg = await readSpace(brain, spaceName);
268
+ if (!cfg)
269
+ return { ...base, state: 'not_joined', message: `You are not in a space called "${spaceName}".` };
270
+ if (!(0, git_js_1.gitAvailable)())
271
+ return { ...base, state: 'no_git', message: 'git is not installed on this machine.' };
272
+ const dir = spaceDir(brain, spaceName);
273
+ const id = await getIdentity(brain);
274
+ const { pulled, pushed } = (0, git_js_1.syncSpace)(dir, id.author, cfg.branch || 'main', timeoutMs);
275
+ if (!pulled.ok) {
276
+ const state = (pulled.reason === 'offline' || pulled.reason === 'timeout') ? 'offline'
277
+ : pulled.reason === 'auth' ? 'auth'
278
+ : pulled.reason === 'conflict' ? 'conflict' : 'offline';
279
+ return {
280
+ ...base,
281
+ state,
282
+ message: state === 'offline'
283
+ ? 'No connection. Your memory is intact and whatever you saved will go out next time.'
284
+ : state === 'auth'
285
+ ? 'No access to that repository. Ask to be added as a collaborator.'
286
+ : 'The shared logs need a hand: someone edited them outside CRBRO.',
287
+ };
288
+ }
289
+ // Rebuild every shared neuron from everyone's notes.
290
+ let neuronIds = [];
291
+ try {
292
+ neuronIds = (await node_fs_1.promises.readdir(node_path_1.default.join(dir, 'neurons'), { withFileTypes: true }))
293
+ .filter(e => e.isDirectory()).map(e => e.name);
294
+ }
295
+ catch { /* nothing shared yet */ }
296
+ for (const nid of neuronIds) {
297
+ const ops = await readAllOps(dir, nid);
298
+ if (ops.length === 0)
299
+ continue;
300
+ const local = await cortex.peek(nid);
301
+ const { neuron, report } = (0, materialize_js_1.applyOps)(local, ops, { id: nid });
302
+ const cambio = report.facts_added + report.facts_retracted + report.facts_superseded +
303
+ report.decisions_added + report.patterns_added + report.tags_added;
304
+ if (cambio > 0 || !local) {
305
+ await cortex.replaceFromSync(neuron);
306
+ base.neurons_touched.push(nid);
307
+ base.merged.push(report);
308
+ }
309
+ await markShared(brain, nid, spaceName);
310
+ }
311
+ base.pushed = !!pushed?.ok;
312
+ const nuevos = base.merged.reduce((n, m) => n + m.facts_added, 0);
313
+ base.message = base.neurons_touched.length === 0
314
+ ? 'Up to date. Nothing new from anyone.'
315
+ : `${nuevos} new fact(s) across ${base.neurons_touched.length} shared neuron(s).`;
316
+ if (!base.pushed && pushed) {
317
+ base.message += ' Your own notes could not be pushed this time; they will go with the next sync.';
318
+ }
319
+ return base;
320
+ }
321
+ /** Sync every space. Used at boot and at consolidation, with a short budget. */
322
+ async function syncAll(brain, cortex, timeoutMs = 5_000) {
323
+ const out = [];
324
+ for (const name of await listSpaces(brain)) {
325
+ try {
326
+ out.push(await syncSpaceNow(brain, cortex, name, timeoutMs));
327
+ }
328
+ catch {
329
+ out.push({ space: name, state: 'offline', neurons_touched: [], merged: [], pushed: false,
330
+ message: 'Sync failed; local memory is untouched.' });
331
+ }
332
+ }
333
+ return out;
334
+ }
335
+ /**
336
+ * Wire a Cortex so writes to shared neurons reach the team log.
337
+ *
338
+ * Exported as one function on purpose. The indexer had exactly this shape and
339
+ * was wired only inside the MCP server, so the miner — which builds its own
340
+ * Cortex — silently never indexed anything. One entry point means the next
341
+ * caller cannot forget.
342
+ */
343
+ function attachSync(brain, cortex) {
344
+ const emitter = async (neuronId, change) => {
345
+ await emitOps(brain, neuronId, id => {
346
+ const comun = { v: ops_js_1.OPS_VERSION, nid: neuronId, by: id.author, at: change.at };
347
+ if (change.kind === 'fact') {
348
+ return [{ ...comun, op: 'fact', fid: change.fid, text: change.text,
349
+ conf: change.conf, src: change.src }];
350
+ }
351
+ if (change.kind === 'status') {
352
+ return [{ ...comun, op: 'status', fid: change.fid, to: change.to, why: change.why }];
353
+ }
354
+ if (change.kind === 'decision') {
355
+ return [{ ...comun, op: 'decision', did: (0, ops_js_1.entryId)(change.text),
356
+ text: change.text, why: change.why }];
357
+ }
358
+ return [{ ...comun, op: 'pattern', text: change.text }];
359
+ });
360
+ };
361
+ cortex.setEmitter(emitter);
362
+ }
363
+ //# sourceMappingURL=space.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space.js","sourceRoot":"","sources":["../../src/sync/space.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,+EAA+E;;;;;AAoD/E,kCAWC;AAED,4BAEC;AAED,8BAEC;AAED,gCAOC;AAID,kCAsCC;AAED,8BA8BC;AA8CD,oCAiCC;AAED,kCA+BC;AAUD,8BAEC;AAED,gCAIC;AAGD,0BAcC;AAuBD,oCAkEC;AAGD,0BAWC;AAUD,gCAmBC;AA/aD,qCAAyC;AACzC,0DAA6B;AAC7B,0CAAsE;AACtE,8CAA+C;AAC/C,qDAAmD;AACnD,qDAA8D;AAC9D,qCAA0F;AAE1F,qCAA+F;AAqC/F;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,KAAY,EAAE,MAAe;IAC7D,MAAM,CAAC,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,IAAA,gBAAQ,EAAW,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAE5D,MAAM,EAAE,GAAa;QACnB,MAAM,EAAE,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;QACtF,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAA,qBAAW,EAAC,GAAG,IAAA,WAAG,GAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;KACxE,CAAC;IACF,MAAM,IAAA,iBAAS,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAY,EAAE,IAAY;IACjD,OAAO,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,KAAY,EAAE,IAAY;IACxD,OAAO,IAAA,gBAAQ,EAAc,mBAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAC/E,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAY;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,oEAAoE;AAE7D,KAAK,UAAU,WAAW,CAC/B,KAAY,EACZ,IAAY,EACZ,MAAc,EACd,MAAc,EACd,MAAM,GAAG,MAAM;IAEf,IAAI,CAAC,IAAA,qBAAY,GAAE,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,2FAA2F,EAAE,CAAC;IAC7H,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,IAAA,kBAAU,EAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,IAAI,mCAAmC,EAAE,CAAC;IACvF,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpD,MAAM,GAAG,GAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAA,WAAG,GAAE,EAAE,MAAM,EAAE,CAAC;IACvF,MAAM,IAAA,iBAAS,EAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,kBAAE,CAAC,KAAK,CAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,IAAA,YAAG,EAAC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7B,IAAA,YAAG,EAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAA,YAAG,EAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAErE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,4GAA4G;YACrH,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,UAAU,IAAI,8CAA8C,MAAM,mBAAmB;KAC/F,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,SAAS,CAC7B,KAAY,EACZ,IAAY,EACZ,MAAc,EACd,MAAc,EACd,MAAM,GAAG,MAAM;IAEf,IAAI,CAAC,IAAA,qBAAY,GAAE,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,2FAA2F,EAAE,CAAC;IAC7H,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,IAAA,kBAAU,EAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,iCAAiC,IAAI,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,kBAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,IAAA,mBAAU,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,MAAM;gBAC1B,CAAC,CAAC,kFAAkF;gBACpF,CAAC,CAAC,+DAA+D;YACnE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SAC/B,CAAC;IACJ,CAAC;IAED,MAAM,kBAAE,CAAC,KAAK,CAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,IAAI,wDAAwD,EAAE,CAAC;AACxG,CAAC;AAED,oEAAoE;AAEpE,SAAS,SAAS,CAAC,MAAc,EAAE,EAAY;IAC7C,MAAM,EAAE,GAAG,IAAA,WAAG,GAAE,CAAC;IACjB,MAAM,GAAG,GAAS;QAChB,EAAE,CAAC,EAAE,oBAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/D,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;KACjE,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,IAAI;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,IAAA,gBAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,oBAAW,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM;YAClE,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,oBAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM;gBACpE,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,IAAI;YAAE,SAAS;QACtB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,oBAAW,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM;YACtE,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,IAAA,gBAAO,EAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,oBAAW,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,oBAAW,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,4EAA4E;IAC5E,6DAA6D;IAC7D,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAChC,KAAY,EACZ,MAAc,EACd,SAAiB,EACjB,SAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,SAAS,gCAAgC,EAAE,CAAC;IAEzF,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtF,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,SAAS,IAAI,EAAE,CAAC;IAEnE,MAAM,OAAO,GAA2C,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;QAC9C,KAAK,MAAM,IAAI,IAAI,IAAA,wBAAW,EAAC,IAAI,IAAI,EAAE,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC;IACF,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAExE,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAExD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,MAAM,CAAC,EAAE;QACpB,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,GAAG,CAAC,MAAM;QACvB,OAAO;QACP,mBAAmB,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM;QACtD,aAAa,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;YACjC,CAAC,CAAC,IAAA,qBAAW,EAAC,GAAG,MAAM,CAAC,EAAE,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,KAAY,EACZ,MAAc,EACd,SAAiB,EACjB,SAAiB,EACjB,KAAa;IAEb,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACrE,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gEAAgE,EAAE,CAAC;IAClG,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACxD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,0EAA0E,EAAE,CAAC;IAC5G,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAE,CAAC;IACpD,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEhC,MAAM,kBAAE,CAAC,KAAK,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClC,MAAM,kBAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAEvE,yEAAyE;IACzE,wDAAwD;IACxD,MAAM,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,EAAE,uBAAuB,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AACnG,CAAC;AAMD,SAAS,aAAa,CAAC,KAAY;IACjC,OAAO,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACxD,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,KAAY;IAC1C,OAAO,CAAC,MAAM,IAAA,gBAAQ,EAAY,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjE,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAY,EAAE,QAAgB,EAAE,KAAa;IAC5E,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IACpB,MAAM,IAAA,iBAAS,EAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,gFAAgF;AACzE,KAAK,UAAU,OAAO,CAAC,KAAY,EAAE,QAAgB,EAAE,IAA4B;IACxF,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,MAAM,IAAA,kBAAU,EAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO;IAE9D,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAA,mBAAU,EAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,kBAAE,CAAC,KAAK,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7B,MAAM,kBAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,oEAAoE;AAEpE,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,QAAgB;IACrD,MAAM,MAAM,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAS,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC7D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC,CAAC,4CAA4C,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,KAAY,EACZ,MAAc,EACd,SAAiB,EACjB,SAAS,GAAG,MAAM;IAElB,MAAM,IAAI,GAAe;QACvB,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;KAC3F,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,kCAAkC,SAAS,IAAI,EAAE,CAAC;IAC5G,IAAI,CAAC,IAAA,qBAAY,GAAE;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;IAE3G,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAS,EAAC,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,SAAS,CAAC,CAAC;IAEtF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YACpF,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM;gBACnC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,OAAO;YACL,GAAG,IAAI;YACP,KAAK;YACL,OAAO,EAAE,KAAK,KAAK,SAAS;gBAC1B,CAAC,CAAC,oFAAoF;gBACtF,CAAC,CAAC,KAAK,KAAK,MAAM;oBAClB,CAAC,CAAC,kEAAkE;oBACpE,CAAC,CAAC,iEAAiE;SACtE,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,IAAI,SAAS,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,SAAS,GAAG,CAAC,MAAM,kBAAE,CAAC,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aAC/E,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;IAEpC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE/B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,yBAAQ,EAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,gBAAgB;YAClF,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC;QACrE,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;QAC9C,CAAC,CAAC,sCAAsC;QACxC,CAAC,CAAC,GAAG,MAAM,uBAAuB,IAAI,CAAC,eAAe,CAAC,MAAM,oBAAoB,CAAC;IACpF,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,IAAI,iFAAiF,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AACzE,KAAK,UAAU,OAAO,CAAC,KAAY,EAAE,MAAc,EAAE,SAAS,GAAG,KAAK;IAC3E,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK;gBACtF,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,UAAU,CAAC,KAAY,EAAE,MAAc;IACrD,MAAM,OAAO,GAAY,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QAClD,MAAM,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE;YAClC,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,oBAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAC9E,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;wBACxD,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAQ,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAQ,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,IAAA,gBAAO,EAAC,MAAM,CAAC,IAAI,CAAC;wBACnD,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAQ,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAQ,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
@@ -23,6 +23,10 @@ export interface Decision {
23
23
  text: string;
24
24
  date: string;
25
25
  rationale: string;
26
+ /** Content hash, so the same decision from two people lines up. */
27
+ id?: string;
28
+ /** Who recorded it, when it arrived from a teammate. */
29
+ by?: string;
26
30
  }
27
31
  export type NeuronType = 'project' | 'tech' | 'lang' | 'person' | 'domain' | 'process' | 'protocol';
28
32
  export interface Neuron {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crbro-memory",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "mcpName": "io.github.Octonove/crbro-memory",
5
5
  "description": "CRBRO — Persistent neural memory for AI. A biological file-based MCP server that gives your AI long-term memory across sessions.",
6
6
  "main": "dist/index.js",