hana-kgvector 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/.pnpm/@sap+hana-client@2.27.19/node_modules/@sap/hana-client/extension/Stream.js"],"sourcesContent":["'use strict';\n\nmodule.exports =\n{\n // Create an readable stream which returns object\n createObjectStream: function (resultset) {\n return new HanaRSStream(resultset, false);\n },\n\n // Create an readable stream which returns array\n createArrayStream: function (resultset) {\n return new HanaRSStream(resultset, true);\n },\n\n // Create a LOB stream\n createLobStream: function (resultset, columnIndex, options) {\n return new HanaLobStream(resultset, columnIndex, options);\n },\n\n // Create a LOB stream for a LOB output parameter\n createParameterLobStream: function (statement, paramIndex, options) {\n return new HanaParameterLobStream(statement, paramIndex, options);\n },\n\n // Create a statement which allows user to pass readable streams for input parameters\n createStatement: function (connection, sql, callback) {\n return new HanaStatement(connection, sql, callback);\n },\n\n // Create a statement for procedure call. After calling exec, output parameters\n // (err, scalarParams, table1, table2...) will be passed to the callback\n createProcStatement: function (connection, sql, callback) {\n return new HanaProcStatement(connection, sql, callback);\n },\n\n // Execute a statement which returns multiple resultsets. After calling this method, output parameters\n // (err, scalarParams, table1, table2..., columnInfo1, columnInfo2...) will be passed to the callback\n executeMultipleResultSets: function (...args /*connection, sql, params, [options,] callback*/) {\n if (args.length != 4 && args.length != 5) {\n throw new Error(\"Invalid number of parameters - executeMultipleResultSets(connection, sql, params, [options,] callback).\");\n }\n\n var connection = args[0];\n var sql = args[1];\n var params = args[2];\n if (args.length == 4) {\n var options = {};\n var callback = args[3];\n } else if (args.length == 5) {\n var options = args[3];\n var callback = args[4];\n }\n\n if (callback == undefined || callback == null || typeof callback !== 'function') {\n throw new Error(\"Invalid parameter 'callback'.\");\n }\n\n var statement = new HanaProcStatement(connection, sql, function (err, stmt) {\n if (err) {\n callback(err);\n } else {\n let s = stmt;\n stmt.exec(params, options, function (err, ...args) {\n if (!err) {\n s.getColumnInfo().forEach(function (ci) {\n args.push(ci);\n });\n }\n s.drop(function (errDrop) {\n if (err) {\n callback(err);\n } else if (errDrop) {\n callback(errDrop);\n } else {\n args.unshift(undefined); // no error\n callback.apply(null, args);\n }\n });\n });\n }\n });\n }\n};\n\nvar util = require('util');\nvar streamModule = require('stream');\nvar Stream = streamModule.Stream;\nvar Readable = streamModule.Readable;\n\n// HanaRSStream is used by both createObjectStream and createArrayStream\nfunction HanaRSStream(resultset, asArray) {\n checkParameter('resultset', resultset)\n Readable.call(this, { objectMode: true });\n resultset.setAsArrayDefault(asArray);\n this.resultset = resultset;\n};\n\nutil.inherits(HanaRSStream, Readable);\n\nHanaRSStream.prototype._read = function () {\n var stream = this;\n // There are 3 combinations of sync vs async next and getValues.\n // When nextCanBlock is false, the stream is about 2x faster\n // than without this optimization.\n // This implementation might be simpler if promises were used.\n if(this.resultset.nextCanBlock()) {\n // async next\n this.resultset.next(function (err, ret) {\n if (err === undefined) {\n if (ret) {\n if(stream.resultset.getValuesCanBlock()) {\n // async getValues\n stream.resultset.getValues(function (err, ret) {\n if (err === undefined) {\n stream.push(ret);\n } else {\n stream.emit('error', err);\n }\n });\n } else {\n // sync getValues\n try {\n stream.push(stream.resultset.getValues());\n } catch(err) {\n stream.emit('error', err);\n }\n }\n } else {\n stream.push(null);\n }\n } else {\n stream.emit('error', err);\n }\n });\n } else {\n // nextCanBlock returned false, use sync next and getValues.\n try {\n var ret = this.resultset.next();\n if (ret) {\n stream.push(stream.resultset.getValues());\n } else {\n stream.push(null);\n }\n } catch(err) {\n stream.emit('error', err);\n }\n }\n};\n\nHanaRSStream.prototype._destroy = function (error, callback) {\n this.push(null);\n if (typeof callback === 'function') {\n callback(error);\n }\n};\n\n// Lob stream\nfunction HanaLobStream(resultset, columnIndex, options) {\n checkParameter('resultset', resultset);\n\n var opts = getLobStreamOptions(options);\n Readable.call(this, opts);\n\n this.resultset = resultset;\n this.columnInfo = this.resultset.getColumnInfo();\n this.columnIndex = columnIndex;\n\n checkColumnIndex(this.columnInfo, columnIndex);\n checkLobType(this.columnInfo, columnIndex);\n\n this.isString = this.columnInfo[this.columnIndex].typeName === 'STRING';\n this.offset = 0;\n this.noPause = opts.noPause;\n this.valueAsString = false;\n if (typeof opts.valueAsString === \"boolean\") {\n this.valueAsString = opts.valueAsString;\n }\n};\n\nutil.inherits(HanaLobStream, Readable);\n\nHanaLobStream.prototype._read = function (bufferSize) {\n if (this.resultset.isNull(this.columnIndex)) {\n this.push(null);\n return;\n }\n\n var stream = this;\n stream.bufferSize = bufferSize;\n var buffer = createBuffer(bufferSize);\n\n if (!this.noPause) {\n this.pause();\n }\n\n this.resultset.getData(this.columnIndex, this.offset, buffer, 0, bufferSize, function (err, bytesRetrieved) {\n if (err === undefined) {\n if (stream.isString) {\n if (bytesRetrieved > 0) {\n let nullChar = buffer.indexOf(0);\n if (nullChar === 0) {\n stream.push(null);\n } else {\n let newBuffer = buffer;\n if (nullChar > 0) {\n newBuffer = buffer.slice(0, nullChar);\n }\n let str = newBuffer.toString('utf8');\n stream.offset += str.length;\n if (stream.valueAsString) {\n stream.push(str);\n } else {\n stream.push(newBuffer);\n }\n // +3 because SQLDBC does not copy partial characters,\n // and the largest partial UTF-8 character is 3 (since\n // the largest UTF-8 character is 4 bytes)\n if (bytesRetrieved + 3 < stream.bufferSize) {\n stream.push(null);\n }\n }\n } else {\n stream.push(null);\n }\n } else { // LOB\n stream.offset += bytesRetrieved;\n if (bytesRetrieved > 0) {\n if (bytesRetrieved < stream.bufferSize) {\n stream.push(buffer.slice(0, bytesRetrieved));\n stream.push(null);\n } else {\n stream.push(buffer);\n }\n } else {\n stream.push(null);\n }\n }\n } else {\n if (err.code === 100) { // No more result\n stream.push(null);\n } else {\n stream.emit('error', err);\n }\n }\n if (!stream.noPause) {\n stream.resume();\n }\n });\n};\n\nHanaLobStream.prototype._destroy = function (error, callback) {\n this.push(null);\n if (typeof callback === 'function') {\n callback(error);\n }\n};\n\n// Parameter lob stream\nfunction HanaParameterLobStream(statement, paramIndex, options) {\n checkParameter('statement', statement);\n\n var opts = getLobStreamOptions(options);\n Readable.call(this, opts);\n\n this.statement = statement;\n this.paramInfo = this.statement.getParameterInfo();\n this.paramIndex = paramIndex;\n\n checkParameterIndex(this.paramInfo, paramIndex);\n checkParameterLobType(this.paramInfo, paramIndex);\n\n this.isString = this.paramInfo[this.paramIndex].typeName === 'STRING';\n this.offset = 0;\n this.noPause = opts.noPause;\n this.valueAsString = false;\n if (typeof opts.valueAsString === \"boolean\") {\n this.valueAsString = opts.valueAsString;\n }\n};\n\nutil.inherits(HanaParameterLobStream, Readable);\n\nHanaParameterLobStream.prototype._read = function (bufferSize) {\n if (this.statement.isParameterNull(this.paramIndex)) {\n this.push(null);\n return;\n }\n\n var stream = this;\n stream.bufferSize = bufferSize;\n var buffer = createBuffer(bufferSize);\n\n if (!this.noPause) {\n this.pause();\n }\n\n this.statement.getData(this.paramIndex, this.offset, buffer, 0, bufferSize, function (err, bytesRetrieved) {\n if (err === undefined) {\n if (stream.isString) {\n if (bytesRetrieved > 0) {\n let nullChar = buffer.indexOf(0);\n if (nullChar === 0) {\n stream.push(null);\n } else {\n let newBuffer = buffer;\n if (nullChar > 0) {\n newBuffer = buffer.slice(0, nullChar);\n }\n let str = newBuffer.toString('utf8');\n stream.offset += str.length;\n if (stream.valueAsString) {\n stream.push(str);\n } else {\n stream.push(newBuffer);\n }\n if (bytesRetrieved < stream.bufferSize) {\n stream.push(null);\n }\n }\n } else {\n stream.push(null);\n }\n } else { // LOB\n stream.offset += bytesRetrieved;\n if (bytesRetrieved > 0) {\n if (bytesRetrieved < stream.bufferSize) {\n stream.push(buffer.slice(0, bytesRetrieved));\n stream.push(null);\n } else {\n stream.push(buffer);\n }\n } else {\n stream.push(null);\n }\n }\n } else {\n if (err.code === 100) { // No more result\n stream.push(null);\n } else {\n stream.emit('error', err);\n }\n }\n if (!stream.noPause) {\n stream.resume();\n }\n });\n};\n\nHanaParameterLobStream.prototype._destroy = function (error, callback) {\n this.push(null);\n if (typeof callback === 'function') {\n callback(error);\n }\n};\n\n// Statement which allows user to pass readable streams for input parameters\nfunction HanaStatement(connection, sql, callback) {\n if (connection === undefined || connection === null) {\n handleError(\"Invalid parameter 'connection'.\", callback);\n return;\n }\n if (sql === undefined || sql === null) {\n handleError(\"Invalid parameter 'sql'.\", callback);\n return;\n }\n\n this.connection = connection;\n this.sql = sql;\n this.stmt = null;\n this.result = 0;\n\n if (callback) {\n var hanaStmt = this;\n this.connection.prepare(sql, function (err, stmt) {\n hanaStmt.stmt = stmt;\n callback(err, hanaStmt);\n });\n } else {\n this.stmt = this.connection.prepare(sql);\n }\n};\n\nHanaStatement.prototype.getStatement = function () {\n return this.stmt;\n};\n\nHanaStatement.prototype.drop = function (callback) {\n if (this.stmt) {\n var stmt = this.stmt;\n this.stmt = null;\n stmt.drop(callback);\n }\n};\n\nHanaStatement.prototype.exec = function (params, callback) {\n if (callback === undefined || callback === null || typeof callback !== 'function') {\n throw new Error(\"Invalid parameter 'callback'.\");\n }\n if (params === undefined || params === null || !(params instanceof Array)) {\n handleError(\"Invalid parameter 'params'.\", callback);\n return;\n }\n if (!this.stmt) {\n handleError(\"Invalid statement.\", callback);\n return;\n }\n\n var hasArrayParam = false;\n var hasNonArrayParam = false;\n\n for (var i = 0; i < params.length; i++) {\n if (params[i] instanceof Array) {\n hasArrayParam = true;\n } else {\n hasNonArrayParam = true;\n }\n if (hasArrayParam && hasNonArrayParam) {\n handleError(\"Invalid parameter 'params': contains both array and non-array parameters.\", callback);\n return;\n }\n }\n\n if (params.length === 0) {\n callback(null, 0);\n return;\n }\n\n this.callback = callback;\n this.currentRow = 0;\n\n if (hasArrayParam) {\n this.paramsArray = params;\n } else {\n this.paramsArray = [];\n this.paramsArray.push(params);\n }\n\n this._exec();\n}\n\nHanaStatement.prototype._exec = function () {\n this.params = this.paramsArray[this.currentRow];\n\n var isStream = [];\n var paramsNew = [];\n var streamCount = 0;\n var hanaStmt = this;\n\n for (var i = 0; i < this.params.length; i++) {\n if (this.params[i] instanceof Stream) {\n this.params[i].pause();\n isStream.push(true);\n paramsNew.push({sendParameterData : true});\n streamCount++;\n } else {\n isStream.push(false);\n paramsNew.push(this.params[i]);\n }\n }\n\n if (streamCount <= 0) {\n this.stmt.exec(paramsNew, function (err, result) {\n if (err) {\n hanaStmt.callback(err, result);\n } else {\n hanaStmt.currentRow++;\n hanaStmt.result += result;\n if (hanaStmt.currentRow === hanaStmt.paramsArray.length) {\n hanaStmt.callback(null, hanaStmt.result);\n } else {\n hanaStmt._exec();\n }\n }\n });\n } else {\n this.stmt.exec(paramsNew, function (err, result) {\n if (err) {\n hanaStmt.callback(err, result);\n } else {\n for (var paramIndex = 0; paramIndex < hanaStmt.params.length; paramIndex++) {\n if (hanaStmt.params[paramIndex] instanceof Stream) {\n break;\n }\n }\n hanaStmt.sendParameterData(paramIndex);\n }\n });\n }\n};\n\nHanaStatement.prototype.sendParameterData = function (paramIndex) {\n var hanaStmt = this;\n\n this.params[paramIndex].on('error', function (error) {\n hanaStmt.callback(error);\n });\n\n this.params[paramIndex].on('end', function () {\n hanaStmt.stmt.sendParameterData(paramIndex, null, function (err) {\n if (err) {\n hanaStmt.callback(err);\n } else {\n var nextStream = -1;\n for (var i = paramIndex + 1; i < hanaStmt.params.length; i++) {\n if (hanaStmt.params[i] instanceof Stream) {\n nextStream = i;\n break;\n }\n }\n if (nextStream >= 0) {\n hanaStmt.sendParameterData(nextStream);\n } else {\n hanaStmt.currentRow++;\n hanaStmt.result += 1;\n if (hanaStmt.currentRow === hanaStmt.paramsArray.length) {\n hanaStmt.callback(null, hanaStmt.result);\n } else {\n hanaStmt._exec();\n }\n }\n }\n });\n });\n\n this.params[paramIndex].on('data', function (buffer) {\n hanaStmt.params[paramIndex].pause();\n hanaStmt.stmt.sendParameterData(paramIndex, buffer, function (err) {\n if (err) {\n hanaStmt.callback(err);\n } else {\n hanaStmt.params[paramIndex].resume();\n }\n });\n });\n\n this.params[paramIndex].resume();\n};\n\n// Statement for procedure call\nfunction HanaProcStatement(connection, sql, callback) {\n if (connection === undefined || connection === null) {\n handleError(\"Invalid parameter 'connection'.\", callback);\n return;\n }\n if (sql === undefined || sql === null) {\n handleError(\"Invalid parameter 'sql'.\", callback);\n return;\n }\n if (callback !== undefined && callback !== null && typeof callback !== 'function') {\n throw new Error(\"Invalid parameter 'callback'.\");\n }\n\n this.connection = connection;\n this.columnInfo = [];\n\n if (callback) {\n var hanaStmt = this;\n connection.prepare(sql, function (err, stmt) {\n hanaStmt.stmt = stmt;\n callback(err, hanaStmt);\n });\n } else {\n this.stmt = connection.prepare(sql);\n return this;\n }\n};\n\nHanaProcStatement.prototype.drop = function (callback) {\n if (this.stmt) {\n var stmt = this.stmt;\n this.stmt = null;\n stmt.drop(callback);\n }\n};\n\nHanaProcStatement.prototype.exec = function (...args /*params, [options,] callback*/) {\n if (args.length != 2 && args.length != 3) {\n throw new Error(\"Invalid number of parameters - exec(params, [options,] callback).\");\n }\n\n var params = args[0];\n if (args.length == 2) {\n var options = {};\n var callback = args[1];\n } else if (args.length == 3) {\n var options = args[1];\n var callback = args[2];\n }\n\n if (params !== undefined && params !== null &&\n (!(params instanceof Array) && !(params instanceof Object))) {\n handleError(\"Invalid parameter 'params'.\", callback);\n return;\n }\n if (callback === undefined || callback === null || typeof callback !== 'function') {\n throw new Error(\"Invalid parameter 'callback'.\");\n }\n if (!this.stmt) {\n handleError(\"Invalid statement.\", callback);\n return;\n }\n\n this.callback = callback;\n this.scalarParams = {};\n this.hasScalarParams = false;\n this.tableParams = [[]];\n this.currentTable = 0;\n this.columnInfo = [];\n\n var hanaStmt = this;\n this.stmt.execQuery(params, options, function (err, rs) {\n if (err) {\n hanaStmt.callback(err);\n } else {\n hanaStmt.rs = rs;\n var paramInfo = hanaStmt.stmt.getParameterInfo();\n var paramCount = 0;\n for (var i = 0; i < paramInfo.length; i++) {\n if (paramInfo[i].direction === 2 || paramInfo[i].direction === 3) {\n hanaStmt.hasScalarParams = true;\n hanaStmt.stmt.getParameterValue(i, (function() {\n var index = i;\n return function(err, val) {\n if(err) {\n hanaStmt.callback(err);\n } else {\n ++paramCount;\n hanaStmt.scalarParams[paramInfo[index].name] = val;\n if (paramCount === paramInfo.length) {\n return hanaStmt.fetchTableParam();\n }\n }\n };\n })() );\n } else {\n ++paramCount;\n }\n }\n if (paramCount === paramInfo.length) {\n hanaStmt.fetchTableParam();\n }\n }\n });\n}\n\n// Returns an array of arrays. Each array contains column info for each output table.\nHanaProcStatement.prototype.getColumnInfo = function () {\n return this.columnInfo;\n};\n\nHanaProcStatement.prototype.execute = function (params, callback) {\n this.exec(params, callback);\n}\n\nHanaProcStatement.prototype.fetchTableParam = function () {\n function fetchNextResult(hanaStmt) {\n var columns = hanaStmt.rs.getColumnInfo();\n if ((columns != null) && (columns != undefined) && (columns.length > 0)) {\n hanaStmt.columnInfo.push(columns);\n }\n hanaStmt.rs.nextResult(function (err, hasResult) {\n if (err) {\n hanaStmt.callback(err);\n } else if (hasResult) {\n hanaStmt.currentTable++;\n hanaStmt.tableParams.push([]);\n hanaStmt.fetchTableParam();\n } else {\n hanaStmt.rs.close(function (err) {\n if (err) {\n hanaStmt.callback(err);\n } else {\n var args = [];\n if (hanaStmt.hasScalarParams) {\n args.push(hanaStmt.scalarParams);\n } else {\n args.push({});\n }\n for (var i = 0; i < hanaStmt.tableParams.length; i++) {\n args.push(hanaStmt.tableParams[i]);\n }\n var evalStr = 'hanaStmt.callback(null';\n for (var j = 0; j < args.length; j++) {\n evalStr += ', args[' + j + ']';\n }\n evalStr += ')';\n eval(evalStr);\n }\n });\n }\n });\n }\n\n var hanaStmt = this;\n if (this.rs.nextCanBlock()) {\n // async next\n this.rs.next(function (err, hasData) {\n if (err) {\n hanaStmt.callback(err);\n } else {\n if (hasData) {\n try {\n hanaStmt.tableParams[hanaStmt.currentTable].push(hanaStmt.rs.getValues());\n } catch (newerr) {\n hanaStmt.callback(newerr);\n return;\n }\n hanaStmt.fetchTableParam();\n } else {\n fetchNextResult(hanaStmt);\n }\n }\n });\n } else {\n // nextCanBlock returned false, use sync next.\n var hasDataSync = false;\n try {\n hasDataSync = this.rs.next();\n if (hasDataSync) {\n hanaStmt.tableParams[hanaStmt.currentTable].push(hanaStmt.rs.getValues());\n }\n } catch (newerr) {\n hanaStmt.callback(newerr);\n return;\n }\n if (hasDataSync) {\n hanaStmt.fetchTableParam();\n } else {\n fetchNextResult(hanaStmt);\n }\n }\n}\n\nfunction handleError(err, callback) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n};\n\nfunction isLob(type) {\n if (type === 25 || // CLOB\n type === 26 || // NCLOB\n type === 27 || // BLOB\n type === 13) { // VARBINARY\n return true;\n }\n return false;\n};\n\nfunction checkParameter(name, param) {\n if (param === undefined || param === null) {\n throw new Error(\"Invalid parameter '\" + name + \"'.\");\n }\n};\n\nfunction checkColumnIndex(columnInfo, columnIndex) {\n if (columnIndex === undefined || columnIndex === null ||\n columnIndex < 0 || columnIndex >= columnInfo.length) {\n throw new Error(\"Invalid parameter 'columnIndex'.\");\n }\n};\n\nfunction checkLobType(columnInfo, columnIndex) {\n var type = columnInfo[columnIndex].nativeType;\n if (!isLob(type)) {\n throw new Error('Column is not LOB type.');\n }\n};\n\nfunction checkParameterIndex(paramInfo, paramIndex) {\n if (paramIndex === undefined || paramIndex === null ||\n paramIndex < 0 || paramIndex >= paramInfo.length) {\n throw new Error(\"Invalid parameter 'paramIndex'.\");\n }\n};\n\nfunction checkParameterLobType(paramInfo, paramIndex) {\n var type = paramInfo[paramIndex].nativeType;\n if (!isLob(type)) {\n throw new Error('Parameter is not LOB type.');\n }\n};\n\nfunction createBuffer(size) {\n if (typeof Buffer.alloc === 'function') {\n return Buffer.alloc(size);\n } else {\n return new Buffer(size);\n }\n};\n\nfunction isInteger(value) {\n if (typeof value === 'number' && value % 1 === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction getLobStreamOptions(options) {\n var opts = {};\n Object.assign(opts, options);\n opts.objectMode = false;\n if (isInteger(opts.readSize) && opts.readSize > 0) {\n opts.highWaterMark = opts.readSize;\n }\n opts.noPause = false;\n if (options && 'noPause' in options && (typeof options.noPause === 'boolean')) {\n opts.noPause = options.noPause;\n }\n return opts;\n}\n\nvar MAX_READ_SIZE = Math.pow(2, 18);\nvar DEFAULT_READ_SIZE = Math.pow(2, 11) * 100;\n"],"mappings":"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","names":["args","err","ret","hanaStmt","i"]}
@@ -0,0 +1,16 @@
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
3
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
4
+ }) : x)(function(x) {
5
+ if (typeof require !== "undefined") return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+ var __commonJS = (cb, mod) => function __require2() {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ };
11
+
12
+ export {
13
+ __require,
14
+ __commonJS
15
+ };
16
+ //# sourceMappingURL=chunk-VUNV25KB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,382 @@
1
+ import { z } from 'zod';
2
+
3
+ declare function loadEnv(): void;
4
+
5
+ type HanaConnectionConfig = {
6
+ host: string;
7
+ port?: number;
8
+ user: string;
9
+ password: string;
10
+ encrypt?: boolean;
11
+ sslValidateCertificate?: boolean;
12
+ };
13
+ type HanaConnection = {
14
+ connect: (params: Record<string, unknown>, cb: (err?: unknown) => void) => void;
15
+ exec: (sql: string, cb: (err: unknown, result: unknown) => void) => void;
16
+ disconnect: () => void;
17
+ };
18
+
19
+ declare function createHanaConnection(config: HanaConnectionConfig): Promise<HanaConnection>;
20
+ declare function hanaExec<T = unknown>(conn: HanaConnection, sql: string): Promise<T>;
21
+
22
+ type SparqlExecuteResult = unknown;
23
+ declare class HanaSparqlStore {
24
+ private readonly conn;
25
+ constructor(conn: HanaConnection);
26
+ execute(options: {
27
+ sparql: string;
28
+ headers?: string;
29
+ defaultGraphUri?: string;
30
+ }): Promise<SparqlExecuteResult>;
31
+ loadTurtle(options: {
32
+ turtle: string;
33
+ graphName: string;
34
+ filename?: string;
35
+ }): Promise<SparqlExecuteResult>;
36
+ }
37
+
38
+ declare const TRIPLET_SOURCE_KEY = "triplet_source_id";
39
+ declare const KG_NODES_KEY = "kg_nodes";
40
+ declare const KG_RELATIONS_KEY = "kg_relations";
41
+ declare const VECTOR_SOURCE_KEY = "vector_source_id";
42
+ declare const KG_SOURCE_REL = "HAS_SOURCE";
43
+ declare const EntityNodeSchema: z.ZodObject<{
44
+ id: z.ZodString;
45
+ label: z.ZodString;
46
+ name: z.ZodString;
47
+ properties: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
48
+ embedding: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
49
+ }, "strip", z.ZodTypeAny, {
50
+ id: string;
51
+ label: string;
52
+ name: string;
53
+ properties: Record<string, unknown>;
54
+ embedding?: number[] | undefined;
55
+ }, {
56
+ id: string;
57
+ label: string;
58
+ name: string;
59
+ properties?: Record<string, unknown> | undefined;
60
+ embedding?: number[] | undefined;
61
+ }>;
62
+ type EntityNode = z.infer<typeof EntityNodeSchema>;
63
+ declare const RelationSchema: z.ZodObject<{
64
+ id: z.ZodOptional<z.ZodString>;
65
+ label: z.ZodString;
66
+ sourceId: z.ZodString;
67
+ targetId: z.ZodString;
68
+ properties: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
69
+ }, "strip", z.ZodTypeAny, {
70
+ label: string;
71
+ properties: Record<string, unknown>;
72
+ sourceId: string;
73
+ targetId: string;
74
+ id?: string | undefined;
75
+ }, {
76
+ label: string;
77
+ sourceId: string;
78
+ targetId: string;
79
+ id?: string | undefined;
80
+ properties?: Record<string, unknown> | undefined;
81
+ }>;
82
+ type Relation = z.infer<typeof RelationSchema>;
83
+ type Triplet = [EntityNode, Relation, EntityNode];
84
+ type LabelledNode = EntityNode;
85
+ interface NodeWithScore {
86
+ node: {
87
+ id: string;
88
+ text: string;
89
+ metadata: Record<string, unknown>;
90
+ refDocId?: string;
91
+ };
92
+ score: number;
93
+ }
94
+ interface QueryBundle {
95
+ queryStr: string;
96
+ embedding?: number[];
97
+ embeddingStrs?: string[];
98
+ }
99
+ declare function createEntityNode(opts: {
100
+ label: string;
101
+ name: string;
102
+ properties?: Record<string, unknown>;
103
+ embedding?: number[];
104
+ }): EntityNode;
105
+ declare function createRelation(opts: {
106
+ label: string;
107
+ sourceId: string;
108
+ targetId: string;
109
+ properties?: Record<string, unknown>;
110
+ }): Relation;
111
+ declare function tripletToString(triplet: Triplet, includeProperties?: boolean): string;
112
+
113
+ interface VectorStoreQuery {
114
+ queryEmbedding: number[];
115
+ similarityTopK: number;
116
+ filters?: Record<string, unknown>;
117
+ }
118
+ interface PropertyGraphStore {
119
+ readonly supportsVectorQueries: boolean;
120
+ readonly supportsStructuredQueries: boolean;
121
+ upsertNodes(nodes: EntityNode[]): Promise<void>;
122
+ upsertRelations(relations: Relation[]): Promise<void>;
123
+ get(opts: {
124
+ ids: string[];
125
+ }): Promise<LabelledNode[]>;
126
+ getRelMap(opts: {
127
+ nodes: LabelledNode[];
128
+ depth?: number;
129
+ limit?: number;
130
+ ignoreRels?: string[];
131
+ }): Promise<Triplet[]>;
132
+ delete(opts: {
133
+ ids: string[];
134
+ }): Promise<void>;
135
+ vectorQuery?(query: VectorStoreQuery): Promise<[LabelledNode[], number[]]>;
136
+ getSchema?(opts?: {
137
+ refresh?: boolean;
138
+ }): Promise<Record<string, unknown>>;
139
+ upsertLlamaNodes?(nodes: Array<{
140
+ id: string;
141
+ text: string;
142
+ metadata: Record<string, unknown>;
143
+ embedding?: number[];
144
+ }>): Promise<void>;
145
+ getLlamaNodes?(ids: string[]): Promise<Array<{
146
+ id: string;
147
+ text: string;
148
+ metadata: Record<string, unknown>;
149
+ hash?: string;
150
+ }>>;
151
+ }
152
+
153
+ type LlamaNode = {
154
+ id: string;
155
+ text: string;
156
+ metadata: Record<string, unknown>;
157
+ embedding?: number[];
158
+ hash?: string;
159
+ };
160
+ interface HanaPropertyGraphStoreOptions {
161
+ graphName: string;
162
+ vectorTableName?: string;
163
+ llamaNodesTableName?: string;
164
+ /** Optional, unused for dimensionless REAL_VECTOR columns (kept for backward compat logging). */
165
+ vectorDimension?: number;
166
+ /** If true, will DROP and recreate tables on init (intended for tests/dev only). */
167
+ resetTables?: boolean;
168
+ }
169
+ declare class HanaPropertyGraphStore implements PropertyGraphStore {
170
+ private readonly conn;
171
+ private readonly graphName;
172
+ private readonly vectorTableName;
173
+ private readonly llamaNodesTableName;
174
+ private readonly resetTables;
175
+ private initialized;
176
+ readonly supportsVectorQueries = true;
177
+ readonly supportsStructuredQueries = true;
178
+ constructor(conn: HanaConnection, options: HanaPropertyGraphStoreOptions);
179
+ private ensureInitialized;
180
+ private exec;
181
+ private sparqlExecute;
182
+ private entityToUri;
183
+ private relationToTriples;
184
+ private entityToTriples;
185
+ private escapeLiteral;
186
+ upsertNodes(nodes: EntityNode[]): Promise<void>;
187
+ upsertRelations(relations: Relation[]): Promise<void>;
188
+ get(opts: {
189
+ ids: string[];
190
+ }): Promise<LabelledNode[]>;
191
+ getRelMap(opts: {
192
+ nodes: LabelledNode[];
193
+ depth?: number;
194
+ limit?: number;
195
+ ignoreRels?: string[];
196
+ }): Promise<Triplet[]>;
197
+ private extractIdFromUri;
198
+ private extractRelLabelFromUri;
199
+ delete(opts: {
200
+ ids: string[];
201
+ }): Promise<void>;
202
+ vectorQuery(query: VectorStoreQuery): Promise<[LabelledNode[], number[]]>;
203
+ upsertLlamaNodes(nodes: LlamaNode[]): Promise<void>;
204
+ getLlamaNodes(ids: string[]): Promise<LlamaNode[]>;
205
+ }
206
+
207
+ interface TextNode {
208
+ id: string;
209
+ text: string;
210
+ metadata: Record<string, unknown>;
211
+ embedding?: number[];
212
+ hash?: string;
213
+ }
214
+ interface TransformComponent {
215
+ transform(nodes: TextNode[], options?: {
216
+ showProgress?: boolean;
217
+ }): Promise<TextNode[]>;
218
+ }
219
+ interface ExtractedKG {
220
+ nodes: EntityNode[];
221
+ relations: Relation[];
222
+ triplets: Triplet[];
223
+ }
224
+ type EntityType = string;
225
+ type RelationType = string;
226
+ interface SchemaDefinition {
227
+ entityTypes: EntityType[];
228
+ relationTypes: RelationType[];
229
+ validationSchema?: Array<[EntityType, RelationType, EntityType]>;
230
+ }
231
+
232
+ declare const DEFAULT_PREAMBLE = "Here are some facts extracted from the provided text:\n\n";
233
+ interface BasePGRetrieverOptions {
234
+ graphStore: PropertyGraphStore;
235
+ includeText?: boolean;
236
+ includeTextPreamble?: string;
237
+ includeProperties?: boolean;
238
+ }
239
+ declare abstract class BasePGRetriever {
240
+ protected readonly graphStore: PropertyGraphStore;
241
+ protected readonly includeText: boolean;
242
+ protected readonly includeTextPreamble: string;
243
+ protected readonly includeProperties: boolean;
244
+ constructor(options: BasePGRetrieverOptions);
245
+ protected getNodesWithScore(triplets: Triplet[], scores?: number[]): NodeWithScore[];
246
+ protected addSourceText(nodes: NodeWithScore[]): Promise<NodeWithScore[]>;
247
+ retrieve(queryBundle: QueryBundle): Promise<NodeWithScore[]>;
248
+ abstract retrieveFromGraph(queryBundle: QueryBundle): Promise<NodeWithScore[]>;
249
+ }
250
+
251
+ interface PGRetrieverOptions {
252
+ subRetrievers: BasePGRetriever[];
253
+ showProgress?: boolean;
254
+ }
255
+ declare class PGRetriever {
256
+ private readonly subRetrievers;
257
+ private readonly showProgress;
258
+ constructor(options: PGRetrieverOptions);
259
+ private deduplicate;
260
+ retrieve(queryBundle: QueryBundle): Promise<NodeWithScore[]>;
261
+ }
262
+
263
+ interface EmbedModel {
264
+ getTextEmbedding(text: string): Promise<number[]>;
265
+ getTextEmbeddingBatch(texts: string[]): Promise<number[][]>;
266
+ }
267
+ interface VectorContextRetrieverOptions extends BasePGRetrieverOptions {
268
+ embedModel: EmbedModel;
269
+ similarityTopK?: number;
270
+ pathDepth?: number;
271
+ limit?: number;
272
+ similarityScore?: number;
273
+ /** Enable cross-check boosting: boost scores when vector-matched entities link to graph facts (default: true) */
274
+ crossCheckBoost?: boolean;
275
+ /** Multiplier for cross-check boost (default: 1.25 = 25% boost) */
276
+ crossCheckBoostFactor?: number;
277
+ }
278
+ declare class VectorContextRetriever extends BasePGRetriever {
279
+ private readonly embedModel;
280
+ private readonly similarityTopK;
281
+ private readonly pathDepth;
282
+ private readonly limit;
283
+ private readonly similarityScore?;
284
+ private readonly crossCheckBoost;
285
+ private readonly crossCheckBoostFactor;
286
+ constructor(options: VectorContextRetrieverOptions);
287
+ retrieveFromGraph(queryBundle: QueryBundle): Promise<NodeWithScore[]>;
288
+ /**
289
+ * Check if a node has provenance linking to the vector-matched nodes.
290
+ * Returns true if the node's properties contain a documentId or sourceChunk
291
+ * that matches something in the provenance set.
292
+ */
293
+ private checkProvenance;
294
+ }
295
+
296
+ interface PropertyGraphIndexOptions {
297
+ propertyGraphStore: PropertyGraphStore;
298
+ kgExtractors?: TransformComponent[];
299
+ embedModel?: EmbedModel;
300
+ embedKgNodes?: boolean;
301
+ showProgress?: boolean;
302
+ }
303
+ declare class PropertyGraphIndex {
304
+ private readonly propertyGraphStore;
305
+ private readonly kgExtractors;
306
+ private readonly embedModel?;
307
+ private readonly embedKgNodes;
308
+ private readonly showProgress;
309
+ constructor(options: PropertyGraphIndexOptions);
310
+ get graphStore(): PropertyGraphStore;
311
+ static fromExisting(options: PropertyGraphIndexOptions): PropertyGraphIndex;
312
+ private computeHash;
313
+ insert(nodes: TextNode[]): Promise<TextNode[]>;
314
+ delete(nodeIds: string[]): Promise<void>;
315
+ asRetriever(options?: {
316
+ subRetrievers?: Array<{
317
+ retrieve(query: QueryBundle): Promise<NodeWithScore[]>;
318
+ }>;
319
+ includeText?: boolean;
320
+ /** Number of top similar nodes to retrieve via vector search (default: 4) */
321
+ similarityTopK?: number;
322
+ /** Graph traversal depth from matched nodes (default: 1) */
323
+ pathDepth?: number;
324
+ /** Maximum number of triplets to return after expansion (default: 30) */
325
+ limit?: number;
326
+ /** Minimum similarity score threshold to include results (default: no threshold) */
327
+ similarityScore?: number;
328
+ /** Enable cross-check boosting: boost scores when vector-matched entities link to graph facts (default: true) */
329
+ crossCheckBoost?: boolean;
330
+ /** Multiplier for cross-check boost (default: 1.25 = 25% boost) */
331
+ crossCheckBoostFactor?: number;
332
+ }): PGRetriever;
333
+ query(queryStr: string, options?: {
334
+ /** Number of top similar nodes to retrieve via vector search (default: 4) */
335
+ similarityTopK?: number;
336
+ /** Graph traversal depth from matched nodes (default: 1) */
337
+ pathDepth?: number;
338
+ /** Maximum number of triplets to return after expansion (default: 30) */
339
+ limit?: number;
340
+ /** Minimum similarity score threshold to include results (default: no threshold) */
341
+ similarityScore?: number;
342
+ /** Enable cross-check boosting: boost scores when vector-matched entities link to graph facts (default: true) */
343
+ crossCheckBoost?: boolean;
344
+ /** Multiplier for cross-check boost (default: 1.25 = 25% boost) */
345
+ crossCheckBoostFactor?: number;
346
+ }): Promise<NodeWithScore[]>;
347
+ }
348
+
349
+ interface LLMClient {
350
+ structuredPredict<T>(schema: z.ZodType<T>, prompt: string): Promise<T>;
351
+ }
352
+ interface SchemaLLMPathExtractorOptions {
353
+ llm: LLMClient;
354
+ schema: SchemaDefinition;
355
+ maxTripletsPerChunk?: number;
356
+ strict?: boolean;
357
+ extractPromptTemplate?: string;
358
+ }
359
+ declare class SchemaLLMPathExtractor implements TransformComponent {
360
+ private readonly llm;
361
+ private readonly schema;
362
+ private readonly maxTripletsPerChunk;
363
+ private readonly strict;
364
+ private readonly extractPromptTemplate;
365
+ private readonly tripletSchema;
366
+ constructor(options: SchemaLLMPathExtractorOptions);
367
+ private buildPrompt;
368
+ private isValidTriplet;
369
+ private pruneInvalidTriplets;
370
+ private extractFromNode;
371
+ transform(nodes: TextNode[], options?: {
372
+ showProgress?: boolean;
373
+ }): Promise<TextNode[]>;
374
+ }
375
+
376
+ declare class ImplicitPathExtractor implements TransformComponent {
377
+ transform(nodes: TextNode[], options?: {
378
+ showProgress?: boolean;
379
+ }): Promise<TextNode[]>;
380
+ }
381
+
382
+ export { BasePGRetriever, type BasePGRetrieverOptions, DEFAULT_PREAMBLE, type EmbedModel, type EntityNode, EntityNodeSchema, type EntityType, type ExtractedKG, type HanaConnection, type HanaConnectionConfig, HanaPropertyGraphStore, type HanaPropertyGraphStoreOptions, HanaSparqlStore, ImplicitPathExtractor, KG_NODES_KEY, KG_RELATIONS_KEY, KG_SOURCE_REL, type LLMClient, type LabelledNode, type NodeWithScore, PGRetriever, type PGRetrieverOptions, PropertyGraphIndex, type PropertyGraphIndexOptions, type PropertyGraphStore, type QueryBundle, type Relation, RelationSchema, type RelationType, type SchemaDefinition, SchemaLLMPathExtractor, type SchemaLLMPathExtractorOptions, TRIPLET_SOURCE_KEY, type TextNode, type TransformComponent, type Triplet, VECTOR_SOURCE_KEY, VectorContextRetriever, type VectorContextRetrieverOptions, type VectorStoreQuery, createEntityNode, createHanaConnection, createRelation, hanaExec, loadEnv, tripletToString };