@hasna/mementos 0.10.19 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dashboard/dist/assets/index-B1yiOEw3.js +290 -0
  2. package/dashboard/dist/assets/index-DnpbasSl.css +1 -0
  3. package/dashboard/dist/index.html +2 -2
  4. package/dist/cli/index.js +490 -57
  5. package/dist/db/acl.d.ts +34 -0
  6. package/dist/db/acl.d.ts.map +1 -0
  7. package/dist/db/audit.d.ts +39 -0
  8. package/dist/db/audit.d.ts.map +1 -0
  9. package/dist/db/database.d.ts.map +1 -1
  10. package/dist/db/entities.d.ts +45 -0
  11. package/dist/db/entities.d.ts.map +1 -1
  12. package/dist/db/memories.d.ts +1 -1
  13. package/dist/db/memories.d.ts.map +1 -1
  14. package/dist/db/ratings.d.ts +23 -0
  15. package/dist/db/ratings.d.ts.map +1 -0
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +846 -162
  19. package/dist/lib/bench.d.ts +20 -0
  20. package/dist/lib/bench.d.ts.map +1 -0
  21. package/dist/lib/config.d.ts.map +1 -1
  22. package/dist/lib/context.d.ts +35 -0
  23. package/dist/lib/context.d.ts.map +1 -0
  24. package/dist/lib/contradiction.d.ts +50 -0
  25. package/dist/lib/contradiction.d.ts.map +1 -0
  26. package/dist/lib/decay.d.ts +35 -0
  27. package/dist/lib/decay.d.ts.map +1 -0
  28. package/dist/lib/export-v1.d.ts +30 -0
  29. package/dist/lib/export-v1.d.ts.map +1 -0
  30. package/dist/lib/gdpr.d.ts +24 -0
  31. package/dist/lib/gdpr.d.ts.map +1 -0
  32. package/dist/lib/importers/index.d.ts +38 -0
  33. package/dist/lib/importers/index.d.ts.map +1 -0
  34. package/dist/lib/injector.d.ts +8 -0
  35. package/dist/lib/injector.d.ts.map +1 -1
  36. package/dist/lib/poisoning.d.ts +19 -0
  37. package/dist/lib/poisoning.d.ts.map +1 -0
  38. package/dist/lib/profile-sync.d.ts +20 -0
  39. package/dist/lib/profile-sync.d.ts.map +1 -0
  40. package/dist/lib/providers/base.d.ts +1 -1
  41. package/dist/lib/providers/base.d.ts.map +1 -1
  42. package/dist/lib/quality.d.ts +16 -0
  43. package/dist/lib/quality.d.ts.map +1 -0
  44. package/dist/lib/remote-sync.d.ts +1 -1
  45. package/dist/lib/remote-sync.d.ts.map +1 -1
  46. package/dist/lib/retention.d.ts +3 -0
  47. package/dist/lib/retention.d.ts.map +1 -1
  48. package/dist/lib/search.d.ts +31 -1
  49. package/dist/lib/search.d.ts.map +1 -1
  50. package/dist/lib/synthesis/corpus-builder.d.ts.map +1 -1
  51. package/dist/mcp/index.js +2344 -138
  52. package/dist/server/index.d.ts.map +1 -1
  53. package/dist/server/index.js +649 -25
  54. package/dist/types/index.d.ts +14 -3
  55. package/dist/types/index.d.ts.map +1 -1
  56. package/package.json +1 -1
  57. package/dashboard/dist/assets/index-DqyMbv89.js +0 -270
  58. package/dashboard/dist/assets/index-UBCddFo_.css +0 -1
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Memory system benchmarking.
3
+ * Measures save/search/recall latency and throughput.
4
+ */
5
+ import { Database } from "bun:sqlite";
6
+ export interface BenchResult {
7
+ save_latency_ms: number;
8
+ recall_latency_ms: number;
9
+ search_latency_ms: number;
10
+ list_latency_ms: number;
11
+ total_memories: number;
12
+ operations_per_second: number;
13
+ }
14
+ /**
15
+ * Run a simple benchmark against the local DB.
16
+ */
17
+ export declare function runBench(options?: {
18
+ count?: number;
19
+ }, db?: Database): Promise<BenchResult>;
20
+ //# sourceMappingURL=bench.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bench.d.ts","sourceRoot":"","sources":["../../src/lib/bench.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKtC,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,EAChC,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,CAgEtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,UAAU,CAAC;AAM5E,eAAO,MAAM,cAAc,EAAE,cA2B5B,CAAC;AA4DF,wBAAgB,UAAU,IAAI,cAAc,CAwC3C;AAwED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAMhD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAQ1D;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAOvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAuClC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,UAAU,CAAC;AAM5E,eAAO,MAAM,cAAc,EAAE,cA4B5B,CAAC;AA4DF,wBAAgB,UAAU,IAAI,cAAc,CAwC3C;AAwED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAMhD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAQ1D;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAOvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAuClC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Layered context assembly — structured multi-section memory context.
3
+ *
4
+ * Assembles memories into sections:
5
+ * - Core Facts: high-importance facts and preferences (importance >= 8)
6
+ * - Recent History: memories from the last 24h
7
+ * - Relevant Knowledge: query-matched knowledge (if query provided)
8
+ * - Active Decisions: recent fact-category memories
9
+ */
10
+ import type { Memory } from "../types/index.js";
11
+ import { Database } from "bun:sqlite";
12
+ export interface ContextSection {
13
+ title: string;
14
+ memories: Memory[];
15
+ }
16
+ export interface LayeredContext {
17
+ sections: ContextSection[];
18
+ total_memories: number;
19
+ token_estimate: number;
20
+ }
21
+ /**
22
+ * Assemble layered context from memories.
23
+ */
24
+ export declare function assembleContext(options?: {
25
+ project_id?: string;
26
+ agent_id?: string;
27
+ scope?: string;
28
+ query?: string;
29
+ max_per_section?: number;
30
+ }, db?: Database): LayeredContext;
31
+ /**
32
+ * Format layered context as markdown.
33
+ */
34
+ export declare function formatLayeredContext(ctx: LayeredContext): string;
35
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/lib/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAgB,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,EACN,EAAE,CAAC,EAAE,QAAQ,GACZ,cAAc,CAuEhB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAUhE"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Fact contradiction detection.
3
+ *
4
+ * On memory_save, checks if a new memory contradicts existing high-importance facts.
5
+ * Uses heuristic matching first, then optionally calls an LLM (Cerebras for speed)
6
+ * for deeper analysis.
7
+ */
8
+ import { Database } from "bun:sqlite";
9
+ import type { Memory } from "../types/index.js";
10
+ export interface InvalidationResult {
11
+ invalidated_memory_id: string;
12
+ new_memory_id: string | null;
13
+ valid_until: string;
14
+ supersedes_id: string;
15
+ }
16
+ /**
17
+ * Invalidate an existing fact by setting its valid_until to now.
18
+ * Optionally links the new superseding memory via metadata.supersedes_id.
19
+ *
20
+ * Call this when a contradiction is detected and the user/agent confirms
21
+ * the old fact should be invalidated.
22
+ */
23
+ export declare function invalidateFact(oldMemoryId: string, newMemoryId?: string, db?: Database): InvalidationResult;
24
+ export interface ContradictionResult {
25
+ /** Whether a contradiction was detected */
26
+ contradicts: boolean;
27
+ /** The conflicting existing memory, if any */
28
+ conflicting_memory: Memory | null;
29
+ /** Confidence score 0-1 */
30
+ confidence: number;
31
+ /** Explanation of why it's a contradiction */
32
+ reasoning: string;
33
+ }
34
+ /**
35
+ * Check if a new memory contradicts any existing high-importance facts.
36
+ *
37
+ * Returns the contradiction result. Does NOT modify any data — the caller
38
+ * decides what to do (warn, invalidate, reject).
39
+ *
40
+ * Only checks against memories with importance >= minImportance that share
41
+ * the same key and are in the same scope/project.
42
+ */
43
+ export declare function detectContradiction(newKey: string, newValue: string, options?: {
44
+ scope?: string;
45
+ project_id?: string;
46
+ agent_id?: string;
47
+ min_importance?: number;
48
+ use_llm?: boolean;
49
+ }, db?: Database): Promise<ContradictionResult>;
50
+ //# sourceMappingURL=contradiction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contradiction.d.ts","sourceRoot":"","sources":["../../src/lib/contradiction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAOhD,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,EAAE,CAAC,EAAE,QAAQ,GACZ,kBAAkB,CA6BpB;AAMD,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,WAAW,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB;AAsED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,EACN,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,mBAAmB,CAAC,CAqE9B"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Compute time decay factor (0–1).
3
+ * Uses exponential forgetting curve: exp(-lambda * days_since_access).
4
+ *
5
+ * Returns 1.0 for today, ~0.9 for 10 days, ~0.74 for 30 days, ~0.37 for 100 days.
6
+ *
7
+ * @param daysSinceAccess Non-negative number of days since last access.
8
+ * @param lambda Decay rate constant (default 0.01).
9
+ */
10
+ export declare function timeDecay(daysSinceAccess: number, lambda?: number): number;
11
+ /**
12
+ * Compute access frequency boost (>= 1.0).
13
+ * Formula: 1 + log(1 + access_count) * 0.1
14
+ *
15
+ * Returns 1.0 for 0 accesses, ~1.07 for 1, ~1.11 for 2, ~1.24 for 10.
16
+ *
17
+ * @param accessCount Non-negative number of times the memory was accessed.
18
+ */
19
+ export declare function accessBoost(accessCount: number): number;
20
+ /**
21
+ * Compute effective importance using a forgetting curve model.
22
+ *
23
+ * effective_importance = importance * time_decay(days_since_access) * access_boost(access_count)
24
+ *
25
+ * Pinned memories always return their raw importance (no decay).
26
+ * When accessed_at is null, falls back to created_at for age calculation.
27
+ */
28
+ export declare function computeDecayScore(memory: {
29
+ importance: number;
30
+ access_count: number;
31
+ accessed_at: string | null;
32
+ created_at: string;
33
+ pinned: boolean;
34
+ }): number;
35
+ //# sourceMappingURL=decay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decay.d.ts","sourceRoot":"","sources":["../../src/lib/decay.ts"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG,MAAM,CAGhF;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,MAAM,CAaT"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Mementos Export v1 — portable JSONL format.
3
+ * One JSON object per line. Includes all memory fields + entity links.
4
+ */
5
+ import type { Memory, MemoryFilter } from "../types/index.js";
6
+ import { Database } from "bun:sqlite";
7
+ export interface ExportV1Entry {
8
+ _format: "mementos-export-v1";
9
+ _exported_at: string;
10
+ memory: Memory;
11
+ entity_links: Array<{
12
+ entity_name: string;
13
+ entity_type: string;
14
+ role: string;
15
+ }>;
16
+ }
17
+ /**
18
+ * Export memories in mementos-export-v1 JSONL format.
19
+ * Returns an array of export entries (caller serializes to JSONL).
20
+ */
21
+ export declare function exportV1(filter?: MemoryFilter, db?: Database): ExportV1Entry[];
22
+ /**
23
+ * Serialize export entries to JSONL string (one JSON object per line).
24
+ */
25
+ export declare function toJsonl(entries: ExportV1Entry[]): string;
26
+ /**
27
+ * Parse JSONL string back to export entries.
28
+ */
29
+ export declare function fromJsonl(jsonl: string): ExportV1Entry[];
30
+ //# sourceMappingURL=export-v1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-v1.d.ts","sourceRoot":"","sources":["../../src/lib/export-v1.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAI9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,KAAK,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,MAAM,CAAC,EAAE,YAAY,EACrB,EAAE,CAAC,EAAE,QAAQ,GACZ,aAAa,EAAE,CA6BjB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAKxD"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * GDPR-compliant erasure (right to be forgotten).
3
+ *
4
+ * Deletes PII from memory values while preserving anonymized audit trail.
5
+ * The audit log entries remain with hashes only (no content).
6
+ */
7
+ import { Database } from "bun:sqlite";
8
+ export interface GdprErasureResult {
9
+ erased_count: number;
10
+ memory_ids: string[];
11
+ timestamp: string;
12
+ }
13
+ /**
14
+ * Erase all memories containing the given PII identifier.
15
+ * Replaces value, summary, and key with "[REDACTED]".
16
+ * Clears tags and metadata that might contain PII.
17
+ * Preserves the audit trail (audit_log entries have hashes, not content).
18
+ */
19
+ export declare function gdprErase(identifier: string, options?: {
20
+ project_id?: string;
21
+ agent_id?: string;
22
+ dry_run?: boolean;
23
+ }, db?: Database): GdprErasureResult;
24
+ //# sourceMappingURL=gdpr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gdpr.d.ts","sourceRoot":"","sources":["../../src/lib/gdpr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,EACN,EAAE,CAAC,EAAE,QAAQ,GACZ,iBAAiB,CAwDnB"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Memory importers — parse export formats from Mem0, Zep, and LangMem into mementos memories.
3
+ */
4
+ import type { CreateMemoryInput } from "../../types/index.js";
5
+ export interface ImportResult {
6
+ memories: CreateMemoryInput[];
7
+ warnings: string[];
8
+ source_format: string;
9
+ }
10
+ interface Mem0Export {
11
+ id?: string;
12
+ memory?: string;
13
+ user_id?: string;
14
+ metadata?: Record<string, unknown>;
15
+ created_at?: string;
16
+ categories?: string[];
17
+ }
18
+ export declare function importMem0(data: Mem0Export[]): ImportResult;
19
+ interface ZepExport {
20
+ uuid?: string;
21
+ fact?: string;
22
+ rating?: number;
23
+ valid_at?: string;
24
+ invalid_at?: string;
25
+ source_node_name?: string;
26
+ target_node_name?: string;
27
+ }
28
+ export declare function importZep(data: ZepExport[]): ImportResult;
29
+ interface LangMemExport {
30
+ id?: string;
31
+ content?: string;
32
+ namespace?: string;
33
+ metadata?: Record<string, unknown>;
34
+ }
35
+ export declare function importLangMem(data: LangMemExport[]): ImportResult;
36
+ export declare function detectFormat(data: unknown[]): "mem0" | "zep" | "langmem" | "unknown";
37
+ export {};
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/importers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAM9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,UAAU,UAAU;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,YAAY,CAqB3D;AAMD,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,YAAY,CA8BzD;AAMD,UAAU,aAAa;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,YAAY,CAqBjE;AAMD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAOpF"}
@@ -1,5 +1,6 @@
1
1
  import { Database } from "bun:sqlite";
2
2
  import type { MemoryCategory, MementosConfig } from "../types/index.js";
3
+ export type InjectionStrategy = "default" | "smart";
3
4
  export interface InjectionOptions {
4
5
  agent_id?: string;
5
6
  project_id?: string;
@@ -7,6 +8,8 @@ export interface InjectionOptions {
7
8
  max_tokens?: number;
8
9
  categories?: MemoryCategory[];
9
10
  min_importance?: number;
11
+ strategy?: InjectionStrategy;
12
+ query?: string;
10
13
  db?: Database;
11
14
  }
12
15
  export declare class MemoryInjector {
@@ -19,6 +22,11 @@ export declare class MemoryInjector {
19
22
  * Token-budget aware.
20
23
  */
21
24
  getInjectionContext(options?: InjectionOptions): string;
25
+ /**
26
+ * Async smart injection: scores memories by embedding similarity + importance + recency.
27
+ * Falls back to default strategy if no embeddings exist or no query is provided.
28
+ */
29
+ getSmartInjectionContext(options?: InjectionOptions): Promise<string>;
22
30
  /**
23
31
  * Reset the deduplication window (call between refresh intervals)
24
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"injector.d.ts","sourceRoot":"","sources":["../../src/lib/injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAU,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQhF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAA0B;gBAEjC,MAAM,CAAC,EAAE,cAAc;IAInC;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM;IA0K3D;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B"}
1
+ {"version":3,"file":"injector.d.ts","sourceRoot":"","sources":["../../src/lib/injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAU,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAShF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAA0B;gBAEjC,MAAM,CAAC,EAAE,cAAc;IAInC;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM;IA0L3D;;;OAGG;IACG,wBAAwB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuL/E;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Memory poisoning detection.
3
+ *
4
+ * Computes a trust score (0.0 - 1.0) for incoming memories based on heuristic
5
+ * checks. Low-trust memories are flagged for review.
6
+ */
7
+ import type { Memory } from "../types/index.js";
8
+ /**
9
+ * Compute a trust score for a memory value.
10
+ *
11
+ * Returns a float between 0.0 and 1.0 where 1.0 = fully trusted.
12
+ * Heuristic penalties:
13
+ * - Instruction-like patterns (-0.2)
14
+ * - Promotional patterns (-0.3)
15
+ * - Contradicts existing high-importance memories (-0.3)
16
+ * - Very short value (<10 chars) with high importance claim (-0.1)
17
+ */
18
+ export declare function computeTrustScore(value: string, key: string, existingMemories?: Memory[], claimedImportance?: number): number;
19
+ //# sourceMappingURL=poisoning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poisoning.d.ts","sourceRoot":"","sources":["../../src/lib/poisoning.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA+BhD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAyDR"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Cross-profile memory sync.
3
+ * Selectively copy memories between different mementos profiles/databases.
4
+ */
5
+ import type { MemoryFilter } from "../types/index.js";
6
+ export interface ProfileSyncOptions {
7
+ filter?: MemoryFilter;
8
+ strategy?: "skip" | "merge" | "overwrite";
9
+ }
10
+ export interface ProfileSyncResult {
11
+ copied: number;
12
+ skipped: number;
13
+ source_profile: string;
14
+ target_profile: string;
15
+ }
16
+ /**
17
+ * Sync memories from one profile to another.
18
+ */
19
+ export declare function syncProfiles(sourceProfile: string, targetProfile: string, options?: ProfileSyncOptions): ProfileSyncResult;
20
+ //# sourceMappingURL=profile-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-sync.d.ts","sourceRoot":"","sources":["../../src/lib/profile-sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAUD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAmDnB"}
@@ -49,7 +49,7 @@ export interface ExtractedEntity {
49
49
  export interface ExtractedRelation {
50
50
  from: string;
51
51
  to: string;
52
- type: "uses" | "knows" | "depends_on" | "created_by" | "related_to" | "contradicts" | "part_of" | "implements";
52
+ type: "uses" | "knows" | "depends_on" | "created_by" | "related_to" | "contradicts" | "part_of" | "implements" | "happened_before" | "happened_after" | "caused_by" | "resulted_in" | "supersedes" | "version_of";
53
53
  }
54
54
  export interface EntityExtractionResult {
55
55
  entities: ExtractedEntity[];
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Memory quality auto-scoring.
3
+ * Heuristic scoring based on specificity, actionability, freshness, consistency.
4
+ */
5
+ import type { Memory } from "../types/index.js";
6
+ export interface QualityScore {
7
+ total: number;
8
+ specificity: number;
9
+ actionability: number;
10
+ freshness: number;
11
+ }
12
+ /**
13
+ * Compute a quality score for a memory.
14
+ */
15
+ export declare function computeQualityScore(memory: Memory): QualityScore;
16
+ //# sourceMappingURL=quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/lib/quality.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAwBhE"}
@@ -8,7 +8,7 @@
8
8
  declare const DEFAULT_PORT = 19428;
9
9
  export interface RemoteSyncOptions {
10
10
  remoteUrl?: string;
11
- scope?: "global" | "shared" | "private";
11
+ scope?: "global" | "shared" | "private" | "working";
12
12
  agentId?: string;
13
13
  projectId?: string;
14
14
  since?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"remote-sync.d.ts","sourceRoot":"","sources":["../../src/lib/remote-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,QAAA,MAAM,YAAY,QAAQ,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAqBD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4B1F;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyB5F;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAU5F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUrH;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"remote-sync.d.ts","sourceRoot":"","sources":["../../src/lib/remote-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,QAAA,MAAM,YAAY,QAAQ,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAqBD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4B1F;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyB5F;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAU5F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUrH;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -11,4 +11,7 @@ export declare function runCleanup(config: MementosConfig, db?: Database): {
11
11
  unused_archived: number;
12
12
  deprioritized: number;
13
13
  };
14
+ export declare function enforceMemoryBounds(projectId?: string, db?: Database): {
15
+ archived: number;
16
+ };
14
17
  //# sourceMappingURL=retention.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/lib/retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAQrE,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CA0C3E;AAMD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAwBrE;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAoBjE;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CA2BrE;AAMD,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,EACtB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAgBxG"}
1
+ {"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/lib/retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAUrE,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CA0C3E;AAMD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAwBrE;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAoBjE;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CA2BrE;AAMD,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,EACtB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAgBxG;AAOD,wBAAgB,mBAAmB,CACjC,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAuEtB"}
@@ -1,5 +1,5 @@
1
1
  import { Database } from "bun:sqlite";
2
- import type { MemoryFilter, MemorySearchResult } from "../types/index.js";
2
+ import type { Memory, MemoryFilter, MemorySearchResult } from "../types/index.js";
3
3
  /**
4
4
  * Search memories by query string with relevance scoring.
5
5
  *
@@ -9,6 +9,36 @@ import type { MemoryFilter, MemorySearchResult } from "../types/index.js";
9
9
  * importance DESC.
10
10
  */
11
11
  export declare function searchMemories(query: string, filter?: MemoryFilter, db?: Database): MemorySearchResult[];
12
+ /**
13
+ * Search memories using FTS5 BM25 ranking explicitly.
14
+ * Returns results ranked by BM25 score (key weight 10, value weight 5, summary weight 3).
15
+ */
16
+ export declare function searchWithBm25(query: string, filter?: MemoryFilter, db?: Database): MemorySearchResult[];
17
+ export interface HybridSearchResult {
18
+ memory: Memory;
19
+ score: number;
20
+ keyword_rank: number | null;
21
+ semantic_rank: number | null;
22
+ match_type: MemorySearchResult["match_type"];
23
+ highlights?: {
24
+ field: string;
25
+ snippet: string;
26
+ }[];
27
+ }
28
+ /**
29
+ * Hybrid search: runs keyword search (FTS5+fuzzy) and semantic search in parallel,
30
+ * then fuses results using Reciprocal Rank Fusion (RRF).
31
+ *
32
+ * This combines the precision of keyword matching with the recall of semantic similarity.
33
+ */
34
+ export declare function hybridSearch(query: string, options?: {
35
+ filter?: MemoryFilter;
36
+ semantic_threshold?: number;
37
+ semantic_weight?: number;
38
+ keyword_weight?: number;
39
+ limit?: number;
40
+ k?: number;
41
+ }, db?: Database): Promise<HybridSearchResult[]>;
12
42
  export declare function logSearchQuery(query: string, resultCount: number, agentId?: string, projectId?: string, db?: Database): void;
13
43
  export declare function getSearchHistory(limit?: number, projectId?: string, db?: Database): {
14
44
  query: string;
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAyB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAU,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAyoBlF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,YAAY,EACrB,EAAE,CAAC,EAAE,QAAQ,GACZ,kBAAkB,EAAE,CAiEtB;AAMD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAWN;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,GAAE,MAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAU/D;AAED,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,MAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAUpC"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAyB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AA2nBlF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,YAAY,EACrB,EAAE,CAAC,EAAE,QAAQ,GACZ,kBAAkB,EAAE,CAiEtB;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,YAAY,EACrB,EAAE,CAAC,EAAE,QAAQ,GACZ,kBAAkB,EAAE,CAwDtB;AAMD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD;AAgBD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;CACP,EACN,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAiE/B;AAMD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAWN;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,GAAE,MAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAU/D;AAED,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,MAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAUpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"corpus-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/corpus-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAyDD,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf,GAAG,OAAO,CAAC,cAAc,CAAC,CAyH1B"}
1
+ {"version":3,"file":"corpus-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/corpus-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAyDD,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf,GAAG,OAAO,CAAC,cAAc,CAAC,CA0H1B"}