claude-cortex 1.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.
- package/README.md +291 -0
- package/dist/api/events.d.ts +134 -0
- package/dist/api/events.d.ts.map +1 -0
- package/dist/api/events.js +73 -0
- package/dist/api/events.js.map +1 -0
- package/dist/api/visualization-server.d.ts +11 -0
- package/dist/api/visualization-server.d.ts.map +1 -0
- package/dist/api/visualization-server.js +653 -0
- package/dist/api/visualization-server.js.map +1 -0
- package/dist/context/project-context.d.ts +57 -0
- package/dist/context/project-context.d.ts.map +1 -0
- package/dist/context/project-context.js +135 -0
- package/dist/context/project-context.js.map +1 -0
- package/dist/database/init.d.ts +49 -0
- package/dist/database/init.d.ts.map +1 -0
- package/dist/database/init.js +336 -0
- package/dist/database/init.js.map +1 -0
- package/dist/embeddings/generator.d.ts +20 -0
- package/dist/embeddings/generator.d.ts.map +1 -0
- package/dist/embeddings/generator.js +77 -0
- package/dist/embeddings/generator.js.map +1 -0
- package/dist/embeddings/index.d.ts +2 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +2 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/errors.d.ts +74 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +131 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/activation.d.ts +69 -0
- package/dist/memory/activation.d.ts.map +1 -0
- package/dist/memory/activation.js +168 -0
- package/dist/memory/activation.js.map +1 -0
- package/dist/memory/consolidate.d.ts +96 -0
- package/dist/memory/consolidate.d.ts.map +1 -0
- package/dist/memory/consolidate.js +400 -0
- package/dist/memory/consolidate.js.map +1 -0
- package/dist/memory/contradiction.d.ts +69 -0
- package/dist/memory/contradiction.d.ts.map +1 -0
- package/dist/memory/contradiction.js +286 -0
- package/dist/memory/contradiction.js.map +1 -0
- package/dist/memory/decay.d.ts +62 -0
- package/dist/memory/decay.d.ts.map +1 -0
- package/dist/memory/decay.js +184 -0
- package/dist/memory/decay.js.map +1 -0
- package/dist/memory/salience.d.ts +36 -0
- package/dist/memory/salience.d.ts.map +1 -0
- package/dist/memory/salience.js +200 -0
- package/dist/memory/salience.js.map +1 -0
- package/dist/memory/similarity.d.ts +57 -0
- package/dist/memory/similarity.d.ts.map +1 -0
- package/dist/memory/similarity.js +114 -0
- package/dist/memory/similarity.js.map +1 -0
- package/dist/memory/store.d.ts +170 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +973 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/types.d.ts +91 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +30 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +466 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/context.d.ts +135 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +273 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/forget.d.ts +53 -0
- package/dist/tools/forget.d.ts.map +1 -0
- package/dist/tools/forget.js +179 -0
- package/dist/tools/forget.js.map +1 -0
- package/dist/tools/recall.d.ts +74 -0
- package/dist/tools/recall.d.ts.map +1 -0
- package/dist/tools/recall.js +140 -0
- package/dist/tools/recall.js.map +1 -0
- package/dist/tools/remember.d.ts +65 -0
- package/dist/tools/remember.d.ts.map +1 -0
- package/dist/tools/remember.js +147 -0
- package/dist/tools/remember.js.map +1 -0
- package/dist/worker/brain-worker.d.ts +100 -0
- package/dist/worker/brain-worker.d.ts.map +1 -0
- package/dist/worker/brain-worker.js +261 -0
- package/dist/worker/brain-worker.js.map +1 -0
- package/dist/worker/link-discovery.d.ts +47 -0
- package/dist/worker/link-discovery.d.ts.map +1 -0
- package/dist/worker/link-discovery.js +103 -0
- package/dist/worker/link-discovery.js.map +1 -0
- package/dist/worker/predictive-consolidation.d.ts +46 -0
- package/dist/worker/predictive-consolidation.d.ts.map +1 -0
- package/dist/worker/predictive-consolidation.js +110 -0
- package/dist/worker/predictive-consolidation.js.map +1 -0
- package/dist/worker/types.d.ts +91 -0
- package/dist/worker/types.d.ts.map +1 -0
- package/dist/worker/types.js +22 -0
- package/dist/worker/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recall Tool
|
|
3
|
+
*
|
|
4
|
+
* Search and retrieve memories using semantic search and filters.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { searchMemories, accessMemory, getRecentMemories, getHighPriorityMemories } from '../memory/store.js';
|
|
8
|
+
import { formatTimeSinceAccess } from '../memory/decay.js';
|
|
9
|
+
import { MemoryNotFoundError, formatErrorForMcp } from '../errors.js';
|
|
10
|
+
import { resolveProject } from '../context/project-context.js';
|
|
11
|
+
// Input schema for the recall tool
|
|
12
|
+
export const recallSchema = z.object({
|
|
13
|
+
query: z.string().optional().describe('Search query (semantic search)'),
|
|
14
|
+
category: z.enum([
|
|
15
|
+
'architecture', 'pattern', 'preference', 'error',
|
|
16
|
+
'context', 'learning', 'todo', 'note', 'relationship', 'custom'
|
|
17
|
+
]).optional().describe('Filter by category'),
|
|
18
|
+
type: z.enum(['short_term', 'long_term', 'episodic']).optional()
|
|
19
|
+
.describe('Filter by memory type'),
|
|
20
|
+
project: z.string().optional().describe('Filter by project'),
|
|
21
|
+
tags: z.array(z.string()).optional().describe('Filter by tags'),
|
|
22
|
+
limit: z.number().min(1).max(50).optional().default(10)
|
|
23
|
+
.describe('Maximum number of results'),
|
|
24
|
+
includeDecayed: z.boolean().optional().default(false)
|
|
25
|
+
.describe('Include memories that have decayed below threshold'),
|
|
26
|
+
includeGlobal: z.boolean().optional().default(true)
|
|
27
|
+
.describe('Include global memories in search results (default: true)'),
|
|
28
|
+
mode: z.enum(['search', 'recent', 'important']).optional().default('search')
|
|
29
|
+
.describe('Recall mode: search (query-based), recent (by time), important (by salience)'),
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Execute the recall tool
|
|
33
|
+
*/
|
|
34
|
+
export async function executeRecall(input) {
|
|
35
|
+
try {
|
|
36
|
+
// Resolve project (auto-detect if not provided)
|
|
37
|
+
const resolvedProject = resolveProject(input.project);
|
|
38
|
+
const projectFilter = resolvedProject ?? undefined;
|
|
39
|
+
let memories = [];
|
|
40
|
+
switch (input.mode) {
|
|
41
|
+
case 'recent':
|
|
42
|
+
memories = getRecentMemories(input.limit, projectFilter);
|
|
43
|
+
break;
|
|
44
|
+
case 'important':
|
|
45
|
+
memories = getHighPriorityMemories(input.limit, projectFilter);
|
|
46
|
+
break;
|
|
47
|
+
case 'search':
|
|
48
|
+
default:
|
|
49
|
+
const results = await searchMemories({
|
|
50
|
+
query: input.query || '',
|
|
51
|
+
category: input.category,
|
|
52
|
+
type: input.type,
|
|
53
|
+
project: projectFilter,
|
|
54
|
+
tags: input.tags,
|
|
55
|
+
limit: input.limit,
|
|
56
|
+
includeDecayed: input.includeDecayed,
|
|
57
|
+
includeGlobal: input.includeGlobal,
|
|
58
|
+
});
|
|
59
|
+
memories = results.map(r => r.memory);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
// Access each memory to reinforce it
|
|
63
|
+
memories = memories.map(m => accessMemory(m.id) || m);
|
|
64
|
+
return {
|
|
65
|
+
success: true,
|
|
66
|
+
memories,
|
|
67
|
+
count: memories.length,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
return {
|
|
72
|
+
success: false,
|
|
73
|
+
error: formatErrorForMcp(error),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Format a single memory for display
|
|
79
|
+
*/
|
|
80
|
+
export function formatMemory(memory, verbose = false) {
|
|
81
|
+
const lines = [
|
|
82
|
+
`[${memory.id}] **${memory.title}**`,
|
|
83
|
+
` ${memory.content.slice(0, 200)}${memory.content.length > 200 ? '...' : ''}`,
|
|
84
|
+
];
|
|
85
|
+
if (verbose) {
|
|
86
|
+
lines.push(` Type: ${memory.type} | Category: ${memory.category}`);
|
|
87
|
+
lines.push(` Salience: ${(memory.salience * 100).toFixed(0)}% | Accessed: ${memory.accessCount}x`);
|
|
88
|
+
lines.push(` Last access: ${formatTimeSinceAccess(memory)}`);
|
|
89
|
+
if (memory.tags.length > 0) {
|
|
90
|
+
lines.push(` Tags: ${memory.tags.join(', ')}`);
|
|
91
|
+
}
|
|
92
|
+
if (memory.project) {
|
|
93
|
+
lines.push(` Project: ${memory.project}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
lines.push(` (${memory.type}, ${memory.category}, ${formatTimeSinceAccess(memory)})`);
|
|
98
|
+
}
|
|
99
|
+
return lines.join('\n');
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Format the recall result for MCP response
|
|
103
|
+
*/
|
|
104
|
+
export function formatRecallResult(result, verbose = false) {
|
|
105
|
+
if (!result.success) {
|
|
106
|
+
return `Failed to recall: ${result.error}`;
|
|
107
|
+
}
|
|
108
|
+
if (!result.memories || result.memories.length === 0) {
|
|
109
|
+
return 'No memories found matching your query.';
|
|
110
|
+
}
|
|
111
|
+
const header = `Found ${result.count} ${result.count === 1 ? 'memory' : 'memories'}:\n`;
|
|
112
|
+
const formattedMemories = result.memories.map(m => formatMemory(m, verbose)).join('\n\n');
|
|
113
|
+
return header + formattedMemories;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get a single memory by ID
|
|
117
|
+
*/
|
|
118
|
+
export const getMemorySchema = z.object({
|
|
119
|
+
id: z.number().describe('Memory ID to retrieve'),
|
|
120
|
+
});
|
|
121
|
+
export function executeGetMemory(input) {
|
|
122
|
+
try {
|
|
123
|
+
const memory = accessMemory(input.id);
|
|
124
|
+
if (!memory) {
|
|
125
|
+
const error = new MemoryNotFoundError(input.id);
|
|
126
|
+
return {
|
|
127
|
+
success: false,
|
|
128
|
+
error: error.toUserMessage(),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return { success: true, memory };
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return {
|
|
135
|
+
success: false,
|
|
136
|
+
error: formatErrorForMcp(error),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=recall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remember Tool
|
|
3
|
+
*
|
|
4
|
+
* Store memories with automatic salience detection and categorization.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { MemoryCategory, MemoryType } from '../memory/types.js';
|
|
8
|
+
export declare const rememberSchema: z.ZodObject<{
|
|
9
|
+
title: z.ZodString;
|
|
10
|
+
content: z.ZodString;
|
|
11
|
+
category: z.ZodOptional<z.ZodEnum<["architecture", "pattern", "preference", "error", "context", "learning", "todo", "note", "relationship", "custom"]>>;
|
|
12
|
+
type: z.ZodOptional<z.ZodEnum<["short_term", "long_term", "episodic"]>>;
|
|
13
|
+
project: z.ZodOptional<z.ZodString>;
|
|
14
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
15
|
+
importance: z.ZodOptional<z.ZodEnum<["low", "normal", "high", "critical"]>>;
|
|
16
|
+
scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
|
|
17
|
+
transferable: z.ZodOptional<z.ZodBoolean>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
title: string;
|
|
20
|
+
content: string;
|
|
21
|
+
scope?: "project" | "global" | undefined;
|
|
22
|
+
transferable?: boolean | undefined;
|
|
23
|
+
project?: string | undefined;
|
|
24
|
+
category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
25
|
+
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
26
|
+
tags?: string[] | undefined;
|
|
27
|
+
importance?: "critical" | "low" | "normal" | "high" | undefined;
|
|
28
|
+
}, {
|
|
29
|
+
title: string;
|
|
30
|
+
content: string;
|
|
31
|
+
scope?: "project" | "global" | undefined;
|
|
32
|
+
transferable?: boolean | undefined;
|
|
33
|
+
project?: string | undefined;
|
|
34
|
+
category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
35
|
+
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
36
|
+
tags?: string[] | undefined;
|
|
37
|
+
importance?: "critical" | "low" | "normal" | "high" | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
export type RememberInput = z.infer<typeof rememberSchema>;
|
|
40
|
+
/**
|
|
41
|
+
* Execute the remember tool
|
|
42
|
+
*/
|
|
43
|
+
export declare function executeRemember(input: RememberInput): Promise<{
|
|
44
|
+
success: boolean;
|
|
45
|
+
memory?: {
|
|
46
|
+
id: number;
|
|
47
|
+
title: string;
|
|
48
|
+
salience: number;
|
|
49
|
+
type: MemoryType;
|
|
50
|
+
category: MemoryCategory;
|
|
51
|
+
reason: string;
|
|
52
|
+
linksCreated?: number;
|
|
53
|
+
truncated?: {
|
|
54
|
+
wasTruncated: boolean;
|
|
55
|
+
originalLength: number;
|
|
56
|
+
truncatedLength: number;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
error?: string;
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Format the remember result for MCP response
|
|
63
|
+
*/
|
|
64
|
+
export declare function formatRememberResult(result: Awaited<ReturnType<typeof executeRemember>>): string;
|
|
65
|
+
//# sourceMappingURL=remember.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remember.d.ts","sourceRoot":"","sources":["../../src/tools/remember.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKhE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBzB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE3D;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE,cAAc,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE;YACV,YAAY,EAAE,OAAO,CAAC;YACtB,cAAc,EAAE,MAAM,CAAC;YACvB,eAAe,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA2FD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,GAAG,MAAM,CAwBhG"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remember Tool
|
|
3
|
+
*
|
|
4
|
+
* Store memories with automatic salience detection and categorization.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { addMemory, searchMemories, detectRelationships, createMemoryLink, getLastTruncationInfo } from '../memory/store.js';
|
|
8
|
+
import { analyzeSalienceFactors, explainSalience } from '../memory/salience.js';
|
|
9
|
+
import { formatErrorForMcp } from '../errors.js';
|
|
10
|
+
import { resolveProject } from '../context/project-context.js';
|
|
11
|
+
// Input schema for the remember tool
|
|
12
|
+
export const rememberSchema = z.object({
|
|
13
|
+
title: z.string().describe('Short title for the memory (what to remember)'),
|
|
14
|
+
content: z.string().describe('Detailed content of the memory'),
|
|
15
|
+
category: z.enum([
|
|
16
|
+
'architecture', 'pattern', 'preference', 'error',
|
|
17
|
+
'context', 'learning', 'todo', 'note', 'relationship', 'custom'
|
|
18
|
+
]).optional().describe('Category of memory (auto-detected if not provided)'),
|
|
19
|
+
type: z.enum(['short_term', 'long_term', 'episodic']).optional()
|
|
20
|
+
.describe('Memory type (auto-determined based on salience if not provided)'),
|
|
21
|
+
project: z.string().optional().describe('Project this memory belongs to'),
|
|
22
|
+
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
23
|
+
importance: z.enum(['low', 'normal', 'high', 'critical']).optional()
|
|
24
|
+
.describe('Override automatic salience detection'),
|
|
25
|
+
scope: z.enum(['project', 'global']).optional()
|
|
26
|
+
.describe('Memory scope: project (default) or global (cross-project)'),
|
|
27
|
+
transferable: z.boolean().optional()
|
|
28
|
+
.describe('Whether this memory can be transferred to other projects'),
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* Execute the remember tool
|
|
32
|
+
*/
|
|
33
|
+
export async function executeRemember(input) {
|
|
34
|
+
try {
|
|
35
|
+
// Resolve project (auto-detect if not provided)
|
|
36
|
+
const resolvedProject = resolveProject(input.project);
|
|
37
|
+
// Map importance to salience override
|
|
38
|
+
let salienceOverride;
|
|
39
|
+
if (input.importance) {
|
|
40
|
+
const importanceMap = {
|
|
41
|
+
low: 0.3,
|
|
42
|
+
normal: 0.5,
|
|
43
|
+
high: 0.8,
|
|
44
|
+
critical: 1.0,
|
|
45
|
+
};
|
|
46
|
+
salienceOverride = importanceMap[input.importance];
|
|
47
|
+
}
|
|
48
|
+
// Check for duplicates
|
|
49
|
+
const existing = await searchMemories({
|
|
50
|
+
query: input.title,
|
|
51
|
+
project: resolvedProject ?? undefined,
|
|
52
|
+
limit: 3,
|
|
53
|
+
});
|
|
54
|
+
// If very similar memory exists, update instead
|
|
55
|
+
if (existing.length > 0 && existing[0].relevanceScore > 0.9) {
|
|
56
|
+
const existingMemory = existing[0].memory;
|
|
57
|
+
return {
|
|
58
|
+
success: true,
|
|
59
|
+
memory: {
|
|
60
|
+
id: existingMemory.id,
|
|
61
|
+
title: existingMemory.title,
|
|
62
|
+
salience: existingMemory.salience,
|
|
63
|
+
type: existingMemory.type,
|
|
64
|
+
category: existingMemory.category,
|
|
65
|
+
reason: 'Updated existing similar memory',
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Create the memory
|
|
70
|
+
const memory = addMemory({
|
|
71
|
+
title: input.title,
|
|
72
|
+
content: input.content,
|
|
73
|
+
category: input.category,
|
|
74
|
+
type: input.type,
|
|
75
|
+
project: resolvedProject ?? undefined,
|
|
76
|
+
tags: input.tags,
|
|
77
|
+
salience: salienceOverride,
|
|
78
|
+
scope: input.scope,
|
|
79
|
+
transferable: input.transferable,
|
|
80
|
+
});
|
|
81
|
+
// Auto-detect and create relationships with existing memories
|
|
82
|
+
let linksCreated = 0;
|
|
83
|
+
try {
|
|
84
|
+
const potentialLinks = detectRelationships(memory, 3);
|
|
85
|
+
for (const link of potentialLinks) {
|
|
86
|
+
const created = createMemoryLink(memory.id, link.targetId, link.relationship, link.strength);
|
|
87
|
+
if (created)
|
|
88
|
+
linksCreated++;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Silently ignore relationship detection errors
|
|
93
|
+
}
|
|
94
|
+
// Explain why this was remembered
|
|
95
|
+
const factors = analyzeSalienceFactors({ title: input.title, content: input.content });
|
|
96
|
+
const reason = explainSalience(factors);
|
|
97
|
+
// Check if content was truncated
|
|
98
|
+
const truncationInfo = getLastTruncationInfo();
|
|
99
|
+
return {
|
|
100
|
+
success: true,
|
|
101
|
+
memory: {
|
|
102
|
+
id: memory.id,
|
|
103
|
+
title: memory.title,
|
|
104
|
+
salience: memory.salience,
|
|
105
|
+
type: memory.type,
|
|
106
|
+
category: memory.category,
|
|
107
|
+
reason,
|
|
108
|
+
linksCreated,
|
|
109
|
+
truncated: truncationInfo?.wasTruncated ? truncationInfo : undefined,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
error: formatErrorForMcp(error),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Format the remember result for MCP response
|
|
122
|
+
*/
|
|
123
|
+
export function formatRememberResult(result) {
|
|
124
|
+
if (!result.success) {
|
|
125
|
+
return `Failed to remember: ${result.error}`;
|
|
126
|
+
}
|
|
127
|
+
const m = result.memory;
|
|
128
|
+
const lines = [
|
|
129
|
+
`✓ Remembered: "${m.title}"`,
|
|
130
|
+
` ID: ${m.id}`,
|
|
131
|
+
` Type: ${m.type}`,
|
|
132
|
+
` Category: ${m.category}`,
|
|
133
|
+
` Salience: ${(m.salience * 100).toFixed(0)}%`,
|
|
134
|
+
` Reason: ${m.reason}`,
|
|
135
|
+
];
|
|
136
|
+
if (m.linksCreated && m.linksCreated > 0) {
|
|
137
|
+
lines.push(` Links: ${m.linksCreated} related memories connected`);
|
|
138
|
+
}
|
|
139
|
+
if (m.truncated && m.truncated.wasTruncated) {
|
|
140
|
+
const originalKB = (m.truncated.originalLength / 1024).toFixed(1);
|
|
141
|
+
const truncatedKB = (m.truncated.truncatedLength / 1024).toFixed(1);
|
|
142
|
+
lines.push(` ⚠️ WARNING: Content truncated from ${originalKB}KB to ${truncatedKB}KB (10KB limit)`);
|
|
143
|
+
lines.push(` Consider splitting large memories into smaller, focused pieces.`);
|
|
144
|
+
}
|
|
145
|
+
return lines.join('\n');
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=remember.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remember.js","sourceRoot":"","sources":["../../src/tools/remember.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain Worker
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Organic Brain Feature
|
|
5
|
+
*
|
|
6
|
+
* Background worker that performs brain-like maintenance operations:
|
|
7
|
+
* - Light tick (5 min): Prune activation cache, check predictive consolidation
|
|
8
|
+
* - Medium tick (30 min): Discover missing links, scan for contradictions
|
|
9
|
+
*
|
|
10
|
+
* This transforms the memory system from reactive to continuously organic.
|
|
11
|
+
*/
|
|
12
|
+
import { WorkerConfig, LightTickResult, MediumTickResult, WorkerStatus } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Brain Worker Class
|
|
15
|
+
*
|
|
16
|
+
* Manages background processing timers and operations.
|
|
17
|
+
* Designed to be started by the visualization server and run continuously.
|
|
18
|
+
*/
|
|
19
|
+
export declare class BrainWorker {
|
|
20
|
+
private lightTimer;
|
|
21
|
+
private mediumTimer;
|
|
22
|
+
private isRunning;
|
|
23
|
+
private config;
|
|
24
|
+
private stats;
|
|
25
|
+
private lastLightTick;
|
|
26
|
+
private lastMediumTick;
|
|
27
|
+
private lastConsolidation;
|
|
28
|
+
/**
|
|
29
|
+
* Create a new BrainWorker
|
|
30
|
+
*
|
|
31
|
+
* @param config - Partial configuration to override defaults
|
|
32
|
+
*/
|
|
33
|
+
constructor(config?: Partial<WorkerConfig>);
|
|
34
|
+
/**
|
|
35
|
+
* Start the background worker
|
|
36
|
+
* Sets up interval timers for light and medium ticks
|
|
37
|
+
*/
|
|
38
|
+
start(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Stop the background worker
|
|
41
|
+
* Clears all interval timers
|
|
42
|
+
*/
|
|
43
|
+
stop(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Check if the worker is currently running
|
|
46
|
+
*/
|
|
47
|
+
isActive(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Light tick - runs every 5 minutes
|
|
50
|
+
*
|
|
51
|
+
* Operations:
|
|
52
|
+
* 1. Prune stale activation cache entries
|
|
53
|
+
* 2. Check if predictive consolidation should run
|
|
54
|
+
*/
|
|
55
|
+
lightTick(): Promise<LightTickResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Medium tick - runs every 30 minutes
|
|
58
|
+
*
|
|
59
|
+
* Operations:
|
|
60
|
+
* 1. Discover and create missing links
|
|
61
|
+
* 2. Scan for contradictions
|
|
62
|
+
*/
|
|
63
|
+
mediumTick(): Promise<MediumTickResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Get current worker status
|
|
66
|
+
*/
|
|
67
|
+
getStatus(): WorkerStatus;
|
|
68
|
+
/**
|
|
69
|
+
* Get current configuration
|
|
70
|
+
*/
|
|
71
|
+
getConfig(): WorkerConfig;
|
|
72
|
+
/**
|
|
73
|
+
* Update configuration
|
|
74
|
+
* Note: Changes won't affect running timers until restart
|
|
75
|
+
*/
|
|
76
|
+
updateConfig(config: Partial<WorkerConfig>): void;
|
|
77
|
+
/**
|
|
78
|
+
* Manually trigger a light tick
|
|
79
|
+
* Useful for testing or immediate cache pruning
|
|
80
|
+
*/
|
|
81
|
+
triggerLightTick(): Promise<LightTickResult>;
|
|
82
|
+
/**
|
|
83
|
+
* Manually trigger a medium tick
|
|
84
|
+
* Useful for testing or immediate link discovery
|
|
85
|
+
*/
|
|
86
|
+
triggerMediumTick(): Promise<MediumTickResult>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get or create the default worker instance
|
|
90
|
+
*/
|
|
91
|
+
export declare function getDefaultWorker(): BrainWorker;
|
|
92
|
+
/**
|
|
93
|
+
* Start the default worker if not already running
|
|
94
|
+
*/
|
|
95
|
+
export declare function startDefaultWorker(): BrainWorker;
|
|
96
|
+
/**
|
|
97
|
+
* Stop the default worker
|
|
98
|
+
*/
|
|
99
|
+
export declare function stopDefaultWorker(): void;
|
|
100
|
+
//# sourceMappingURL=brain-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-worker.d.ts","sourceRoot":"","sources":["../../src/worker/brain-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,YAAY,EAEZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,MAAM,YAAY,CAAC;AAgBpB;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAe;IAG7B,OAAO,CAAC,KAAK,CAIX;IAGF,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,iBAAiB,CAAqB;IAE9C;;;;OAIG;gBACS,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAI9C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAgCb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAqBZ;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;;;;OAMG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAqD3C;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA4C7C;;OAEG;IACH,SAAS,IAAI,YAAY;IAUzB;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAMjD;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC;IAI5C;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAG/C;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAK9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAMhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC"}
|