aimemory-core 1.0.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 (86) hide show
  1. package/.eslintrc.json +22 -0
  2. package/.github/workflows/ci.yml +57 -0
  3. package/.prettierrc +8 -0
  4. package/README.md +197 -0
  5. package/dist/config.d.ts +20 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +41 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/contextBuilder.d.ts +16 -0
  10. package/dist/contextBuilder.d.ts.map +1 -0
  11. package/dist/contextBuilder.js +139 -0
  12. package/dist/contextBuilder.js.map +1 -0
  13. package/dist/index.d.ts +45 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +88 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/licensing.d.ts +45 -0
  18. package/dist/licensing.d.ts.map +1 -0
  19. package/dist/licensing.js +99 -0
  20. package/dist/licensing.js.map +1 -0
  21. package/dist/memoryManager.d.ts +35 -0
  22. package/dist/memoryManager.d.ts.map +1 -0
  23. package/dist/memoryManager.js +265 -0
  24. package/dist/memoryManager.js.map +1 -0
  25. package/dist/metadataStore.d.ts +24 -0
  26. package/dist/metadataStore.d.ts.map +1 -0
  27. package/dist/metadataStore.js +247 -0
  28. package/dist/metadataStore.js.map +1 -0
  29. package/dist/planManager.d.ts +80 -0
  30. package/dist/planManager.d.ts.map +1 -0
  31. package/dist/planManager.js +327 -0
  32. package/dist/planManager.js.map +1 -0
  33. package/dist/rateLimiter.d.ts +49 -0
  34. package/dist/rateLimiter.d.ts.map +1 -0
  35. package/dist/rateLimiter.js +142 -0
  36. package/dist/rateLimiter.js.map +1 -0
  37. package/dist/storage/index.d.ts +3 -0
  38. package/dist/storage/index.d.ts.map +1 -0
  39. package/dist/storage/index.js +3 -0
  40. package/dist/storage/index.js.map +1 -0
  41. package/dist/storage/postgres.d.ts +31 -0
  42. package/dist/storage/postgres.d.ts.map +1 -0
  43. package/dist/storage/postgres.js +171 -0
  44. package/dist/storage/postgres.js.map +1 -0
  45. package/dist/storage/redis.d.ts +34 -0
  46. package/dist/storage/redis.d.ts.map +1 -0
  47. package/dist/storage/redis.js +101 -0
  48. package/dist/storage/redis.js.map +1 -0
  49. package/dist/types.d.ts +95 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +2 -0
  52. package/dist/types.js.map +1 -0
  53. package/dist/usageTracker.d.ts +63 -0
  54. package/dist/usageTracker.d.ts.map +1 -0
  55. package/dist/usageTracker.js +238 -0
  56. package/dist/usageTracker.js.map +1 -0
  57. package/dist/vectorStore.d.ts +18 -0
  58. package/dist/vectorStore.d.ts.map +1 -0
  59. package/dist/vectorStore.js +97 -0
  60. package/dist/vectorStore.js.map +1 -0
  61. package/examples/advanced.ts +164 -0
  62. package/examples/basic.ts +87 -0
  63. package/package.json +60 -0
  64. package/src/config.ts +65 -0
  65. package/src/contextBuilder.ts +184 -0
  66. package/src/index.ts +209 -0
  67. package/src/licensing.ts +138 -0
  68. package/src/memoryManager.ts +340 -0
  69. package/src/metadataStore.ts +298 -0
  70. package/src/planManager.ts +417 -0
  71. package/src/rateLimiter.ts +186 -0
  72. package/src/storage/index.ts +2 -0
  73. package/src/storage/postgres.ts +209 -0
  74. package/src/storage/redis.ts +117 -0
  75. package/src/types.ts +114 -0
  76. package/src/usageTracker.ts +325 -0
  77. package/src/vectorStore.ts +116 -0
  78. package/tests/aibrain.test.ts +171 -0
  79. package/tests/contextBuilder.test.ts +138 -0
  80. package/tests/memoryManager.test.ts +205 -0
  81. package/tests/metadataStore.test.ts +131 -0
  82. package/tests/rateLimiter.test.ts +57 -0
  83. package/tests/usageTracker.test.ts +62 -0
  84. package/tests/vectorStore.test.ts +106 -0
  85. package/tsconfig.json +25 -0
  86. package/vitest.config.ts +12 -0
package/.eslintrc.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "root": true,
3
+ "parser": "@typescript-eslint/parser",
4
+ "plugins": ["@typescript-eslint"],
5
+ "extends": [
6
+ "eslint:recommended",
7
+ "plugin:@typescript-eslint/recommended"
8
+ ],
9
+ "parserOptions": {
10
+ "ecmaVersion": 2022,
11
+ "sourceType": "module"
12
+ },
13
+ "env": {
14
+ "node": true,
15
+ "es2022": true
16
+ },
17
+ "rules": {
18
+ "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
19
+ "@typescript-eslint/explicit-function-return-type": "off",
20
+ "@typescript-eslint/no-explicit-any": "warn"
21
+ }
22
+ }
@@ -0,0 +1,57 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Use Node.js
17
+ uses: actions/setup-node@v4
18
+ with:
19
+ node-version: '20'
20
+ cache: 'npm'
21
+
22
+ - name: Install dependencies
23
+ run: npm ci
24
+
25
+ - name: Run linter
26
+ run: npm run lint
27
+
28
+ - name: Run tests
29
+ run: npm test
30
+
31
+ - name: Build
32
+ run: npm run build
33
+
34
+ publish:
35
+ needs: test
36
+ runs-on: ubuntu-latest
37
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
38
+
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+
42
+ - name: Use Node.js
43
+ uses: actions/setup-node@v4
44
+ with:
45
+ node-version: '20'
46
+ registry-url: 'https://registry.npmjs.org'
47
+
48
+ - name: Install dependencies
49
+ run: npm ci
50
+
51
+ - name: Build
52
+ run: npm run build
53
+
54
+ - name: Publish to npm
55
+ run: npm publish
56
+ env:
57
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
package/.prettierrc ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "semi": true,
3
+ "trailingComma": "es5",
4
+ "singleQuote": true,
5
+ "printWidth": 100,
6
+ "tabWidth": 2,
7
+ "useTabs": false
8
+ }
package/README.md ADDED
@@ -0,0 +1,197 @@
1
+ # AI Memory
2
+
3
+ <p align="center">
4
+ <img src="https://img.shields.io/npm/v/ai-memory" alt="npm version">
5
+ <img src="https://img.shields.io/npm/dm/ai-memory" alt="npm downloads">
6
+ <img src="https://img.shields.io/github/license/ai-memory/ai-memory" alt="license">
7
+ <img src="https://img.shields.io/github/stars/ai-memory/ai-memory" alt="stars">
8
+ </p>
9
+
10
+ > Persistent memory system for LLM applications with semantic search, context management, and monetization-ready infrastructure.
11
+
12
+ ## Features
13
+
14
+ - **Semantic Search** - Find relevant memories using vector embeddings and cosine similarity
15
+ - **Multi-User Support** - Manage memories for multiple users with proper isolation
16
+ - **Session Management** - Track conversations by session
17
+ - **Context Builder** - Build optimized context for LLM prompts
18
+ - **TypeScript Native** - Full TypeScript support with complete type definitions
19
+ - **Rate Limiting** - Built-in rate limiting ready for monetization
20
+ - **Usage Tracking** - Track API usage per user with configurable limits
21
+ - **Flexible Storage** - In-memory, Redis, or PostgreSQL persistence
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ npm install aimemory-core
27
+ ```
28
+
29
+ ## Quick Start
30
+
31
+ ```typescript
32
+ import { createAIMemory, EmbeddingFunction } from 'ai-memory';
33
+
34
+ // Your embedding function (OpenAI, Cohere, etc.)
35
+ const embeddingFunction: EmbeddingFunction = async (text) => {
36
+ return await openai.embeddings.create({
37
+ model: 'text-embedding-ada-002',
38
+ input: text,
39
+ }).then(res => res.data[0].embedding);
40
+ };
41
+
42
+ const memory = createAIMemory({
43
+ maxMemories: 1000,
44
+ context: { maxTokens: 2000 }
45
+ });
46
+
47
+ memory.setEmbeddingFunction(embeddingFunction);
48
+
49
+ // Add memories
50
+ await memory.rememberFact('The user prefers dark mode', {
51
+ userId: 'user-123',
52
+ tags: ['preferences', 'ui']
53
+ });
54
+
55
+ await memory.rememberPreference('User likes bullet point summaries', {
56
+ userId: 'user-123',
57
+ tags: ['communication']
58
+ });
59
+
60
+ // Search relevant context
61
+ const results = await memory.recall('user preferences');
62
+ console.log(`Found ${results.length} relevant memories`);
63
+
64
+ // Build context for LLM
65
+ const context = await memory.getContext('What does user prefer?');
66
+ console.log(context.messages);
67
+ ```
68
+
69
+ ## Core Concepts
70
+
71
+ ### Memory Types
72
+
73
+ AI Memory supports different types of memories:
74
+
75
+ - **conversation** - User and assistant messages
76
+ - **fact** - Factual information about users
77
+ - **preference** - User preferences and likes
78
+ - **instruction** - Instructions or rules to follow
79
+ - **context** - General context information
80
+ - **custom** - Custom memory types
81
+
82
+ ### Configuration
83
+
84
+ ```typescript
85
+ const memory = createAIMemory({
86
+ maxMemories: 10000, // Max memories per instance
87
+ defaultImportance: 0.5, // Default importance (0-1)
88
+ embeddingDimension: 1536, // Embedding vector dimension
89
+ context: {
90
+ maxTokens: 4000, // Max tokens in context
91
+ relevanceThreshold: 0.7, // Minimum relevance score
92
+ memoryTypes: ['fact', 'preference', 'instruction', 'conversation'],
93
+ maxMemories: 10, // Max memories in context
94
+ },
95
+ autoCleanup: {
96
+ enabled: true, // Auto cleanup old memories
97
+ maxAge: 90 * 24 * 60 * 60 * 1000, // 90 days
98
+ minImportance: 0.3,
99
+ }
100
+ });
101
+ ```
102
+
103
+ ## Monetization
104
+
105
+ AI Memory includes built-in support for usage limits and rate limiting:
106
+
107
+ ```typescript
108
+ import { PlanManager, PLANS } from 'ai-memory';
109
+
110
+ const planManager = new PlanManager();
111
+
112
+ // Set user plan
113
+ planManager.setUserPlan('user-123', 'pro');
114
+
115
+ // Check rate limit
116
+ const rateResult = await planManager.checkRateLimit('user-123');
117
+ if (!rateResult.allowed) {
118
+ console.log(`Rate limit exceeded. Retry after ${rateResult.retryAfter}s`);
119
+ }
120
+
121
+ // Check usage limit
122
+ const usageResult = await planManager.checkUsageLimit('user-123', 'api_calls');
123
+ console.log(`Remaining: ${usageResult.remaining}/${usageResult.limit}`);
124
+ ```
125
+
126
+ ### Available Plans
127
+
128
+ | Feature | Free | Pro | Enterprise |
129
+ |---------|------|-----|------------|
130
+ | Max Memories | 5,000 | 50,000 | Unlimited |
131
+ | Searches/Day | 500 | 10,000 | Unlimited |
132
+ | Persistence | In-Memory | Redis | PostgreSQL |
133
+ | Support | Community | Email | Priority 24/7 |
134
+ | Price | $0/mo | $29/mo | $99/mo |
135
+
136
+ ## API Reference
137
+
138
+ ### AIMemory Class
139
+
140
+ | Method | Description |
141
+ |--------|-------------|
142
+ | `remember(content, metadata)` | Add a memory |
143
+ | `rememberFact(content, metadata)` | Add factual memory |
144
+ | `rememberPreference(content, metadata)` | Add preference |
145
+ | `rememberInstruction(content, metadata)` | Add instruction |
146
+ | `recall(query, options)` | Search memories |
147
+ | `getContext(query)` | Build context for LLM |
148
+ | `getMemory(id)` | Get memory by ID |
149
+ | `updateMemory(id, updates)` | Update memory |
150
+ | `forget(id)` | Delete memory |
151
+ | `getRecentMemories(limit)` | Get recent memories |
152
+ | `getStats()` | Get memory statistics |
153
+ | `exportData()` | Export all memories |
154
+ | `importData(memories)` | Import memories |
155
+
156
+ ## Storage Adapters
157
+
158
+ ### Redis (for Pro plans)
159
+
160
+ ```typescript
161
+ import { createRedisRateLimiter } from 'ai-memory';
162
+
163
+ const store = createRedisRateLimiter({
164
+ host: 'localhost',
165
+ port: 6379,
166
+ password: 'your-password',
167
+ });
168
+ ```
169
+
170
+ ### PostgreSQL (for Enterprise plans)
171
+
172
+ ```typescript
173
+ import { createPostgresUsageStore } from 'ai-memory';
174
+
175
+ const store = createPostgresUsageStore({
176
+ host: 'localhost',
177
+ port: 5432,
178
+ database: 'ai_memory',
179
+ user: 'postgres',
180
+ password: 'your-password',
181
+ });
182
+ ```
183
+
184
+ ## Use Cases
185
+
186
+ - **AI Chatbots** - Maintain conversation context across sessions
187
+ - **Virtual Assistants** - Remember user preferences and history
188
+ - **Customer Support** - Track customer interactions and issues
189
+ - **Analytics** - Analyze user behavior patterns over time
190
+
191
+ ## License
192
+
193
+ MIT
194
+
195
+ ---
196
+
197
+ <p align="center">Built with ❤️ for AI developers</p>
@@ -0,0 +1,20 @@
1
+ import { ContextConfig } from './types.js';
2
+ export interface AIMemoryConfig {
3
+ storagePath: string;
4
+ maxMemories: number;
5
+ defaultImportance: number;
6
+ embeddingDimension: number;
7
+ context: ContextConfig;
8
+ autoCleanup: {
9
+ enabled: boolean;
10
+ maxAge: number;
11
+ minImportance: number;
12
+ };
13
+ logging: {
14
+ enabled: boolean;
15
+ level: 'debug' | 'info' | 'warn' | 'error';
16
+ };
17
+ }
18
+ export declare const DEFAULT_CONFIG: AIMemoryConfig;
19
+ export declare function validateConfig(config: Partial<AIMemoryConfig>): AIMemoryConfig;
20
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KAC5C,CAAC;CACH;AAED,eAAO,MAAM,cAAc,EAAE,cAuB5B,CAAC;AAEF,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAoB9E"}
package/dist/config.js ADDED
@@ -0,0 +1,41 @@
1
+ export const DEFAULT_CONFIG = {
2
+ storagePath: './ai-memory-data',
3
+ maxMemories: 10000,
4
+ defaultImportance: 0.5,
5
+ embeddingDimension: 1536,
6
+ context: {
7
+ maxTokens: 4000,
8
+ includeSystemPrompt: true,
9
+ systemPrompt: 'You are a helpful AI assistant with memory of past conversations.',
10
+ relevanceThreshold: 0.7,
11
+ includeMetadata: false,
12
+ memoryTypes: ['conversation', 'fact', 'preference', 'context'],
13
+ maxMemories: 10,
14
+ },
15
+ autoCleanup: {
16
+ enabled: false,
17
+ maxAge: 90 * 24 * 60 * 60 * 1000,
18
+ minImportance: 0.3,
19
+ },
20
+ logging: {
21
+ enabled: true,
22
+ level: 'info',
23
+ },
24
+ };
25
+ export function validateConfig(config) {
26
+ const merged = { ...DEFAULT_CONFIG, ...config };
27
+ if (merged.maxMemories < 1) {
28
+ throw new Error('maxMemories must be at least 1');
29
+ }
30
+ if (merged.embeddingDimension < 1) {
31
+ throw new Error('embeddingDimension must be at least 1');
32
+ }
33
+ if (merged.context.maxTokens < 100) {
34
+ throw new Error('context.maxTokens must be at least 100');
35
+ }
36
+ if (merged.context.relevanceThreshold < 0 || merged.context.relevanceThreshold > 1) {
37
+ throw new Error('context.relevanceThreshold must be between 0 and 1');
38
+ }
39
+ return merged;
40
+ }
41
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,KAAK;IAClB,iBAAiB,EAAE,GAAG;IACtB,kBAAkB,EAAE,IAAI;IACxB,OAAO,EAAE;QACP,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,IAAI;QACzB,YAAY,EAAE,mEAAmE;QACjF,kBAAkB,EAAE,GAAG;QACvB,eAAe,EAAE,KAAK;QACtB,WAAW,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAiB;QAC9E,WAAW,EAAE,EAAE;KAChB;IACD,WAAW,EAAE;QACX,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAChC,aAAa,EAAE,GAAG;KACnB;IACD,OAAO,EAAE;QACP,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,MAAM;KACd;CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,MAA+B;IAC5D,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IAEhD,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { ContextConfig, ContextResult } from './types.js';
2
+ import { MemoryManager } from './memoryManager.js';
3
+ export declare class ContextBuilder {
4
+ private memoryManager;
5
+ private config;
6
+ constructor(memoryManager: MemoryManager, config?: Partial<ContextConfig>);
7
+ buildContext(query: string, additionalConfig?: Partial<ContextConfig>): Promise<ContextResult>;
8
+ private findRelevantMemories;
9
+ private buildContextContent;
10
+ private groupByType;
11
+ private estimateTokens;
12
+ updateConfig(config: Partial<ContextConfig>): void;
13
+ getConfig(): Readonly<ContextConfig>;
14
+ }
15
+ export declare function createContextBuilder(memoryManager: MemoryManager, config?: Partial<ContextConfig>): ContextBuilder;
16
+ //# sourceMappingURL=contextBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextBuilder.d.ts","sourceRoot":"","sources":["../src/contextBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACb,aAAa,EAGd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAgB;gBAElB,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAcnE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;YAoCtF,oBAAoB;IAmBlC,OAAO,CAAC,mBAAmB;IAuD3B,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,cAAc;IAWtB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAIlD,SAAS,IAAI,QAAQ,CAAC,aAAa,CAAC;CAGrC;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,aAAa,EAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,cAAc,CAEhB"}
@@ -0,0 +1,139 @@
1
+ export class ContextBuilder {
2
+ memoryManager;
3
+ config;
4
+ constructor(memoryManager, config) {
5
+ this.memoryManager = memoryManager;
6
+ this.config = {
7
+ maxTokens: 4000,
8
+ includeSystemPrompt: true,
9
+ systemPrompt: 'You are a helpful AI assistant with memory of past conversations and user preferences.',
10
+ relevanceThreshold: 0.7,
11
+ includeMetadata: false,
12
+ memoryTypes: ['conversation', 'fact', 'preference', 'context'],
13
+ maxMemories: 10,
14
+ ...config,
15
+ };
16
+ }
17
+ async buildContext(query, additionalConfig) {
18
+ const config = { ...this.config, ...additionalConfig };
19
+ const messages = [];
20
+ if (config.includeSystemPrompt) {
21
+ messages.push({
22
+ role: 'system',
23
+ content: config.systemPrompt,
24
+ });
25
+ }
26
+ const relevantMemories = await this.findRelevantMemories(query, config);
27
+ const contextContent = this.buildContextContent(relevantMemories, config);
28
+ if (contextContent) {
29
+ messages.push({
30
+ role: 'system',
31
+ content: contextContent,
32
+ });
33
+ }
34
+ const tokensEstimated = this.estimateTokens(messages);
35
+ const truncationApplied = tokensEstimated > config.maxTokens;
36
+ return {
37
+ messages,
38
+ memories: relevantMemories.map(r => r.memory),
39
+ stats: {
40
+ memoriesUsed: relevantMemories.length,
41
+ tokensEstimated,
42
+ truncationApplied,
43
+ },
44
+ };
45
+ }
46
+ async findRelevantMemories(query, config) {
47
+ const searchQuery = {
48
+ text: query,
49
+ filter: {
50
+ types: config.memoryTypes,
51
+ minImportance: config.relevanceThreshold,
52
+ },
53
+ limit: config.maxMemories,
54
+ threshold: config.relevanceThreshold,
55
+ };
56
+ const results = await this.memoryManager.search(searchQuery);
57
+ return results.filter(r => r.score >= config.relevanceThreshold);
58
+ }
59
+ buildContextContent(memories, config) {
60
+ if (memories.length === 0)
61
+ return '';
62
+ const sections = [];
63
+ const groupedByType = this.groupByType(memories);
64
+ if (groupedByType.fact && groupedByType.fact.length > 0) {
65
+ const facts = groupedByType.fact
66
+ .map(r => `- ${r.memory.content}`)
67
+ .join('\n');
68
+ sections.push(`Key Facts:\n${facts}`);
69
+ }
70
+ if (groupedByType.preference && groupedByType.preference.length > 0) {
71
+ const prefs = groupedByType.preference
72
+ .map(r => `- ${r.memory.content}`)
73
+ .join('\n');
74
+ sections.push(`User Preferences:\n${prefs}`);
75
+ }
76
+ if (groupedByType.conversation && groupedByType.conversation.length > 0) {
77
+ const recentConversations = groupedByType.conversation
78
+ .slice(0, 5)
79
+ .map(r => r.memory.content)
80
+ .join('\n');
81
+ sections.push(`Recent Conversation Context:\n${recentConversations}`);
82
+ }
83
+ if (groupedByType.context && groupedByType.context.length > 0) {
84
+ const context = groupedByType.context
85
+ .map(r => `- ${r.memory.content}`)
86
+ .join('\n');
87
+ sections.push(`Additional Context:\n${context}`);
88
+ }
89
+ if (groupedByType.instruction && groupedByType.instruction.length > 0) {
90
+ const instructions = groupedByType.instruction
91
+ .map(r => `- ${r.memory.content}`)
92
+ .join('\n');
93
+ sections.push(`Important Instructions:\n${instructions}`);
94
+ }
95
+ let content = sections.join('\n\n');
96
+ if (config.includeMetadata) {
97
+ const metadataList = memories
98
+ .map(r => `[${r.memory.metadata.type}] ${r.memory.metadata.tags.join(', ')}`)
99
+ .join('\n');
100
+ content += `\n\nMemory Metadata:\n${metadataList}`;
101
+ }
102
+ return content;
103
+ }
104
+ groupByType(memories) {
105
+ const grouped = {
106
+ conversation: [],
107
+ fact: [],
108
+ preference: [],
109
+ instruction: [],
110
+ context: [],
111
+ custom: [],
112
+ };
113
+ for (const result of memories) {
114
+ const type = result.memory.metadata.type;
115
+ if (grouped[type]) {
116
+ grouped[type].push(result);
117
+ }
118
+ }
119
+ return grouped;
120
+ }
121
+ estimateTokens(messages) {
122
+ let total = 0;
123
+ for (const message of messages) {
124
+ const words = message.content.split(/\s+/).length;
125
+ total += Math.ceil(words * 1.3);
126
+ }
127
+ return total;
128
+ }
129
+ updateConfig(config) {
130
+ this.config = { ...this.config, ...config };
131
+ }
132
+ getConfig() {
133
+ return { ...this.config };
134
+ }
135
+ }
136
+ export function createContextBuilder(memoryManager, config) {
137
+ return new ContextBuilder(memoryManager, config);
138
+ }
139
+ //# sourceMappingURL=contextBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextBuilder.js","sourceRoot":"","sources":["../src/contextBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { Memory, MemoryMetadata, SearchResult, ContextResult, MemoryStats, EmbeddingFunction } from './types';
2
+ import { AIMemoryConfig } from './config';
3
+ import { MemoryManager } from './memoryManager';
4
+ import { ContextBuilder } from './contextBuilder';
5
+ export { Memory, MemoryMetadata, MemoryType, SearchResult, MemoryQuery, MemoryFilter, MemoryStats, ContextConfig, ContextMessage, ContextResult, EmbeddingFunction, StorageAdapter, VectorStoreAdapter, VectorEntry, SearchOptions, } from './types';
6
+ export { AIMemoryConfig, DEFAULT_CONFIG, validateConfig, } from './config';
7
+ export { InMemoryVectorStore, VectorStoreFactory, } from './vectorStore';
8
+ export { MetadataStore, } from './metadataStore';
9
+ export { MemoryManager, createMemoryManager, } from './memoryManager';
10
+ export { ContextBuilder, createContextBuilder, } from './contextBuilder';
11
+ export { RateLimiter, RateLimitResult, RateLimitConfig, RateLimitStore, InMemoryRateLimitStore, createRateLimiter, DEFAULT_RATE_LIMITS, } from './rateLimiter';
12
+ export { UsageTracker, UsageLimits, UsageCheckResult, UsageMetric, UsageSummary, UsageStore, InMemoryUsageStore, createUsageTracker, DEFAULT_USAGE_LIMITS, } from './usageTracker';
13
+ export { PlanManager, PlanManager as AIMemoryPro, Plan, ExtensionPlan, TeamPlan, ProductPlan, ProductType, PlanConfig, PlanFeatures, PlanLimits, PLANS, getPlan, getPlanLimits, getAvailablePlans, createPlanManager, } from './planManager';
14
+ export { RedisRateLimitStore, PostgresUsageStore, RedisConfig, PostgresConfig, createRedisRateLimiter, createPostgresUsageStore, } from './storage';
15
+ export { LicenseManager, AIMemoryLicense, LicenseConfig, LicenseValidation, createLicenseManager, getLicenseManager, } from './licensing';
16
+ export declare class AIMemory {
17
+ private memoryManager;
18
+ private contextBuilder;
19
+ constructor(config?: Partial<AIMemoryConfig>);
20
+ setEmbeddingFunction(fn: EmbeddingFunction): void;
21
+ remember(content: string, metadata?: Partial<MemoryMetadata>): Promise<Memory>;
22
+ rememberConversation(content: string, role: 'user' | 'assistant', metadata?: Partial<MemoryMetadata>): Promise<Memory>;
23
+ rememberFact(content: string, metadata?: Partial<MemoryMetadata>): Promise<Memory>;
24
+ rememberPreference(content: string, metadata?: Partial<MemoryMetadata>): Promise<Memory>;
25
+ rememberInstruction(content: string, metadata?: Partial<MemoryMetadata>): Promise<Memory>;
26
+ recall(query: string, options?: {
27
+ limit?: number;
28
+ threshold?: number;
29
+ }): Promise<SearchResult[]>;
30
+ getContext(query: string): Promise<ContextResult>;
31
+ getMemory(id: string): Promise<Memory | null>;
32
+ updateMemory(id: string, updates: Partial<Memory>): Promise<Memory | null>;
33
+ forget(id: string): Promise<void>;
34
+ getRecentMemories(limit?: number): Promise<Memory[]>;
35
+ getStats(): Promise<MemoryStats>;
36
+ clear(): Promise<void>;
37
+ cleanup(): Promise<number>;
38
+ exportData(): Promise<Memory[]>;
39
+ importData(memories: Memory[]): Promise<void>;
40
+ getMemoryManager(): MemoryManager;
41
+ getContextBuilder(): ContextBuilder;
42
+ }
43
+ export declare function createAIMemory(config?: Partial<AIMemoryConfig>): AIMemory;
44
+ export { createAIMemory as createAIBrain };
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,88 @@
1
+ import { validateConfig } from './config';
2
+ import { MemoryManager } from './memoryManager';
3
+ import { ContextBuilder } from './contextBuilder';
4
+ export { DEFAULT_CONFIG, validateConfig, } from './config';
5
+ export { InMemoryVectorStore, VectorStoreFactory, } from './vectorStore';
6
+ export { MetadataStore, } from './metadataStore';
7
+ export { MemoryManager, createMemoryManager, } from './memoryManager';
8
+ export { ContextBuilder, createContextBuilder, } from './contextBuilder';
9
+ export { RateLimiter, InMemoryRateLimitStore, createRateLimiter, DEFAULT_RATE_LIMITS, } from './rateLimiter';
10
+ export { UsageTracker, InMemoryUsageStore, createUsageTracker, DEFAULT_USAGE_LIMITS, } from './usageTracker';
11
+ export { PlanManager, PlanManager as AIMemoryPro, PLANS, getPlan, getPlanLimits, getAvailablePlans, createPlanManager, } from './planManager';
12
+ export { RedisRateLimitStore, PostgresUsageStore, createRedisRateLimiter, createPostgresUsageStore, } from './storage';
13
+ export { LicenseManager, createLicenseManager, getLicenseManager, } from './licensing';
14
+ export class AIMemory {
15
+ memoryManager;
16
+ contextBuilder;
17
+ constructor(config) {
18
+ const validatedConfig = validateConfig(config || {});
19
+ this.memoryManager = new MemoryManager(validatedConfig);
20
+ this.contextBuilder = new ContextBuilder(this.memoryManager, validatedConfig.context);
21
+ }
22
+ setEmbeddingFunction(fn) {
23
+ this.memoryManager.setEmbeddingFunction(fn);
24
+ }
25
+ async remember(content, metadata) {
26
+ return this.memoryManager.addMemory(content, metadata);
27
+ }
28
+ async rememberConversation(content, role, metadata) {
29
+ return this.memoryManager.addConversation(content, role, metadata);
30
+ }
31
+ async rememberFact(content, metadata) {
32
+ return this.memoryManager.addFact(content, metadata);
33
+ }
34
+ async rememberPreference(content, metadata) {
35
+ return this.memoryManager.addPreference(content, metadata);
36
+ }
37
+ async rememberInstruction(content, metadata) {
38
+ return this.memoryManager.addInstruction(content, metadata);
39
+ }
40
+ async recall(query, options) {
41
+ return this.memoryManager.search({
42
+ text: query,
43
+ limit: options?.limit || 10,
44
+ threshold: options?.threshold,
45
+ });
46
+ }
47
+ async getContext(query) {
48
+ return this.contextBuilder.buildContext(query);
49
+ }
50
+ async getMemory(id) {
51
+ return this.memoryManager.getMemory(id);
52
+ }
53
+ async updateMemory(id, updates) {
54
+ return this.memoryManager.updateMemory(id, updates);
55
+ }
56
+ async forget(id) {
57
+ return this.memoryManager.deleteMemory(id);
58
+ }
59
+ async getRecentMemories(limit) {
60
+ return this.memoryManager.getRecentMemories(limit);
61
+ }
62
+ async getStats() {
63
+ return this.memoryManager.getStats();
64
+ }
65
+ async clear() {
66
+ return this.memoryManager.clear();
67
+ }
68
+ async cleanup() {
69
+ return this.memoryManager.cleanup();
70
+ }
71
+ async exportData() {
72
+ return this.memoryManager.exportData();
73
+ }
74
+ async importData(memories) {
75
+ return this.memoryManager.importData(memories);
76
+ }
77
+ getMemoryManager() {
78
+ return this.memoryManager;
79
+ }
80
+ getContextBuilder() {
81
+ return this.contextBuilder;
82
+ }
83
+ }
84
+ export function createAIMemory(config) {
85
+ return new AIMemory(config);
86
+ }
87
+ export { createAIMemory as createAIBrain };
88
+ //# sourceMappingURL=index.js.map