claude-cortex 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +291 -0
- package/dist/api/events.d.ts +134 -0
- package/dist/api/events.d.ts.map +1 -0
- package/dist/api/events.js +73 -0
- package/dist/api/events.js.map +1 -0
- package/dist/api/visualization-server.d.ts +11 -0
- package/dist/api/visualization-server.d.ts.map +1 -0
- package/dist/api/visualization-server.js +653 -0
- package/dist/api/visualization-server.js.map +1 -0
- package/dist/context/project-context.d.ts +57 -0
- package/dist/context/project-context.d.ts.map +1 -0
- package/dist/context/project-context.js +135 -0
- package/dist/context/project-context.js.map +1 -0
- package/dist/database/init.d.ts +49 -0
- package/dist/database/init.d.ts.map +1 -0
- package/dist/database/init.js +336 -0
- package/dist/database/init.js.map +1 -0
- package/dist/embeddings/generator.d.ts +20 -0
- package/dist/embeddings/generator.d.ts.map +1 -0
- package/dist/embeddings/generator.js +77 -0
- package/dist/embeddings/generator.js.map +1 -0
- package/dist/embeddings/index.d.ts +2 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +2 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/errors.d.ts +74 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +131 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/activation.d.ts +69 -0
- package/dist/memory/activation.d.ts.map +1 -0
- package/dist/memory/activation.js +168 -0
- package/dist/memory/activation.js.map +1 -0
- package/dist/memory/consolidate.d.ts +96 -0
- package/dist/memory/consolidate.d.ts.map +1 -0
- package/dist/memory/consolidate.js +400 -0
- package/dist/memory/consolidate.js.map +1 -0
- package/dist/memory/contradiction.d.ts +69 -0
- package/dist/memory/contradiction.d.ts.map +1 -0
- package/dist/memory/contradiction.js +286 -0
- package/dist/memory/contradiction.js.map +1 -0
- package/dist/memory/decay.d.ts +62 -0
- package/dist/memory/decay.d.ts.map +1 -0
- package/dist/memory/decay.js +184 -0
- package/dist/memory/decay.js.map +1 -0
- package/dist/memory/salience.d.ts +36 -0
- package/dist/memory/salience.d.ts.map +1 -0
- package/dist/memory/salience.js +200 -0
- package/dist/memory/salience.js.map +1 -0
- package/dist/memory/similarity.d.ts +57 -0
- package/dist/memory/similarity.d.ts.map +1 -0
- package/dist/memory/similarity.js +114 -0
- package/dist/memory/similarity.js.map +1 -0
- package/dist/memory/store.d.ts +170 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +973 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/types.d.ts +91 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +30 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +466 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/context.d.ts +135 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +273 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/forget.d.ts +53 -0
- package/dist/tools/forget.d.ts.map +1 -0
- package/dist/tools/forget.js +179 -0
- package/dist/tools/forget.js.map +1 -0
- package/dist/tools/recall.d.ts +74 -0
- package/dist/tools/recall.d.ts.map +1 -0
- package/dist/tools/recall.js +140 -0
- package/dist/tools/recall.js.map +1 -0
- package/dist/tools/remember.d.ts +65 -0
- package/dist/tools/remember.d.ts.map +1 -0
- package/dist/tools/remember.js +147 -0
- package/dist/tools/remember.js.map +1 -0
- package/dist/worker/brain-worker.d.ts +100 -0
- package/dist/worker/brain-worker.d.ts.map +1 -0
- package/dist/worker/brain-worker.js +261 -0
- package/dist/worker/brain-worker.js.map +1 -0
- package/dist/worker/link-discovery.d.ts +47 -0
- package/dist/worker/link-discovery.d.ts.map +1 -0
- package/dist/worker/link-discovery.js +103 -0
- package/dist/worker/link-discovery.js.map +1 -0
- package/dist/worker/predictive-consolidation.d.ts +46 -0
- package/dist/worker/predictive-consolidation.d.ts.map +1 -0
- package/dist/worker/predictive-consolidation.js +110 -0
- package/dist/worker/predictive-consolidation.js.map +1 -0
- package/dist/worker/types.d.ts +91 -0
- package/dist/worker/types.d.ts.map +1 -0
- package/dist/worker/types.js +22 -0
- package/dist/worker/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualization-server.js","sourceRoot":"","sources":["../../src/api/visualization-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Context Module
|
|
3
|
+
* Automatically detects and manages the active project scope for memory operations.
|
|
4
|
+
*
|
|
5
|
+
* Detection priority:
|
|
6
|
+
* 1. CLAUDE_MEMORY_PROJECT environment variable
|
|
7
|
+
* 2. Extract from process.cwd() (working directory)
|
|
8
|
+
*
|
|
9
|
+
* The "*" sentinel means "global/all projects" (no filtering).
|
|
10
|
+
*/
|
|
11
|
+
/** Sentinel value meaning "all projects" - no project filtering */
|
|
12
|
+
export declare const GLOBAL_PROJECT_SENTINEL = "*";
|
|
13
|
+
/**
|
|
14
|
+
* Extract project name from a file path.
|
|
15
|
+
* Skips common directory names that don't represent projects.
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractProjectFromPath(path: string): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize project context from environment or working directory.
|
|
20
|
+
* Call this once at server startup.
|
|
21
|
+
*/
|
|
22
|
+
export declare function initProjectContext(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Get the currently active project.
|
|
25
|
+
* Returns null if in global scope.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getActiveProject(): string | null;
|
|
28
|
+
/**
|
|
29
|
+
* Get how the project was detected.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getProjectDetectionSource(): 'env' | 'cwd' | 'none';
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the effective project for a tool call.
|
|
34
|
+
*
|
|
35
|
+
* @param explicit - Explicitly provided project parameter (or undefined)
|
|
36
|
+
* @returns The project to use, or null for global scope
|
|
37
|
+
*
|
|
38
|
+
* Logic:
|
|
39
|
+
* - If explicit is "*", return null (global scope)
|
|
40
|
+
* - If explicit is provided, use it
|
|
41
|
+
* - Otherwise, use the auto-detected activeProject
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveProject(explicit: string | undefined): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Manually set the active project.
|
|
46
|
+
* Use null or "*" for global scope.
|
|
47
|
+
*/
|
|
48
|
+
export declare function setActiveProject(project: string | null): void;
|
|
49
|
+
/**
|
|
50
|
+
* Get project context info for display/debugging.
|
|
51
|
+
*/
|
|
52
|
+
export declare function getProjectContextInfo(): {
|
|
53
|
+
project: string | null;
|
|
54
|
+
source: 'env' | 'cwd' | 'none';
|
|
55
|
+
isGlobal: boolean;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=project-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../../src/context/project-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAgB3C;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBlE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAyBzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,KAAK,GAAG,KAAK,GAAG,MAAM,CAElE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAa1E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAM7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI;IACvC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAMA"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Context Module
|
|
3
|
+
* Automatically detects and manages the active project scope for memory operations.
|
|
4
|
+
*
|
|
5
|
+
* Detection priority:
|
|
6
|
+
* 1. CLAUDE_MEMORY_PROJECT environment variable
|
|
7
|
+
* 2. Extract from process.cwd() (working directory)
|
|
8
|
+
*
|
|
9
|
+
* The "*" sentinel means "global/all projects" (no filtering).
|
|
10
|
+
*/
|
|
11
|
+
/** Sentinel value meaning "all projects" - no project filtering */
|
|
12
|
+
export const GLOBAL_PROJECT_SENTINEL = '*';
|
|
13
|
+
/** Currently active project (null = global/no filter) */
|
|
14
|
+
let activeProject = null;
|
|
15
|
+
/** How the project was detected */
|
|
16
|
+
let projectDetectionSource = 'none';
|
|
17
|
+
/** Directories to skip when extracting project name from path */
|
|
18
|
+
const SKIP_DIRECTORIES = [
|
|
19
|
+
'src', 'lib', 'dist', 'build', 'out',
|
|
20
|
+
'node_modules', '.git', '.next', '.cache',
|
|
21
|
+
'test', 'tests', '__tests__', 'spec',
|
|
22
|
+
'bin', 'scripts', 'config', 'public', 'static',
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Extract project name from a file path.
|
|
26
|
+
* Skips common directory names that don't represent projects.
|
|
27
|
+
*/
|
|
28
|
+
export function extractProjectFromPath(path) {
|
|
29
|
+
if (!path)
|
|
30
|
+
return null;
|
|
31
|
+
const segments = path.split(/[/\\]/).filter(Boolean);
|
|
32
|
+
if (segments.length === 0)
|
|
33
|
+
return null;
|
|
34
|
+
// Start from the end and find first non-skipped segment
|
|
35
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
36
|
+
const segment = segments[i];
|
|
37
|
+
if (!SKIP_DIRECTORIES.includes(segment.toLowerCase())) {
|
|
38
|
+
// Skip hidden directories (starting with .)
|
|
39
|
+
if (segment.startsWith('.'))
|
|
40
|
+
continue;
|
|
41
|
+
return segment;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Initialize project context from environment or working directory.
|
|
48
|
+
* Call this once at server startup.
|
|
49
|
+
*/
|
|
50
|
+
export function initProjectContext() {
|
|
51
|
+
// Priority 1: Environment variable (explicit override)
|
|
52
|
+
const envProject = process.env.CLAUDE_MEMORY_PROJECT;
|
|
53
|
+
if (envProject) {
|
|
54
|
+
const trimmed = envProject.trim();
|
|
55
|
+
if (trimmed === GLOBAL_PROJECT_SENTINEL) {
|
|
56
|
+
activeProject = null;
|
|
57
|
+
projectDetectionSource = 'env';
|
|
58
|
+
}
|
|
59
|
+
else if (trimmed) {
|
|
60
|
+
activeProject = trimmed;
|
|
61
|
+
projectDetectionSource = 'env';
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Priority 2: Extract from current working directory
|
|
66
|
+
const cwd = process.cwd();
|
|
67
|
+
const detected = extractProjectFromPath(cwd);
|
|
68
|
+
if (detected) {
|
|
69
|
+
activeProject = detected;
|
|
70
|
+
projectDetectionSource = 'cwd';
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
activeProject = null;
|
|
74
|
+
projectDetectionSource = 'none';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the currently active project.
|
|
79
|
+
* Returns null if in global scope.
|
|
80
|
+
*/
|
|
81
|
+
export function getActiveProject() {
|
|
82
|
+
return activeProject;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get how the project was detected.
|
|
86
|
+
*/
|
|
87
|
+
export function getProjectDetectionSource() {
|
|
88
|
+
return projectDetectionSource;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolve the effective project for a tool call.
|
|
92
|
+
*
|
|
93
|
+
* @param explicit - Explicitly provided project parameter (or undefined)
|
|
94
|
+
* @returns The project to use, or null for global scope
|
|
95
|
+
*
|
|
96
|
+
* Logic:
|
|
97
|
+
* - If explicit is "*", return null (global scope)
|
|
98
|
+
* - If explicit is provided, use it
|
|
99
|
+
* - Otherwise, use the auto-detected activeProject
|
|
100
|
+
*/
|
|
101
|
+
export function resolveProject(explicit) {
|
|
102
|
+
// "*" means global - no project filter
|
|
103
|
+
if (explicit === GLOBAL_PROJECT_SENTINEL) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
// Explicit project provided
|
|
107
|
+
if (explicit && explicit.trim()) {
|
|
108
|
+
return explicit.trim();
|
|
109
|
+
}
|
|
110
|
+
// Fall back to auto-detected project
|
|
111
|
+
return activeProject;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Manually set the active project.
|
|
115
|
+
* Use null or "*" for global scope.
|
|
116
|
+
*/
|
|
117
|
+
export function setActiveProject(project) {
|
|
118
|
+
if (project === GLOBAL_PROJECT_SENTINEL) {
|
|
119
|
+
activeProject = null;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
activeProject = project;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get project context info for display/debugging.
|
|
127
|
+
*/
|
|
128
|
+
export function getProjectContextInfo() {
|
|
129
|
+
return {
|
|
130
|
+
project: activeProject,
|
|
131
|
+
source: projectDetectionSource,
|
|
132
|
+
isGlobal: activeProject === null,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=project-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/context/project-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database initialization and connection management
|
|
3
|
+
*/
|
|
4
|
+
import Database from 'better-sqlite3';
|
|
5
|
+
/**
|
|
6
|
+
* Initialize the database connection
|
|
7
|
+
*/
|
|
8
|
+
export declare function initDatabase(dbPath?: string): Database.Database;
|
|
9
|
+
/**
|
|
10
|
+
* Get the current database instance
|
|
11
|
+
*/
|
|
12
|
+
export declare function getDatabase(): Database.Database;
|
|
13
|
+
/**
|
|
14
|
+
* Close the database connection with proper cleanup
|
|
15
|
+
*/
|
|
16
|
+
export declare function closeDatabase(): void;
|
|
17
|
+
/**
|
|
18
|
+
* Manually checkpoint the WAL file (call periodically for long-running processes)
|
|
19
|
+
*/
|
|
20
|
+
export declare function checkpointWal(): {
|
|
21
|
+
walPages: number;
|
|
22
|
+
checkpointed: number;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Check database file size for bloat prevention
|
|
26
|
+
*/
|
|
27
|
+
export interface DatabaseSizeInfo {
|
|
28
|
+
size: number;
|
|
29
|
+
sizeFormatted: string;
|
|
30
|
+
warning: boolean;
|
|
31
|
+
blocked: boolean;
|
|
32
|
+
message: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function checkDatabaseSize(): DatabaseSizeInfo;
|
|
35
|
+
/**
|
|
36
|
+
* Check if database operations should be blocked due to size
|
|
37
|
+
*/
|
|
38
|
+
export declare function isDatabaseBlocked(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Execute a function within a transaction (auto-commits on success, rollback on error)
|
|
41
|
+
* Use this for batch operations that need atomicity
|
|
42
|
+
*/
|
|
43
|
+
export declare function withTransaction<T>(fn: () => T): T;
|
|
44
|
+
/**
|
|
45
|
+
* Execute a function within an IMMEDIATE transaction (acquires write lock immediately)
|
|
46
|
+
* Use this for critical operations that must not conflict with concurrent writes
|
|
47
|
+
*/
|
|
48
|
+
export declare function withImmediateTransaction<T>(fn: () => T): T;
|
|
49
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/database/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA4CtC;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAyD/D;AA0CD;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAK/C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAsBpC;AAyBD;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAO1E;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,IAAI,gBAAgB,CAkCpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAmFD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAGjD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAW1D"}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database initialization and connection management
|
|
3
|
+
*/
|
|
4
|
+
import Database from 'better-sqlite3';
|
|
5
|
+
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync, unlinkSync } from 'fs';
|
|
6
|
+
import { dirname, join } from 'path';
|
|
7
|
+
import { homedir } from 'os';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = dirname(__filename);
|
|
11
|
+
let db = null;
|
|
12
|
+
let currentDbPath = null;
|
|
13
|
+
let lockFilePath = null;
|
|
14
|
+
// Anti-bloat: Database size limits
|
|
15
|
+
const MAX_DB_SIZE = 100 * 1024 * 1024; // 100MB hard limit
|
|
16
|
+
const WARN_DB_SIZE = 50 * 1024 * 1024; // 50MB warning threshold
|
|
17
|
+
/**
|
|
18
|
+
* Expand ~ to home directory
|
|
19
|
+
*/
|
|
20
|
+
function expandPath(path) {
|
|
21
|
+
if (path.startsWith('~')) {
|
|
22
|
+
return join(homedir(), path.slice(1));
|
|
23
|
+
}
|
|
24
|
+
return path;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the database path with legacy fallback
|
|
28
|
+
* - New installs use ~/.claude-cortex/
|
|
29
|
+
* - Existing users with ~/.claude-memory/ continue to work
|
|
30
|
+
*/
|
|
31
|
+
function getDefaultDbPath() {
|
|
32
|
+
const newPath = join(homedir(), '.claude-cortex', 'memories.db');
|
|
33
|
+
const legacyPath = join(homedir(), '.claude-memory', 'memories.db');
|
|
34
|
+
// Prefer new path if it exists, or if neither exists (new install)
|
|
35
|
+
if (existsSync(newPath) || !existsSync(legacyPath)) {
|
|
36
|
+
return newPath;
|
|
37
|
+
}
|
|
38
|
+
// Fall back to legacy path for existing users
|
|
39
|
+
return legacyPath;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Initialize the database connection
|
|
43
|
+
*/
|
|
44
|
+
export function initDatabase(dbPath) {
|
|
45
|
+
// Use auto-detected path if not specified
|
|
46
|
+
const resolvedPath = dbPath || getDefaultDbPath();
|
|
47
|
+
if (db) {
|
|
48
|
+
return db;
|
|
49
|
+
}
|
|
50
|
+
const expandedPath = expandPath(resolvedPath);
|
|
51
|
+
const dir = dirname(expandedPath);
|
|
52
|
+
// Create directory if it doesn't exist
|
|
53
|
+
if (!existsSync(dir)) {
|
|
54
|
+
mkdirSync(dir, { recursive: true });
|
|
55
|
+
}
|
|
56
|
+
// Store path for size monitoring
|
|
57
|
+
currentDbPath = expandedPath;
|
|
58
|
+
// Create database connection
|
|
59
|
+
db = new Database(expandedPath);
|
|
60
|
+
// Enable WAL mode for better concurrency
|
|
61
|
+
db.pragma('journal_mode = WAL');
|
|
62
|
+
db.pragma('synchronous = NORMAL');
|
|
63
|
+
db.pragma('foreign_keys = ON');
|
|
64
|
+
// Race condition mitigation: wait up to 10 seconds for locks
|
|
65
|
+
db.pragma('busy_timeout = 10000');
|
|
66
|
+
// Auto-checkpoint every 100 pages (~400KB) to prevent WAL bloat
|
|
67
|
+
db.pragma('wal_autocheckpoint = 100');
|
|
68
|
+
// Create lock file to help detect concurrent instances
|
|
69
|
+
lockFilePath = expandedPath + '.lock';
|
|
70
|
+
const pid = process.pid;
|
|
71
|
+
try {
|
|
72
|
+
writeFileSync(lockFilePath, `${pid}\n${new Date().toISOString()}`);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Non-fatal - lock file is advisory
|
|
76
|
+
}
|
|
77
|
+
// Register cleanup handlers for graceful shutdown
|
|
78
|
+
registerShutdownHandlers();
|
|
79
|
+
// Run migrations FIRST for existing databases
|
|
80
|
+
// This ensures columns exist before schema tries to create indexes on them
|
|
81
|
+
runMigrations(db);
|
|
82
|
+
// Run schema (uses IF NOT EXISTS, safe for existing tables and indexes)
|
|
83
|
+
const schemaPath = join(__dirname, 'schema.sql');
|
|
84
|
+
if (existsSync(schemaPath)) {
|
|
85
|
+
const schema = readFileSync(schemaPath, 'utf-8');
|
|
86
|
+
db.exec(schema);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// Inline schema if file not found (for bundled deployment)
|
|
90
|
+
db.exec(getInlineSchema());
|
|
91
|
+
}
|
|
92
|
+
return db;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Run database migrations for existing databases
|
|
96
|
+
*/
|
|
97
|
+
function runMigrations(database) {
|
|
98
|
+
// Check if memories table exists (skip migrations on fresh database)
|
|
99
|
+
const tableExists = database.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='memories'").get();
|
|
100
|
+
if (!tableExists) {
|
|
101
|
+
// Fresh database - schema will create everything
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Check existing columns
|
|
105
|
+
const tableInfo = database.prepare("PRAGMA table_info(memories)").all();
|
|
106
|
+
const columnNames = new Set(tableInfo.map(col => col.name));
|
|
107
|
+
// Migration: decayed_score column
|
|
108
|
+
if (!columnNames.has('decayed_score')) {
|
|
109
|
+
database.exec('ALTER TABLE memories ADD COLUMN decayed_score REAL');
|
|
110
|
+
database.exec('CREATE INDEX IF NOT EXISTS idx_memories_decayed_score ON memories(decayed_score DESC)');
|
|
111
|
+
}
|
|
112
|
+
// Migration: embedding column for semantic search
|
|
113
|
+
if (!columnNames.has('embedding')) {
|
|
114
|
+
database.exec('ALTER TABLE memories ADD COLUMN embedding BLOB');
|
|
115
|
+
}
|
|
116
|
+
// Migration: scope column for cross-project knowledge
|
|
117
|
+
if (!columnNames.has('scope')) {
|
|
118
|
+
database.exec("ALTER TABLE memories ADD COLUMN scope TEXT DEFAULT 'project'");
|
|
119
|
+
}
|
|
120
|
+
// Migration: transferable column for cross-project sharing
|
|
121
|
+
if (!columnNames.has('transferable')) {
|
|
122
|
+
database.exec('ALTER TABLE memories ADD COLUMN transferable INTEGER DEFAULT 0');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get the current database instance
|
|
127
|
+
*/
|
|
128
|
+
export function getDatabase() {
|
|
129
|
+
if (!db) {
|
|
130
|
+
throw new Error('Database not initialized. Call initDatabase() first.');
|
|
131
|
+
}
|
|
132
|
+
return db;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Close the database connection with proper cleanup
|
|
136
|
+
*/
|
|
137
|
+
export function closeDatabase() {
|
|
138
|
+
if (db) {
|
|
139
|
+
try {
|
|
140
|
+
// Checkpoint WAL before closing to flush all changes
|
|
141
|
+
db.pragma('wal_checkpoint(TRUNCATE)');
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Ignore checkpoint errors on close
|
|
145
|
+
}
|
|
146
|
+
db.close();
|
|
147
|
+
db = null;
|
|
148
|
+
currentDbPath = null;
|
|
149
|
+
// Remove lock file
|
|
150
|
+
if (lockFilePath && existsSync(lockFilePath)) {
|
|
151
|
+
try {
|
|
152
|
+
unlinkSync(lockFilePath);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Non-fatal
|
|
156
|
+
}
|
|
157
|
+
lockFilePath = null;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Register handlers for graceful shutdown
|
|
163
|
+
*/
|
|
164
|
+
let shutdownRegistered = false;
|
|
165
|
+
function registerShutdownHandlers() {
|
|
166
|
+
if (shutdownRegistered)
|
|
167
|
+
return;
|
|
168
|
+
shutdownRegistered = true;
|
|
169
|
+
const cleanup = () => {
|
|
170
|
+
closeDatabase();
|
|
171
|
+
};
|
|
172
|
+
// Handle various termination signals
|
|
173
|
+
process.on('exit', cleanup);
|
|
174
|
+
process.on('SIGINT', () => { cleanup(); process.exit(0); });
|
|
175
|
+
process.on('SIGTERM', () => { cleanup(); process.exit(0); });
|
|
176
|
+
process.on('uncaughtException', (err) => {
|
|
177
|
+
console.error('Uncaught exception:', err);
|
|
178
|
+
cleanup();
|
|
179
|
+
process.exit(1);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Manually checkpoint the WAL file (call periodically for long-running processes)
|
|
184
|
+
*/
|
|
185
|
+
export function checkpointWal() {
|
|
186
|
+
const database = getDatabase();
|
|
187
|
+
const result = database.pragma('wal_checkpoint(PASSIVE)');
|
|
188
|
+
return {
|
|
189
|
+
walPages: result[0]?.log || 0,
|
|
190
|
+
checkpointed: result[0]?.checkpointed || 0,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
export function checkDatabaseSize() {
|
|
194
|
+
if (!currentDbPath || !existsSync(currentDbPath)) {
|
|
195
|
+
return {
|
|
196
|
+
size: 0,
|
|
197
|
+
sizeFormatted: '0 KB',
|
|
198
|
+
warning: false,
|
|
199
|
+
blocked: false,
|
|
200
|
+
message: 'Database not initialized',
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
const stats = statSync(currentDbPath);
|
|
204
|
+
const size = stats.size;
|
|
205
|
+
const sizeKB = size / 1024;
|
|
206
|
+
const sizeMB = sizeKB / 1024;
|
|
207
|
+
let sizeFormatted;
|
|
208
|
+
if (sizeMB >= 1) {
|
|
209
|
+
sizeFormatted = `${sizeMB.toFixed(2)} MB`;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
sizeFormatted = `${sizeKB.toFixed(2)} KB`;
|
|
213
|
+
}
|
|
214
|
+
const warning = size > WARN_DB_SIZE;
|
|
215
|
+
const blocked = size > MAX_DB_SIZE;
|
|
216
|
+
let message = `Database size: ${sizeFormatted}`;
|
|
217
|
+
if (blocked) {
|
|
218
|
+
message = `DATABASE BLOCKED: ${sizeFormatted} exceeds 100MB limit. Run consolidation and vacuum.`;
|
|
219
|
+
}
|
|
220
|
+
else if (warning) {
|
|
221
|
+
message = `WARNING: ${sizeFormatted} approaching 100MB limit. Consider running consolidation.`;
|
|
222
|
+
}
|
|
223
|
+
return { size, sizeFormatted, warning, blocked, message };
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Check if database operations should be blocked due to size
|
|
227
|
+
*/
|
|
228
|
+
export function isDatabaseBlocked() {
|
|
229
|
+
return checkDatabaseSize().blocked;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Inline schema for bundled deployment
|
|
233
|
+
*/
|
|
234
|
+
function getInlineSchema() {
|
|
235
|
+
return `
|
|
236
|
+
CREATE TABLE IF NOT EXISTS memories (
|
|
237
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
238
|
+
type TEXT NOT NULL CHECK(type IN ('short_term', 'long_term', 'episodic')),
|
|
239
|
+
category TEXT NOT NULL DEFAULT 'note',
|
|
240
|
+
title TEXT NOT NULL,
|
|
241
|
+
content TEXT NOT NULL,
|
|
242
|
+
project TEXT,
|
|
243
|
+
tags TEXT DEFAULT '[]',
|
|
244
|
+
salience REAL DEFAULT 0.5 CHECK(salience >= 0 AND salience <= 1),
|
|
245
|
+
decayed_score REAL,
|
|
246
|
+
access_count INTEGER DEFAULT 0,
|
|
247
|
+
last_accessed TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
248
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
249
|
+
metadata TEXT DEFAULT '{}',
|
|
250
|
+
embedding BLOB,
|
|
251
|
+
scope TEXT DEFAULT 'project',
|
|
252
|
+
transferable INTEGER DEFAULT 0
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
|
|
256
|
+
title,
|
|
257
|
+
content,
|
|
258
|
+
tags,
|
|
259
|
+
content='memories',
|
|
260
|
+
content_rowid='id',
|
|
261
|
+
tokenize='porter unicode61'
|
|
262
|
+
);
|
|
263
|
+
|
|
264
|
+
CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
|
|
265
|
+
INSERT INTO memories_fts(rowid, title, content, tags)
|
|
266
|
+
VALUES (new.id, new.title, new.content, new.tags);
|
|
267
|
+
END;
|
|
268
|
+
|
|
269
|
+
CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
|
|
270
|
+
INSERT INTO memories_fts(memories_fts, rowid, title, content, tags)
|
|
271
|
+
VALUES('delete', old.id, old.title, old.content, old.tags);
|
|
272
|
+
END;
|
|
273
|
+
|
|
274
|
+
CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
|
|
275
|
+
INSERT INTO memories_fts(memories_fts, rowid, title, content, tags)
|
|
276
|
+
VALUES('delete', old.id, old.title, old.content, old.tags);
|
|
277
|
+
INSERT INTO memories_fts(rowid, title, content, tags)
|
|
278
|
+
VALUES (new.id, new.title, new.content, new.tags);
|
|
279
|
+
END;
|
|
280
|
+
|
|
281
|
+
CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
|
|
282
|
+
CREATE INDEX IF NOT EXISTS idx_memories_project ON memories(project);
|
|
283
|
+
CREATE INDEX IF NOT EXISTS idx_memories_category ON memories(category);
|
|
284
|
+
CREATE INDEX IF NOT EXISTS idx_memories_salience ON memories(salience DESC);
|
|
285
|
+
CREATE INDEX IF NOT EXISTS idx_memories_decayed_score ON memories(decayed_score DESC);
|
|
286
|
+
CREATE INDEX IF NOT EXISTS idx_memories_last_accessed ON memories(last_accessed DESC);
|
|
287
|
+
|
|
288
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
289
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
290
|
+
project TEXT,
|
|
291
|
+
started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
292
|
+
ended_at TIMESTAMP,
|
|
293
|
+
summary TEXT,
|
|
294
|
+
memories_created INTEGER DEFAULT 0,
|
|
295
|
+
memories_accessed INTEGER DEFAULT 0
|
|
296
|
+
);
|
|
297
|
+
|
|
298
|
+
CREATE TABLE IF NOT EXISTS memory_links (
|
|
299
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
300
|
+
source_id INTEGER NOT NULL,
|
|
301
|
+
target_id INTEGER NOT NULL,
|
|
302
|
+
relationship TEXT NOT NULL,
|
|
303
|
+
strength REAL DEFAULT 0.5,
|
|
304
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
305
|
+
FOREIGN KEY (source_id) REFERENCES memories(id) ON DELETE CASCADE,
|
|
306
|
+
FOREIGN KEY (target_id) REFERENCES memories(id) ON DELETE CASCADE,
|
|
307
|
+
UNIQUE(source_id, target_id)
|
|
308
|
+
);
|
|
309
|
+
`;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Execute a function within a transaction (auto-commits on success, rollback on error)
|
|
313
|
+
* Use this for batch operations that need atomicity
|
|
314
|
+
*/
|
|
315
|
+
export function withTransaction(fn) {
|
|
316
|
+
const database = getDatabase();
|
|
317
|
+
return database.transaction(fn)();
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Execute a function within an IMMEDIATE transaction (acquires write lock immediately)
|
|
321
|
+
* Use this for critical operations that must not conflict with concurrent writes
|
|
322
|
+
*/
|
|
323
|
+
export function withImmediateTransaction(fn) {
|
|
324
|
+
const database = getDatabase();
|
|
325
|
+
database.exec('BEGIN IMMEDIATE');
|
|
326
|
+
try {
|
|
327
|
+
const result = fn();
|
|
328
|
+
database.exec('COMMIT');
|
|
329
|
+
return result;
|
|
330
|
+
}
|
|
331
|
+
catch (e) {
|
|
332
|
+
database.exec('ROLLBACK');
|
|
333
|
+
throw e;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/database/init.ts"],"names":[],"mappings":"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"}
|