@elqnt/kg 2.1.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +357 -39
- package/dist/api/index.d.mts +250 -2
- package/dist/api/index.d.ts +250 -2
- package/dist/api/index.js +4 -2
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +3 -1
- package/dist/api/server.d.mts +219 -0
- package/dist/api/server.d.ts +219 -0
- package/dist/api/server.js +442 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/server.mjs +442 -0
- package/dist/api/server.mjs.map +1 -0
- package/dist/{chunk-JSMI4PFC.js → chunk-2TJCYLTP.js} +67 -65
- package/dist/chunk-2TJCYLTP.js.map +1 -0
- package/dist/chunk-7RW5MHP5.js +497 -0
- package/dist/chunk-7RW5MHP5.js.map +1 -0
- package/dist/chunk-ADIKUMMI.js +238 -0
- package/dist/chunk-ADIKUMMI.js.map +1 -0
- package/dist/chunk-CAXPQTKI.mjs +238 -0
- package/dist/chunk-CAXPQTKI.mjs.map +1 -0
- package/dist/{chunk-55R4PZ5A.mjs → chunk-HCDFJCQL.mjs} +65 -63
- package/dist/chunk-HCDFJCQL.mjs.map +1 -0
- package/dist/chunk-JZ7UXVRW.mjs +497 -0
- package/dist/chunk-JZ7UXVRW.mjs.map +1 -0
- package/dist/hooks/index.d.mts +109 -4
- package/dist/hooks/index.d.ts +109 -4
- package/dist/hooks/index.js +9 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +10 -4
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -4
- package/dist/index.mjs.map +1 -1
- package/dist/utils/index.d.mts +277 -0
- package/dist/utils/index.d.ts +277 -0
- package/dist/utils/index.js +44 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +44 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +15 -5
- package/dist/chunk-55R4PZ5A.mjs.map +0 -1
- package/dist/chunk-BQZLJ5LD.mjs +0 -577
- package/dist/chunk-BQZLJ5LD.mjs.map +0 -1
- package/dist/chunk-JSMI4PFC.js.map +0 -1
- package/dist/chunk-KATHAUDG.js +0 -577
- package/dist/chunk-KATHAUDG.js.map +0 -1
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
// api/index.ts
|
|
4
4
|
import { browserApiRequest } from "@elqnt/api-client/browser";
|
|
5
|
+
function buildQueryString(params) {
|
|
6
|
+
const searchParams = new URLSearchParams();
|
|
7
|
+
for (const [key, value] of Object.entries(params)) {
|
|
8
|
+
if (value !== void 0) {
|
|
9
|
+
searchParams.set(key, value);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const queryString = searchParams.toString();
|
|
13
|
+
return queryString ? `?${queryString}` : "";
|
|
14
|
+
}
|
|
15
|
+
function buildHeaders(graphId) {
|
|
16
|
+
return graphId ? { "X-Graph-ID": graphId } : void 0;
|
|
17
|
+
}
|
|
5
18
|
async function listGraphsApi(options) {
|
|
6
19
|
return browserApiRequest("/api/v1/kg/graphs", { method: "GET", ...options });
|
|
7
20
|
}
|
|
@@ -18,25 +31,27 @@ async function deleteGraphApi(graphId, options) {
|
|
|
18
31
|
return browserApiRequest(`/api/v1/kg/graphs/${graphId}`, { method: "DELETE", ...options });
|
|
19
32
|
}
|
|
20
33
|
async function queryGraphApi(query, options) {
|
|
21
|
-
return browserApiRequest("/api/v1/kg/query", {
|
|
34
|
+
return browserApiRequest("/api/v1/kg/query", {
|
|
35
|
+
method: "POST",
|
|
36
|
+
body: query,
|
|
37
|
+
timeout: 3e4,
|
|
38
|
+
headers: buildHeaders(options.graphId),
|
|
39
|
+
...options
|
|
40
|
+
});
|
|
22
41
|
}
|
|
23
42
|
async function getGraphLabelsApi(options) {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
const queryString = params.toString();
|
|
27
|
-
return browserApiRequest(`/api/v1/kg/labels${queryString ? `?${queryString}` : ""}`, { method: "GET", ...options });
|
|
43
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
44
|
+
return browserApiRequest(`/api/v1/kg/labels${queryString}`, { method: "GET", ...options });
|
|
28
45
|
}
|
|
29
46
|
async function getKGNodeApi(nodeId, options) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
const queryString = params.toString();
|
|
33
|
-
return browserApiRequest(`/api/v1/kg/nodes/${nodeId}${queryString ? `?${queryString}` : ""}`, { method: "GET", ...options });
|
|
47
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
48
|
+
return browserApiRequest(`/api/v1/kg/nodes/${nodeId}${queryString}`, { method: "GET", ...options });
|
|
34
49
|
}
|
|
35
50
|
async function ingestKGNodeApi(node, options) {
|
|
36
51
|
return browserApiRequest("/api/v1/kg/nodes", {
|
|
37
52
|
method: "POST",
|
|
38
53
|
body: node,
|
|
39
|
-
headers: options.graphId
|
|
54
|
+
headers: buildHeaders(options.graphId),
|
|
40
55
|
...options
|
|
41
56
|
});
|
|
42
57
|
}
|
|
@@ -44,56 +59,48 @@ async function updateKGNodeApi(nodeId, updates, options) {
|
|
|
44
59
|
return browserApiRequest(`/api/v1/kg/nodes/${nodeId}`, {
|
|
45
60
|
method: "PUT",
|
|
46
61
|
body: updates,
|
|
47
|
-
headers: options.graphId
|
|
62
|
+
headers: buildHeaders(options.graphId),
|
|
48
63
|
...options
|
|
49
64
|
});
|
|
50
65
|
}
|
|
51
66
|
async function getNodeConnectionStatsApi(nodeId, edgeLabel, options) {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
if (options.graphId) params.set("graphId", options.graphId);
|
|
55
|
-
return browserApiRequest(`/api/v1/kg/nodes/${nodeId}/connections?${params.toString()}`, { method: "GET", ...options });
|
|
67
|
+
const queryString = buildQueryString({ edgeLabel, graphId: options.graphId });
|
|
68
|
+
return browserApiRequest(`/api/v1/kg/nodes/${nodeId}/connections${queryString}`, { method: "GET", ...options });
|
|
56
69
|
}
|
|
57
70
|
async function ingestDocumentApi(document, options) {
|
|
58
71
|
return browserApiRequest("/api/v1/kg/ingest", {
|
|
59
72
|
method: "POST",
|
|
60
73
|
body: document,
|
|
61
74
|
timeout: 12e4,
|
|
62
|
-
headers: options.graphId
|
|
75
|
+
headers: buildHeaders(options.graphId),
|
|
63
76
|
...options
|
|
64
77
|
});
|
|
65
78
|
}
|
|
66
79
|
async function deleteKGDocumentApi(documentId, options) {
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
const queryString = params.toString();
|
|
70
|
-
return browserApiRequest(`/api/v1/kg/documents/${documentId}${queryString ? `?${queryString}` : ""}`, { method: "DELETE", ...options });
|
|
80
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
81
|
+
return browserApiRequest(`/api/v1/kg/documents/${documentId}${queryString}`, { method: "DELETE", ...options });
|
|
71
82
|
}
|
|
72
83
|
async function optimizeGraphApi(options) {
|
|
73
84
|
return browserApiRequest("/api/v1/kg/graph/optimize", {
|
|
74
85
|
method: "POST",
|
|
75
86
|
body: {},
|
|
76
|
-
headers: options.graphId
|
|
87
|
+
headers: buildHeaders(options.graphId),
|
|
77
88
|
...options
|
|
78
89
|
});
|
|
79
90
|
}
|
|
80
91
|
async function listDesignerNodesApi(options) {
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
const queryString = params.toString();
|
|
84
|
-
return browserApiRequest(`/api/v1/kg/designer/nodes${queryString ? `?${queryString}` : ""}`, { method: "GET", ...options });
|
|
92
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
93
|
+
return browserApiRequest(`/api/v1/kg/designer/nodes${queryString}`, { method: "GET", ...options });
|
|
85
94
|
}
|
|
86
95
|
async function getDesignerNodeApi(label, options) {
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
const queryString = params.toString();
|
|
90
|
-
return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString ? `?${queryString}` : ""}`, { method: "GET", ...options });
|
|
96
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
97
|
+
return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString}`, { method: "GET", ...options });
|
|
91
98
|
}
|
|
92
99
|
async function createDesignerNodeApi(node, options) {
|
|
93
100
|
return browserApiRequest("/api/v1/kg/designer/nodes", {
|
|
94
101
|
method: "POST",
|
|
95
102
|
body: { node },
|
|
96
|
-
headers: options.graphId
|
|
103
|
+
headers: buildHeaders(options.graphId),
|
|
97
104
|
...options
|
|
98
105
|
});
|
|
99
106
|
}
|
|
@@ -101,27 +108,27 @@ async function updateDesignerNodeApi(label, node, options) {
|
|
|
101
108
|
return browserApiRequest(`/api/v1/kg/designer/nodes/${label}`, {
|
|
102
109
|
method: "PUT",
|
|
103
110
|
body: { node },
|
|
104
|
-
headers: options.graphId
|
|
111
|
+
headers: buildHeaders(options.graphId),
|
|
105
112
|
...options
|
|
106
113
|
});
|
|
107
114
|
}
|
|
108
115
|
async function deleteDesignerNodeApi(label, options) {
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
const queryString = params.toString();
|
|
112
|
-
return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString ? `?${queryString}` : ""}`, { method: "DELETE", ...options });
|
|
116
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
117
|
+
return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString}`, { method: "DELETE", ...options });
|
|
113
118
|
}
|
|
114
119
|
async function listDesignerEdgesApi(options) {
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
121
|
+
return browserApiRequest(`/api/v1/kg/designer/edges${queryString}`, { method: "GET", ...options });
|
|
122
|
+
}
|
|
123
|
+
async function getDesignerEdgeApi(label, options) {
|
|
124
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
125
|
+
return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString}`, { method: "GET", ...options });
|
|
119
126
|
}
|
|
120
127
|
async function createDesignerEdgeApi(edge, options) {
|
|
121
128
|
return browserApiRequest("/api/v1/kg/designer/edges", {
|
|
122
129
|
method: "POST",
|
|
123
130
|
body: { edge },
|
|
124
|
-
headers: options.graphId
|
|
131
|
+
headers: buildHeaders(options.graphId),
|
|
125
132
|
...options
|
|
126
133
|
});
|
|
127
134
|
}
|
|
@@ -129,52 +136,46 @@ async function updateDesignerEdgeApi(label, edge, options) {
|
|
|
129
136
|
return browserApiRequest(`/api/v1/kg/designer/edges/${label}`, {
|
|
130
137
|
method: "PUT",
|
|
131
138
|
body: { edge },
|
|
132
|
-
headers: options.graphId
|
|
139
|
+
headers: buildHeaders(options.graphId),
|
|
133
140
|
...options
|
|
134
141
|
});
|
|
135
142
|
}
|
|
136
143
|
async function deleteDesignerEdgeApi(label, options) {
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
const queryString = params.toString();
|
|
140
|
-
return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString ? `?${queryString}` : ""}`, { method: "DELETE", ...options });
|
|
144
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
145
|
+
return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString}`, { method: "DELETE", ...options });
|
|
141
146
|
}
|
|
142
147
|
async function listCrawlJobsApi(options) {
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
return browserApiRequest(`/api/v1/kg/crawl/jobs${queryString
|
|
148
|
+
const queryString = buildQueryString({
|
|
149
|
+
graphId: options.graphId,
|
|
150
|
+
limit: options.limit?.toString(),
|
|
151
|
+
offset: options.offset?.toString(),
|
|
152
|
+
status: options.status
|
|
153
|
+
});
|
|
154
|
+
return browserApiRequest(`/api/v1/kg/crawl/jobs${queryString}`, { method: "GET", ...options });
|
|
150
155
|
}
|
|
151
156
|
async function startCrawlJobApi(params, options) {
|
|
152
157
|
return browserApiRequest("/api/v1/kg/crawl/jobs", {
|
|
153
158
|
method: "POST",
|
|
154
159
|
body: params,
|
|
155
|
-
headers: options.graphId
|
|
160
|
+
headers: buildHeaders(options.graphId),
|
|
156
161
|
...options
|
|
157
162
|
});
|
|
158
163
|
}
|
|
159
164
|
async function getCrawlJobStatusApi(jobId, options) {
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
const queryString = params.toString();
|
|
163
|
-
return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}${queryString ? `?${queryString}` : ""}`, { method: "GET", ...options });
|
|
165
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
166
|
+
return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}${queryString}`, { method: "GET", ...options });
|
|
164
167
|
}
|
|
165
168
|
async function cancelCrawlJobApi(jobId, options) {
|
|
166
169
|
return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}/cancel`, {
|
|
167
170
|
method: "POST",
|
|
168
171
|
body: {},
|
|
169
|
-
headers: options.graphId
|
|
172
|
+
headers: buildHeaders(options.graphId),
|
|
170
173
|
...options
|
|
171
174
|
});
|
|
172
175
|
}
|
|
173
176
|
async function getCrawledPagesApi(jobId, options) {
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
const queryString = params.toString();
|
|
177
|
-
return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}/pages${queryString ? `?${queryString}` : ""}`, { method: "GET", ...options });
|
|
177
|
+
const queryString = buildQueryString({ graphId: options.graphId });
|
|
178
|
+
return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}/pages${queryString}`, { method: "GET", ...options });
|
|
178
179
|
}
|
|
179
180
|
|
|
180
181
|
export {
|
|
@@ -198,6 +199,7 @@ export {
|
|
|
198
199
|
updateDesignerNodeApi,
|
|
199
200
|
deleteDesignerNodeApi,
|
|
200
201
|
listDesignerEdgesApi,
|
|
202
|
+
getDesignerEdgeApi,
|
|
201
203
|
createDesignerEdgeApi,
|
|
202
204
|
updateDesignerEdgeApi,
|
|
203
205
|
deleteDesignerEdgeApi,
|
|
@@ -207,4 +209,4 @@ export {
|
|
|
207
209
|
cancelCrawlJobApi,
|
|
208
210
|
getCrawledPagesApi
|
|
209
211
|
};
|
|
210
|
-
//# sourceMappingURL=chunk-
|
|
212
|
+
//# sourceMappingURL=chunk-HCDFJCQL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../api/index.ts"],"sourcesContent":["/**\n * Knowledge Graph Browser API\n *\n * Browser-side API client for KG operations.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n *\n * @example\n * ```ts\n * import { listGraphsApi, queryGraphApi } from \"@elqnt/kg/api\";\n *\n * const graphs = await listGraphsApi({ baseUrl, orgId });\n * const result = await queryGraphApi(query, { baseUrl, orgId, graphId });\n * ```\n *\n * @packageDocumentation\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type { ResponseMetadata } from \"@elqnt/types\";\nimport type {\n Graph,\n ListGraphsResult,\n GetGraphResult,\n CreateGraphResult,\n CreateGraphRequest,\n UpdateGraphResult,\n DeleteGraphResult,\n KGNode,\n KGQuery,\n KGQueryResult,\n KGLabelInfo,\n KGNodeIngestRequest,\n KGSyncIngestResponse,\n DeleteDocumentResponse,\n GraphNodeDefinition,\n GraphNodeResponse,\n GraphEdgeDefinition,\n GraphEdgeResponse,\n} from \"../models\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Options for KG API calls that may include a graph ID\n */\nexport interface KGApiOptions extends ApiClientOptions {\n /** Optional graph ID for graph-scoped operations */\n graphId?: string;\n}\n\n/**\n * Crawl job information\n */\nexport interface CrawlJob {\n id: string;\n baseUrl: string;\n depth: number;\n maxPages: number;\n status: string;\n pagesProcessed: number;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Response for listing crawl jobs\n */\nexport interface CrawlJobsListResponse {\n jobs: CrawlJob[];\n total: number;\n}\n\n/**\n * Response for crawl job status\n */\nexport interface CrawlJobStatusResponse {\n job: CrawlJob;\n success: boolean;\n}\n\n/**\n * Response for starting a crawl job\n */\nexport interface CrawlJobStartResponse {\n jobId: string;\n success: boolean;\n}\n\n/**\n * Response for listing crawled pages\n */\nexport interface CrawledPagesResponse {\n pages: Array<{\n url: string;\n title: string;\n status: string;\n processedAt: string;\n }>;\n total: number;\n}\n\n// =============================================================================\n// UTILITIES\n// =============================================================================\n\n/**\n * Build query string from parameters, filtering out undefined values\n */\nfunction buildQueryString(params: Record<string, string | undefined>): string {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) {\n searchParams.set(key, value);\n }\n }\n const queryString = searchParams.toString();\n return queryString ? `?${queryString}` : \"\";\n}\n\n/**\n * Build headers including X-Graph-ID if provided\n */\nfunction buildHeaders(graphId?: string): Record<string, string> | undefined {\n return graphId ? { \"X-Graph-ID\": graphId } : undefined;\n}\n\n// =============================================================================\n// GRAPHS\n// =============================================================================\n\n/**\n * List all knowledge graphs for the organization\n *\n * @param options - API client options (baseUrl, orgId)\n * @returns List of graphs\n *\n * @example\n * ```ts\n * const response = await listGraphsApi({ baseUrl: \"http://api-gateway:80\", orgId: \"org-123\" });\n * if (response.data?.graphs) {\n * console.log(\"Graphs:\", response.data.graphs);\n * }\n * ```\n */\nexport async function listGraphsApi(options: ApiClientOptions): Promise<ApiResponse<ListGraphsResult>> {\n return browserApiRequest(\"/api/v1/kg/graphs\", { method: \"GET\", ...options });\n}\n\n/**\n * Get a specific knowledge graph by ID\n *\n * @param graphId - The graph ID\n * @param options - API client options\n * @returns The graph details\n */\nexport async function getGraphApi(graphId: string, options: ApiClientOptions): Promise<ApiResponse<GetGraphResult>> {\n return browserApiRequest(`/api/v1/kg/graphs/${graphId}`, { method: \"GET\", ...options });\n}\n\n/**\n * Create a new knowledge graph\n *\n * @param graph - Graph creation request\n * @param options - API client options\n * @returns The created graph\n */\nexport async function createGraphApi(graph: CreateGraphRequest, options: ApiClientOptions): Promise<ApiResponse<CreateGraphResult>> {\n return browserApiRequest(\"/api/v1/kg/graphs\", { method: \"POST\", body: graph, ...options });\n}\n\n/**\n * Update an existing knowledge graph\n *\n * @param graphId - The graph ID to update\n * @param updates - Partial graph updates\n * @param options - API client options\n * @returns The updated graph\n */\nexport async function updateGraphApi(\n graphId: string,\n updates: Partial<Graph>,\n options: ApiClientOptions\n): Promise<ApiResponse<UpdateGraphResult>> {\n return browserApiRequest(`/api/v1/kg/graphs/${graphId}`, { method: \"PUT\", body: updates, ...options });\n}\n\n/**\n * Delete a knowledge graph\n *\n * @param graphId - The graph ID to delete\n * @param options - API client options\n * @returns Success/failure result\n */\nexport async function deleteGraphApi(graphId: string, options: ApiClientOptions): Promise<ApiResponse<DeleteGraphResult>> {\n return browserApiRequest(`/api/v1/kg/graphs/${graphId}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// QUERY & LABELS\n// =============================================================================\n\n/**\n * Query knowledge graph nodes\n *\n * @param query - The KG query parameters\n * @param options - API options including optional graphId\n * @returns Query results with matching nodes and edges\n *\n * @example\n * ```ts\n * const result = await queryGraphApi(\n * { label: \"Person\", fields: [], limit: 10, depth: 1, sortBy: \"\", sortOrder: \"\" },\n * { baseUrl, orgId, graphId }\n * );\n * ```\n */\nexport async function queryGraphApi(query: KGQuery, options: KGApiOptions): Promise<ApiResponse<KGQueryResult>> {\n return browserApiRequest(\"/api/v1/kg/query\", {\n method: \"POST\",\n body: query,\n timeout: 30000,\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Get all node labels in the knowledge graph\n *\n * @param options - API options including optional graphId\n * @returns List of labels with counts\n */\nexport async function getGraphLabelsApi(options: KGApiOptions): Promise<ApiResponse<{ labels: KGLabelInfo[] }>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/labels${queryString}`, { method: \"GET\", ...options });\n}\n\n// =============================================================================\n// NODES\n// =============================================================================\n\n/**\n * Get a specific KG node by ID\n *\n * @param nodeId - The node ID\n * @param options - API options including optional graphId\n * @returns The node details\n */\nexport async function getKGNodeApi(\n nodeId: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ node: KGNode }>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/nodes/${nodeId}${queryString}`, { method: \"GET\", ...options });\n}\n\n/**\n * Ingest a new node into the knowledge graph\n *\n * @param node - Node ingest request\n * @param options - API options including optional graphId\n * @returns The created node ID\n */\nexport async function ingestKGNodeApi(\n node: KGNodeIngestRequest,\n options: KGApiOptions\n): Promise<ApiResponse<KGSyncIngestResponse>> {\n return browserApiRequest(\"/api/v1/kg/nodes\", {\n method: \"POST\",\n body: node,\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Update an existing KG node\n *\n * @param nodeId - The node ID to update\n * @param updates - Partial node updates\n * @param options - API options including optional graphId\n * @returns Success/failure result\n */\nexport async function updateKGNodeApi(\n nodeId: string,\n updates: Partial<KGNode>,\n options: KGApiOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(`/api/v1/kg/nodes/${nodeId}`, {\n method: \"PUT\",\n body: updates,\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Get connection statistics for a node\n *\n * @param nodeId - The node ID\n * @param edgeLabel - The edge label to filter by\n * @param options - API options including optional graphId\n * @returns Connection counts by label\n */\nexport async function getNodeConnectionStatsApi(\n nodeId: string,\n edgeLabel: string,\n options: KGApiOptions\n): Promise<ApiResponse<Record<string, number>>> {\n const queryString = buildQueryString({ edgeLabel, graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/nodes/${nodeId}/connections${queryString}`, { method: \"GET\", ...options });\n}\n\n// =============================================================================\n// DOCUMENTS\n// =============================================================================\n\n/**\n * Ingest a document into the knowledge graph\n *\n * @param document - Document to ingest\n * @param options - API options including optional graphId\n * @returns Success/failure result\n */\nexport async function ingestDocumentApi(\n document: { id: string; title: string; content: string; docUrl?: string; lang?: string },\n options: KGApiOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/kg/ingest\", {\n method: \"POST\",\n body: document,\n timeout: 120000,\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Delete a document from the knowledge graph\n *\n * @param documentId - The document ID to delete\n * @param options - API options including optional graphId\n * @returns Deletion result with counts\n */\nexport async function deleteKGDocumentApi(\n documentId: string,\n options: KGApiOptions\n): Promise<ApiResponse<DeleteDocumentResponse>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/documents/${documentId}${queryString}`, { method: \"DELETE\", ...options });\n}\n\n/**\n * Optimize the knowledge graph\n *\n * @param options - API options including optional graphId\n * @returns Success/failure result\n */\nexport async function optimizeGraphApi(options: KGApiOptions): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/kg/graph/optimize\", {\n method: \"POST\",\n body: {},\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n// =============================================================================\n// DESIGNER - NODES\n// =============================================================================\n\n/**\n * List all node definitions in the graph designer\n *\n * @param options - API options including optional graphId\n * @returns List of node definitions\n */\nexport async function listDesignerNodesApi(options: KGApiOptions): Promise<ApiResponse<GraphNodeResponse>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/designer/nodes${queryString}`, { method: \"GET\", ...options });\n}\n\n/**\n * Get a specific node definition by label\n *\n * @param label - The node label\n * @param options - API options including optional graphId\n * @returns The node definition\n */\nexport async function getDesignerNodeApi(label: string, options: KGApiOptions): Promise<ApiResponse<GraphNodeResponse>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString}`, { method: \"GET\", ...options });\n}\n\n/**\n * Create a new node definition\n *\n * @param node - Node definition to create\n * @param options - API options including optional graphId\n * @returns The created node definition\n */\nexport async function createDesignerNodeApi(\n node: Omit<GraphNodeDefinition, \"createdAt\" | \"updatedAt\">,\n options: KGApiOptions\n): Promise<ApiResponse<GraphNodeResponse>> {\n return browserApiRequest(\"/api/v1/kg/designer/nodes\", {\n method: \"POST\",\n body: { node },\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Update an existing node definition\n *\n * @param label - The node label to update\n * @param node - Partial node definition updates\n * @param options - API options including optional graphId\n * @returns The updated node definition\n */\nexport async function updateDesignerNodeApi(\n label: string,\n node: Partial<GraphNodeDefinition>,\n options: KGApiOptions\n): Promise<ApiResponse<GraphNodeResponse>> {\n return browserApiRequest(`/api/v1/kg/designer/nodes/${label}`, {\n method: \"PUT\",\n body: { node },\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Delete a node definition\n *\n * @param label - The node label to delete\n * @param options - API options including optional graphId\n * @returns Success/failure result\n */\nexport async function deleteDesignerNodeApi(\n label: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// DESIGNER - EDGES\n// =============================================================================\n\n/**\n * List all edge definitions in the graph designer\n *\n * @param options - API options including optional graphId\n * @returns List of edge definitions\n */\nexport async function listDesignerEdgesApi(options: KGApiOptions): Promise<ApiResponse<GraphEdgeResponse>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/designer/edges${queryString}`, { method: \"GET\", ...options });\n}\n\n/**\n * Get a specific edge definition by label\n *\n * @param label - The edge label\n * @param options - API options including optional graphId\n * @returns The edge definition\n */\nexport async function getDesignerEdgeApi(label: string, options: KGApiOptions): Promise<ApiResponse<GraphEdgeResponse>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString}`, { method: \"GET\", ...options });\n}\n\n/**\n * Create a new edge definition\n *\n * @param edge - Edge definition to create\n * @param options - API options including optional graphId\n * @returns The created edge definition\n */\nexport async function createDesignerEdgeApi(\n edge: Omit<GraphEdgeDefinition, \"createdAt\" | \"updatedAt\">,\n options: KGApiOptions\n): Promise<ApiResponse<GraphEdgeResponse>> {\n return browserApiRequest(\"/api/v1/kg/designer/edges\", {\n method: \"POST\",\n body: { edge },\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Update an existing edge definition\n *\n * @param label - The edge label to update\n * @param edge - Partial edge definition updates\n * @param options - API options including optional graphId\n * @returns The updated edge definition\n */\nexport async function updateDesignerEdgeApi(\n label: string,\n edge: Partial<GraphEdgeDefinition>,\n options: KGApiOptions\n): Promise<ApiResponse<GraphEdgeResponse>> {\n return browserApiRequest(`/api/v1/kg/designer/edges/${label}`, {\n method: \"PUT\",\n body: { edge },\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Delete an edge definition\n *\n * @param label - The edge label to delete\n * @param options - API options including optional graphId\n * @returns Success/failure result\n */\nexport async function deleteDesignerEdgeApi(\n label: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// CRAWL JOBS\n// =============================================================================\n\n/**\n * List crawl jobs\n *\n * @param options - API options including optional graphId, limit, offset, status\n * @returns List of crawl jobs with total count\n */\nexport async function listCrawlJobsApi(\n options: KGApiOptions & { limit?: number; offset?: number; status?: string }\n): Promise<ApiResponse<CrawlJobsListResponse>> {\n const queryString = buildQueryString({\n graphId: options.graphId,\n limit: options.limit?.toString(),\n offset: options.offset?.toString(),\n status: options.status,\n });\n return browserApiRequest(`/api/v1/kg/crawl/jobs${queryString}`, { method: \"GET\", ...options });\n}\n\n/**\n * Start a new crawl job\n *\n * @param params - Crawl job parameters\n * @param options - API options including optional graphId\n * @returns The created job ID\n */\nexport async function startCrawlJobApi(\n params: { baseUrl: string; depth: number; maxPages: number },\n options: KGApiOptions\n): Promise<ApiResponse<CrawlJobStartResponse>> {\n return browserApiRequest(\"/api/v1/kg/crawl/jobs\", {\n method: \"POST\",\n body: params,\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Get crawl job status\n *\n * @param jobId - The job ID\n * @param options - API options including optional graphId\n * @returns The job status\n */\nexport async function getCrawlJobStatusApi(\n jobId: string,\n options: KGApiOptions\n): Promise<ApiResponse<CrawlJobStatusResponse>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}${queryString}`, { method: \"GET\", ...options });\n}\n\n/**\n * Cancel a crawl job\n *\n * @param jobId - The job ID to cancel\n * @param options - API options including optional graphId\n * @returns The updated job status\n */\nexport async function cancelCrawlJobApi(\n jobId: string,\n options: KGApiOptions\n): Promise<ApiResponse<CrawlJobStatusResponse>> {\n return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}/cancel`, {\n method: \"POST\",\n body: {},\n headers: buildHeaders(options.graphId),\n ...options,\n });\n}\n\n/**\n * Get pages crawled by a job\n *\n * @param jobId - The job ID\n * @param options - API options including optional graphId\n * @returns List of crawled pages\n */\nexport async function getCrawledPagesApi(\n jobId: string,\n options: KGApiOptions\n): Promise<ApiResponse<CrawledPagesResponse>> {\n const queryString = buildQueryString({ graphId: options.graphId });\n return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}/pages${queryString}`, { method: \"GET\", ...options });\n}\n"],"mappings":"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","names":[]}
|