@elqnt/kg 2.1.1 → 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.
Files changed (54) hide show
  1. package/README.md +357 -39
  2. package/dist/api/index.d.mts +250 -3
  3. package/dist/api/index.d.ts +250 -3
  4. package/dist/api/index.js +2 -2
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/api/index.mjs +1 -1
  7. package/dist/api/server.d.mts +219 -0
  8. package/dist/api/server.d.ts +219 -0
  9. package/dist/api/server.js +442 -0
  10. package/dist/api/server.js.map +1 -0
  11. package/dist/api/server.mjs +442 -0
  12. package/dist/api/server.mjs.map +1 -0
  13. package/dist/{chunk-4XIW5GLO.js → chunk-2TJCYLTP.js} +63 -68
  14. package/dist/chunk-2TJCYLTP.js.map +1 -0
  15. package/dist/chunk-67SUELDR.js.map +1 -1
  16. package/dist/chunk-7RW5MHP5.js +497 -0
  17. package/dist/chunk-7RW5MHP5.js.map +1 -0
  18. package/dist/chunk-ADIKUMMI.js +238 -0
  19. package/dist/chunk-ADIKUMMI.js.map +1 -0
  20. package/dist/chunk-CAXPQTKI.mjs +238 -0
  21. package/dist/chunk-CAXPQTKI.mjs.map +1 -0
  22. package/dist/{chunk-3AS6C7FW.mjs → chunk-HCDFJCQL.mjs} +62 -67
  23. package/dist/chunk-HCDFJCQL.mjs.map +1 -0
  24. package/dist/chunk-JZ7UXVRW.mjs +497 -0
  25. package/dist/chunk-JZ7UXVRW.mjs.map +1 -0
  26. package/dist/chunk-UCKE66GB.js.map +1 -1
  27. package/dist/chunk-W4XVBGE7.js.map +1 -1
  28. package/dist/hooks/index.d.mts +109 -4
  29. package/dist/hooks/index.d.ts +109 -4
  30. package/dist/hooks/index.js +9 -3
  31. package/dist/hooks/index.js.map +1 -1
  32. package/dist/hooks/index.mjs +10 -4
  33. package/dist/index.d.mts +2 -1
  34. package/dist/index.d.ts +2 -1
  35. package/dist/index.js +21 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/index.mjs +22 -4
  38. package/dist/index.mjs.map +1 -1
  39. package/dist/models/index.js.map +1 -1
  40. package/dist/models/kg-designer.js.map +1 -1
  41. package/dist/models/kg.js.map +1 -1
  42. package/dist/utils/index.d.mts +277 -0
  43. package/dist/utils/index.d.ts +277 -0
  44. package/dist/utils/index.js +44 -0
  45. package/dist/utils/index.js.map +1 -0
  46. package/dist/utils/index.mjs +44 -0
  47. package/dist/utils/index.mjs.map +1 -0
  48. package/package.json +24 -16
  49. package/dist/chunk-3AS6C7FW.mjs.map +0 -1
  50. package/dist/chunk-4XIW5GLO.js.map +0 -1
  51. package/dist/chunk-7HNJUCVW.js +0 -577
  52. package/dist/chunk-7HNJUCVW.js.map +0 -1
  53. package/dist/chunk-EW3NQGUZ.mjs +0 -577
  54. package/dist/chunk-EW3NQGUZ.mjs.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elqnt/kg",
3
- "version": "2.1.1",
4
- "description": "Knowledge graph functionality for Eloquent platform - models, API, and hooks",
3
+ "version": "3.0.0",
4
+ "description": "Knowledge graph SDK for Eloquent platform - types, browser & server APIs, React hooks, and query utilities",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
@@ -31,38 +31,46 @@
31
31
  "import": "./dist/api/index.mjs",
32
32
  "require": "./dist/api/index.js"
33
33
  },
34
+ "./api/server": {
35
+ "types": "./dist/api/server.d.ts",
36
+ "import": "./dist/api/server.mjs",
37
+ "require": "./dist/api/server.js"
38
+ },
34
39
  "./hooks": {
35
40
  "types": "./dist/hooks/index.d.ts",
36
41
  "import": "./dist/hooks/index.mjs",
37
42
  "require": "./dist/hooks/index.js"
43
+ },
44
+ "./utils": {
45
+ "types": "./dist/utils/index.d.ts",
46
+ "import": "./dist/utils/index.mjs",
47
+ "require": "./dist/utils/index.js"
38
48
  }
39
49
  },
40
- "files": [
41
- "dist"
42
- ],
50
+ "files": ["dist"],
51
+ "scripts": {
52
+ "build": "tsup",
53
+ "dev": "tsup --watch",
54
+ "clean": "rm -rf dist",
55
+ "typecheck": "tsc --noEmit"
56
+ },
43
57
  "repository": {
44
58
  "type": "git",
45
59
  "url": "git+https://github.com/Blazi-Commerce/eloquent-packages.git",
46
60
  "directory": "packages/kg"
47
61
  },
48
62
  "dependencies": {
49
- "@elqnt/types": "2.0.9",
50
- "@elqnt/api-client": "1.0.3"
63
+ "@elqnt/types": "^2.0.8",
64
+ "@elqnt/api-client": "^1.0.2"
51
65
  },
52
66
  "peerDependencies": {
53
67
  "react": "^18.0.0 || ^19.0.0"
54
68
  },
55
69
  "devDependencies": {
70
+ "@elqnt/api-client": "^1.0.2",
56
71
  "@types/react": "^19.0.0",
57
72
  "react": "^19.0.0",
58
73
  "tsup": "^8.0.0",
59
- "typescript": "^5.0.0",
60
- "@elqnt/api-client": "1.0.3"
61
- },
62
- "scripts": {
63
- "build": "tsup",
64
- "dev": "tsup --watch",
65
- "clean": "rm -rf dist",
66
- "typecheck": "tsc --noEmit"
74
+ "typescript": "^5.0.0"
67
75
  }
68
- }
76
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../api/index.ts"],"sourcesContent":["/**\n * Knowledge Graph API functions\n *\n * Browser-side API client for KG operations.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\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 KGEdge,\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\nexport interface KGApiOptions extends ApiClientOptions {\n graphId?: string;\n}\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\nexport interface CrawlJobsListResponse {\n jobs: CrawlJob[];\n total: number;\n}\n\nexport interface CrawlJobStatusResponse {\n job: CrawlJob;\n success: boolean;\n}\n\nexport interface CrawlJobStartResponse {\n jobId: string;\n success: boolean;\n}\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// GRAPHS\n// =============================================================================\n\nexport async function listGraphsApi(options: ApiClientOptions): Promise<ApiResponse<ListGraphsResult>> {\n return browserApiRequest(\"/api/v1/kg/graphs\", { method: \"GET\", ...options });\n}\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\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\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\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\nexport async function queryGraphApi(query: KGQuery, options: KGApiOptions): Promise<ApiResponse<KGQueryResult>> {\n return browserApiRequest(\"/api/v1/kg/query\", { method: \"POST\", body: query, timeout: 30000, ...options });\n}\n\nexport async function getGraphLabelsApi(options: KGApiOptions): Promise<ApiResponse<{ labels: KGLabelInfo[] }>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/labels${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\n\n// =============================================================================\n// NODES\n// =============================================================================\n\nexport async function getKGNodeApi(\n nodeId: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ node: KGNode }>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/nodes/${nodeId}${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function getNodeConnectionStatsApi(\n nodeId: string,\n edgeLabel: string,\n options: KGApiOptions\n): Promise<ApiResponse<Record<string, number>>> {\n const params = new URLSearchParams();\n params.set(\"edgeLabel\", edgeLabel);\n if (options.graphId) params.set(\"graphId\", options.graphId);\n return browserApiRequest(`/api/v1/kg/nodes/${nodeId}/connections?${params.toString()}`, { method: \"GET\", ...options });\n}\n\n// =============================================================================\n// DOCUMENTS\n// =============================================================================\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function deleteKGDocumentApi(\n documentId: string,\n options: KGApiOptions\n): Promise<ApiResponse<DeleteDocumentResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/documents/${documentId}${queryString ? `?${queryString}` : \"\"}`, { method: \"DELETE\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\n// =============================================================================\n// DESIGNER - NODES\n// =============================================================================\n\nexport async function listDesignerNodesApi(options: KGApiOptions): Promise<ApiResponse<GraphNodeResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/nodes${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\n\nexport async function getDesignerNodeApi(label: string, options: KGApiOptions): Promise<ApiResponse<GraphNodeResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function deleteDesignerNodeApi(\n label: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString ? `?${queryString}` : \"\"}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// DESIGNER - EDGES\n// =============================================================================\n\nexport async function listDesignerEdgesApi(options: KGApiOptions): Promise<ApiResponse<GraphEdgeResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/edges${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\n\nexport async function getDesignerEdgeApi(label: string, options: KGApiOptions): Promise<ApiResponse<GraphEdgeResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function deleteDesignerEdgeApi(\n label: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString ? `?${queryString}` : \"\"}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// CRAWL JOBS\n// =============================================================================\n\nexport async function listCrawlJobsApi(\n options: KGApiOptions & { limit?: number; offset?: number; status?: string }\n): Promise<ApiResponse<CrawlJobsListResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n if (options.limit) params.set(\"limit\", String(options.limit));\n if (options.offset) params.set(\"offset\", String(options.offset));\n if (options.status) params.set(\"status\", options.status);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/crawl/jobs${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function getCrawlJobStatusApi(\n jobId: string,\n options: KGApiOptions\n): Promise<ApiResponse<CrawlJobStatusResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function getCrawledPagesApi(\n jobId: string,\n options: KGApiOptions\n): Promise<ApiResponse<CrawledPagesResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}/pages${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/eloquent/eloquent/packages/@elqnt/kg/dist/chunk-4XIW5GLO.js","../api/index.ts"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACKA,oDAAkC;AAyElC,MAAA,SAAsB,aAAA,CAAc,OAAA,EAAmE;AACrG,EAAA,OAAO,wCAAA,mBAAkB,EAAqB,EAAE,MAAA,EAAQ,KAAA,EAAO,GAAG,QAAQ,CAAC,CAAA;AAC7E;AAEA,MAAA,SAAsB,WAAA,CAAY,OAAA,EAAiB,OAAA,EAAiE;AAClH,EAAA,OAAO,wCAAA,CAAkB,kBAAA,EAAqB,OAAO,CAAA,CAAA;AACvD;AAEoI;AAClF,EAAA;AAClD;AAKE;AAEqD,EAAA;AACvD;AAE0H;AACnE,EAAA;AACvD;AAMgH;AAC/D,EAAA;AACjD;AAEgH;AAC3E,EAAA;AACgB,EAAA;AACf,EAAA;AACS,EAAA;AAC/C;AAS0C;AACL,EAAA;AACgB,EAAA;AACf,EAAA;AACkB,EAAA;AACxD;AAK8C;AACC,EAAA;AACnC,IAAA;AACF,IAAA;AAC6C,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAKE;AAEmD,EAAA;AACzC,IAAA;AACF,IAAA;AAC6C,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAIE;AAGmC,EAAA;AACF,EAAA;AACkB,EAAA;AACA,EAAA;AACrD;AAS0E;AAC1B,EAAA;AACpC,IAAA;AACF,IAAA;AACG,IAAA;AAC0C,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAKgD;AACX,EAAA;AACgB,EAAA;AACf,EAAA;AACa,EAAA;AACnD;AAEsI;AAC9E,EAAA;AAC5C,IAAA;AACD,IAAA;AAC4C,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAM2G;AACtE,EAAA;AACgB,EAAA;AACf,EAAA;AACiB,EAAA;AACvD;AAEwH;AACnF,EAAA;AACgB,EAAA;AACf,EAAA;AACkB,EAAA;AACxD;AAK2C;AACa,EAAA;AAC5C,IAAA;AACK,IAAA;AACsC,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAKE;AAEsD,EAAA;AAC5C,IAAA;AACK,IAAA;AACsC,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAK0E;AACrC,EAAA;AACgB,EAAA;AACf,EAAA;AACkB,EAAA;AACxD;AAM2G;AACtE,EAAA;AACgB,EAAA;AACf,EAAA;AACiB,EAAA;AACvD;AAEwH;AACnF,EAAA;AACgB,EAAA;AACf,EAAA;AACkB,EAAA;AACxD;AAK2C;AACa,EAAA;AAC5C,IAAA;AACK,IAAA;AACsC,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAKE;AAEsD,EAAA;AAC5C,IAAA;AACK,IAAA;AACsC,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAK0E;AACrC,EAAA;AACgB,EAAA;AACf,EAAA;AACkB,EAAA;AACxD;AAQ+C;AACV,EAAA;AACgB,EAAA;AACG,EAAA;AACN,EAAA;AACC,EAAA;AACb,EAAA;AACa,EAAA;AACnD;AAK+C;AACK,EAAA;AACxC,IAAA;AACF,IAAA;AAC6C,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAKgD;AACX,EAAA;AACgB,EAAA;AACf,EAAA;AACc,EAAA;AACpD;AAKgD;AACI,EAAA;AACxC,IAAA;AACD,IAAA;AAC4C,IAAA;AAChD,IAAA;AACJ,EAAA;AACH;AAK8C;AACT,EAAA;AACgB,EAAA;AACf,EAAA;AACc,EAAA;AACpD;ADzLwD;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","file":"/home/runner/work/eloquent/eloquent/packages/@elqnt/kg/dist/chunk-4XIW5GLO.js","sourcesContent":[null,"/**\n * Knowledge Graph API functions\n *\n * Browser-side API client for KG operations.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\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 KGEdge,\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\nexport interface KGApiOptions extends ApiClientOptions {\n graphId?: string;\n}\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\nexport interface CrawlJobsListResponse {\n jobs: CrawlJob[];\n total: number;\n}\n\nexport interface CrawlJobStatusResponse {\n job: CrawlJob;\n success: boolean;\n}\n\nexport interface CrawlJobStartResponse {\n jobId: string;\n success: boolean;\n}\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// GRAPHS\n// =============================================================================\n\nexport async function listGraphsApi(options: ApiClientOptions): Promise<ApiResponse<ListGraphsResult>> {\n return browserApiRequest(\"/api/v1/kg/graphs\", { method: \"GET\", ...options });\n}\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\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\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\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\nexport async function queryGraphApi(query: KGQuery, options: KGApiOptions): Promise<ApiResponse<KGQueryResult>> {\n return browserApiRequest(\"/api/v1/kg/query\", { method: \"POST\", body: query, timeout: 30000, ...options });\n}\n\nexport async function getGraphLabelsApi(options: KGApiOptions): Promise<ApiResponse<{ labels: KGLabelInfo[] }>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/labels${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\n\n// =============================================================================\n// NODES\n// =============================================================================\n\nexport async function getKGNodeApi(\n nodeId: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ node: KGNode }>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/nodes/${nodeId}${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function getNodeConnectionStatsApi(\n nodeId: string,\n edgeLabel: string,\n options: KGApiOptions\n): Promise<ApiResponse<Record<string, number>>> {\n const params = new URLSearchParams();\n params.set(\"edgeLabel\", edgeLabel);\n if (options.graphId) params.set(\"graphId\", options.graphId);\n return browserApiRequest(`/api/v1/kg/nodes/${nodeId}/connections?${params.toString()}`, { method: \"GET\", ...options });\n}\n\n// =============================================================================\n// DOCUMENTS\n// =============================================================================\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function deleteKGDocumentApi(\n documentId: string,\n options: KGApiOptions\n): Promise<ApiResponse<DeleteDocumentResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/documents/${documentId}${queryString ? `?${queryString}` : \"\"}`, { method: \"DELETE\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\n// =============================================================================\n// DESIGNER - NODES\n// =============================================================================\n\nexport async function listDesignerNodesApi(options: KGApiOptions): Promise<ApiResponse<GraphNodeResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/nodes${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\n\nexport async function getDesignerNodeApi(label: string, options: KGApiOptions): Promise<ApiResponse<GraphNodeResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function deleteDesignerNodeApi(\n label: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/nodes/${label}${queryString ? `?${queryString}` : \"\"}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// DESIGNER - EDGES\n// =============================================================================\n\nexport async function listDesignerEdgesApi(options: KGApiOptions): Promise<ApiResponse<GraphEdgeResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/edges${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\n\nexport async function getDesignerEdgeApi(label: string, options: KGApiOptions): Promise<ApiResponse<GraphEdgeResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function deleteDesignerEdgeApi(\n label: string,\n options: KGApiOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/designer/edges/${label}${queryString ? `?${queryString}` : \"\"}`, { method: \"DELETE\", ...options });\n}\n\n// =============================================================================\n// CRAWL JOBS\n// =============================================================================\n\nexport async function listCrawlJobsApi(\n options: KGApiOptions & { limit?: number; offset?: number; status?: string }\n): Promise<ApiResponse<CrawlJobsListResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n if (options.limit) params.set(\"limit\", String(options.limit));\n if (options.offset) params.set(\"offset\", String(options.offset));\n if (options.status) params.set(\"status\", options.status);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/crawl/jobs${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function getCrawlJobStatusApi(\n jobId: string,\n options: KGApiOptions\n): Promise<ApiResponse<CrawlJobStatusResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\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: options.graphId ? { \"X-Graph-ID\": options.graphId } : undefined,\n ...options,\n });\n}\n\nexport async function getCrawledPagesApi(\n jobId: string,\n options: KGApiOptions\n): Promise<ApiResponse<CrawledPagesResponse>> {\n const params = new URLSearchParams();\n if (options.graphId) params.set(\"graphId\", options.graphId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/kg/crawl/jobs/${jobId}/pages${queryString ? `?${queryString}` : \"\"}`, { method: \"GET\", ...options });\n}\n"]}