@claude-flow/memory 3.0.0-alpha.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 (214) hide show
  1. package/.agentic-flow/intelligence.json +16 -0
  2. package/README.md +249 -0
  3. package/__tests__/coverage/base.css +224 -0
  4. package/__tests__/coverage/block-navigation.js +87 -0
  5. package/__tests__/coverage/coverage-final.json +19 -0
  6. package/__tests__/coverage/favicon.png +0 -0
  7. package/__tests__/coverage/index.html +206 -0
  8. package/__tests__/coverage/lcov-report/base.css +224 -0
  9. package/__tests__/coverage/lcov-report/block-navigation.js +87 -0
  10. package/__tests__/coverage/lcov-report/favicon.png +0 -0
  11. package/__tests__/coverage/lcov-report/index.html +206 -0
  12. package/__tests__/coverage/lcov-report/prettify.css +1 -0
  13. package/__tests__/coverage/lcov-report/prettify.js +2 -0
  14. package/__tests__/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  15. package/__tests__/coverage/lcov-report/sorter.js +210 -0
  16. package/__tests__/coverage/lcov-report/src/agentdb-adapter.ts.html +2737 -0
  17. package/__tests__/coverage/lcov-report/src/agentdb-backend.ts.html +3130 -0
  18. package/__tests__/coverage/lcov-report/src/application/commands/delete-memory.command.ts.html +601 -0
  19. package/__tests__/coverage/lcov-report/src/application/commands/index.html +131 -0
  20. package/__tests__/coverage/lcov-report/src/application/commands/store-memory.command.ts.html +394 -0
  21. package/__tests__/coverage/lcov-report/src/application/queries/index.html +116 -0
  22. package/__tests__/coverage/lcov-report/src/application/queries/search-memory.query.ts.html +796 -0
  23. package/__tests__/coverage/lcov-report/src/application/services/index.html +116 -0
  24. package/__tests__/coverage/lcov-report/src/application/services/memory-application-service.ts.html +793 -0
  25. package/__tests__/coverage/lcov-report/src/cache-manager.ts.html +1633 -0
  26. package/__tests__/coverage/lcov-report/src/database-provider.ts.html +1618 -0
  27. package/__tests__/coverage/lcov-report/src/domain/entities/index.html +116 -0
  28. package/__tests__/coverage/lcov-report/src/domain/entities/memory-entry.ts.html +952 -0
  29. package/__tests__/coverage/lcov-report/src/domain/services/index.html +116 -0
  30. package/__tests__/coverage/lcov-report/src/domain/services/memory-domain-service.ts.html +1294 -0
  31. package/__tests__/coverage/lcov-report/src/hnsw-index.ts.html +3124 -0
  32. package/__tests__/coverage/lcov-report/src/hybrid-backend.ts.html +2167 -0
  33. package/__tests__/coverage/lcov-report/src/index.html +266 -0
  34. package/__tests__/coverage/lcov-report/src/infrastructure/repositories/hybrid-memory-repository.ts.html +1633 -0
  35. package/__tests__/coverage/lcov-report/src/infrastructure/repositories/index.html +116 -0
  36. package/__tests__/coverage/lcov-report/src/migration.ts.html +2092 -0
  37. package/__tests__/coverage/lcov-report/src/query-builder.ts.html +1711 -0
  38. package/__tests__/coverage/lcov-report/src/sqlite-backend.ts.html +2281 -0
  39. package/__tests__/coverage/lcov-report/src/sqljs-backend.ts.html +2374 -0
  40. package/__tests__/coverage/lcov-report/src/types.ts.html +2266 -0
  41. package/__tests__/coverage/lcov.info +10238 -0
  42. package/__tests__/coverage/prettify.css +1 -0
  43. package/__tests__/coverage/prettify.js +2 -0
  44. package/__tests__/coverage/sort-arrow-sprite.png +0 -0
  45. package/__tests__/coverage/sorter.js +210 -0
  46. package/__tests__/coverage/src/agentdb-adapter.ts.html +2737 -0
  47. package/__tests__/coverage/src/agentdb-backend.ts.html +3130 -0
  48. package/__tests__/coverage/src/application/commands/delete-memory.command.ts.html +601 -0
  49. package/__tests__/coverage/src/application/commands/index.html +131 -0
  50. package/__tests__/coverage/src/application/commands/store-memory.command.ts.html +394 -0
  51. package/__tests__/coverage/src/application/queries/index.html +116 -0
  52. package/__tests__/coverage/src/application/queries/search-memory.query.ts.html +796 -0
  53. package/__tests__/coverage/src/application/services/index.html +116 -0
  54. package/__tests__/coverage/src/application/services/memory-application-service.ts.html +793 -0
  55. package/__tests__/coverage/src/cache-manager.ts.html +1633 -0
  56. package/__tests__/coverage/src/database-provider.ts.html +1618 -0
  57. package/__tests__/coverage/src/domain/entities/index.html +116 -0
  58. package/__tests__/coverage/src/domain/entities/memory-entry.ts.html +952 -0
  59. package/__tests__/coverage/src/domain/services/index.html +116 -0
  60. package/__tests__/coverage/src/domain/services/memory-domain-service.ts.html +1294 -0
  61. package/__tests__/coverage/src/hnsw-index.ts.html +3124 -0
  62. package/__tests__/coverage/src/hybrid-backend.ts.html +2167 -0
  63. package/__tests__/coverage/src/index.html +266 -0
  64. package/__tests__/coverage/src/infrastructure/repositories/hybrid-memory-repository.ts.html +1633 -0
  65. package/__tests__/coverage/src/infrastructure/repositories/index.html +116 -0
  66. package/__tests__/coverage/src/migration.ts.html +2092 -0
  67. package/__tests__/coverage/src/query-builder.ts.html +1711 -0
  68. package/__tests__/coverage/src/sqlite-backend.ts.html +2281 -0
  69. package/__tests__/coverage/src/sqljs-backend.ts.html +2374 -0
  70. package/__tests__/coverage/src/types.ts.html +2266 -0
  71. package/benchmarks/cache-hit-rate.bench.ts +535 -0
  72. package/benchmarks/hnsw-indexing.bench.ts +552 -0
  73. package/benchmarks/memory-write.bench.ts +469 -0
  74. package/benchmarks/vector-search.bench.ts +449 -0
  75. package/dist/agentdb-adapter.d.ts +146 -0
  76. package/dist/agentdb-adapter.d.ts.map +1 -0
  77. package/dist/agentdb-adapter.js +679 -0
  78. package/dist/agentdb-adapter.js.map +1 -0
  79. package/dist/agentdb-backend.d.ts +214 -0
  80. package/dist/agentdb-backend.d.ts.map +1 -0
  81. package/dist/agentdb-backend.js +827 -0
  82. package/dist/agentdb-backend.js.map +1 -0
  83. package/dist/agentdb-backend.test.d.ts +7 -0
  84. package/dist/agentdb-backend.test.d.ts.map +1 -0
  85. package/dist/agentdb-backend.test.js +258 -0
  86. package/dist/agentdb-backend.test.js.map +1 -0
  87. package/dist/application/commands/delete-memory.command.d.ts +65 -0
  88. package/dist/application/commands/delete-memory.command.d.ts.map +1 -0
  89. package/dist/application/commands/delete-memory.command.js +129 -0
  90. package/dist/application/commands/delete-memory.command.js.map +1 -0
  91. package/dist/application/commands/store-memory.command.d.ts +48 -0
  92. package/dist/application/commands/store-memory.command.d.ts.map +1 -0
  93. package/dist/application/commands/store-memory.command.js +72 -0
  94. package/dist/application/commands/store-memory.command.js.map +1 -0
  95. package/dist/application/index.d.ts +12 -0
  96. package/dist/application/index.d.ts.map +1 -0
  97. package/dist/application/index.js +15 -0
  98. package/dist/application/index.js.map +1 -0
  99. package/dist/application/queries/search-memory.query.d.ts +72 -0
  100. package/dist/application/queries/search-memory.query.d.ts.map +1 -0
  101. package/dist/application/queries/search-memory.query.js +143 -0
  102. package/dist/application/queries/search-memory.query.js.map +1 -0
  103. package/dist/application/services/memory-application-service.d.ts +121 -0
  104. package/dist/application/services/memory-application-service.d.ts.map +1 -0
  105. package/dist/application/services/memory-application-service.js +190 -0
  106. package/dist/application/services/memory-application-service.js.map +1 -0
  107. package/dist/cache-manager.d.ts +134 -0
  108. package/dist/cache-manager.d.ts.map +1 -0
  109. package/dist/cache-manager.js +407 -0
  110. package/dist/cache-manager.js.map +1 -0
  111. package/dist/database-provider.d.ts +86 -0
  112. package/dist/database-provider.d.ts.map +1 -0
  113. package/dist/database-provider.js +385 -0
  114. package/dist/database-provider.js.map +1 -0
  115. package/dist/database-provider.test.d.ts +7 -0
  116. package/dist/database-provider.test.d.ts.map +1 -0
  117. package/dist/database-provider.test.js +285 -0
  118. package/dist/database-provider.test.js.map +1 -0
  119. package/dist/domain/entities/memory-entry.d.ts +143 -0
  120. package/dist/domain/entities/memory-entry.d.ts.map +1 -0
  121. package/dist/domain/entities/memory-entry.js +226 -0
  122. package/dist/domain/entities/memory-entry.js.map +1 -0
  123. package/dist/domain/index.d.ts +11 -0
  124. package/dist/domain/index.d.ts.map +1 -0
  125. package/dist/domain/index.js +12 -0
  126. package/dist/domain/index.js.map +1 -0
  127. package/dist/domain/repositories/memory-repository.interface.d.ts +102 -0
  128. package/dist/domain/repositories/memory-repository.interface.d.ts.map +1 -0
  129. package/dist/domain/repositories/memory-repository.interface.js +11 -0
  130. package/dist/domain/repositories/memory-repository.interface.js.map +1 -0
  131. package/dist/domain/services/memory-domain-service.d.ts +105 -0
  132. package/dist/domain/services/memory-domain-service.d.ts.map +1 -0
  133. package/dist/domain/services/memory-domain-service.js +297 -0
  134. package/dist/domain/services/memory-domain-service.js.map +1 -0
  135. package/dist/hnsw-index.d.ts +111 -0
  136. package/dist/hnsw-index.d.ts.map +1 -0
  137. package/dist/hnsw-index.js +781 -0
  138. package/dist/hnsw-index.js.map +1 -0
  139. package/dist/hybrid-backend.d.ts +217 -0
  140. package/dist/hybrid-backend.d.ts.map +1 -0
  141. package/dist/hybrid-backend.js +491 -0
  142. package/dist/hybrid-backend.js.map +1 -0
  143. package/dist/hybrid-backend.test.d.ts +8 -0
  144. package/dist/hybrid-backend.test.d.ts.map +1 -0
  145. package/dist/hybrid-backend.test.js +320 -0
  146. package/dist/hybrid-backend.test.js.map +1 -0
  147. package/dist/index.d.ts +188 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +345 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/infrastructure/index.d.ts +17 -0
  152. package/dist/infrastructure/index.d.ts.map +1 -0
  153. package/dist/infrastructure/index.js +16 -0
  154. package/dist/infrastructure/index.js.map +1 -0
  155. package/dist/infrastructure/repositories/hybrid-memory-repository.d.ts +66 -0
  156. package/dist/infrastructure/repositories/hybrid-memory-repository.d.ts.map +1 -0
  157. package/dist/infrastructure/repositories/hybrid-memory-repository.js +409 -0
  158. package/dist/infrastructure/repositories/hybrid-memory-repository.js.map +1 -0
  159. package/dist/migration.d.ts +68 -0
  160. package/dist/migration.d.ts.map +1 -0
  161. package/dist/migration.js +513 -0
  162. package/dist/migration.js.map +1 -0
  163. package/dist/query-builder.d.ts +211 -0
  164. package/dist/query-builder.d.ts.map +1 -0
  165. package/dist/query-builder.js +438 -0
  166. package/dist/query-builder.js.map +1 -0
  167. package/dist/sqlite-backend.d.ts +121 -0
  168. package/dist/sqlite-backend.d.ts.map +1 -0
  169. package/dist/sqlite-backend.js +564 -0
  170. package/dist/sqlite-backend.js.map +1 -0
  171. package/dist/sqljs-backend.d.ts +128 -0
  172. package/dist/sqljs-backend.d.ts.map +1 -0
  173. package/dist/sqljs-backend.js +598 -0
  174. package/dist/sqljs-backend.js.map +1 -0
  175. package/dist/types.d.ts +481 -0
  176. package/dist/types.d.ts.map +1 -0
  177. package/dist/types.js +58 -0
  178. package/dist/types.js.map +1 -0
  179. package/docs/AGENTDB-INTEGRATION.md +388 -0
  180. package/docs/CROSS_PLATFORM.md +505 -0
  181. package/docs/WINDOWS_SUPPORT.md +422 -0
  182. package/examples/agentdb-example.ts +345 -0
  183. package/examples/cross-platform-usage.ts +326 -0
  184. package/framework/benchmark.ts +112 -0
  185. package/package.json +31 -0
  186. package/src/agentdb-adapter.ts +884 -0
  187. package/src/agentdb-backend.test.ts +339 -0
  188. package/src/agentdb-backend.ts +1016 -0
  189. package/src/application/commands/delete-memory.command.ts +172 -0
  190. package/src/application/commands/store-memory.command.ts +103 -0
  191. package/src/application/index.ts +36 -0
  192. package/src/application/queries/search-memory.query.ts +237 -0
  193. package/src/application/services/memory-application-service.ts +236 -0
  194. package/src/cache-manager.ts +516 -0
  195. package/src/database-provider.test.ts +364 -0
  196. package/src/database-provider.ts +511 -0
  197. package/src/domain/entities/memory-entry.ts +289 -0
  198. package/src/domain/index.ts +35 -0
  199. package/src/domain/repositories/memory-repository.interface.ts +120 -0
  200. package/src/domain/services/memory-domain-service.ts +403 -0
  201. package/src/hnsw-index.ts +1013 -0
  202. package/src/hybrid-backend.test.ts +399 -0
  203. package/src/hybrid-backend.ts +694 -0
  204. package/src/index.ts +515 -0
  205. package/src/infrastructure/index.ts +23 -0
  206. package/src/infrastructure/repositories/hybrid-memory-repository.ts +516 -0
  207. package/src/migration.ts +669 -0
  208. package/src/query-builder.ts +542 -0
  209. package/src/sqlite-backend.ts +732 -0
  210. package/src/sqljs-backend.ts +763 -0
  211. package/src/types.ts +727 -0
  212. package/tsconfig.json +9 -0
  213. package/tsconfig.tsbuildinfo +1 -0
  214. package/verify-cross-platform.ts +170 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-entry.js","sourceRoot":"","sources":["../../../src/domain/entities/memory-entry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Memory Domain Layer - Public Exports
3
+ *
4
+ * Exports all domain entities, value objects, services, and interfaces.
5
+ *
6
+ * @module v3/memory/domain
7
+ */
8
+ export { MemoryEntry, type MemoryType, type MemoryStatus, type MemoryEntryProps, } from './entities/memory-entry.js';
9
+ export { type IMemoryRepository, type MemoryQueryOptions, type VectorSearchOptions, type VectorSearchResult, type BulkOperationResult, type MemoryStatistics, } from './repositories/memory-repository.interface.js';
10
+ export { MemoryDomainService, type ConsolidationStrategy, type ConsolidationOptions, type ConsolidationResult, type DeduplicationResult, type NamespaceAnalysis, } from './services/memory-domain-service.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,WAAW,EACX,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EACL,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Memory Domain Layer - Public Exports
3
+ *
4
+ * Exports all domain entities, value objects, services, and interfaces.
5
+ *
6
+ * @module v3/memory/domain
7
+ */
8
+ // Entities
9
+ export { MemoryEntry, } from './entities/memory-entry.js';
10
+ // Domain Services
11
+ export { MemoryDomainService, } from './services/memory-domain-service.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,WAAW;AACX,OAAO,EACL,WAAW,GAIZ,MAAM,4BAA4B,CAAC;AAYpC,kBAAkB;AAClB,OAAO,EACL,mBAAmB,GAMpB,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Memory Repository Interface - Domain Layer
3
+ *
4
+ * Defines the contract for memory persistence.
5
+ * Following DDD, the interface belongs to the domain layer
6
+ * while implementations belong to infrastructure.
7
+ *
8
+ * @module v3/memory/domain/repositories
9
+ */
10
+ import { MemoryEntry, MemoryType, MemoryStatus } from '../entities/memory-entry.js';
11
+ /**
12
+ * Query options for memory retrieval
13
+ */
14
+ export interface MemoryQueryOptions {
15
+ namespace?: string;
16
+ type?: MemoryType;
17
+ status?: MemoryStatus;
18
+ limit?: number;
19
+ offset?: number;
20
+ orderBy?: 'createdAt' | 'updatedAt' | 'accessCount' | 'lastAccessedAt';
21
+ orderDirection?: 'asc' | 'desc';
22
+ }
23
+ /**
24
+ * Vector search options
25
+ */
26
+ export interface VectorSearchOptions {
27
+ vector: Float32Array;
28
+ namespace?: string;
29
+ limit?: number;
30
+ threshold?: number;
31
+ type?: MemoryType;
32
+ }
33
+ /**
34
+ * Vector search result
35
+ */
36
+ export interface VectorSearchResult {
37
+ entry: MemoryEntry;
38
+ similarity: number;
39
+ distance: number;
40
+ }
41
+ /**
42
+ * Bulk operation result
43
+ */
44
+ export interface BulkOperationResult {
45
+ success: number;
46
+ failed: number;
47
+ errors: Array<{
48
+ id: string;
49
+ error: string;
50
+ }>;
51
+ }
52
+ /**
53
+ * Memory statistics
54
+ */
55
+ export interface MemoryStatistics {
56
+ totalEntries: number;
57
+ activeEntries: number;
58
+ archivedEntries: number;
59
+ deletedEntries: number;
60
+ totalSize: number;
61
+ entriesByNamespace: Record<string, number>;
62
+ entriesByType: Record<MemoryType, number>;
63
+ averageAccessCount: number;
64
+ hottestEntries: string[];
65
+ coldestEntries: string[];
66
+ }
67
+ /**
68
+ * Memory Repository Interface
69
+ *
70
+ * Defines all operations for memory persistence.
71
+ * Implementations can use SQLite, AgentDB, or hybrid backends.
72
+ */
73
+ export interface IMemoryRepository {
74
+ save(entry: MemoryEntry): Promise<void>;
75
+ findById(id: string): Promise<MemoryEntry | null>;
76
+ findByKey(namespace: string, key: string): Promise<MemoryEntry | null>;
77
+ findByCompositeKey(compositeKey: string): Promise<MemoryEntry | null>;
78
+ delete(id: string): Promise<boolean>;
79
+ exists(id: string): Promise<boolean>;
80
+ saveMany(entries: MemoryEntry[]): Promise<BulkOperationResult>;
81
+ findByIds(ids: string[]): Promise<MemoryEntry[]>;
82
+ deleteMany(ids: string[]): Promise<BulkOperationResult>;
83
+ findAll(options?: MemoryQueryOptions): Promise<MemoryEntry[]>;
84
+ findByNamespace(namespace: string, options?: Omit<MemoryQueryOptions, 'namespace'>): Promise<MemoryEntry[]>;
85
+ findByType(type: MemoryType, options?: Omit<MemoryQueryOptions, 'type'>): Promise<MemoryEntry[]>;
86
+ findByStatus(status: MemoryStatus, options?: Omit<MemoryQueryOptions, 'status'>): Promise<MemoryEntry[]>;
87
+ searchByVector(options: VectorSearchOptions): Promise<VectorSearchResult[]>;
88
+ findSimilar(entryId: string, limit?: number): Promise<VectorSearchResult[]>;
89
+ findExpired(): Promise<MemoryEntry[]>;
90
+ deleteExpired(): Promise<number>;
91
+ findCold(milliseconds: number): Promise<MemoryEntry[]>;
92
+ archiveCold(milliseconds: number): Promise<number>;
93
+ getStatistics(): Promise<MemoryStatistics>;
94
+ count(options?: MemoryQueryOptions): Promise<number>;
95
+ listNamespaces(): Promise<string[]>;
96
+ deleteNamespace(namespace: string): Promise<number>;
97
+ getNamespaceSize(namespace: string): Promise<number>;
98
+ initialize(): Promise<void>;
99
+ shutdown(): Promise<void>;
100
+ clear(): Promise<void>;
101
+ }
102
+ //# sourceMappingURL=memory-repository.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-repository.interface.d.ts","sourceRoot":"","sources":["../../../src/domain/repositories/memory-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAC;IACvE,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAEhC,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAClD,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACvE,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGrC,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC/D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAGxD,OAAO,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5G,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACjG,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAGzG,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAG5E,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAGnD,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAGrD,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAGrD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Memory Repository Interface - Domain Layer
3
+ *
4
+ * Defines the contract for memory persistence.
5
+ * Following DDD, the interface belongs to the domain layer
6
+ * while implementations belong to infrastructure.
7
+ *
8
+ * @module v3/memory/domain/repositories
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=memory-repository.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-repository.interface.js","sourceRoot":"","sources":["../../../src/domain/repositories/memory-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Memory Domain Service - Domain Layer
3
+ *
4
+ * Contains domain logic that doesn't naturally fit within a single entity.
5
+ * Coordinates between multiple memory entries and enforces domain rules.
6
+ *
7
+ * @module v3/memory/domain/services
8
+ */
9
+ import { MemoryEntry, MemoryType } from '../entities/memory-entry.js';
10
+ import { IMemoryRepository, VectorSearchResult } from '../repositories/memory-repository.interface.js';
11
+ /**
12
+ * Memory consolidation strategy
13
+ */
14
+ export type ConsolidationStrategy = 'merge' | 'dedupe' | 'prune' | 'summarize';
15
+ /**
16
+ * Memory consolidation options
17
+ */
18
+ export interface ConsolidationOptions {
19
+ strategy: ConsolidationStrategy;
20
+ namespace?: string;
21
+ threshold?: number;
22
+ maxAge?: number;
23
+ keepHot?: boolean;
24
+ }
25
+ /**
26
+ * Consolidation result
27
+ */
28
+ export interface ConsolidationResult {
29
+ processed: number;
30
+ consolidated: number;
31
+ removed: number;
32
+ newEntries: MemoryEntry[];
33
+ }
34
+ /**
35
+ * Memory deduplication result
36
+ */
37
+ export interface DeduplicationResult {
38
+ duplicatesFound: number;
39
+ duplicatesRemoved: number;
40
+ groupsProcessed: number;
41
+ }
42
+ /**
43
+ * Memory namespace statistics
44
+ */
45
+ export interface NamespaceAnalysis {
46
+ namespace: string;
47
+ totalEntries: number;
48
+ activeEntries: number;
49
+ totalSize: number;
50
+ averageAccessCount: number;
51
+ oldestEntry: Date;
52
+ newestEntry: Date;
53
+ typeDistribution: Record<MemoryType, number>;
54
+ }
55
+ /**
56
+ * Memory Domain Service
57
+ *
58
+ * Provides domain-level operations that span multiple entities.
59
+ * Implements business rules for memory management.
60
+ */
61
+ export declare class MemoryDomainService {
62
+ private readonly repository;
63
+ constructor(repository: IMemoryRepository);
64
+ /**
65
+ * Store a new memory with automatic type detection
66
+ */
67
+ storeWithTypeDetection(namespace: string, key: string, value: unknown, vector?: Float32Array): Promise<MemoryEntry>;
68
+ /**
69
+ * Retrieve and record access
70
+ */
71
+ retrieveWithAccessTracking(namespace: string, key: string): Promise<MemoryEntry | null>;
72
+ /**
73
+ * Search for similar memories and record access
74
+ */
75
+ searchSimilarWithTracking(vector: Float32Array, namespace?: string, limit?: number): Promise<VectorSearchResult[]>;
76
+ /**
77
+ * Consolidate memories based on strategy
78
+ */
79
+ consolidate(options: ConsolidationOptions): Promise<ConsolidationResult>;
80
+ /**
81
+ * Detect memory type based on value structure
82
+ */
83
+ private detectMemoryType;
84
+ /**
85
+ * Prune old, rarely accessed memories
86
+ */
87
+ private pruneOldMemories;
88
+ /**
89
+ * Find and remove duplicate memories
90
+ */
91
+ private deduplicateMemories;
92
+ /**
93
+ * Merge related memories into consolidated entries
94
+ */
95
+ private mergeRelatedMemories;
96
+ /**
97
+ * Merge multiple entries into one
98
+ */
99
+ private mergeEntries;
100
+ /**
101
+ * Analyze a namespace
102
+ */
103
+ analyzeNamespace(namespace: string): Promise<NamespaceAnalysis>;
104
+ }
105
+ //# sourceMappingURL=memory-domain-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-domain-service.d.ts","sourceRoot":"","sources":["../../../src/domain/services/memory-domain-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAoB,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEvG;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,WAAW,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,IAAI,CAAC;IAClB,WAAW,EAAE,IAAI,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,iBAAiB;IAE1D;;OAEG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC;IAavB;;OAEG;IACG,0BAA0B,CAC9B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAS9B;;OAEG;IACG,yBAAyB,CAC7B,MAAM,EAAE,YAAY,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkBhC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+B9E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,mBAAmB;IA8CjC;;OAEG;YACW,oBAAoB;IAsDlC;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAoCtE"}
@@ -0,0 +1,297 @@
1
+ /**
2
+ * Memory Domain Service - Domain Layer
3
+ *
4
+ * Contains domain logic that doesn't naturally fit within a single entity.
5
+ * Coordinates between multiple memory entries and enforces domain rules.
6
+ *
7
+ * @module v3/memory/domain/services
8
+ */
9
+ import { MemoryEntry } from '../entities/memory-entry.js';
10
+ /**
11
+ * Memory Domain Service
12
+ *
13
+ * Provides domain-level operations that span multiple entities.
14
+ * Implements business rules for memory management.
15
+ */
16
+ export class MemoryDomainService {
17
+ repository;
18
+ constructor(repository) {
19
+ this.repository = repository;
20
+ }
21
+ /**
22
+ * Store a new memory with automatic type detection
23
+ */
24
+ async storeWithTypeDetection(namespace, key, value, vector) {
25
+ const type = this.detectMemoryType(value);
26
+ const entry = MemoryEntry.create({
27
+ namespace,
28
+ key,
29
+ value,
30
+ type,
31
+ vector,
32
+ });
33
+ await this.repository.save(entry);
34
+ return entry;
35
+ }
36
+ /**
37
+ * Retrieve and record access
38
+ */
39
+ async retrieveWithAccessTracking(namespace, key) {
40
+ const entry = await this.repository.findByKey(namespace, key);
41
+ if (entry && entry.isAccessible()) {
42
+ entry.recordAccess();
43
+ await this.repository.save(entry);
44
+ }
45
+ return entry;
46
+ }
47
+ /**
48
+ * Search for similar memories and record access
49
+ */
50
+ async searchSimilarWithTracking(vector, namespace, limit = 10) {
51
+ const results = await this.repository.searchByVector({
52
+ vector,
53
+ namespace,
54
+ limit,
55
+ });
56
+ // Record access for all returned entries
57
+ await Promise.all(results.map(async (result) => {
58
+ result.entry.recordAccess();
59
+ await this.repository.save(result.entry);
60
+ }));
61
+ return results;
62
+ }
63
+ /**
64
+ * Consolidate memories based on strategy
65
+ */
66
+ async consolidate(options) {
67
+ const entries = await this.repository.findByNamespace(options.namespace ?? 'default', { status: 'active' });
68
+ let result = {
69
+ processed: entries.length,
70
+ consolidated: 0,
71
+ removed: 0,
72
+ newEntries: [],
73
+ };
74
+ switch (options.strategy) {
75
+ case 'prune':
76
+ result = await this.pruneOldMemories(entries, options);
77
+ break;
78
+ case 'dedupe':
79
+ const dedupeResult = await this.deduplicateMemories(entries, options);
80
+ result.removed = dedupeResult.duplicatesRemoved;
81
+ break;
82
+ case 'merge':
83
+ result = await this.mergeRelatedMemories(entries, options);
84
+ break;
85
+ default:
86
+ // No-op for unknown strategies
87
+ }
88
+ return result;
89
+ }
90
+ /**
91
+ * Detect memory type based on value structure
92
+ */
93
+ detectMemoryType(value) {
94
+ if (typeof value === 'string') {
95
+ // Long text is likely semantic
96
+ if (value.length > 500)
97
+ return 'semantic';
98
+ // Short instructions are procedural
99
+ if (value.includes('->') || value.includes('then'))
100
+ return 'procedural';
101
+ }
102
+ if (typeof value === 'object' && value !== null) {
103
+ const obj = value;
104
+ // Objects with timestamps are episodic
105
+ if ('timestamp' in obj || 'when' in obj || 'date' in obj)
106
+ return 'episodic';
107
+ // Objects with steps are procedural
108
+ if ('steps' in obj || 'actions' in obj)
109
+ return 'procedural';
110
+ }
111
+ // Default to working memory for short-term storage
112
+ return 'working';
113
+ }
114
+ /**
115
+ * Prune old, rarely accessed memories
116
+ */
117
+ async pruneOldMemories(entries, options) {
118
+ const maxAge = options.maxAge ?? 7 * 24 * 60 * 60 * 1000; // 7 days default
119
+ const threshold = options.threshold ?? 5; // Minimum access count to keep
120
+ const now = Date.now();
121
+ const toRemove = [];
122
+ for (const entry of entries) {
123
+ const age = now - entry.createdAt.getTime();
124
+ const isOld = age > maxAge;
125
+ const isRarelyAccessed = entry.accessCount < threshold;
126
+ // Keep hot memories if requested
127
+ if (options.keepHot && entry.isHot())
128
+ continue;
129
+ if (isOld && isRarelyAccessed) {
130
+ entry.archive();
131
+ toRemove.push(entry.id);
132
+ }
133
+ }
134
+ if (toRemove.length > 0) {
135
+ await this.repository.deleteMany(toRemove);
136
+ }
137
+ return {
138
+ processed: entries.length,
139
+ consolidated: 0,
140
+ removed: toRemove.length,
141
+ newEntries: [],
142
+ };
143
+ }
144
+ /**
145
+ * Find and remove duplicate memories
146
+ */
147
+ async deduplicateMemories(entries, options) {
148
+ const threshold = options.threshold ?? 0.95; // Similarity threshold
149
+ const duplicates = [];
150
+ const processed = new Set();
151
+ for (let i = 0; i < entries.length; i++) {
152
+ if (processed.has(entries[i].id))
153
+ continue;
154
+ const entry = entries[i];
155
+ if (!entry.vector)
156
+ continue;
157
+ // Find similar entries
158
+ const similar = await this.repository.searchByVector({
159
+ vector: entry.vector,
160
+ namespace: entry.namespace,
161
+ limit: 10,
162
+ threshold,
163
+ });
164
+ // Mark duplicates (keep the one with highest access count)
165
+ const group = similar
166
+ .filter((s) => s.entry.id !== entry.id && s.similarity >= threshold)
167
+ .sort((a, b) => b.entry.accessCount - a.entry.accessCount);
168
+ for (const dup of group.slice(1)) {
169
+ duplicates.push(dup.entry.id);
170
+ processed.add(dup.entry.id);
171
+ }
172
+ processed.add(entry.id);
173
+ }
174
+ if (duplicates.length > 0) {
175
+ await this.repository.deleteMany(duplicates);
176
+ }
177
+ return {
178
+ duplicatesFound: duplicates.length,
179
+ duplicatesRemoved: duplicates.length,
180
+ groupsProcessed: processed.size,
181
+ };
182
+ }
183
+ /**
184
+ * Merge related memories into consolidated entries
185
+ */
186
+ async mergeRelatedMemories(entries, options) {
187
+ const threshold = options.threshold ?? 0.8;
188
+ const newEntries = [];
189
+ const toRemove = [];
190
+ const processed = new Set();
191
+ for (const entry of entries) {
192
+ if (processed.has(entry.id))
193
+ continue;
194
+ if (!entry.vector) {
195
+ processed.add(entry.id);
196
+ continue;
197
+ }
198
+ // Find related entries
199
+ const related = await this.repository.searchByVector({
200
+ vector: entry.vector,
201
+ namespace: entry.namespace,
202
+ limit: 5,
203
+ threshold,
204
+ });
205
+ if (related.length > 1) {
206
+ // Merge related entries
207
+ const merged = this.mergeEntries(related.map((r) => r.entry));
208
+ newEntries.push(merged);
209
+ for (const r of related) {
210
+ toRemove.push(r.entry.id);
211
+ processed.add(r.entry.id);
212
+ }
213
+ }
214
+ else {
215
+ processed.add(entry.id);
216
+ }
217
+ }
218
+ // Remove old entries and save merged ones
219
+ if (toRemove.length > 0) {
220
+ await this.repository.deleteMany(toRemove);
221
+ }
222
+ if (newEntries.length > 0) {
223
+ await this.repository.saveMany(newEntries);
224
+ }
225
+ return {
226
+ processed: entries.length,
227
+ consolidated: newEntries.length,
228
+ removed: toRemove.length,
229
+ newEntries,
230
+ };
231
+ }
232
+ /**
233
+ * Merge multiple entries into one
234
+ */
235
+ mergeEntries(entries) {
236
+ // Sort by access count to prioritize most accessed
237
+ const sorted = [...entries].sort((a, b) => b.accessCount - a.accessCount);
238
+ const primary = sorted[0];
239
+ // Combine metadata
240
+ const combinedMetadata = {};
241
+ for (const entry of entries) {
242
+ Object.assign(combinedMetadata, entry.metadata);
243
+ }
244
+ combinedMetadata.mergedFrom = entries.map((e) => e.id);
245
+ combinedMetadata.mergedAt = new Date().toISOString();
246
+ // Create merged entry
247
+ return MemoryEntry.create({
248
+ namespace: primary.namespace,
249
+ key: `merged_${Date.now()}`,
250
+ value: {
251
+ primary: primary.value,
252
+ related: sorted.slice(1).map((e) => e.value),
253
+ },
254
+ type: primary.type,
255
+ vector: primary.vector,
256
+ metadata: combinedMetadata,
257
+ accessCount: entries.reduce((sum, e) => sum + e.accessCount, 0),
258
+ });
259
+ }
260
+ /**
261
+ * Analyze a namespace
262
+ */
263
+ async analyzeNamespace(namespace) {
264
+ const entries = await this.repository.findByNamespace(namespace);
265
+ const active = entries.filter((e) => e.status === 'active');
266
+ const typeDistribution = {
267
+ semantic: 0,
268
+ episodic: 0,
269
+ procedural: 0,
270
+ working: 0,
271
+ };
272
+ let totalAccessCount = 0;
273
+ let totalSize = 0;
274
+ let oldestDate = new Date();
275
+ let newestDate = new Date(0);
276
+ for (const entry of entries) {
277
+ typeDistribution[entry.type]++;
278
+ totalAccessCount += entry.accessCount;
279
+ totalSize += JSON.stringify(entry.value).length;
280
+ if (entry.createdAt < oldestDate)
281
+ oldestDate = entry.createdAt;
282
+ if (entry.createdAt > newestDate)
283
+ newestDate = entry.createdAt;
284
+ }
285
+ return {
286
+ namespace,
287
+ totalEntries: entries.length,
288
+ activeEntries: active.length,
289
+ totalSize,
290
+ averageAccessCount: entries.length > 0 ? totalAccessCount / entries.length : 0,
291
+ oldestEntry: oldestDate,
292
+ newestEntry: newestDate,
293
+ typeDistribution,
294
+ };
295
+ }
296
+ }
297
+ //# sourceMappingURL=memory-domain-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-domain-service.js","sourceRoot":"","sources":["../../../src/domain/services/memory-domain-service.ts"],"names":[],"mappings":"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"}