@dcyfr/ai 1.0.2 → 1.0.4

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 (91) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +27 -1
  3. package/README.md +359 -23
  4. package/bin/cli.js +12 -0
  5. package/bin/tui/config-wizard.js +107 -0
  6. package/bin/tui/validation-dashboard.js +123 -0
  7. package/bin/tui.js +259 -0
  8. package/dist/ai/agents/agent-loader.d.ts.map +1 -1
  9. package/dist/ai/agents/agent-loader.js +4 -2
  10. package/dist/ai/agents/agent-loader.js.map +1 -1
  11. package/dist/ai/index.d.ts +2 -0
  12. package/dist/ai/index.d.ts.map +1 -1
  13. package/dist/ai/index.js +2 -0
  14. package/dist/ai/index.js.map +1 -1
  15. package/dist/ai/mcp/index.d.ts +14 -2
  16. package/dist/ai/mcp/index.d.ts.map +1 -1
  17. package/dist/ai/mcp/index.js +11 -1
  18. package/dist/ai/mcp/index.js.map +1 -1
  19. package/dist/ai/mcp/servers/analytics/index.d.ts +19 -0
  20. package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -0
  21. package/dist/ai/mcp/servers/analytics/index.js +556 -0
  22. package/dist/ai/mcp/servers/analytics/index.js.map +1 -0
  23. package/dist/ai/mcp/servers/content-manager/content-provider.d.ts +61 -0
  24. package/dist/ai/mcp/servers/content-manager/content-provider.d.ts.map +1 -0
  25. package/dist/ai/mcp/servers/content-manager/content-provider.js +8 -0
  26. package/dist/ai/mcp/servers/content-manager/content-provider.js.map +1 -0
  27. package/dist/ai/mcp/servers/content-manager/index.d.ts +19 -0
  28. package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -0
  29. package/dist/ai/mcp/servers/content-manager/index.js +236 -0
  30. package/dist/ai/mcp/servers/content-manager/index.js.map +1 -0
  31. package/dist/ai/mcp/servers/design-tokens/index.d.ts +19 -0
  32. package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -0
  33. package/dist/ai/mcp/servers/design-tokens/index.js +422 -0
  34. package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -0
  35. package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts +59 -0
  36. package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts.map +1 -0
  37. package/dist/ai/mcp/servers/design-tokens/token-provider.js +8 -0
  38. package/dist/ai/mcp/servers/design-tokens/token-provider.js.map +1 -0
  39. package/dist/ai/mcp/servers/promptintel/index.d.ts +19 -0
  40. package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -0
  41. package/dist/ai/mcp/servers/promptintel/index.js +323 -0
  42. package/dist/ai/mcp/servers/promptintel/index.js.map +1 -0
  43. package/dist/ai/mcp/servers/shared/cache.d.ts +62 -0
  44. package/dist/ai/mcp/servers/shared/cache.d.ts.map +1 -0
  45. package/dist/ai/mcp/servers/shared/cache.js +117 -0
  46. package/dist/ai/mcp/servers/shared/cache.js.map +1 -0
  47. package/dist/ai/mcp/servers/shared/promptintel-client.d.ts +53 -0
  48. package/dist/ai/mcp/servers/shared/promptintel-client.d.ts.map +1 -0
  49. package/dist/ai/mcp/servers/shared/promptintel-client.js +185 -0
  50. package/dist/ai/mcp/servers/shared/promptintel-client.js.map +1 -0
  51. package/dist/ai/mcp/servers/shared/promptintel-types.d.ts +85 -0
  52. package/dist/ai/mcp/servers/shared/promptintel-types.d.ts.map +1 -0
  53. package/dist/ai/mcp/servers/shared/promptintel-types.js +7 -0
  54. package/dist/ai/mcp/servers/shared/promptintel-types.js.map +1 -0
  55. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts +54 -0
  56. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -0
  57. package/dist/ai/mcp/servers/shared/rate-limiter.js +122 -0
  58. package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -0
  59. package/dist/ai/mcp/servers/shared/redis-client.d.ts +54 -0
  60. package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -0
  61. package/dist/ai/mcp/servers/shared/redis-client.js +225 -0
  62. package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -0
  63. package/dist/ai/mcp/servers/shared/types.d.ts +292 -0
  64. package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -0
  65. package/dist/ai/mcp/servers/shared/types.js +6 -0
  66. package/dist/ai/mcp/servers/shared/types.js.map +1 -0
  67. package/dist/ai/mcp/servers/shared/utils.d.ts +41 -0
  68. package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -0
  69. package/dist/ai/mcp/servers/shared/utils.js +183 -0
  70. package/dist/ai/mcp/servers/shared/utils.js.map +1 -0
  71. package/dist/ai/memory/config.d.ts +87 -0
  72. package/dist/ai/memory/config.d.ts.map +1 -0
  73. package/dist/ai/memory/config.js +154 -0
  74. package/dist/ai/memory/config.js.map +1 -0
  75. package/dist/ai/memory/dcyfr-memory.d.ts +63 -0
  76. package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -0
  77. package/dist/ai/memory/dcyfr-memory.js +270 -0
  78. package/dist/ai/memory/dcyfr-memory.js.map +1 -0
  79. package/dist/ai/memory/index.d.ts +15 -0
  80. package/dist/ai/memory/index.d.ts.map +1 -0
  81. package/dist/ai/memory/index.js +15 -0
  82. package/dist/ai/memory/index.js.map +1 -0
  83. package/dist/ai/memory/mem0-client.d.ts +108 -0
  84. package/dist/ai/memory/mem0-client.d.ts.map +1 -0
  85. package/dist/ai/memory/mem0-client.js +166 -0
  86. package/dist/ai/memory/mem0-client.js.map +1 -0
  87. package/dist/ai/memory/types.d.ts +175 -0
  88. package/dist/ai/memory/types.d.ts.map +1 -0
  89. package/dist/ai/memory/types.js +10 -0
  90. package/dist/ai/memory/types.js.map +1 -0
  91. package/package.json +46 -8
@@ -0,0 +1,270 @@
1
+ /**
2
+ * DCYFR Memory implementation wrapping mem0 OSS client
3
+ */
4
+ import { getMem0Client, resetMem0Client as resetClient } from './mem0-client.js';
5
+ // Default limits for memory queries
6
+ const DEFAULTS = {
7
+ USER_MEMORY_LIMIT: 100,
8
+ AGENT_MEMORY_LIMIT: 50,
9
+ SESSION_MEMORY_LIMIT: 30,
10
+ };
11
+ /**
12
+ * DCYFRMemory implementation using mem0 OSS as the backend
13
+ */
14
+ export class DCYFRMemoryImpl {
15
+ mem0ClientPromise = null;
16
+ /**
17
+ * Lazy initialization of mem0 client
18
+ */
19
+ async ensureInitialized() {
20
+ if (!this.mem0ClientPromise) {
21
+ this.mem0ClientPromise = getMem0Client();
22
+ }
23
+ return this.mem0ClientPromise;
24
+ }
25
+ // ============================================================================
26
+ // User Memory Operations
27
+ // ============================================================================
28
+ /**
29
+ * Add memory associated with a specific user
30
+ */
31
+ async addUserMemory(userId, message, context) {
32
+ try {
33
+ const client = await this.ensureInitialized();
34
+ const result = await client.add(message, {
35
+ userId,
36
+ metadata: {
37
+ ownerType: 'user',
38
+ topic: context?.topic,
39
+ importance: context?.importance || 0.5,
40
+ ...context?.metadata,
41
+ },
42
+ });
43
+ return result.results[0]?.id || '';
44
+ }
45
+ catch (error) {
46
+ throw new Error(`Failed to add user memory: ${error.message}`);
47
+ }
48
+ }
49
+ /**
50
+ * Search user memories using semantic search
51
+ */
52
+ async searchUserMemories(userId, query, limit = DEFAULTS.USER_MEMORY_LIMIT) {
53
+ try {
54
+ const client = await this.ensureInitialized();
55
+ const result = await client.search(query, {
56
+ userId,
57
+ limit,
58
+ });
59
+ return result.results.map((item) => ({
60
+ id: item.id,
61
+ content: item.memory,
62
+ owner: userId,
63
+ ownerType: 'user',
64
+ importance: item.metadata?.importance || 0.5,
65
+ topic: item.metadata?.topic,
66
+ createdAt: item.createdAt ? new Date(item.createdAt) : new Date(),
67
+ metadata: item.metadata,
68
+ relevance: item.score || 1.0,
69
+ }));
70
+ }
71
+ catch (error) {
72
+ throw new Error(`Failed to search user memories: ${error.message}`);
73
+ }
74
+ }
75
+ /**
76
+ * Get all memories for a user
77
+ */
78
+ async getUserMemories(userId, topic) {
79
+ try {
80
+ const client = await this.ensureInitialized();
81
+ const result = await client.search('', {
82
+ userId,
83
+ limit: DEFAULTS.USER_MEMORY_LIMIT,
84
+ filters: topic ? { topic } : undefined,
85
+ });
86
+ return result.results.map((item) => ({
87
+ id: item.id,
88
+ content: item.memory,
89
+ owner: userId,
90
+ ownerType: 'user',
91
+ importance: item.metadata?.importance || 0.5,
92
+ topic: item.metadata?.topic,
93
+ createdAt: item.createdAt ? new Date(item.createdAt) : new Date(),
94
+ metadata: item.metadata,
95
+ }));
96
+ }
97
+ catch (error) {
98
+ throw new Error(`Failed to get user memories: ${error.message}`);
99
+ }
100
+ }
101
+ /**
102
+ * Delete all memories for a user
103
+ */
104
+ async deleteUserMemories(userId) {
105
+ try {
106
+ const client = await this.ensureInitialized();
107
+ await client.deleteAll({ userId });
108
+ }
109
+ catch (error) {
110
+ throw new Error(`Failed to delete user memories: ${error.message}`);
111
+ }
112
+ }
113
+ // ============================================================================
114
+ // Agent Memory Operations
115
+ // ============================================================================
116
+ /**
117
+ * Store agent workflow state
118
+ */
119
+ async addAgentMemory(agentId, sessionId, state) {
120
+ try {
121
+ const client = await this.ensureInitialized();
122
+ const message = `Agent state: ${JSON.stringify(state)}`;
123
+ const result = await client.add(message, {
124
+ agentId,
125
+ runId: sessionId,
126
+ metadata: {
127
+ ownerType: 'agent',
128
+ agentId,
129
+ sessionId,
130
+ state,
131
+ },
132
+ });
133
+ return result.results[0]?.id || '';
134
+ }
135
+ catch (error) {
136
+ throw new Error(`Failed to add agent memory: ${error.message}`);
137
+ }
138
+ }
139
+ /**
140
+ * Search agent memories
141
+ */
142
+ async searchAgentMemories(agentId, query, limit = DEFAULTS.AGENT_MEMORY_LIMIT) {
143
+ try {
144
+ const client = await this.ensureInitialized();
145
+ const result = await client.search(query, {
146
+ agentId,
147
+ limit,
148
+ });
149
+ return result.results.map((item) => ({
150
+ id: item.id,
151
+ content: item.memory,
152
+ owner: item.metadata?.agentId || agentId,
153
+ ownerType: 'agent',
154
+ relevance: item.score || 0.5,
155
+ agentId: item.metadata?.agentId || agentId,
156
+ sessionId: item.metadata?.sessionId,
157
+ state: item.metadata?.state,
158
+ createdAt: item.createdAt ? new Date(item.createdAt) : new Date(),
159
+ metadata: item.metadata,
160
+ }));
161
+ }
162
+ catch (error) {
163
+ throw new Error(`Failed to search agent memories: ${error.message}`);
164
+ }
165
+ }
166
+ /**
167
+ * Get agent workflow state for a specific session
168
+ */
169
+ async getAgentState(agentId, sessionId) {
170
+ try {
171
+ const client = await this.ensureInitialized();
172
+ const result = await client.search('', {
173
+ agentId,
174
+ runId: sessionId,
175
+ limit: 1,
176
+ });
177
+ if (result.results.length === 0) {
178
+ return null;
179
+ }
180
+ return result.results[0].metadata?.state || null;
181
+ }
182
+ catch (error) {
183
+ throw new Error(`Failed to get agent state: ${error.message}`);
184
+ }
185
+ }
186
+ // ============================================================================
187
+ // Session Memory Operations
188
+ // ============================================================================
189
+ /**
190
+ * Add temporary session context with TTL
191
+ */
192
+ async addSessionMemory(sessionId, message, ttl = 3600) {
193
+ try {
194
+ const client = await this.ensureInitialized();
195
+ const expiresAt = new Date(Date.now() + ttl * 1000);
196
+ const result = await client.add(message, {
197
+ runId: sessionId,
198
+ metadata: {
199
+ ownerType: 'session',
200
+ sessionId,
201
+ expiresAt: expiresAt.toISOString(),
202
+ },
203
+ });
204
+ return result.results[0]?.id || '';
205
+ }
206
+ catch (error) {
207
+ throw new Error(`Failed to add session memory: ${error.message}`);
208
+ }
209
+ }
210
+ /**
211
+ * Get concatenated session context (filters out expired memories)
212
+ */
213
+ async getSessionContext(sessionId) {
214
+ try {
215
+ const client = await this.ensureInitialized();
216
+ const result = await client.search('', {
217
+ runId: sessionId,
218
+ limit: DEFAULTS.SESSION_MEMORY_LIMIT,
219
+ });
220
+ const now = new Date();
221
+ // Filter out expired memories
222
+ const validMemories = result.results.filter((item) => {
223
+ const expiresAt = item.metadata?.expiresAt;
224
+ if (!expiresAt)
225
+ return true; // No expiration = keep
226
+ return new Date(expiresAt) > now;
227
+ });
228
+ // Concatenate all memory content
229
+ return validMemories
230
+ .map((item) => item.memory)
231
+ .join('\n\n');
232
+ }
233
+ catch (error) {
234
+ throw new Error(`Failed to get session context: ${error.message}`);
235
+ }
236
+ }
237
+ /**
238
+ * Delete all memories for a session
239
+ */
240
+ async deleteSessionMemories(sessionId) {
241
+ try {
242
+ const client = await this.ensureInitialized();
243
+ await client.deleteAll({ runId: sessionId });
244
+ }
245
+ catch (error) {
246
+ throw new Error(`Failed to delete session memories: ${error.message}`);
247
+ }
248
+ }
249
+ }
250
+ // ============================================================================
251
+ // Singleton Factory
252
+ // ============================================================================
253
+ let memoryInstance = null;
254
+ /**
255
+ * Get singleton DCYFRMemory instance
256
+ */
257
+ export function getMemory() {
258
+ if (!memoryInstance) {
259
+ memoryInstance = new DCYFRMemoryImpl();
260
+ }
261
+ return memoryInstance;
262
+ }
263
+ /**
264
+ * Reset memory instance (for testing)
265
+ */
266
+ export function resetMemory() {
267
+ memoryInstance = null;
268
+ resetClient();
269
+ }
270
+ //# sourceMappingURL=dcyfr-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dcyfr-memory.js","sourceRoot":"","sources":["../../../packages/ai/memory/dcyfr-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Memory Layer Module - Barrel Exports
3
+ *
4
+ * Main entry point for @dcyfr/ai/memory module.
5
+ * Exports all public APIs for memory operations.
6
+ *
7
+ * @module @dcyfr/ai/memory
8
+ */
9
+ export { getMemory, resetMemory, DCYFRMemoryImpl } from './dcyfr-memory.js';
10
+ export { getMemoryConfig, loadMemoryConfig, validateMemoryConfig, DEFAULT_CONFIG, } from './config.js';
11
+ export type { DCYFRMemory, Memory, MemorySearchResult, MemoryContext, AgentMemory, SessionMemory, MemoryProvider, } from './types.js';
12
+ export type { VectorDBProvider, VectorDBConfig, LLMConfig, MemoryConfig, } from './config.js';
13
+ export { createMem0Client, getMem0Client, resetMem0Client, } from './mem0-client.js';
14
+ export type { Mem0Client } from './mem0-client.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/ai/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,WAAW,EACX,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Memory Layer Module - Barrel Exports
3
+ *
4
+ * Main entry point for @dcyfr/ai/memory module.
5
+ * Exports all public APIs for memory operations.
6
+ *
7
+ * @module @dcyfr/ai/memory
8
+ */
9
+ // Main API
10
+ export { getMemory, resetMemory, DCYFRMemoryImpl } from './dcyfr-memory.js';
11
+ // Configuration
12
+ export { getMemoryConfig, loadMemoryConfig, validateMemoryConfig, DEFAULT_CONFIG, } from './config.js';
13
+ // Client utilities (for advanced users)
14
+ export { createMem0Client, getMem0Client, resetMem0Client, } from './mem0-client.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/ai/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,WAAW;AACX,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE5E,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,GACf,MAAM,aAAa,CAAC;AAoBrB,wCAAwC;AACxC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * mem0 Client Integration
3
+ *
4
+ * Factory functions and utilities for initializing mem0 memory client.
5
+ * Handles connection to vector database and LLM configuration.
6
+ *
7
+ * @module @dcyfr/ai/memory/mem0-client
8
+ */
9
+ import type { MemoryConfig } from './config.js';
10
+ /**
11
+ * mem0 Memory Item result
12
+ */
13
+ export interface MemoryItem {
14
+ id: string;
15
+ memory: string;
16
+ hash?: string;
17
+ createdAt?: string;
18
+ updatedAt?: string;
19
+ score?: number;
20
+ metadata?: Record<string, any>;
21
+ }
22
+ /**
23
+ * mem0 Message format
24
+ */
25
+ export interface Message {
26
+ role: 'user' | 'assistant';
27
+ content: string;
28
+ }
29
+ /**
30
+ * mem0 Search Result
31
+ */
32
+ export interface SearchResult {
33
+ results: MemoryItem[];
34
+ relations?: any[];
35
+ }
36
+ /**
37
+ * Add Memory Options
38
+ */
39
+ export interface AddMemoryOptions {
40
+ userId?: string;
41
+ agentId?: string;
42
+ runId?: string;
43
+ metadata?: Record<string, any>;
44
+ }
45
+ /**
46
+ * Search Memory Options
47
+ */
48
+ export interface SearchMemoryOptions {
49
+ userId?: string;
50
+ agentId?: string;
51
+ runId?: string;
52
+ limit?: number;
53
+ filters?: Record<string, any>;
54
+ }
55
+ /**
56
+ * Delete All Memory Options
57
+ */
58
+ export interface DeleteAllMemoryOptions {
59
+ userId?: string;
60
+ agentId?: string;
61
+ runId?: string;
62
+ }
63
+ /**
64
+ * mem0 OSS Memory instance interface (from mem0ai/oss)
65
+ */
66
+ export interface Mem0Client {
67
+ add(messages: string | Message[], config: AddMemoryOptions): Promise<SearchResult>;
68
+ search(query: string, config: SearchMemoryOptions): Promise<SearchResult>;
69
+ get(memoryId: string): Promise<MemoryItem | null>;
70
+ update(memoryId: string, data: string): Promise<{
71
+ message: string;
72
+ }>;
73
+ delete(memoryId: string): Promise<{
74
+ message: string;
75
+ }>;
76
+ deleteAll(config: DeleteAllMemoryOptions): Promise<{
77
+ message: string;
78
+ }>;
79
+ }
80
+ /**
81
+ * Create and initialize mem0 OSS client
82
+ *
83
+ * This function:
84
+ * 1. Converts DCYFR config to mem0 OSS config format
85
+ * 2. Dynamically imports mem0ai/oss package
86
+ * 3. Initializes Memory client with vector DB and LLM
87
+ * 4. Tests connection (throws on failure)
88
+ *
89
+ * @param config - DCYFR memory configuration
90
+ * @returns Initialized mem0 Memory instance
91
+ * @throws Error if mem0 initialization fails or connection test fails
92
+ */
93
+ export declare function createMem0Client(config: MemoryConfig): Promise<Mem0Client>;
94
+ /**
95
+ * Get or create singleton mem0 client
96
+ *
97
+ * Reuses existing client if already initialized, otherwise creates new one.
98
+ *
99
+ * @param config - Memory configuration (required on first call)
100
+ * @returns mem0 client instance
101
+ * @throws Error if called without config before initialization
102
+ */
103
+ export declare function getMem0Client(config?: MemoryConfig): Promise<Mem0Client>;
104
+ /**
105
+ * Reset mem0 client singleton (for testing)
106
+ */
107
+ export declare function resetMem0Client(): void;
108
+ //# sourceMappingURL=mem0-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mem0-client.d.ts","sourceRoot":"","sources":["../../../packages/ai/memory/mem0-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,aAAa,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1E,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,SAAS,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAC,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AA4HD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAyChF;AAQD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAW9E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * mem0 Client Integration
3
+ *
4
+ * Factory functions and utilities for initializing mem0 memory client.
5
+ * Handles connection to vector database and LLM configuration.
6
+ *
7
+ * @module @dcyfr/ai/memory/mem0-client
8
+ */
9
+ /**
10
+ * Convert DCYFR VectorDBConfig to mem0 OSS vector_store config
11
+ */
12
+ function buildVectorStoreConfig(config) {
13
+ switch (config.provider) {
14
+ case 'qdrant':
15
+ const qdrantConfig = {
16
+ collectionName: config.index || 'dcyfr_memories',
17
+ dimension: 1536, // OpenAI text-embedding-3-small dimension
18
+ };
19
+ if (config.url) {
20
+ const url = new URL(config.url);
21
+ qdrantConfig.url = config.url;
22
+ qdrantConfig.host = url.hostname;
23
+ qdrantConfig.port = parseInt(url.port || '6333', 10);
24
+ }
25
+ if (config.apiKey) {
26
+ qdrantConfig.apiKey = config.apiKey;
27
+ }
28
+ return {
29
+ provider: 'qdrant',
30
+ config: qdrantConfig,
31
+ };
32
+ case 'pinecone':
33
+ return {
34
+ provider: 'pinecone',
35
+ config: {
36
+ apiKey: config.apiKey,
37
+ collectionName: config.index || 'dcyfr-memories',
38
+ dimension: 1536,
39
+ },
40
+ };
41
+ case 'weaviate':
42
+ const weaviateConfig = {
43
+ collectionName: config.index || 'dcyfr_memories',
44
+ dimension: 1536,
45
+ };
46
+ if (config.url) {
47
+ weaviateConfig.url = config.url;
48
+ }
49
+ if (config.apiKey) {
50
+ weaviateConfig.apiKey = config.apiKey;
51
+ }
52
+ return {
53
+ provider: 'weaviate',
54
+ config: weaviateConfig,
55
+ };
56
+ default:
57
+ throw new Error(`Unsupported vector DB provider: ${config.provider}`);
58
+ }
59
+ }
60
+ /**
61
+ * Convert DCYFR LLMConfig to mem0 OSS llm config
62
+ */
63
+ function buildLLMConfig(config) {
64
+ return {
65
+ provider: config.provider === 'openai' ? 'openai' : config.provider,
66
+ config: {
67
+ model: config.model || 'gpt-4',
68
+ apiKey: config.apiKey,
69
+ },
70
+ };
71
+ }
72
+ /**
73
+ * Convert DCYFR LLMConfig to mem0 OSS embedder config
74
+ */
75
+ function buildEmbedderConfig(config) {
76
+ return {
77
+ provider: config.provider === 'openai' ? 'openai' : config.provider,
78
+ config: {
79
+ model: config.embeddingModel || 'text-embedding-3-small',
80
+ apiKey: config.apiKey,
81
+ embeddingDims: 1536, // OpenAI text-embedding-3-small dimension
82
+ },
83
+ };
84
+ }
85
+ /**
86
+ * Create and initialize mem0 OSS client
87
+ *
88
+ * This function:
89
+ * 1. Converts DCYFR config to mem0 OSS config format
90
+ * 2. Dynamically imports mem0ai/oss package
91
+ * 3. Initializes Memory client with vector DB and LLM
92
+ * 4. Tests connection (throws on failure)
93
+ *
94
+ * @param config - DCYFR memory configuration
95
+ * @returns Initialized mem0 Memory instance
96
+ * @throws Error if mem0 initialization fails or connection test fails
97
+ */
98
+ export async function createMem0Client(config) {
99
+ try {
100
+ // Build mem0 OSS configuration
101
+ const mem0Config = {
102
+ version: 'v1.1',
103
+ embedder: buildEmbedderConfig(config.llm),
104
+ vectorStore: buildVectorStoreConfig(config.vectorDB),
105
+ llm: buildLLMConfig(config.llm),
106
+ disableHistory: true, // Disable history DB for simplicity
107
+ };
108
+ // Dynamic import of mem0ai/oss package
109
+ const { Memory } = await import('mem0ai/oss');
110
+ // Initialize client
111
+ const client = new Memory(mem0Config);
112
+ // Test connection with a simple search
113
+ try {
114
+ await client.search('_health_check', {
115
+ userId: '_system',
116
+ limit: 1,
117
+ });
118
+ }
119
+ catch (error) {
120
+ // If error is about connection, throw
121
+ if (error.message?.includes('connection') || error.message?.includes('timeout')) {
122
+ throw new Error(`mem0 connection test failed: ${error.message}`);
123
+ }
124
+ // Other errors (like no memories) are acceptable
125
+ }
126
+ return client;
127
+ }
128
+ catch (error) {
129
+ if (error.message?.includes('Cannot find module')) {
130
+ throw new Error('mem0ai package not installed. Run: npm install mem0ai\n' +
131
+ 'Original error: ' + error.message);
132
+ }
133
+ throw new Error(`Failed to initialize mem0 client: ${error.message}`);
134
+ }
135
+ }
136
+ /**
137
+ * Singleton mem0 client instance
138
+ * Initialized lazily on first use
139
+ */
140
+ let mem0ClientInstance = null;
141
+ /**
142
+ * Get or create singleton mem0 client
143
+ *
144
+ * Reuses existing client if already initialized, otherwise creates new one.
145
+ *
146
+ * @param config - Memory configuration (required on first call)
147
+ * @returns mem0 client instance
148
+ * @throws Error if called without config before initialization
149
+ */
150
+ export async function getMem0Client(config) {
151
+ if (mem0ClientInstance) {
152
+ return mem0ClientInstance;
153
+ }
154
+ if (!config) {
155
+ throw new Error('Memory configuration required for first-time initialization');
156
+ }
157
+ mem0ClientInstance = await createMem0Client(config);
158
+ return mem0ClientInstance;
159
+ }
160
+ /**
161
+ * Reset mem0 client singleton (for testing)
162
+ */
163
+ export function resetMem0Client() {
164
+ mem0ClientInstance = null;
165
+ }
166
+ //# sourceMappingURL=mem0-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mem0-client.js","sourceRoot":"","sources":["../../../packages/ai/memory/mem0-client.ts"],"names":[],"mappings":"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"}