@dcyfr/ai 1.0.3 → 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.
- package/LICENSE +27 -1
- package/README.md +343 -4
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +2 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/mcp/index.d.ts +14 -2
- package/dist/ai/mcp/index.d.ts.map +1 -1
- package/dist/ai/mcp/index.js +11 -1
- package/dist/ai/mcp/index.js.map +1 -1
- package/dist/ai/mcp/servers/analytics/index.d.ts +19 -0
- package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/analytics/index.js +556 -0
- package/dist/ai/mcp/servers/analytics/index.js.map +1 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.d.ts +61 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.d.ts.map +1 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.js +8 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.js.map +1 -0
- package/dist/ai/mcp/servers/content-manager/index.d.ts +19 -0
- package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/content-manager/index.js +236 -0
- package/dist/ai/mcp/servers/content-manager/index.js.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/index.d.ts +19 -0
- package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/index.js +422 -0
- package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts +59 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.js +8 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.js.map +1 -0
- package/dist/ai/mcp/servers/promptintel/index.d.ts +19 -0
- package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/promptintel/index.js +323 -0
- package/dist/ai/mcp/servers/promptintel/index.js.map +1 -0
- package/dist/ai/mcp/servers/shared/cache.d.ts +62 -0
- package/dist/ai/mcp/servers/shared/cache.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/cache.js +117 -0
- package/dist/ai/mcp/servers/shared/cache.js.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.d.ts +53 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.js +185 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.js.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.d.ts +85 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.js +7 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.js.map +1 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.d.ts +54 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.js +122 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -0
- package/dist/ai/mcp/servers/shared/redis-client.d.ts +54 -0
- package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/redis-client.js +225 -0
- package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -0
- package/dist/ai/mcp/servers/shared/types.d.ts +292 -0
- package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/types.js +6 -0
- package/dist/ai/mcp/servers/shared/types.js.map +1 -0
- package/dist/ai/mcp/servers/shared/utils.d.ts +41 -0
- package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/utils.js +183 -0
- package/dist/ai/mcp/servers/shared/utils.js.map +1 -0
- package/dist/ai/memory/config.d.ts +87 -0
- package/dist/ai/memory/config.d.ts.map +1 -0
- package/dist/ai/memory/config.js +154 -0
- package/dist/ai/memory/config.js.map +1 -0
- package/dist/ai/memory/dcyfr-memory.d.ts +63 -0
- package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -0
- package/dist/ai/memory/dcyfr-memory.js +270 -0
- package/dist/ai/memory/dcyfr-memory.js.map +1 -0
- package/dist/ai/memory/index.d.ts +15 -0
- package/dist/ai/memory/index.d.ts.map +1 -0
- package/dist/ai/memory/index.js +15 -0
- package/dist/ai/memory/index.js.map +1 -0
- package/dist/ai/memory/mem0-client.d.ts +108 -0
- package/dist/ai/memory/mem0-client.d.ts.map +1 -0
- package/dist/ai/memory/mem0-client.js +166 -0
- package/dist/ai/memory/mem0-client.js.map +1 -0
- package/dist/ai/memory/types.d.ts +175 -0
- package/dist/ai/memory/types.d.ts.map +1 -0
- package/dist/ai/memory/types.js +10 -0
- package/dist/ai/memory/types.js.map +1 -0
- package/package.json +24 -2
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for MCP servers
|
|
3
|
+
* Common functions used across Analytics, Design Token, and Content Manager MCPs
|
|
4
|
+
*/
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Error Handling
|
|
7
|
+
// ============================================================================
|
|
8
|
+
export class MCPToolError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
details;
|
|
11
|
+
constructor(code, message, details) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.code = code;
|
|
14
|
+
this.details = details;
|
|
15
|
+
this.name = "MCPToolError";
|
|
16
|
+
}
|
|
17
|
+
toJSON() {
|
|
18
|
+
return {
|
|
19
|
+
code: this.code,
|
|
20
|
+
message: this.message,
|
|
21
|
+
details: this.details,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function handleToolError(error) {
|
|
26
|
+
if (error instanceof MCPToolError) {
|
|
27
|
+
return `Error [${error.code}]: ${error.message}`;
|
|
28
|
+
}
|
|
29
|
+
if (error instanceof Error) {
|
|
30
|
+
return `Error: ${error.message}`;
|
|
31
|
+
}
|
|
32
|
+
return `Unknown error: ${String(error)}`;
|
|
33
|
+
}
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Environment Helpers
|
|
36
|
+
// ============================================================================
|
|
37
|
+
export function isProduction() {
|
|
38
|
+
return (process.env.NODE_ENV === "production" ||
|
|
39
|
+
process.env.VERCEL_ENV === "production");
|
|
40
|
+
}
|
|
41
|
+
export function isDevelopment() {
|
|
42
|
+
return (process.env.NODE_ENV === "development" ||
|
|
43
|
+
process.env.VERCEL_ENV === "development");
|
|
44
|
+
}
|
|
45
|
+
export function getEnvironment() {
|
|
46
|
+
if (process.env.VERCEL_ENV) {
|
|
47
|
+
return process.env.VERCEL_ENV;
|
|
48
|
+
}
|
|
49
|
+
if (process.env.NODE_ENV === "production")
|
|
50
|
+
return "production";
|
|
51
|
+
if (process.env.NODE_ENV === "development")
|
|
52
|
+
return "development";
|
|
53
|
+
return "development";
|
|
54
|
+
}
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Data Filtering
|
|
57
|
+
// ============================================================================
|
|
58
|
+
/**
|
|
59
|
+
* Filters out test/demo data in production environments
|
|
60
|
+
*/
|
|
61
|
+
export function filterProductionData(items) {
|
|
62
|
+
if (!isProduction()) {
|
|
63
|
+
return items;
|
|
64
|
+
}
|
|
65
|
+
// In production, exclude test data
|
|
66
|
+
return items.filter((item) => !item.isTest);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Warns if using fallback/demo data in production
|
|
70
|
+
*/
|
|
71
|
+
export function warnProductionFallback(dataSource) {
|
|
72
|
+
if (isProduction()) {
|
|
73
|
+
console.error(`❌ CRITICAL: Using demo/fallback data in production (${dataSource})`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// ============================================================================
|
|
77
|
+
// Time Helpers
|
|
78
|
+
// ============================================================================
|
|
79
|
+
export function getTimeRangeMs(range) {
|
|
80
|
+
const now = Date.now();
|
|
81
|
+
switch (range) {
|
|
82
|
+
case "1h":
|
|
83
|
+
return 60 * 60 * 1000; // 1 hour
|
|
84
|
+
case "24h":
|
|
85
|
+
return 24 * 60 * 60 * 1000;
|
|
86
|
+
case "7d":
|
|
87
|
+
return 7 * 24 * 60 * 60 * 1000;
|
|
88
|
+
case "30d":
|
|
89
|
+
return 30 * 24 * 60 * 60 * 1000;
|
|
90
|
+
case "all":
|
|
91
|
+
return now; // All time
|
|
92
|
+
default:
|
|
93
|
+
return 7 * 24 * 60 * 60 * 1000; // Default to 7 days
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function isWithinTimeRange(timestamp, range) {
|
|
97
|
+
if (range === "all")
|
|
98
|
+
return true;
|
|
99
|
+
const now = Date.now();
|
|
100
|
+
const rangeMs = getTimeRangeMs(range);
|
|
101
|
+
return now - timestamp <= rangeMs;
|
|
102
|
+
}
|
|
103
|
+
// ============================================================================
|
|
104
|
+
// String Helpers
|
|
105
|
+
// ============================================================================
|
|
106
|
+
export function sanitizePath(path) {
|
|
107
|
+
// Remove leading/trailing slashes, normalize
|
|
108
|
+
return path.replace(/^\/+|\/+$/g, "").toLowerCase();
|
|
109
|
+
}
|
|
110
|
+
export function extractSlug(filePath) {
|
|
111
|
+
// Extract slug from file path (e.g., "blog/my-post.mdx" -> "my-post")
|
|
112
|
+
const parts = filePath.split("/");
|
|
113
|
+
const fileName = parts[parts.length - 1] || "";
|
|
114
|
+
return fileName.replace(/\.(mdx?|tsx?)$/, "");
|
|
115
|
+
}
|
|
116
|
+
export function calculateReadingTime(wordCount) {
|
|
117
|
+
// Average reading speed: 200 words per minute
|
|
118
|
+
const wordsPerMinute = 200;
|
|
119
|
+
return Math.ceil(wordCount / wordsPerMinute);
|
|
120
|
+
}
|
|
121
|
+
// ============================================================================
|
|
122
|
+
// Array Helpers
|
|
123
|
+
// ============================================================================
|
|
124
|
+
export function dedupe(items) {
|
|
125
|
+
return Array.from(new Set(items));
|
|
126
|
+
}
|
|
127
|
+
export function sortByProperty(items, property, direction = "desc") {
|
|
128
|
+
return [...items].sort((a, b) => {
|
|
129
|
+
const aVal = a[property];
|
|
130
|
+
const bVal = b[property];
|
|
131
|
+
if (typeof aVal === "number" && typeof bVal === "number") {
|
|
132
|
+
return direction === "asc" ? aVal - bVal : bVal - aVal;
|
|
133
|
+
}
|
|
134
|
+
if (typeof aVal === "string" && typeof bVal === "string") {
|
|
135
|
+
return direction === "asc"
|
|
136
|
+
? aVal.localeCompare(bVal)
|
|
137
|
+
: bVal.localeCompare(aVal);
|
|
138
|
+
}
|
|
139
|
+
return 0;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
export function limitResults(items, limit) {
|
|
143
|
+
if (!limit || limit <= 0)
|
|
144
|
+
return items;
|
|
145
|
+
return items.slice(0, limit);
|
|
146
|
+
}
|
|
147
|
+
// ============================================================================
|
|
148
|
+
// Validation Helpers
|
|
149
|
+
// ============================================================================
|
|
150
|
+
export function isValidUrl(url) {
|
|
151
|
+
try {
|
|
152
|
+
new URL(url);
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
export function isValidPath(path) {
|
|
160
|
+
// Basic validation: starts with /, contains no special chars except - and _
|
|
161
|
+
return /^\/[\w\-\/]*$/.test(path);
|
|
162
|
+
}
|
|
163
|
+
// ============================================================================
|
|
164
|
+
// Performance Helpers
|
|
165
|
+
// ============================================================================
|
|
166
|
+
export async function measurePerformance(operation, label) {
|
|
167
|
+
const start = performance.now();
|
|
168
|
+
const result = await operation();
|
|
169
|
+
const durationMs = performance.now() - start;
|
|
170
|
+
if (durationMs > 500) {
|
|
171
|
+
console.warn(`⚠️ Performance warning: ${label} took ${durationMs.toFixed(2)}ms`);
|
|
172
|
+
}
|
|
173
|
+
return { result, durationMs };
|
|
174
|
+
}
|
|
175
|
+
// ============================================================================
|
|
176
|
+
// Logging Helpers
|
|
177
|
+
// ============================================================================
|
|
178
|
+
export function logToolExecution(toolName, params, success, durationMs) {
|
|
179
|
+
const status = success ? "✅" : "❌";
|
|
180
|
+
const duration = durationMs ? ` (${durationMs.toFixed(2)}ms)` : "";
|
|
181
|
+
console.warn(`${status} ${toolName}`, params, duration);
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/shared/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Layer Configuration Module
|
|
3
|
+
*
|
|
4
|
+
* Loads and validates environment variables for mem0 memory integration.
|
|
5
|
+
* Supports multiple vector database backends (Qdrant, Pinecone, Weaviate).
|
|
6
|
+
*
|
|
7
|
+
* @module @dcyfr/ai/memory/config
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Supported vector database providers
|
|
11
|
+
*/
|
|
12
|
+
export type VectorDBProvider = 'qdrant' | 'pinecone' | 'weaviate';
|
|
13
|
+
/**
|
|
14
|
+
* Vector database configuration
|
|
15
|
+
*/
|
|
16
|
+
export interface VectorDBConfig {
|
|
17
|
+
provider: VectorDBProvider;
|
|
18
|
+
url?: string;
|
|
19
|
+
apiKey?: string;
|
|
20
|
+
environment?: string;
|
|
21
|
+
index?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* LLM configuration for mem0 embeddings
|
|
25
|
+
*/
|
|
26
|
+
export interface LLMConfig {
|
|
27
|
+
provider: 'openai' | 'anthropic' | 'custom';
|
|
28
|
+
apiKey?: string;
|
|
29
|
+
model?: string;
|
|
30
|
+
embeddingModel?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Complete memory system configuration
|
|
34
|
+
*/
|
|
35
|
+
export interface MemoryConfig {
|
|
36
|
+
vectorDB: VectorDBConfig;
|
|
37
|
+
llm: LLMConfig;
|
|
38
|
+
caching?: {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
ttl: number;
|
|
41
|
+
maxSize: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Default configuration for local development
|
|
46
|
+
*/
|
|
47
|
+
export declare const DEFAULT_CONFIG: MemoryConfig;
|
|
48
|
+
/**
|
|
49
|
+
* Load memory configuration from environment variables
|
|
50
|
+
*
|
|
51
|
+
* Environment variables:
|
|
52
|
+
* - VECTOR_DB_PROVIDER: 'qdrant' | 'pinecone' | 'weaviate'
|
|
53
|
+
* - VECTOR_DB_URL: Database URL (for Qdrant, Weaviate)
|
|
54
|
+
* - VECTOR_DB_API_KEY: API key (for Pinecone, authenticated Qdrant)
|
|
55
|
+
* - VECTOR_DB_ENVIRONMENT: Pinecone environment
|
|
56
|
+
* - VECTOR_DB_INDEX: Index/collection name
|
|
57
|
+
* - LLM_PROVIDER: 'openai' | 'anthropic' | 'custom'
|
|
58
|
+
* - LLM_API_KEY: LLM API key (defaults to OPENAI_API_KEY if provider=openai)
|
|
59
|
+
* - LLM_MODEL: Model name
|
|
60
|
+
* - LLM_EMBEDDING_MODEL: Embedding model name
|
|
61
|
+
* - MEMORY_CACHE_ENABLED: 'true' | 'false'
|
|
62
|
+
* - MEMORY_CACHE_TTL: Cache TTL in seconds
|
|
63
|
+
* - MEMORY_CACHE_MAX_SIZE: Max cache entries
|
|
64
|
+
*
|
|
65
|
+
* @returns Complete memory configuration
|
|
66
|
+
* @throws Error if required environment variables are missing
|
|
67
|
+
*/
|
|
68
|
+
export declare function loadMemoryConfig(): MemoryConfig;
|
|
69
|
+
/**
|
|
70
|
+
* Validate memory configuration
|
|
71
|
+
*
|
|
72
|
+
* Ensures all required fields are present based on vector DB provider.
|
|
73
|
+
*
|
|
74
|
+
* @param config - Configuration to validate
|
|
75
|
+
* @throws Error if configuration is invalid or missing required fields
|
|
76
|
+
*/
|
|
77
|
+
export declare function validateMemoryConfig(config: MemoryConfig): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get validated memory configuration
|
|
80
|
+
*
|
|
81
|
+
* Convenience function that loads and validates configuration in one call.
|
|
82
|
+
*
|
|
83
|
+
* @returns Validated memory configuration
|
|
84
|
+
* @throws Error if configuration is invalid
|
|
85
|
+
*/
|
|
86
|
+
export declare function getMemoryConfig(): MemoryConfig;
|
|
87
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../packages/ai/memory/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,SAAS,CAAC;IACf,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YAgB5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CA0C/C;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAwD/D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAI9C"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Layer Configuration Module
|
|
3
|
+
*
|
|
4
|
+
* Loads and validates environment variables for mem0 memory integration.
|
|
5
|
+
* Supports multiple vector database backends (Qdrant, Pinecone, Weaviate).
|
|
6
|
+
*
|
|
7
|
+
* @module @dcyfr/ai/memory/config
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Default configuration for local development
|
|
11
|
+
*/
|
|
12
|
+
export const DEFAULT_CONFIG = {
|
|
13
|
+
vectorDB: {
|
|
14
|
+
provider: 'qdrant',
|
|
15
|
+
url: 'http://localhost:6333',
|
|
16
|
+
index: 'dcyfr_memories',
|
|
17
|
+
},
|
|
18
|
+
llm: {
|
|
19
|
+
provider: 'openai',
|
|
20
|
+
model: 'gpt-4',
|
|
21
|
+
embeddingModel: 'text-embedding-3-small',
|
|
22
|
+
},
|
|
23
|
+
caching: {
|
|
24
|
+
enabled: true,
|
|
25
|
+
ttl: 300, // 5 minutes
|
|
26
|
+
maxSize: 1000, // 1000 recent searches
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Load memory configuration from environment variables
|
|
31
|
+
*
|
|
32
|
+
* Environment variables:
|
|
33
|
+
* - VECTOR_DB_PROVIDER: 'qdrant' | 'pinecone' | 'weaviate'
|
|
34
|
+
* - VECTOR_DB_URL: Database URL (for Qdrant, Weaviate)
|
|
35
|
+
* - VECTOR_DB_API_KEY: API key (for Pinecone, authenticated Qdrant)
|
|
36
|
+
* - VECTOR_DB_ENVIRONMENT: Pinecone environment
|
|
37
|
+
* - VECTOR_DB_INDEX: Index/collection name
|
|
38
|
+
* - LLM_PROVIDER: 'openai' | 'anthropic' | 'custom'
|
|
39
|
+
* - LLM_API_KEY: LLM API key (defaults to OPENAI_API_KEY if provider=openai)
|
|
40
|
+
* - LLM_MODEL: Model name
|
|
41
|
+
* - LLM_EMBEDDING_MODEL: Embedding model name
|
|
42
|
+
* - MEMORY_CACHE_ENABLED: 'true' | 'false'
|
|
43
|
+
* - MEMORY_CACHE_TTL: Cache TTL in seconds
|
|
44
|
+
* - MEMORY_CACHE_MAX_SIZE: Max cache entries
|
|
45
|
+
*
|
|
46
|
+
* @returns Complete memory configuration
|
|
47
|
+
* @throws Error if required environment variables are missing
|
|
48
|
+
*/
|
|
49
|
+
export function loadMemoryConfig() {
|
|
50
|
+
const env = process.env;
|
|
51
|
+
// Vector DB configuration
|
|
52
|
+
const vectorDBProvider = (env.VECTOR_DB_PROVIDER || 'qdrant');
|
|
53
|
+
const vectorDBConfig = {
|
|
54
|
+
provider: vectorDBProvider,
|
|
55
|
+
url: env.VECTOR_DB_URL,
|
|
56
|
+
apiKey: env.VECTOR_DB_API_KEY,
|
|
57
|
+
environment: env.VECTOR_DB_ENVIRONMENT,
|
|
58
|
+
index: env.VECTOR_DB_INDEX || 'dcyfr_memories',
|
|
59
|
+
};
|
|
60
|
+
// Apply defaults based on provider
|
|
61
|
+
if (vectorDBProvider === 'qdrant' && !vectorDBConfig.url) {
|
|
62
|
+
vectorDBConfig.url = DEFAULT_CONFIG.vectorDB.url;
|
|
63
|
+
}
|
|
64
|
+
// LLM configuration
|
|
65
|
+
const llmProvider = (env.LLM_PROVIDER || 'openai');
|
|
66
|
+
const llmApiKey = env.LLM_API_KEY || (llmProvider === 'openai' ? env.OPENAI_API_KEY : undefined);
|
|
67
|
+
const llmConfig = {
|
|
68
|
+
provider: llmProvider,
|
|
69
|
+
apiKey: llmApiKey,
|
|
70
|
+
model: env.LLM_MODEL || DEFAULT_CONFIG.llm.model,
|
|
71
|
+
embeddingModel: env.LLM_EMBEDDING_MODEL || DEFAULT_CONFIG.llm.embeddingModel,
|
|
72
|
+
};
|
|
73
|
+
// Caching configuration
|
|
74
|
+
const cachingConfig = {
|
|
75
|
+
enabled: env.MEMORY_CACHE_ENABLED !== 'false', // Default true
|
|
76
|
+
ttl: parseInt(env.MEMORY_CACHE_TTL || '300', 10),
|
|
77
|
+
maxSize: parseInt(env.MEMORY_CACHE_MAX_SIZE || '1000', 10),
|
|
78
|
+
};
|
|
79
|
+
return {
|
|
80
|
+
vectorDB: vectorDBConfig,
|
|
81
|
+
llm: llmConfig,
|
|
82
|
+
caching: cachingConfig,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Validate memory configuration
|
|
87
|
+
*
|
|
88
|
+
* Ensures all required fields are present based on vector DB provider.
|
|
89
|
+
*
|
|
90
|
+
* @param config - Configuration to validate
|
|
91
|
+
* @throws Error if configuration is invalid or missing required fields
|
|
92
|
+
*/
|
|
93
|
+
export function validateMemoryConfig(config) {
|
|
94
|
+
const { vectorDB, llm } = config;
|
|
95
|
+
// Validate vector DB configuration
|
|
96
|
+
if (!vectorDB.provider) {
|
|
97
|
+
throw new Error('VECTOR_DB_PROVIDER is required');
|
|
98
|
+
}
|
|
99
|
+
switch (vectorDB.provider) {
|
|
100
|
+
case 'qdrant':
|
|
101
|
+
if (!vectorDB.url) {
|
|
102
|
+
throw new Error('VECTOR_DB_URL is required for Qdrant');
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
case 'pinecone':
|
|
106
|
+
if (!vectorDB.apiKey) {
|
|
107
|
+
throw new Error('VECTOR_DB_API_KEY is required for Pinecone');
|
|
108
|
+
}
|
|
109
|
+
if (!vectorDB.environment) {
|
|
110
|
+
throw new Error('VECTOR_DB_ENVIRONMENT is required for Pinecone');
|
|
111
|
+
}
|
|
112
|
+
break;
|
|
113
|
+
case 'weaviate':
|
|
114
|
+
if (!vectorDB.url) {
|
|
115
|
+
throw new Error('VECTOR_DB_URL is required for Weaviate');
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
default:
|
|
119
|
+
throw new Error(`Unsupported vector DB provider: ${vectorDB.provider}`);
|
|
120
|
+
}
|
|
121
|
+
// Validate LLM configuration
|
|
122
|
+
if (!llm.provider) {
|
|
123
|
+
throw new Error('LLM_PROVIDER is required');
|
|
124
|
+
}
|
|
125
|
+
if (llm.provider === 'openai' && !llm.apiKey) {
|
|
126
|
+
throw new Error('LLM_API_KEY or OPENAI_API_KEY is required for OpenAI provider');
|
|
127
|
+
}
|
|
128
|
+
if (!llm.embeddingModel) {
|
|
129
|
+
throw new Error('LLM_EMBEDDING_MODEL is required');
|
|
130
|
+
}
|
|
131
|
+
// Validate caching configuration
|
|
132
|
+
if (config.caching) {
|
|
133
|
+
if (config.caching.ttl <= 0) {
|
|
134
|
+
throw new Error('MEMORY_CACHE_TTL must be greater than 0');
|
|
135
|
+
}
|
|
136
|
+
if (config.caching.maxSize <= 0) {
|
|
137
|
+
throw new Error('MEMORY_CACHE_MAX_SIZE must be greater than 0');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get validated memory configuration
|
|
143
|
+
*
|
|
144
|
+
* Convenience function that loads and validates configuration in one call.
|
|
145
|
+
*
|
|
146
|
+
* @returns Validated memory configuration
|
|
147
|
+
* @throws Error if configuration is invalid
|
|
148
|
+
*/
|
|
149
|
+
export function getMemoryConfig() {
|
|
150
|
+
const config = loadMemoryConfig();
|
|
151
|
+
validateMemoryConfig(config);
|
|
152
|
+
return config;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../packages/ai/memory/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCYFR Memory implementation wrapping mem0 OSS client
|
|
3
|
+
*/
|
|
4
|
+
import type { DCYFRMemory, Memory, MemorySearchResult, MemoryContext } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* DCYFRMemory implementation using mem0 OSS as the backend
|
|
7
|
+
*/
|
|
8
|
+
export declare class DCYFRMemoryImpl implements DCYFRMemory {
|
|
9
|
+
private mem0ClientPromise;
|
|
10
|
+
/**
|
|
11
|
+
* Lazy initialization of mem0 client
|
|
12
|
+
*/
|
|
13
|
+
private ensureInitialized;
|
|
14
|
+
/**
|
|
15
|
+
* Add memory associated with a specific user
|
|
16
|
+
*/
|
|
17
|
+
addUserMemory(userId: string, message: string, context?: MemoryContext): Promise<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Search user memories using semantic search
|
|
20
|
+
*/
|
|
21
|
+
searchUserMemories(userId: string, query: string, limit?: number): Promise<MemorySearchResult[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Get all memories for a user
|
|
24
|
+
*/
|
|
25
|
+
getUserMemories(userId: string, topic?: string): Promise<Memory[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Delete all memories for a user
|
|
28
|
+
*/
|
|
29
|
+
deleteUserMemories(userId: string): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Store agent workflow state
|
|
32
|
+
*/
|
|
33
|
+
addAgentMemory(agentId: string, sessionId: string, state: Record<string, unknown>): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Search agent memories
|
|
36
|
+
*/
|
|
37
|
+
searchAgentMemories(agentId: string, query: string, limit?: number): Promise<MemorySearchResult[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Get agent workflow state for a specific session
|
|
40
|
+
*/
|
|
41
|
+
getAgentState(agentId: string, sessionId: string): Promise<Record<string, unknown> | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Add temporary session context with TTL
|
|
44
|
+
*/
|
|
45
|
+
addSessionMemory(sessionId: string, message: string, ttl?: number): Promise<string>;
|
|
46
|
+
/**
|
|
47
|
+
* Get concatenated session context (filters out expired memories)
|
|
48
|
+
*/
|
|
49
|
+
getSessionContext(sessionId: string): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Delete all memories for a session
|
|
52
|
+
*/
|
|
53
|
+
deleteSessionMemories(sessionId: string): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get singleton DCYFRMemory instance
|
|
57
|
+
*/
|
|
58
|
+
export declare function getMemory(): DCYFRMemory;
|
|
59
|
+
/**
|
|
60
|
+
* Reset memory instance (for testing)
|
|
61
|
+
*/
|
|
62
|
+
export declare function resetMemory(): void;
|
|
63
|
+
//# sourceMappingURL=dcyfr-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dcyfr-memory.d.ts","sourceRoot":"","sources":["../../../packages/ai/memory/dcyfr-memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,kBAAkB,EAClB,aAAa,EAEd,MAAM,YAAY,CAAC;AAUpB;;GAEG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,iBAAiB,CAA6B;IAEtD;;OAEG;YACW,iBAAiB;IAW/B;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC;IAoBlB;;OAEG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAmC,GACzC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAyBhC;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBxE;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAavD;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC;IAuBlB;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAoC,GAC1C,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA0BhC;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAwB1C;;OAEG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAa,GACjB,OAAO,CAAC,MAAM,CAAC;IAqBlB;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B3D;;OAEG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ9D;AAQD;;GAEG;AACH,wBAAgB,SAAS,IAAI,WAAW,CAKvC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
|