@sashabogi/foundation 0.1.13 โ†’ 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 (57) hide show
  1. package/README.md +632 -238
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +159 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/index.d.ts +2 -2
  7. package/dist/index.js +3 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/providers/anthropic.d.ts.map +1 -1
  10. package/dist/providers/anthropic.js +4 -6
  11. package/dist/providers/anthropic.js.map +1 -1
  12. package/dist/providers/fireworks.d.ts +5 -0
  13. package/dist/providers/fireworks.d.ts.map +1 -1
  14. package/dist/providers/fireworks.js +18 -0
  15. package/dist/providers/fireworks.js.map +1 -1
  16. package/dist/providers/kimi-code.d.ts +5 -0
  17. package/dist/providers/kimi-code.d.ts.map +1 -1
  18. package/dist/providers/kimi-code.js +18 -0
  19. package/dist/providers/kimi-code.js.map +1 -1
  20. package/dist/providers/zai.d.ts +5 -0
  21. package/dist/providers/zai.d.ts.map +1 -1
  22. package/dist/providers/zai.js +18 -0
  23. package/dist/providers/zai.js.map +1 -1
  24. package/dist/tools/gaia/index.d.ts +29 -15
  25. package/dist/tools/gaia/index.d.ts.map +1 -1
  26. package/dist/tools/gaia/index.js +1206 -274
  27. package/dist/tools/gaia/index.js.map +1 -1
  28. package/dist/tools/gaia/storage.d.ts +72 -0
  29. package/dist/tools/gaia/storage.d.ts.map +1 -0
  30. package/dist/tools/gaia/storage.js +344 -0
  31. package/dist/tools/gaia/storage.js.map +1 -0
  32. package/dist/tools/gaia/test-storage-manual.d.ts +6 -0
  33. package/dist/tools/gaia/test-storage-manual.d.ts.map +1 -0
  34. package/dist/tools/gaia/test-storage-manual.js +120 -0
  35. package/dist/tools/gaia/test-storage-manual.js.map +1 -0
  36. package/dist/tools/memoria/index.d.ts +25 -0
  37. package/dist/tools/memoria/index.d.ts.map +1 -0
  38. package/dist/tools/memoria/index.js +269 -0
  39. package/dist/tools/memoria/index.js.map +1 -0
  40. package/dist/tools/memoria/storage.d.ts +72 -0
  41. package/dist/tools/memoria/storage.d.ts.map +1 -0
  42. package/dist/tools/memoria/storage.js +344 -0
  43. package/dist/tools/memoria/storage.js.map +1 -0
  44. package/dist/tools/memoria/storage.test.d.ts +7 -0
  45. package/dist/tools/memoria/storage.test.d.ts.map +1 -0
  46. package/dist/tools/memoria/storage.test.js +350 -0
  47. package/dist/tools/memoria/storage.test.js.map +1 -0
  48. package/dist/tools/memoria/test-storage-manual.d.ts +6 -0
  49. package/dist/tools/memoria/test-storage-manual.d.ts.map +1 -0
  50. package/dist/tools/memoria/test-storage-manual.js +120 -0
  51. package/dist/tools/memoria/test-storage-manual.js.map +1 -0
  52. package/dist/types/index.d.ts +38 -0
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/docs/MIGRATION-GUIDE.md +771 -0
  55. package/package.json +2 -2
  56. package/docs/REFACTORING-PLAN.md +0 -374
  57. package/docs/TESTING-WITH-NATIVE-SWARM.md +0 -266
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Manual test script for Memoria Storage
3
+ * Run with: npm run build && node dist/tools/memoria/test-storage-manual.js
4
+ */
5
+ import { MemoriaStorage } from './storage.js';
6
+ import { mkdtempSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { tmpdir } from 'os';
9
+ async function runTests() {
10
+ console.log('๐Ÿงช Testing Memoria Storage (SQLite + FTS5)\n');
11
+ // Create temporary database
12
+ const tempDir = mkdtempSync(join(tmpdir(), 'memoria-test-'));
13
+ const dbPath = join(tempDir, 'test.db');
14
+ console.log(`๐Ÿ“ Database: ${dbPath}\n`);
15
+ const storage = new MemoriaStorage(dbPath);
16
+ try {
17
+ // Test 1: Save memories
18
+ console.log('โœ“ Test 1: Saving memories...');
19
+ const mem1 = storage.saveMemory({
20
+ tier: 'project',
21
+ content: 'Authentication uses JWT with RS256 algorithm',
22
+ tags: ['auth', 'jwt', 'security'],
23
+ related_files: ['src/auth/jwt.ts'],
24
+ });
25
+ console.log(` Saved: ${mem1.id}`);
26
+ const mem2 = storage.saveMemory({
27
+ tier: 'project',
28
+ content: 'JWT tokens expire after 1 hour. Refresh tokens in httpOnly cookies',
29
+ tags: ['jwt', 'cookies', 'security'],
30
+ related_files: ['src/auth/middleware.ts'],
31
+ });
32
+ console.log(` Saved: ${mem2.id}`);
33
+ const mem3 = storage.saveMemory({
34
+ tier: 'global',
35
+ content: 'Always validate JWT signatures. Never trust client tokens',
36
+ tags: ['security', 'jwt', 'best-practice'],
37
+ related_files: [],
38
+ });
39
+ console.log(` Saved: ${mem3.id}\n`);
40
+ // Test 2: Search with FTS5
41
+ console.log('โœ“ Test 2: Searching with FTS5 + BM25...');
42
+ const results = storage.search({ query: 'JWT authentication security' });
43
+ console.log(` Found ${results.length} results:`);
44
+ results.forEach((r, i) => {
45
+ console.log(` ${i + 1}. [score: ${r.score.toFixed(3)}] ${r.memory.content.substring(0, 60)}...`);
46
+ console.log(` - Relevance: ${r.relevance_score.toFixed(3)}, Recency: ${r.recency_score.toFixed(3)}, Tier: ${r.tier_score.toFixed(3)}`);
47
+ });
48
+ console.log();
49
+ // Test 3: Get memory by ID
50
+ console.log('โœ“ Test 3: Retrieving memory by ID...');
51
+ const retrieved = storage.getMemory(mem1.id);
52
+ if (retrieved) {
53
+ console.log(` Retrieved: ${retrieved.content}`);
54
+ console.log(` Access count: ${retrieved.access_count}`);
55
+ }
56
+ console.log();
57
+ // Test 4: Create links
58
+ console.log('โœ“ Test 4: Creating cross-memory links...');
59
+ storage.createLink({
60
+ from_memory_id: mem2.id,
61
+ to_memory_id: mem1.id,
62
+ link_type: 'depends_on',
63
+ });
64
+ console.log(` Linked: ${mem2.id} depends_on ${mem1.id}`);
65
+ const links = storage.getLinks(mem2.id);
66
+ console.log(` Links for ${mem2.id}:`);
67
+ console.log(` - depends_on: ${links.depends_on.length}`);
68
+ console.log();
69
+ // Test 5: Stats
70
+ console.log('โœ“ Test 5: Getting statistics...');
71
+ const stats = storage.getStats();
72
+ console.log(` Total memories: ${stats.total_memories}`);
73
+ console.log(` By tier:`);
74
+ Object.entries(stats.by_tier).forEach(([tier, count]) => {
75
+ if (count > 0)
76
+ console.log(` - ${tier}: ${count}`);
77
+ });
78
+ console.log(` Database size: ${stats.total_size_mb.toFixed(2)} MB`);
79
+ console.log(` Total links: ${stats.total_links}`);
80
+ console.log();
81
+ // Test 6: Performance test
82
+ console.log('โœ“ Test 6: Performance test (1000 memories)...');
83
+ const startInsert = Date.now();
84
+ for (let i = 0; i < 1000; i++) {
85
+ storage.saveMemory({
86
+ tier: i % 2 === 0 ? 'project' : 'session',
87
+ content: `Memory ${i}: JavaScript TypeScript React development with authentication and testing`,
88
+ tags: ['test', `tag${i % 10}`],
89
+ related_files: [`src/file${i}.ts`],
90
+ });
91
+ }
92
+ const insertTime = Date.now() - startInsert;
93
+ console.log(` Insert 1000 memories: ${insertTime}ms (${(insertTime / 1000).toFixed(1)}ms avg)`);
94
+ const startSearch = Date.now();
95
+ const searchResults = storage.search({ query: 'JavaScript TypeScript authentication', limit: 20 });
96
+ const searchTime = Date.now() - startSearch;
97
+ console.log(` Search 1000+ memories: ${searchTime}ms`);
98
+ console.log(` Results: ${searchResults.length}`);
99
+ console.log();
100
+ // Final stats
101
+ const finalStats = storage.getStats();
102
+ console.log('๐Ÿ“Š Final Statistics:');
103
+ console.log(` Total memories: ${finalStats.total_memories}`);
104
+ console.log(` Database size: ${finalStats.total_size_mb.toFixed(2)} MB`);
105
+ console.log();
106
+ console.log('โœ… All tests passed!');
107
+ }
108
+ catch (error) {
109
+ console.error('โŒ Test failed:', error);
110
+ throw error;
111
+ }
112
+ finally {
113
+ storage.close();
114
+ }
115
+ }
116
+ runTests().catch(err => {
117
+ console.error(err);
118
+ process.exit(1);
119
+ });
120
+ //# sourceMappingURL=test-storage-manual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-storage-manual.js","sourceRoot":"","sources":["../../../src/tools/gaia/test-storage-manual.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Memoria Module Tools
3
+ *
4
+ * Advanced memory system with SQLite + FTS5 + BM25 ranking.
5
+ * Named after Isaac Asimov's concept of collective memory preservation.
6
+ *
7
+ * Tools:
8
+ * - memoria_save: Save a new memory
9
+ * - memoria_search: Search with FTS5 + composite scoring
10
+ * - memoria_get: Get memory by ID
11
+ * - memoria_delete: Delete memory + cascade links
12
+ * - memoria_stats: Get statistics
13
+ *
14
+ * Foundation v2.0 - Gaia redesign with production-grade storage.
15
+ */
16
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
17
+ /**
18
+ * Register all Memoria tools with the MCP server
19
+ */
20
+ export declare function registerMemoriaTools(server: McpServer): void;
21
+ /**
22
+ * Cleanup function to close database connection
23
+ */
24
+ export declare function cleanupMemoria(): void;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/memoria/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkQ5D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Memoria Module Tools
3
+ *
4
+ * Advanced memory system with SQLite + FTS5 + BM25 ranking.
5
+ * Named after Isaac Asimov's concept of collective memory preservation.
6
+ *
7
+ * Tools:
8
+ * - memoria_save: Save a new memory
9
+ * - memoria_search: Search with FTS5 + composite scoring
10
+ * - memoria_get: Get memory by ID
11
+ * - memoria_delete: Delete memory + cascade links
12
+ * - memoria_stats: Get statistics
13
+ *
14
+ * Foundation v2.0 - Gaia redesign with production-grade storage.
15
+ */
16
+ import { z } from 'zod';
17
+ import { join } from 'path';
18
+ import { homedir } from 'os';
19
+ import { MemoriaStorage } from './storage.js';
20
+ // Global storage instance (lazy-initialized)
21
+ let storage = null;
22
+ function getStorage() {
23
+ if (!storage) {
24
+ const dbPath = join(homedir(), '.foundation', 'memoria.db');
25
+ storage = new MemoriaStorage(dbPath);
26
+ }
27
+ return storage;
28
+ }
29
+ /**
30
+ * Register all Memoria tools with the MCP server
31
+ */
32
+ export function registerMemoriaTools(server) {
33
+ // memoria_save
34
+ server.tool('memoria_save', 'Save a new memory with tier, content, tags, and related files. Returns the created memory with ID.', {
35
+ tier: z.enum(['session', 'project', 'global', 'note', 'observation'])
36
+ .describe('Memory tier: session (ephemeral), project (cwd), global (user-wide), note (manual), observation (autonomous)'),
37
+ content: z.string().describe('Memory content (what to remember)'),
38
+ tags: z.array(z.string()).optional().describe('Tags for categorization (optional)'),
39
+ related_files: z.array(z.string()).optional().describe('Related file paths (optional)'),
40
+ session_id: z.string().optional().describe('Session ID for session-tier memories (optional)'),
41
+ project_path: z.string().optional().describe('Project path for project-tier memories (optional)'),
42
+ metadata: z.record(z.any()).optional().describe('Additional structured metadata (optional)'),
43
+ }, async ({ tier, content, tags = [], related_files = [], session_id, project_path, metadata }) => {
44
+ try {
45
+ const storage = getStorage();
46
+ const memory = storage.saveMemory({
47
+ tier,
48
+ content,
49
+ tags,
50
+ related_files,
51
+ session_id,
52
+ project_path,
53
+ metadata,
54
+ });
55
+ return {
56
+ content: [{
57
+ type: 'text',
58
+ text: JSON.stringify({
59
+ success: true,
60
+ memory: {
61
+ id: memory.id,
62
+ tier: memory.tier,
63
+ content: memory.content,
64
+ tags: memory.tags,
65
+ related_files: memory.related_files,
66
+ created_at: memory.created_at,
67
+ },
68
+ }, null, 2),
69
+ }],
70
+ };
71
+ }
72
+ catch (error) {
73
+ return {
74
+ content: [{
75
+ type: 'text',
76
+ text: `Error saving memory: ${error instanceof Error ? error.message : String(error)}`,
77
+ }],
78
+ isError: true,
79
+ };
80
+ }
81
+ });
82
+ // memoria_search
83
+ server.tool('memoria_search', 'Search memories using FTS5 full-text search with composite scoring (BM25 + recency + tier + proximity + frequency). Returns ranked results.', {
84
+ query: z.string().describe('Search query (supports FTS5 syntax: "word1 word2", "phrase", word*)'),
85
+ tiers: z.array(z.enum(['session', 'project', 'global', 'note', 'observation'])).optional()
86
+ .describe('Filter by tiers (optional)'),
87
+ limit: z.number().optional().describe('Maximum results to return (default: 20, max: 100)'),
88
+ current_file: z.string().optional().describe('Current file path for proximity scoring (optional)'),
89
+ project_path: z.string().optional().describe('Current project path for context (optional)'),
90
+ }, async ({ query, tiers, limit = 20, current_file, project_path }) => {
91
+ try {
92
+ const storage = getStorage();
93
+ const results = storage.search({
94
+ query,
95
+ tiers,
96
+ limit: Math.min(limit, 100),
97
+ context: current_file || project_path ? { current_file, project_path } : undefined,
98
+ });
99
+ return {
100
+ content: [{
101
+ type: 'text',
102
+ text: JSON.stringify({
103
+ success: true,
104
+ count: results.length,
105
+ results: results.map(r => ({
106
+ id: r.memory.id,
107
+ tier: r.memory.tier,
108
+ content: r.memory.content,
109
+ tags: r.memory.tags,
110
+ related_files: r.memory.related_files,
111
+ created_at: r.memory.created_at,
112
+ score: r.score,
113
+ score_breakdown: {
114
+ relevance: r.relevance_score,
115
+ recency: r.recency_score,
116
+ tier: r.tier_score,
117
+ proximity: r.proximity_score,
118
+ frequency: r.frequency_score,
119
+ },
120
+ })),
121
+ }, null, 2),
122
+ }],
123
+ };
124
+ }
125
+ catch (error) {
126
+ return {
127
+ content: [{
128
+ type: 'text',
129
+ text: `Error searching memories: ${error instanceof Error ? error.message : String(error)}`,
130
+ }],
131
+ isError: true,
132
+ };
133
+ }
134
+ });
135
+ // memoria_get
136
+ server.tool('memoria_get', 'Get a memory by ID. Increments access count and updates last accessed timestamp.', {
137
+ id: z.string().describe('Memory ID (starts with "mem_")'),
138
+ }, async ({ id }) => {
139
+ try {
140
+ const storage = getStorage();
141
+ const memory = storage.getMemory(id);
142
+ if (!memory) {
143
+ return {
144
+ content: [{
145
+ type: 'text',
146
+ text: JSON.stringify({
147
+ success: false,
148
+ error: `Memory not found: ${id}`,
149
+ }, null, 2),
150
+ }],
151
+ };
152
+ }
153
+ return {
154
+ content: [{
155
+ type: 'text',
156
+ text: JSON.stringify({
157
+ success: true,
158
+ memory: {
159
+ id: memory.id,
160
+ tier: memory.tier,
161
+ content: memory.content,
162
+ tags: memory.tags,
163
+ related_files: memory.related_files,
164
+ session_id: memory.session_id,
165
+ project_path: memory.project_path,
166
+ created_at: memory.created_at,
167
+ accessed_at: memory.accessed_at,
168
+ access_count: memory.access_count,
169
+ metadata: memory.metadata,
170
+ },
171
+ }, null, 2),
172
+ }],
173
+ };
174
+ }
175
+ catch (error) {
176
+ return {
177
+ content: [{
178
+ type: 'text',
179
+ text: `Error getting memory: ${error instanceof Error ? error.message : String(error)}`,
180
+ }],
181
+ isError: true,
182
+ };
183
+ }
184
+ });
185
+ // memoria_delete
186
+ server.tool('memoria_delete', 'Delete a memory by ID. Automatically deletes all associated links (CASCADE).', {
187
+ id: z.string().describe('Memory ID to delete'),
188
+ }, async ({ id }) => {
189
+ try {
190
+ const storage = getStorage();
191
+ const result = storage.deleteMemory(id);
192
+ if (!result.success) {
193
+ return {
194
+ content: [{
195
+ type: 'text',
196
+ text: JSON.stringify({
197
+ success: false,
198
+ error: `Memory not found: ${id}`,
199
+ }, null, 2),
200
+ }],
201
+ };
202
+ }
203
+ return {
204
+ content: [{
205
+ type: 'text',
206
+ text: JSON.stringify({
207
+ success: true,
208
+ deleted_memory_id: id,
209
+ deleted_links: result.deleted_links,
210
+ }, null, 2),
211
+ }],
212
+ };
213
+ }
214
+ catch (error) {
215
+ return {
216
+ content: [{
217
+ type: 'text',
218
+ text: `Error deleting memory: ${error instanceof Error ? error.message : String(error)}`,
219
+ }],
220
+ isError: true,
221
+ };
222
+ }
223
+ });
224
+ // memoria_stats
225
+ server.tool('memoria_stats', 'Get Memoria statistics: total memories, breakdown by tier, links, database size, age range.', {}, async () => {
226
+ try {
227
+ const storage = getStorage();
228
+ const stats = storage.getStats();
229
+ return {
230
+ content: [{
231
+ type: 'text',
232
+ text: JSON.stringify({
233
+ success: true,
234
+ stats: {
235
+ total_memories: stats.total_memories,
236
+ by_tier: stats.by_tier,
237
+ total_links: stats.total_links,
238
+ database_size_mb: parseFloat(stats.total_size_mb.toFixed(2)),
239
+ oldest_memory: stats.oldest_memory,
240
+ newest_memory: stats.newest_memory,
241
+ age_range_days: stats.oldest_memory > 0
242
+ ? Math.floor((stats.newest_memory - stats.oldest_memory) / (1000 * 60 * 60 * 24))
243
+ : 0,
244
+ },
245
+ }, null, 2),
246
+ }],
247
+ };
248
+ }
249
+ catch (error) {
250
+ return {
251
+ content: [{
252
+ type: 'text',
253
+ text: `Error getting stats: ${error instanceof Error ? error.message : String(error)}`,
254
+ }],
255
+ isError: true,
256
+ };
257
+ }
258
+ });
259
+ }
260
+ /**
261
+ * Cleanup function to close database connection
262
+ */
263
+ export function cleanupMemoria() {
264
+ if (storage) {
265
+ storage.close();
266
+ storage = null;
267
+ }
268
+ }
269
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/memoria/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAmB,MAAM,cAAc,CAAC;AAE/D,6CAA6C;AAC7C,IAAI,OAAO,GAA0B,IAAI,CAAC;AAE1C,SAAS,UAAU;IACjB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAC5D,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,eAAe;IACf,MAAM,CAAC,IAAI,CACT,cAAc,EACd,oGAAoG,EACpG;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;aAClE,QAAQ,CAAC,8GAA8G,CAAC;QAC3H,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACjE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACnF,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACvF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAC7F,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QACjG,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC7F,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7F,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;gBAChC,IAAI;gBACJ,OAAO;gBACP,IAAI;gBACJ,aAAa;gBACb,UAAU;gBACV,YAAY;gBACZ,QAAQ;aACT,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,IAAI;4BACb,MAAM,EAAE;gCACN,EAAE,EAAE,MAAM,CAAC,EAAE;gCACb,IAAI,EAAE,MAAM,CAAC,IAAI;gCACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gCACjB,aAAa,EAAE,MAAM,CAAC,aAAa;gCACnC,UAAU,EAAE,MAAM,CAAC,UAAU;6BAC9B;yBACF,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACvF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,6IAA6I,EAC7I;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;QACjG,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;aACvF,QAAQ,CAAC,4BAA4B,CAAC;QACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC1F,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAClG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KAC5F,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC7B,KAAK;gBACL,KAAK;gBACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;gBAC3B,OAAO,EAAE,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;aACnF,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE,OAAO,CAAC,MAAM;4BACrB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCACzB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;gCACf,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;gCACnB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;gCACzB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;gCACnB,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa;gCACrC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;gCAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;gCACd,eAAe,EAAE;oCACf,SAAS,EAAE,CAAC,CAAC,eAAe;oCAC5B,OAAO,EAAE,CAAC,CAAC,aAAa;oCACxB,IAAI,EAAE,CAAC,CAAC,UAAU;oCAClB,SAAS,EAAE,CAAC,CAAC,eAAe;oCAC5B,SAAS,EAAE,CAAC,CAAC,eAAe;iCAC7B;6BACF,CAAC,CAAC;yBACJ,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC5F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,cAAc;IACd,MAAM,CAAC,IAAI,CACT,aAAa,EACb,kFAAkF,EAClF;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC1D,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAErC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE,qBAAqB,EAAE,EAAE;6BACjC,EAAE,IAAI,EAAE,CAAC,CAAC;yBACZ,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,IAAI;4BACb,MAAM,EAAE;gCACN,EAAE,EAAE,MAAM,CAAC,EAAE;gCACb,IAAI,EAAE,MAAM,CAAC,IAAI;gCACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gCACjB,aAAa,EAAE,MAAM,CAAC,aAAa;gCACnC,UAAU,EAAE,MAAM,CAAC,UAAU;gCAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;gCACjC,UAAU,EAAE,MAAM,CAAC,UAAU;gCAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;gCAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;gCACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;6BAC1B;yBACF,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACxF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,8EAA8E,EAC9E;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KAC/C,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE,qBAAqB,EAAE,EAAE;6BACjC,EAAE,IAAI,EAAE,CAAC,CAAC;yBACZ,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,IAAI;4BACb,iBAAiB,EAAE,EAAE;4BACrB,aAAa,EAAE,MAAM,CAAC,aAAa;yBACpC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACzF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,IAAI,CACT,eAAe,EACf,6FAA6F,EAC7F,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEjC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE;gCACL,cAAc,EAAE,KAAK,CAAC,cAAc;gCACpC,OAAO,EAAE,KAAK,CAAC,OAAO;gCACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gCAC9B,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gCAC5D,aAAa,EAAE,KAAK,CAAC,aAAa;gCAClC,aAAa,EAAE,KAAK,CAAC,aAAa;gCAClC,cAAc,EAAE,KAAK,CAAC,aAAa,GAAG,CAAC;oCACrC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;oCACjF,CAAC,CAAC,CAAC;6BACN;yBACF,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACvF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Memoria Storage Layer
3
+ *
4
+ * SQLite + FTS5 storage for Foundation's advanced memory system.
5
+ * Provides 5-tier memory hierarchy with full-text search and BM25 ranking.
6
+ */
7
+ export type MemoryTier = 'session' | 'project' | 'global' | 'note' | 'observation';
8
+ export type LinkType = 'depends_on' | 'extends' | 'reverts' | 'related' | 'contradicts';
9
+ export interface Memory {
10
+ id: string;
11
+ tier: MemoryTier;
12
+ content: string;
13
+ tags: string[];
14
+ related_files: string[];
15
+ session_id?: string;
16
+ project_path?: string;
17
+ created_at: number;
18
+ accessed_at: number;
19
+ access_count: number;
20
+ metadata?: Record<string, any>;
21
+ }
22
+ export interface MemoryLink {
23
+ from_memory_id: string;
24
+ to_memory_id: string;
25
+ link_type: LinkType;
26
+ created_at: number;
27
+ }
28
+ export interface SearchResult {
29
+ memory: Memory;
30
+ score: number;
31
+ relevance_score: number;
32
+ recency_score: number;
33
+ tier_score: number;
34
+ proximity_score: number;
35
+ frequency_score: number;
36
+ }
37
+ export interface SearchOptions {
38
+ query: string;
39
+ tiers?: MemoryTier[];
40
+ limit?: number;
41
+ context?: {
42
+ current_file?: string;
43
+ project_path?: string;
44
+ };
45
+ }
46
+ export interface MemoriaStats {
47
+ total_memories: number;
48
+ by_tier: Record<MemoryTier, number>;
49
+ total_links: number;
50
+ total_size_mb: number;
51
+ oldest_memory: number;
52
+ newest_memory: number;
53
+ }
54
+ export declare class MemoriaStorage {
55
+ private db;
56
+ private dbPath;
57
+ constructor(dbPath: string);
58
+ private initSchema;
59
+ saveMemory(input: Omit<Memory, 'id' | 'created_at' | 'accessed_at' | 'access_count'>): Memory;
60
+ getMemory(id: string): Memory | null;
61
+ deleteMemory(id: string): {
62
+ success: boolean;
63
+ deleted_links: number;
64
+ };
65
+ search(options: SearchOptions): SearchResult[];
66
+ createLink(link: Omit<MemoryLink, 'created_at'>): MemoryLink;
67
+ getLinks(memoryId: string): Record<LinkType, Memory[]>;
68
+ getStats(): MemoriaStats;
69
+ private rowToMemory;
70
+ close(): void;
71
+ }
72
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/tools/memoria/storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAExF,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IAGxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IAGrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAqB1B,OAAO,CAAC,UAAU;IAkFlB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC,GAAG,MAAM;IAgC7F,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAoBpC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAsBrE,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,EAAE;IA0F9C,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,UAAU;IAiB5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IA8BtD,QAAQ,IAAI,YAAY;IAoDxB,OAAO,CAAC,WAAW;IAgBnB,KAAK,IAAI,IAAI;CAGd"}