@elqnt/kg 1.0.9 → 1.0.11
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.d.mts +10 -3
- package/dist/index.d.ts +10 -3
- package/dist/index.js +64 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +64 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { KGNodeIngestRequest, KGQuery, KGQueryResult, KGLabelInfo, KGNode } from './models/kg.mjs';
|
|
2
|
-
export { CreateGraphRequest, CreateGraphResult, DeleteDocumentRequest, DeleteDocumentResponse, DeleteGraphResult, DuplicatePolicy, DuplicatePolicyCreate, DuplicatePolicyCreateIf, DuplicatePolicyFail, DuplicatePolicyIgnore, DuplicatePolicyReplace, GetGraphResult,
|
|
1
|
+
import { KGNodeIngestRequest, KGQuery, KGQueryResult, KGLabelInfo, KGNode, Graph } from './models/kg.mjs';
|
|
2
|
+
export { CreateGraphRequest, CreateGraphResult, DeleteDocumentRequest, DeleteDocumentResponse, DeleteGraphResult, DuplicatePolicy, DuplicatePolicyCreate, DuplicatePolicyCreateIf, DuplicatePolicyFail, DuplicatePolicyIgnore, DuplicatePolicyReplace, GetGraphResult, KGArticle, KGBatchSyncIngestResponse, KGEdge, KGEdgeIngestRequest, KGEdgeQuery, KGFieldQuery, KGFieldQueryOperator, KGFieldQueryOperatorArrayContains, KGFieldQueryOperatorEqual, KGFieldQueryOperatorGreater, KGFieldQueryOperatorGreaterOrEqual, KGFieldQueryOperatorIn, KGFieldQueryOperatorLess, KGFieldQueryOperatorLessOrEqual, KGFieldQueryOperatorLike, KGFieldQueryOperatorNotEqual, KGFieldQueryOperatorSimilar, KGPLabelSchema, KGPropertyFilter, KGPropertyFilterRequest, KGPropertyInfo, KGRelationshipDirection, KGRelationshipDirectionIncoming, KGRelationshipDirectionOutgoing, KGSyncIngestResponse, KGSyncJob, KGSyncJobListRequest, KGSyncJobListResponse, KGSyncJobUpdateRequest, KGSyncJobUpdateResponse, ListGraphsResult, UpdateGraphResult } from './models/kg.mjs';
|
|
3
3
|
export { GraphEdgeDefinition, GraphEdgeRequest, GraphEdgeResponse, GraphNodeDefinition, GraphNodeRequest, GraphNodeResponse, KGDBCreate, KGDesignerEdgeCreate, KGDesignerEdgeDelete, KGDesignerEdgeGet, KGDesignerEdgeList, KGDesignerEdgeUpdate, KGDesignerNodeCreate, KGDesignerNodeDelete, KGDesignerNodeGet, KGDesignerNodeList, KGDesignerNodeUpdate, KGDocumentDelete, KGGraphCreate, KGGraphDelete, KGGraphGet, KGGraphList, KGGraphOptimize, KGGraphUpdate, KGIngestBatchSync, KGIngestNodeSync, KGSyncJobList, KGSyncJobUpdate } from './models/kg-designer.mjs';
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
import * as react from 'react';
|
|
@@ -30,6 +30,13 @@ type UseKnowledgeGraphType = {
|
|
|
30
30
|
selectedNodeId: string | undefined;
|
|
31
31
|
setSelectedNodeId: (id: string | undefined) => void;
|
|
32
32
|
getNodeById: (id: string) => Promise<KGNode | Error>;
|
|
33
|
+
graphs: Graph[];
|
|
34
|
+
selectedGraph: Graph | undefined;
|
|
35
|
+
selectedGraphId: string | undefined;
|
|
36
|
+
graphsLoading: boolean;
|
|
37
|
+
graphsError: string | undefined;
|
|
38
|
+
selectGraph: (graphId: string | undefined) => void;
|
|
39
|
+
refreshGraphs: () => Promise<void>;
|
|
33
40
|
};
|
|
34
41
|
declare const useKnowledgeGraph: (overrideOrgId?: string) => UseKnowledgeGraphType;
|
|
35
42
|
|
|
@@ -45,4 +52,4 @@ declare function KnowledgeGraphContextProvider(props: {
|
|
|
45
52
|
}): react_jsx_runtime.JSX.Element;
|
|
46
53
|
declare const useKnowledgeGraphContext: () => UseKnowledgeGraphType;
|
|
47
54
|
|
|
48
|
-
export { KGLabelInfo, KGNode, KGNodeIngestRequest, KGQuery, KGQueryResult, KnowledgeGraphContext, KnowledgeGraphContextProvider, Test, type UseKnowledgeGraphAnalyticsType, type UseKnowledgeGraphType, useKnowledgeGraph, useKnowledgeGraphAnalytics, useKnowledgeGraphContext };
|
|
55
|
+
export { Graph, KGLabelInfo, KGNode, KGNodeIngestRequest, KGQuery, KGQueryResult, KnowledgeGraphContext, KnowledgeGraphContextProvider, Test, type UseKnowledgeGraphAnalyticsType, type UseKnowledgeGraphType, useKnowledgeGraph, useKnowledgeGraphAnalytics, useKnowledgeGraphContext };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { KGNodeIngestRequest, KGQuery, KGQueryResult, KGLabelInfo, KGNode } from './models/kg.js';
|
|
2
|
-
export { CreateGraphRequest, CreateGraphResult, DeleteDocumentRequest, DeleteDocumentResponse, DeleteGraphResult, DuplicatePolicy, DuplicatePolicyCreate, DuplicatePolicyCreateIf, DuplicatePolicyFail, DuplicatePolicyIgnore, DuplicatePolicyReplace, GetGraphResult,
|
|
1
|
+
import { KGNodeIngestRequest, KGQuery, KGQueryResult, KGLabelInfo, KGNode, Graph } from './models/kg.js';
|
|
2
|
+
export { CreateGraphRequest, CreateGraphResult, DeleteDocumentRequest, DeleteDocumentResponse, DeleteGraphResult, DuplicatePolicy, DuplicatePolicyCreate, DuplicatePolicyCreateIf, DuplicatePolicyFail, DuplicatePolicyIgnore, DuplicatePolicyReplace, GetGraphResult, KGArticle, KGBatchSyncIngestResponse, KGEdge, KGEdgeIngestRequest, KGEdgeQuery, KGFieldQuery, KGFieldQueryOperator, KGFieldQueryOperatorArrayContains, KGFieldQueryOperatorEqual, KGFieldQueryOperatorGreater, KGFieldQueryOperatorGreaterOrEqual, KGFieldQueryOperatorIn, KGFieldQueryOperatorLess, KGFieldQueryOperatorLessOrEqual, KGFieldQueryOperatorLike, KGFieldQueryOperatorNotEqual, KGFieldQueryOperatorSimilar, KGPLabelSchema, KGPropertyFilter, KGPropertyFilterRequest, KGPropertyInfo, KGRelationshipDirection, KGRelationshipDirectionIncoming, KGRelationshipDirectionOutgoing, KGSyncIngestResponse, KGSyncJob, KGSyncJobListRequest, KGSyncJobListResponse, KGSyncJobUpdateRequest, KGSyncJobUpdateResponse, ListGraphsResult, UpdateGraphResult } from './models/kg.js';
|
|
3
3
|
export { GraphEdgeDefinition, GraphEdgeRequest, GraphEdgeResponse, GraphNodeDefinition, GraphNodeRequest, GraphNodeResponse, KGDBCreate, KGDesignerEdgeCreate, KGDesignerEdgeDelete, KGDesignerEdgeGet, KGDesignerEdgeList, KGDesignerEdgeUpdate, KGDesignerNodeCreate, KGDesignerNodeDelete, KGDesignerNodeGet, KGDesignerNodeList, KGDesignerNodeUpdate, KGDocumentDelete, KGGraphCreate, KGGraphDelete, KGGraphGet, KGGraphList, KGGraphOptimize, KGGraphUpdate, KGIngestBatchSync, KGIngestNodeSync, KGSyncJobList, KGSyncJobUpdate } from './models/kg-designer.js';
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
import * as react from 'react';
|
|
@@ -30,6 +30,13 @@ type UseKnowledgeGraphType = {
|
|
|
30
30
|
selectedNodeId: string | undefined;
|
|
31
31
|
setSelectedNodeId: (id: string | undefined) => void;
|
|
32
32
|
getNodeById: (id: string) => Promise<KGNode | Error>;
|
|
33
|
+
graphs: Graph[];
|
|
34
|
+
selectedGraph: Graph | undefined;
|
|
35
|
+
selectedGraphId: string | undefined;
|
|
36
|
+
graphsLoading: boolean;
|
|
37
|
+
graphsError: string | undefined;
|
|
38
|
+
selectGraph: (graphId: string | undefined) => void;
|
|
39
|
+
refreshGraphs: () => Promise<void>;
|
|
33
40
|
};
|
|
34
41
|
declare const useKnowledgeGraph: (overrideOrgId?: string) => UseKnowledgeGraphType;
|
|
35
42
|
|
|
@@ -45,4 +52,4 @@ declare function KnowledgeGraphContextProvider(props: {
|
|
|
45
52
|
}): react_jsx_runtime.JSX.Element;
|
|
46
53
|
declare const useKnowledgeGraphContext: () => UseKnowledgeGraphType;
|
|
47
54
|
|
|
48
|
-
export { KGLabelInfo, KGNode, KGNodeIngestRequest, KGQuery, KGQueryResult, KnowledgeGraphContext, KnowledgeGraphContextProvider, Test, type UseKnowledgeGraphAnalyticsType, type UseKnowledgeGraphType, useKnowledgeGraph, useKnowledgeGraphAnalytics, useKnowledgeGraphContext };
|
|
55
|
+
export { Graph, KGLabelInfo, KGNode, KGNodeIngestRequest, KGQuery, KGQueryResult, KnowledgeGraphContext, KnowledgeGraphContextProvider, Test, type UseKnowledgeGraphAnalyticsType, type UseKnowledgeGraphType, useKnowledgeGraph, useKnowledgeGraphAnalytics, useKnowledgeGraphContext };
|
package/dist/index.js
CHANGED
|
@@ -66,6 +66,49 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
66
66
|
void 0
|
|
67
67
|
);
|
|
68
68
|
const [stateTrigger, setStateTrigger] = _react.useState.call(void 0, 0);
|
|
69
|
+
const [graphs, setGraphs] = _react.useState.call(void 0, []);
|
|
70
|
+
const [graphsLoading, setGraphsLoading] = _react.useState.call(void 0, true);
|
|
71
|
+
const [graphsError, setGraphsError] = _react.useState.call(void 0, );
|
|
72
|
+
const [selectedGraphId, setSelectedGraphId] = _react.useState.call(void 0, );
|
|
73
|
+
const selectedGraph = _react.useMemo.call(void 0, () => {
|
|
74
|
+
if (!selectedGraphId) {
|
|
75
|
+
return graphs.find((g) => g.isDefault) || graphs[0];
|
|
76
|
+
}
|
|
77
|
+
return graphs.find((g) => g.id === selectedGraphId);
|
|
78
|
+
}, [graphs, selectedGraphId]);
|
|
79
|
+
function selectGraph(graphId) {
|
|
80
|
+
setSelectedGraphId(graphId);
|
|
81
|
+
}
|
|
82
|
+
async function refreshGraphs() {
|
|
83
|
+
if (!orgId || !natsConnected) return;
|
|
84
|
+
setGraphsLoading(true);
|
|
85
|
+
setGraphsError(void 0);
|
|
86
|
+
const data = await request(_chunk2OYIMLE4js.KGGraphList, {}, { orgId });
|
|
87
|
+
if (data instanceof Error) {
|
|
88
|
+
setGraphsError(data.message);
|
|
89
|
+
setGraphsLoading(false);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (data.success !== false) {
|
|
93
|
+
const loadedGraphs = data.graphs || [];
|
|
94
|
+
setGraphs(loadedGraphs);
|
|
95
|
+
setSelectedGraphId((prev) => {
|
|
96
|
+
if (!prev && loadedGraphs.length) {
|
|
97
|
+
const defaultGraph = loadedGraphs.find((g) => g.isDefault);
|
|
98
|
+
return _optionalChain([defaultGraph, 'optionalAccess', _ => _.id]) || _optionalChain([loadedGraphs, 'access', _2 => _2[0], 'optionalAccess', _3 => _3.id]);
|
|
99
|
+
}
|
|
100
|
+
return prev;
|
|
101
|
+
});
|
|
102
|
+
} else {
|
|
103
|
+
setGraphsError(data.error || "Failed to load graphs");
|
|
104
|
+
}
|
|
105
|
+
setGraphsLoading(false);
|
|
106
|
+
}
|
|
107
|
+
_react.useEffect.call(void 0, () => {
|
|
108
|
+
if (!natsConnected || !orgId) return;
|
|
109
|
+
setSelectedGraphId(void 0);
|
|
110
|
+
refreshGraphs();
|
|
111
|
+
}, [natsConnected, orgId]);
|
|
69
112
|
async function ingestNode(node) {
|
|
70
113
|
if (!orgId) {
|
|
71
114
|
return new Error("No orgId provided");
|
|
@@ -229,7 +272,8 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
229
272
|
"kg.query.graph",
|
|
230
273
|
query,
|
|
231
274
|
{
|
|
232
|
-
orgId
|
|
275
|
+
orgId,
|
|
276
|
+
graphId: _optionalChain([selectedGraph, 'optionalAccess', _4 => _4.id])
|
|
233
277
|
}
|
|
234
278
|
);
|
|
235
279
|
setIsLoading(false);
|
|
@@ -249,7 +293,7 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
249
293
|
const data = await request(
|
|
250
294
|
"kg.query.nodeById",
|
|
251
295
|
{ id },
|
|
252
|
-
{ orgId }
|
|
296
|
+
{ orgId, graphId: _optionalChain([selectedGraph, 'optionalAccess', _5 => _5.id]) }
|
|
253
297
|
);
|
|
254
298
|
if (data instanceof Error) {
|
|
255
299
|
console.error(data);
|
|
@@ -268,7 +312,7 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
268
312
|
const data = await request(
|
|
269
313
|
"kg.graph.labels",
|
|
270
314
|
{},
|
|
271
|
-
{ orgId }
|
|
315
|
+
{ orgId, graphId: _optionalChain([selectedGraph, 'optionalAccess', _6 => _6.id]) }
|
|
272
316
|
);
|
|
273
317
|
setIsLoading(false);
|
|
274
318
|
if (data instanceof Error) {
|
|
@@ -277,10 +321,15 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
277
321
|
}
|
|
278
322
|
if (!Array.isArray(data) && typeof data === "object") {
|
|
279
323
|
const err = data;
|
|
280
|
-
return new Error(_nullishCoalesce(_nullishCoalesce(_optionalChain([err, 'optionalAccess',
|
|
324
|
+
return new Error(_nullishCoalesce(_nullishCoalesce(_optionalChain([err, 'optionalAccess', _7 => _7.message]), () => ( _optionalChain([err, 'optionalAccess', _8 => _8.error]))), () => ( err)));
|
|
281
325
|
}
|
|
282
326
|
return data;
|
|
283
327
|
}
|
|
328
|
+
_react.useEffect.call(void 0, () => {
|
|
329
|
+
setLabels(void 0);
|
|
330
|
+
setSelectedLabel(void 0);
|
|
331
|
+
setQueryResult(void 0);
|
|
332
|
+
}, [_optionalChain([selectedGraph, 'optionalAccess', _9 => _9.id])]);
|
|
284
333
|
_react.useEffect.call(void 0, () => {
|
|
285
334
|
if (!natsConnected || !orgId) {
|
|
286
335
|
return;
|
|
@@ -294,21 +343,19 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
294
343
|
return data;
|
|
295
344
|
}
|
|
296
345
|
getLabels();
|
|
297
|
-
}, [natsConnected, orgId, stateTrigger]);
|
|
346
|
+
}, [natsConnected, orgId, _optionalChain([selectedGraph, 'optionalAccess', _10 => _10.id]), stateTrigger]);
|
|
298
347
|
_react.useEffect.call(void 0, () => {
|
|
299
348
|
if (!natsConnected || !orgId || !selectedLabel) {
|
|
300
349
|
return;
|
|
301
350
|
}
|
|
302
351
|
async function getGraphQueryResult() {
|
|
303
352
|
if (!selectedLabel) return;
|
|
304
|
-
console.log("will getGraphQueryResult", { orgId, selectedLabel });
|
|
305
353
|
const query = {
|
|
306
354
|
label: selectedLabel,
|
|
307
355
|
fields: [],
|
|
308
356
|
limit: 500,
|
|
309
357
|
sortBy: "",
|
|
310
358
|
sortOrder: "asc",
|
|
311
|
-
// edges: [{ label: "student of", direction: "outgoing" }],
|
|
312
359
|
depth: 2
|
|
313
360
|
};
|
|
314
361
|
const res = await queryGraph(query);
|
|
@@ -317,13 +364,9 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
317
364
|
return;
|
|
318
365
|
}
|
|
319
366
|
setQueryResult(res);
|
|
320
|
-
console.log("graph query response ", {
|
|
321
|
-
nodesCount: _optionalChain([res, 'access', _3 => _3.nodes, 'optionalAccess', _4 => _4.length]),
|
|
322
|
-
edgesCount: _optionalChain([res, 'access', _5 => _5.edges, 'optionalAccess', _6 => _6.length])
|
|
323
|
-
});
|
|
324
367
|
}
|
|
325
368
|
getGraphQueryResult();
|
|
326
|
-
}, [natsConnected, orgId, selectedLabel, stateTrigger]);
|
|
369
|
+
}, [natsConnected, orgId, _optionalChain([selectedGraph, 'optionalAccess', _11 => _11.id]), selectedLabel, stateTrigger]);
|
|
327
370
|
function refreshState() {
|
|
328
371
|
setStateTrigger(stateTrigger + 1);
|
|
329
372
|
}
|
|
@@ -345,7 +388,15 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
345
388
|
ingestText,
|
|
346
389
|
selectedNodeId,
|
|
347
390
|
setSelectedNodeId,
|
|
348
|
-
ingestYT
|
|
391
|
+
ingestYT,
|
|
392
|
+
// Graph selection
|
|
393
|
+
graphs,
|
|
394
|
+
selectedGraph,
|
|
395
|
+
selectedGraphId: _optionalChain([selectedGraph, 'optionalAccess', _12 => _12.id]),
|
|
396
|
+
graphsLoading,
|
|
397
|
+
graphsError,
|
|
398
|
+
selectGraph,
|
|
399
|
+
refreshGraphs
|
|
349
400
|
};
|
|
350
401
|
};
|
|
351
402
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/eloquent-packages/eloquent-packages/packages/kg/dist/index.js","../consts.ts","../hooks/use-knowledge-graph.ts","../hooks/use-knowledge-graph-analytics.ts","../state/knowledge-graph-context.tsx"],"names":["labels","useUserContext","useState","useNatsContext"],"mappings":"AAAA,gtBAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACA;AC7CO,IAAM,KAAA,EAAO,IAAA;AD+CpB;AACA;AE9CA,mCAA+B;AAE/B,mCAA+B;AAC/B,8BAAoC;AA+C7B,IAAM,kBAAA,EAAoB,CAC/B,aAAA,EAAA,GAC0B;AAC1B,EAAA,MAAM,EAAE,cAAc,EAAA,EAAI,kCAAA,CAAe;AACzC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,EAAA,EAAI,6BAAA,KAAc,CAAA;AAChD,EAAA,MAAM,EAAE,aAAA,EAAe,QAAQ,EAAA,EAAI,kCAAA,CAAe;AAClD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,EAAA,EAAI,6BAAA;AAAA,IAC1C,KAAA;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,MAAA,mBAAQ,aAAA,UAAiB,eAAA;AAE/B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,EAAA,EAAI,6BAAA,KAAoC,CAAS,CAAA;AACzE,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,EAAA,EAAI,6BAAA;AAAA,IACxC,KAAA;AAAA,EACF,CAAA;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,EAAA,EAAI,6BAAA;AAAA,IACpC,KAAA;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,EAAA,EAAI,6BAAA,CAAU,CAAA;AAElD,EAAA,MAAA,SAAe,UAAA,CACb,IAAA,EAC0B;AAC1B,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IAC1C;AAEA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,gBAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,QACE;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,WAAA,CACb,KAAA,EAC0B;AAC1B,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IAC1C;AAEA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,iBAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,QACE;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,UAAA,CACb,MAAA,EACA,KAAA,EACA,MAAA,EAC0B;AAC1B,IAAA,MAAM,YAAA,EAAmC;AAAA,MACvC,KAAA;AAAA,MACA,QAAA,EAAU,IAAA;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,GAAG,MAAA;AAAA,QACH,EAAA,EAAI;AAAA,MACN,CAAA;AAAA,MACA,eAAA,EAAiB;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,OAAA,EAAS,MAAM,UAAA,CAAW,WAAW,CAAA;AAG3C,IAAA,GAAA,CAAI,CAAA,CAAE,OAAA,WAAkB,KAAA,CAAA,EAAQ;AAE9B,MAAA,UAAA,CAAW,CAAA,EAAA,GAAM;AACf,QAAA,aAAA,CAAc,CAAA,CAAE,KAAA;AAAA,UAAM,CAAA,GAAA,EAAA,GACpB,OAAA,CAAQ,KAAA,CAAM,6CAAA,EAA+C,GAAG;AAAA,QAClE,CAAA;AAAA,MACF,CAAA,EAAG,GAAI,CAAA;AAAA,IACT;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,aAAA,CAAA,EAA0C;AACvD,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IAC1C;AAEA,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,mBAAA;AAAA,MACA,CAAC,CAAA;AAAA,MACD;AAAA,QACE;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,4BAAA,EAA8B,IAAI,CAAA;AAChD,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAA,CAAQ,GAAA,CAAI,8BAA8B,CAAA;AAC1C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,UAAA,CACb,IAAA,EACA,IAAA,EACA,KAAA,EACAA,OAAAA,EAC0B;AAE1B,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IAC1C;AAEA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,gBAAA;AAAA,MACA,EAAE,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,MAAA,EAAAA,QAAO,CAAA;AAAA,MAC5B;AAAA,QACE;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,UAAA,CACb,IAAA,EACA,IAAA,EAC0B;AAC1B,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IAC1C;AAEA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,oBAAA;AAAA,MACA,EAAE,IAAA,EAAM,KAAK,CAAA;AAAA,MACb;AAAA,QACE;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,QAAA,CAAS,GAAA,EAAuC;AAC7D,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IAC1C;AAEA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,kBAAA;AAAA,MACA,EAAE,IAAI,CAAA;AAAA,MACN;AAAA,QACE;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,UAAA,CAAW,KAAA,EAAwC;AAChE,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACrC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,MAAM,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IACzC;AAEA,IAAA,YAAA,CAAa,IAAI,CAAA;AAEjB,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,gBAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,QACE;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,WAAA,CAAY,EAAA,EAAqC;AAC9D,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IAC1C;AAEA,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,mBAAA;AAAA,MACA,EAAE,GAAG,CAAA;AAAA,MACL,EAAE,MAAM;AAAA,IACV,CAAA;AAEA,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAA,SAAe,cAAA,CAAA,EAAiD;AAC9D,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,KAAA,CAAM,mBAAmB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAI,KAAA,CAAM,uBAAuB,CAAA;AAAA,IAC1C;AAIA,IAAA,YAAA,CAAa,IAAI,CAAA;AAEjB,IAAA,MAAM,KAAA,EAAO,MAAM,OAAA;AAAA,MACjB,iBAAA;AAAA,MACA,CAAC,CAAA;AAAA,MACD,EAAE,MAAM;AAAA,IACV,CAAA;AAEA,IAAA,YAAA,CAAa,KAAK,CAAA;AAElB,IAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,GAAA,CAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,EAAA,GAAK,OAAO,KAAA,IAAS,QAAA,EAAU;AACpD,MAAA,MAAM,IAAA,EAAM,IAAA;AACZ,MAAA,OAAO,IAAI,KAAA,mDAAM,GAAA,2BAAK,SAAA,0BAAW,GAAA,6BAAK,SAAA,UAAS,KAAG,CAAA;AAAA,IACpD;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,GAAA,CAAI,CAAC,cAAA,GAAiB,CAAC,KAAA,EAAO;AAC5B,MAAA,MAAA;AAAA,IACF;AACA,IAAA,MAAA,SAAe,SAAA,CAAA,EAA4C;AACzD,MAAA,MAAM,KAAA,EAAO,MAAM,cAAA,CAAe,CAAA;AAClC,MAAA,GAAA,CAAI,KAAA,WAAgB,KAAA,EAAO;AAEzB,QAAA,OAAO,CAAC,CAAA;AAAA,MACV;AACA,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,SAAA,CAAU,CAAA;AAAA,EACZ,CAAA,EAAG,CAAC,aAAA,EAAe,KAAA,EAAO,YAAY,CAAC,CAAA;AAEvC,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,GAAA,CAAI,CAAC,cAAA,GAAiB,CAAC,MAAA,GAAS,CAAC,aAAA,EAAe;AAC9C,MAAA,MAAA;AAAA,IACF;AACA,IAAA,MAAA,SAAe,mBAAA,CAAA,EAAsB;AACnC,MAAA,GAAA,CAAI,CAAC,aAAA,EAAe,MAAA;AAEpB,MAAA,OAAA,CAAQ,GAAA,CAAI,0BAAA,EAA4B,EAAE,KAAA,EAAO,cAAc,CAAC,CAAA;AAEhE,MAAA,MAAM,MAAA,EAAiB;AAAA,QACrB,KAAA,EAAO,aAAA;AAAA,QACP,MAAA,EAAQ,CAAC,CAAA;AAAA,QACT,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,SAAA,EAAW,KAAA;AAAA;AAAA,QAEX,KAAA,EAAO;AAAA,MACT,CAAA;AAEA,MAAA,MAAM,IAAA,EAAM,MAAM,UAAA,CAAW,KAAK,CAAA;AAElC,MAAA,GAAA,CAAI,IAAA,WAAe,KAAA,EAAO;AACxB,QAAA,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AACjB,QAAA,MAAA;AAAA,MACF;AACA,MAAA,cAAA,CAAe,GAAG,CAAA;AAClB,MAAA,OAAA,CAAQ,GAAA,CAAI,uBAAA,EAAyB;AAAA,QACnC,UAAA,kBAAY,GAAA,qBAAI,KAAA,6BAAO,QAAA;AAAA,QACvB,UAAA,kBAAY,GAAA,qBAAI,KAAA,6BAAO;AAAA,MACzB,CAAC,CAAA;AAAA,IACH;AACA,IAAA,mBAAA,CAAoB,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,aAAA,EAAe,KAAA,EAAO,aAAA,EAAe,YAAY,CAAC,CAAA;AAEtD,EAAA,SAAS,YAAA,CAAA,EAAe;AACtB,IAAA,eAAA,CAAgB,aAAA,EAAe,CAAC,CAAA;AAAA,EAClC;AAEA,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,EACF,CAAA;AACF,CAAA;AF9FA;AACA;AG7VA;AACA;AACA;AAKO,IAAM,2BAAA,EAA6B,CACxC,aAAA,EAAA,GACmC;AACnC,EAAA,MAAM,EAAE,cAAc,EAAA,EAAIC,kCAAAA,CAAe;AACzC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,EAAA,EAAIC,6BAAAA,KAAc,CAAA;AAChD,EAAA,MAAM,EAAE,aAAA,EAAe,QAAQ,EAAA,EAAIC,kCAAAA,CAAe;AAElD,EAAA,OAAO;AAAA,IACL;AAAA,EACF,CAAA;AACF,CAAA;AHwVA;AACA;AI1WA;AAmBI,+CAAA;AAbG,IAAM,sBAAA,EAAwB,kCAAA,KAEnC,CAAS,CAAA;AAEJ,SAAS,6BAAA,CAA8B,KAAA,EAG3C;AACD,EAAA,MAAM,EAAE,QAAA,EAAU,cAAc,EAAA,EAAI,KAAA;AAEpC,EAAA,MAAM,MAAA,EAAQ,iBAAA,CAAkB,aAAa,CAAA;AAE7C,EAAA,uBACE,6BAAA,qBAAC,CAAsB,QAAA,EAAtB,EAA+B,KAAA,EAAO,KAAA,EACpC,SAAA,CACH,CAAA;AAEJ;AAEO,IAAM,yBAAA,EAA2B,CAAA,EAAA,GAAM;AAC5C,EAAA,MAAM,QAAA,EAAU,+BAAA,qBAAgC,CAAA;AAChD,EAAA,GAAA,CAAI,QAAA,IAAY,KAAA,CAAA,EAAW;AACzB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,IACF,CAAA;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT,CAAA;AJ2VA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,ugGAAC","file":"/home/runner/work/eloquent-packages/eloquent-packages/packages/kg/dist/index.js","sourcesContent":[null,"export const Test = \"hi\";","\"use client\";\n\nimport { useUserContext } from \"@elqnt/auth\";\nimport { DocsIngestionRequest } from \"@elqnt/docs\";\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useEffect, useState } from \"react\";\nimport {\n KGLabelInfo,\n KGNode,\n KGNodeIngestRequest,\n KGQuery,\n KGQueryResult,\n} from \"../models\";\n\ntype Success = { success: boolean };\n\nexport type UseKnowledgeGraphType = {\n isLoading: boolean;\n ingestNode: (node: KGNodeIngestRequest) => Promise<Success | Error>;\n ingestNodes: (node: KGNodeIngestRequest[]) => Promise<Success | Error>;\n updateNode: (\n nodeId: string,\n label: string,\n fields: Record<string, any>\n ) => Promise<Success | Error>;\n ingestDocs: (\n urls: string[],\n mode: \"documents\" | \"entities\" | \"snippets\",\n brief: string,\n labels: string[]\n ) => Promise<Success | Error>;\n\n ingestText: (\n text: string,\n mode: \"entities\" | \"snippets\"\n ) => Promise<Success | Error>;\n\n ingestYT: (url: string) => Promise<Success | Error>;\n\n queryGraph: (query: KGQuery) => Promise<KGQueryResult>;\n getGraphLabels: () => Promise<KGLabelInfo[] | Error>;\n labels: KGLabelInfo[] | undefined;\n selectedLabel: string | undefined;\n setSelectedLabel: (label: string) => void;\n queryResult: KGQueryResult | undefined;\n setQueryResult: (res: KGQueryResult) => void;\n refreshState: () => void;\n selectedNodeId: string | undefined;\n setSelectedNodeId: (id: string | undefined) => void;\n getNodeById: (id: string) => Promise<KGNode | Error>;\n};\n\nexport const useKnowledgeGraph = (\n overrideOrgId?: string\n): UseKnowledgeGraphType => {\n const { selectedOrgId } = useUserContext();\n const [isLoading, setIsLoading] = useState(false);\n const { natsConnected, request } = useNatsContext();\n const [selectedNodeId, setSelectedNodeId] = useState<string | undefined>(\n undefined\n );\n\n const orgId = overrideOrgId ?? selectedOrgId;\n\n const [labels, setLabels] = useState<KGLabelInfo[] | undefined>(undefined);\n const [selectedLabel, setSelectedLabel] = useState<string | undefined>(\n undefined\n );\n const [queryResult, setQueryResult] = useState<KGQueryResult | undefined>(\n undefined\n );\n\n const [stateTrigger, setStateTrigger] = useState(0);\n\n async function ingestNode(\n node: KGNodeIngestRequest\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<KGNodeIngestRequest, Success>(\n \"kg.ingest.node\",\n node,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestNodes(\n nodes: KGNodeIngestRequest[]\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<KGNodeIngestRequest[], Success>(\n \"kg.ingest.nodes\",\n nodes,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function updateNode(\n nodeId: string,\n label: string,\n fields: Record<string, any>\n ): Promise<Success | Error> {\n const nodeRequest: KGNodeIngestRequest = {\n label,\n keyField: \"id\",\n fields: {\n ...fields,\n id: nodeId,\n },\n duplicatePolicy: \"replace\",\n };\n\n const result = await ingestNode(nodeRequest);\n\n // Optimize graph after successful update (non-blocking, with delay)\n if (!(result instanceof Error)) {\n // Wait 2 seconds to ensure node is fully written to ClickHouse\n setTimeout(() => {\n optimizeGraph().catch(err =>\n console.error(\"Failed to optimize graph after node update:\", err)\n );\n }, 2000);\n }\n\n return result;\n }\n\n async function optimizeGraph(): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n const data = await request<{}, Success>(\n \"kg.graph.optimize\",\n {},\n {\n orgId,\n }\n );\n\n if (data instanceof Error) {\n console.error(\"Graph optimization failed:\", data);\n return data;\n }\n\n console.log(\"Graph optimized successfully\");\n return data;\n }\n\n async function ingestDocs(\n urls: string[],\n mode: \"documents\" | \"entities\" | \"snippets\",\n brief: string,\n labels: string[]\n ): Promise<Success | Error> {\n // todo: implement\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<DocsIngestionRequest, Success>(\n \"docs.kg.ingest\",\n { urls, mode, brief, labels },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestText(\n text: string,\n mode: \"entities\" | \"snippets\"\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<any, Success>(\n \"docs.kg.ingestText\",\n { text, mode },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestYT(url: string): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<any, Success>(\n \"docs.kg.ingestYT\",\n { url },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function queryGraph(query: KGQuery): Promise<KGQueryResult> {\n if (!orgId) {\n throw new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n throw new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n\n const data = await request<KGQuery, KGQueryResult>(\n \"kg.query.graph\",\n query,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function getNodeById(id: string): Promise<KGNode | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n const data = await request<any, KGNode>(\n \"kg.query.nodeById\",\n { id },\n { orgId }\n );\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function getGraphLabels(): Promise<KGLabelInfo[] | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n // console.log(\"getGraphLabels\", { orgId });\n\n setIsLoading(true);\n\n const data = await request<any, KGLabelInfo[]>(\n \"kg.graph.labels\",\n {},\n { orgId }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n // todo: global error\n if (!Array.isArray(data) && typeof data === \"object\") {\n const err = data as any;\n return new Error(err?.message ?? err?.error ?? err);\n }\n\n return data;\n }\n\n useEffect(() => {\n if (!natsConnected || !orgId) {\n return;\n }\n async function getLabels(): Promise<KGLabelInfo[] | Error> {\n const data = await getGraphLabels();\n if (data instanceof Error) {\n // console.error(data);\n return [];\n }\n setLabels(data);\n return data;\n }\n getLabels();\n }, [natsConnected, orgId, stateTrigger]);\n\n useEffect(() => {\n if (!natsConnected || !orgId || !selectedLabel) {\n return;\n }\n async function getGraphQueryResult() {\n if (!selectedLabel) return;\n\n console.log(\"will getGraphQueryResult\", { orgId, selectedLabel });\n\n const query: KGQuery = {\n label: selectedLabel,\n fields: [],\n limit: 5_00,\n sortBy: \"\",\n sortOrder: \"asc\",\n // edges: [{ label: \"student of\", direction: \"outgoing\" }],\n depth: 2,\n };\n\n const res = await queryGraph(query);\n\n if (res instanceof Error) {\n console.error(res);\n return;\n }\n setQueryResult(res);\n console.log(\"graph query response \", {\n nodesCount: res.nodes?.length,\n edgesCount: res.edges?.length,\n });\n }\n getGraphQueryResult();\n }, [natsConnected, orgId, selectedLabel, stateTrigger]);\n\n function refreshState() {\n setStateTrigger(stateTrigger + 1);\n }\n\n return {\n isLoading,\n ingestNode,\n ingestNodes,\n updateNode,\n queryGraph,\n getNodeById,\n getGraphLabels,\n labels,\n selectedLabel,\n setSelectedLabel,\n queryResult,\n setQueryResult,\n refreshState,\n ingestDocs,\n ingestText,\n selectedNodeId,\n setSelectedNodeId,\n ingestYT,\n };\n};\n","\"use client\";\n\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useUserContext } from \"@elqnt/auth\";\nimport { useState } from \"react\";\nexport type UseKnowledgeGraphAnalyticsType = {\n isLoading: boolean;\n};\n\nexport const useKnowledgeGraphAnalytics = (\n overrideOrgId?: string\n): UseKnowledgeGraphAnalyticsType => {\n const { selectedOrgId } = useUserContext();\n const [isLoading, setIsLoading] = useState(false);\n const { natsConnected, request } = useNatsContext();\n\n return {\n isLoading,\n };\n};\n","\"use client\";\n\nimport { ReactNode, createContext, useContext } from \"react\";\nimport {\n UseKnowledgeGraphType,\n useKnowledgeGraph,\n} from \"../hooks/use-knowledge-graph\";\n\nexport const KnowledgeGraphContext = createContext<\n UseKnowledgeGraphType | undefined\n>(undefined);\n\nexport function KnowledgeGraphContextProvider(props: {\n children: ReactNode;\n overrideOrgId?: string;\n}) {\n const { children, overrideOrgId } = props;\n\n const useKG = useKnowledgeGraph(overrideOrgId);\n\n return (\n <KnowledgeGraphContext.Provider value={useKG}>\n {children}\n </KnowledgeGraphContext.Provider>\n );\n}\n\nexport const useKnowledgeGraphContext = () => {\n const context = useContext(KnowledgeGraphContext);\n if (context === undefined) {\n throw new Error(\n \"useKnowledgeGraphContext must be used within a KnowledgeGraphContextProvider\"\n );\n }\n return context;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eloquent-packages/eloquent-packages/packages/kg/dist/index.js","../consts.ts","../hooks/use-knowledge-graph.ts","../hooks/use-knowledge-graph-analytics.ts","../state/knowledge-graph-context.tsx"],"names":["labels","useUserContext","useState","useNatsContext"],"mappings":"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","file":"/home/runner/work/eloquent-packages/eloquent-packages/packages/kg/dist/index.js","sourcesContent":[null,"export const Test = \"hi\";","\"use client\";\n\nimport { useUserContext } from \"@elqnt/auth\";\nimport { DocsIngestionRequest } from \"@elqnt/docs\";\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n Graph,\n KGLabelInfo,\n KGNode,\n KGNodeIngestRequest,\n KGQuery,\n KGQueryResult,\n ListGraphsResult,\n} from \"../models\";\nimport { KGGraphList } from \"../models/kg-designer\";\n\ntype Success = { success: boolean };\n\nexport type UseKnowledgeGraphType = {\n isLoading: boolean;\n ingestNode: (node: KGNodeIngestRequest) => Promise<Success | Error>;\n ingestNodes: (node: KGNodeIngestRequest[]) => Promise<Success | Error>;\n updateNode: (\n nodeId: string,\n label: string,\n fields: Record<string, any>\n ) => Promise<Success | Error>;\n ingestDocs: (\n urls: string[],\n mode: \"documents\" | \"entities\" | \"snippets\",\n brief: string,\n labels: string[]\n ) => Promise<Success | Error>;\n\n ingestText: (\n text: string,\n mode: \"entities\" | \"snippets\"\n ) => Promise<Success | Error>;\n\n ingestYT: (url: string) => Promise<Success | Error>;\n\n queryGraph: (query: KGQuery) => Promise<KGQueryResult>;\n getGraphLabels: () => Promise<KGLabelInfo[] | Error>;\n labels: KGLabelInfo[] | undefined;\n selectedLabel: string | undefined;\n setSelectedLabel: (label: string) => void;\n queryResult: KGQueryResult | undefined;\n setQueryResult: (res: KGQueryResult) => void;\n refreshState: () => void;\n selectedNodeId: string | undefined;\n setSelectedNodeId: (id: string | undefined) => void;\n getNodeById: (id: string) => Promise<KGNode | Error>;\n\n // Graph selection\n graphs: Graph[];\n selectedGraph: Graph | undefined;\n selectedGraphId: string | undefined;\n graphsLoading: boolean;\n graphsError: string | undefined;\n selectGraph: (graphId: string | undefined) => void;\n refreshGraphs: () => Promise<void>;\n};\n\nexport const useKnowledgeGraph = (\n overrideOrgId?: string\n): UseKnowledgeGraphType => {\n const { selectedOrgId } = useUserContext();\n const [isLoading, setIsLoading] = useState(false);\n const { natsConnected, request } = useNatsContext();\n const [selectedNodeId, setSelectedNodeId] = useState<string | undefined>(\n undefined\n );\n\n const orgId = overrideOrgId ?? selectedOrgId;\n\n const [labels, setLabels] = useState<KGLabelInfo[] | undefined>(undefined);\n const [selectedLabel, setSelectedLabel] = useState<string | undefined>(\n undefined\n );\n const [queryResult, setQueryResult] = useState<KGQueryResult | undefined>(\n undefined\n );\n\n const [stateTrigger, setStateTrigger] = useState(0);\n\n // --- Graph selection state ---\n const [graphs, setGraphs] = useState<Graph[]>([]);\n const [graphsLoading, setGraphsLoading] = useState(true);\n const [graphsError, setGraphsError] = useState<string | undefined>();\n const [selectedGraphId, setSelectedGraphId] = useState<string | undefined>();\n\n const selectedGraph = useMemo(() => {\n if (!selectedGraphId) {\n return graphs.find((g) => g.isDefault) || graphs[0];\n }\n return graphs.find((g) => g.id === selectedGraphId);\n }, [graphs, selectedGraphId]);\n\n function selectGraph(graphId: string | undefined) {\n setSelectedGraphId(graphId);\n }\n\n async function refreshGraphs() {\n if (!orgId || !natsConnected) return;\n\n setGraphsLoading(true);\n setGraphsError(undefined);\n\n const data = await request<{}, ListGraphsResult>(KGGraphList, {}, { orgId });\n\n if (data instanceof Error) {\n setGraphsError(data.message);\n setGraphsLoading(false);\n return;\n }\n\n if (data.success !== false) {\n const loadedGraphs = data.graphs || [];\n setGraphs(loadedGraphs);\n\n // Auto-select default graph only if nothing is selected\n setSelectedGraphId((prev) => {\n if (!prev && loadedGraphs.length) {\n const defaultGraph = loadedGraphs.find((g) => g.isDefault);\n return defaultGraph?.id || loadedGraphs[0]?.id;\n }\n return prev;\n });\n } else {\n setGraphsError(data.error || \"Failed to load graphs\");\n }\n\n setGraphsLoading(false);\n }\n\n // Load graphs when NATS connects or org changes\n useEffect(() => {\n if (!natsConnected || !orgId) return;\n setSelectedGraphId(undefined);\n refreshGraphs();\n }, [natsConnected, orgId]);\n\n async function ingestNode(\n node: KGNodeIngestRequest\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<KGNodeIngestRequest, Success>(\n \"kg.ingest.node\",\n node,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestNodes(\n nodes: KGNodeIngestRequest[]\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<KGNodeIngestRequest[], Success>(\n \"kg.ingest.nodes\",\n nodes,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function updateNode(\n nodeId: string,\n label: string,\n fields: Record<string, any>\n ): Promise<Success | Error> {\n const nodeRequest: KGNodeIngestRequest = {\n label,\n keyField: \"id\",\n fields: {\n ...fields,\n id: nodeId,\n },\n duplicatePolicy: \"replace\",\n };\n\n const result = await ingestNode(nodeRequest);\n\n // Optimize graph after successful update (non-blocking, with delay)\n if (!(result instanceof Error)) {\n // Wait 2 seconds to ensure node is fully written to ClickHouse\n setTimeout(() => {\n optimizeGraph().catch(err =>\n console.error(\"Failed to optimize graph after node update:\", err)\n );\n }, 2000);\n }\n\n return result;\n }\n\n async function optimizeGraph(): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n const data = await request<{}, Success>(\n \"kg.graph.optimize\",\n {},\n {\n orgId,\n }\n );\n\n if (data instanceof Error) {\n console.error(\"Graph optimization failed:\", data);\n return data;\n }\n\n console.log(\"Graph optimized successfully\");\n return data;\n }\n\n async function ingestDocs(\n urls: string[],\n mode: \"documents\" | \"entities\" | \"snippets\",\n brief: string,\n labels: string[]\n ): Promise<Success | Error> {\n // todo: implement\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<DocsIngestionRequest, Success>(\n \"docs.kg.ingest\",\n { urls, mode, brief, labels },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestText(\n text: string,\n mode: \"entities\" | \"snippets\"\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<any, Success>(\n \"docs.kg.ingestText\",\n { text, mode },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestYT(url: string): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<any, Success>(\n \"docs.kg.ingestYT\",\n { url },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function queryGraph(query: KGQuery): Promise<KGQueryResult> {\n if (!orgId) {\n throw new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n throw new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n\n const data = await request<KGQuery, KGQueryResult>(\n \"kg.query.graph\",\n query,\n {\n orgId,\n graphId: selectedGraph?.id,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function getNodeById(id: string): Promise<KGNode | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n const data = await request<any, KGNode>(\n \"kg.query.nodeById\",\n { id },\n { orgId, graphId: selectedGraph?.id }\n );\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function getGraphLabels(): Promise<KGLabelInfo[] | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n // console.log(\"getGraphLabels\", { orgId });\n\n setIsLoading(true);\n\n const data = await request<any, KGLabelInfo[]>(\n \"kg.graph.labels\",\n {},\n { orgId, graphId: selectedGraph?.id }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n // todo: global error\n if (!Array.isArray(data) && typeof data === \"object\") {\n const err = data as any;\n return new Error(err?.message ?? err?.error ?? err);\n }\n\n return data;\n }\n\n // Reset labels and query state when graph changes\n useEffect(() => {\n setLabels(undefined);\n setSelectedLabel(undefined);\n setQueryResult(undefined);\n }, [selectedGraph?.id]);\n\n useEffect(() => {\n if (!natsConnected || !orgId) {\n return;\n }\n async function getLabels(): Promise<KGLabelInfo[] | Error> {\n const data = await getGraphLabels();\n if (data instanceof Error) {\n // console.error(data);\n return [];\n }\n setLabels(data);\n return data;\n }\n getLabels();\n }, [natsConnected, orgId, selectedGraph?.id, stateTrigger]);\n\n useEffect(() => {\n if (!natsConnected || !orgId || !selectedLabel) {\n return;\n }\n async function getGraphQueryResult() {\n if (!selectedLabel) return;\n\n const query: KGQuery = {\n label: selectedLabel,\n fields: [],\n limit: 5_00,\n sortBy: \"\",\n sortOrder: \"asc\",\n depth: 2,\n };\n\n const res = await queryGraph(query);\n\n if (res instanceof Error) {\n console.error(res);\n return;\n }\n setQueryResult(res);\n }\n getGraphQueryResult();\n }, [natsConnected, orgId, selectedGraph?.id, selectedLabel, stateTrigger]);\n\n function refreshState() {\n setStateTrigger(stateTrigger + 1);\n }\n\n return {\n isLoading,\n ingestNode,\n ingestNodes,\n updateNode,\n queryGraph,\n getNodeById,\n getGraphLabels,\n labels,\n selectedLabel,\n setSelectedLabel,\n queryResult,\n setQueryResult,\n refreshState,\n ingestDocs,\n ingestText,\n selectedNodeId,\n setSelectedNodeId,\n ingestYT,\n\n // Graph selection\n graphs,\n selectedGraph,\n selectedGraphId: selectedGraph?.id,\n graphsLoading,\n graphsError,\n selectGraph,\n refreshGraphs,\n };\n};\n","\"use client\";\n\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useUserContext } from \"@elqnt/auth\";\nimport { useState } from \"react\";\nexport type UseKnowledgeGraphAnalyticsType = {\n isLoading: boolean;\n};\n\nexport const useKnowledgeGraphAnalytics = (\n overrideOrgId?: string\n): UseKnowledgeGraphAnalyticsType => {\n const { selectedOrgId } = useUserContext();\n const [isLoading, setIsLoading] = useState(false);\n const { natsConnected, request } = useNatsContext();\n\n return {\n isLoading,\n };\n};\n","\"use client\";\n\nimport { ReactNode, createContext, useContext } from \"react\";\nimport {\n UseKnowledgeGraphType,\n useKnowledgeGraph,\n} from \"../hooks/use-knowledge-graph\";\n\nexport const KnowledgeGraphContext = createContext<\n UseKnowledgeGraphType | undefined\n>(undefined);\n\nexport function KnowledgeGraphContextProvider(props: {\n children: ReactNode;\n overrideOrgId?: string;\n}) {\n const { children, overrideOrgId } = props;\n\n const useKG = useKnowledgeGraph(overrideOrgId);\n\n return (\n <KnowledgeGraphContext.Provider value={useKG}>\n {children}\n </KnowledgeGraphContext.Provider>\n );\n}\n\nexport const useKnowledgeGraphContext = () => {\n const context = useContext(KnowledgeGraphContext);\n if (context === undefined) {\n throw new Error(\n \"useKnowledgeGraphContext must be used within a KnowledgeGraphContextProvider\"\n );\n }\n return context;\n};\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -49,7 +49,7 @@ var Test = "hi";
|
|
|
49
49
|
// hooks/use-knowledge-graph.ts
|
|
50
50
|
import { useUserContext } from "@elqnt/auth";
|
|
51
51
|
import { useNatsContext } from "@elqnt/nats";
|
|
52
|
-
import { useEffect, useState } from "react";
|
|
52
|
+
import { useEffect, useMemo, useState } from "react";
|
|
53
53
|
var useKnowledgeGraph = (overrideOrgId) => {
|
|
54
54
|
const { selectedOrgId } = useUserContext();
|
|
55
55
|
const [isLoading, setIsLoading] = useState(false);
|
|
@@ -66,6 +66,49 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
66
66
|
void 0
|
|
67
67
|
);
|
|
68
68
|
const [stateTrigger, setStateTrigger] = useState(0);
|
|
69
|
+
const [graphs, setGraphs] = useState([]);
|
|
70
|
+
const [graphsLoading, setGraphsLoading] = useState(true);
|
|
71
|
+
const [graphsError, setGraphsError] = useState();
|
|
72
|
+
const [selectedGraphId, setSelectedGraphId] = useState();
|
|
73
|
+
const selectedGraph = useMemo(() => {
|
|
74
|
+
if (!selectedGraphId) {
|
|
75
|
+
return graphs.find((g) => g.isDefault) || graphs[0];
|
|
76
|
+
}
|
|
77
|
+
return graphs.find((g) => g.id === selectedGraphId);
|
|
78
|
+
}, [graphs, selectedGraphId]);
|
|
79
|
+
function selectGraph(graphId) {
|
|
80
|
+
setSelectedGraphId(graphId);
|
|
81
|
+
}
|
|
82
|
+
async function refreshGraphs() {
|
|
83
|
+
if (!orgId || !natsConnected) return;
|
|
84
|
+
setGraphsLoading(true);
|
|
85
|
+
setGraphsError(void 0);
|
|
86
|
+
const data = await request(KGGraphList, {}, { orgId });
|
|
87
|
+
if (data instanceof Error) {
|
|
88
|
+
setGraphsError(data.message);
|
|
89
|
+
setGraphsLoading(false);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (data.success !== false) {
|
|
93
|
+
const loadedGraphs = data.graphs || [];
|
|
94
|
+
setGraphs(loadedGraphs);
|
|
95
|
+
setSelectedGraphId((prev) => {
|
|
96
|
+
if (!prev && loadedGraphs.length) {
|
|
97
|
+
const defaultGraph = loadedGraphs.find((g) => g.isDefault);
|
|
98
|
+
return defaultGraph?.id || loadedGraphs[0]?.id;
|
|
99
|
+
}
|
|
100
|
+
return prev;
|
|
101
|
+
});
|
|
102
|
+
} else {
|
|
103
|
+
setGraphsError(data.error || "Failed to load graphs");
|
|
104
|
+
}
|
|
105
|
+
setGraphsLoading(false);
|
|
106
|
+
}
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
if (!natsConnected || !orgId) return;
|
|
109
|
+
setSelectedGraphId(void 0);
|
|
110
|
+
refreshGraphs();
|
|
111
|
+
}, [natsConnected, orgId]);
|
|
69
112
|
async function ingestNode(node) {
|
|
70
113
|
if (!orgId) {
|
|
71
114
|
return new Error("No orgId provided");
|
|
@@ -229,7 +272,8 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
229
272
|
"kg.query.graph",
|
|
230
273
|
query,
|
|
231
274
|
{
|
|
232
|
-
orgId
|
|
275
|
+
orgId,
|
|
276
|
+
graphId: selectedGraph?.id
|
|
233
277
|
}
|
|
234
278
|
);
|
|
235
279
|
setIsLoading(false);
|
|
@@ -249,7 +293,7 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
249
293
|
const data = await request(
|
|
250
294
|
"kg.query.nodeById",
|
|
251
295
|
{ id },
|
|
252
|
-
{ orgId }
|
|
296
|
+
{ orgId, graphId: selectedGraph?.id }
|
|
253
297
|
);
|
|
254
298
|
if (data instanceof Error) {
|
|
255
299
|
console.error(data);
|
|
@@ -268,7 +312,7 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
268
312
|
const data = await request(
|
|
269
313
|
"kg.graph.labels",
|
|
270
314
|
{},
|
|
271
|
-
{ orgId }
|
|
315
|
+
{ orgId, graphId: selectedGraph?.id }
|
|
272
316
|
);
|
|
273
317
|
setIsLoading(false);
|
|
274
318
|
if (data instanceof Error) {
|
|
@@ -281,6 +325,11 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
281
325
|
}
|
|
282
326
|
return data;
|
|
283
327
|
}
|
|
328
|
+
useEffect(() => {
|
|
329
|
+
setLabels(void 0);
|
|
330
|
+
setSelectedLabel(void 0);
|
|
331
|
+
setQueryResult(void 0);
|
|
332
|
+
}, [selectedGraph?.id]);
|
|
284
333
|
useEffect(() => {
|
|
285
334
|
if (!natsConnected || !orgId) {
|
|
286
335
|
return;
|
|
@@ -294,21 +343,19 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
294
343
|
return data;
|
|
295
344
|
}
|
|
296
345
|
getLabels();
|
|
297
|
-
}, [natsConnected, orgId, stateTrigger]);
|
|
346
|
+
}, [natsConnected, orgId, selectedGraph?.id, stateTrigger]);
|
|
298
347
|
useEffect(() => {
|
|
299
348
|
if (!natsConnected || !orgId || !selectedLabel) {
|
|
300
349
|
return;
|
|
301
350
|
}
|
|
302
351
|
async function getGraphQueryResult() {
|
|
303
352
|
if (!selectedLabel) return;
|
|
304
|
-
console.log("will getGraphQueryResult", { orgId, selectedLabel });
|
|
305
353
|
const query = {
|
|
306
354
|
label: selectedLabel,
|
|
307
355
|
fields: [],
|
|
308
356
|
limit: 500,
|
|
309
357
|
sortBy: "",
|
|
310
358
|
sortOrder: "asc",
|
|
311
|
-
// edges: [{ label: "student of", direction: "outgoing" }],
|
|
312
359
|
depth: 2
|
|
313
360
|
};
|
|
314
361
|
const res = await queryGraph(query);
|
|
@@ -317,13 +364,9 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
317
364
|
return;
|
|
318
365
|
}
|
|
319
366
|
setQueryResult(res);
|
|
320
|
-
console.log("graph query response ", {
|
|
321
|
-
nodesCount: res.nodes?.length,
|
|
322
|
-
edgesCount: res.edges?.length
|
|
323
|
-
});
|
|
324
367
|
}
|
|
325
368
|
getGraphQueryResult();
|
|
326
|
-
}, [natsConnected, orgId, selectedLabel, stateTrigger]);
|
|
369
|
+
}, [natsConnected, orgId, selectedGraph?.id, selectedLabel, stateTrigger]);
|
|
327
370
|
function refreshState() {
|
|
328
371
|
setStateTrigger(stateTrigger + 1);
|
|
329
372
|
}
|
|
@@ -345,7 +388,15 @@ var useKnowledgeGraph = (overrideOrgId) => {
|
|
|
345
388
|
ingestText,
|
|
346
389
|
selectedNodeId,
|
|
347
390
|
setSelectedNodeId,
|
|
348
|
-
ingestYT
|
|
391
|
+
ingestYT,
|
|
392
|
+
// Graph selection
|
|
393
|
+
graphs,
|
|
394
|
+
selectedGraph,
|
|
395
|
+
selectedGraphId: selectedGraph?.id,
|
|
396
|
+
graphsLoading,
|
|
397
|
+
graphsError,
|
|
398
|
+
selectGraph,
|
|
399
|
+
refreshGraphs
|
|
349
400
|
};
|
|
350
401
|
};
|
|
351
402
|
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../consts.ts","../hooks/use-knowledge-graph.ts","../hooks/use-knowledge-graph-analytics.ts","../state/knowledge-graph-context.tsx"],"sourcesContent":["export const Test = \"hi\";","\"use client\";\n\nimport { useUserContext } from \"@elqnt/auth\";\nimport { DocsIngestionRequest } from \"@elqnt/docs\";\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useEffect, useState } from \"react\";\nimport {\n KGLabelInfo,\n KGNode,\n KGNodeIngestRequest,\n KGQuery,\n KGQueryResult,\n} from \"../models\";\n\ntype Success = { success: boolean };\n\nexport type UseKnowledgeGraphType = {\n isLoading: boolean;\n ingestNode: (node: KGNodeIngestRequest) => Promise<Success | Error>;\n ingestNodes: (node: KGNodeIngestRequest[]) => Promise<Success | Error>;\n updateNode: (\n nodeId: string,\n label: string,\n fields: Record<string, any>\n ) => Promise<Success | Error>;\n ingestDocs: (\n urls: string[],\n mode: \"documents\" | \"entities\" | \"snippets\",\n brief: string,\n labels: string[]\n ) => Promise<Success | Error>;\n\n ingestText: (\n text: string,\n mode: \"entities\" | \"snippets\"\n ) => Promise<Success | Error>;\n\n ingestYT: (url: string) => Promise<Success | Error>;\n\n queryGraph: (query: KGQuery) => Promise<KGQueryResult>;\n getGraphLabels: () => Promise<KGLabelInfo[] | Error>;\n labels: KGLabelInfo[] | undefined;\n selectedLabel: string | undefined;\n setSelectedLabel: (label: string) => void;\n queryResult: KGQueryResult | undefined;\n setQueryResult: (res: KGQueryResult) => void;\n refreshState: () => void;\n selectedNodeId: string | undefined;\n setSelectedNodeId: (id: string | undefined) => void;\n getNodeById: (id: string) => Promise<KGNode | Error>;\n};\n\nexport const useKnowledgeGraph = (\n overrideOrgId?: string\n): UseKnowledgeGraphType => {\n const { selectedOrgId } = useUserContext();\n const [isLoading, setIsLoading] = useState(false);\n const { natsConnected, request } = useNatsContext();\n const [selectedNodeId, setSelectedNodeId] = useState<string | undefined>(\n undefined\n );\n\n const orgId = overrideOrgId ?? selectedOrgId;\n\n const [labels, setLabels] = useState<KGLabelInfo[] | undefined>(undefined);\n const [selectedLabel, setSelectedLabel] = useState<string | undefined>(\n undefined\n );\n const [queryResult, setQueryResult] = useState<KGQueryResult | undefined>(\n undefined\n );\n\n const [stateTrigger, setStateTrigger] = useState(0);\n\n async function ingestNode(\n node: KGNodeIngestRequest\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<KGNodeIngestRequest, Success>(\n \"kg.ingest.node\",\n node,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestNodes(\n nodes: KGNodeIngestRequest[]\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<KGNodeIngestRequest[], Success>(\n \"kg.ingest.nodes\",\n nodes,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function updateNode(\n nodeId: string,\n label: string,\n fields: Record<string, any>\n ): Promise<Success | Error> {\n const nodeRequest: KGNodeIngestRequest = {\n label,\n keyField: \"id\",\n fields: {\n ...fields,\n id: nodeId,\n },\n duplicatePolicy: \"replace\",\n };\n\n const result = await ingestNode(nodeRequest);\n\n // Optimize graph after successful update (non-blocking, with delay)\n if (!(result instanceof Error)) {\n // Wait 2 seconds to ensure node is fully written to ClickHouse\n setTimeout(() => {\n optimizeGraph().catch(err =>\n console.error(\"Failed to optimize graph after node update:\", err)\n );\n }, 2000);\n }\n\n return result;\n }\n\n async function optimizeGraph(): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n const data = await request<{}, Success>(\n \"kg.graph.optimize\",\n {},\n {\n orgId,\n }\n );\n\n if (data instanceof Error) {\n console.error(\"Graph optimization failed:\", data);\n return data;\n }\n\n console.log(\"Graph optimized successfully\");\n return data;\n }\n\n async function ingestDocs(\n urls: string[],\n mode: \"documents\" | \"entities\" | \"snippets\",\n brief: string,\n labels: string[]\n ): Promise<Success | Error> {\n // todo: implement\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<DocsIngestionRequest, Success>(\n \"docs.kg.ingest\",\n { urls, mode, brief, labels },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestText(\n text: string,\n mode: \"entities\" | \"snippets\"\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<any, Success>(\n \"docs.kg.ingestText\",\n { text, mode },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestYT(url: string): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<any, Success>(\n \"docs.kg.ingestYT\",\n { url },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function queryGraph(query: KGQuery): Promise<KGQueryResult> {\n if (!orgId) {\n throw new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n throw new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n\n const data = await request<KGQuery, KGQueryResult>(\n \"kg.query.graph\",\n query,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function getNodeById(id: string): Promise<KGNode | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n const data = await request<any, KGNode>(\n \"kg.query.nodeById\",\n { id },\n { orgId }\n );\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function getGraphLabels(): Promise<KGLabelInfo[] | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n // console.log(\"getGraphLabels\", { orgId });\n\n setIsLoading(true);\n\n const data = await request<any, KGLabelInfo[]>(\n \"kg.graph.labels\",\n {},\n { orgId }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n // todo: global error\n if (!Array.isArray(data) && typeof data === \"object\") {\n const err = data as any;\n return new Error(err?.message ?? err?.error ?? err);\n }\n\n return data;\n }\n\n useEffect(() => {\n if (!natsConnected || !orgId) {\n return;\n }\n async function getLabels(): Promise<KGLabelInfo[] | Error> {\n const data = await getGraphLabels();\n if (data instanceof Error) {\n // console.error(data);\n return [];\n }\n setLabels(data);\n return data;\n }\n getLabels();\n }, [natsConnected, orgId, stateTrigger]);\n\n useEffect(() => {\n if (!natsConnected || !orgId || !selectedLabel) {\n return;\n }\n async function getGraphQueryResult() {\n if (!selectedLabel) return;\n\n console.log(\"will getGraphQueryResult\", { orgId, selectedLabel });\n\n const query: KGQuery = {\n label: selectedLabel,\n fields: [],\n limit: 5_00,\n sortBy: \"\",\n sortOrder: \"asc\",\n // edges: [{ label: \"student of\", direction: \"outgoing\" }],\n depth: 2,\n };\n\n const res = await queryGraph(query);\n\n if (res instanceof Error) {\n console.error(res);\n return;\n }\n setQueryResult(res);\n console.log(\"graph query response \", {\n nodesCount: res.nodes?.length,\n edgesCount: res.edges?.length,\n });\n }\n getGraphQueryResult();\n }, [natsConnected, orgId, selectedLabel, stateTrigger]);\n\n function refreshState() {\n setStateTrigger(stateTrigger + 1);\n }\n\n return {\n isLoading,\n ingestNode,\n ingestNodes,\n updateNode,\n queryGraph,\n getNodeById,\n getGraphLabels,\n labels,\n selectedLabel,\n setSelectedLabel,\n queryResult,\n setQueryResult,\n refreshState,\n ingestDocs,\n ingestText,\n selectedNodeId,\n setSelectedNodeId,\n ingestYT,\n };\n};\n","\"use client\";\n\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useUserContext } from \"@elqnt/auth\";\nimport { useState } from \"react\";\nexport type UseKnowledgeGraphAnalyticsType = {\n isLoading: boolean;\n};\n\nexport const useKnowledgeGraphAnalytics = (\n overrideOrgId?: string\n): UseKnowledgeGraphAnalyticsType => {\n const { selectedOrgId } = useUserContext();\n const [isLoading, setIsLoading] = useState(false);\n const { natsConnected, request } = useNatsContext();\n\n return {\n isLoading,\n };\n};\n","\"use client\";\n\nimport { ReactNode, createContext, useContext } from \"react\";\nimport {\n UseKnowledgeGraphType,\n useKnowledgeGraph,\n} from \"../hooks/use-knowledge-graph\";\n\nexport const KnowledgeGraphContext = createContext<\n UseKnowledgeGraphType | undefined\n>(undefined);\n\nexport function KnowledgeGraphContextProvider(props: {\n children: ReactNode;\n overrideOrgId?: string;\n}) {\n const { children, overrideOrgId } = props;\n\n const useKG = useKnowledgeGraph(overrideOrgId);\n\n return (\n <KnowledgeGraphContext.Provider value={useKG}>\n {children}\n </KnowledgeGraphContext.Provider>\n );\n}\n\nexport const useKnowledgeGraphContext = () => {\n const context = useContext(KnowledgeGraphContext);\n if (context === undefined) {\n throw new Error(\n \"useKnowledgeGraphContext must be used within a KnowledgeGraphContextProvider\"\n );\n }\n return context;\n};\n"],"mappings":"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","names":["labels","useNatsContext","useUserContext","useState"]}
|
|
1
|
+
{"version":3,"sources":["../consts.ts","../hooks/use-knowledge-graph.ts","../hooks/use-knowledge-graph-analytics.ts","../state/knowledge-graph-context.tsx"],"sourcesContent":["export const Test = \"hi\";","\"use client\";\n\nimport { useUserContext } from \"@elqnt/auth\";\nimport { DocsIngestionRequest } from \"@elqnt/docs\";\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n Graph,\n KGLabelInfo,\n KGNode,\n KGNodeIngestRequest,\n KGQuery,\n KGQueryResult,\n ListGraphsResult,\n} from \"../models\";\nimport { KGGraphList } from \"../models/kg-designer\";\n\ntype Success = { success: boolean };\n\nexport type UseKnowledgeGraphType = {\n isLoading: boolean;\n ingestNode: (node: KGNodeIngestRequest) => Promise<Success | Error>;\n ingestNodes: (node: KGNodeIngestRequest[]) => Promise<Success | Error>;\n updateNode: (\n nodeId: string,\n label: string,\n fields: Record<string, any>\n ) => Promise<Success | Error>;\n ingestDocs: (\n urls: string[],\n mode: \"documents\" | \"entities\" | \"snippets\",\n brief: string,\n labels: string[]\n ) => Promise<Success | Error>;\n\n ingestText: (\n text: string,\n mode: \"entities\" | \"snippets\"\n ) => Promise<Success | Error>;\n\n ingestYT: (url: string) => Promise<Success | Error>;\n\n queryGraph: (query: KGQuery) => Promise<KGQueryResult>;\n getGraphLabels: () => Promise<KGLabelInfo[] | Error>;\n labels: KGLabelInfo[] | undefined;\n selectedLabel: string | undefined;\n setSelectedLabel: (label: string) => void;\n queryResult: KGQueryResult | undefined;\n setQueryResult: (res: KGQueryResult) => void;\n refreshState: () => void;\n selectedNodeId: string | undefined;\n setSelectedNodeId: (id: string | undefined) => void;\n getNodeById: (id: string) => Promise<KGNode | Error>;\n\n // Graph selection\n graphs: Graph[];\n selectedGraph: Graph | undefined;\n selectedGraphId: string | undefined;\n graphsLoading: boolean;\n graphsError: string | undefined;\n selectGraph: (graphId: string | undefined) => void;\n refreshGraphs: () => Promise<void>;\n};\n\nexport const useKnowledgeGraph = (\n overrideOrgId?: string\n): UseKnowledgeGraphType => {\n const { selectedOrgId } = useUserContext();\n const [isLoading, setIsLoading] = useState(false);\n const { natsConnected, request } = useNatsContext();\n const [selectedNodeId, setSelectedNodeId] = useState<string | undefined>(\n undefined\n );\n\n const orgId = overrideOrgId ?? selectedOrgId;\n\n const [labels, setLabels] = useState<KGLabelInfo[] | undefined>(undefined);\n const [selectedLabel, setSelectedLabel] = useState<string | undefined>(\n undefined\n );\n const [queryResult, setQueryResult] = useState<KGQueryResult | undefined>(\n undefined\n );\n\n const [stateTrigger, setStateTrigger] = useState(0);\n\n // --- Graph selection state ---\n const [graphs, setGraphs] = useState<Graph[]>([]);\n const [graphsLoading, setGraphsLoading] = useState(true);\n const [graphsError, setGraphsError] = useState<string | undefined>();\n const [selectedGraphId, setSelectedGraphId] = useState<string | undefined>();\n\n const selectedGraph = useMemo(() => {\n if (!selectedGraphId) {\n return graphs.find((g) => g.isDefault) || graphs[0];\n }\n return graphs.find((g) => g.id === selectedGraphId);\n }, [graphs, selectedGraphId]);\n\n function selectGraph(graphId: string | undefined) {\n setSelectedGraphId(graphId);\n }\n\n async function refreshGraphs() {\n if (!orgId || !natsConnected) return;\n\n setGraphsLoading(true);\n setGraphsError(undefined);\n\n const data = await request<{}, ListGraphsResult>(KGGraphList, {}, { orgId });\n\n if (data instanceof Error) {\n setGraphsError(data.message);\n setGraphsLoading(false);\n return;\n }\n\n if (data.success !== false) {\n const loadedGraphs = data.graphs || [];\n setGraphs(loadedGraphs);\n\n // Auto-select default graph only if nothing is selected\n setSelectedGraphId((prev) => {\n if (!prev && loadedGraphs.length) {\n const defaultGraph = loadedGraphs.find((g) => g.isDefault);\n return defaultGraph?.id || loadedGraphs[0]?.id;\n }\n return prev;\n });\n } else {\n setGraphsError(data.error || \"Failed to load graphs\");\n }\n\n setGraphsLoading(false);\n }\n\n // Load graphs when NATS connects or org changes\n useEffect(() => {\n if (!natsConnected || !orgId) return;\n setSelectedGraphId(undefined);\n refreshGraphs();\n }, [natsConnected, orgId]);\n\n async function ingestNode(\n node: KGNodeIngestRequest\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<KGNodeIngestRequest, Success>(\n \"kg.ingest.node\",\n node,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestNodes(\n nodes: KGNodeIngestRequest[]\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<KGNodeIngestRequest[], Success>(\n \"kg.ingest.nodes\",\n nodes,\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function updateNode(\n nodeId: string,\n label: string,\n fields: Record<string, any>\n ): Promise<Success | Error> {\n const nodeRequest: KGNodeIngestRequest = {\n label,\n keyField: \"id\",\n fields: {\n ...fields,\n id: nodeId,\n },\n duplicatePolicy: \"replace\",\n };\n\n const result = await ingestNode(nodeRequest);\n\n // Optimize graph after successful update (non-blocking, with delay)\n if (!(result instanceof Error)) {\n // Wait 2 seconds to ensure node is fully written to ClickHouse\n setTimeout(() => {\n optimizeGraph().catch(err =>\n console.error(\"Failed to optimize graph after node update:\", err)\n );\n }, 2000);\n }\n\n return result;\n }\n\n async function optimizeGraph(): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n const data = await request<{}, Success>(\n \"kg.graph.optimize\",\n {},\n {\n orgId,\n }\n );\n\n if (data instanceof Error) {\n console.error(\"Graph optimization failed:\", data);\n return data;\n }\n\n console.log(\"Graph optimized successfully\");\n return data;\n }\n\n async function ingestDocs(\n urls: string[],\n mode: \"documents\" | \"entities\" | \"snippets\",\n brief: string,\n labels: string[]\n ): Promise<Success | Error> {\n // todo: implement\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<DocsIngestionRequest, Success>(\n \"docs.kg.ingest\",\n { urls, mode, brief, labels },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestText(\n text: string,\n mode: \"entities\" | \"snippets\"\n ): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<any, Success>(\n \"docs.kg.ingestText\",\n { text, mode },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function ingestYT(url: string): Promise<Success | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n const data = await request<any, Success>(\n \"docs.kg.ingestYT\",\n { url },\n {\n orgId,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function queryGraph(query: KGQuery): Promise<KGQueryResult> {\n if (!orgId) {\n throw new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n throw new Error(\"Not connected to NATS\");\n }\n\n setIsLoading(true);\n\n const data = await request<KGQuery, KGQueryResult>(\n \"kg.query.graph\",\n query,\n {\n orgId,\n graphId: selectedGraph?.id,\n }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function getNodeById(id: string): Promise<KGNode | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n const data = await request<any, KGNode>(\n \"kg.query.nodeById\",\n { id },\n { orgId, graphId: selectedGraph?.id }\n );\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n return data;\n }\n\n async function getGraphLabels(): Promise<KGLabelInfo[] | Error> {\n if (!orgId) {\n return new Error(\"No orgId provided\");\n }\n\n if (!natsConnected) {\n return new Error(\"Not connected to NATS\");\n }\n\n // console.log(\"getGraphLabels\", { orgId });\n\n setIsLoading(true);\n\n const data = await request<any, KGLabelInfo[]>(\n \"kg.graph.labels\",\n {},\n { orgId, graphId: selectedGraph?.id }\n );\n\n setIsLoading(false);\n\n if (data instanceof Error) {\n console.error(data);\n return data;\n }\n\n // todo: global error\n if (!Array.isArray(data) && typeof data === \"object\") {\n const err = data as any;\n return new Error(err?.message ?? err?.error ?? err);\n }\n\n return data;\n }\n\n // Reset labels and query state when graph changes\n useEffect(() => {\n setLabels(undefined);\n setSelectedLabel(undefined);\n setQueryResult(undefined);\n }, [selectedGraph?.id]);\n\n useEffect(() => {\n if (!natsConnected || !orgId) {\n return;\n }\n async function getLabels(): Promise<KGLabelInfo[] | Error> {\n const data = await getGraphLabels();\n if (data instanceof Error) {\n // console.error(data);\n return [];\n }\n setLabels(data);\n return data;\n }\n getLabels();\n }, [natsConnected, orgId, selectedGraph?.id, stateTrigger]);\n\n useEffect(() => {\n if (!natsConnected || !orgId || !selectedLabel) {\n return;\n }\n async function getGraphQueryResult() {\n if (!selectedLabel) return;\n\n const query: KGQuery = {\n label: selectedLabel,\n fields: [],\n limit: 5_00,\n sortBy: \"\",\n sortOrder: \"asc\",\n depth: 2,\n };\n\n const res = await queryGraph(query);\n\n if (res instanceof Error) {\n console.error(res);\n return;\n }\n setQueryResult(res);\n }\n getGraphQueryResult();\n }, [natsConnected, orgId, selectedGraph?.id, selectedLabel, stateTrigger]);\n\n function refreshState() {\n setStateTrigger(stateTrigger + 1);\n }\n\n return {\n isLoading,\n ingestNode,\n ingestNodes,\n updateNode,\n queryGraph,\n getNodeById,\n getGraphLabels,\n labels,\n selectedLabel,\n setSelectedLabel,\n queryResult,\n setQueryResult,\n refreshState,\n ingestDocs,\n ingestText,\n selectedNodeId,\n setSelectedNodeId,\n ingestYT,\n\n // Graph selection\n graphs,\n selectedGraph,\n selectedGraphId: selectedGraph?.id,\n graphsLoading,\n graphsError,\n selectGraph,\n refreshGraphs,\n };\n};\n","\"use client\";\n\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useUserContext } from \"@elqnt/auth\";\nimport { useState } from \"react\";\nexport type UseKnowledgeGraphAnalyticsType = {\n isLoading: boolean;\n};\n\nexport const useKnowledgeGraphAnalytics = (\n overrideOrgId?: string\n): UseKnowledgeGraphAnalyticsType => {\n const { selectedOrgId } = useUserContext();\n const [isLoading, setIsLoading] = useState(false);\n const { natsConnected, request } = useNatsContext();\n\n return {\n isLoading,\n };\n};\n","\"use client\";\n\nimport { ReactNode, createContext, useContext } from \"react\";\nimport {\n UseKnowledgeGraphType,\n useKnowledgeGraph,\n} from \"../hooks/use-knowledge-graph\";\n\nexport const KnowledgeGraphContext = createContext<\n UseKnowledgeGraphType | undefined\n>(undefined);\n\nexport function KnowledgeGraphContextProvider(props: {\n children: ReactNode;\n overrideOrgId?: string;\n}) {\n const { children, overrideOrgId } = props;\n\n const useKG = useKnowledgeGraph(overrideOrgId);\n\n return (\n <KnowledgeGraphContext.Provider value={useKG}>\n {children}\n </KnowledgeGraphContext.Provider>\n );\n}\n\nexport const useKnowledgeGraphContext = () => {\n const context = useContext(KnowledgeGraphContext);\n if (context === undefined) {\n throw new Error(\n \"useKnowledgeGraphContext must be used within a KnowledgeGraphContextProvider\"\n );\n }\n return context;\n};\n"],"mappings":"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","names":["labels","useNatsContext","useUserContext","useState"]}
|