@sochdb/sochdb 0.4.0 → 0.4.2
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 +416 -34
- package/_bin/aarch64-apple-darwin/libsochdb_storage.dylib +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-bulk +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-grpc-server +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-server +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb-bulk.exe +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb-grpc-server.exe +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb_storage.dll +0 -0
- package/_bin/x86_64-unknown-linux-gnu/libsochdb_storage.so +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-bulk +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-grpc-server +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-server +0 -0
- package/bin/sochdb-bulk.js +1 -1
- package/bin/sochdb-grpc-server.js +1 -1
- package/bin/sochdb-server.js +1 -1
- package/dist/cjs/context-builder.js +280 -0
- package/dist/cjs/database.js +2 -2
- package/dist/cjs/embedded/database.js +2 -2
- package/dist/cjs/embedded/ffi/hnsw-bindings.js +295 -0
- package/dist/cjs/embedded/ffi/library-finder.js +10 -3
- package/dist/cjs/embedded/index.js +5 -2
- package/dist/cjs/errors.js +99 -7
- package/dist/cjs/index.js +46 -6
- package/dist/cjs/ipc-client.js +2 -2
- package/dist/cjs/memory/consolidation.js +202 -0
- package/dist/cjs/memory/extraction.js +181 -0
- package/dist/cjs/memory/index.js +26 -0
- package/dist/cjs/memory/retrieval.js +232 -0
- package/dist/cjs/memory/types.js +69 -0
- package/dist/cjs/namespace.js +255 -0
- package/dist/cjs/queue.js +289 -0
- package/dist/cjs/semantic-cache.js +220 -0
- package/dist/esm/context-builder.js +280 -0
- package/dist/esm/database.js +2 -2
- package/dist/esm/embedded/database.js +2 -2
- package/dist/esm/embedded/ffi/hnsw-bindings.js +316 -0
- package/dist/esm/embedded/ffi/library-finder.js +10 -3
- package/dist/esm/embedded/index.js +5 -2
- package/dist/esm/errors.js +107 -7
- package/dist/esm/index.js +46 -6
- package/dist/esm/ipc-client.js +2 -2
- package/dist/esm/memory/consolidation.js +206 -0
- package/dist/esm/memory/extraction.js +185 -0
- package/dist/esm/memory/index.js +26 -0
- package/dist/esm/memory/retrieval.js +243 -0
- package/dist/esm/memory/types.js +72 -0
- package/dist/esm/namespace.js +262 -0
- package/dist/esm/queue.js +291 -0
- package/dist/esm/semantic-cache.js +223 -0
- package/dist/types/context-builder.d.ts +97 -0
- package/dist/types/context-builder.d.ts.map +1 -0
- package/dist/types/database.d.ts +1 -1
- package/dist/types/embedded/database.d.ts +1 -1
- package/dist/types/embedded/ffi/hnsw-bindings.d.ts +90 -0
- package/dist/types/embedded/ffi/hnsw-bindings.d.ts.map +1 -0
- package/dist/types/embedded/ffi/library-finder.d.ts.map +1 -1
- package/dist/types/embedded/index.d.ts +1 -0
- package/dist/types/embedded/index.d.ts.map +1 -1
- package/dist/types/errors.d.ts +57 -1
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/index.d.ts +15 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/ipc-client.d.ts +1 -1
- package/dist/types/memory/consolidation.d.ts +66 -0
- package/dist/types/memory/consolidation.d.ts.map +1 -0
- package/dist/types/memory/extraction.d.ts +82 -0
- package/dist/types/memory/extraction.d.ts.map +1 -0
- package/dist/types/memory/index.d.ts +10 -0
- package/dist/types/memory/index.d.ts.map +1 -0
- package/dist/types/memory/retrieval.d.ts +46 -0
- package/dist/types/memory/retrieval.d.ts.map +1 -0
- package/dist/types/memory/types.d.ts +147 -0
- package/dist/types/memory/types.d.ts.map +1 -0
- package/dist/types/namespace.d.ts +129 -0
- package/dist/types/namespace.d.ts.map +1 -0
- package/dist/types/queue.d.ts +120 -0
- package/dist/types/queue.d.ts.map +1 -0
- package/dist/types/semantic-cache.d.ts +84 -0
- package/dist/types/semantic-cache.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidator for Memory System
|
|
3
|
+
*
|
|
4
|
+
* Event-sourced consolidation with append-only events and derived canonical facts.
|
|
5
|
+
*/
|
|
6
|
+
import { EmbeddedDatabase } from '../embedded';
|
|
7
|
+
import { RawAssertion, CanonicalFact, ConsolidationConfig } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Consolidator for managing facts
|
|
10
|
+
*/
|
|
11
|
+
export declare class Consolidator {
|
|
12
|
+
private db;
|
|
13
|
+
private namespace;
|
|
14
|
+
private config;
|
|
15
|
+
private prefix;
|
|
16
|
+
constructor(db: EmbeddedDatabase, namespace: string, config?: ConsolidationConfig);
|
|
17
|
+
/**
|
|
18
|
+
* Create consolidator from database
|
|
19
|
+
*/
|
|
20
|
+
static fromDatabase(db: EmbeddedDatabase, namespace: string, config?: ConsolidationConfig): Consolidator;
|
|
21
|
+
/**
|
|
22
|
+
* Add a raw assertion (immutable event)
|
|
23
|
+
*/
|
|
24
|
+
add(assertion: RawAssertion): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* Add assertion with contradiction handling
|
|
27
|
+
*/
|
|
28
|
+
addWithContradiction(newAssertion: RawAssertion, contradicts: string[]): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Run consolidation to update canonical view
|
|
31
|
+
*/
|
|
32
|
+
consolidate(): Promise<number>;
|
|
33
|
+
/**
|
|
34
|
+
* Get canonical facts
|
|
35
|
+
*/
|
|
36
|
+
getCanonicalFacts(): Promise<CanonicalFact[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Explain provenance of a fact
|
|
39
|
+
*/
|
|
40
|
+
explain(factId: string): Promise<{
|
|
41
|
+
evidenceCount: number;
|
|
42
|
+
sources: string[];
|
|
43
|
+
confidence: number;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* Get all raw assertions
|
|
47
|
+
*/
|
|
48
|
+
private getAllAssertions;
|
|
49
|
+
/**
|
|
50
|
+
* Get all contradictions
|
|
51
|
+
*/
|
|
52
|
+
private getContradictions;
|
|
53
|
+
/**
|
|
54
|
+
* Merge confidence from multiple assertions
|
|
55
|
+
*/
|
|
56
|
+
private mergeConfidence;
|
|
57
|
+
/**
|
|
58
|
+
* Generate deterministic assertion ID
|
|
59
|
+
*/
|
|
60
|
+
private generateAssertionId;
|
|
61
|
+
/**
|
|
62
|
+
* Generate deterministic canonical fact ID
|
|
63
|
+
*/
|
|
64
|
+
private generateCanonicalId;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=consolidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidation.d.ts","sourceRoot":"","sources":["../../../src/memory/consolidation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,YAAY,EACZ,aAAa,EACb,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAS;gBAEX,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAWjF;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,YAAY;IAIxG;;OAEG;IACG,GAAG,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBnD;;OAEG;IACG,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB9F;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IA0DpC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAWnD;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBxG;;OAEG;YACW,gBAAgB;IAW9B;;OAEG;YACW,iBAAiB;IAW/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAM5B"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extraction Pipeline for Memory System
|
|
3
|
+
*
|
|
4
|
+
* Compiles LLM outputs into typed, validated facts (Entity, Relation, Assertion).
|
|
5
|
+
*/
|
|
6
|
+
import { EmbeddedDatabase } from '../embedded';
|
|
7
|
+
import { Entity, Relation, Assertion, ExtractionResult, ExtractionSchema } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Extractor function type - user provides this to call their LLM
|
|
10
|
+
*/
|
|
11
|
+
export type ExtractorFunction = (text: string) => Promise<{
|
|
12
|
+
entities?: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
entity_type: string;
|
|
15
|
+
properties?: Record<string, any>;
|
|
16
|
+
confidence?: number;
|
|
17
|
+
}>;
|
|
18
|
+
relations?: Array<{
|
|
19
|
+
from_entity: string;
|
|
20
|
+
relation_type: string;
|
|
21
|
+
to_entity: string;
|
|
22
|
+
properties?: Record<string, any>;
|
|
23
|
+
confidence?: number;
|
|
24
|
+
}>;
|
|
25
|
+
assertions?: Array<{
|
|
26
|
+
subject: string;
|
|
27
|
+
predicate: string;
|
|
28
|
+
object: string;
|
|
29
|
+
confidence?: number;
|
|
30
|
+
}>;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Extraction Pipeline
|
|
34
|
+
*/
|
|
35
|
+
export declare class ExtractionPipeline {
|
|
36
|
+
private db;
|
|
37
|
+
private namespace;
|
|
38
|
+
private schema?;
|
|
39
|
+
private prefix;
|
|
40
|
+
constructor(db: EmbeddedDatabase, namespace: string, schema?: ExtractionSchema);
|
|
41
|
+
/**
|
|
42
|
+
* Create pipeline from database
|
|
43
|
+
*/
|
|
44
|
+
static fromDatabase(db: EmbeddedDatabase, namespace: string, schema?: ExtractionSchema): ExtractionPipeline;
|
|
45
|
+
/**
|
|
46
|
+
* Extract entities and relations from text
|
|
47
|
+
*/
|
|
48
|
+
extract(text: string, extractor: ExtractorFunction): Promise<ExtractionResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Extract and immediately commit to database
|
|
51
|
+
*/
|
|
52
|
+
extractAndCommit(text: string, extractor: ExtractorFunction): Promise<ExtractionResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Commit extraction result to database
|
|
55
|
+
*/
|
|
56
|
+
commit(result: ExtractionResult): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Get all entities
|
|
59
|
+
*/
|
|
60
|
+
getEntities(): Promise<Entity[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Get all relations
|
|
63
|
+
*/
|
|
64
|
+
getRelations(): Promise<Relation[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Get all assertions
|
|
67
|
+
*/
|
|
68
|
+
getAssertions(): Promise<Assertion[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Generate deterministic entity ID
|
|
71
|
+
*/
|
|
72
|
+
private generateEntityId;
|
|
73
|
+
/**
|
|
74
|
+
* Generate deterministic relation ID
|
|
75
|
+
*/
|
|
76
|
+
private generateRelationId;
|
|
77
|
+
/**
|
|
78
|
+
* Generate deterministic assertion ID
|
|
79
|
+
*/
|
|
80
|
+
private generateAssertionId;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=extraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../../src/memory/extraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/G,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5I,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjG,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAS;gBAEX,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB;IAO9E;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,kBAAkB;IAI3G;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwEpF;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAM7F;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAWtC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWzC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAW3C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAM5B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory System - Main Export
|
|
3
|
+
*
|
|
4
|
+
* LLM-native memory system with extraction, consolidation, and retrieval.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types';
|
|
7
|
+
export * from './extraction';
|
|
8
|
+
export * from './consolidation';
|
|
9
|
+
export * from './retrieval';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hybrid Retriever for Memory System
|
|
3
|
+
*
|
|
4
|
+
* Combines vector and keyword search with RRF (Reciprocal Rank Fusion).
|
|
5
|
+
*/
|
|
6
|
+
import { EmbeddedDatabase } from '../embedded';
|
|
7
|
+
import { AllowedSet, RetrievalConfig, RetrievalResponse } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Hybrid Retriever with RRF fusion
|
|
10
|
+
*/
|
|
11
|
+
export declare class HybridRetriever {
|
|
12
|
+
private db;
|
|
13
|
+
private namespace;
|
|
14
|
+
private collection;
|
|
15
|
+
private config;
|
|
16
|
+
private prefix;
|
|
17
|
+
private bm25;
|
|
18
|
+
private indexed;
|
|
19
|
+
constructor(db: EmbeddedDatabase, namespace: string, collection: string, config?: RetrievalConfig);
|
|
20
|
+
/**
|
|
21
|
+
* Create retriever from database
|
|
22
|
+
*/
|
|
23
|
+
static fromDatabase(db: EmbeddedDatabase, namespace: string, collection: string, config?: RetrievalConfig): HybridRetriever;
|
|
24
|
+
/**
|
|
25
|
+
* Index documents for retrieval
|
|
26
|
+
*/
|
|
27
|
+
indexDocuments(documents: Array<{
|
|
28
|
+
id: string;
|
|
29
|
+
content: string;
|
|
30
|
+
embedding: number[];
|
|
31
|
+
metadata?: Record<string, any>;
|
|
32
|
+
}>): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Retrieve documents with hybrid search
|
|
35
|
+
*/
|
|
36
|
+
retrieve(queryText: string, queryVector: number[], allowed: AllowedSet, k?: number): Promise<RetrievalResponse>;
|
|
37
|
+
/**
|
|
38
|
+
* Explain ranking for a specific document
|
|
39
|
+
*/
|
|
40
|
+
explain(queryText: string, queryVector: number[], docId: string): Promise<{
|
|
41
|
+
vectorRank?: number;
|
|
42
|
+
keywordRank?: number;
|
|
43
|
+
expectedRrfScore?: number;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=retrieval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../../src/memory/retrieval.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EAElB,MAAM,SAAS,CAAC;AA6GjB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAAkB;gBAG/B,EAAE,EAAE,gBAAgB,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,eAAe;IAe1B;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,EAAE,EAAE,gBAAgB,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,eAAe,GACvB,eAAe;IAIlB;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3I;;OAEG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,UAAU,EACnB,CAAC,CAAC,EAAE,MAAM,GACT,OAAO,CAAC,iBAAiB,CAAC;IAsF7B;;OAEG;IACG,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAyBrF"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory System Core Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for LLM-native memory system with extraction,
|
|
5
|
+
* consolidation, and retrieval capabilities.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Entity extracted from text
|
|
9
|
+
*/
|
|
10
|
+
export interface Entity {
|
|
11
|
+
id?: string;
|
|
12
|
+
name: string;
|
|
13
|
+
entityType: string;
|
|
14
|
+
properties?: Record<string, any>;
|
|
15
|
+
confidence?: number;
|
|
16
|
+
provenance?: string;
|
|
17
|
+
timestamp?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Relation between two entities
|
|
21
|
+
*/
|
|
22
|
+
export interface Relation {
|
|
23
|
+
id?: string;
|
|
24
|
+
fromEntity: string;
|
|
25
|
+
relationType: string;
|
|
26
|
+
toEntity: string;
|
|
27
|
+
properties?: Record<string, any>;
|
|
28
|
+
confidence?: number;
|
|
29
|
+
provenance?: string;
|
|
30
|
+
timestamp?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Assertion (subject-predicate-object triple)
|
|
34
|
+
*/
|
|
35
|
+
export interface Assertion {
|
|
36
|
+
id?: string;
|
|
37
|
+
subject: string;
|
|
38
|
+
predicate: string;
|
|
39
|
+
object: string;
|
|
40
|
+
confidence?: number;
|
|
41
|
+
provenance?: string;
|
|
42
|
+
timestamp?: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Raw assertion for consolidation
|
|
46
|
+
*/
|
|
47
|
+
export interface RawAssertion {
|
|
48
|
+
id?: string;
|
|
49
|
+
fact: Record<string, any>;
|
|
50
|
+
source: string;
|
|
51
|
+
confidence: number;
|
|
52
|
+
timestamp?: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Canonical fact after consolidation
|
|
56
|
+
*/
|
|
57
|
+
export interface CanonicalFact {
|
|
58
|
+
id: string;
|
|
59
|
+
mergedFact: Record<string, any>;
|
|
60
|
+
confidence: number;
|
|
61
|
+
sources: string[];
|
|
62
|
+
validFrom: number;
|
|
63
|
+
validUntil?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Extraction result from LLM
|
|
67
|
+
*/
|
|
68
|
+
export interface ExtractionResult {
|
|
69
|
+
entities: Entity[];
|
|
70
|
+
relations: Relation[];
|
|
71
|
+
assertions: Assertion[];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Extraction schema for validation
|
|
75
|
+
*/
|
|
76
|
+
export interface ExtractionSchema {
|
|
77
|
+
entityTypes?: string[];
|
|
78
|
+
relationTypes?: string[];
|
|
79
|
+
minConfidence?: number;
|
|
80
|
+
requireProvenance?: boolean;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Consolidation configuration
|
|
84
|
+
*/
|
|
85
|
+
export interface ConsolidationConfig {
|
|
86
|
+
similarityThreshold?: number;
|
|
87
|
+
useTemporalUpdates?: boolean;
|
|
88
|
+
maxConflictAge?: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Retrieval configuration
|
|
92
|
+
*/
|
|
93
|
+
export interface RetrievalConfig {
|
|
94
|
+
k?: number;
|
|
95
|
+
alpha?: number;
|
|
96
|
+
enableRerank?: boolean;
|
|
97
|
+
rerankK?: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Retrieval result
|
|
101
|
+
*/
|
|
102
|
+
export interface RetrievalResult {
|
|
103
|
+
id: string;
|
|
104
|
+
score: number;
|
|
105
|
+
content: string;
|
|
106
|
+
metadata?: Record<string, any>;
|
|
107
|
+
vectorRank?: number;
|
|
108
|
+
keywordRank?: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Retrieval response
|
|
112
|
+
*/
|
|
113
|
+
export interface RetrievalResponse {
|
|
114
|
+
results: RetrievalResult[];
|
|
115
|
+
queryTime: number;
|
|
116
|
+
totalResults: number;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* AllowedSet for pre-filtering
|
|
120
|
+
*/
|
|
121
|
+
export declare abstract class AllowedSet {
|
|
122
|
+
abstract contains(id: string, metadata?: Record<string, any>): boolean;
|
|
123
|
+
static fromIds(ids: string[]): AllowedSet;
|
|
124
|
+
static fromNamespace(namespace: string): AllowedSet;
|
|
125
|
+
static fromFilter(filterFn: (id: string, metadata?: Record<string, any>) => boolean): AllowedSet;
|
|
126
|
+
static allowAll(): AllowedSet;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Namespace policy
|
|
130
|
+
*/
|
|
131
|
+
export declare enum NamespacePolicy {
|
|
132
|
+
STRICT = "strict",
|
|
133
|
+
EXPLICIT = "explicit",
|
|
134
|
+
PERMISSIVE = "permissive"
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Cross-namespace grant
|
|
138
|
+
*/
|
|
139
|
+
export interface NamespaceGrant {
|
|
140
|
+
id: string;
|
|
141
|
+
fromNamespace: string;
|
|
142
|
+
toNamespace: string;
|
|
143
|
+
operations: string[];
|
|
144
|
+
expiresAt?: number;
|
|
145
|
+
reason?: string;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/memory/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SochDB Namespace API
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe namespace isolation with first-class namespace handles.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { Database } from '@sochdb/sochdb';
|
|
9
|
+
*
|
|
10
|
+
* const db = await Database.open('./mydb');
|
|
11
|
+
* const ns = await db.createNamespace('tenant_123');
|
|
12
|
+
* const collection = await ns.createCollection('documents', { dimension: 384 });
|
|
13
|
+
* await collection.insert([1.0, 2.0, ...], { source: 'web' });
|
|
14
|
+
* const results = await collection.search(queryVector, 10);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
import { SochDBError } from './errors';
|
|
18
|
+
export interface NamespaceConfig {
|
|
19
|
+
name: string;
|
|
20
|
+
displayName?: string;
|
|
21
|
+
labels?: Record<string, string>;
|
|
22
|
+
readOnly?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare class NamespaceNotFoundError extends SochDBError {
|
|
25
|
+
constructor(namespace: string);
|
|
26
|
+
}
|
|
27
|
+
export declare class NamespaceExistsError extends SochDBError {
|
|
28
|
+
constructor(namespace: string);
|
|
29
|
+
}
|
|
30
|
+
export declare class CollectionNotFoundError extends SochDBError {
|
|
31
|
+
constructor(collection: string);
|
|
32
|
+
}
|
|
33
|
+
export declare class CollectionExistsError extends SochDBError {
|
|
34
|
+
constructor(collection: string);
|
|
35
|
+
}
|
|
36
|
+
export declare enum DistanceMetric {
|
|
37
|
+
Cosine = "cosine",
|
|
38
|
+
Euclidean = "euclidean",
|
|
39
|
+
DotProduct = "dot"
|
|
40
|
+
}
|
|
41
|
+
export interface CollectionConfig {
|
|
42
|
+
name: string;
|
|
43
|
+
dimension?: number;
|
|
44
|
+
metric?: DistanceMetric;
|
|
45
|
+
indexed?: boolean;
|
|
46
|
+
hnswM?: number;
|
|
47
|
+
hnswEfConstruction?: number;
|
|
48
|
+
metadata?: Record<string, any>;
|
|
49
|
+
}
|
|
50
|
+
export interface SearchRequest {
|
|
51
|
+
queryVector: number[];
|
|
52
|
+
k: number;
|
|
53
|
+
filter?: Record<string, any>;
|
|
54
|
+
includeMetadata?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface SearchResult {
|
|
57
|
+
id: string;
|
|
58
|
+
score: number;
|
|
59
|
+
vector?: number[];
|
|
60
|
+
metadata?: Record<string, any>;
|
|
61
|
+
}
|
|
62
|
+
export declare class Collection {
|
|
63
|
+
private db;
|
|
64
|
+
private namespace;
|
|
65
|
+
private name;
|
|
66
|
+
private config;
|
|
67
|
+
constructor(db: any, namespace: string, name: string, config: CollectionConfig);
|
|
68
|
+
/**
|
|
69
|
+
* Insert a vector with optional metadata
|
|
70
|
+
*/
|
|
71
|
+
insert(vector: number[], metadata?: Record<string, any>, id?: string): Promise<string>;
|
|
72
|
+
/**
|
|
73
|
+
* Insert multiple vectors
|
|
74
|
+
*/
|
|
75
|
+
insertMany(vectors: number[][], metadatas?: Record<string, any>[], ids?: string[]): Promise<string[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Search for similar vectors
|
|
78
|
+
*/
|
|
79
|
+
search(request: SearchRequest): Promise<SearchResult[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Get a vector by ID
|
|
82
|
+
*/
|
|
83
|
+
get(id: string): Promise<{
|
|
84
|
+
vector: number[];
|
|
85
|
+
metadata?: Record<string, any>;
|
|
86
|
+
} | null>;
|
|
87
|
+
/**
|
|
88
|
+
* Delete a vector by ID
|
|
89
|
+
*/
|
|
90
|
+
delete(id: string): Promise<boolean>;
|
|
91
|
+
/**
|
|
92
|
+
* Count vectors in collection
|
|
93
|
+
*/
|
|
94
|
+
count(): Promise<number>;
|
|
95
|
+
private vectorKey;
|
|
96
|
+
private vectorKeyPrefix;
|
|
97
|
+
private metadataKey;
|
|
98
|
+
private generateId;
|
|
99
|
+
private cosineSimilarity;
|
|
100
|
+
}
|
|
101
|
+
export declare class Namespace {
|
|
102
|
+
private db;
|
|
103
|
+
private name;
|
|
104
|
+
private config;
|
|
105
|
+
constructor(db: any, name: string, config: NamespaceConfig);
|
|
106
|
+
/**
|
|
107
|
+
* Create a new collection in this namespace
|
|
108
|
+
*/
|
|
109
|
+
createCollection(config: CollectionConfig): Promise<Collection>;
|
|
110
|
+
/**
|
|
111
|
+
* Get an existing collection
|
|
112
|
+
*/
|
|
113
|
+
collection(name: string): Promise<Collection>;
|
|
114
|
+
/**
|
|
115
|
+
* Get or create a collection
|
|
116
|
+
*/
|
|
117
|
+
getOrCreateCollection(config: CollectionConfig): Promise<Collection>;
|
|
118
|
+
/**
|
|
119
|
+
* Delete a collection
|
|
120
|
+
*/
|
|
121
|
+
deleteCollection(name: string): Promise<boolean>;
|
|
122
|
+
/**
|
|
123
|
+
* List all collections in this namespace
|
|
124
|
+
*/
|
|
125
|
+
listCollections(): Promise<string[]>;
|
|
126
|
+
getName(): string;
|
|
127
|
+
getConfig(): NamespaceConfig;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/namespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SochDB Priority Queue
|
|
3
|
+
*
|
|
4
|
+
* First-class queue API with ordered-key task entries, providing efficient
|
|
5
|
+
* priority queue operations without the O(N) blob rewrite anti-pattern.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Ordered-key representation: Each task has its own key, no blob parsing
|
|
9
|
+
* - O(log N) enqueue/dequeue with ordered scans
|
|
10
|
+
* - Atomic claim protocol for concurrent workers
|
|
11
|
+
* - Visibility timeout for crash recovery
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { Database, PriorityQueue } from '@sochdb/sochdb';
|
|
16
|
+
*
|
|
17
|
+
* const db = await Database.open('./queue_db');
|
|
18
|
+
* const queue = PriorityQueue.fromDatabase(db, 'tasks');
|
|
19
|
+
*
|
|
20
|
+
* // Enqueue task
|
|
21
|
+
* await queue.enqueue(1, Buffer.from('high priority task'));
|
|
22
|
+
*
|
|
23
|
+
* // Dequeue and process
|
|
24
|
+
* const task = await queue.dequeue('worker-1');
|
|
25
|
+
* if (task) {
|
|
26
|
+
* // Process task...
|
|
27
|
+
* await queue.ack(task.taskId);
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare enum TaskState {
|
|
32
|
+
PENDING = "pending",
|
|
33
|
+
CLAIMED = "claimed",
|
|
34
|
+
COMPLETED = "completed",
|
|
35
|
+
DEAD_LETTERED = "dead_lettered"
|
|
36
|
+
}
|
|
37
|
+
export interface QueueConfig {
|
|
38
|
+
name: string;
|
|
39
|
+
visibilityTimeout?: number;
|
|
40
|
+
maxRetries?: number;
|
|
41
|
+
deadLetterQueue?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface QueueKey {
|
|
44
|
+
queueId: string;
|
|
45
|
+
priority: number;
|
|
46
|
+
readyTs: number;
|
|
47
|
+
sequence: number;
|
|
48
|
+
taskId: string;
|
|
49
|
+
}
|
|
50
|
+
export interface Task {
|
|
51
|
+
taskId: string;
|
|
52
|
+
priority: number;
|
|
53
|
+
payload: Buffer;
|
|
54
|
+
state: TaskState;
|
|
55
|
+
enqueuedAt: number;
|
|
56
|
+
claimedAt?: number;
|
|
57
|
+
claimedBy?: string;
|
|
58
|
+
completedAt?: number;
|
|
59
|
+
retries: number;
|
|
60
|
+
metadata?: Record<string, any>;
|
|
61
|
+
}
|
|
62
|
+
export interface QueueStats {
|
|
63
|
+
pending: number;
|
|
64
|
+
claimed: number;
|
|
65
|
+
completed: number;
|
|
66
|
+
deadLettered: number;
|
|
67
|
+
totalEnqueued: number;
|
|
68
|
+
totalDequeued: number;
|
|
69
|
+
}
|
|
70
|
+
export declare class PriorityQueue {
|
|
71
|
+
private db;
|
|
72
|
+
private config;
|
|
73
|
+
private static sequenceCounter;
|
|
74
|
+
constructor(db: any, config: QueueConfig);
|
|
75
|
+
/**
|
|
76
|
+
* Create queue from embedded database
|
|
77
|
+
*/
|
|
78
|
+
static fromDatabase(db: any, name: string, config?: Partial<QueueConfig>): PriorityQueue;
|
|
79
|
+
/**
|
|
80
|
+
* Create queue from gRPC client
|
|
81
|
+
*/
|
|
82
|
+
static fromClient(client: any, name: string, config?: Partial<QueueConfig>): PriorityQueue;
|
|
83
|
+
/**
|
|
84
|
+
* Enqueue a task with priority
|
|
85
|
+
* Lower priority number = higher urgency
|
|
86
|
+
*/
|
|
87
|
+
enqueue(priority: number, payload: Buffer, metadata?: Record<string, any>): Promise<string>;
|
|
88
|
+
/**
|
|
89
|
+
* Dequeue the highest priority task
|
|
90
|
+
* Returns null if no tasks available
|
|
91
|
+
*/
|
|
92
|
+
dequeue(workerId: string): Promise<Task | null>;
|
|
93
|
+
/**
|
|
94
|
+
* Acknowledge task completion
|
|
95
|
+
*/
|
|
96
|
+
ack(taskId: string): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Negative acknowledge - return task to queue
|
|
99
|
+
*/
|
|
100
|
+
nack(taskId: string): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Get queue statistics
|
|
103
|
+
*/
|
|
104
|
+
stats(): Promise<QueueStats>;
|
|
105
|
+
/**
|
|
106
|
+
* Purge completed tasks
|
|
107
|
+
*/
|
|
108
|
+
purge(): Promise<number>;
|
|
109
|
+
private generateTaskId;
|
|
110
|
+
private getTask;
|
|
111
|
+
private updateTask;
|
|
112
|
+
private getStat;
|
|
113
|
+
private incrementStat;
|
|
114
|
+
private decrementStat;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create a queue instance
|
|
118
|
+
*/
|
|
119
|
+
export declare function createQueue(db: any, name: string, config?: Partial<QueueConfig>): PriorityQueue;
|
|
120
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH,oBAAY,SAAS;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,aAAa,kBAAkB;CAChC;AAMD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA6CD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AA8CD,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAMD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,qBAAa,aAAa;IAItB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,MAAM,CAAC,eAAe,CAAK;gBAGzB,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,WAAW;IAO7B;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa;IAQxF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa;IAQ1F;;;OAGG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC;IAkClB;;;OAGG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAUrD;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxC;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAWlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAM9B,OAAO,CAAC,cAAc;YAIR,OAAO;YAKP,UAAU;YAIV,OAAO;YAMP,aAAa;YAMb,aAAa;CAK5B;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,GAAG,EACP,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,aAAa,CAEf"}
|