@whenmoon-afk/memory-mcp 2.0.0

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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +263 -0
  3. package/dist/database/connection.d.ts +47 -0
  4. package/dist/database/connection.d.ts.map +1 -0
  5. package/dist/database/connection.js +151 -0
  6. package/dist/database/connection.js.map +1 -0
  7. package/dist/database/schema.d.ts +33 -0
  8. package/dist/database/schema.d.ts.map +1 -0
  9. package/dist/database/schema.js +293 -0
  10. package/dist/database/schema.js.map +1 -0
  11. package/dist/extractors/entity-extractor.d.ts +25 -0
  12. package/dist/extractors/entity-extractor.d.ts.map +1 -0
  13. package/dist/extractors/entity-extractor.js +195 -0
  14. package/dist/extractors/entity-extractor.js.map +1 -0
  15. package/dist/extractors/fact-extractor.d.ts +38 -0
  16. package/dist/extractors/fact-extractor.d.ts.map +1 -0
  17. package/dist/extractors/fact-extractor.js +172 -0
  18. package/dist/extractors/fact-extractor.js.map +1 -0
  19. package/dist/extractors/summary-generator.d.ts +28 -0
  20. package/dist/extractors/summary-generator.d.ts.map +1 -0
  21. package/dist/extractors/summary-generator.js +149 -0
  22. package/dist/extractors/summary-generator.js.map +1 -0
  23. package/dist/index.d.ts +7 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +229 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/scoring/importance.d.ts +39 -0
  28. package/dist/scoring/importance.d.ts.map +1 -0
  29. package/dist/scoring/importance.js +150 -0
  30. package/dist/scoring/importance.js.map +1 -0
  31. package/dist/scoring/ttl-manager.d.ts +33 -0
  32. package/dist/scoring/ttl-manager.d.ts.map +1 -0
  33. package/dist/scoring/ttl-manager.js +99 -0
  34. package/dist/scoring/ttl-manager.js.map +1 -0
  35. package/dist/search/semantic-search.d.ts +15 -0
  36. package/dist/search/semantic-search.d.ts.map +1 -0
  37. package/dist/search/semantic-search.js +236 -0
  38. package/dist/search/semantic-search.js.map +1 -0
  39. package/dist/tools/memory-forget.d.ts +10 -0
  40. package/dist/tools/memory-forget.d.ts.map +1 -0
  41. package/dist/tools/memory-forget.js +34 -0
  42. package/dist/tools/memory-forget.js.map +1 -0
  43. package/dist/tools/memory-recall.d.ts +12 -0
  44. package/dist/tools/memory-recall.d.ts.map +1 -0
  45. package/dist/tools/memory-recall.js +106 -0
  46. package/dist/tools/memory-recall.js.map +1 -0
  47. package/dist/tools/memory-store.d.ts +13 -0
  48. package/dist/tools/memory-store.d.ts.map +1 -0
  49. package/dist/tools/memory-store.js +279 -0
  50. package/dist/tools/memory-store.js.map +1 -0
  51. package/dist/tools/response-formatter.d.ts +71 -0
  52. package/dist/tools/response-formatter.d.ts.map +1 -0
  53. package/dist/tools/response-formatter.js +180 -0
  54. package/dist/tools/response-formatter.js.map +1 -0
  55. package/dist/types/index.d.ts +244 -0
  56. package/dist/types/index.d.ts.map +1 -0
  57. package/dist/types/index.js +29 -0
  58. package/dist/types/index.js.map +1 -0
  59. package/dist/utils/token-estimator.d.ts +33 -0
  60. package/dist/utils/token-estimator.d.ts.map +1 -0
  61. package/dist/utils/token-estimator.js +54 -0
  62. package/dist/utils/token-estimator.js.map +1 -0
  63. package/package.json +71 -0
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Response Formatter - Format memories with tiered detail levels
3
+ *
4
+ * Critical: NEVER include embedding or vector fields in responses
5
+ * Token targets: minimal=30, standard=200, full=500
6
+ */
7
+ import { estimateTokens } from '../utils/token-estimator.js';
8
+ /**
9
+ * Format a single memory according to detail level
10
+ *
11
+ * @param memory - The memory to format
12
+ * @param detailLevel - Level of detail to include
13
+ * @param options - Optional entities, provenance, and tags
14
+ * @returns Formatted memory (NO embeddings)
15
+ */
16
+ export function formatMemory(memory, detailLevel, options = {}) {
17
+ switch (detailLevel) {
18
+ case 'minimal':
19
+ return formatMinimal(memory);
20
+ case 'standard':
21
+ return formatStandard(memory, options);
22
+ case 'full':
23
+ return formatFull(memory, options);
24
+ default:
25
+ return formatStandard(memory, options);
26
+ }
27
+ }
28
+ /**
29
+ * Format minimal memory (~30 tokens)
30
+ * Only essential fields: id, type, summary, importance
31
+ */
32
+ function formatMinimal(memory) {
33
+ return {
34
+ id: memory.id,
35
+ type: memory.type,
36
+ summary: memory.summary,
37
+ importance: memory.importance,
38
+ };
39
+ }
40
+ /**
41
+ * Format standard memory (~200 tokens)
42
+ * Includes: minimal fields + content + optional entities + timestamps
43
+ */
44
+ function formatStandard(memory, options) {
45
+ const formatted = {
46
+ id: memory.id,
47
+ type: memory.type,
48
+ summary: memory.summary,
49
+ content: memory.content,
50
+ importance: memory.importance,
51
+ created_at: new Date(memory.created_at).toISOString(),
52
+ last_accessed: new Date(memory.last_accessed).toISOString(),
53
+ };
54
+ // Only include entities if present
55
+ if (options.entities && options.entities.length > 0) {
56
+ formatted.entities = options.entities.map((e) => e.name);
57
+ }
58
+ return formatted;
59
+ }
60
+ /**
61
+ * Format full memory (~500 tokens)
62
+ * Includes: all standard fields + entities + tags + access_count + expires_at + provenance
63
+ */
64
+ function formatFull(memory, options) {
65
+ const formatted = {
66
+ id: memory.id,
67
+ type: memory.type,
68
+ summary: memory.summary,
69
+ content: memory.content,
70
+ entities: options.entities ? options.entities.map((e) => e.name) : [],
71
+ tags: options.tags || extractTagsFromMetadata(memory.metadata),
72
+ importance: memory.importance,
73
+ access_count: memory.access_count,
74
+ created_at: new Date(memory.created_at).toISOString(),
75
+ last_accessed: new Date(memory.last_accessed).toISOString(),
76
+ expires_at: memory.expires_at ? new Date(memory.expires_at).toISOString() : null,
77
+ provenance: extractProvenanceInfo(options.provenance),
78
+ };
79
+ return formatted;
80
+ }
81
+ /**
82
+ * Extract tags from metadata
83
+ */
84
+ function extractTagsFromMetadata(metadata) {
85
+ if (metadata.tags && Array.isArray(metadata.tags)) {
86
+ return metadata.tags.filter((tag) => typeof tag === 'string');
87
+ }
88
+ return [];
89
+ }
90
+ /**
91
+ * Extract provenance information (only most recent)
92
+ */
93
+ function extractProvenanceInfo(provenance) {
94
+ if (!provenance || provenance.length === 0) {
95
+ return null;
96
+ }
97
+ // Get most recent provenance record
98
+ const mostRecent = provenance.reduce((latest, current) => current.timestamp > latest.timestamp ? current : latest);
99
+ return {
100
+ source: mostRecent.source,
101
+ timestamp: new Date(mostRecent.timestamp).toISOString(),
102
+ };
103
+ }
104
+ /**
105
+ * Format a list of memories
106
+ *
107
+ * @param memories - Array of memories to format
108
+ * @param detailLevel - Level of detail to include
109
+ * @param optionsMap - Map of memory IDs to format options
110
+ * @returns Array of formatted memories
111
+ */
112
+ export function formatMemoryList(memories, detailLevel, optionsMap) {
113
+ return memories.map((memory) => {
114
+ const options = optionsMap?.get(memory.id) || {};
115
+ return formatMemory(memory, detailLevel, options);
116
+ });
117
+ }
118
+ /**
119
+ * Get estimated token count for a formatted memory
120
+ *
121
+ * @param memory - Formatted memory to estimate
122
+ * @returns Estimated token count
123
+ */
124
+ export function getMemoryTokenCount(memory) {
125
+ return estimateTokens(memory);
126
+ }
127
+ /**
128
+ * Validate that a memory list fits within token budget
129
+ *
130
+ * @param memories - Array of formatted memories
131
+ * @param maxTokens - Maximum allowed tokens
132
+ * @returns Validation result
133
+ */
134
+ export function validateMemoryBudget(memories, maxTokens) {
135
+ const estimated = estimateTokens(memories);
136
+ return {
137
+ fits: estimated <= maxTokens,
138
+ estimated,
139
+ count: memories.length,
140
+ };
141
+ }
142
+ /**
143
+ * Truncate memory list to fit within token budget
144
+ *
145
+ * @param memories - Array of formatted memories
146
+ * @param maxTokens - Maximum token budget
147
+ * @returns Truncated array that fits within budget
148
+ */
149
+ export function truncateToTokenBudget(memories, maxTokens) {
150
+ const result = [];
151
+ let currentTokens = 0;
152
+ for (const memory of memories) {
153
+ const memoryTokens = getMemoryTokenCount(memory);
154
+ if (currentTokens + memoryTokens <= maxTokens) {
155
+ result.push(memory);
156
+ currentTokens += memoryTokens;
157
+ }
158
+ else {
159
+ break;
160
+ }
161
+ }
162
+ return result;
163
+ }
164
+ /**
165
+ * Debug: Get token statistics for a memory
166
+ *
167
+ * @param memory - Formatted memory to analyze
168
+ * @returns Token statistics
169
+ */
170
+ export function getMemoryTokenStats(memory) {
171
+ const byField = {};
172
+ let total = 0;
173
+ for (const [key, value] of Object.entries(memory)) {
174
+ const fieldTokens = estimateTokens(JSON.stringify(value));
175
+ byField[key] = fieldTokens;
176
+ total += fieldTokens;
177
+ }
178
+ return { total, byField };
179
+ }
180
+ //# sourceMappingURL=response-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../src/tools/response-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Core type definitions for Memory MCP v2.0
3
+ */
4
+ export type MemoryType = 'fact' | 'entity' | 'relationship' | 'self';
5
+ export interface Memory {
6
+ id: string;
7
+ content: string;
8
+ summary: string;
9
+ type: MemoryType;
10
+ importance: number;
11
+ created_at: number;
12
+ last_accessed: number;
13
+ access_count: number;
14
+ expires_at: number | null;
15
+ metadata: Record<string, unknown>;
16
+ is_deleted: boolean;
17
+ }
18
+ export interface MemoryInput {
19
+ id?: string;
20
+ content: string;
21
+ type: MemoryType;
22
+ importance?: number;
23
+ entities?: string[];
24
+ tags?: string[];
25
+ metadata?: Record<string, unknown>;
26
+ ttl_days?: number | null;
27
+ expires_at?: string;
28
+ provenance?: ProvenanceInput;
29
+ }
30
+ export interface MemoryUpdate {
31
+ id: string;
32
+ content?: string;
33
+ importance?: number;
34
+ metadata?: Record<string, unknown>;
35
+ ttl_days?: number | null;
36
+ updateReason?: string;
37
+ }
38
+ export interface MemorySearchResult extends Memory {
39
+ score: number;
40
+ entities: Entity[];
41
+ provenance: Provenance[];
42
+ }
43
+ export type EntityType = 'person' | 'organization' | 'project' | 'technology' | 'location' | 'concept' | 'document' | 'other';
44
+ export interface Entity {
45
+ id: string;
46
+ name: string;
47
+ type: EntityType;
48
+ metadata: Record<string, unknown>;
49
+ created_at: number;
50
+ }
51
+ export interface EntityInput {
52
+ name: string;
53
+ type?: EntityType;
54
+ metadata?: Record<string, unknown>;
55
+ }
56
+ export type ProvenanceOperation = 'create' | 'update' | 'delete' | 'access' | 'restore';
57
+ export interface Provenance {
58
+ id: string;
59
+ memory_id: string;
60
+ operation: ProvenanceOperation;
61
+ timestamp: number;
62
+ source: string;
63
+ context: string | null;
64
+ user_id: string | null;
65
+ changes: Record<string, unknown> | null;
66
+ }
67
+ export interface ProvenanceInput {
68
+ source: string;
69
+ timestamp?: string;
70
+ context?: string;
71
+ user_id?: string;
72
+ }
73
+ export interface SearchOptions {
74
+ query: string;
75
+ max_tokens?: number;
76
+ type?: MemoryType;
77
+ entities?: string[];
78
+ limit?: number;
79
+ }
80
+ export interface SearchOptionsInternal extends SearchOptions {
81
+ offset?: number;
82
+ minImportance?: number;
83
+ includeExpired?: boolean;
84
+ }
85
+ export interface SearchFilters {
86
+ type?: MemoryType;
87
+ entities?: string[];
88
+ minImportance?: number;
89
+ includeExpired: boolean;
90
+ }
91
+ export interface ImportanceFactors {
92
+ contentComplexity: number;
93
+ entityCount: number;
94
+ isUserPreference: boolean;
95
+ hasProvenance: boolean;
96
+ hasMetadata: boolean;
97
+ isExplicit: boolean;
98
+ typeBonus: number;
99
+ }
100
+ export interface TTLConfig {
101
+ defaultDays: number;
102
+ importanceMultiplier: number;
103
+ accessBonusDays: number;
104
+ refreshThresholdDays: number;
105
+ }
106
+ export type DetailLevel = 'minimal' | 'standard' | 'full';
107
+ /**
108
+ * Minimal format: ~30 tokens - summaries only
109
+ */
110
+ export interface MinimalMemory {
111
+ id: string;
112
+ type: string;
113
+ summary: string;
114
+ importance: number;
115
+ }
116
+ /**
117
+ * Standard format: ~200 tokens - content + optional entities
118
+ */
119
+ export interface StandardMemory {
120
+ id: string;
121
+ type: string;
122
+ summary: string;
123
+ content: string;
124
+ entities?: string[];
125
+ importance: number;
126
+ created_at: string;
127
+ last_accessed: string;
128
+ }
129
+ /**
130
+ * Full format: ~500 tokens - everything + provenance
131
+ */
132
+ export interface FullMemory {
133
+ id: string;
134
+ type: string;
135
+ summary: string;
136
+ content: string;
137
+ entities: string[];
138
+ tags: string[];
139
+ importance: number;
140
+ access_count: number;
141
+ created_at: string;
142
+ last_accessed: string;
143
+ expires_at: string | null;
144
+ provenance: {
145
+ source: string;
146
+ timestamp: string;
147
+ } | null;
148
+ }
149
+ /**
150
+ * Union type for all formatted memory formats
151
+ */
152
+ export type FormattedMemory = MinimalMemory | StandardMemory | FullMemory;
153
+ export interface StoreResponse {
154
+ success: boolean;
155
+ memory_id: string;
156
+ importance: number;
157
+ entities_extracted: string[];
158
+ expires_at: number | null;
159
+ message: string;
160
+ }
161
+ export interface RecallResponse {
162
+ index: MinimalMemory[];
163
+ details: FormattedMemory[];
164
+ total_count: number;
165
+ has_more: boolean;
166
+ tokens_used: number;
167
+ query: string;
168
+ }
169
+ export interface UpdateResponse {
170
+ success: boolean;
171
+ memory_id: string;
172
+ changes: Record<string, unknown>;
173
+ message: string;
174
+ }
175
+ export interface ForgetResponse {
176
+ success: boolean;
177
+ memory_id: string;
178
+ message: string;
179
+ }
180
+ export interface PruneResponse {
181
+ success: boolean;
182
+ pruned_count: number;
183
+ dry_run: boolean;
184
+ details: {
185
+ expired_count: number;
186
+ deleted_count: number;
187
+ old_threshold_days: number;
188
+ };
189
+ }
190
+ export declare class MemoryError extends Error {
191
+ code: string;
192
+ details?: Record<string, unknown> | undefined;
193
+ constructor(message: string, code: string, details?: Record<string, unknown> | undefined);
194
+ }
195
+ export declare class DatabaseError extends MemoryError {
196
+ constructor(message: string, details?: Record<string, unknown>);
197
+ }
198
+ export declare class ValidationError extends MemoryError {
199
+ constructor(message: string, details?: Record<string, unknown>);
200
+ }
201
+ export interface CacheEntry<T> {
202
+ data: T;
203
+ expiresAt: number;
204
+ }
205
+ export type Awaitable<T> = T | Promise<T>;
206
+ export type DeepPartial<T> = {
207
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
208
+ };
209
+ export interface MemoryRow {
210
+ id: string;
211
+ content: string;
212
+ summary: string;
213
+ type: string;
214
+ importance: number;
215
+ created_at: number;
216
+ last_accessed: number;
217
+ access_count: number;
218
+ expires_at: number | null;
219
+ metadata: string;
220
+ is_deleted: number;
221
+ }
222
+ export interface EntityRow {
223
+ id: string;
224
+ name: string;
225
+ type: string;
226
+ metadata: string;
227
+ created_at: number;
228
+ }
229
+ export interface MemoryEntityRow {
230
+ memory_id: string;
231
+ entity_id: string;
232
+ created_at: number;
233
+ }
234
+ export interface ProvenanceRow {
235
+ id: string;
236
+ memory_id: string;
237
+ operation: string;
238
+ timestamp: number;
239
+ source: string;
240
+ context: string | null;
241
+ user_id: string | null;
242
+ changes: string | null;
243
+ }
244
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Core type definitions for Memory MCP v2.0
3
+ */
4
+ // ============================================================================
5
+ // Error Types
6
+ // ============================================================================
7
+ export class MemoryError extends Error {
8
+ code;
9
+ details;
10
+ constructor(message, code, details) {
11
+ super(message);
12
+ this.code = code;
13
+ this.details = details;
14
+ this.name = 'MemoryError';
15
+ }
16
+ }
17
+ export class DatabaseError extends MemoryError {
18
+ constructor(message, details) {
19
+ super(message, 'DATABASE_ERROR', details);
20
+ this.name = 'DatabaseError';
21
+ }
22
+ }
23
+ export class ValidationError extends MemoryError {
24
+ constructor(message, details) {
25
+ super(message, 'VALIDATION_ERROR', details);
26
+ this.name = 'ValidationError';
27
+ }
28
+ }
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgQH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,OAAO,WAAY,SAAQ,KAAK;IAG3B;IACA;IAHT,YACE,OAAe,EACR,IAAY,EACZ,OAAiC;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAA0B;QAGxC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Token Estimation Utilities
3
+ *
4
+ * Simple heuristic-based token counting for response formatting
5
+ * Uses the rule of thumb: ~4 characters per token
6
+ */
7
+ /**
8
+ * Estimate token count for text or JSON object
9
+ *
10
+ * @param input - Text string or object to estimate
11
+ * @returns Estimated token count
12
+ */
13
+ export declare function estimateTokens(input: string | object): number;
14
+ /**
15
+ * Validate that memories fit within a token budget
16
+ *
17
+ * @param memories - Array of formatted memories
18
+ * @param maxTokens - Maximum token budget
19
+ * @returns Validation result with estimated token count
20
+ */
21
+ export declare function validateTokenBudget(memories: unknown[], maxTokens: number): {
22
+ fits: boolean;
23
+ estimated: number;
24
+ };
25
+ /**
26
+ * Filter memories to fit within a token budget
27
+ *
28
+ * @param memories - Array of memories (any format)
29
+ * @param maxTokens - Maximum token budget
30
+ * @returns Filtered array that fits within budget
31
+ */
32
+ export declare function fitWithinBudget<T extends object>(memories: T[], maxTokens: number): T[];
33
+ //# sourceMappingURL=token-estimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../../src/utils/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAI7D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMtC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,CAevF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Token Estimation Utilities
3
+ *
4
+ * Simple heuristic-based token counting for response formatting
5
+ * Uses the rule of thumb: ~4 characters per token
6
+ */
7
+ /**
8
+ * Estimate token count for text or JSON object
9
+ *
10
+ * @param input - Text string or object to estimate
11
+ * @returns Estimated token count
12
+ */
13
+ export function estimateTokens(input) {
14
+ const text = typeof input === 'string' ? input : JSON.stringify(input);
15
+ // Rule of thumb: ~4 characters per token
16
+ return Math.ceil(text.length / 4);
17
+ }
18
+ /**
19
+ * Validate that memories fit within a token budget
20
+ *
21
+ * @param memories - Array of formatted memories
22
+ * @param maxTokens - Maximum token budget
23
+ * @returns Validation result with estimated token count
24
+ */
25
+ export function validateTokenBudget(memories, maxTokens) {
26
+ const estimated = estimateTokens(memories);
27
+ return {
28
+ fits: estimated <= maxTokens,
29
+ estimated,
30
+ };
31
+ }
32
+ /**
33
+ * Filter memories to fit within a token budget
34
+ *
35
+ * @param memories - Array of memories (any format)
36
+ * @param maxTokens - Maximum token budget
37
+ * @returns Filtered array that fits within budget
38
+ */
39
+ export function fitWithinBudget(memories, maxTokens) {
40
+ const result = [];
41
+ let currentTokens = 0;
42
+ for (const memory of memories) {
43
+ const memoryTokens = estimateTokens(memory);
44
+ if (currentTokens + memoryTokens <= maxTokens) {
45
+ result.push(memory);
46
+ currentTokens += memoryTokens;
47
+ }
48
+ else {
49
+ break;
50
+ }
51
+ }
52
+ return result;
53
+ }
54
+ //# sourceMappingURL=token-estimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/utils/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAsB;IACnD,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvE,yCAAyC;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAmB,EACnB,SAAiB;IAEjB,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,SAAS,IAAI,SAAS;QAC5B,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAmB,QAAa,EAAE,SAAiB;IAChF,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,aAAa,GAAG,YAAY,IAAI,SAAS,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,aAAa,IAAI,YAAY,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@whenmoon-afk/memory-mcp",
3
+ "version": "2.0.0",
4
+ "description": "Brain-inspired memory for AI agents - MCP server",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "bin": {
8
+ "memory-mcp": "./dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist/",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "dev": "tsx watch src/index.ts",
17
+ "build": "tsc",
18
+ "test": "vitest run",
19
+ "test:watch": "vitest",
20
+ "test:coverage": "vitest run --coverage",
21
+ "lint": "eslint src/",
22
+ "lint:fix": "eslint src/ --fix",
23
+ "typecheck": "tsc --noEmit",
24
+ "format": "prettier --write \"src/**/*.ts\"",
25
+ "format:check": "prettier --check \"src/**/*.ts\"",
26
+ "release": "npm run test && npm run build",
27
+ "clean": "rm -rf dist",
28
+ "prepublishOnly": "npm run clean && npm run build"
29
+ },
30
+ "keywords": [
31
+ "mcp",
32
+ "memory",
33
+ "context",
34
+ "ai",
35
+ "semantic-search",
36
+ "fts5",
37
+ "sqlite"
38
+ ],
39
+ "author": "Memory MCP Contributors",
40
+ "license": "MIT",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "https://github.com/whenmoon-afk/claude-memory-mcp.git"
44
+ },
45
+ "bugs": {
46
+ "url": "https://github.com/whenmoon-afk/claude-memory-mcp/issues"
47
+ },
48
+ "homepage": "https://github.com/whenmoon-afk/claude-memory-mcp#readme",
49
+ "dependencies": {
50
+ "@modelcontextprotocol/sdk": "^1.0.4",
51
+ "better-sqlite3": "^11.0.0"
52
+ },
53
+ "devDependencies": {
54
+ "@types/better-sqlite3": "^7.6.0",
55
+ "@types/node": "^20.0.0",
56
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
57
+ "@typescript-eslint/parser": "^7.0.0",
58
+ "@vitest/coverage-v8": "^1.3.0",
59
+ "eslint": "^8.57.0",
60
+ "prettier": "^3.2.0",
61
+ "tsx": "^4.7.0",
62
+ "typescript": "^5.3.0",
63
+ "vitest": "^1.3.0"
64
+ },
65
+ "engines": {
66
+ "node": ">=18.0.0"
67
+ },
68
+ "publishConfig": {
69
+ "access": "public"
70
+ }
71
+ }