@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.
Files changed (80) hide show
  1. package/README.md +416 -34
  2. package/_bin/aarch64-apple-darwin/libsochdb_storage.dylib +0 -0
  3. package/_bin/aarch64-apple-darwin/sochdb-bulk +0 -0
  4. package/_bin/aarch64-apple-darwin/sochdb-grpc-server +0 -0
  5. package/_bin/aarch64-apple-darwin/sochdb-server +0 -0
  6. package/_bin/x86_64-pc-windows-msvc/sochdb-bulk.exe +0 -0
  7. package/_bin/x86_64-pc-windows-msvc/sochdb-grpc-server.exe +0 -0
  8. package/_bin/x86_64-pc-windows-msvc/sochdb_storage.dll +0 -0
  9. package/_bin/x86_64-unknown-linux-gnu/libsochdb_storage.so +0 -0
  10. package/_bin/x86_64-unknown-linux-gnu/sochdb-bulk +0 -0
  11. package/_bin/x86_64-unknown-linux-gnu/sochdb-grpc-server +0 -0
  12. package/_bin/x86_64-unknown-linux-gnu/sochdb-server +0 -0
  13. package/bin/sochdb-bulk.js +1 -1
  14. package/bin/sochdb-grpc-server.js +1 -1
  15. package/bin/sochdb-server.js +1 -1
  16. package/dist/cjs/context-builder.js +280 -0
  17. package/dist/cjs/database.js +2 -2
  18. package/dist/cjs/embedded/database.js +2 -2
  19. package/dist/cjs/embedded/ffi/hnsw-bindings.js +295 -0
  20. package/dist/cjs/embedded/ffi/library-finder.js +10 -3
  21. package/dist/cjs/embedded/index.js +5 -2
  22. package/dist/cjs/errors.js +99 -7
  23. package/dist/cjs/index.js +46 -6
  24. package/dist/cjs/ipc-client.js +2 -2
  25. package/dist/cjs/memory/consolidation.js +202 -0
  26. package/dist/cjs/memory/extraction.js +181 -0
  27. package/dist/cjs/memory/index.js +26 -0
  28. package/dist/cjs/memory/retrieval.js +232 -0
  29. package/dist/cjs/memory/types.js +69 -0
  30. package/dist/cjs/namespace.js +255 -0
  31. package/dist/cjs/queue.js +289 -0
  32. package/dist/cjs/semantic-cache.js +220 -0
  33. package/dist/esm/context-builder.js +280 -0
  34. package/dist/esm/database.js +2 -2
  35. package/dist/esm/embedded/database.js +2 -2
  36. package/dist/esm/embedded/ffi/hnsw-bindings.js +316 -0
  37. package/dist/esm/embedded/ffi/library-finder.js +10 -3
  38. package/dist/esm/embedded/index.js +5 -2
  39. package/dist/esm/errors.js +107 -7
  40. package/dist/esm/index.js +46 -6
  41. package/dist/esm/ipc-client.js +2 -2
  42. package/dist/esm/memory/consolidation.js +206 -0
  43. package/dist/esm/memory/extraction.js +185 -0
  44. package/dist/esm/memory/index.js +26 -0
  45. package/dist/esm/memory/retrieval.js +243 -0
  46. package/dist/esm/memory/types.js +72 -0
  47. package/dist/esm/namespace.js +262 -0
  48. package/dist/esm/queue.js +291 -0
  49. package/dist/esm/semantic-cache.js +223 -0
  50. package/dist/types/context-builder.d.ts +97 -0
  51. package/dist/types/context-builder.d.ts.map +1 -0
  52. package/dist/types/database.d.ts +1 -1
  53. package/dist/types/embedded/database.d.ts +1 -1
  54. package/dist/types/embedded/ffi/hnsw-bindings.d.ts +90 -0
  55. package/dist/types/embedded/ffi/hnsw-bindings.d.ts.map +1 -0
  56. package/dist/types/embedded/ffi/library-finder.d.ts.map +1 -1
  57. package/dist/types/embedded/index.d.ts +1 -0
  58. package/dist/types/embedded/index.d.ts.map +1 -1
  59. package/dist/types/errors.d.ts +57 -1
  60. package/dist/types/errors.d.ts.map +1 -1
  61. package/dist/types/index.d.ts +15 -3
  62. package/dist/types/index.d.ts.map +1 -1
  63. package/dist/types/ipc-client.d.ts +1 -1
  64. package/dist/types/memory/consolidation.d.ts +66 -0
  65. package/dist/types/memory/consolidation.d.ts.map +1 -0
  66. package/dist/types/memory/extraction.d.ts +82 -0
  67. package/dist/types/memory/extraction.d.ts.map +1 -0
  68. package/dist/types/memory/index.d.ts +10 -0
  69. package/dist/types/memory/index.d.ts.map +1 -0
  70. package/dist/types/memory/retrieval.d.ts +46 -0
  71. package/dist/types/memory/retrieval.d.ts.map +1 -0
  72. package/dist/types/memory/types.d.ts +147 -0
  73. package/dist/types/memory/types.d.ts.map +1 -0
  74. package/dist/types/namespace.d.ts +129 -0
  75. package/dist/types/namespace.d.ts.map +1 -0
  76. package/dist/types/queue.d.ts +120 -0
  77. package/dist/types/queue.d.ts.map +1 -0
  78. package/dist/types/semantic-cache.d.ts +84 -0
  79. package/dist/types/semantic-cache.d.ts.map +1 -0
  80. 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"}