kratos-memory 1.4.0 → 1.5.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 (36) hide show
  1. package/README.md +5 -8
  2. package/dist/cli/capture-handler.d.ts.map +1 -1
  3. package/dist/cli/capture-handler.js +12 -3
  4. package/dist/cli/capture-handler.js.map +1 -1
  5. package/dist/cli/commands/create.d.ts +5 -0
  6. package/dist/cli/commands/create.d.ts.map +1 -0
  7. package/dist/cli/commands/create.js +42 -0
  8. package/dist/cli/commands/create.js.map +1 -0
  9. package/dist/cli/commands/save.d.ts.map +1 -1
  10. package/dist/cli/commands/save.js +13 -0
  11. package/dist/cli/commands/save.js.map +1 -1
  12. package/dist/cli/commands/status.d.ts.map +1 -1
  13. package/dist/cli/commands/status.js +0 -2
  14. package/dist/cli/commands/status.js.map +1 -1
  15. package/dist/cli/commands/switch.d.ts.map +1 -1
  16. package/dist/cli/commands/switch.js +2 -1
  17. package/dist/cli/commands/switch.js.map +1 -1
  18. package/dist/cli/index.js +11 -1
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/memory-server/database.d.ts +2 -1
  21. package/dist/memory-server/database.d.ts.map +1 -1
  22. package/dist/memory-server/database.js +80 -39
  23. package/dist/memory-server/database.js.map +1 -1
  24. package/dist/project-manager.d.ts +13 -34
  25. package/dist/project-manager.d.ts.map +1 -1
  26. package/dist/project-manager.js +101 -70
  27. package/dist/project-manager.js.map +1 -1
  28. package/package.json +3 -2
  29. package/dist/security/data-retention.d.ts +0 -104
  30. package/dist/security/data-retention.d.ts.map +0 -1
  31. package/dist/security/data-retention.js +0 -444
  32. package/dist/security/data-retention.js.map +0 -1
  33. package/dist/security/encryption.d.ts +0 -48
  34. package/dist/security/encryption.d.ts.map +0 -1
  35. package/dist/security/encryption.js +0 -131
  36. package/dist/security/encryption.js.map +0 -1
@@ -2,65 +2,55 @@ import path from 'path';
2
2
  import fs from 'node:fs';
3
3
  import crypto from 'crypto';
4
4
  /**
5
- * Smart Project Manager - Handles project isolation and auto-detection
6
- * Optimized for CLI: no eager loading, minimal I/O
5
+ * Smart Project Manager - Registry-based project detection
6
+ * No filesystem marker sniffing Kratos remembers where it's been activated.
7
7
  */
8
8
  export class ProjectManager {
9
9
  kratosHome;
10
10
  currentProject = null;
11
- projectsCache = null; // Lazy — only loaded when needed
11
+ projectsCache = null;
12
12
  constructor() {
13
13
  this.kratosHome = path.join(process.env.HOME || process.env.USERPROFILE || '', '.kratos');
14
- // Only mkdir if it doesn't exist (avoid sync I/O when possible)
15
14
  if (!fs.existsSync(this.kratosHome)) {
16
15
  fs.mkdirSync(this.kratosHome, { recursive: true });
17
16
  }
18
- // DON'T load projects cache here — load lazily when needed
19
17
  }
20
18
  /**
21
- * Auto-detect project from current working directory
22
- * Creates a project ID based on the directory path
19
+ * Auto-detect project from current working directory.
20
+ * 1. Check if cwd (or an ancestor) is already a registered kratos project
21
+ * 2. If yes, use the deepest (most specific) match
22
+ * 3. If no, register cwd as a new project
23
23
  */
24
24
  async detectProject(workingDir, options = {}) {
25
25
  const requestedPath = workingDir || process.cwd();
26
26
  const dir = this.resolveRequestedPath(requestedPath);
27
27
  let projectRoot = dir;
28
28
  if (!options.exactPath) {
29
- // Look for project markers — use sync fs.existsSync (faster than async for local files)
30
- const markers = ['.git', 'package.json', 'Cargo.toml', 'go.mod', 'pyproject.toml', '.kratos'];
31
- let found = false;
32
- let currentDir = dir;
33
- while (currentDir !== path.dirname(currentDir)) {
34
- for (const marker of markers) {
35
- if (fs.existsSync(path.join(currentDir, marker))) {
36
- projectRoot = currentDir;
37
- found = true;
38
- break;
39
- }
40
- }
41
- if (found)
42
- break;
43
- currentDir = path.dirname(currentDir);
29
+ const registered = this.findRegisteredProjectForPath(dir);
30
+ if (registered) {
31
+ projectRoot = registered.root;
44
32
  }
33
+ // No registered project found — projectRoot stays as cwd
45
34
  }
46
35
  projectRoot = this.normalizeProjectPath(projectRoot);
47
36
  const projectId = this.generateProjectId(projectRoot);
48
37
  const projectName = path.basename(projectRoot);
49
- // Check project dir directly on disk — skip loading entire cache
50
38
  const projectDir = this.getProjectDir(projectId);
51
39
  const projectJsonPath = path.join(projectDir, 'project.json');
52
40
  let project;
53
41
  if (fs.existsSync(projectJsonPath)) {
54
- // Known project — read just this one project's metadata
55
42
  const raw = JSON.parse(fs.readFileSync(projectJsonPath, 'utf-8'));
56
43
  project = {
57
44
  ...raw,
58
45
  createdAt: new Date(raw.createdAt),
59
46
  lastAccessed: new Date()
60
47
  };
48
+ // Persist updated lastAccessed
49
+ fs.writeFileSync(projectJsonPath, JSON.stringify(project, null, 2));
50
+ // Keep in-memory cache and projects.json in sync
51
+ this.ensureProjectInCache(project);
61
52
  }
62
53
  else {
63
- // New project
64
54
  project = {
65
55
  id: projectId,
66
56
  name: projectName,
@@ -68,11 +58,8 @@ export class ProjectManager {
68
58
  createdAt: new Date(),
69
59
  lastAccessed: new Date()
70
60
  };
71
- // Create isolated project directory
72
61
  fs.mkdirSync(projectDir, { recursive: true });
73
- // Save project metadata
74
62
  fs.writeFileSync(projectJsonPath, JSON.stringify(project, null, 2));
75
- // Update the global projects cache file (append this project)
76
63
  this.ensureProjectInCache(project);
77
64
  }
78
65
  this.currentProject = project;
@@ -82,16 +69,18 @@ export class ProjectManager {
82
69
  * Switch to a different project
83
70
  */
84
71
  async switchProject(projectIdOrPath) {
85
- // Check if it's a project ID — look in cache
86
72
  const cache = this.getProjectsCache();
87
73
  let project = cache.get(projectIdOrPath);
88
74
  if (!project) {
89
75
  const normalizedTarget = projectIdOrPath.trim().toLowerCase();
90
- // Allow switching by human-readable project name from `kratos status`
91
- project = Array.from(cache.values()).find(candidate => candidate.name.toLowerCase() === normalizedTarget);
76
+ const matches = Array.from(cache.values()).filter(candidate => candidate.name.toLowerCase() === normalizedTarget);
77
+ if (matches.length > 1) {
78
+ const roots = matches.map(m => ` ${m.id} → ${m.root}`).join('\n');
79
+ throw new Error(`Ambiguous project name "${projectIdOrPath}". Multiple matches:\n${roots}\nUse the project ID or path instead.`);
80
+ }
81
+ project = matches[0] || undefined;
92
82
  }
93
83
  if (!project) {
94
- // Maybe it's a path
95
84
  if (fs.existsSync(projectIdOrPath)) {
96
85
  project = await this.detectProject(projectIdOrPath, { exactPath: true });
97
86
  }
@@ -105,9 +94,34 @@ export class ProjectManager {
105
94
  return project;
106
95
  }
107
96
  /**
108
- * Get the isolated directory for a project
109
- * This is where ALL project data lives - memories, concepts, etc.
97
+ * Find the deepest registered project whose root contains dir.
98
+ * $HOME and / are exact-match only they never swallow subdirectories.
110
99
  */
100
+ findRegisteredProjectForPath(dir) {
101
+ const homeDir = this.normalizeProjectPath(process.env.HOME || process.env.USERPROFILE || '');
102
+ const cache = this.getProjectsCache();
103
+ let best = null;
104
+ let bestLen = -1;
105
+ for (const project of cache.values()) {
106
+ const root = project.root;
107
+ // $HOME and / are exact-match only
108
+ if (root === homeDir || root === '/') {
109
+ if (dir === root && root.length > bestLen) {
110
+ best = project;
111
+ bestLen = root.length;
112
+ }
113
+ continue;
114
+ }
115
+ // Check if dir is equal to or a descendant of this project root
116
+ if (dir === root || dir.startsWith(root + path.sep)) {
117
+ if (root.length > bestLen) {
118
+ best = project;
119
+ bestLen = root.length;
120
+ }
121
+ }
122
+ }
123
+ return best;
124
+ }
111
125
  getProjectDir(projectId) {
112
126
  const id = projectId || this.currentProject?.id;
113
127
  if (!id) {
@@ -115,30 +129,17 @@ export class ProjectManager {
115
129
  }
116
130
  return path.join(this.kratosHome, 'projects', id);
117
131
  }
118
- /**
119
- * Get database path for current project
120
- * COMPLETELY ISOLATED - no cross-contamination possible
121
- */
122
132
  getDatabasePath(dbName) {
123
133
  const projectDir = this.getProjectDir();
124
134
  return path.join(projectDir, 'databases', `${dbName}.db`);
125
135
  }
126
- /**
127
- * List all known projects (loads cache on first call)
128
- */
129
136
  listProjects() {
130
137
  return Array.from(this.getProjectsCache().values())
131
138
  .sort((a, b) => b.lastAccessed.getTime() - a.lastAccessed.getTime());
132
139
  }
133
- /**
134
- * Get current active project
135
- */
136
140
  getCurrentProject() {
137
141
  return this.currentProject;
138
142
  }
139
- /**
140
- * Clean up old project data (optional)
141
- */
142
143
  async cleanupProject(projectId, options = {}) {
143
144
  const projectDir = this.getProjectDir(projectId);
144
145
  if (!options.keepMemories) {
@@ -154,12 +155,9 @@ export class ProjectManager {
154
155
  }
155
156
  }
156
157
  }
157
- /**
158
- * Generate stable project ID from path
159
- */
160
158
  generateProjectId(projectPath) {
161
- // Use hash of normalized path for stable ID
162
- const normalized = this.normalizeProjectPath(projectPath).toLowerCase();
159
+ // Don't lowercase preserve case sensitivity for filesystems that distinguish it
160
+ const normalized = this.normalizeProjectPath(projectPath);
163
161
  const hash = crypto.createHash('sha256').update(normalized).digest('hex');
164
162
  return `proj_${hash.substring(0, 12)}`;
165
163
  }
@@ -182,13 +180,15 @@ export class ProjectManager {
182
180
  }
183
181
  }
184
182
  /**
185
- * Get projects cache — lazy loaded on first access
183
+ * Get projects cache — lazy loaded on first access.
184
+ * If projects.json is corrupted, rebuild from individual project.json files.
186
185
  */
187
186
  getProjectsCache() {
188
187
  if (this.projectsCache)
189
188
  return this.projectsCache;
190
189
  this.projectsCache = new Map();
191
190
  const cacheFile = path.join(this.kratosHome, 'projects.json');
191
+ let loaded = false;
192
192
  if (fs.existsSync(cacheFile)) {
193
193
  try {
194
194
  const cache = JSON.parse(fs.readFileSync(cacheFile, 'utf-8'));
@@ -199,17 +199,51 @@ export class ProjectManager {
199
199
  lastAccessed: new Date(project.lastAccessed)
200
200
  });
201
201
  }
202
+ loaded = true;
202
203
  }
203
204
  catch {
204
- // Corrupted cache start fresh
205
+ // Corrupted — fall through to rebuild
205
206
  }
206
207
  }
208
+ if (!loaded) {
209
+ this.rebuildCacheFromDisk();
210
+ }
207
211
  return this.projectsCache;
208
212
  }
209
213
  /**
210
- * Ensure a single project is registered in the global cache file
211
- * (append without loading all projects into memory)
214
+ * Rebuild projects.json by scanning per-project metadata files on disk
212
215
  */
216
+ rebuildCacheFromDisk() {
217
+ const projectsDir = path.join(this.kratosHome, 'projects');
218
+ if (!fs.existsSync(projectsDir))
219
+ return;
220
+ try {
221
+ const entries = fs.readdirSync(projectsDir, { withFileTypes: true });
222
+ for (const entry of entries) {
223
+ if (!entry.isDirectory())
224
+ continue;
225
+ const pjPath = path.join(projectsDir, entry.name, 'project.json');
226
+ if (!fs.existsSync(pjPath))
227
+ continue;
228
+ try {
229
+ const raw = JSON.parse(fs.readFileSync(pjPath, 'utf-8'));
230
+ this.projectsCache.set(raw.id, {
231
+ ...raw,
232
+ createdAt: new Date(raw.createdAt),
233
+ lastAccessed: new Date(raw.lastAccessed)
234
+ });
235
+ }
236
+ catch {
237
+ // Skip corrupted individual project
238
+ }
239
+ }
240
+ }
241
+ catch {
242
+ // projectsDir unreadable — nothing to rebuild
243
+ }
244
+ // Persist the rebuilt cache
245
+ this.saveProjectsCache();
246
+ }
213
247
  ensureProjectInCache(project) {
214
248
  const cacheFile = path.join(this.kratosHome, 'projects.json');
215
249
  let cache = { projects: [], lastUpdated: new Date() };
@@ -221,16 +255,20 @@ export class ProjectManager {
221
255
  // Corrupted — start fresh
222
256
  }
223
257
  }
224
- // Only add if not already there
225
- if (!cache.projects.some((p) => p.id === project.id)) {
258
+ const idx = cache.projects.findIndex((p) => p.id === project.id);
259
+ if (idx >= 0) {
260
+ cache.projects[idx] = project;
261
+ }
262
+ else {
226
263
  cache.projects.push(project);
227
- cache.lastUpdated = new Date();
228
- fs.writeFileSync(cacheFile, JSON.stringify(cache, null, 2));
264
+ }
265
+ cache.lastUpdated = new Date();
266
+ fs.writeFileSync(cacheFile, JSON.stringify(cache, null, 2));
267
+ // Also update in-memory cache if loaded
268
+ if (this.projectsCache) {
269
+ this.projectsCache.set(project.id, project);
229
270
  }
230
271
  }
231
- /**
232
- * Save projects cache to disk
233
- */
234
272
  saveProjectsCache() {
235
273
  const cacheFile = path.join(this.kratosHome, 'projects.json');
236
274
  const cache = {
@@ -244,19 +282,12 @@ export class ProjectManager {
244
282
  // Silently fail — non-critical
245
283
  }
246
284
  }
247
- /**
248
- * Get current Kratos home directory
249
- */
250
285
  getKratosHome() {
251
286
  return this.kratosHome;
252
287
  }
253
- /**
254
- * Dynamically update Kratos home directory
255
- */
256
288
  async updateKratosHome(newPath) {
257
289
  this.kratosHome = newPath;
258
290
  fs.mkdirSync(this.kratosHome, { recursive: true });
259
- // Reset cache so it reloads from new location
260
291
  this.projectsCache = null;
261
292
  }
262
293
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-manager.js","sourceRoot":"","sources":["../src/project-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-manager.js","sourceRoot":"","sources":["../src/project-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kratos-memory",
3
- "version": "1.4.0",
4
- "description": "Persistent memory for AI coding agents — CLI-first, encrypted, local",
3
+ "version": "1.5.0",
4
+ "description": "Persistent memory for AI coding agents — CLI-first, local, zero network calls",
5
5
  "main": "dist/cli/index.js",
6
6
  "type": "module",
7
7
  "bin": {
@@ -17,6 +17,7 @@
17
17
  "dev": "tsx src/cli/index.ts",
18
18
  "start": "node dist/cli/index.js",
19
19
  "test": "npm run build && node --test tests/*.test.mjs",
20
+ "postinstall": "npm rebuild better-sqlite3 || exit 0",
20
21
  "prepublishOnly": "npm run build"
21
22
  },
22
23
  "keywords": [
@@ -1,104 +0,0 @@
1
- export interface RetentionPolicy {
2
- id: string;
3
- name: string;
4
- description: string;
5
- retentionDays: number;
6
- archiveAfterDays?: number;
7
- deleteAfterDays: number;
8
- tags?: string[];
9
- importance?: number;
10
- createdAt: Date;
11
- }
12
- export interface DeletionRequest {
13
- id: string;
14
- projectId: string;
15
- userId: string;
16
- targetType: 'memory' | 'project' | 'user';
17
- targetId: string;
18
- reason: string;
19
- scheduledAt: Date;
20
- executedAt?: Date;
21
- status: 'pending' | 'completed' | 'failed';
22
- }
23
- export interface ArchiveEntry {
24
- id: string;
25
- projectId: string;
26
- memoryId: string;
27
- encryptedData: string;
28
- archivedAt: Date;
29
- expiresAt: Date;
30
- }
31
- /**
32
- * Data retention and deletion management
33
- */
34
- export declare class DataRetentionManager {
35
- private db;
36
- private archiveDb;
37
- private encryption;
38
- private projectId;
39
- private policies;
40
- constructor(projectRoot: string, projectId: string);
41
- /**
42
- * Initialize archive database
43
- */
44
- private initializeArchiveDb;
45
- /**
46
- * Load retention policies
47
- */
48
- private loadPolicies;
49
- /**
50
- * Apply retention policy
51
- */
52
- applyPolicy(memoryId: string, policyId?: string): void;
53
- /**
54
- * Archive old memories
55
- */
56
- archiveOldMemories(): Promise<number>;
57
- /**
58
- * Archive a single memory
59
- */
60
- private archiveMemory;
61
- /**
62
- * Restore from archive
63
- */
64
- restoreFromArchive(memoryId: string): Promise<boolean>;
65
- /**
66
- * Delete data permanently (GDPR right to erasure)
67
- */
68
- deleteData(request: {
69
- targetType: 'memory' | 'project' | 'user';
70
- targetId: string;
71
- userId: string;
72
- reason: string;
73
- }): Promise<void>;
74
- /**
75
- * Delete a single memory
76
- */
77
- private deleteMemory;
78
- /**
79
- * Delete entire project
80
- */
81
- private deleteProject;
82
- /**
83
- * Delete all user data (GDPR)
84
- */
85
- private deleteUserData;
86
- /**
87
- * Export data for GDPR compliance
88
- */
89
- exportUserData(userId: string): Promise<string>;
90
- /**
91
- * Start background cleanup scheduler
92
- */
93
- private startCleanupScheduler;
94
- /**
95
- * Run cleanup tasks
96
- */
97
- private runCleanup;
98
- /**
99
- * Get retention statistics
100
- */
101
- getStats(): any;
102
- close(): void;
103
- }
104
- //# sourceMappingURL=data-retention.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-retention.d.ts","sourceRoot":"","sources":["../../src/security/data-retention.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAA2C;gBAE/C,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAuBlD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAgDpB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,IAAI;IAqBjE;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAqC3C;;OAEG;YACW,aAAa;IAuC3B;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6C5D;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE;QACxB,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;QAC1C,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCjB;;OAEG;YACW,YAAY;IAwB1B;;OAEG;YACW,aAAa;IAuB3B;;OAEG;YACW,cAAc;IAa5B;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoErD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;YACW,UAAU;IAyCxB;;OAEG;IACH,QAAQ,IAAI,GAAG;IAqBf,KAAK,IAAI,IAAI;CAId"}