@kinqs/brainrouter-mcp-server 0.3.4 → 0.3.6

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 (65) hide show
  1. package/.env.example +121 -71
  2. package/README.md +88 -15
  3. package/dist/__tests__/cognitive-extractor.test.js +112 -0
  4. package/dist/__tests__/crypto.test.js +8 -1
  5. package/dist/__tests__/working-memory.test.js +67 -0
  6. package/dist/env-loader.js +47 -0
  7. package/dist/index.d.ts +2 -1
  8. package/dist/index.js +12 -1
  9. package/dist/init.d.ts +1 -0
  10. package/dist/init.js +64 -0
  11. package/dist/memory/engine.js +21 -1
  12. package/dist/memory/pipeline/cognitive-extractor.js +19 -1
  13. package/dist/memory/recall.d.ts +3 -1
  14. package/dist/memory/recall.js +48 -3
  15. package/dist/memory/store/relevance-judge.d.ts +51 -0
  16. package/dist/memory/store/relevance-judge.js +196 -0
  17. package/dist/memory/working/canvas.js +11 -0
  18. package/package.json +2 -2
  19. package/dist/memory/config.d.ts +0 -2
  20. package/dist/memory/config.js +0 -3
  21. package/dist/memory/pipeline/l1-contradiction.d.ts +0 -7
  22. package/dist/memory/pipeline/l1-contradiction.js +0 -66
  23. package/dist/memory/pipeline/l1-dedup.d.ts +0 -23
  24. package/dist/memory/pipeline/l1-dedup.js +0 -39
  25. package/dist/memory/pipeline/l1-extractor.d.ts +0 -21
  26. package/dist/memory/pipeline/l1-extractor.js +0 -180
  27. package/dist/memory/pipeline/l2-direction-shift.d.ts +0 -10
  28. package/dist/memory/pipeline/l2-direction-shift.js +0 -27
  29. package/dist/memory/pipeline/l2-scene.d.ts +0 -15
  30. package/dist/memory/pipeline/l2-scene.js +0 -140
  31. package/dist/memory/pipeline/l3-distiller.d.ts +0 -15
  32. package/dist/memory/pipeline/l3-distiller.js +0 -40
  33. package/dist/memory/pipeline/task-queue.d.ts +0 -54
  34. package/dist/memory/pipeline/task-queue.js +0 -117
  35. package/dist/memory/prompts/graph-extraction-batch.d.ts +0 -14
  36. package/dist/memory/prompts/graph-extraction-batch.js +0 -54
  37. package/dist/memory/prompts/l1-contradiction-batch.d.ts +0 -16
  38. package/dist/memory/prompts/l1-contradiction-batch.js +0 -47
  39. package/dist/memory/prompts/l1-contradiction.d.ts +0 -1
  40. package/dist/memory/prompts/l1-contradiction.js +0 -25
  41. package/dist/memory/prompts/l1-extraction.d.ts +0 -10
  42. package/dist/memory/prompts/l1-extraction.js +0 -114
  43. package/dist/memory/prompts/l2-direction-shift.d.ts +0 -5
  44. package/dist/memory/prompts/l2-direction-shift.js +0 -32
  45. package/dist/memory/prompts/l2-scene-cluster.d.ts +0 -2
  46. package/dist/memory/prompts/l2-scene-cluster.js +0 -33
  47. package/dist/memory/prompts/l2-scene.d.ts +0 -7
  48. package/dist/memory/prompts/l2-scene.js +0 -40
  49. package/dist/memory/prompts/l3-persona.d.ts +0 -6
  50. package/dist/memory/prompts/l3-persona.js +0 -60
  51. package/dist/memory/store/types.d.ts +0 -101
  52. package/dist/memory/types.d.ts +0 -207
  53. package/dist/memory/types.js +0 -7
  54. package/dist/memory/validation.d.ts +0 -441
  55. package/dist/memory/validation.js +0 -129
  56. package/dist/tools/agent_memory_tools.d.ts +0 -485
  57. package/dist/tools/agent_memory_tools.js +0 -793
  58. package/dist/tools/get_doc.d.ts +0 -21
  59. package/dist/tools/get_doc.js +0 -24
  60. package/dist/tools/list_docs.d.ts +0 -15
  61. package/dist/tools/list_docs.js +0 -16
  62. package/dist/tools/update_doc.d.ts +0 -24
  63. package/dist/tools/update_doc.js +0 -35
  64. /package/dist/__tests__/{agent_mode.test.d.ts → cognitive-extractor.test.d.ts} +0 -0
  65. /package/dist/{memory/store/types.js → env-loader.d.ts} +0 -0
@@ -1,101 +0,0 @@
1
- import type { GraphEdge, GraphNode, L0Record, L1FtsResult, L1Record, L2SceneRecord, L3PersonaRecord, SchedulerState, SkillHintsRecord, UserRecord, VectorSearchResult } from "../types.js";
2
- export interface IMemoryStore {
3
- init(): void;
4
- initVec(dimensions: number): void;
5
- upsertL0(record: L0Record): void;
6
- getRecentL0Messages(userId: string, sessionKey: string, limit: number, afterIsoTime?: string): L0Record[];
7
- getUnextractedL0Count(userId: string, sessionKey: string): number;
8
- upsertL1(record: L1Record): void;
9
- invalidateL1Record(userId: string, recordId: string, supersededById: string): void;
10
- searchL1Fts(userId: string, query: string, limit: number): L1FtsResult[];
11
- searchL1FtsAsOf(userId: string, query: string, limit: number, asOf: string): L1FtsResult[];
12
- upsertL1Vec(recordId: string, embedding: Float32Array): void;
13
- searchL1Vec(userId: string, queryEmbedding: Float32Array, limit: number): VectorSearchResult[];
14
- upsertContradiction(data: {
15
- id: string;
16
- userId: string;
17
- recordIdA: string;
18
- recordIdB: string;
19
- reason: string;
20
- confidence: number;
21
- createdTime?: string;
22
- }): void;
23
- getPendingContradictions(userId: string): any[];
24
- resolveContradiction(id: string, userId: string, status: "resolved" | "dismissed"): void;
25
- upsertSkillHints(skillName: string, hints: string, sourceFile?: string): void;
26
- listSkillHints(): SkillHintsRecord[];
27
- getSkillHints(skillName: string): string | null;
28
- upsertL2Scene(record: L2SceneRecord): void;
29
- getTopL2Scenes(userId: string, limit?: number): L2SceneRecord[];
30
- decayL2HeatScores(userId: string, decayFactor?: number): void;
31
- boostL2HeatScore(userId: string, sceneName: string, boost?: number): void;
32
- getL1sByScene(userId: string, sceneName: string, limit?: number): any[];
33
- getL2SceneCount(userId: string): number;
34
- getColdL2Scenes(userId: string, limit: number): L2SceneRecord[];
35
- deleteL2Scenes(userId: string, sceneIds: string[]): void;
36
- getL2SceneByName(userId: string, sceneName: string): L2SceneRecord | null;
37
- getDistinctSceneNames(userId: string): string[];
38
- renameSceneInL1Records(userId: string, oldName: string, canonicalName: string): void;
39
- upsertL3Persona(record: L3PersonaRecord): void;
40
- getL3Persona(userId: string): L3PersonaRecord | null;
41
- getPersonaAndInstructionL1s(userId: string, limit?: number): any[];
42
- getSchedulerState(userId: string): SchedulerState;
43
- incrementSchedulerL1Count(userId: string, count: number): void;
44
- resetSchedulerL2Count(userId: string): void;
45
- resetSchedulerL3Count(userId: string): void;
46
- getAllGraphNodes(userId: string): GraphNode[];
47
- upsertGraphNode(node: GraphNode): void;
48
- upsertGraphEdge(edge: GraphEdge): void;
49
- getGraphNodeByEntity(userId: string, entity: string): GraphNode | null;
50
- getGraphNeighbors(userId: string, entityId: string, skillTag?: string, maxHops?: number): {
51
- nodes: GraphNode[];
52
- edges: GraphEdge[];
53
- };
54
- markCited(userId: string, recordIds: string[]): void;
55
- incrementNeverCited(userId: string, recordIds: string[]): {
56
- recordId: string;
57
- neverCitedCount: number;
58
- }[];
59
- archiveL1Record(userId: string, recordId: string): void;
60
- getRecentSkillContextL1s(userId: string, limit: number): {
61
- skillTag: string;
62
- createdTime: string;
63
- }[];
64
- createUser(userId: string, apiKey: string, displayName?: string, isAdmin?: boolean): UserRecord;
65
- getUserByApiKey(apiKey: string): UserRecord | null;
66
- getUserByEmail(email: string): UserRecord | null;
67
- getUserById(userId: string): UserRecord | null;
68
- updateUserPassword(userId: string, passwordHash: string): void;
69
- updateUserEmail(userId: string, email: string): void;
70
- updateUserDisplayName(userId: string, displayName: string): void;
71
- updateUserStatus(userId: string, status: "active" | "disabled"): void;
72
- updateUserApiKey(userId: string, apiKey: string): void;
73
- setInviteToken(userId: string, token: string | null): void;
74
- redeemInviteToken(token: string): UserRecord | null;
75
- listUsers(): UserRecord[];
76
- deleteUser(userId: string): void;
77
- listMemories(userId: string, filters?: {
78
- type?: string;
79
- scene?: string;
80
- skill?: string;
81
- archived?: boolean;
82
- }): Array<{
83
- recordId: string;
84
- content: string;
85
- type: string;
86
- priority: number;
87
- sceneName: string;
88
- skillTag: string;
89
- createdTime: string;
90
- citationCount: number;
91
- neverCitedCount: number;
92
- archived: boolean;
93
- }>;
94
- getMemoryStats(userId: string): {
95
- total: number;
96
- archived: number;
97
- byType: Record<string, number>;
98
- citationRate: number;
99
- lastRecallAt: string | null;
100
- };
101
- }
@@ -1,207 +0,0 @@
1
- /**
2
- * BrainRouter Memory Types
3
- *
4
- * Defines the types and boundaries for the BrainRouter memory engine.
5
- * Inspired by the reference architecture but scoped explicitly for MCP + Multi-tenant.
6
- */
7
- export interface BrainRouterMemoryContext {
8
- /** User identifier — REQUIRED. Enables multi-tenant isolation. */
9
- userId: string;
10
- /** Session identifier (unique per conversation session). */
11
- sessionKey: string;
12
- /** Sub-session identifier (optional). */
13
- sessionId?: string;
14
- /** Which BrainRouter skill is currently active (if any) */
15
- activeSkill?: string;
16
- }
17
- export interface L0Record {
18
- id: string;
19
- userId: string;
20
- sessionKey: string;
21
- sessionId: string;
22
- role: string;
23
- messageText: string;
24
- recordedAt: string;
25
- timestamp: number;
26
- skillTag: string;
27
- }
28
- export type MemoryType = "persona" | "episodic" | "instruction" | "skill_context";
29
- export interface L1Record {
30
- id: string;
31
- userId: string;
32
- sessionKey: string;
33
- sessionId: string;
34
- content: string;
35
- type: MemoryType;
36
- priority: number;
37
- sceneName: string;
38
- skillTag: string;
39
- halfLifeDays: number | null;
40
- supersededBy: string | null;
41
- invalidAt?: string | null;
42
- timestampStr: string;
43
- timestampStart: string;
44
- timestampEnd: string;
45
- createdTime: string;
46
- updatedTime: string;
47
- metadata: Record<string, unknown>;
48
- citationCount: number;
49
- lastCitedAt: string | null;
50
- neverCitedCount: number;
51
- archived: boolean;
52
- }
53
- export interface VectorSearchResult {
54
- record_id: string;
55
- user_id: string;
56
- content: string;
57
- type: string;
58
- priority: number;
59
- scene_name: string;
60
- skill_tag: string;
61
- score: number;
62
- timestamp_str: string;
63
- timestamp_start: string;
64
- timestamp_end: string;
65
- session_key: string;
66
- session_id: string;
67
- metadata_json: string;
68
- created_time: string;
69
- }
70
- export interface L1FtsResult {
71
- record_id: string;
72
- user_id: string;
73
- content: string;
74
- type: string;
75
- priority: number;
76
- scene_name: string;
77
- skill_tag: string;
78
- score: number;
79
- timestamp_str: string;
80
- timestamp_start: string;
81
- timestamp_end: string;
82
- session_key: string;
83
- session_id: string;
84
- metadata_json: string;
85
- created_time: string;
86
- /** ACE feedback: number of times this memory was cited by the agent. */
87
- citation_count?: number;
88
- }
89
- export interface RecalledMemory {
90
- content: string;
91
- score: number;
92
- type: string;
93
- recordId: string;
94
- skillTag?: string;
95
- }
96
- export interface RecallResult {
97
- /** L1 relevant memories — prepended to user prompt text (dynamic, per-turn). */
98
- prependContext?: string;
99
- /** Stable recall context appended to system prompt (persona, scene nav, tools guide). */
100
- appendSystemContext?: string;
101
- /** Recalled L1 memories with scores (for metrics/debugging). */
102
- recalledL1Memories?: RecalledMemory[];
103
- /** Strategy used. Phase 1 = keyword. */
104
- recallStrategy: string;
105
- /** L3 persona markdown (for metrics/debugging). */
106
- personaSummary?: string;
107
- /** Current most active scene name (for metrics/debugging). */
108
- activeScene?: string;
109
- }
110
- export interface CaptureResult {
111
- /** Number of L0 messages recorded. */
112
- l0RecordedCount: number;
113
- /** Whether L1 extraction was triggered this turn. */
114
- l1ExtractionTriggered: boolean;
115
- /** Number of L1 memories extracted (if triggered). */
116
- l1ExtractedCount: number;
117
- }
118
- export interface EmbeddingServiceConfig {
119
- endpoint?: string;
120
- apiKey?: string;
121
- model?: string;
122
- dimensions?: number;
123
- }
124
- export interface RerankerServiceConfig {
125
- endpoint?: string;
126
- apiKey?: string;
127
- model?: string;
128
- topN?: number;
129
- }
130
- export interface SkillHintsRecord {
131
- skillName: string;
132
- hints: string;
133
- sourceFile: string;
134
- registeredAt: string;
135
- }
136
- export interface UserRecord {
137
- userId: string;
138
- apiKey: string;
139
- passwordHash: string | null;
140
- displayName: string;
141
- email: string;
142
- isAdmin: boolean;
143
- status: "active" | "disabled";
144
- inviteToken: string | null;
145
- createdAt: string;
146
- }
147
- export interface PublicUserRecord {
148
- userId: string;
149
- displayName: string;
150
- email: string;
151
- isAdmin: boolean;
152
- status: "active" | "disabled";
153
- inviteToken: string | null;
154
- createdAt: string;
155
- }
156
- export interface LLMRunParams {
157
- prompt: string;
158
- systemPrompt?: string;
159
- taskId: string;
160
- timeoutMs?: number;
161
- }
162
- export interface LLMRunner {
163
- run(params: LLMRunParams): Promise<string>;
164
- }
165
- export interface L2SceneRecord {
166
- id: string;
167
- userId: string;
168
- sceneName: string;
169
- summaryMd: string;
170
- heatScore: number;
171
- lastActiveTime: string;
172
- createdTime: string;
173
- updatedTime: string;
174
- }
175
- export interface L3PersonaRecord {
176
- userId: string;
177
- personaMd: string;
178
- l1CountAtGeneration: number;
179
- createdTime: string;
180
- updatedTime: string;
181
- }
182
- export interface SchedulerState {
183
- l1CountSinceLastL2: number;
184
- l1CountSinceLastL3: number;
185
- totalL1Count: number;
186
- }
187
- export interface GraphNode {
188
- id: string;
189
- userId: string;
190
- entity: string;
191
- entityType: string;
192
- skillTag: string;
193
- confidence: number;
194
- sourceRecordId: string;
195
- createdTime: string;
196
- }
197
- export interface GraphEdge {
198
- id: string;
199
- userId: string;
200
- fromNodeId: string;
201
- toNodeId: string;
202
- relation: string;
203
- skillTag: string;
204
- confidence: number;
205
- sourceRecordId: string;
206
- createdTime: string;
207
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * BrainRouter Memory Types
3
- *
4
- * Defines the types and boundaries for the BrainRouter memory engine.
5
- * Inspired by the reference architecture but scoped explicitly for MCP + Multi-tenant.
6
- */
7
- export {};