nexus-prime 0.2.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 (134) hide show
  1. package/README.md +253 -0
  2. package/dist/agents/adapters/mcp.d.ts +21 -0
  3. package/dist/agents/adapters/mcp.d.ts.map +1 -0
  4. package/dist/agents/adapters/mcp.js +447 -0
  5. package/dist/agents/adapters/mcp.js.map +1 -0
  6. package/dist/agents/adapters.d.ts +57 -0
  7. package/dist/agents/adapters.d.ts.map +1 -0
  8. package/dist/agents/adapters.js +151 -0
  9. package/dist/agents/adapters.js.map +1 -0
  10. package/dist/agents/coordinator.d.ts +75 -0
  11. package/dist/agents/coordinator.d.ts.map +1 -0
  12. package/dist/agents/coordinator.js +339 -0
  13. package/dist/agents/coordinator.js.map +1 -0
  14. package/dist/agents/core/types.d.ts +157 -0
  15. package/dist/agents/core/types.d.ts.map +1 -0
  16. package/dist/agents/core/types.js +5 -0
  17. package/dist/agents/core/types.js.map +1 -0
  18. package/dist/agents/learner.d.ts +25 -0
  19. package/dist/agents/learner.d.ts.map +1 -0
  20. package/dist/agents/learner.js +88 -0
  21. package/dist/agents/learner.js.map +1 -0
  22. package/dist/cli.d.ts +6 -0
  23. package/dist/cli.d.ts.map +1 -0
  24. package/dist/cli.js +237 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/config.d.ts +74 -0
  27. package/dist/config.d.ts.map +1 -0
  28. package/dist/config.js +73 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/core/evolution.d.ts +122 -0
  31. package/dist/core/evolution.d.ts.map +1 -0
  32. package/dist/core/evolution.js +319 -0
  33. package/dist/core/evolution.js.map +1 -0
  34. package/dist/core/memory.d.ts +96 -0
  35. package/dist/core/memory.d.ts.map +1 -0
  36. package/dist/core/memory.js +304 -0
  37. package/dist/core/memory.js.map +1 -0
  38. package/dist/core/optimize.d.ts +100 -0
  39. package/dist/core/optimize.d.ts.map +1 -0
  40. package/dist/core/optimize.js +263 -0
  41. package/dist/core/optimize.js.map +1 -0
  42. package/dist/core/types.d.ts +155 -0
  43. package/dist/core/types.d.ts.map +1 -0
  44. package/dist/core/types.js +5 -0
  45. package/dist/core/types.js.map +1 -0
  46. package/dist/core/wave.d.ts +55 -0
  47. package/dist/core/wave.d.ts.map +1 -0
  48. package/dist/core/wave.js +119 -0
  49. package/dist/core/wave.js.map +1 -0
  50. package/dist/engines/benchmark.d.ts +76 -0
  51. package/dist/engines/benchmark.d.ts.map +1 -0
  52. package/dist/engines/benchmark.js +167 -0
  53. package/dist/engines/benchmark.js.map +1 -0
  54. package/dist/engines/cache-manager.d.ts +75 -0
  55. package/dist/engines/cache-manager.d.ts.map +1 -0
  56. package/dist/engines/cache-manager.js +200 -0
  57. package/dist/engines/cache-manager.js.map +1 -0
  58. package/dist/engines/context.d.ts +50 -0
  59. package/dist/engines/context.d.ts.map +1 -0
  60. package/dist/engines/context.js +99 -0
  61. package/dist/engines/context.js.map +1 -0
  62. package/dist/engines/embedder.d.ts +55 -0
  63. package/dist/engines/embedder.d.ts.map +1 -0
  64. package/dist/engines/embedder.js +223 -0
  65. package/dist/engines/embedder.js.map +1 -0
  66. package/dist/engines/guardrails-bridge.d.ts +64 -0
  67. package/dist/engines/guardrails-bridge.d.ts.map +1 -0
  68. package/dist/engines/guardrails-bridge.js +251 -0
  69. package/dist/engines/guardrails-bridge.js.map +1 -0
  70. package/dist/engines/index.d.ts +14 -0
  71. package/dist/engines/index.d.ts.map +1 -0
  72. package/dist/engines/index.js +14 -0
  73. package/dist/engines/index.js.map +1 -0
  74. package/dist/engines/memory.d.ts +76 -0
  75. package/dist/engines/memory.d.ts.map +1 -0
  76. package/dist/engines/memory.js +431 -0
  77. package/dist/engines/memory.js.map +1 -0
  78. package/dist/engines/meta-learner.d.ts +87 -0
  79. package/dist/engines/meta-learner.d.ts.map +1 -0
  80. package/dist/engines/meta-learner.js +214 -0
  81. package/dist/engines/meta-learner.js.map +1 -0
  82. package/dist/engines/orchestrator.d.ts +69 -0
  83. package/dist/engines/orchestrator.d.ts.map +1 -0
  84. package/dist/engines/orchestrator.js +175 -0
  85. package/dist/engines/orchestrator.js.map +1 -0
  86. package/dist/engines/pod-network.d.ts +31 -0
  87. package/dist/engines/pod-network.d.ts.map +1 -0
  88. package/dist/engines/pod-network.js +108 -0
  89. package/dist/engines/pod-network.js.map +1 -0
  90. package/dist/engines/token-optimizer.d.ts +53 -0
  91. package/dist/engines/token-optimizer.d.ts.map +1 -0
  92. package/dist/engines/token-optimizer.js +115 -0
  93. package/dist/engines/token-optimizer.js.map +1 -0
  94. package/dist/engines/token-supremacy.d.ts +86 -0
  95. package/dist/engines/token-supremacy.d.ts.map +1 -0
  96. package/dist/engines/token-supremacy.js +403 -0
  97. package/dist/engines/token-supremacy.js.map +1 -0
  98. package/dist/index.d.ts +99 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +302 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/nexus-prime.d.ts +15 -0
  103. package/dist/nexus-prime.d.ts.map +1 -0
  104. package/dist/nexus-prime.js +15 -0
  105. package/dist/nexus-prime.js.map +1 -0
  106. package/dist/phantom/index.d.ts +135 -0
  107. package/dist/phantom/index.d.ts.map +1 -0
  108. package/dist/phantom/index.js +286 -0
  109. package/dist/phantom/index.js.map +1 -0
  110. package/dist/phantom/merge-oracle.d.ts +35 -0
  111. package/dist/phantom/merge-oracle.d.ts.map +1 -0
  112. package/dist/phantom/merge-oracle.js +189 -0
  113. package/dist/phantom/merge-oracle.js.map +1 -0
  114. package/dist/phantom/phase4-orchestrator.d.ts +14 -0
  115. package/dist/phantom/phase4-orchestrator.d.ts.map +1 -0
  116. package/dist/phantom/phase4-orchestrator.js +488 -0
  117. package/dist/phantom/phase4-orchestrator.js.map +1 -0
  118. package/dist/verify-guardrails.d.ts +2 -0
  119. package/dist/verify-guardrails.d.ts.map +1 -0
  120. package/dist/verify-guardrails.js +48 -0
  121. package/dist/verify-guardrails.js.map +1 -0
  122. package/dist/verify-pod-sync.d.ts +2 -0
  123. package/dist/verify-pod-sync.d.ts.map +1 -0
  124. package/dist/verify-pod-sync.js +41 -0
  125. package/dist/verify-pod-sync.js.map +1 -0
  126. package/dist/verify-substrate.d.ts +2 -0
  127. package/dist/verify-substrate.d.ts.map +1 -0
  128. package/dist/verify-substrate.js +41 -0
  129. package/dist/verify-substrate.js.map +1 -0
  130. package/dist/verify-token-scoring.d.ts +2 -0
  131. package/dist/verify-token-scoring.d.ts.map +1 -0
  132. package/dist/verify-token-scoring.js +37 -0
  133. package/dist/verify-token-scoring.js.map +1 -0
  134. package/package.json +80 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Memory Engine — Persistent Zettelkasten
3
+ *
4
+ * Three-tier memory system backed by SQLite for cross-session persistence.
5
+ * Memories link to each other (Zettelkasten) — recall returns context networks,
6
+ * not just isolated facts. High-value memories trigger fission (broadcast).
7
+ *
8
+ * Persistence: ~/.nexus-prime/memory.db
9
+ * Load on MCP start. Flush on exit.
10
+ */
11
+ export interface MemoryItem {
12
+ id: string;
13
+ content: string;
14
+ priority: number;
15
+ timestamp: number;
16
+ tags: string[];
17
+ tier: 'prefrontal' | 'hippocampus' | 'cortex';
18
+ sessionId?: string;
19
+ accessCount: number;
20
+ links?: string[];
21
+ parentId?: string;
22
+ depth?: number;
23
+ }
24
+ export interface MemoryLink {
25
+ fromId: string;
26
+ toId: string;
27
+ weight: number;
28
+ type: 'semantic' | 'temporal' | 'tagged';
29
+ }
30
+ export interface MemoryStats {
31
+ prefrontal: number;
32
+ hippocampus: number;
33
+ cortex: number;
34
+ totalLinks: number;
35
+ oldestEntry: number | null;
36
+ topTags: string[];
37
+ }
38
+ export declare class MemoryEngine {
39
+ private db;
40
+ private sessionId;
41
+ private prefrontal;
42
+ private maxPrefrontal;
43
+ private maxHippocampus;
44
+ private embedder;
45
+ private vectorIdToMemoryId;
46
+ private memoryIdToVectorId;
47
+ private nextVectorId;
48
+ constructor(dbPath?: string);
49
+ private initSchema;
50
+ /** Restore hippocampus + cortex from DB on startup */
51
+ load(): void;
52
+ /** Flush prefrontal to DB (called on MCP shutdown) */
53
+ flush(): void;
54
+ store(content: string, priority?: number, tags?: string[], parentId?: string, depth?: number): string;
55
+ recall(query: string, k?: number): Promise<string[]>;
56
+ private vectorEmbeddings;
57
+ private indexMemory;
58
+ private autoLink;
59
+ /** Get a memory's connected context network */
60
+ getNetwork(id: string, depth?: number): MemoryItem[];
61
+ private fission;
62
+ private consolidate;
63
+ private wordOverlap;
64
+ private rowToItem;
65
+ private getAllItems;
66
+ getStats(): MemoryStats;
67
+ clear(): void;
68
+ /**
69
+ * Query memories by tag using direct SQL — precise, no fuzzy matching.
70
+ * Returns memories that contain ANY of the specified tags.
71
+ */
72
+ queryByTags(tags: string[], limit?: number): MemoryItem[];
73
+ close(): void;
74
+ }
75
+ export declare const createMemoryEngine: (dbPath?: string) => MemoryEngine;
76
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/engines/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAMD,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAO;IAG7B,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,CAAC,EAAE,MAAM;IAiB3B,OAAO,CAAC,UAAU;IAiDlB,sDAAsD;IACtD,IAAI,IAAI,IAAI;IAiCZ,sDAAsD;IACtD,KAAK,IAAI,IAAI;IAoCb,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY,EAAE,IAAI,GAAE,MAAM,EAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM;IA4C3G,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsE7D,OAAO,CAAC,gBAAgB,CAAoC;IAE5D,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,QAAQ;IAgChB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,UAAU,EAAE;IAgCvD,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,WAAW;IAyCnB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,WAAW;IAKnB,QAAQ,IAAI,WAAW;IAgCvB,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE;IAY7D,KAAK,IAAI,IAAI;CAId;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,iBAA6B,CAAC"}
@@ -0,0 +1,431 @@
1
+ /**
2
+ * Memory Engine — Persistent Zettelkasten
3
+ *
4
+ * Three-tier memory system backed by SQLite for cross-session persistence.
5
+ * Memories link to each other (Zettelkasten) — recall returns context networks,
6
+ * not just isolated facts. High-value memories trigger fission (broadcast).
7
+ *
8
+ * Persistence: ~/.nexus-prime/memory.db
9
+ * Load on MCP start. Flush on exit.
10
+ */
11
+ import Database from 'better-sqlite3';
12
+ import * as os from 'os';
13
+ import * as path from 'path';
14
+ import * as fs from 'fs';
15
+ import { randomUUID } from 'crypto';
16
+ import { Embedder, HyperbolicMath } from './embedder.js';
17
+ import { podNetwork } from './pod-network.js';
18
+ // ─────────────────────────────────────────────────────────────────────────────
19
+ // MemoryEngine
20
+ // ─────────────────────────────────────────────────────────────────────────────
21
+ export class MemoryEngine {
22
+ db;
23
+ sessionId;
24
+ // In-RAM working tiers (flushed to DB periodically)
25
+ prefrontal = [];
26
+ maxPrefrontal = 7;
27
+ maxHippocampus = 200;
28
+ // Vector index (in-memory TF-IDF) — rebuilt on load
29
+ embedder;
30
+ // Maps vector item id → memory id
31
+ vectorIdToMemoryId = new Map();
32
+ memoryIdToVectorId = new Map();
33
+ nextVectorId = 1;
34
+ constructor(dbPath) {
35
+ const dbDir = path.join(os.homedir(), '.nexus-prime');
36
+ fs.mkdirSync(dbDir, { recursive: true });
37
+ const resolvedPath = dbPath ?? path.join(dbDir, 'memory.db');
38
+ this.db = new Database(resolvedPath);
39
+ this.sessionId = randomUUID();
40
+ this.embedder = new Embedder();
41
+ this.initSchema();
42
+ this.load();
43
+ }
44
+ // ─────────────────────────────────────────────────────────────────────────
45
+ // Schema
46
+ // ─────────────────────────────────────────────────────────────────────────
47
+ initSchema() {
48
+ this.db.exec(`
49
+ CREATE TABLE IF NOT EXISTS memories (
50
+ id TEXT PRIMARY KEY,
51
+ content TEXT NOT NULL,
52
+ priority REAL NOT NULL DEFAULT 1.0,
53
+ timestamp INTEGER NOT NULL,
54
+ tags TEXT NOT NULL DEFAULT '[]',
55
+ tier TEXT NOT NULL DEFAULT 'hippocampus',
56
+ session_id TEXT,
57
+ access_count INTEGER NOT NULL DEFAULT 0,
58
+ parent_id TEXT,
59
+ depth INTEGER DEFAULT 0
60
+ );
61
+ `);
62
+ // Migration logic for existing tables
63
+ const tableInfo = this.db.prepare("PRAGMA table_info(memories)").all();
64
+ const columns = tableInfo.map(c => c.name);
65
+ if (!columns.includes('parent_id')) {
66
+ this.db.exec("ALTER TABLE memories ADD COLUMN parent_id TEXT");
67
+ }
68
+ if (!columns.includes('depth')) {
69
+ this.db.exec("ALTER TABLE memories ADD COLUMN depth INTEGER DEFAULT 0");
70
+ }
71
+ this.db.exec(`
72
+ CREATE TABLE IF NOT EXISTS memory_links(
73
+ from_id TEXT NOT NULL,
74
+ to_id TEXT NOT NULL,
75
+ weight REAL NOT NULL DEFAULT 0.5,
76
+ type TEXT NOT NULL DEFAULT 'semantic',
77
+ PRIMARY KEY(from_id, to_id),
78
+ FOREIGN KEY(from_id) REFERENCES memories(id) ON DELETE CASCADE,
79
+ FOREIGN KEY(to_id) REFERENCES memories(id) ON DELETE CASCADE
80
+ );
81
+
82
+ CREATE INDEX IF NOT EXISTS idx_memories_tier ON memories(tier);
83
+ CREATE INDEX IF NOT EXISTS idx_memories_priority ON memories(priority DESC);
84
+ CREATE INDEX IF NOT EXISTS idx_memories_timestamp ON memories(timestamp DESC);
85
+ CREATE INDEX IF NOT EXISTS idx_links_from ON memory_links(from_id);
86
+ `);
87
+ }
88
+ // ─────────────────────────────────────────────────────────────────────────
89
+ // Persistence
90
+ // ─────────────────────────────────────────────────────────────────────────
91
+ /** Restore hippocampus + cortex from DB on startup */
92
+ load() {
93
+ const rows = this.db.prepare(`SELECT * FROM memories ORDER BY priority DESC, timestamp DESC LIMIT 500`).all();
94
+ // Fit TF-IDF vocabulary on all stored content
95
+ const allContent = rows.map(r => r.content);
96
+ if (allContent.length > 0) {
97
+ this.embedder.fitVocabulary(allContent);
98
+ }
99
+ for (const row of rows) {
100
+ const item = {
101
+ id: row.id,
102
+ content: row.content,
103
+ priority: row.priority,
104
+ timestamp: row.timestamp,
105
+ tags: JSON.parse(row.tags),
106
+ tier: row.tier,
107
+ sessionId: row.session_id,
108
+ accessCount: row.access_count
109
+ };
110
+ // Restore prefrontal items to RAM
111
+ if (item.tier === 'prefrontal') {
112
+ this.prefrontal.push(item);
113
+ }
114
+ // Rebuild in-memory vector index (synchronously via local embed)
115
+ this.indexMemory(item.id, item.content);
116
+ }
117
+ }
118
+ /** Flush prefrontal to DB (called on MCP shutdown) */
119
+ flush() {
120
+ const upsert = this.db.prepare(`
121
+ INSERT INTO memories(id, content, priority, timestamp, tags, tier, session_id, access_count, parent_id, depth)
122
+ VALUES(@id, @content, @priority, @timestamp, @tags, @tier, @session_id, @access_count, @parent_id, @depth)
123
+ ON CONFLICT(id) DO UPDATE SET
124
+ priority = excluded.priority,
125
+ access_count = excluded.access_count,
126
+ tier = excluded.tier,
127
+ parent_id = excluded.parent_id,
128
+ depth = excluded.depth
129
+ `);
130
+ const txn = this.db.transaction((items) => {
131
+ for (const item of items) {
132
+ upsert.run({
133
+ id: item.id,
134
+ content: item.content,
135
+ priority: item.priority,
136
+ timestamp: item.timestamp,
137
+ tags: JSON.stringify(item.tags),
138
+ tier: item.tier,
139
+ session_id: item.sessionId ?? null,
140
+ access_count: item.accessCount,
141
+ parent_id: item.parentId ?? null,
142
+ depth: item.depth ?? 0
143
+ });
144
+ }
145
+ });
146
+ txn(this.prefrontal);
147
+ }
148
+ // ─────────────────────────────────────────────────────────────────────────
149
+ // Core Operations
150
+ // ─────────────────────────────────────────────────────────────────────────
151
+ store(content, priority = 1.0, tags = [], parentId, depth = 0) {
152
+ const id = randomUUID();
153
+ const item = {
154
+ id,
155
+ content,
156
+ priority,
157
+ timestamp: Date.now(),
158
+ tags,
159
+ tier: 'prefrontal',
160
+ sessionId: this.sessionId,
161
+ accessCount: 0,
162
+ parentId,
163
+ depth
164
+ };
165
+ // Write to DB immediately (don't wait for flush)
166
+ this.db.prepare(`
167
+ INSERT INTO memories(id, content, priority, timestamp, tags, tier, session_id, access_count, parent_id, depth)
168
+ VALUES(?, ?, ?, ?, ?, 'prefrontal', ?, 0, ?, ?)
169
+ `).run(id, content, priority, item.timestamp, JSON.stringify(tags), this.sessionId, parentId, depth);
170
+ // Update vocabulary and add to vector index
171
+ this.embedder.fitVocabulary([content]);
172
+ this.indexMemory(id, content);
173
+ // Auto-link to semantically similar recent memories
174
+ this.autoLink(item);
175
+ // Add to RAM prefrontal
176
+ this.prefrontal.push(item);
177
+ if (this.prefrontal.length > this.maxPrefrontal) {
178
+ this.consolidate();
179
+ }
180
+ // Fission: broadcast high-value memories
181
+ if (priority > 0.9) {
182
+ this.fission(item);
183
+ }
184
+ return id;
185
+ }
186
+ async recall(query, k = 5) {
187
+ // ── Stage 1: Vector search (semantic) ────────────────────────────────────
188
+ const queryVector = await this.embedder.embed(query);
189
+ const vectorMatches = new Map();
190
+ const allItems = this.getAllItems();
191
+ for (const item of allItems) {
192
+ const itemVector = this.embedder.localEmbed(item.content);
193
+ const hDist = HyperbolicMath.dist(queryVector, itemVector);
194
+ let score = 1 / (1 + hDist);
195
+ // Hierarchy Boost: if item has a parent that matches query, boost child
196
+ if (item.parentId) {
197
+ const parent = allItems.find(i => i.id === item.parentId);
198
+ if (parent) {
199
+ const parentVector = this.embedder.localEmbed(parent.content);
200
+ const pDist = HyperbolicMath.dist(queryVector, parentVector);
201
+ if (pDist < 0.3)
202
+ score *= 1.4; // Boost child if parent is relevant
203
+ }
204
+ }
205
+ vectorMatches.set(item.id, score);
206
+ }
207
+ // ── Stage 2: SQL scoring (priority + recency) ─────────────────────────────
208
+ const podFindings = podNetwork.recall([]);
209
+ const queryLower = query.toLowerCase();
210
+ const rows = this.db.prepare(`
211
+ SELECT *, access_count FROM memories
212
+ ORDER BY priority DESC, timestamp DESC
213
+ LIMIT 300
214
+ `).all();
215
+ const scored = rows.map(row => {
216
+ const vectorScore = vectorMatches.get(row.id) ?? 0;
217
+ const recencyScore = Math.exp(-(Date.now() - row.timestamp) / (7 * 24 * 3600 * 1000));
218
+ const priorityScore = row.priority;
219
+ const accessBonus = Math.min(row.access_count * 0.05, 0.3);
220
+ return {
221
+ content: row.content,
222
+ id: row.id,
223
+ score: vectorScore * 0.5 + priorityScore * 0.25 + recencyScore * 0.15 + accessBonus * 0.1
224
+ };
225
+ });
226
+ const podMatches = podFindings
227
+ .filter(f => f.content.toLowerCase().includes(queryLower))
228
+ .map(f => ({ content: f.content, score: 0.95 }));
229
+ const top = [...scored, ...podMatches]
230
+ .sort((a, b) => b.score - a.score)
231
+ .slice(0, k);
232
+ // Increment access count for recalled items
233
+ if (top.length > 0) {
234
+ const ids = top.filter(t => t.id).map(t => `'${t.id}'`).join(',');
235
+ if (ids) {
236
+ this.db.exec(`UPDATE memories SET access_count = access_count + 1 WHERE id IN(${ids})`);
237
+ }
238
+ }
239
+ return top.map(r => r.content);
240
+ }
241
+ // ─────────────────────────────────────────────────────────────────────────
242
+ // Vector Index Helpers
243
+ // ─────────────────────────────────────────────────────────────────────────
244
+ // In-RAM embedding store (id → float[] vector)
245
+ vectorEmbeddings = new Map();
246
+ indexMemory(memoryId, content) {
247
+ const vector = this.embedder.localEmbed(content);
248
+ const vid = this.nextVectorId++;
249
+ this.vectorEmbeddings.set(vid, vector);
250
+ this.vectorIdToMemoryId.set(vid, memoryId);
251
+ this.memoryIdToVectorId.set(memoryId, vid);
252
+ }
253
+ // ─────────────────────────────────────────────────────────────────────────
254
+ // Zettelkasten — semantic linking
255
+ // ─────────────────────────────────────────────────────────────────────────
256
+ autoLink(newItem) {
257
+ const recentRows = this.db.prepare(`
258
+ SELECT id, content, tags FROM memories
259
+ WHERE id != ? ORDER BY timestamp DESC LIMIT 50
260
+ `).all(newItem.id);
261
+ const newWords = newItem.content.toLowerCase().split(/\s+/);
262
+ for (const row of recentRows) {
263
+ const existingWords = row.content.toLowerCase().split(/\s+/);
264
+ const similarity = this.wordOverlap(newWords, existingWords);
265
+ if (similarity > 0.25) {
266
+ this.db.prepare(`
267
+ INSERT OR IGNORE INTO memory_links(from_id, to_id, weight, type)
268
+ VALUES(?, ?, ?, 'semantic')
269
+ `).run(newItem.id, row.id, similarity);
270
+ }
271
+ // Tag-based linking
272
+ const sharedTags = newItem.tags.filter(t => JSON.parse(row.tags ?? '[]').includes(t));
273
+ if (sharedTags.length > 0) {
274
+ this.db.prepare(`
275
+ INSERT OR IGNORE INTO memory_links(from_id, to_id, weight, type)
276
+ VALUES(?, ?, ?, 'tagged')
277
+ `).run(newItem.id, row.id, 0.6 + sharedTags.length * 0.1);
278
+ }
279
+ }
280
+ }
281
+ /** Get a memory's connected context network */
282
+ getNetwork(id, depth = 1) {
283
+ const visited = new Set([id]);
284
+ const result = [];
285
+ let frontier = [id];
286
+ for (let d = 0; d < depth; d++) {
287
+ const next = [];
288
+ for (const fromId of frontier) {
289
+ const links = this.db.prepare(`
290
+ SELECT to_id FROM memory_links WHERE from_id = ? ORDER BY weight DESC LIMIT 5
291
+ `).all(fromId);
292
+ for (const link of links) {
293
+ const toId = link.to_id;
294
+ if (!visited.has(toId)) {
295
+ visited.add(toId);
296
+ next.push(toId);
297
+ const row = this.db.prepare('SELECT * FROM memories WHERE id = ?').get(toId);
298
+ if (row)
299
+ result.push(this.rowToItem(row));
300
+ }
301
+ }
302
+ }
303
+ frontier = next;
304
+ }
305
+ return result;
306
+ }
307
+ // ─────────────────────────────────────────────────────────────────────────
308
+ // Fission: broadcast high-value discoveries
309
+ // ─────────────────────────────────────────────────────────────────────────
310
+ fission(item) {
311
+ // Promote to cortex immediately (permanently important)
312
+ this.db.prepare(`
313
+ UPDATE memories SET tier = 'cortex', priority = MIN(priority * 1.2, 2.0)
314
+ WHERE id = ?
315
+ `).run(item.id);
316
+ // Strengthen links TO this item (makes it easier to discover via related queries)
317
+ this.db.prepare(`
318
+ UPDATE memory_links SET weight = MIN(weight * 1.3, 1.0) WHERE to_id = ?
319
+ `).run(item.id);
320
+ }
321
+ // ─────────────────────────────────────────────────────────────────────────
322
+ // Tier Management
323
+ // ─────────────────────────────────────────────────────────────────────────
324
+ consolidate() {
325
+ const sorted = [...this.prefrontal].sort((a, b) => b.priority - a.priority);
326
+ const keepInRam = sorted.slice(0, Math.ceil(this.maxPrefrontal / 2));
327
+ const toPromote = sorted.slice(Math.ceil(this.maxPrefrontal / 2));
328
+ this.prefrontal = keepInRam;
329
+ if (toPromote.length > 0) {
330
+ const promoteStmt = this.db.prepare(`UPDATE memories SET tier = 'hippocampus' WHERE id = ? `);
331
+ const txn = this.db.transaction((items) => {
332
+ for (const item of items) {
333
+ promoteStmt.run(item.id);
334
+ item.tier = 'hippocampus';
335
+ }
336
+ });
337
+ txn(toPromote);
338
+ }
339
+ // Compact hippocampus to cortex if overfull
340
+ const hippoCount = this.db.prepare(`SELECT COUNT(*) as c FROM memories WHERE tier = 'hippocampus'`).get().c;
341
+ if (hippoCount > this.maxHippocampus) {
342
+ this.db.prepare(`
343
+ UPDATE memories SET tier = 'cortex'
344
+ WHERE tier = 'hippocampus'
345
+ AND id IN(
346
+ SELECT id FROM memories WHERE tier = 'hippocampus'
347
+ ORDER BY priority DESC LIMIT ?
348
+ )
349
+ `).run(hippoCount - this.maxHippocampus);
350
+ }
351
+ }
352
+ // ─────────────────────────────────────────────────────────────────────────
353
+ // Utilities
354
+ // ─────────────────────────────────────────────────────────────────────────
355
+ wordOverlap(a, b) {
356
+ const setA = new Set(a.filter(w => w.length > 2));
357
+ const setB = new Set(b.filter(w => w.length > 2));
358
+ if (setA.size === 0 || setB.size === 0)
359
+ return 0;
360
+ const intersection = [...setA].filter(x => setB.has(x));
361
+ const union = new Set([...setA, ...setB]);
362
+ return intersection.length / union.size;
363
+ }
364
+ rowToItem(row) {
365
+ return {
366
+ id: row.id,
367
+ content: row.content,
368
+ priority: row.priority,
369
+ timestamp: row.timestamp,
370
+ tags: JSON.parse(row.tags ?? '[]'),
371
+ tier: row.tier,
372
+ sessionId: row.session_id,
373
+ accessCount: row.access_count,
374
+ parentId: row.parent_id,
375
+ depth: row.depth
376
+ };
377
+ }
378
+ getAllItems() {
379
+ const rows = this.db.prepare('SELECT * FROM memories').all();
380
+ return rows.map(row => this.rowToItem(row));
381
+ }
382
+ getStats() {
383
+ const counts = this.db.prepare(`
384
+ SELECT tier, COUNT(*) as c FROM memories GROUP BY tier
385
+ `).all();
386
+ const tierMap = {};
387
+ for (const row of counts)
388
+ tierMap[row.tier] = row.c;
389
+ const linkCount = this.db.prepare('SELECT COUNT(*) as c FROM memory_links').get().c;
390
+ const oldest = this.db.prepare('SELECT MIN(timestamp) as t FROM memories').get().t;
391
+ const topTagsRaw = this.db.prepare(`
392
+ SELECT value as tag, COUNT(*) as c
393
+ FROM memories, json_each(memories.tags)
394
+ GROUP BY value ORDER BY c DESC LIMIT 5
395
+ `).all();
396
+ return {
397
+ prefrontal: tierMap['prefrontal'] ?? 0,
398
+ hippocampus: tierMap['hippocampus'] ?? 0,
399
+ cortex: tierMap['cortex'] ?? 0,
400
+ totalLinks: linkCount,
401
+ oldestEntry: oldest,
402
+ topTags: topTagsRaw.map(r => r.tag)
403
+ };
404
+ }
405
+ clear() {
406
+ this.prefrontal = [];
407
+ this.db.exec('DELETE FROM memory_links; DELETE FROM memories;');
408
+ }
409
+ /**
410
+ * Query memories by tag using direct SQL — precise, no fuzzy matching.
411
+ * Returns memories that contain ANY of the specified tags.
412
+ */
413
+ queryByTags(tags, limit = 20) {
414
+ if (tags.length === 0)
415
+ return [];
416
+ const placeholders = tags.map(() => '?').join(',');
417
+ const rows = this.db.prepare(`
418
+ SELECT DISTINCT m.* FROM memories m, json_each(m.tags) jt
419
+ WHERE jt.value IN (${placeholders})
420
+ ORDER BY m.priority DESC, m.timestamp DESC
421
+ LIMIT ?
422
+ `).all(...tags, limit);
423
+ return rows.map(row => this.rowToItem(row));
424
+ }
425
+ close() {
426
+ this.flush();
427
+ this.db.close();
428
+ }
429
+ }
430
+ export const createMemoryEngine = (dbPath) => new MemoryEngine(dbPath);
431
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/engines/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Meta-Learner for Adaptive Compression
3
+ *
4
+ * Implements adaptive interpolation and token retention.
5
+ */
6
+ export interface CompressionFeatures {
7
+ entropy: number;
8
+ taskEmbedding: number[];
9
+ layerDepth: number;
10
+ magnitudeRatio: number;
11
+ cosineSimilarity: number;
12
+ }
13
+ export declare class AdaptiveInterpolator {
14
+ private w1;
15
+ private w2;
16
+ private b;
17
+ /**
18
+ * Adaptive interpolation: t^{l,l-1} = σ(w1 * mag_ratio + w2 * cos_sim + b)
19
+ * Bounds t to [0.3, 0.7]
20
+ */
21
+ computeT(features: CompressionFeatures): number;
22
+ /**
23
+ * Update weights (simple gradient descent)
24
+ */
25
+ update(features: CompressionFeatures, targetT: number, learningRate?: number): void;
26
+ /**
27
+ * Extract features from layer outputs
28
+ */
29
+ extractFeatures(attentionMatrix: number[][], taskQuery: string, layerIndex: number, totalLayers: number, currentLayer: number[], previousLayer: number[]): CompressionFeatures;
30
+ private computeEntropy;
31
+ private simpleEmbedding;
32
+ private magnitudeRatio;
33
+ private cosineSimilarity;
34
+ }
35
+ export declare class TokenRetention {
36
+ private gamma;
37
+ setGamma(g: number): void;
38
+ /**
39
+ * Token Retention Threshold:
40
+ * I = {i | d_i < d_min + (d_max - d_min) * γ}
41
+ * where d_i = (1/π) * arccos(cos_sim_i) is angular distance
42
+ */
43
+ computeRetentionMask(currentLayer: number[][], previousLayer: number[][]): boolean[];
44
+ /**
45
+ * Get retained tokens
46
+ */
47
+ getRetained(layer: number[][], mask: boolean[]): number[][];
48
+ /**
49
+ * Get removed tokens
50
+ */
51
+ getRemoved(layer: number[][], mask: boolean[]): number[][];
52
+ /**
53
+ * Estimate retention ratio
54
+ */
55
+ getRetentionRatio(mask: boolean[]): number;
56
+ private cosineSimilarity;
57
+ }
58
+ export declare class MetaLearner {
59
+ private interpolator;
60
+ private retention;
61
+ constructor();
62
+ /**
63
+ * Predict compression decision
64
+ */
65
+ predict(attentionMatrix: number[][], taskQuery: string, layerIndex: number, totalLayers: number, currentLayer: number[], previousLayer: number[]): {
66
+ shouldMerge: boolean;
67
+ t: number;
68
+ gamma: number;
69
+ };
70
+ /**
71
+ * Apply compression and get result
72
+ */
73
+ compress(currentLayer: number[][], previousLayer: number[][], taskQuery: string, layerIndex: number, totalLayers: number, attentionMatrix: number[][]): {
74
+ merged: number[][];
75
+ retained: number[][];
76
+ removed: number[][];
77
+ mask: boolean[];
78
+ };
79
+ /**
80
+ * Update from feedback (simple learning)
81
+ */
82
+ update(features: CompressionFeatures, actualQuality: number, expectedQuality: number): void;
83
+ }
84
+ export declare const createMetaLearner: () => MetaLearner;
85
+ export declare const createAdaptiveInterpolator: () => AdaptiveInterpolator;
86
+ export declare const createTokenRetention: () => TokenRetention;
87
+ //# sourceMappingURL=meta-learner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-learner.d.ts","sourceRoot":"","sources":["../../src/engines/meta-learner.ts"],"names":[],"mappings":"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"}