crbro-memory 1.5.1 → 1.6.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.
- package/README.md +174 -170
- package/dist/engine/brain.d.ts +2 -0
- package/dist/engine/brain.d.ts.map +1 -1
- package/dist/engine/brain.js +4 -0
- package/dist/engine/brain.js.map +1 -1
- package/dist/engine/cortex.d.ts +33 -0
- package/dist/engine/cortex.d.ts.map +1 -1
- package/dist/engine/cortex.js +226 -98
- package/dist/engine/cortex.js.map +1 -1
- package/dist/engine/heat.d.ts.map +1 -1
- package/dist/engine/heat.js +14 -2
- package/dist/engine/heat.js.map +1 -1
- package/dist/engine/maintenance.d.ts +13 -0
- package/dist/engine/maintenance.d.ts.map +1 -1
- package/dist/engine/maintenance.js +80 -7
- package/dist/engine/maintenance.js.map +1 -1
- package/dist/engine/secrets.d.ts +21 -0
- package/dist/engine/secrets.d.ts.map +1 -0
- package/dist/engine/secrets.js +86 -0
- package/dist/engine/secrets.js.map +1 -0
- package/dist/miner/index.d.ts +1 -0
- package/dist/miner/index.d.ts.map +1 -1
- package/dist/miner/index.js +10 -0
- package/dist/miner/index.js.map +1 -1
- package/dist/search/index.d.ts +12 -0
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +39 -3
- package/dist/search/index.js.map +1 -1
- package/dist/search/tokenize.d.ts +10 -0
- package/dist/search/tokenize.d.ts.map +1 -1
- package/dist/search/tokenize.js +32 -0
- package/dist/search/tokenize.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +85 -2
- package/dist/server.js.map +1 -1
- package/dist/utils/fs.d.ts +22 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +62 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/ids.d.ts +9 -0
- package/dist/utils/ids.d.ts.map +1 -1
- package/dist/utils/ids.js +21 -1
- package/dist/utils/ids.js.map +1 -1
- package/dist/utils/lock.d.ts +11 -0
- package/dist/utils/lock.d.ts.map +1 -0
- package/dist/utils/lock.js +121 -0
- package/dist/utils/lock.js.map +1 -0
- package/package.json +53 -53
package/dist/server.js
CHANGED
|
@@ -16,7 +16,7 @@ const maintenance_js_1 = require("./engine/maintenance.js");
|
|
|
16
16
|
function createServer() {
|
|
17
17
|
const server = new mcp_js_1.McpServer({
|
|
18
18
|
name: 'crbro-memory',
|
|
19
|
-
version: '1.
|
|
19
|
+
version: '1.6.0',
|
|
20
20
|
});
|
|
21
21
|
// ─── Initialize engines ──────────────────────────────────────
|
|
22
22
|
const brain = new brain_js_1.Brain();
|
|
@@ -154,6 +154,12 @@ function createServer() {
|
|
|
154
154
|
neuron_id: result.neuron.id,
|
|
155
155
|
action: result.action,
|
|
156
156
|
superseded_facts: result.superseded,
|
|
157
|
+
redacted: result.redacted.length > 0 ? result.redacted : undefined,
|
|
158
|
+
redaction_note: result.redacted.length > 0
|
|
159
|
+
? `Stored, but ${result.redacted.length} credential(s) were replaced with a marker: ` +
|
|
160
|
+
`${result.redacted.join(', ')}. The sentence around them was kept. ` +
|
|
161
|
+
'Tell the user, and do not try to store the value again.'
|
|
162
|
+
: undefined,
|
|
157
163
|
total_facts: result.neuron.facts.length,
|
|
158
164
|
total_decisions: result.neuron.decisions.length,
|
|
159
165
|
total_patterns: result.neuron.patterns.length,
|
|
@@ -537,9 +543,10 @@ function createServer() {
|
|
|
537
543
|
server.tool('crbro_maintenance', 'Run brain maintenance: recalculate heat, prune weak synapses, check integrity and rebuild the search index. Archiving cold neurons is OFF unless you ask for it - on a mature brain most neurons look cold, and archived ones stop being searchable.', {
|
|
538
544
|
dry_run: zod_1.z.boolean().optional().describe('If true, only report what would happen without acting'),
|
|
539
545
|
archive: zod_1.z.boolean().optional().describe('Also move cold neurons (heat < 0.05, untouched 90+ days) out of the cortex. Off by default. Run with dry_run first and read archivable_neurons before turning this on.'),
|
|
546
|
+
purge_boilerplate: zod_1.z.boolean().optional().describe('Also delete contentless facts left by early versions of the miner ("Referenced in: file.md"). Off by default; every run reports how many there are.'),
|
|
540
547
|
}, async (args) => {
|
|
541
548
|
try {
|
|
542
|
-
const report = await maintenance.run(args.dry_run, { archive: args.archive });
|
|
549
|
+
const report = await maintenance.run(args.dry_run, { archive: args.archive, purgeBoilerplate: args.purge_boilerplate });
|
|
543
550
|
return {
|
|
544
551
|
content: [{
|
|
545
552
|
type: 'text',
|
|
@@ -637,6 +644,82 @@ function createServer() {
|
|
|
637
644
|
};
|
|
638
645
|
}
|
|
639
646
|
});
|
|
647
|
+
// ═══════════════════════════════════════════════════════════════
|
|
648
|
+
// TOOL 17: crbro_audit — What should not be in the brain
|
|
649
|
+
// ═══════════════════════════════════════════════════════════════
|
|
650
|
+
server.tool('crbro_audit', 'Check the brain for credentials that were stored before they could be filtered out — API keys, tokens, passwords. Reports which neurons hold them and what kind, never the values themselves. Run it once after upgrading, and any time you suspect a secret was pasted into a conversation. Use crbro_forget to remove what it finds.', {}, async () => {
|
|
651
|
+
try {
|
|
652
|
+
const hallazgos = await cortex.auditSecrets();
|
|
653
|
+
const total = hallazgos.reduce((n, h) => n + h.facts, 0);
|
|
654
|
+
return {
|
|
655
|
+
content: [{
|
|
656
|
+
type: 'text',
|
|
657
|
+
text: JSON.stringify({
|
|
658
|
+
neurons_affected: hallazgos.length,
|
|
659
|
+
facts_affected: total,
|
|
660
|
+
findings: hallazgos,
|
|
661
|
+
message: hallazgos.length === 0
|
|
662
|
+
? 'No credentials found in the brain.'
|
|
663
|
+
: `${total} fact(s) across ${hallazgos.length} neuron(s) contain something that looks like a credential. ` +
|
|
664
|
+
'They are also inside the search index, so recall can return them. ' +
|
|
665
|
+
'Remove them with crbro_forget, then rotate the credentials — assume they are compromised.',
|
|
666
|
+
note: 'Values are never shown here, by design.',
|
|
667
|
+
}, null, 2),
|
|
668
|
+
}],
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
catch (err) {
|
|
672
|
+
return {
|
|
673
|
+
content: [{
|
|
674
|
+
type: 'text',
|
|
675
|
+
text: `CRBRO audit error: ${err instanceof Error ? err.message : String(err)}`,
|
|
676
|
+
}],
|
|
677
|
+
isError: true,
|
|
678
|
+
};
|
|
679
|
+
}
|
|
680
|
+
});
|
|
681
|
+
// ═══════════════════════════════════════════════════════════════
|
|
682
|
+
// TOOL 18: crbro_forget — Remove knowledge for good
|
|
683
|
+
// ═══════════════════════════════════════════════════════════════
|
|
684
|
+
server.tool('crbro_forget', 'Permanently remove facts from a neuron. This is for things that must not exist at all — a credential, personal data, something stored by mistake. For knowledge that merely stopped being true, use crbro_revise instead, which keeps the history. The whole neuron is copied to .quarantine/ before anything is removed, so a mistake can be undone by hand. Always tell the user what you are about to remove and get their agreement first.', {
|
|
685
|
+
neuron: zod_1.z.string().describe('Neuron ID or name holding the facts'),
|
|
686
|
+
facts: zod_1.z.array(zod_1.z.string()).describe('Which facts to remove: their ids, or their exact text'),
|
|
687
|
+
}, async (args) => {
|
|
688
|
+
try {
|
|
689
|
+
const r = await cortex.forget(args.neuron, args.facts);
|
|
690
|
+
if (!r.neuron_id) {
|
|
691
|
+
return {
|
|
692
|
+
content: [{
|
|
693
|
+
type: 'text',
|
|
694
|
+
text: `Neuron not found: "${args.neuron}". Use crbro_recall or crbro_audit to find the right one.`,
|
|
695
|
+
}],
|
|
696
|
+
};
|
|
697
|
+
}
|
|
698
|
+
return {
|
|
699
|
+
content: [{
|
|
700
|
+
type: 'text',
|
|
701
|
+
text: JSON.stringify({
|
|
702
|
+
neuron_id: r.neuron_id,
|
|
703
|
+
removed: r.removed,
|
|
704
|
+
backup: r.backup,
|
|
705
|
+
message: r.removed > 0
|
|
706
|
+
? `${r.removed} fact(s) removed from "${r.neuron_id}". A copy of the neuron as it was is in ${r.backup}. ` +
|
|
707
|
+
'If any of them was a credential, rotate it: it existed on disk and in the index.'
|
|
708
|
+
: 'Nothing matched. Pass the fact id from crbro_recall, or its exact text.',
|
|
709
|
+
}, null, 2),
|
|
710
|
+
}],
|
|
711
|
+
};
|
|
712
|
+
}
|
|
713
|
+
catch (err) {
|
|
714
|
+
return {
|
|
715
|
+
content: [{
|
|
716
|
+
type: 'text',
|
|
717
|
+
text: `CRBRO forget error: ${err instanceof Error ? err.message : String(err)}`,
|
|
718
|
+
}],
|
|
719
|
+
isError: true,
|
|
720
|
+
};
|
|
721
|
+
}
|
|
722
|
+
});
|
|
640
723
|
return server;
|
|
641
724
|
}
|
|
642
725
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,2CAA2C;;AAc3C,oCA2tBC;AAvuBD,oEAAoE;AACpE,6BAAwB;AAExB,gDAA0C;AAC1C,kDAA4C;AAC5C,sDAAgD;AAChD,8CAA8C;AAC9C,4DAAsD;AACtD,0DAAoD;AACpD,gDAAiD;AACjD,4DAAsD;AAEtD,SAAgB,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gEAAgE;IAChE,MAAM,KAAK,GAAG,IAAI,gBAAK,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,kBAAM,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,sBAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,4BAAW,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,0BAAU,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAI,4BAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAEhH,4EAA4E;IAC5E,8EAA8E;IAC9E,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,4EAA4E;IAC5E,6EAA6E;IAC7E,kDAAkD;IAElD,kEAAkE;IAClE,qCAAqC;IACrC,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,6fAA6f,EAC7f,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YAClC,2BAA2B;YAC3B,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;YAE1B,MAAM,QAAQ,GAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;YAEpC,+BAA+B;YAC/B,yEAAyE;YACzE,sEAAsE;YACtE,uEAAuE;YACvE,sBAAsB;YACtB,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAC3D,SAAS,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,YAAY,EAAE,CACjE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAEtC,QAAQ,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACnE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM;iBAC/D,CAAC,CAAC,CAAC;gBAEJ,QAAQ,CAAC,oBAAoB;oBAC3B,kEAAkE;wBAClE,gDAAgD,GAAG,aAAa,CAAC;YACrE,CAAC;YAED,yEAAyE;YACzE,0EAA0E;YAC1E,6CAA6C;YAC7C,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,QAAQ,CAAC,gBAAgB;oBACvB,qFAAqF;wBACrF,0FAA0F;wBAC1F,yEAAyE,CAAC;YAC9E,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;qBACxC,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAC9E,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,sCAAsC;IACtC,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,gGAAgG,EAChG,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;4BACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;4BACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;4BACvC,cAAc,EAAE,QAAQ,CAAC,cAAc;4BACvC,UAAU,EAAE,QAAQ,CAAC,UAAU;4BAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;4BAC7B,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;yBAChD,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAChF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,mDAAmD;IACnD,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,aAAa,EACb,yXAAyX,EACzX;QACE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;QAC3F,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAClG,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACjE,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAClG,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACpG,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACpE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8LAA8L,CAAC;QACzO,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sHAAsH,CAAC;KAC5K,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;gBAChF,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,kEAAkE;YAElE,iEAAiE;YACjE,wEAAwE;YACxE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,sBAAsB,IAAI,CAAC,KAAK,yBAAyB;yBAChE,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;4BAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,gBAAgB,EAAE,MAAM,CAAC,UAAU;4BACnC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;4BACvC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM;4BAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;4BAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS;gCAClC,CAAC,CAAC,eAAe,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAgB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;gCACzE,CAAC,CAAC,mBAAmB,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ;oCAC7D,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,2BAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;yBACrF,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAC/E,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,gDAAgD;IAChD,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,4NAA4N,EAC5N;QACE,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;QAC1F,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACvF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACxF,kBAAkB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;KACpH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,CAAQ,gCAAgC;YAC3C,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1C,IAAI,MAAM,EAAE,CAAC;oBACX,yBAAyB;oBACzB,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,sBAAsB,IAAI,CAAC,EAAE,iDAAiD;yBACrF,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,sEAAsE;YACtE,wEAAwE;YACxE,qCAAqC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC9C,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CACzF,CAAC;YACF,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAC3D,CAAC;YACF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;YAEnD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,GAAG,MAAM;4BACT,KAAK,EAAE,IAAI;4BACX,gBAAgB,EAAE;gCAChB,KAAK,EAAE,OAAO,CAAC,MAAM;gCACrB,QAAQ,EAAE,IAAI,CAAC,MAAM;gCACrB,MAAM;gCACN,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;gCAC/C,KAAK,EAAE,cAAc;gCACrB,iBAAiB,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;6BAChE;yBACF,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAChF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,uCAAuC;IACvC,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,uGAAuG,EACvG;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAClF,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACjI,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACxE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAClE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,OAAO,CAAC,MAAM;4BACrB,OAAO;yBACR,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACjF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,0CAA0C;IAC1C,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,0bAA0b,EAC1b;QACE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACxF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC1D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAClE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC/D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,aAAa,EAAE,OAAO,CAAC,MAAM;4BAC7B,OAAO;4BACP,IAAI,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;gCACxB,CAAC,CAAC,2GAA2G;gCAC7G,CAAC,CAAC,0HAA0H;yBAC/H,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAChF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,sDAAsD;IACtD,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,uIAAuI,EACvI;QACE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC3C,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACxH,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAC3E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAE9F,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;4BAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;4BACjC,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS;gCAClC,CAAC,CAAC,gBAAgB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG;gCACzD,CAAC,CAAC,yBAAyB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,eAAe,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;yBAC5F,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACjF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,qDAAqD;IACrD,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,+GAA+G,EAC/G;QACE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAClE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KACnF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAEhG,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,iBAAiB,EAAE,WAAW,CAAC,MAAM;4BACrC,WAAW;yBACZ,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACrF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,4CAA4C;IAC5C,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,sGAAsG,EACtG;QACE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACxE,cAAc,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrF,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC7E,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC/E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;gBACtD,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;YAEH,0CAA0C;YAC1C,MAAM,UAAU,CAAC,aAAa,CAAC;gBAC7B,UAAU,EAAE,IAAI,CAAC,cAAc;aAChC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,UAAU,EAAE,OAAO,CAAC,UAAU;4BAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,OAAO,EAAE,gCAAgC;yBAC1C,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACrF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,iDAAiD;IACjD,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,gDAAgD,EAChD;QACE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KACnF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEvE,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,QAAQ,CAAC,MAAM;4BACtB,QAAQ;yBACT,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAClF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,0CAA0C;IAC1C,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,oOAAoO,EACpO;QACE,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACrF,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;QAC9H,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kHAAkH,CAAC;KACpK,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC;gBACpD,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;aACtC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;qBACnC,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACjF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,yCAAyC;IACzC,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gHAAgH,EAChH;QACE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KACjF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEvE,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;qBACzC,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACpF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,gDAAgD;IAChD,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,sFAAsF,EACtF;QACE,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KACxF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE9D,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM;4BACzC,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM;4BACvC,YAAY,EAAE,SAAS,CAAC,YAAY;4BACpC,QAAQ,EAAE,SAAS,CAAC,QAAQ;4BAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;yBAC3B,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACpF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,+CAA+C;IAC/C,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,sPAAsP,EACtP;QACE,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;QACjG,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wKAAwK,CAAC;KACnN,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAE9E,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;4BAC3C,GAAG,MAAM;yBACV,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACrF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,4DAA4D;IAC5D,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,udAAud,EACvd;QACE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC1E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YAAQ,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtE,oEAAoE;YACpE,0DAA0D;YAC1D,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAE3B,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,GAAG,MAAM;4BACT,OAAO,EAAE,8CAA8C;yBACxD,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACrF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kEAAkE;IAClE,mEAAmE;IACnE,kEAAkE;IAClE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,qWAAqW,EACrW;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;QAC5F,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAC7F,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;QACpJ,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;KAC/G,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC1D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,sBAAsB,IAAI,CAAC,MAAM,wDAAwD;yBAChG,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;4BAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,YAAY;4BACnC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC;gCACzB,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,wBAAwB,MAAM,CAAC,MAAM,CAAC,IAAI,qCAAqC;gCAClG,CAAC,CAAC,yEAAyE;yBAC9E,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAChF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/fs.d.ts
CHANGED
|
@@ -14,6 +14,28 @@ export declare function writeJSON<T>(filePath: string, data: T, options?: {
|
|
|
14
14
|
* Check if a file exists.
|
|
15
15
|
*/
|
|
16
16
|
export declare function fileExists(filePath: string): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* Read a JSON file, let the caller change it, and write it back — all while
|
|
19
|
+
* holding the file's lock, so a concurrent writer cannot slip in between the
|
|
20
|
+
* read and the write.
|
|
21
|
+
*
|
|
22
|
+
* This is the fix for silent data loss: every mutation used to read the whole
|
|
23
|
+
* neuron, edit it in memory and save it, so with two editors open the later
|
|
24
|
+
* save erased whatever the other one had added. Measured before the lock: 80
|
|
25
|
+
* facts requested across two processes, 42 survived, no errors reported.
|
|
26
|
+
*
|
|
27
|
+
* The mutator returns the value to write, or null to leave the file alone.
|
|
28
|
+
*/
|
|
29
|
+
export declare function updateJSON<T>(filePath: string, mutate: (current: T | null) => Promise<T | null> | T | null): Promise<T | null>;
|
|
30
|
+
/**
|
|
31
|
+
* Last modification time of a file, in milliseconds. 0 if it does not exist.
|
|
32
|
+
*/
|
|
33
|
+
export declare function fileMtime(filePath: string): Promise<number>;
|
|
34
|
+
/**
|
|
35
|
+
* Most recent modification time among the files of a directory, in
|
|
36
|
+
* milliseconds. Used to tell whether a derived file has fallen behind.
|
|
37
|
+
*/
|
|
38
|
+
export declare function newestMtime(dirPath: string): Promise<number>;
|
|
17
39
|
/**
|
|
18
40
|
* List all JSON files in a directory. Returns filenames without extension.
|
|
19
41
|
*/
|
package/dist/utils/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAUrE;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAC1D,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAQnB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOjE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAelE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAYtE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED;;GAEG;AACH,wBAAgB,GAAG,IAAI,MAAM,CAE5B"}
|
package/dist/utils/fs.js
CHANGED
|
@@ -8,6 +8,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.readJSON = readJSON;
|
|
9
9
|
exports.writeJSON = writeJSON;
|
|
10
10
|
exports.fileExists = fileExists;
|
|
11
|
+
exports.updateJSON = updateJSON;
|
|
12
|
+
exports.fileMtime = fileMtime;
|
|
13
|
+
exports.newestMtime = newestMtime;
|
|
11
14
|
exports.listJSONFiles = listJSONFiles;
|
|
12
15
|
exports.deleteJSON = deleteJSON;
|
|
13
16
|
exports.moveFile = moveFile;
|
|
@@ -15,6 +18,7 @@ exports.today = today;
|
|
|
15
18
|
exports.now = now;
|
|
16
19
|
const node_fs_1 = require("node:fs");
|
|
17
20
|
const node_path_1 = __importDefault(require("node:path"));
|
|
21
|
+
const lock_js_1 = require("./lock.js");
|
|
18
22
|
/**
|
|
19
23
|
* Safely read and parse a JSON file. Returns null if file doesn't exist.
|
|
20
24
|
* Never throws on missing file — only on corrupted JSON.
|
|
@@ -59,6 +63,64 @@ async function fileExists(filePath) {
|
|
|
59
63
|
return false;
|
|
60
64
|
}
|
|
61
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Read a JSON file, let the caller change it, and write it back — all while
|
|
68
|
+
* holding the file's lock, so a concurrent writer cannot slip in between the
|
|
69
|
+
* read and the write.
|
|
70
|
+
*
|
|
71
|
+
* This is the fix for silent data loss: every mutation used to read the whole
|
|
72
|
+
* neuron, edit it in memory and save it, so with two editors open the later
|
|
73
|
+
* save erased whatever the other one had added. Measured before the lock: 80
|
|
74
|
+
* facts requested across two processes, 42 survived, no errors reported.
|
|
75
|
+
*
|
|
76
|
+
* The mutator returns the value to write, or null to leave the file alone.
|
|
77
|
+
*/
|
|
78
|
+
async function updateJSON(filePath, mutate) {
|
|
79
|
+
return (0, lock_js_1.withLock)(filePath, async () => {
|
|
80
|
+
const current = await readJSON(filePath);
|
|
81
|
+
const next = await mutate(current);
|
|
82
|
+
if (next === null)
|
|
83
|
+
return current;
|
|
84
|
+
await writeJSON(filePath, next);
|
|
85
|
+
return next;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Last modification time of a file, in milliseconds. 0 if it does not exist.
|
|
90
|
+
*/
|
|
91
|
+
async function fileMtime(filePath) {
|
|
92
|
+
try {
|
|
93
|
+
const st = await node_fs_1.promises.stat(filePath);
|
|
94
|
+
return st.mtimeMs;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Most recent modification time among the files of a directory, in
|
|
102
|
+
* milliseconds. Used to tell whether a derived file has fallen behind.
|
|
103
|
+
*/
|
|
104
|
+
async function newestMtime(dirPath) {
|
|
105
|
+
try {
|
|
106
|
+
const files = await node_fs_1.promises.readdir(dirPath);
|
|
107
|
+
let newest = 0;
|
|
108
|
+
for (const f of files) {
|
|
109
|
+
if (!f.endsWith('.json'))
|
|
110
|
+
continue;
|
|
111
|
+
try {
|
|
112
|
+
const st = await node_fs_1.promises.stat(node_path_1.default.join(dirPath, f));
|
|
113
|
+
if (st.mtimeMs > newest)
|
|
114
|
+
newest = st.mtimeMs;
|
|
115
|
+
}
|
|
116
|
+
catch { /* skip */ }
|
|
117
|
+
}
|
|
118
|
+
return newest;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return 0;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
62
124
|
/**
|
|
63
125
|
* List all JSON files in a directory. Returns filenames without extension.
|
|
64
126
|
*/
|
package/dist/utils/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,6DAA6D;;;;;
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/ids.d.ts
CHANGED
|
@@ -4,6 +4,15 @@ import type { NeuronType } from '../types/index.js';
|
|
|
4
4
|
* "OctoChat Plugin" → "octochat_plugin"
|
|
5
5
|
*/
|
|
6
6
|
export declare function toSnakeCase(str: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* How ids were built before accents were folded: the accented letter was
|
|
9
|
+
* deleted whole, so "búsqueda" became "bsqueda" and "técnico" became "tcnico".
|
|
10
|
+
* On the reference brain that mangled 82 of 1,183 ids.
|
|
11
|
+
*
|
|
12
|
+
* Kept because those neurons exist on disk under the mangled name and must
|
|
13
|
+
* stay reachable. Lookups try the correct slug first and fall back to this.
|
|
14
|
+
*/
|
|
15
|
+
export declare function legacySnakeCase(str: string): string;
|
|
7
16
|
/**
|
|
8
17
|
* Generate a neuron ID from name and type.
|
|
9
18
|
* ("OctoChat", "project") → "project_octochat"
|
package/dist/utils/ids.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAYpD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAYpD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAI/D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CA2BzD"}
|
package/dist/utils/ids.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// Generate and validate neuron/synapse IDs
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.toSnakeCase = toSnakeCase;
|
|
6
|
+
exports.legacySnakeCase = legacySnakeCase;
|
|
6
7
|
exports.neuronId = neuronId;
|
|
7
8
|
exports.synapseId = synapseId;
|
|
8
9
|
exports.sessionId = sessionId;
|
|
@@ -23,13 +24,32 @@ const TYPE_PREFIXES = {
|
|
|
23
24
|
*/
|
|
24
25
|
function toSnakeCase(str) {
|
|
25
26
|
return str
|
|
27
|
+
.normalize('NFD') // Split accents off their letters...
|
|
28
|
+
.replace(/[\u0300-\u036f]/g, '') // ...and drop the accents, keeping the letter
|
|
26
29
|
.toLowerCase()
|
|
27
30
|
.trim()
|
|
28
|
-
.replace(/[^a-z0-9\s_-]/g, '') // Remove
|
|
31
|
+
.replace(/[^a-z0-9\s_-]/g, '') // Remove what is left that we cannot use
|
|
29
32
|
.replace(/[\s-]+/g, '_') // Spaces/hyphens to underscores
|
|
30
33
|
.replace(/_+/g, '_') // Collapse multiple underscores
|
|
31
34
|
.replace(/^_|_$/g, ''); // Trim leading/trailing underscores
|
|
32
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* How ids were built before accents were folded: the accented letter was
|
|
38
|
+
* deleted whole, so "búsqueda" became "bsqueda" and "técnico" became "tcnico".
|
|
39
|
+
* On the reference brain that mangled 82 of 1,183 ids.
|
|
40
|
+
*
|
|
41
|
+
* Kept because those neurons exist on disk under the mangled name and must
|
|
42
|
+
* stay reachable. Lookups try the correct slug first and fall back to this.
|
|
43
|
+
*/
|
|
44
|
+
function legacySnakeCase(str) {
|
|
45
|
+
return str
|
|
46
|
+
.toLowerCase()
|
|
47
|
+
.trim()
|
|
48
|
+
.replace(/[^a-z0-9\s_-]/g, '')
|
|
49
|
+
.replace(/[\s-]+/g, '_')
|
|
50
|
+
.replace(/_+/g, '_')
|
|
51
|
+
.replace(/^_|_$/g, '');
|
|
52
|
+
}
|
|
33
53
|
/**
|
|
34
54
|
* Generate a neuron ID from name and type.
|
|
35
55
|
* ("OctoChat", "project") → "project_octochat"
|
package/dist/utils/ids.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,2CAA2C;;AAkB3C,
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run `fn` while holding the lock for `target`.
|
|
3
|
+
* The lock is always released, including when `fn` throws.
|
|
4
|
+
*/
|
|
5
|
+
export declare function withLock<T>(target: string, fn: () => Promise<T>): Promise<T>;
|
|
6
|
+
/**
|
|
7
|
+
* Remove lock files left behind by a process that died mid-write.
|
|
8
|
+
* Returns how many were swept. Called from maintenance.
|
|
9
|
+
*/
|
|
10
|
+
export declare function sweepStaleLocks(dir: string): Promise<number>;
|
|
11
|
+
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/utils/lock.ts"],"names":[],"mappings":"AAmFA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOlF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─── CRBRO File Locking ──────────────────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// Why this exists, measured on the real thing: two processes each storing 40
|
|
5
|
+
// facts into the same neuron asked for 80 and kept 42. Neither reported an
|
|
6
|
+
// error. Every write path reads the whole neuron, changes it in memory and
|
|
7
|
+
// writes it back, so whoever saves last silently erases whatever the other one
|
|
8
|
+
// did in between. With CRBRO registered at user level — which the README
|
|
9
|
+
// recommends — two editors open at once is the normal case, not an edge case.
|
|
10
|
+
//
|
|
11
|
+
// An advisory lock file is enough here. All writers are CRBRO itself, the
|
|
12
|
+
// critical section is a few milliseconds, and the alternative (an OS-level
|
|
13
|
+
// lock) behaves differently on every platform and cannot be made to wait
|
|
14
|
+
// politely on Windows.
|
|
15
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.withLock = withLock;
|
|
20
|
+
exports.sweepStaleLocks = sweepStaleLocks;
|
|
21
|
+
const node_fs_1 = require("node:fs");
|
|
22
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
23
|
+
/** How long a lock may be held before we assume its owner died. */
|
|
24
|
+
const STALE_MS = 10_000;
|
|
25
|
+
/** How long to keep trying before giving up. */
|
|
26
|
+
const TIMEOUT_MS = 15_000;
|
|
27
|
+
/** Wait between attempts. Grows a little to avoid a stampede. */
|
|
28
|
+
const RETRY_MIN_MS = 8;
|
|
29
|
+
const RETRY_MAX_MS = 60;
|
|
30
|
+
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
|
|
31
|
+
function lockPath(target) {
|
|
32
|
+
return `${target}.lock`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Take the lock for a file. Returns a release function.
|
|
36
|
+
*
|
|
37
|
+
* `wx` fails if the file already exists, and that failure is the whole
|
|
38
|
+
* mechanism: exactly one caller can create it.
|
|
39
|
+
*/
|
|
40
|
+
async function acquire(target) {
|
|
41
|
+
const lock = lockPath(target);
|
|
42
|
+
await node_fs_1.promises.mkdir(node_path_1.default.dirname(lock), { recursive: true });
|
|
43
|
+
const deadline = Date.now() + TIMEOUT_MS;
|
|
44
|
+
let wait = RETRY_MIN_MS;
|
|
45
|
+
for (;;) {
|
|
46
|
+
try {
|
|
47
|
+
const fh = await node_fs_1.promises.open(lock, 'wx');
|
|
48
|
+
await fh.writeFile(`${process.pid} ${new Date().toISOString()}`, 'utf-8');
|
|
49
|
+
await fh.close();
|
|
50
|
+
return async () => {
|
|
51
|
+
try {
|
|
52
|
+
await node_fs_1.promises.unlink(lock);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Already gone: released twice, or cleaned up as stale. Harmless.
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
const code = err?.code;
|
|
61
|
+
if (code !== 'EEXIST')
|
|
62
|
+
throw err;
|
|
63
|
+
// Someone holds it. If they have held it far too long, they are gone.
|
|
64
|
+
try {
|
|
65
|
+
const st = await node_fs_1.promises.stat(lock);
|
|
66
|
+
if (Date.now() - st.mtimeMs > STALE_MS) {
|
|
67
|
+
await node_fs_1.promises.unlink(lock).catch(() => { });
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
continue; // Vanished between the failure and the stat: try again.
|
|
73
|
+
}
|
|
74
|
+
if (Date.now() > deadline) {
|
|
75
|
+
// Never block a write forever. Losing the lock is bad; hanging the
|
|
76
|
+
// assistant is worse, and the stale sweep above makes this rare.
|
|
77
|
+
return async () => { };
|
|
78
|
+
}
|
|
79
|
+
await sleep(wait);
|
|
80
|
+
wait = Math.min(Math.round(wait * 1.4), RETRY_MAX_MS);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Run `fn` while holding the lock for `target`.
|
|
86
|
+
* The lock is always released, including when `fn` throws.
|
|
87
|
+
*/
|
|
88
|
+
async function withLock(target, fn) {
|
|
89
|
+
const release = await acquire(target);
|
|
90
|
+
try {
|
|
91
|
+
return await fn();
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
await release();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Remove lock files left behind by a process that died mid-write.
|
|
99
|
+
* Returns how many were swept. Called from maintenance.
|
|
100
|
+
*/
|
|
101
|
+
async function sweepStaleLocks(dir) {
|
|
102
|
+
let swept = 0;
|
|
103
|
+
try {
|
|
104
|
+
for (const f of await node_fs_1.promises.readdir(dir)) {
|
|
105
|
+
if (!f.endsWith('.lock'))
|
|
106
|
+
continue;
|
|
107
|
+
const p = node_path_1.default.join(dir, f);
|
|
108
|
+
try {
|
|
109
|
+
const st = await node_fs_1.promises.stat(p);
|
|
110
|
+
if (Date.now() - st.mtimeMs > STALE_MS) {
|
|
111
|
+
await node_fs_1.promises.unlink(p);
|
|
112
|
+
swept++;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch { /* gone already */ }
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch { /* no such directory */ }
|
|
119
|
+
return swept;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/utils/lock.ts"],"names":[],"mappings":"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"}
|