@cleocode/core 2026.4.51 → 2026.4.52
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/dist/index.js +66 -32
- package/dist/index.js.map +3 -3
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +221 -36
- package/dist/internal.js.map +4 -4
- package/dist/memory/brain-export.d.ts +70 -0
- package/dist/memory/brain-export.d.ts.map +1 -0
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/store/brain-schema.d.ts +16 -0
- package/dist/store/brain-schema.d.ts.map +1 -1
- package/dist/validation/verification.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/internal.ts +7 -0
- package/src/memory/brain-embedding.ts +1 -1
- package/src/memory/brain-export.ts +286 -0
- package/src/memory/brain-retrieval.ts +80 -14
- package/src/memory/brain-similarity.ts +1 -1
- package/src/memory/claude-mem-migration.ts +1 -1
- package/src/sessions/briefing.ts +1 -1
- package/src/skills/dispatch.ts +1 -1
- package/src/skills/injection/subagent.ts +1 -1
- package/src/skills/orchestrator/spawn.ts +1 -1
- package/src/store/brain-schema.ts +4 -0
- package/src/store/json.ts +2 -2
- package/src/system/archive-analytics.ts +1 -1
- package/src/tasks/task-ops.ts +2 -2
- package/src/validation/verification.ts +2 -6
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain graph export functionality — GEXF (Gephi standard) and JSON formats.
|
|
3
|
+
*
|
|
4
|
+
* Exports brain_page_nodes and brain_page_edges as:
|
|
5
|
+
* - GEXF XML: Gephi-compatible graph interchange format with attributes
|
|
6
|
+
* - JSON: Flat array representation for tooling integration
|
|
7
|
+
*
|
|
8
|
+
* @task T626-M6
|
|
9
|
+
* @epic T626
|
|
10
|
+
*/
|
|
11
|
+
import type { BrainPageEdgeRow, BrainPageNodeRow } from '../store/brain-schema.js';
|
|
12
|
+
/**
|
|
13
|
+
* GEXF export result with XML content.
|
|
14
|
+
*/
|
|
15
|
+
export interface BrainExportGexfResult {
|
|
16
|
+
success: boolean;
|
|
17
|
+
format: 'gexf';
|
|
18
|
+
nodeCount: number;
|
|
19
|
+
edgeCount: number;
|
|
20
|
+
content: string;
|
|
21
|
+
generatedAt: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* JSON export result with nodes and edges arrays.
|
|
25
|
+
*/
|
|
26
|
+
export interface BrainExportJsonResult {
|
|
27
|
+
success: boolean;
|
|
28
|
+
format: 'json';
|
|
29
|
+
nodeCount: number;
|
|
30
|
+
edgeCount: number;
|
|
31
|
+
nodes: BrainPageNodeRow[];
|
|
32
|
+
edges: BrainPageEdgeRow[];
|
|
33
|
+
generatedAt: string;
|
|
34
|
+
}
|
|
35
|
+
export type BrainExportResult = BrainExportGexfResult | BrainExportJsonResult;
|
|
36
|
+
/**
|
|
37
|
+
* Export brain graph as GEXF XML (Gephi standard format).
|
|
38
|
+
*
|
|
39
|
+
* Generates a valid GEXF 1.3 document with:
|
|
40
|
+
* - Node elements with attributes (type, quality, label)
|
|
41
|
+
* - Edge elements with weight and provenance
|
|
42
|
+
* - Static, directed graph
|
|
43
|
+
*
|
|
44
|
+
* @param projectRoot - Root directory of the CLEO project
|
|
45
|
+
* @returns GEXF XML export result
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const result = await exportBrainAsGexf('/path/to/project');
|
|
50
|
+
* console.log(result.content); // Valid XML for import into Gephi
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function exportBrainAsGexf(projectRoot: string): Promise<BrainExportGexfResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Export brain graph as JSON.
|
|
56
|
+
*
|
|
57
|
+
* Outputs nodes and edges as flat arrays for programmatic processing.
|
|
58
|
+
* Suitable for visualization libraries and data integration.
|
|
59
|
+
*
|
|
60
|
+
* @param projectRoot - Root directory of the CLEO project
|
|
61
|
+
* @returns JSON export result with nodes and edges arrays
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* const result = await exportBrainAsJson('/path/to/project');
|
|
66
|
+
* console.log(JSON.stringify(result, null, 2)); // Pretty-printed JSON
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function exportBrainAsJson(projectRoot: string): Promise<BrainExportJsonResult>;
|
|
70
|
+
//# sourceMappingURL=brain-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-export.d.ts","sourceRoot":"","sources":["../../src/memory/brain-export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAInF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwD3F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAsD3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain-retrieval.d.ts","sourceRoot":"","sources":["../../src/memory/brain-retrieval.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"brain-retrieval.d.ts","sourceRoot":"","sources":["../../src/memory/brain-retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -2113,6 +2113,22 @@ export declare const brainRetrievalLog: import("drizzle-orm/sqlite-core").SQLite
|
|
|
2113
2113
|
identity: undefined;
|
|
2114
2114
|
generated: undefined;
|
|
2115
2115
|
}, {}>;
|
|
2116
|
+
sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
2117
|
+
name: string;
|
|
2118
|
+
tableName: "brain_retrieval_log";
|
|
2119
|
+
dataType: "string";
|
|
2120
|
+
data: string;
|
|
2121
|
+
driverParam: string;
|
|
2122
|
+
notNull: false;
|
|
2123
|
+
hasDefault: false;
|
|
2124
|
+
isPrimaryKey: false;
|
|
2125
|
+
isAutoincrement: false;
|
|
2126
|
+
hasRuntimeDefault: false;
|
|
2127
|
+
enumValues: [string, ...string[]];
|
|
2128
|
+
baseColumn: never;
|
|
2129
|
+
identity: undefined;
|
|
2130
|
+
generated: undefined;
|
|
2131
|
+
}, {}>;
|
|
2116
2132
|
createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
2117
2133
|
name: string;
|
|
2118
2134
|
tableName: "brain_retrieval_log";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain-schema.d.ts","sourceRoot":"","sources":["../../src/store/brain-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"brain-schema.d.ts","sourceRoot":"","sources":["../../src/store/brain-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/validation/verification.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/validation/verification.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/core",
|
|
3
|
-
"version": "2026.4.
|
|
3
|
+
"version": "2026.4.52",
|
|
4
4
|
"description": "CLEO core business logic kernel — tasks, sessions, memory, orchestration, lifecycle, with bundled SQLite store",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -63,13 +63,13 @@
|
|
|
63
63
|
"write-file-atomic": "^7.0.1",
|
|
64
64
|
"yaml": "^2.8.3",
|
|
65
65
|
"zod": "^4.3.6",
|
|
66
|
-
"@cleocode/adapters": "2026.4.
|
|
67
|
-
"@cleocode/agents": "2026.4.
|
|
68
|
-
"@cleocode/caamp": "2026.4.
|
|
69
|
-
"@cleocode/contracts": "2026.4.
|
|
70
|
-
"@cleocode/lafs": "2026.4.
|
|
71
|
-
"@cleocode/
|
|
72
|
-
"@cleocode/
|
|
66
|
+
"@cleocode/adapters": "2026.4.52",
|
|
67
|
+
"@cleocode/agents": "2026.4.52",
|
|
68
|
+
"@cleocode/caamp": "2026.4.52",
|
|
69
|
+
"@cleocode/contracts": "2026.4.52",
|
|
70
|
+
"@cleocode/lafs": "2026.4.52",
|
|
71
|
+
"@cleocode/nexus": "2026.4.52",
|
|
72
|
+
"@cleocode/skills": "2026.4.52"
|
|
73
73
|
},
|
|
74
74
|
"engines": {
|
|
75
75
|
"node": ">=24.0.0"
|
package/src/internal.ts
CHANGED
|
@@ -170,6 +170,13 @@ export { STAGE_DEFINITIONS } from './lifecycle/stages.js';
|
|
|
170
170
|
export { instantiateTessera, showTessera } from './lifecycle/tessera-engine.js';
|
|
171
171
|
export type { BrainBackfillResult } from './memory/brain-backfill.js';
|
|
172
172
|
export { backfillBrainGraph } from './memory/brain-backfill.js';
|
|
173
|
+
// Memory — brain export (T626-M6)
|
|
174
|
+
export type {
|
|
175
|
+
BrainExportGexfResult,
|
|
176
|
+
BrainExportJsonResult,
|
|
177
|
+
BrainExportResult,
|
|
178
|
+
} from './memory/brain-export.js';
|
|
179
|
+
export { exportBrainAsGexf, exportBrainAsJson } from './memory/brain-export.js';
|
|
173
180
|
// Memory — brain lifecycle (temporal decay + consolidation + tier promotion)
|
|
174
181
|
export type {
|
|
175
182
|
ConsolidationResult,
|
|
@@ -56,7 +56,7 @@ export function clearEmbeddingProvider(): void {
|
|
|
56
56
|
* Returns null when no provider is set or not available (FTS5-only fallback).
|
|
57
57
|
*/
|
|
58
58
|
export async function embedText(text: string): Promise<Float32Array | null> {
|
|
59
|
-
if (!currentProvider
|
|
59
|
+
if (!currentProvider?.isAvailable()) return null;
|
|
60
60
|
return currentProvider.embed(text);
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain graph export functionality — GEXF (Gephi standard) and JSON formats.
|
|
3
|
+
*
|
|
4
|
+
* Exports brain_page_nodes and brain_page_edges as:
|
|
5
|
+
* - GEXF XML: Gephi-compatible graph interchange format with attributes
|
|
6
|
+
* - JSON: Flat array representation for tooling integration
|
|
7
|
+
*
|
|
8
|
+
* @task T626-M6
|
|
9
|
+
* @epic T626
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { BrainPageEdgeRow, BrainPageNodeRow } from '../store/brain-schema.js';
|
|
13
|
+
import * as brainSchema from '../store/brain-schema.js';
|
|
14
|
+
import { getBrainDb } from '../store/brain-sqlite.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* GEXF export result with XML content.
|
|
18
|
+
*/
|
|
19
|
+
export interface BrainExportGexfResult {
|
|
20
|
+
success: boolean;
|
|
21
|
+
format: 'gexf';
|
|
22
|
+
nodeCount: number;
|
|
23
|
+
edgeCount: number;
|
|
24
|
+
content: string;
|
|
25
|
+
generatedAt: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* JSON export result with nodes and edges arrays.
|
|
30
|
+
*/
|
|
31
|
+
export interface BrainExportJsonResult {
|
|
32
|
+
success: boolean;
|
|
33
|
+
format: 'json';
|
|
34
|
+
nodeCount: number;
|
|
35
|
+
edgeCount: number;
|
|
36
|
+
nodes: BrainPageNodeRow[];
|
|
37
|
+
edges: BrainPageEdgeRow[];
|
|
38
|
+
generatedAt: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export type BrainExportResult = BrainExportGexfResult | BrainExportJsonResult;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Export brain graph as GEXF XML (Gephi standard format).
|
|
45
|
+
*
|
|
46
|
+
* Generates a valid GEXF 1.3 document with:
|
|
47
|
+
* - Node elements with attributes (type, quality, label)
|
|
48
|
+
* - Edge elements with weight and provenance
|
|
49
|
+
* - Static, directed graph
|
|
50
|
+
*
|
|
51
|
+
* @param projectRoot - Root directory of the CLEO project
|
|
52
|
+
* @returns GEXF XML export result
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* const result = await exportBrainAsGexf('/path/to/project');
|
|
57
|
+
* console.log(result.content); // Valid XML for import into Gephi
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export async function exportBrainAsGexf(projectRoot: string): Promise<BrainExportGexfResult> {
|
|
61
|
+
const db = await getBrainDb(projectRoot);
|
|
62
|
+
|
|
63
|
+
// Fetch all nodes and edges using basic select without provenance column
|
|
64
|
+
// This handles older schemas gracefully
|
|
65
|
+
let nodes: BrainPageNodeRow[] = [];
|
|
66
|
+
let edges: BrainPageEdgeRow[] = [];
|
|
67
|
+
|
|
68
|
+
try {
|
|
69
|
+
nodes = await db
|
|
70
|
+
.select({
|
|
71
|
+
id: brainSchema.brainPageNodes.id,
|
|
72
|
+
nodeType: brainSchema.brainPageNodes.nodeType,
|
|
73
|
+
label: brainSchema.brainPageNodes.label,
|
|
74
|
+
qualityScore: brainSchema.brainPageNodes.qualityScore,
|
|
75
|
+
contentHash: brainSchema.brainPageNodes.contentHash,
|
|
76
|
+
lastActivityAt: brainSchema.brainPageNodes.lastActivityAt,
|
|
77
|
+
metadataJson: brainSchema.brainPageNodes.metadataJson,
|
|
78
|
+
createdAt: brainSchema.brainPageNodes.createdAt,
|
|
79
|
+
updatedAt: brainSchema.brainPageNodes.updatedAt,
|
|
80
|
+
})
|
|
81
|
+
.from(brainSchema.brainPageNodes);
|
|
82
|
+
} catch {
|
|
83
|
+
// If the graph nodes table doesn't exist, default to empty
|
|
84
|
+
nodes = [];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
try {
|
|
88
|
+
// Select edges without the provenance column to handle older schemas
|
|
89
|
+
const rawEdges = await db
|
|
90
|
+
.select({
|
|
91
|
+
fromId: brainSchema.brainPageEdges.fromId,
|
|
92
|
+
toId: brainSchema.brainPageEdges.toId,
|
|
93
|
+
edgeType: brainSchema.brainPageEdges.edgeType,
|
|
94
|
+
weight: brainSchema.brainPageEdges.weight,
|
|
95
|
+
createdAt: brainSchema.brainPageEdges.createdAt,
|
|
96
|
+
})
|
|
97
|
+
.from(brainSchema.brainPageEdges);
|
|
98
|
+
// Add provenance as null for missing rows and cast to the full row type
|
|
99
|
+
edges = rawEdges.map((e) => ({ ...e, provenance: null }) as BrainPageEdgeRow);
|
|
100
|
+
} catch {
|
|
101
|
+
// If that fails, default to empty
|
|
102
|
+
edges = [];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Build GEXF document
|
|
106
|
+
const gexf = buildGexfDocument(nodes, edges);
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
success: true,
|
|
110
|
+
format: 'gexf',
|
|
111
|
+
nodeCount: nodes.length,
|
|
112
|
+
edgeCount: edges.length,
|
|
113
|
+
content: gexf,
|
|
114
|
+
generatedAt: new Date().toISOString(),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Export brain graph as JSON.
|
|
120
|
+
*
|
|
121
|
+
* Outputs nodes and edges as flat arrays for programmatic processing.
|
|
122
|
+
* Suitable for visualization libraries and data integration.
|
|
123
|
+
*
|
|
124
|
+
* @param projectRoot - Root directory of the CLEO project
|
|
125
|
+
* @returns JSON export result with nodes and edges arrays
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* const result = await exportBrainAsJson('/path/to/project');
|
|
130
|
+
* console.log(JSON.stringify(result, null, 2)); // Pretty-printed JSON
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export async function exportBrainAsJson(projectRoot: string): Promise<BrainExportJsonResult> {
|
|
134
|
+
const db = await getBrainDb(projectRoot);
|
|
135
|
+
|
|
136
|
+
// Fetch all nodes and edges using basic select without provenance column
|
|
137
|
+
// This handles older schemas gracefully
|
|
138
|
+
let nodes: BrainPageNodeRow[] = [];
|
|
139
|
+
let edges: BrainPageEdgeRow[] = [];
|
|
140
|
+
|
|
141
|
+
try {
|
|
142
|
+
nodes = await db
|
|
143
|
+
.select({
|
|
144
|
+
id: brainSchema.brainPageNodes.id,
|
|
145
|
+
nodeType: brainSchema.brainPageNodes.nodeType,
|
|
146
|
+
label: brainSchema.brainPageNodes.label,
|
|
147
|
+
qualityScore: brainSchema.brainPageNodes.qualityScore,
|
|
148
|
+
contentHash: brainSchema.brainPageNodes.contentHash,
|
|
149
|
+
lastActivityAt: brainSchema.brainPageNodes.lastActivityAt,
|
|
150
|
+
metadataJson: brainSchema.brainPageNodes.metadataJson,
|
|
151
|
+
createdAt: brainSchema.brainPageNodes.createdAt,
|
|
152
|
+
updatedAt: brainSchema.brainPageNodes.updatedAt,
|
|
153
|
+
})
|
|
154
|
+
.from(brainSchema.brainPageNodes);
|
|
155
|
+
} catch {
|
|
156
|
+
// If the graph nodes table doesn't exist, default to empty
|
|
157
|
+
nodes = [];
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
// Select edges without the provenance column to handle older schemas
|
|
162
|
+
const rawEdges = await db
|
|
163
|
+
.select({
|
|
164
|
+
fromId: brainSchema.brainPageEdges.fromId,
|
|
165
|
+
toId: brainSchema.brainPageEdges.toId,
|
|
166
|
+
edgeType: brainSchema.brainPageEdges.edgeType,
|
|
167
|
+
weight: brainSchema.brainPageEdges.weight,
|
|
168
|
+
createdAt: brainSchema.brainPageEdges.createdAt,
|
|
169
|
+
})
|
|
170
|
+
.from(brainSchema.brainPageEdges);
|
|
171
|
+
// Add provenance as null for missing rows and cast to the full row type
|
|
172
|
+
edges = rawEdges.map((e) => ({ ...e, provenance: null }) as BrainPageEdgeRow);
|
|
173
|
+
} catch {
|
|
174
|
+
// If that fails, default to empty
|
|
175
|
+
edges = [];
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
success: true,
|
|
180
|
+
format: 'json',
|
|
181
|
+
nodeCount: nodes.length,
|
|
182
|
+
edgeCount: edges.length,
|
|
183
|
+
nodes,
|
|
184
|
+
edges,
|
|
185
|
+
generatedAt: new Date().toISOString(),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Build a GEXF 1.3 XML document from nodes and edges.
|
|
191
|
+
*
|
|
192
|
+
* GEXF structure:
|
|
193
|
+
* - gexf@xmlns, @version
|
|
194
|
+
* - graph@mode=static, @defaultedgetype=directed
|
|
195
|
+
* - nodes with attvalues (node_type, quality_score, label)
|
|
196
|
+
* - edges with attributes (edge_type, weight, provenance)
|
|
197
|
+
*
|
|
198
|
+
* @param nodes - Array of brain page nodes
|
|
199
|
+
* @param edges - Array of brain page edges
|
|
200
|
+
* @returns Valid GEXF 1.3 XML string
|
|
201
|
+
*/
|
|
202
|
+
function buildGexfDocument(nodes: BrainPageNodeRow[], edges: BrainPageEdgeRow[]): string {
|
|
203
|
+
const lines: string[] = [
|
|
204
|
+
'<?xml version="1.0" encoding="UTF-8"?>',
|
|
205
|
+
'<gexf xmlns="http://www.gexf.net/1.3draft" version="1.3">',
|
|
206
|
+
' <meta lastmodifieddate="' + new Date().toISOString() + '">',
|
|
207
|
+
' <creator>CLEO Brain Export (T626-M6)</creator>',
|
|
208
|
+
' <description>Living brain knowledge graph (brain_page_nodes + brain_page_edges)</description>',
|
|
209
|
+
' </meta>',
|
|
210
|
+
' <graph mode="static" defaultedgetype="directed">',
|
|
211
|
+
];
|
|
212
|
+
|
|
213
|
+
// Define node attributes schema
|
|
214
|
+
lines.push(' <attributes class="node">');
|
|
215
|
+
lines.push(' <attribute id="node_type" title="Node Type" type="string"/>');
|
|
216
|
+
lines.push(' <attribute id="quality_score" title="Quality Score" type="double"/>');
|
|
217
|
+
lines.push(' <attribute id="content_hash" title="Content Hash" type="string"/>');
|
|
218
|
+
lines.push(' <attribute id="last_activity_at" title="Last Activity" type="string"/>');
|
|
219
|
+
lines.push(' <attribute id="created_at" title="Created At" type="string"/>');
|
|
220
|
+
lines.push(' </attributes>');
|
|
221
|
+
|
|
222
|
+
// Define edge attributes schema
|
|
223
|
+
lines.push(' <attributes class="edge">');
|
|
224
|
+
lines.push(' <attribute id="edge_type" title="Edge Type" type="string"/>');
|
|
225
|
+
lines.push(' <attribute id="provenance" title="Provenance" type="string"/>');
|
|
226
|
+
lines.push(' <attribute id="created_at" title="Created At" type="string"/>');
|
|
227
|
+
lines.push(' </attributes>');
|
|
228
|
+
|
|
229
|
+
// Add nodes
|
|
230
|
+
lines.push(' <nodes>');
|
|
231
|
+
for (const node of nodes) {
|
|
232
|
+
lines.push(` <node id="${escapeXml(node.id)}" label="${escapeXml(node.label)}">`);
|
|
233
|
+
lines.push(' <attvalues>');
|
|
234
|
+
lines.push(` <attvalue for="node_type" value="${escapeXml(node.nodeType)}"/>`);
|
|
235
|
+
lines.push(` <attvalue for="quality_score" value="${node.qualityScore ?? 0.5}"/>`);
|
|
236
|
+
if (node.contentHash) {
|
|
237
|
+
lines.push(` <attvalue for="content_hash" value="${escapeXml(node.contentHash)}"/>`);
|
|
238
|
+
}
|
|
239
|
+
lines.push(
|
|
240
|
+
` <attvalue for="last_activity_at" value="${escapeXml(node.lastActivityAt)}"/>`,
|
|
241
|
+
);
|
|
242
|
+
lines.push(` <attvalue for="created_at" value="${escapeXml(node.createdAt)}"/>`);
|
|
243
|
+
lines.push(' </attvalues>');
|
|
244
|
+
lines.push(' </node>');
|
|
245
|
+
}
|
|
246
|
+
lines.push(' </nodes>');
|
|
247
|
+
|
|
248
|
+
// Add edges
|
|
249
|
+
lines.push(' <edges>');
|
|
250
|
+
for (let i = 0; i < edges.length; i++) {
|
|
251
|
+
const edge = edges[i];
|
|
252
|
+
const weight = edge.weight ?? 1.0;
|
|
253
|
+
lines.push(
|
|
254
|
+
` <edge id="${i}" source="${escapeXml(edge.fromId)}" target="${escapeXml(edge.toId)}" weight="${weight}">`,
|
|
255
|
+
);
|
|
256
|
+
lines.push(' <attvalues>');
|
|
257
|
+
lines.push(` <attvalue for="edge_type" value="${escapeXml(edge.edgeType)}"/>`);
|
|
258
|
+
if (edge.provenance) {
|
|
259
|
+
lines.push(` <attvalue for="provenance" value="${escapeXml(edge.provenance)}"/>`);
|
|
260
|
+
}
|
|
261
|
+
lines.push(` <attvalue for="created_at" value="${escapeXml(edge.createdAt)}"/>`);
|
|
262
|
+
lines.push(' </attvalues>');
|
|
263
|
+
lines.push(' </edge>');
|
|
264
|
+
}
|
|
265
|
+
lines.push(' </edges>');
|
|
266
|
+
|
|
267
|
+
lines.push(' </graph>');
|
|
268
|
+
lines.push('</gexf>');
|
|
269
|
+
|
|
270
|
+
return lines.join('\n');
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Escape XML special characters to prevent injection/parsing errors.
|
|
275
|
+
*
|
|
276
|
+
* @param text - Text to escape
|
|
277
|
+
* @returns XML-safe string
|
|
278
|
+
*/
|
|
279
|
+
function escapeXml(text: string): string {
|
|
280
|
+
return text
|
|
281
|
+
.replace(/&/g, '&')
|
|
282
|
+
.replace(/</g, '<')
|
|
283
|
+
.replace(/>/g, '>')
|
|
284
|
+
.replace(/"/g, '"')
|
|
285
|
+
.replace(/'/g, ''');
|
|
286
|
+
}
|
|
@@ -259,9 +259,18 @@ export async function searchBrainCompact(
|
|
|
259
259
|
const returnedIds = results.map((r) => r.id);
|
|
260
260
|
setImmediate(() => {
|
|
261
261
|
incrementCitationCounts(projectRoot, returnedIds).catch(() => {});
|
|
262
|
-
|
|
263
|
-
() => {
|
|
264
|
-
|
|
262
|
+
getCurrentSessionId(projectRoot)
|
|
263
|
+
.then((sessionId) => {
|
|
264
|
+
return logRetrieval(
|
|
265
|
+
projectRoot,
|
|
266
|
+
query,
|
|
267
|
+
returnedIds,
|
|
268
|
+
'find-rrf',
|
|
269
|
+
results.length * 50,
|
|
270
|
+
sessionId,
|
|
271
|
+
);
|
|
272
|
+
})
|
|
273
|
+
.catch(() => {});
|
|
265
274
|
});
|
|
266
275
|
}
|
|
267
276
|
|
|
@@ -345,7 +354,18 @@ export async function searchBrainCompact(
|
|
|
345
354
|
const returnedIds = results.map((r) => r.id);
|
|
346
355
|
setImmediate(() => {
|
|
347
356
|
incrementCitationCounts(projectRoot, returnedIds).catch(() => {});
|
|
348
|
-
|
|
357
|
+
getCurrentSessionId(projectRoot)
|
|
358
|
+
.then((sessionId) => {
|
|
359
|
+
return logRetrieval(
|
|
360
|
+
projectRoot,
|
|
361
|
+
query,
|
|
362
|
+
returnedIds,
|
|
363
|
+
'find',
|
|
364
|
+
results.length * 50,
|
|
365
|
+
sessionId,
|
|
366
|
+
);
|
|
367
|
+
})
|
|
368
|
+
.catch(() => {});
|
|
349
369
|
});
|
|
350
370
|
}
|
|
351
371
|
|
|
@@ -604,13 +624,18 @@ export async function fetchBrainEntries(
|
|
|
604
624
|
const fetchedIds = results.map((r) => r.id);
|
|
605
625
|
setImmediate(() => {
|
|
606
626
|
incrementCitationCounts(projectRoot, fetchedIds).catch(() => {});
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
627
|
+
getCurrentSessionId(projectRoot)
|
|
628
|
+
.then((sessionId) => {
|
|
629
|
+
return logRetrieval(
|
|
630
|
+
projectRoot,
|
|
631
|
+
fetchedIds.join(','),
|
|
632
|
+
fetchedIds,
|
|
633
|
+
'fetch',
|
|
634
|
+
results.length * 500,
|
|
635
|
+
sessionId,
|
|
636
|
+
);
|
|
637
|
+
})
|
|
638
|
+
.catch(() => {});
|
|
614
639
|
});
|
|
615
640
|
}
|
|
616
641
|
|
|
@@ -1364,6 +1389,31 @@ export async function retrieveWithBudget(
|
|
|
1364
1389
|
};
|
|
1365
1390
|
}
|
|
1366
1391
|
|
|
1392
|
+
// ============================================================================
|
|
1393
|
+
// Session ID Retrieval (for logRetrieval)
|
|
1394
|
+
// ============================================================================
|
|
1395
|
+
|
|
1396
|
+
/**
|
|
1397
|
+
* Get the current session ID from the session manager.
|
|
1398
|
+
*
|
|
1399
|
+
* This is a best-effort operation — if no session is active or session
|
|
1400
|
+
* manager is unavailable, returns null. Used by logRetrieval to group
|
|
1401
|
+
* retrievals by session for STDP analysis.
|
|
1402
|
+
*
|
|
1403
|
+
* @param projectRoot - Project root directory
|
|
1404
|
+
* @returns Current session ID or null if unavailable
|
|
1405
|
+
*/
|
|
1406
|
+
async function getCurrentSessionId(projectRoot: string): Promise<string | undefined> {
|
|
1407
|
+
try {
|
|
1408
|
+
const { sessionStatus } = await import('../sessions/index.js');
|
|
1409
|
+
const session = await sessionStatus(projectRoot);
|
|
1410
|
+
return session?.id;
|
|
1411
|
+
} catch {
|
|
1412
|
+
// Session manager unavailable or other error — log retrievals without session
|
|
1413
|
+
return undefined;
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1367
1417
|
// ============================================================================
|
|
1368
1418
|
// Citation Count Increment (non-blocking helper)
|
|
1369
1419
|
// ============================================================================
|
|
@@ -1416,6 +1466,13 @@ async function incrementCitationCounts(projectRoot: string, ids: string[]): Prom
|
|
|
1416
1466
|
*
|
|
1417
1467
|
* Creates the table on first use if it doesn't exist (self-healing).
|
|
1418
1468
|
* Best-effort: errors are silently swallowed.
|
|
1469
|
+
*
|
|
1470
|
+
* @param projectRoot - Project root directory
|
|
1471
|
+
* @param query - The search query or fetch IDs
|
|
1472
|
+
* @param entryIds - Array of entry IDs returned in this retrieval
|
|
1473
|
+
* @param source - Retrieval source ('find', 'fetch', 'hybrid', 'timeline', 'budget')
|
|
1474
|
+
* @param tokensUsed - Estimated tokens consumed (optional)
|
|
1475
|
+
* @param sessionId - Session ID for grouping retrievals by session (optional, soft FK to tasks.db)
|
|
1419
1476
|
*/
|
|
1420
1477
|
async function logRetrieval(
|
|
1421
1478
|
projectRoot: string,
|
|
@@ -1423,6 +1480,7 @@ async function logRetrieval(
|
|
|
1423
1480
|
entryIds: string[],
|
|
1424
1481
|
source: string,
|
|
1425
1482
|
tokensUsed?: number,
|
|
1483
|
+
sessionId?: string,
|
|
1426
1484
|
): Promise<void> {
|
|
1427
1485
|
if (entryIds.length === 0) return;
|
|
1428
1486
|
|
|
@@ -1431,7 +1489,7 @@ async function logRetrieval(
|
|
|
1431
1489
|
const nativeDb = getBrainNativeDb();
|
|
1432
1490
|
if (!nativeDb) return;
|
|
1433
1491
|
|
|
1434
|
-
// Self-healing: create table if not exists
|
|
1492
|
+
// Self-healing: create table if not exists (includes session_id column)
|
|
1435
1493
|
const createSql =
|
|
1436
1494
|
'CREATE TABLE IF NOT EXISTS brain_retrieval_log (' +
|
|
1437
1495
|
'id INTEGER PRIMARY KEY AUTOINCREMENT,' +
|
|
@@ -1440,6 +1498,7 @@ async function logRetrieval(
|
|
|
1440
1498
|
'entry_count INTEGER NOT NULL,' +
|
|
1441
1499
|
'source TEXT NOT NULL,' +
|
|
1442
1500
|
'tokens_used INTEGER,' +
|
|
1501
|
+
'session_id TEXT,' +
|
|
1443
1502
|
"created_at TEXT NOT NULL DEFAULT (datetime('now'))" +
|
|
1444
1503
|
')';
|
|
1445
1504
|
try {
|
|
@@ -1451,9 +1510,16 @@ async function logRetrieval(
|
|
|
1451
1510
|
try {
|
|
1452
1511
|
nativeDb
|
|
1453
1512
|
.prepare(
|
|
1454
|
-
'INSERT INTO brain_retrieval_log (query, entry_ids, entry_count, source, tokens_used) VALUES (?, ?, ?, ?, ?)',
|
|
1513
|
+
'INSERT INTO brain_retrieval_log (query, entry_ids, entry_count, source, tokens_used, session_id) VALUES (?, ?, ?, ?, ?, ?)',
|
|
1455
1514
|
)
|
|
1456
|
-
.run(
|
|
1515
|
+
.run(
|
|
1516
|
+
query,
|
|
1517
|
+
entryIds.join(','),
|
|
1518
|
+
entryIds.length,
|
|
1519
|
+
source,
|
|
1520
|
+
tokensUsed ?? null,
|
|
1521
|
+
sessionId ?? null,
|
|
1522
|
+
);
|
|
1457
1523
|
} catch {
|
|
1458
1524
|
/* best-effort */
|
|
1459
1525
|
}
|
|
@@ -61,7 +61,7 @@ export async function searchSimilar(
|
|
|
61
61
|
projectRoot: string,
|
|
62
62
|
limit?: number,
|
|
63
63
|
): Promise<SimilarityResult[]> {
|
|
64
|
-
if (!query
|
|
64
|
+
if (!query?.trim()) return [];
|
|
65
65
|
if (!isEmbeddingAvailable()) return [];
|
|
66
66
|
|
|
67
67
|
const maxResults = limit ?? 10;
|