@grackle-ai/knowledge 0.61.3 → 0.62.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/dist/expand.d.ts +42 -0
- package/dist/expand.d.ts.map +1 -0
- package/dist/expand.js +150 -0
- package/dist/expand.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/node-store.d.ts +6 -0
- package/dist/node-store.d.ts.map +1 -1
- package/dist/node-store.js +3 -1
- package/dist/node-store.js.map +1 -1
- package/dist/reference-sync.d.ts +76 -0
- package/dist/reference-sync.d.ts.map +1 -0
- package/dist/reference-sync.js +164 -0
- package/dist/reference-sync.js.map +1 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +7 -28
- package/dist/search.js.map +1 -1
- package/package.json +2 -2
package/dist/expand.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph expansion — traverse the knowledge graph from a starting node
|
|
3
|
+
* to discover connected nodes within N hops.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { KnowledgeNode, KnowledgeEdge, EdgeType } from "./types.js";
|
|
8
|
+
import type { SearchResult } from "./search.js";
|
|
9
|
+
/** Options for graph expansion. */
|
|
10
|
+
export interface ExpandOptions {
|
|
11
|
+
/** Max traversal depth (default 1). */
|
|
12
|
+
depth?: number;
|
|
13
|
+
/** Only follow edges of these types. If empty/undefined, follow all. */
|
|
14
|
+
edgeTypes?: EdgeType[];
|
|
15
|
+
}
|
|
16
|
+
/** Result of a graph expansion: the subgraph reachable from the starting node(s). */
|
|
17
|
+
export interface ExpansionResult {
|
|
18
|
+
/** All neighbor nodes found (deduplicated), excluding the start node(s). */
|
|
19
|
+
nodes: KnowledgeNode[];
|
|
20
|
+
/** All edges traversed. */
|
|
21
|
+
edges: KnowledgeEdge[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Expand a single node: return its neighbors within N hops.
|
|
25
|
+
*
|
|
26
|
+
* @param nodeId - The starting node ID.
|
|
27
|
+
* @param options - Traversal depth and optional edge type filter.
|
|
28
|
+
* @returns Neighbor nodes and traversed edges (deduplicated).
|
|
29
|
+
*/
|
|
30
|
+
export declare function expandNode(nodeId: string, options?: ExpandOptions): Promise<ExpansionResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Expand search results: return neighbors of all result nodes, deduplicated.
|
|
33
|
+
*
|
|
34
|
+
* Runs {@link expandNode} for each search result and merges the subgraphs,
|
|
35
|
+
* excluding the original search result nodes from the neighbor list.
|
|
36
|
+
*
|
|
37
|
+
* @param results - Search results from {@link knowledgeSearch}.
|
|
38
|
+
* @param options - Traversal depth and optional edge type filter.
|
|
39
|
+
* @returns Combined neighbor nodes and edges from all start nodes.
|
|
40
|
+
*/
|
|
41
|
+
export declare function expandResults(results: SearchResult[], options?: ExpandOptions): Promise<ExpansionResult>;
|
|
42
|
+
//# sourceMappingURL=expand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,2BAA2B;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAiFD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,eAAe,CAAC,CA8C1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,eAAe,CAAC,CAiB1B"}
|
package/dist/expand.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph expansion — traverse the knowledge graph from a starting node
|
|
3
|
+
* to discover connected nodes within N hops.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { getSession } from "./client.js";
|
|
8
|
+
import { logger } from "./logger.js";
|
|
9
|
+
import { NODE_LABEL } from "./constants.js";
|
|
10
|
+
import { recordToNode, recordToEdge } from "./node-store.js";
|
|
11
|
+
import { EDGE_TYPE } from "./types.js";
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Constants
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
/** Default traversal depth. */
|
|
16
|
+
const DEFAULT_DEPTH = 1;
|
|
17
|
+
/** Known edge type values for runtime validation. */
|
|
18
|
+
const VALID_EDGE_TYPES = new Set(Object.values(EDGE_TYPE));
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Cypher
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/**
|
|
23
|
+
* Build the Cypher query for variable-length path traversal.
|
|
24
|
+
*
|
|
25
|
+
* When edge types are specified, they are interpolated into the relationship
|
|
26
|
+
* pattern (e.g., `[:RELATES_TO|DEPENDS_ON*1..2]`). This is safe because
|
|
27
|
+
* values are validated against the closed {@link EdgeType} union.
|
|
28
|
+
*/
|
|
29
|
+
function buildExpandCypher(depth, edgeTypes) {
|
|
30
|
+
// Neo4j requires integer literals for variable-length ranges — cannot parameterize.
|
|
31
|
+
let relPattern;
|
|
32
|
+
if (edgeTypes && edgeTypes.length > 0) {
|
|
33
|
+
for (const t of edgeTypes) {
|
|
34
|
+
if (!VALID_EDGE_TYPES.has(t)) {
|
|
35
|
+
throw new Error(`Invalid edge type: "${t}". Must be one of: ${[...VALID_EDGE_TYPES].join(", ")}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
relPattern = `[:${edgeTypes.join("|")}*1..${depth}]`;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
relPattern = `[*1..${depth}]`;
|
|
42
|
+
}
|
|
43
|
+
return `
|
|
44
|
+
MATCH path = (start:${NODE_LABEL} {id: $startId})-${relPattern}-(neighbor:${NODE_LABEL})
|
|
45
|
+
WHERE neighbor.id <> $startId
|
|
46
|
+
UNWIND relationships(path) AS rel
|
|
47
|
+
WITH DISTINCT neighbor,
|
|
48
|
+
collect(DISTINCT {
|
|
49
|
+
fromId: startNode(rel).id,
|
|
50
|
+
toId: endNode(rel).id,
|
|
51
|
+
type: type(rel),
|
|
52
|
+
metadata: rel.metadata,
|
|
53
|
+
createdAt: rel.createdAt
|
|
54
|
+
}) AS rels
|
|
55
|
+
RETURN neighbor, rels`;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Merge two expansion results, deduplicating nodes by ID and edges by
|
|
59
|
+
* (fromId, toId, type) triple.
|
|
60
|
+
*/
|
|
61
|
+
function mergeResults(a, b) {
|
|
62
|
+
const nodeMap = new Map();
|
|
63
|
+
for (const node of [...a.nodes, ...b.nodes]) {
|
|
64
|
+
nodeMap.set(node.id, node);
|
|
65
|
+
}
|
|
66
|
+
const edgeSet = new Set();
|
|
67
|
+
const edges = [];
|
|
68
|
+
for (const edge of [...a.edges, ...b.edges]) {
|
|
69
|
+
const key = `${edge.fromId}:${edge.toId}:${edge.type}`;
|
|
70
|
+
if (!edgeSet.has(key)) {
|
|
71
|
+
edgeSet.add(key);
|
|
72
|
+
edges.push(edge);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { nodes: [...nodeMap.values()], edges };
|
|
76
|
+
}
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
// Public API
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
/**
|
|
81
|
+
* Expand a single node: return its neighbors within N hops.
|
|
82
|
+
*
|
|
83
|
+
* @param nodeId - The starting node ID.
|
|
84
|
+
* @param options - Traversal depth and optional edge type filter.
|
|
85
|
+
* @returns Neighbor nodes and traversed edges (deduplicated).
|
|
86
|
+
*/
|
|
87
|
+
export async function expandNode(nodeId, options) {
|
|
88
|
+
const rawDepth = options?.depth ?? DEFAULT_DEPTH;
|
|
89
|
+
const depth = Number.isFinite(rawDepth) ? Math.max(1, Math.floor(rawDepth)) : DEFAULT_DEPTH;
|
|
90
|
+
const cypher = buildExpandCypher(depth, options?.edgeTypes);
|
|
91
|
+
const session = getSession();
|
|
92
|
+
try {
|
|
93
|
+
const result = await session.run(cypher, { startId: nodeId });
|
|
94
|
+
const nodeMap = new Map();
|
|
95
|
+
const edgeSet = new Set();
|
|
96
|
+
const edges = [];
|
|
97
|
+
for (const record of result.records) {
|
|
98
|
+
const neo4jNode = record.get("neighbor");
|
|
99
|
+
const node = recordToNode(neo4jNode.properties);
|
|
100
|
+
nodeMap.set(node.id, node);
|
|
101
|
+
const rawEdges = record.get("rels");
|
|
102
|
+
for (const raw of rawEdges) {
|
|
103
|
+
if (raw.fromId === null || raw.toId === null) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const edge = recordToEdge(raw);
|
|
107
|
+
const key = `${edge.fromId}:${edge.toId}:${edge.type}`;
|
|
108
|
+
if (!edgeSet.has(key)) {
|
|
109
|
+
edgeSet.add(key);
|
|
110
|
+
edges.push(edge);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
logger.debug({ startId: nodeId, depth, nodes: nodeMap.size, edges: edges.length }, "Graph expansion completed");
|
|
115
|
+
return { nodes: [...nodeMap.values()], edges };
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
try {
|
|
119
|
+
await session.close();
|
|
120
|
+
}
|
|
121
|
+
catch (closeError) {
|
|
122
|
+
logger.warn({ err: closeError }, "Failed to close session after expandNode");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Expand search results: return neighbors of all result nodes, deduplicated.
|
|
128
|
+
*
|
|
129
|
+
* Runs {@link expandNode} for each search result and merges the subgraphs,
|
|
130
|
+
* excluding the original search result nodes from the neighbor list.
|
|
131
|
+
*
|
|
132
|
+
* @param results - Search results from {@link knowledgeSearch}.
|
|
133
|
+
* @param options - Traversal depth and optional edge type filter.
|
|
134
|
+
* @returns Combined neighbor nodes and edges from all start nodes.
|
|
135
|
+
*/
|
|
136
|
+
export async function expandResults(results, options) {
|
|
137
|
+
if (results.length === 0) {
|
|
138
|
+
return { nodes: [], edges: [] };
|
|
139
|
+
}
|
|
140
|
+
const startIds = new Set(results.map((r) => r.node.id));
|
|
141
|
+
let merged = { nodes: [], edges: [] };
|
|
142
|
+
for (const result of results) {
|
|
143
|
+
const expansion = await expandNode(result.node.id, options);
|
|
144
|
+
merged = mergeResults(merged, expansion);
|
|
145
|
+
}
|
|
146
|
+
// Exclude the original search result nodes from the neighbor list
|
|
147
|
+
merged.nodes = merged.nodes.filter((n) => !startIds.has(n.id));
|
|
148
|
+
return merged;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,4 +25,8 @@ export type { CreateReferenceNodeInput, CreateNativeNodeInput, UpdateReferenceNo
|
|
|
25
25
|
export { createEdge, removeEdge } from "./edge-store.js";
|
|
26
26
|
export type { SearchOptions, SearchResult } from "./search.js";
|
|
27
27
|
export { knowledgeSearch } from "./search.js";
|
|
28
|
+
export type { ExpandOptions, ExpansionResult } from "./expand.js";
|
|
29
|
+
export { expandNode, expandResults } from "./expand.js";
|
|
30
|
+
export { findReferenceNodeBySource, deleteReferenceNodeBySource, syncReferenceNode, deriveTaskText, deriveFindingText, } from "./reference-sync.js";
|
|
31
|
+
export type { SyncReferenceNodeInput } from "./reference-sync.js";
|
|
28
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxF,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oCAAoC,EACpC,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxF,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oCAAoC,EACpC,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,4 +18,6 @@ export { createTranscriptChunker } from "./transcript-chunker.js";
|
|
|
18
18
|
export { createReferenceNode, createNativeNode, getNode, deleteNode, updateNode, recordToNode, } from "./node-store.js";
|
|
19
19
|
export { createEdge, removeEdge } from "./edge-store.js";
|
|
20
20
|
export { knowledgeSearch } from "./search.js";
|
|
21
|
+
export { expandNode, expandResults } from "./expand.js";
|
|
22
|
+
export { findReferenceNodeBySource, deleteReferenceNodeBySource, syncReferenceNode, deriveTaskText, deriveFindingText, } from "./reference-sync.js";
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oCAAoC,EACpC,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oCAAoC,EACpC,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
|
package/dist/node-store.d.ts
CHANGED
|
@@ -70,6 +70,12 @@ export interface NodeWithEdges {
|
|
|
70
70
|
* Handles the discriminated union based on the `kind` property.
|
|
71
71
|
*/
|
|
72
72
|
export declare function recordToNode(properties: Record<string, unknown>): KnowledgeNode;
|
|
73
|
+
/**
|
|
74
|
+
* Convert a raw edge object from Cypher `collect()` to a {@link KnowledgeEdge}.
|
|
75
|
+
*
|
|
76
|
+
* @internal Exported for use by search and expand modules within this package.
|
|
77
|
+
*/
|
|
78
|
+
export declare function recordToEdge(raw: Record<string, unknown>): KnowledgeEdge;
|
|
73
79
|
/**
|
|
74
80
|
* Create a reference node in the knowledge graph.
|
|
75
81
|
*
|
package/dist/node-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-store.d.ts","sourceRoot":"","sources":["../src/node-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAEnB,MAAM,YAAY,CAAC;AAMpB,2EAA2E;AAC3E,MAAM,WAAW,wBAAwB;IACvC,wCAAwC;IACxC,UAAU,EAAE,eAAe,CAAC;IAC5B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wEAAwE;AACxE,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,QAAQ,EAAE,cAAc,CAAC;IACzB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oDAAoD;IACpD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sDAAsD;AACtD,MAAM,WAAW,wBAAwB;IACvC,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,mDAAmD;AACnD,MAAM,MAAM,eAAe,GAAG,wBAAwB,GAAG,qBAAqB,CAAC;AAE/E,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,qEAAqE;IACrE,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAsCD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,aAAa,CA4Bf;
|
|
1
|
+
{"version":3,"file":"node-store.d.ts","sourceRoot":"","sources":["../src/node-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAEnB,MAAM,YAAY,CAAC;AAMpB,2EAA2E;AAC3E,MAAM,WAAW,wBAAwB;IACvC,wCAAwC;IACxC,UAAU,EAAE,eAAe,CAAC;IAC5B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wEAAwE;AACxE,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,QAAQ,EAAE,cAAc,CAAC;IACzB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oDAAoD;IACpD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sDAAsD;AACtD,MAAM,WAAW,wBAAwB;IACvC,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,mDAAmD;AACnD,MAAM,MAAM,eAAe,GAAG,wBAAwB,GAAG,qBAAqB,CAAC;AAE/E,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,qEAAqE;IACrE,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAsCD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,aAAa,CA4Bf;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAiBxE;AAMD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAwB5E;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB7D;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAmCpC"}
|
package/dist/node-store.js
CHANGED
|
@@ -76,8 +76,10 @@ export function recordToNode(properties) {
|
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
78
|
* Convert a raw edge object from Cypher `collect()` to a {@link KnowledgeEdge}.
|
|
79
|
+
*
|
|
80
|
+
* @internal Exported for use by search and expand modules within this package.
|
|
79
81
|
*/
|
|
80
|
-
function recordToEdge(raw) {
|
|
82
|
+
export function recordToEdge(raw) {
|
|
81
83
|
let metadata;
|
|
82
84
|
if (raw.metadata !== undefined && raw.metadata !== null) {
|
|
83
85
|
try {
|
package/dist/node-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-store.js","sourceRoot":"","sources":["../src/node-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,SAAS,GAOV,MAAM,YAAY,CAAC;AAqEpB,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,0BAA0B,GAAW;aAC9B,UAAU;8BACO,UAAU;;;;;;;;;;;;aAY3B,UAAU;;wBAEC,CAAC;AAEzB,MAAM,kBAAkB,GAAW;aACtB,UAAU;;6BAEM,CAAC;AAE9B,MAAM,kBAAkB,GAAW;aACtB,UAAU;;WAEZ,CAAC;AAEZ,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAmC;IAEnC,MAAM,IAAI,GAAG;QACX,EAAE,EAAE,UAAU,CAAC,EAAY;QAC3B,IAAI,EAAE,UAAU,CAAC,IAAgB;QACjC,SAAS,EAAG,UAAU,CAAC,SAAkC,IAAI,EAAE;QAC/D,SAAS,EAAE,UAAU,CAAC,SAAmB;QACzC,SAAS,EAAE,UAAU,CAAC,SAAmB;QACzC,WAAW,EAAG,UAAU,CAAC,WAAkC,IAAI,EAAE;KAClE,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,SAAS,CAAC,SAAS;YACzB,UAAU,EAAE,UAAU,CAAC,UAA6B;YACpD,QAAQ,EAAE,UAAU,CAAC,QAAkB;YACvC,KAAK,EAAG,UAAU,CAAC,KAA4B,IAAI,EAAE;SACtD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,SAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,UAAU,CAAC,QAA0B;QAC/C,KAAK,EAAG,UAAU,CAAC,KAA4B,IAAI,EAAE;QACrD,OAAO,EAAG,UAAU,CAAC,OAA8B,IAAI,EAAE;QACzD,IAAI,EAAG,UAAU,CAAC,IAA6B,IAAI,EAAE;KACtD,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"node-store.js","sourceRoot":"","sources":["../src/node-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference node synchronization with Grackle entities.
|
|
3
|
+
*
|
|
4
|
+
* Provides lookup, upsert, and deletion of reference nodes keyed by
|
|
5
|
+
* `(sourceType, sourceId)`, plus pure text-derivation helpers for
|
|
6
|
+
* producing embeddable strings from entity data.
|
|
7
|
+
*
|
|
8
|
+
* The server-side event bus wiring that calls these functions is in #713.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import { type ReferenceSource, type ReferenceNode } from "./types.js";
|
|
13
|
+
import type { Embedder } from "./embedder.js";
|
|
14
|
+
/** Input for syncing a reference node with a Grackle entity. */
|
|
15
|
+
export interface SyncReferenceNodeInput {
|
|
16
|
+
/** Which entity type this refers to. */
|
|
17
|
+
sourceType: ReferenceSource;
|
|
18
|
+
/** The ID of the entity in Grackle's relational DB. */
|
|
19
|
+
sourceId: string;
|
|
20
|
+
/** Human-readable label derived from the source (e.g., task title). */
|
|
21
|
+
label: string;
|
|
22
|
+
/** Text content to derive the embedding from. */
|
|
23
|
+
text: string;
|
|
24
|
+
/** Workspace scope (empty string = global). */
|
|
25
|
+
workspaceId: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Find a reference node by its source identity.
|
|
29
|
+
*
|
|
30
|
+
* Uses the composite index on `(sourceType, sourceId)` for efficient lookup.
|
|
31
|
+
*
|
|
32
|
+
* @param sourceType - The entity type (task, finding, session, workspace).
|
|
33
|
+
* @param sourceId - The entity ID from Grackle's relational DB.
|
|
34
|
+
* @returns The reference node if found, or `undefined`.
|
|
35
|
+
*/
|
|
36
|
+
export declare function findReferenceNodeBySource(sourceType: ReferenceSource, sourceId: string): Promise<ReferenceNode | undefined>;
|
|
37
|
+
/**
|
|
38
|
+
* Delete a reference node by its source identity.
|
|
39
|
+
*
|
|
40
|
+
* Removes the node and all its edges (`DETACH DELETE`). Used when the
|
|
41
|
+
* corresponding entity is deleted in Grackle's relational DB.
|
|
42
|
+
*
|
|
43
|
+
* @param sourceType - The entity type (task, finding, session, workspace).
|
|
44
|
+
* @param sourceId - The entity ID from Grackle's relational DB.
|
|
45
|
+
* @returns `true` if a node was deleted, `false` if no matching node existed.
|
|
46
|
+
*/
|
|
47
|
+
export declare function deleteReferenceNodeBySource(sourceType: ReferenceSource, sourceId: string): Promise<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Upsert a reference node for a Grackle entity.
|
|
50
|
+
*
|
|
51
|
+
* Derives an embedding from the provided text, then either creates a new
|
|
52
|
+
* reference node or updates the existing one (matched by sourceType + sourceId).
|
|
53
|
+
*
|
|
54
|
+
* @param embedder - The embedder to produce the embedding vector.
|
|
55
|
+
* @param input - The entity data to sync.
|
|
56
|
+
* @returns The node ID (either existing or newly created).
|
|
57
|
+
*/
|
|
58
|
+
export declare function syncReferenceNode(embedder: Embedder, input: SyncReferenceNodeInput): Promise<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Derive embeddable text from a task's title and description.
|
|
61
|
+
*
|
|
62
|
+
* @param title - The task title.
|
|
63
|
+
* @param description - The task description (may be empty).
|
|
64
|
+
* @returns A formatted text string suitable for embedding.
|
|
65
|
+
*/
|
|
66
|
+
export declare function deriveTaskText(title: string, description: string): string;
|
|
67
|
+
/**
|
|
68
|
+
* Derive embeddable text from a finding's title, content, and tags.
|
|
69
|
+
*
|
|
70
|
+
* @param title - The finding title.
|
|
71
|
+
* @param content - The finding content.
|
|
72
|
+
* @param tags - Free-form tags for categorization.
|
|
73
|
+
* @returns A formatted text string suitable for embedding.
|
|
74
|
+
*/
|
|
75
|
+
export declare function deriveFindingText(title: string, content: string, tags: string[]): string;
|
|
76
|
+
//# sourceMappingURL=reference-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-sync.d.ts","sourceRoot":"","sources":["../src/reference-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAEnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,UAAU,EAAE,eAAe,CAAC;IAC5B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAmBD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAoCpC;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAMD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMzE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb,MAAM,CASR"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference node synchronization with Grackle entities.
|
|
3
|
+
*
|
|
4
|
+
* Provides lookup, upsert, and deletion of reference nodes keyed by
|
|
5
|
+
* `(sourceType, sourceId)`, plus pure text-derivation helpers for
|
|
6
|
+
* producing embeddable strings from entity data.
|
|
7
|
+
*
|
|
8
|
+
* The server-side event bus wiring that calls these functions is in #713.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import { getSession } from "./client.js";
|
|
13
|
+
import { logger } from "./logger.js";
|
|
14
|
+
import { NODE_LABEL } from "./constants.js";
|
|
15
|
+
import { isReferenceNode, } from "./types.js";
|
|
16
|
+
import { createReferenceNode, updateNode, recordToNode } from "./node-store.js";
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Cypher queries
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
const FIND_BY_SOURCE_CYPHER = `
|
|
21
|
+
MATCH (n:${NODE_LABEL} {kind: 'reference', sourceType: $sourceType, sourceId: $sourceId})
|
|
22
|
+
RETURN n`;
|
|
23
|
+
const DELETE_BY_SOURCE_CYPHER = `
|
|
24
|
+
MATCH (n:${NODE_LABEL} {kind: 'reference', sourceType: $sourceType, sourceId: $sourceId})
|
|
25
|
+
DETACH DELETE n
|
|
26
|
+
RETURN count(n) AS deleted`;
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Query functions
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
/**
|
|
31
|
+
* Find a reference node by its source identity.
|
|
32
|
+
*
|
|
33
|
+
* Uses the composite index on `(sourceType, sourceId)` for efficient lookup.
|
|
34
|
+
*
|
|
35
|
+
* @param sourceType - The entity type (task, finding, session, workspace).
|
|
36
|
+
* @param sourceId - The entity ID from Grackle's relational DB.
|
|
37
|
+
* @returns The reference node if found, or `undefined`.
|
|
38
|
+
*/
|
|
39
|
+
export async function findReferenceNodeBySource(sourceType, sourceId) {
|
|
40
|
+
const session = getSession();
|
|
41
|
+
try {
|
|
42
|
+
const result = await session.run(FIND_BY_SOURCE_CYPHER, {
|
|
43
|
+
sourceType,
|
|
44
|
+
sourceId,
|
|
45
|
+
});
|
|
46
|
+
if (result.records.length === 0) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const neo4jNode = result.records[0].get("n");
|
|
50
|
+
const node = recordToNode(neo4jNode.properties);
|
|
51
|
+
if (!isReferenceNode(node)) {
|
|
52
|
+
logger.warn({ sourceType, sourceId, kind: node.kind }, "findReferenceNodeBySource matched a non-reference node");
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return node;
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
try {
|
|
59
|
+
await session.close();
|
|
60
|
+
}
|
|
61
|
+
catch (closeError) {
|
|
62
|
+
logger.warn({ err: closeError }, "Failed to close session after findReferenceNodeBySource");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Delete a reference node by its source identity.
|
|
68
|
+
*
|
|
69
|
+
* Removes the node and all its edges (`DETACH DELETE`). Used when the
|
|
70
|
+
* corresponding entity is deleted in Grackle's relational DB.
|
|
71
|
+
*
|
|
72
|
+
* @param sourceType - The entity type (task, finding, session, workspace).
|
|
73
|
+
* @param sourceId - The entity ID from Grackle's relational DB.
|
|
74
|
+
* @returns `true` if a node was deleted, `false` if no matching node existed.
|
|
75
|
+
*/
|
|
76
|
+
export async function deleteReferenceNodeBySource(sourceType, sourceId) {
|
|
77
|
+
const session = getSession();
|
|
78
|
+
try {
|
|
79
|
+
const result = await session.run(DELETE_BY_SOURCE_CYPHER, {
|
|
80
|
+
sourceType,
|
|
81
|
+
sourceId,
|
|
82
|
+
});
|
|
83
|
+
const deleted = result.records[0]?.get("deleted");
|
|
84
|
+
if (deleted > 0) {
|
|
85
|
+
logger.debug({ sourceType, sourceId }, "Deleted reference node by source");
|
|
86
|
+
}
|
|
87
|
+
return deleted > 0;
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
try {
|
|
91
|
+
await session.close();
|
|
92
|
+
}
|
|
93
|
+
catch (closeError) {
|
|
94
|
+
logger.warn({ err: closeError }, "Failed to close session after deleteReferenceNodeBySource");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// Sync (upsert)
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
/**
|
|
102
|
+
* Upsert a reference node for a Grackle entity.
|
|
103
|
+
*
|
|
104
|
+
* Derives an embedding from the provided text, then either creates a new
|
|
105
|
+
* reference node or updates the existing one (matched by sourceType + sourceId).
|
|
106
|
+
*
|
|
107
|
+
* @param embedder - The embedder to produce the embedding vector.
|
|
108
|
+
* @param input - The entity data to sync.
|
|
109
|
+
* @returns The node ID (either existing or newly created).
|
|
110
|
+
*/
|
|
111
|
+
export async function syncReferenceNode(embedder, input) {
|
|
112
|
+
const { vector } = await embedder.embed(input.text);
|
|
113
|
+
const existing = await findReferenceNodeBySource(input.sourceType, input.sourceId);
|
|
114
|
+
if (existing) {
|
|
115
|
+
await updateNode(existing.id, { label: input.label, embedding: vector });
|
|
116
|
+
logger.debug({ nodeId: existing.id, sourceType: input.sourceType, sourceId: input.sourceId }, "Updated reference node");
|
|
117
|
+
return existing.id;
|
|
118
|
+
}
|
|
119
|
+
const newId = await createReferenceNode({
|
|
120
|
+
sourceType: input.sourceType,
|
|
121
|
+
sourceId: input.sourceId,
|
|
122
|
+
label: input.label,
|
|
123
|
+
embedding: vector,
|
|
124
|
+
workspaceId: input.workspaceId,
|
|
125
|
+
});
|
|
126
|
+
logger.debug({ nodeId: newId, sourceType: input.sourceType, sourceId: input.sourceId }, "Created reference node");
|
|
127
|
+
return newId;
|
|
128
|
+
}
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// Text derivation helpers (pure functions)
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
/**
|
|
133
|
+
* Derive embeddable text from a task's title and description.
|
|
134
|
+
*
|
|
135
|
+
* @param title - The task title.
|
|
136
|
+
* @param description - The task description (may be empty).
|
|
137
|
+
* @returns A formatted text string suitable for embedding.
|
|
138
|
+
*/
|
|
139
|
+
export function deriveTaskText(title, description) {
|
|
140
|
+
const parts = [`[Task] ${title}`];
|
|
141
|
+
if (description) {
|
|
142
|
+
parts.push(description);
|
|
143
|
+
}
|
|
144
|
+
return parts.join(" - ");
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Derive embeddable text from a finding's title, content, and tags.
|
|
148
|
+
*
|
|
149
|
+
* @param title - The finding title.
|
|
150
|
+
* @param content - The finding content.
|
|
151
|
+
* @param tags - Free-form tags for categorization.
|
|
152
|
+
* @returns A formatted text string suitable for embedding.
|
|
153
|
+
*/
|
|
154
|
+
export function deriveFindingText(title, content, tags) {
|
|
155
|
+
const parts = [`[Finding] ${title}`];
|
|
156
|
+
if (content) {
|
|
157
|
+
parts.push(content);
|
|
158
|
+
}
|
|
159
|
+
if (tags.length > 0) {
|
|
160
|
+
parts.push(`tags:${tags.join(",")}`);
|
|
161
|
+
}
|
|
162
|
+
return parts.join(" - ");
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=reference-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-sync.js","sourceRoot":"","sources":["../src/reference-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMzE,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAgED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC,CA8DzB"}
|
package/dist/search.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { getSession } from "./client.js";
|
|
10
10
|
import { logger } from "./logger.js";
|
|
11
11
|
import { NODE_LABEL, VECTOR_INDEX_NAME } from "./constants.js";
|
|
12
|
-
import { recordToNode } from "./node-store.js";
|
|
12
|
+
import { recordToNode, recordToEdge } from "./node-store.js";
|
|
13
13
|
// ---------------------------------------------------------------------------
|
|
14
14
|
// Constants
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
@@ -37,13 +37,14 @@ function buildSearchCypher(options) {
|
|
|
37
37
|
const whereClause = filters.length > 0
|
|
38
38
|
? `WHERE ${filters.join(" AND ")}`
|
|
39
39
|
: "";
|
|
40
|
+
// Neo4j requires integer literals for LIMIT and the vector query count.
|
|
40
41
|
return `
|
|
41
|
-
CALL db.index.vector.queryNodes($indexName, $candidateLimit, $queryVector)
|
|
42
|
+
CALL db.index.vector.queryNodes($indexName, ${options.candidateLimit}, $queryVector)
|
|
42
43
|
YIELD node, score
|
|
43
44
|
${whereClause}
|
|
44
45
|
WITH node, score
|
|
45
46
|
ORDER BY score DESC
|
|
46
|
-
LIMIT $limit
|
|
47
|
+
LIMIT ${options.limit}
|
|
47
48
|
OPTIONAL MATCH (node)-[r]-(m:${NODE_LABEL})
|
|
48
49
|
RETURN node, score,
|
|
49
50
|
collect(DISTINCT {
|
|
@@ -55,28 +56,6 @@ function buildSearchCypher(options) {
|
|
|
55
56
|
}) AS edges`;
|
|
56
57
|
}
|
|
57
58
|
// ---------------------------------------------------------------------------
|
|
58
|
-
// Helpers
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
/** Convert a raw edge record from Cypher collect() to a KnowledgeEdge. */
|
|
61
|
-
function rawToEdge(raw) {
|
|
62
|
-
let metadata;
|
|
63
|
-
if (raw.metadata !== undefined && raw.metadata !== null) {
|
|
64
|
-
try {
|
|
65
|
-
metadata = JSON.parse(raw.metadata);
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
metadata = undefined;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return {
|
|
72
|
-
fromId: raw.fromId,
|
|
73
|
-
toId: raw.toId,
|
|
74
|
-
type: raw.type,
|
|
75
|
-
metadata,
|
|
76
|
-
createdAt: raw.createdAt,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
// ---------------------------------------------------------------------------
|
|
80
59
|
// Public API
|
|
81
60
|
// ---------------------------------------------------------------------------
|
|
82
61
|
/**
|
|
@@ -99,14 +78,14 @@ export async function knowledgeSearch(query, embedder, options) {
|
|
|
99
78
|
const hasFilters = !!(options?.nodeKinds?.length || options?.workspaceId !== undefined);
|
|
100
79
|
const candidateLimit = hasFilters ? limit * 3 : limit;
|
|
101
80
|
const cypher = buildSearchCypher({
|
|
81
|
+
limit,
|
|
82
|
+
candidateLimit,
|
|
102
83
|
nodeKinds: options?.nodeKinds,
|
|
103
84
|
workspaceId: options?.workspaceId,
|
|
104
85
|
});
|
|
105
86
|
const params = {
|
|
106
87
|
indexName: VECTOR_INDEX_NAME,
|
|
107
88
|
queryVector,
|
|
108
|
-
limit,
|
|
109
|
-
candidateLimit,
|
|
110
89
|
minScore,
|
|
111
90
|
...(options?.nodeKinds ? { nodeKinds: options.nodeKinds } : {}),
|
|
112
91
|
...(options?.workspaceId !== undefined ? { workspaceId: options.workspaceId } : {}),
|
|
@@ -122,7 +101,7 @@ export async function knowledgeSearch(query, embedder, options) {
|
|
|
122
101
|
// Filter out null edges (from OPTIONAL MATCH with no relationships)
|
|
123
102
|
const edges = rawEdges
|
|
124
103
|
.filter((e) => e.fromId !== null && e.toId !== null)
|
|
125
|
-
.map(
|
|
104
|
+
.map(recordToEdge);
|
|
126
105
|
return {
|
|
127
106
|
node: recordToNode(nodeProps),
|
|
128
107
|
score,
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/knowledge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.62.1",
|
|
4
4
|
"description": "Knowledge graph subsystem for Grackle (Neo4j + vector search)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"@huggingface/transformers": "^3.4.0",
|
|
28
28
|
"neo4j-driver": "^6.0.1",
|
|
29
29
|
"pino": "^10.3.1",
|
|
30
|
-
"@grackle-ai/common": "0.
|
|
30
|
+
"@grackle-ai/common": "0.62.1"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@rushstack/heft": "1.2.4",
|