@londer/cortex 0.1.0 → 0.2.1
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/CHANGELOG.md +61 -1
- package/README.md +43 -14
- package/dist/cli.js +301 -29
- package/dist/cli.js.map +1 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +3 -0
- package/dist/config-store.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/extraction/extractor.d.ts +5 -2
- package/dist/extraction/extractor.d.ts.map +1 -1
- package/dist/extraction/extractor.js +38 -2
- package/dist/extraction/extractor.js.map +1 -1
- package/dist/extraction/tier25-ollama.d.ts +8 -0
- package/dist/extraction/tier25-ollama.d.ts.map +1 -0
- package/dist/extraction/tier25-ollama.js +56 -0
- package/dist/extraction/tier25-ollama.js.map +1 -0
- package/dist/index.js +164 -11
- package/dist/index.js.map +1 -1
- package/dist/llm/ollama-client.d.ts +39 -0
- package/dist/llm/ollama-client.d.ts.map +1 -0
- package/dist/llm/ollama-client.js +172 -0
- package/dist/llm/ollama-client.js.map +1 -0
- package/dist/orchestration/ranker.d.ts +2 -1
- package/dist/orchestration/ranker.d.ts.map +1 -1
- package/dist/orchestration/ranker.js +11 -1
- package/dist/orchestration/ranker.js.map +1 -1
- package/dist/orchestration/scope.d.ts +4 -3
- package/dist/orchestration/scope.d.ts.map +1 -1
- package/dist/orchestration/scope.js +16 -2
- package/dist/orchestration/scope.js.map +1 -1
- package/dist/portability/dump.d.ts +19 -0
- package/dist/portability/dump.d.ts.map +1 -0
- package/dist/portability/dump.js +225 -0
- package/dist/portability/dump.js.map +1 -0
- package/dist/portability/exporter.d.ts +5 -0
- package/dist/portability/exporter.d.ts.map +1 -0
- package/dist/portability/exporter.js +116 -0
- package/dist/portability/exporter.js.map +1 -0
- package/dist/portability/importer.d.ts +12 -0
- package/dist/portability/importer.d.ts.map +1 -0
- package/dist/portability/importer.js +164 -0
- package/dist/portability/importer.js.map +1 -0
- package/dist/sharing/cross-project.d.ts +15 -0
- package/dist/sharing/cross-project.d.ts.map +1 -0
- package/dist/sharing/cross-project.js +35 -0
- package/dist/sharing/cross-project.js.map +1 -0
- package/dist/storage/neo4j.d.ts +1 -0
- package/dist/storage/neo4j.d.ts.map +1 -1
- package/dist/storage/neo4j.js +10 -0
- package/dist/storage/neo4j.js.map +1 -1
- package/dist/storage/sqlite.d.ts +50 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +276 -3
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/templates/claude-instructions.d.ts +1 -1
- package/dist/templates/claude-instructions.d.ts.map +1 -1
- package/dist/templates/claude-instructions.js +6 -1
- package/dist/templates/claude-instructions.js.map +1 -1
- package/dist/tools/config.d.ts +2 -0
- package/dist/tools/config.d.ts.map +1 -1
- package/dist/tools/config.js +12 -1
- package/dist/tools/config.js.map +1 -1
- package/dist/tools/context.d.ts +2 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +13 -4
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/export.d.ts +5 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +24 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/graph-query.d.ts +2 -1
- package/dist/tools/graph-query.d.ts.map +1 -1
- package/dist/tools/graph-query.js +5 -1
- package/dist/tools/graph-query.js.map +1 -1
- package/dist/tools/import.d.ts +7 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +25 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/search.d.ts +2 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +16 -3
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/share.d.ts +4 -0
- package/dist/tools/share.d.ts.map +1 -0
- package/dist/tools/share.js +51 -0
- package/dist/tools/share.js.map +1 -0
- package/dist/tools/stats.d.ts +5 -0
- package/dist/tools/stats.d.ts.map +1 -0
- package/dist/tools/stats.js +30 -0
- package/dist/tools/stats.js.map +1 -0
- package/dist/tools/store.d.ts.map +1 -1
- package/dist/tools/store.js +2 -0
- package/dist/tools/store.js.map +1 -1
- package/dist/tracking/access-tracker.d.ts +36 -0
- package/dist/tracking/access-tracker.d.ts.map +1 -0
- package/dist/tracking/access-tracker.js +68 -0
- package/dist/tracking/access-tracker.js.map +1 -0
- package/dist/types/index.d.ts +161 -4
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +73 -69
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranker.js","sourceRoot":"","sources":["../../src/orchestration/ranker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ranker.js","sourceRoot":"","sources":["../../src/orchestration/ranker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import type { ScopeBoost } from '../types/index.js';
|
|
1
|
+
import type { ScopeBoost, MemoryVisibility } from '../types/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Infer scope tier and boost weight for a memory relative to the current context.
|
|
4
4
|
*
|
|
5
5
|
* - If the memory's project matches the current project → PROJECT_LOCAL
|
|
6
|
-
* - If
|
|
6
|
+
* - If the memory has cross-project visibility and is from a linked project → CROSS_PROJECT
|
|
7
|
+
* - If a relationship exists between projects → RELATED_PROJECT
|
|
7
8
|
* - Otherwise → GLOBAL
|
|
8
9
|
*/
|
|
9
|
-
export declare function inferScopeTier(memoryProject: string | null, currentProject: string | null, relatedProjects?: string[]): ScopeBoost;
|
|
10
|
+
export declare function inferScopeTier(memoryProject: string | null, currentProject: string | null, relatedProjects?: string[], memoryVisibility?: MemoryVisibility): ScopeBoost;
|
|
10
11
|
/**
|
|
11
12
|
* Infer the effective project from explicit input or context.
|
|
12
13
|
* Returns null for global scope.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/orchestration/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/orchestration/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEjF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,UAAU,CAgCZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,eAAe,CAAC,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,GAAG,IAAI,CAEf"}
|
|
@@ -3,13 +3,27 @@ import { SCOPE_BOOST } from '../config.js';
|
|
|
3
3
|
* Infer scope tier and boost weight for a memory relative to the current context.
|
|
4
4
|
*
|
|
5
5
|
* - If the memory's project matches the current project → PROJECT_LOCAL
|
|
6
|
-
* - If
|
|
6
|
+
* - If the memory has cross-project visibility and is from a linked project → CROSS_PROJECT
|
|
7
|
+
* - If a relationship exists between projects → RELATED_PROJECT
|
|
7
8
|
* - Otherwise → GLOBAL
|
|
8
9
|
*/
|
|
9
|
-
export function inferScopeTier(memoryProject, currentProject, relatedProjects) {
|
|
10
|
+
export function inferScopeTier(memoryProject, currentProject, relatedProjects, memoryVisibility) {
|
|
10
11
|
if (currentProject && memoryProject === currentProject) {
|
|
11
12
|
return { tier: 'project_local', weight: SCOPE_BOOST.PROJECT_LOCAL };
|
|
12
13
|
}
|
|
14
|
+
// Cross-project: memory is explicitly shared and from a linked project
|
|
15
|
+
if (currentProject &&
|
|
16
|
+
memoryProject &&
|
|
17
|
+
memoryVisibility &&
|
|
18
|
+
(memoryVisibility === 'cross-project' || memoryVisibility === 'global') &&
|
|
19
|
+
relatedProjects &&
|
|
20
|
+
relatedProjects.includes(memoryProject)) {
|
|
21
|
+
return { tier: 'cross_project', weight: SCOPE_BOOST.CROSS_PROJECT };
|
|
22
|
+
}
|
|
23
|
+
// Global visibility memories get the cross-project boost even without explicit link
|
|
24
|
+
if (memoryVisibility === 'global' && currentProject && memoryProject !== currentProject) {
|
|
25
|
+
return { tier: 'cross_project', weight: SCOPE_BOOST.CROSS_PROJECT };
|
|
26
|
+
}
|
|
13
27
|
if (currentProject &&
|
|
14
28
|
memoryProject &&
|
|
15
29
|
relatedProjects &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/orchestration/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/orchestration/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,aAA4B,EAC5B,cAA6B,EAC7B,eAA0B,EAC1B,gBAAmC;IAEnC,IAAI,cAAc,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC;IACtE,CAAC;IAED,uEAAuE;IACvE,IACE,cAAc;QACd,aAAa;QACb,gBAAgB;QAChB,CAAC,gBAAgB,KAAK,eAAe,IAAI,gBAAgB,KAAK,QAAQ,CAAC;QACvE,eAAe;QACf,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,EACvC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC;IACtE,CAAC;IAED,oFAAoF;IACpF,IAAI,gBAAgB,KAAK,QAAQ,IAAI,cAAc,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;QACxF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC;IACtE,CAAC;IAED,IACE,cAAc;QACd,aAAa;QACb,eAAe;QACf,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,EACvC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC;IAC1E,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,eAAwB,EACxB,cAAuB;IAEvB,OAAO,eAAe,IAAI,cAAc,IAAI,IAAI,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function exportDump(outputDir: string): Promise<{
|
|
2
|
+
success: boolean;
|
|
3
|
+
message: string;
|
|
4
|
+
components: {
|
|
5
|
+
sqlite: boolean;
|
|
6
|
+
qdrant: boolean;
|
|
7
|
+
neo4j: boolean;
|
|
8
|
+
};
|
|
9
|
+
}>;
|
|
10
|
+
export declare function restoreDump(inputDir: string): Promise<{
|
|
11
|
+
success: boolean;
|
|
12
|
+
message: string;
|
|
13
|
+
components: {
|
|
14
|
+
sqlite: boolean;
|
|
15
|
+
qdrant: boolean;
|
|
16
|
+
neo4j: boolean;
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=dump.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../src/portability/dump.ts"],"names":[],"mappings":"AAwCA,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAClE,CAAC,CAoHD;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAClE,CAAC,CAyHD"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, copyFileSync, readFileSync, writeFileSync, } from 'node:fs';
|
|
2
|
+
import { join, dirname } from 'node:path';
|
|
3
|
+
import { hostname } from 'node:os';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { loadConfig } from '../config.js';
|
|
6
|
+
function getVersion() {
|
|
7
|
+
try {
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const pkgPaths = [
|
|
10
|
+
join(__dirname, '..', '..', 'package.json'),
|
|
11
|
+
join(__dirname, '..', '..', '..', 'package.json'),
|
|
12
|
+
];
|
|
13
|
+
for (const p of pkgPaths) {
|
|
14
|
+
try {
|
|
15
|
+
const pkg = JSON.parse(readFileSync(p, 'utf-8'));
|
|
16
|
+
return pkg.version ?? '0.0.0';
|
|
17
|
+
}
|
|
18
|
+
catch { /* try next */ }
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch { /* fall through */ }
|
|
22
|
+
return '0.0.0';
|
|
23
|
+
}
|
|
24
|
+
export async function exportDump(outputDir) {
|
|
25
|
+
const config = loadConfig();
|
|
26
|
+
mkdirSync(outputDir, { recursive: true });
|
|
27
|
+
const components = { sqlite: false, qdrant: false, neo4j: false };
|
|
28
|
+
// 1. Copy SQLite database
|
|
29
|
+
try {
|
|
30
|
+
if (existsSync(config.sqlitePath)) {
|
|
31
|
+
copyFileSync(config.sqlitePath, join(outputDir, 'cortex.db'));
|
|
32
|
+
// Copy WAL and SHM files if they exist
|
|
33
|
+
const walPath = config.sqlitePath + '-wal';
|
|
34
|
+
const shmPath = config.sqlitePath + '-shm';
|
|
35
|
+
if (existsSync(walPath))
|
|
36
|
+
copyFileSync(walPath, join(outputDir, 'cortex.db-wal'));
|
|
37
|
+
if (existsSync(shmPath))
|
|
38
|
+
copyFileSync(shmPath, join(outputDir, 'cortex.db-shm'));
|
|
39
|
+
components.sqlite = true;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.error(`[cortex] SQLite database not found at ${config.sqlitePath}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error(`[cortex] Failed to copy SQLite: ${error}`);
|
|
47
|
+
}
|
|
48
|
+
// 2. Qdrant snapshot
|
|
49
|
+
try {
|
|
50
|
+
const snapshotUrl = `${config.qdrantUrl}/collections/cortex_memories/snapshots`;
|
|
51
|
+
const createResp = await fetch(snapshotUrl, { method: 'POST' });
|
|
52
|
+
if (createResp.ok) {
|
|
53
|
+
const snapshotInfo = await createResp.json();
|
|
54
|
+
const snapshotName = snapshotInfo.result.name;
|
|
55
|
+
// Download the snapshot
|
|
56
|
+
const downloadUrl = `${snapshotUrl}/${snapshotName}`;
|
|
57
|
+
const downloadResp = await fetch(downloadUrl);
|
|
58
|
+
if (downloadResp.ok) {
|
|
59
|
+
const buffer = Buffer.from(await downloadResp.arrayBuffer());
|
|
60
|
+
writeFileSync(join(outputDir, 'qdrant-snapshot.tar'), buffer);
|
|
61
|
+
components.qdrant = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error(`[cortex] Failed to create Qdrant snapshot: ${error}`);
|
|
67
|
+
}
|
|
68
|
+
// 3. Neo4j — export all nodes and relationships as JSON via Cypher
|
|
69
|
+
try {
|
|
70
|
+
const { default: neo4jDriver } = await import('neo4j-driver');
|
|
71
|
+
const driver = neo4jDriver.driver(config.neo4jUri, neo4jDriver.auth.basic(config.neo4jUser, config.neo4jPassword));
|
|
72
|
+
const session = driver.session();
|
|
73
|
+
try {
|
|
74
|
+
// Export entities
|
|
75
|
+
const entityResult = await session.run('MATCH (e:Entity) RETURN e.name AS name, e.project AS project, e.created_at AS created_at');
|
|
76
|
+
const entities = entityResult.records.map(r => ({
|
|
77
|
+
name: r.get('name'),
|
|
78
|
+
project: r.get('project'),
|
|
79
|
+
created_at: r.get('created_at')?.toString() ?? null,
|
|
80
|
+
}));
|
|
81
|
+
// Export relationships
|
|
82
|
+
const relResult = await session.run('MATCH (a)-[r]->(b) RETURN a.name AS from, type(r) AS relation, b.name AS to, r.project AS project, r.properties AS properties');
|
|
83
|
+
const relationships = relResult.records.map(r => ({
|
|
84
|
+
from: r.get('from'),
|
|
85
|
+
relation: r.get('relation'),
|
|
86
|
+
to: r.get('to'),
|
|
87
|
+
project: r.get('project'),
|
|
88
|
+
properties: r.get('properties'),
|
|
89
|
+
}));
|
|
90
|
+
// Export memory-entity links
|
|
91
|
+
const linkResult = await session.run('MATCH (m:Memory)-[:MENTIONS]->(e:Entity) RETURN m.id AS memory_id, e.name AS entity');
|
|
92
|
+
const memoryLinks = linkResult.records.map(r => ({
|
|
93
|
+
memory_id: r.get('memory_id'),
|
|
94
|
+
entity: r.get('entity'),
|
|
95
|
+
}));
|
|
96
|
+
writeFileSync(join(outputDir, 'neo4j-dump.json'), JSON.stringify({ entities, relationships, memoryLinks }, null, 2));
|
|
97
|
+
components.neo4j = true;
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
await session.close();
|
|
101
|
+
await driver.close();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error(`[cortex] Failed to export Neo4j: ${error}`);
|
|
106
|
+
}
|
|
107
|
+
// 4. Write metadata
|
|
108
|
+
const metadata = {
|
|
109
|
+
version: getVersion(),
|
|
110
|
+
created_at: new Date().toISOString(),
|
|
111
|
+
source_instance: hostname(),
|
|
112
|
+
components,
|
|
113
|
+
};
|
|
114
|
+
writeFileSync(join(outputDir, 'metadata.json'), JSON.stringify(metadata, null, 2));
|
|
115
|
+
const componentList = Object.entries(components)
|
|
116
|
+
.map(([k, v]) => `${k}: ${v ? 'ok' : 'failed'}`)
|
|
117
|
+
.join(', ');
|
|
118
|
+
return {
|
|
119
|
+
success: components.sqlite, // SQLite is minimum required
|
|
120
|
+
message: `Dump exported to ${outputDir} (${componentList})`,
|
|
121
|
+
components,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
export async function restoreDump(inputDir) {
|
|
125
|
+
const config = loadConfig();
|
|
126
|
+
const components = { sqlite: false, qdrant: false, neo4j: false };
|
|
127
|
+
// 1. Validate metadata
|
|
128
|
+
const metadataPath = join(inputDir, 'metadata.json');
|
|
129
|
+
if (!existsSync(metadataPath)) {
|
|
130
|
+
return { success: false, message: 'No metadata.json found in dump directory', components };
|
|
131
|
+
}
|
|
132
|
+
const metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
|
|
133
|
+
console.error(`[cortex] Restoring dump from ${metadata.source_instance} (v${metadata.version}, ${metadata.created_at})`);
|
|
134
|
+
// 2. Restore SQLite
|
|
135
|
+
const dbPath = join(inputDir, 'cortex.db');
|
|
136
|
+
if (existsSync(dbPath)) {
|
|
137
|
+
try {
|
|
138
|
+
mkdirSync(dirname(config.sqlitePath), { recursive: true });
|
|
139
|
+
copyFileSync(dbPath, config.sqlitePath);
|
|
140
|
+
// Restore WAL and SHM if present
|
|
141
|
+
const walPath = join(inputDir, 'cortex.db-wal');
|
|
142
|
+
const shmPath = join(inputDir, 'cortex.db-shm');
|
|
143
|
+
if (existsSync(walPath))
|
|
144
|
+
copyFileSync(walPath, config.sqlitePath + '-wal');
|
|
145
|
+
if (existsSync(shmPath))
|
|
146
|
+
copyFileSync(shmPath, config.sqlitePath + '-shm');
|
|
147
|
+
components.sqlite = true;
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
console.error(`[cortex] Failed to restore SQLite: ${error}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// 3. Restore Qdrant snapshot
|
|
154
|
+
const snapshotPath = join(inputDir, 'qdrant-snapshot.tar');
|
|
155
|
+
if (existsSync(snapshotPath)) {
|
|
156
|
+
try {
|
|
157
|
+
const snapshotData = readFileSync(snapshotPath);
|
|
158
|
+
const formData = new FormData();
|
|
159
|
+
formData.append('snapshot', new Blob([snapshotData]), 'snapshot.tar');
|
|
160
|
+
const uploadUrl = `${config.qdrantUrl}/collections/cortex_memories/snapshots/upload`;
|
|
161
|
+
const resp = await fetch(uploadUrl, {
|
|
162
|
+
method: 'POST',
|
|
163
|
+
body: formData,
|
|
164
|
+
});
|
|
165
|
+
components.qdrant = resp.ok;
|
|
166
|
+
if (!resp.ok) {
|
|
167
|
+
console.error(`[cortex] Qdrant snapshot restore failed: ${resp.statusText}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
console.error(`[cortex] Failed to restore Qdrant: ${error}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// 4. Restore Neo4j from JSON dump
|
|
175
|
+
const neo4jDumpPath = join(inputDir, 'neo4j-dump.json');
|
|
176
|
+
if (existsSync(neo4jDumpPath)) {
|
|
177
|
+
try {
|
|
178
|
+
const dump = JSON.parse(readFileSync(neo4jDumpPath, 'utf-8'));
|
|
179
|
+
const { default: neo4jDriver } = await import('neo4j-driver');
|
|
180
|
+
const driver = neo4jDriver.driver(config.neo4jUri, neo4jDriver.auth.basic(config.neo4jUser, config.neo4jPassword));
|
|
181
|
+
const session = driver.session();
|
|
182
|
+
try {
|
|
183
|
+
// Recreate entities (skip null/empty names)
|
|
184
|
+
for (const entity of dump.entities) {
|
|
185
|
+
if (!entity.name)
|
|
186
|
+
continue;
|
|
187
|
+
await session.run('MERGE (e:Entity {name: $name}) ON CREATE SET e.project = $project', { name: entity.name, project: entity.project });
|
|
188
|
+
}
|
|
189
|
+
// Recreate relationships (skip null names, use RELATED_TO as safe default)
|
|
190
|
+
const validRelations = ['DEPENDS_ON', 'USES', 'PART_OF', 'RELATED_TO', 'IMPLEMENTS', 'CALLS'];
|
|
191
|
+
for (const rel of dump.relationships) {
|
|
192
|
+
if (!rel.from || !rel.to)
|
|
193
|
+
continue;
|
|
194
|
+
const safeRelation = validRelations.includes(rel.relation) ? rel.relation : 'RELATED_TO';
|
|
195
|
+
await session.run(`MERGE (a:Entity {name: $from})
|
|
196
|
+
MERGE (b:Entity {name: $to})
|
|
197
|
+
MERGE (a)-[:${safeRelation}]->(b)`, { from: rel.from, to: rel.to });
|
|
198
|
+
}
|
|
199
|
+
// Recreate memory-entity links
|
|
200
|
+
for (const link of dump.memoryLinks) {
|
|
201
|
+
await session.run(`MERGE (m:Memory {id: $memoryId})
|
|
202
|
+
MERGE (e:Entity {name: $entity})
|
|
203
|
+
MERGE (m)-[:MENTIONS]->(e)`, { memoryId: link.memory_id, entity: link.entity });
|
|
204
|
+
}
|
|
205
|
+
components.neo4j = true;
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
await session.close();
|
|
209
|
+
await driver.close();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
console.error(`[cortex] Failed to restore Neo4j: ${error}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const componentList = Object.entries(components)
|
|
217
|
+
.map(([k, v]) => `${k}: ${v ? 'ok' : 'skipped/failed'}`)
|
|
218
|
+
.join(', ');
|
|
219
|
+
return {
|
|
220
|
+
success: components.sqlite,
|
|
221
|
+
message: `Dump restored (${componentList})`,
|
|
222
|
+
components,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=dump.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dump.js","sourceRoot":"","sources":["../../src/portability/dump.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SQLiteStore } from '../storage/sqlite.js';
|
|
2
|
+
import type { Neo4jStore } from '../storage/neo4j.js';
|
|
3
|
+
import type { CortexExportData, ExportFilters } from '../types/index.js';
|
|
4
|
+
export declare function exportMemories(sqlite: SQLiteStore, neo4j: Neo4jStore, filters?: ExportFilters): Promise<CortexExportData>;
|
|
5
|
+
//# sourceMappingURL=exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/portability/exporter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EACV,gBAAgB,EAIhB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAmB3B,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAuG3B"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { hostname } from 'node:os';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
function getVersion() {
|
|
6
|
+
try {
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const pkgPaths = [
|
|
9
|
+
join(__dirname, '..', '..', 'package.json'),
|
|
10
|
+
join(__dirname, '..', '..', '..', 'package.json'),
|
|
11
|
+
];
|
|
12
|
+
for (const p of pkgPaths) {
|
|
13
|
+
try {
|
|
14
|
+
const pkg = JSON.parse(readFileSync(p, 'utf-8'));
|
|
15
|
+
return pkg.version ?? '0.0.0';
|
|
16
|
+
}
|
|
17
|
+
catch { /* try next */ }
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch { /* fall through */ }
|
|
21
|
+
return '0.0.0';
|
|
22
|
+
}
|
|
23
|
+
export async function exportMemories(sqlite, neo4j, filters) {
|
|
24
|
+
// 1. Query memories from SQLite
|
|
25
|
+
const memories = sqlite.getAllActiveMemories({
|
|
26
|
+
project: filters?.project,
|
|
27
|
+
types: filters?.types,
|
|
28
|
+
since: filters?.since,
|
|
29
|
+
minAccess: filters?.min_access,
|
|
30
|
+
});
|
|
31
|
+
// 2. Build exported memories
|
|
32
|
+
const exportedMemories = memories.map(m => ({
|
|
33
|
+
id: m.id,
|
|
34
|
+
content: m.content,
|
|
35
|
+
type: m.type,
|
|
36
|
+
project: m.project,
|
|
37
|
+
tags: m.tags,
|
|
38
|
+
entities: m.entities,
|
|
39
|
+
source: m.source,
|
|
40
|
+
source_type: m.source_type ?? null,
|
|
41
|
+
visibility: m.visibility ?? 'project-only',
|
|
42
|
+
created_at: m.created_at,
|
|
43
|
+
access_count: m.access_count ?? 0,
|
|
44
|
+
staleness_score: m.staleness_score ?? 0,
|
|
45
|
+
}));
|
|
46
|
+
// 3. Collect unique entities from all memories
|
|
47
|
+
const entitySet = new Set();
|
|
48
|
+
for (const m of exportedMemories) {
|
|
49
|
+
for (const e of m.entities) {
|
|
50
|
+
entitySet.add(e);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// 4. Fetch entity connections from Neo4j
|
|
54
|
+
const exportedEntities = [];
|
|
55
|
+
let totalRelationships = 0;
|
|
56
|
+
for (const entityName of entitySet) {
|
|
57
|
+
try {
|
|
58
|
+
const graphResult = await neo4j.traverse(entityName, 1);
|
|
59
|
+
const connections = graphResult.connections.map(c => ({
|
|
60
|
+
entity: c.entity,
|
|
61
|
+
relation: c.relation,
|
|
62
|
+
direction: c.direction,
|
|
63
|
+
}));
|
|
64
|
+
totalRelationships += connections.length;
|
|
65
|
+
// Determine project from memories that reference this entity
|
|
66
|
+
const memoriesWithEntity = exportedMemories.filter(m => m.entities.includes(entityName));
|
|
67
|
+
const project = memoriesWithEntity[0]?.project ?? null;
|
|
68
|
+
exportedEntities.push({
|
|
69
|
+
name: entityName,
|
|
70
|
+
project,
|
|
71
|
+
connections,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Neo4j may be unavailable — export entity without connections
|
|
76
|
+
const memoriesWithEntity = exportedMemories.filter(m => m.entities.includes(entityName));
|
|
77
|
+
exportedEntities.push({
|
|
78
|
+
name: entityName,
|
|
79
|
+
project: memoriesWithEntity[0]?.project ?? null,
|
|
80
|
+
connections: [],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// 5. Fetch project links
|
|
85
|
+
const projects = filters?.project
|
|
86
|
+
? [filters.project]
|
|
87
|
+
: [...new Set(exportedMemories.map(m => m.project).filter(Boolean))];
|
|
88
|
+
const projectLinks = sqlite.getProjectLinksForProjects(projects);
|
|
89
|
+
const exportedLinks = projectLinks.map(pl => ({
|
|
90
|
+
project_a: pl.project_a,
|
|
91
|
+
project_b: pl.project_b,
|
|
92
|
+
}));
|
|
93
|
+
// 6. Assemble export
|
|
94
|
+
return {
|
|
95
|
+
version: getVersion(),
|
|
96
|
+
exported_at: new Date().toISOString(),
|
|
97
|
+
source_instance: hostname(),
|
|
98
|
+
filters: {
|
|
99
|
+
project: filters?.project ?? null,
|
|
100
|
+
types: filters?.types ?? null,
|
|
101
|
+
date_range: filters?.since ?? null,
|
|
102
|
+
min_access: filters?.min_access ?? null,
|
|
103
|
+
},
|
|
104
|
+
data: {
|
|
105
|
+
memories: exportedMemories,
|
|
106
|
+
entities: exportedEntities,
|
|
107
|
+
project_links: exportedLinks,
|
|
108
|
+
},
|
|
109
|
+
stats: {
|
|
110
|
+
memories: exportedMemories.length,
|
|
111
|
+
entities: exportedEntities.length,
|
|
112
|
+
relationships: totalRelationships,
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../src/portability/exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SQLiteStore } from '../storage/sqlite.js';
|
|
2
|
+
import type { QdrantStore } from '../storage/qdrant.js';
|
|
3
|
+
import type { Neo4jStore } from '../storage/neo4j.js';
|
|
4
|
+
import type { Embedder } from '../embedding/embedder.js';
|
|
5
|
+
import type { CortexExportData, ImportResult } from '../types/index.js';
|
|
6
|
+
export declare function validateExportData(raw: unknown): CortexExportData;
|
|
7
|
+
export declare function importMemories(data: CortexExportData, sqlite: SQLiteStore, qdrant: QdrantStore, neo4j: Neo4jStore, embedder: Embedder, options?: {
|
|
8
|
+
merge?: boolean;
|
|
9
|
+
dryRun?: boolean;
|
|
10
|
+
projectOverride?: string;
|
|
11
|
+
}): Promise<ImportResult>;
|
|
12
|
+
//# sourceMappingURL=importer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../src/portability/importer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EACV,gBAAgB,EAKhB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAU3B,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAkCjE;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GACL,OAAO,CAAC,YAAY,CAAC,CAsIvB"}
|