@harperfast/harper 5.0.30 → 5.1.0-beta.2
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 +11 -10
- package/agent/agent.ts +203 -0
- package/agent/loop.ts +205 -0
- package/agent/operations.ts +148 -0
- package/agent/session.ts +187 -0
- package/agent/tools/fsTools.ts +276 -0
- package/agent/tools/httpFetchTool.ts +112 -0
- package/agent/tools/scheduleTool.ts +68 -0
- package/agent/toolset.ts +43 -0
- package/agent/types.ts +85 -0
- package/bin/{BinObjects.js → BinObjects.ts} +4 -5
- package/bin/cliCredentials.ts +133 -0
- package/bin/cliOperations.ts +339 -0
- package/bin/copyDb.ts +10 -10
- package/bin/deployRenderer.ts +196 -0
- package/bin/{harper.js → harper.ts} +43 -19
- package/bin/{install.js → install.ts} +3 -3
- package/bin/lite.ts +2 -0
- package/bin/login.ts +134 -0
- package/bin/logout.ts +11 -0
- package/bin/mcp/client.ts +407 -0
- package/bin/mcp/doctor.ts +189 -0
- package/bin/mcp/index.ts +80 -0
- package/bin/mcp/options.ts +122 -0
- package/bin/mcp/printConfig.ts +89 -0
- package/bin/multipartBuilder.ts +74 -0
- package/bin/{restart.js → restart.ts} +27 -28
- package/bin/{run.js → run.ts} +41 -30
- package/bin/sseConsumer.ts +126 -0
- package/bin/{status.js → status.ts} +10 -10
- package/bin/{stop.js → stop.ts} +5 -5
- package/bin/upgrade.js +17 -24
- package/components/Application.ts +144 -18
- package/components/ApplicationScope.ts +2 -2
- package/components/ComponentV1.ts +2 -2
- package/components/EntryHandler.ts +159 -9
- package/components/OptionsWatcher.ts +75 -11
- package/components/Scope.ts +132 -18
- package/components/anthropic/index.ts +547 -0
- package/components/bedrock/index.ts +823 -0
- package/components/componentLoader.ts +64 -32
- package/components/deployLifecycle.ts +161 -0
- package/components/deploymentOperations.ts +173 -0
- package/components/deploymentRecorder.ts +427 -0
- package/components/deriveURLPath.ts +4 -4
- package/components/mcp/adapters/fastify.ts +87 -0
- package/components/mcp/adapters/harperHttp.ts +103 -0
- package/components/mcp/audit.ts +75 -0
- package/components/mcp/index.ts +134 -0
- package/components/mcp/jsonrpc.ts +134 -0
- package/components/mcp/lifecycle.ts +105 -0
- package/components/mcp/listChanged.ts +270 -0
- package/components/mcp/rateLimit.ts +217 -0
- package/components/mcp/resources.ts +607 -0
- package/components/mcp/session.ts +151 -0
- package/components/mcp/sessionRegistry.ts +140 -0
- package/components/mcp/toolRegistry.ts +294 -0
- package/components/mcp/tools/application.ts +761 -0
- package/components/mcp/tools/operations.ts +311 -0
- package/components/mcp/tools/schemas/derive.ts +356 -0
- package/components/mcp/tools/schemas/operationDescriptions.ts +241 -0
- package/components/mcp/tools/schemas/operations.ts +301 -0
- package/components/mcp/transport.ts +517 -0
- package/components/ollama/index.ts +316 -0
- package/components/openai/index.ts +563 -0
- package/components/operations.js +217 -60
- package/components/operationsValidation.js +12 -4
- package/components/packageComponent.ts +97 -29
- package/components/requestRestart.ts +17 -2
- package/components/status/crossThread.ts +14 -5
- package/components/status/errors.ts +1 -1
- package/config/RootConfigWatcher.ts +56 -2
- package/config/configUtils.js +29 -8
- package/config/harperConfigEnvVars.ts +1 -1
- package/config-root.schema.json +78 -4
- package/dataLayer/{CreateAttributeObject.js → CreateAttributeObject.ts} +4 -3
- package/dataLayer/{CreateTableObject.js → CreateTableObject.ts} +2 -1
- package/dataLayer/{DataLayerObjects.js → DataLayerObjects.ts} +17 -9
- package/dataLayer/{DeleteBeforeObject.js → DeleteBeforeObject.ts} +2 -1
- package/dataLayer/{DeleteObject.js → DeleteObject.ts} +3 -2
- package/dataLayer/{DropAttributeObject.js → DropAttributeObject.ts} +2 -1
- package/dataLayer/{GetBackupObject.js → GetBackupObject.ts} +3 -2
- package/dataLayer/{InsertObject.js → InsertObject.ts} +3 -2
- package/dataLayer/{ReadAuditLogObject.js → ReadAuditLogObject.ts} +3 -2
- package/dataLayer/{SQLSearch.js → SQLSearch.ts} +97 -43
- package/dataLayer/{SearchByConditionsObject.js → SearchByConditionsObject.ts} +5 -6
- package/dataLayer/{SearchByHashObject.js → SearchByHashObject.ts} +2 -1
- package/dataLayer/{SearchObject.js → SearchObject.ts} +2 -1
- package/dataLayer/{SqlSearchObject.js → SqlSearchObject.ts} +2 -1
- package/dataLayer/{UpdateObject.js → UpdateObject.ts} +3 -2
- package/dataLayer/{UpsertObject.js → UpsertObject.ts} +3 -2
- package/dataLayer/{bulkLoad.js → bulkLoad.ts} +40 -49
- package/dataLayer/{delete.js → delete.ts} +21 -26
- package/dataLayer/{export.js → export.ts} +22 -26
- package/dataLayer/{getBackup.js → getBackup.ts} +7 -9
- package/dataLayer/harperBridge/BridgeMethods.ts +102 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +27 -26
- package/dataLayer/harperBridge/TableSizeObject.ts +1 -0
- package/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/dataLayer/harperBridge/{harperBridge.js → harperBridge.ts} +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +8 -6
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +6 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +6 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +3 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +10 -8
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +4 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +6 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +2 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +3 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +6 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.ts +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/dataLayer/{hdbInfoController.js → hdbInfoController.ts} +20 -26
- package/dataLayer/{insert.js → insert.ts} +24 -24
- package/dataLayer/{readAuditLog.js → readAuditLog.ts} +8 -10
- package/dataLayer/{schema.js → schema.ts} +32 -44
- package/dataLayer/{schemaDescribe.js → schemaDescribe.ts} +23 -26
- package/dataLayer/{search.js → search.ts} +9 -15
- package/dataLayer/{transaction.js → transaction.ts} +2 -5
- package/dataLayer/{update.js → update.ts} +19 -22
- package/dist/agent/agent.d.ts +35 -0
- package/dist/agent/agent.js +175 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/loop.d.ts +34 -0
- package/dist/agent/loop.js +176 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/operations.d.ts +17 -0
- package/dist/agent/operations.js +137 -0
- package/dist/agent/operations.js.map +1 -0
- package/dist/agent/session.d.ts +36 -0
- package/dist/agent/session.js +182 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/agent/tools/fsTools.d.ts +19 -0
- package/dist/agent/tools/fsTools.js +286 -0
- package/dist/agent/tools/fsTools.js.map +1 -0
- package/dist/agent/tools/httpFetchTool.d.ts +9 -0
- package/dist/agent/tools/httpFetchTool.js +116 -0
- package/dist/agent/tools/httpFetchTool.js.map +1 -0
- package/dist/agent/tools/scheduleTool.d.ts +22 -0
- package/dist/agent/tools/scheduleTool.js +54 -0
- package/dist/agent/tools/scheduleTool.js.map +1 -0
- package/dist/agent/toolset.d.ts +24 -0
- package/dist/agent/toolset.js +33 -0
- package/dist/agent/toolset.js.map +1 -0
- package/dist/agent/types.d.ts +75 -0
- package/dist/agent/types.js +10 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/bin/BinObjects.d.ts +2 -2
- package/dist/bin/BinObjects.js +6 -3
- package/dist/bin/BinObjects.js.map +1 -1
- package/dist/bin/cliCredentials.d.ts +27 -0
- package/dist/bin/cliCredentials.js +130 -0
- package/dist/bin/cliCredentials.js.map +1 -0
- package/dist/bin/cliOperations.d.ts +7 -7
- package/dist/bin/cliOperations.js +251 -37
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/copyDb.js +16 -16
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/deployRenderer.d.ts +47 -0
- package/dist/bin/deployRenderer.js +185 -0
- package/dist/bin/deployRenderer.js.map +1 -0
- package/dist/bin/harper.d.ts +2 -1
- package/dist/bin/harper.js +87 -26
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/install.d.ts +1 -1
- package/dist/bin/install.js +41 -4
- package/dist/bin/install.js.map +1 -1
- package/dist/bin/lite.js +3 -4
- package/dist/bin/lite.js.map +1 -1
- package/dist/bin/login.d.ts +4 -0
- package/dist/bin/login.js +123 -0
- package/dist/bin/login.js.map +1 -0
- package/dist/bin/logout.d.ts +4 -0
- package/dist/bin/logout.js +16 -0
- package/dist/bin/logout.js.map +1 -0
- package/dist/bin/mcp/client.d.ts +34 -0
- package/dist/bin/mcp/client.js +395 -0
- package/dist/bin/mcp/client.js.map +1 -0
- package/dist/bin/mcp/doctor.d.ts +11 -0
- package/dist/bin/mcp/doctor.js +193 -0
- package/dist/bin/mcp/doctor.js.map +1 -0
- package/dist/bin/mcp/index.d.ts +10 -0
- package/dist/bin/mcp/index.js +81 -0
- package/dist/bin/mcp/index.js.map +1 -0
- package/dist/bin/mcp/options.d.ts +33 -0
- package/dist/bin/mcp/options.js +113 -0
- package/dist/bin/mcp/options.js.map +1 -0
- package/dist/bin/mcp/printConfig.d.ts +14 -0
- package/dist/bin/mcp/printConfig.js +85 -0
- package/dist/bin/mcp/printConfig.js.map +1 -0
- package/dist/bin/multipartBuilder.d.ts +26 -0
- package/dist/bin/multipartBuilder.js +55 -0
- package/dist/bin/multipartBuilder.js.map +1 -0
- package/dist/bin/restart.d.ts +3 -2
- package/dist/bin/restart.js +82 -45
- package/dist/bin/restart.js.map +1 -1
- package/dist/bin/run.d.ts +13 -9
- package/dist/bin/run.js +111 -65
- package/dist/bin/run.js.map +1 -1
- package/dist/bin/sseConsumer.d.ts +24 -0
- package/dist/bin/sseConsumer.js +127 -0
- package/dist/bin/sseConsumer.js.map +1 -0
- package/dist/bin/status.d.ts +1 -1
- package/dist/bin/status.js +48 -11
- package/dist/bin/status.js.map +1 -1
- package/dist/bin/stop.d.ts +1 -1
- package/dist/bin/stop.js +43 -6
- package/dist/bin/stop.js.map +1 -1
- package/dist/bin/upgrade.js +14 -22
- package/dist/bin/upgrade.js.map +1 -1
- package/dist/components/Application.d.ts +29 -17
- package/dist/components/Application.js +134 -28
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.js +2 -2
- package/dist/components/ComponentV1.d.ts +1 -1
- package/dist/components/ComponentV1.js +5 -5
- package/dist/components/ComponentV1.js.map +1 -1
- package/dist/components/EntryHandler.d.ts +26 -3
- package/dist/components/EntryHandler.js +153 -13
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/OptionsWatcher.d.ts +7 -2
- package/dist/components/OptionsWatcher.js +72 -10
- package/dist/components/OptionsWatcher.js.map +1 -1
- package/dist/components/Scope.d.ts +11 -6
- package/dist/components/Scope.js +112 -12
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/anthropic/index.d.ts +40 -0
- package/dist/components/anthropic/index.js +428 -0
- package/dist/components/anthropic/index.js.map +1 -0
- package/dist/components/bedrock/index.d.ts +79 -0
- package/dist/components/bedrock/index.js +734 -0
- package/dist/components/bedrock/index.js.map +1 -0
- package/dist/components/componentLoader.d.ts +29 -0
- package/dist/components/componentLoader.js +65 -38
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/deployLifecycle.d.ts +39 -0
- package/dist/components/deployLifecycle.js +156 -0
- package/dist/components/deployLifecycle.js.map +1 -0
- package/dist/components/deploymentOperations.d.ts +19 -0
- package/dist/components/deploymentOperations.js +185 -0
- package/dist/components/deploymentOperations.js.map +1 -0
- package/dist/components/deploymentRecorder.d.ts +97 -0
- package/dist/components/deploymentRecorder.js +425 -0
- package/dist/components/deploymentRecorder.js.map +1 -0
- package/dist/components/deriveURLPath.d.ts +2 -2
- package/dist/components/deriveURLPath.js +2 -2
- package/dist/components/deriveURLPath.js.map +1 -1
- package/dist/components/mcp/adapters/fastify.d.ts +35 -0
- package/dist/components/mcp/adapters/fastify.js +66 -0
- package/dist/components/mcp/adapters/fastify.js.map +1 -0
- package/dist/components/mcp/adapters/harperHttp.d.ts +38 -0
- package/dist/components/mcp/adapters/harperHttp.js +78 -0
- package/dist/components/mcp/adapters/harperHttp.js.map +1 -0
- package/dist/components/mcp/audit.d.ts +27 -0
- package/dist/components/mcp/audit.js +73 -0
- package/dist/components/mcp/audit.js.map +1 -0
- package/dist/components/mcp/index.d.ts +47 -0
- package/dist/components/mcp/index.js +109 -0
- package/dist/components/mcp/index.js.map +1 -0
- package/dist/components/mcp/jsonrpc.d.ts +71 -0
- package/dist/components/mcp/jsonrpc.js +93 -0
- package/dist/components/mcp/jsonrpc.js.map +1 -0
- package/dist/components/mcp/lifecycle.d.ts +69 -0
- package/dist/components/mcp/lifecycle.js +79 -0
- package/dist/components/mcp/lifecycle.js.map +1 -0
- package/dist/components/mcp/listChanged.d.ts +24 -0
- package/dist/components/mcp/listChanged.js +257 -0
- package/dist/components/mcp/listChanged.js.map +1 -0
- package/dist/components/mcp/rateLimit.d.ts +25 -0
- package/dist/components/mcp/rateLimit.js +226 -0
- package/dist/components/mcp/rateLimit.js.map +1 -0
- package/dist/components/mcp/resources.d.ts +90 -0
- package/dist/components/mcp/resources.js +526 -0
- package/dist/components/mcp/resources.js.map +1 -0
- package/dist/components/mcp/session.d.ts +36 -0
- package/dist/components/mcp/session.js +170 -0
- package/dist/components/mcp/session.js.map +1 -0
- package/dist/components/mcp/sessionRegistry.d.ts +63 -0
- package/dist/components/mcp/sessionRegistry.js +124 -0
- package/dist/components/mcp/sessionRegistry.js.map +1 -0
- package/dist/components/mcp/toolRegistry.d.ts +151 -0
- package/dist/components/mcp/toolRegistry.js +177 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -0
- package/dist/components/mcp/tools/application.d.ts +72 -0
- package/dist/components/mcp/tools/application.js +660 -0
- package/dist/components/mcp/tools/application.js.map +1 -0
- package/dist/components/mcp/tools/operations.d.ts +23 -0
- package/dist/components/mcp/tools/operations.js +331 -0
- package/dist/components/mcp/tools/operations.js.map +1 -0
- package/dist/components/mcp/tools/schemas/derive.d.ts +50 -0
- package/dist/components/mcp/tools/schemas/derive.js +291 -0
- package/dist/components/mcp/tools/schemas/derive.js.map +1 -0
- package/dist/components/mcp/tools/schemas/operationDescriptions.d.ts +32 -0
- package/dist/components/mcp/tools/schemas/operationDescriptions.js +179 -0
- package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -0
- package/dist/components/mcp/tools/schemas/operations.d.ts +27 -0
- package/dist/components/mcp/tools/schemas/operations.js +299 -0
- package/dist/components/mcp/tools/schemas/operations.js.map +1 -0
- package/dist/components/mcp/transport.d.ts +38 -0
- package/dist/components/mcp/transport.js +467 -0
- package/dist/components/mcp/transport.js.map +1 -0
- package/dist/components/ollama/index.d.ts +46 -0
- package/dist/components/ollama/index.js +239 -0
- package/dist/components/ollama/index.js.map +1 -0
- package/dist/components/openai/index.d.ts +51 -0
- package/dist/components/openai/index.js +475 -0
- package/dist/components/openai/index.js.map +1 -0
- package/dist/components/operations.d.ts +6 -6
- package/dist/components/operations.js +205 -52
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.d.ts +2 -2
- package/dist/components/operationsValidation.js +13 -4
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/packageComponent.d.ts +28 -6
- package/dist/components/packageComponent.js +87 -26
- package/dist/components/packageComponent.js.map +1 -1
- package/dist/components/requestRestart.d.ts +1 -0
- package/dist/components/requestRestart.js +12 -1
- package/dist/components/requestRestart.js.map +1 -1
- package/dist/components/status/crossThread.d.ts +5 -1
- package/dist/components/status/crossThread.js +12 -5
- package/dist/components/status/crossThread.js.map +1 -1
- package/dist/components/status/errors.js +7 -7
- package/dist/config/RootConfigWatcher.d.ts +3 -0
- package/dist/config/RootConfigWatcher.js +52 -1
- package/dist/config/RootConfigWatcher.js.map +1 -1
- package/dist/config/configUtils.js +31 -8
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.js +1 -1
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/CreateAttributeObject.d.ts +3 -7
- package/dist/dataLayer/CreateAttributeObject.js +4 -3
- package/dist/dataLayer/CreateAttributeObject.js.map +1 -1
- package/dist/dataLayer/CreateTableObject.d.ts +2 -4
- package/dist/dataLayer/CreateTableObject.js +2 -1
- package/dist/dataLayer/CreateTableObject.js.map +1 -1
- package/dist/dataLayer/DataLayerObjects.d.ts +17 -16
- package/dist/dataLayer/DataLayerObjects.js +19 -5
- package/dist/dataLayer/DataLayerObjects.js.map +1 -1
- package/dist/dataLayer/DeleteBeforeObject.d.ts +3 -5
- package/dist/dataLayer/DeleteBeforeObject.js +2 -1
- package/dist/dataLayer/DeleteBeforeObject.js.map +1 -1
- package/dist/dataLayer/DeleteObject.d.ts +3 -7
- package/dist/dataLayer/DeleteObject.js +4 -3
- package/dist/dataLayer/DeleteObject.js.map +1 -1
- package/dist/dataLayer/DropAttributeObject.d.ts +2 -4
- package/dist/dataLayer/DropAttributeObject.js +2 -1
- package/dist/dataLayer/DropAttributeObject.js.map +1 -1
- package/dist/dataLayer/GetBackupObject.d.ts +3 -5
- package/dist/dataLayer/GetBackupObject.js +4 -3
- package/dist/dataLayer/GetBackupObject.js.map +1 -1
- package/dist/dataLayer/InsertObject.d.ts +3 -8
- package/dist/dataLayer/InsertObject.js +4 -3
- package/dist/dataLayer/InsertObject.js.map +1 -1
- package/dist/dataLayer/ReadAuditLogObject.d.ts +3 -7
- package/dist/dataLayer/ReadAuditLogObject.js +4 -3
- package/dist/dataLayer/ReadAuditLogObject.js.map +1 -1
- package/dist/dataLayer/SQLSearch.d.ts +68 -38
- package/dist/dataLayer/SQLSearch.js +140 -78
- package/dist/dataLayer/SQLSearch.js.map +1 -1
- package/dist/dataLayer/SearchByConditionsObject.d.ts +10 -58
- package/dist/dataLayer/SearchByConditionsObject.js +5 -7
- package/dist/dataLayer/SearchByConditionsObject.js.map +1 -1
- package/dist/dataLayer/SearchByHashObject.d.ts +3 -6
- package/dist/dataLayer/SearchByHashObject.js +2 -1
- package/dist/dataLayer/SearchByHashObject.js.map +1 -1
- package/dist/dataLayer/SearchObject.d.ts +3 -12
- package/dist/dataLayer/SearchObject.js +2 -1
- package/dist/dataLayer/SearchObject.js.map +1 -1
- package/dist/dataLayer/SqlSearchObject.d.ts +2 -4
- package/dist/dataLayer/SqlSearchObject.js +2 -1
- package/dist/dataLayer/SqlSearchObject.js.map +1 -1
- package/dist/dataLayer/UpdateObject.d.ts +3 -7
- package/dist/dataLayer/UpdateObject.js +4 -3
- package/dist/dataLayer/UpdateObject.js.map +1 -1
- package/dist/dataLayer/UpsertObject.d.ts +3 -7
- package/dist/dataLayer/UpsertObject.js +4 -3
- package/dist/dataLayer/UpsertObject.js.map +1 -1
- package/dist/dataLayer/bulkLoad.d.ts +4 -4
- package/dist/dataLayer/bulkLoad.js +122 -88
- package/dist/dataLayer/bulkLoad.js.map +1 -1
- package/dist/dataLayer/delete.d.ts +10 -11
- package/dist/dataLayer/delete.js +74 -39
- package/dist/dataLayer/delete.js.map +1 -1
- package/dist/dataLayer/export.d.ts +8 -8
- package/dist/dataLayer/export.js +90 -55
- package/dist/dataLayer/export.js.map +1 -1
- package/dist/dataLayer/getBackup.d.ts +4 -3
- package/dist/dataLayer/getBackup.js +43 -11
- package/dist/dataLayer/getBackup.js.map +1 -1
- package/dist/dataLayer/harperBridge/BridgeMethods.d.ts +39 -21
- package/dist/dataLayer/harperBridge/BridgeMethods.js +41 -20
- package/dist/dataLayer/harperBridge/BridgeMethods.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +2 -2
- package/dist/dataLayer/harperBridge/ResourceBridge.js +26 -25
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/TableSizeObject.d.ts +1 -0
- package/dist/dataLayer/harperBridge/TableSizeObject.js.map +1 -1
- package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.d.ts +4 -4
- package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/dist/dataLayer/harperBridge/harperBridge.d.ts +2 -3
- package/dist/dataLayer/harperBridge/harperBridge.js +38 -4
- package/dist/dataLayer/harperBridge/harperBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +7 -6
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +5 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +8 -8
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.d.ts +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +5 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/dist/dataLayer/hdbInfoController.d.ts +4 -8
- package/dist/dataLayer/hdbInfoController.js +66 -31
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/insert.d.ts +14 -26
- package/dist/dataLayer/insert.js +63 -28
- package/dist/dataLayer/insert.js.map +1 -1
- package/dist/dataLayer/readAuditLog.d.ts +1 -3
- package/dist/dataLayer/readAuditLog.js +45 -13
- package/dist/dataLayer/readAuditLog.js.map +1 -1
- package/dist/dataLayer/schema.d.ts +10 -10
- package/dist/dataLayer/schema.js +124 -89
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.d.ts +4 -4
- package/dist/dataLayer/schemaDescribe.js +78 -41
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/dataLayer/search.d.ts +4 -4
- package/dist/dataLayer/search.js +12 -13
- package/dist/dataLayer/search.js.map +1 -1
- package/dist/dataLayer/transaction.d.ts +1 -1
- package/dist/dataLayer/transaction.js +3 -4
- package/dist/dataLayer/transaction.js.map +1 -1
- package/dist/dataLayer/update.d.ts +2 -8
- package/dist/dataLayer/update.js +53 -18
- package/dist/dataLayer/update.js.map +1 -1
- package/dist/globals.d.ts +1 -1
- package/dist/globals.js +1 -0
- package/dist/globals.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +65 -0
- package/dist/launchServiceScripts/launchHarperDB.d.ts +1 -0
- package/dist/launchServiceScripts/launchHarperDB.js +3 -0
- package/dist/launchServiceScripts/launchHarperDB.js.map +1 -0
- package/dist/launchServiceScripts/utility/checkNodeVersion.js +3 -0
- package/dist/launchServiceScripts/utility/checkNodeVersion.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +14 -6
- package/dist/resources/DatabaseTransaction.js +39 -15
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/ErrorResource.d.ts +1 -1
- package/dist/resources/ErrorResource.js +3 -1
- package/dist/resources/ErrorResource.js.map +1 -1
- package/dist/resources/LMDBTransaction.d.ts +10 -13
- package/dist/resources/LMDBTransaction.js +18 -7
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/RecordEncoder.d.ts +10 -12
- package/dist/resources/RecordEncoder.js +38 -38
- package/dist/resources/RecordEncoder.js.map +1 -1
- package/dist/resources/RequestTarget.d.ts +1 -0
- package/dist/resources/RequestTarget.js.map +1 -1
- package/dist/resources/Resource.d.ts +25 -5
- package/dist/resources/Resource.js +43 -10
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +24 -5
- package/dist/resources/ResourceInterface.js +20 -0
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Resources.d.ts +3 -4
- package/dist/resources/Resources.js +7 -6
- package/dist/resources/Resources.js.map +1 -1
- package/dist/resources/RocksIndexStore.js +3 -0
- package/dist/resources/RocksIndexStore.js.map +1 -1
- package/dist/resources/RocksTransactionLogStore.d.ts +1 -1
- package/dist/resources/RocksTransactionLogStore.js +10 -3
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.d.ts +76 -329
- package/dist/resources/Table.js +306 -116
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/metadata.d.ts +1 -0
- package/dist/resources/analytics/metadata.js +1 -0
- package/dist/resources/analytics/metadata.js.map +1 -1
- package/dist/resources/analytics/read.d.ts +8 -1
- package/dist/resources/analytics/read.js +69 -8
- package/dist/resources/analytics/read.js.map +1 -1
- package/dist/resources/analytics/write.d.ts +28 -0
- package/dist/resources/analytics/write.js +232 -20
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.d.ts +18 -13
- package/dist/resources/auditStore.js +16 -8
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +16 -27
- package/dist/resources/blob.js +8 -8
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/dataLoader.d.ts +1 -1
- package/dist/resources/dataLoader.js +13 -13
- package/dist/resources/databases.d.ts +17 -0
- package/dist/resources/databases.js +175 -59
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/graphql.d.ts +1 -7
- package/dist/resources/graphql.js +267 -173
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +17 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +327 -59
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/indexes/vector.d.ts +1 -0
- package/dist/resources/indexes/vector.js +14 -0
- package/dist/resources/indexes/vector.js.map +1 -1
- package/dist/resources/jsonSchemaTypes.d.ts +60 -0
- package/dist/resources/jsonSchemaTypes.js +78 -0
- package/dist/resources/jsonSchemaTypes.js.map +1 -0
- package/dist/resources/loadEnv.d.ts +2 -5
- package/dist/resources/loadEnv.js +21 -18
- package/dist/resources/loadEnv.js.map +1 -1
- package/dist/resources/login.d.ts +2 -3
- package/dist/resources/login.js +5 -4
- package/dist/resources/login.js.map +1 -1
- package/dist/resources/models/Models.d.ts +45 -0
- package/dist/resources/models/Models.js +265 -0
- package/dist/resources/models/Models.js.map +1 -0
- package/dist/resources/models/TestBackend.d.ts +15 -0
- package/dist/resources/models/TestBackend.js +71 -0
- package/dist/resources/models/TestBackend.js.map +1 -0
- package/dist/resources/models/agentLoop.d.ts +125 -0
- package/dist/resources/models/agentLoop.js +746 -0
- package/dist/resources/models/agentLoop.js.map +1 -0
- package/dist/resources/models/analyticsTable.d.ts +65 -0
- package/dist/resources/models/analyticsTable.js +166 -0
- package/dist/resources/models/analyticsTable.js.map +1 -0
- package/dist/resources/models/backendHelpers.d.ts +57 -0
- package/dist/resources/models/backendHelpers.js +109 -0
- package/dist/resources/models/backendHelpers.js.map +1 -0
- package/dist/resources/models/backendRegistry.d.ts +36 -0
- package/dist/resources/models/backendRegistry.js +54 -0
- package/dist/resources/models/backendRegistry.js.map +1 -0
- package/dist/resources/models/bootstrap.d.ts +24 -0
- package/dist/resources/models/bootstrap.js +112 -0
- package/dist/resources/models/bootstrap.js.map +1 -0
- package/dist/resources/models/embedHook.d.ts +33 -0
- package/dist/resources/models/embedHook.js +127 -0
- package/dist/resources/models/embedHook.js.map +1 -0
- package/dist/resources/models/types.d.ts +301 -0
- package/dist/resources/models/types.js +11 -0
- package/dist/resources/models/types.js.map +1 -0
- package/dist/resources/openApi.js +74 -34
- package/dist/resources/openApi.js.map +1 -1
- package/dist/resources/replayLogs.js +7 -1
- package/dist/resources/replayLogs.js.map +1 -1
- package/dist/resources/replayLogsGuards.d.ts +9 -0
- package/dist/resources/replayLogsGuards.js +47 -0
- package/dist/resources/replayLogsGuards.js.map +1 -1
- package/dist/resources/roles.d.ts +1 -7
- package/dist/resources/roles.js +67 -71
- package/dist/resources/roles.js.map +1 -1
- package/dist/resources/search.d.ts +18 -1
- package/dist/resources/search.js +349 -140
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/tracked.d.ts +1 -1
- package/dist/resources/tracked.js +23 -15
- package/dist/resources/tracked.js.map +1 -1
- package/dist/resources/transaction.d.ts +1 -1
- package/dist/resources/transaction.js +1 -1
- package/dist/resources/transaction.js.map +1 -1
- package/dist/resources/transactionBroadcast.d.ts +1 -1
- package/dist/resources/transactionBroadcast.js.map +1 -1
- package/dist/security/auth.d.ts +1 -5
- package/dist/security/auth.js +34 -25
- package/dist/security/auth.js.map +1 -1
- package/dist/security/certificateVerification/crlVerification.js +7 -1
- package/dist/security/certificateVerification/crlVerification.js.map +1 -1
- package/dist/security/cryptoHash.d.ts +2 -2
- package/dist/security/cryptoHash.js +37 -5
- package/dist/security/cryptoHash.js.map +1 -1
- package/dist/security/data_objects/PermissionAttributeResponseObject.d.ts +3 -4
- package/dist/security/data_objects/PermissionAttributeResponseObject.js +4 -1
- package/dist/security/data_objects/PermissionAttributeResponseObject.js.map +1 -1
- package/dist/security/data_objects/PermissionResponseObject.d.ts +9 -9
- package/dist/security/data_objects/PermissionResponseObject.js +15 -8
- package/dist/security/data_objects/PermissionResponseObject.js.map +1 -1
- package/dist/security/data_objects/PermissionTableResponseObject.d.ts +5 -6
- package/dist/security/data_objects/PermissionTableResponseObject.js +6 -1
- package/dist/security/data_objects/PermissionTableResponseObject.js.map +1 -1
- package/dist/security/fastifyAuth.d.ts +2 -2
- package/dist/security/fastifyAuth.js +131 -22
- package/dist/security/fastifyAuth.js.map +1 -1
- package/dist/security/impersonation.js +15 -15
- package/dist/security/jsLoader.js +18 -5
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/keys.d.ts +45 -48
- package/dist/security/keys.js +160 -114
- package/dist/security/keys.js.map +1 -1
- package/dist/security/permissionsTranslator.js +2 -2
- package/dist/security/role.d.ts +5 -5
- package/dist/security/role.js +70 -35
- package/dist/security/role.js.map +1 -1
- package/dist/security/tokenAuthentication.d.ts +13 -0
- package/dist/security/tokenAuthentication.js +57 -27
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.js +74 -38
- package/dist/security/user.js.map +1 -1
- package/dist/server/DurableSubscriptionsSession.d.ts +4 -2
- package/dist/server/DurableSubscriptionsSession.js +71 -55
- package/dist/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/server/REST.d.ts +1 -8
- package/dist/server/REST.js +17 -16
- package/dist/server/REST.js.map +1 -1
- package/dist/server/Server.d.ts +23 -4
- package/dist/server/Server.js +1 -1
- package/dist/server/Server.js.map +1 -1
- package/dist/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/dist/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/dist/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/dist/server/fastifyRoutes.d.ts +1 -4
- package/dist/server/fastifyRoutes.js +34 -30
- package/dist/server/fastifyRoutes.js.map +1 -1
- package/dist/server/graphqlQuerying.d.ts +1 -1
- package/dist/server/graphqlQuerying.js +8 -7
- package/dist/server/graphqlQuerying.js.map +1 -1
- package/dist/server/http.d.ts +9 -4
- package/dist/server/http.js +523 -47
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +66 -15
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/JobObject.d.ts +3 -3
- package/dist/server/jobs/JobObject.js +53 -7
- package/dist/server/jobs/JobObject.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +64 -24
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobRunner.d.ts +7 -6
- package/dist/server/jobs/jobRunner.js +68 -30
- package/dist/server/jobs/jobRunner.js.map +1 -1
- package/dist/server/jobs/jobs.d.ts +18 -7
- package/dist/server/jobs/jobs.js +93 -61
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/loadRootComponents.js +1 -1
- package/dist/server/middlewareChain.d.ts +80 -0
- package/dist/server/middlewareChain.js +252 -0
- package/dist/server/middlewareChain.js.map +1 -0
- package/dist/server/mqtt.d.ts +1 -8
- package/dist/server/mqtt.js +22 -17
- package/dist/server/mqtt.js.map +1 -1
- package/dist/server/nodeName.js +46 -13
- package/dist/server/nodeName.js.map +1 -1
- package/dist/server/operationsServer.d.ts +2 -2
- package/dist/server/operationsServer.js +106 -33
- package/dist/server/operationsServer.js.map +1 -1
- package/dist/server/serverHelpers/Headers.d.ts +4 -4
- package/dist/server/serverHelpers/Headers.js +2 -0
- package/dist/server/serverHelpers/Headers.js.map +1 -1
- package/dist/server/serverHelpers/JSONStream.d.ts +7 -1
- package/dist/server/serverHelpers/JSONStream.js +12 -3
- package/dist/server/serverHelpers/JSONStream.js.map +1 -1
- package/dist/server/serverHelpers/Request.d.ts +106 -8
- package/dist/server/serverHelpers/Request.js +370 -9
- package/dist/server/serverHelpers/Request.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.d.ts +1 -1
- package/dist/server/serverHelpers/contentTypes.js +36 -7
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/multipartParser.d.ts +21 -0
- package/dist/server/serverHelpers/multipartParser.js +142 -0
- package/dist/server/serverHelpers/multipartParser.js.map +1 -0
- package/dist/server/serverHelpers/progressEmitter.d.ts +25 -0
- package/dist/server/serverHelpers/progressEmitter.js +103 -0
- package/dist/server/serverHelpers/progressEmitter.js.map +1 -0
- package/dist/server/serverHelpers/serverHandlers.d.ts +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +38 -7
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +4 -2
- package/dist/server/serverHelpers/serverUtilities.js +97 -93
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/static.js +8 -5
- package/dist/server/static.js.map +1 -1
- package/dist/server/status/index.js +3 -3
- package/dist/server/storageReclamation.d.ts +10 -0
- package/dist/server/storageReclamation.js +68 -9
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/itc.js +7 -4
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +1 -1
- package/dist/server/threads/manageThreads.js +110 -26
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.d.ts +0 -1
- package/dist/server/threads/socketRouter.js +8 -271
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadServer.d.ts +1 -0
- package/dist/server/threads/threadServer.js +360 -118
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/server/threads/workerProcessGuard.d.ts +42 -0
- package/dist/server/threads/workerProcessGuard.js +114 -0
- package/dist/server/threads/workerProcessGuard.js.map +1 -0
- package/dist/server/throttle.js +17 -0
- package/dist/server/throttle.js.map +1 -1
- package/dist/sqlTranslator/SelectValidator.d.ts +21 -24
- package/dist/sqlTranslator/SelectValidator.js +86 -47
- package/dist/sqlTranslator/SelectValidator.js.map +1 -1
- package/dist/sqlTranslator/alasqlFunctionImporter.d.ts +6 -2
- package/dist/sqlTranslator/alasqlFunctionImporter.js +40 -3
- package/dist/sqlTranslator/alasqlFunctionImporter.js.map +1 -1
- package/dist/sqlTranslator/deleteTranslator.d.ts +4 -7
- package/dist/sqlTranslator/deleteTranslator.js +48 -14
- package/dist/sqlTranslator/deleteTranslator.js.map +1 -1
- package/dist/sqlTranslator/index.d.ts +10 -9
- package/dist/sqlTranslator/index.js +69 -30
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/sqlTranslator/sql_statement_bucket.d.ts +10 -10
- package/dist/sqlTranslator/sql_statement_bucket.js +55 -13
- package/dist/sqlTranslator/sql_statement_bucket.js.map +1 -1
- package/dist/upgrade/UpgradeObjects.d.ts +2 -3
- package/dist/upgrade/UpgradeObjects.js +37 -4
- package/dist/upgrade/UpgradeObjects.js.map +1 -1
- package/dist/upgrade/directives/5-1-0.d.ts +6 -0
- package/dist/upgrade/directives/5-1-0.js +114 -0
- package/dist/upgrade/directives/5-1-0.js.map +1 -0
- package/dist/upgrade/directives/directivesController.d.ts +10 -10
- package/dist/upgrade/directives/directivesController.js +52 -11
- package/dist/upgrade/directives/directivesController.js.map +1 -1
- package/dist/upgrade/directivesManager.d.ts +1 -1
- package/dist/upgrade/directivesManager.js +53 -18
- package/dist/upgrade/directivesManager.js.map +1 -1
- package/dist/upgrade/upgradePrompt.d.ts +2 -8
- package/dist/upgrade/upgradePrompt.js +55 -60
- package/dist/upgrade/upgradePrompt.js.map +1 -1
- package/dist/upgrade/upgradeUtilities.d.ts +1 -1
- package/dist/upgrade/upgradeUtilities.js +37 -5
- package/dist/upgrade/upgradeUtilities.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.d.ts +1 -1
- package/dist/utility/OperationFunctionCaller.js +45 -10
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/assignCmdEnvVariables.d.ts +1 -2
- package/dist/utility/assignCmdEnvVariables.js +8 -4
- package/dist/utility/assignCmdEnvVariables.js.map +1 -1
- package/dist/utility/common_utils.d.ts +80 -77
- package/dist/utility/common_utils.js +140 -79
- package/dist/utility/common_utils.js.map +1 -1
- package/dist/utility/environment/environmentManager.d.ts +12 -11
- package/dist/utility/environment/environmentManager.js +75 -29
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/environment/systemInformation.d.ts +4 -0
- package/dist/utility/environment/systemInformation.js +27 -16
- package/dist/utility/environment/systemInformation.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +192 -168
- package/dist/utility/errors/commonErrors.js +49 -18
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +37 -51
- package/dist/utility/errors/hdbError.js +65 -26
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/expandEnvVar.d.ts +61 -0
- package/dist/utility/expandEnvVar.js +113 -0
- package/dist/utility/expandEnvVar.js.map +1 -0
- package/dist/utility/functions/geo.js +2 -2
- package/dist/utility/functions/sql/alaSQLExtension.js +1 -1
- package/dist/utility/globalSchema.d.ts +13 -4
- package/dist/utility/globalSchema.js +14 -11
- package/dist/utility/globalSchema.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +54 -1
- package/dist/utility/hdbTerms.js +54 -1
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/install/checkJWTTokensExist.js +1 -1
- package/dist/utility/install/installer.d.ts +9 -12
- package/dist/utility/install/installer.js +117 -54
- package/dist/utility/install/installer.js.map +1 -1
- package/dist/utility/installation.js +3 -3
- package/dist/utility/lmdb/DBIDefinition.d.ts +4 -4
- package/dist/utility/lmdb/DBIDefinition.js +5 -1
- package/dist/utility/lmdb/DBIDefinition.js.map +1 -1
- package/dist/utility/lmdb/DeleteRecordsResponseObject.d.ts +3 -6
- package/dist/utility/lmdb/DeleteRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/DeleteRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/InsertRecordsResponseObject.d.ts +3 -5
- package/dist/utility/lmdb/InsertRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/InsertRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/OpenDBIObject.d.ts +12 -15
- package/dist/utility/lmdb/OpenDBIObject.js +68 -6
- package/dist/utility/lmdb/OpenDBIObject.js.map +1 -1
- package/dist/utility/lmdb/OpenEnvironmentObject.d.ts +5 -8
- package/dist/utility/lmdb/OpenEnvironmentObject.js +52 -4
- package/dist/utility/lmdb/OpenEnvironmentObject.js.map +1 -1
- package/dist/utility/lmdb/UpdateRecordsResponseObject.d.ts +3 -6
- package/dist/utility/lmdb/UpdateRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/UpdateRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/UpsertRecordsResponseObject.d.ts +3 -5
- package/dist/utility/lmdb/UpsertRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/UpsertRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/cleanLMDBMap.d.ts +1 -1
- package/dist/utility/lmdb/cleanLMDBMap.js +44 -7
- package/dist/utility/lmdb/cleanLMDBMap.js.map +1 -1
- package/dist/utility/lmdb/commonUtility.d.ts +8 -9
- package/dist/utility/lmdb/commonUtility.js +46 -17
- package/dist/utility/lmdb/commonUtility.js.map +1 -1
- package/dist/utility/lmdb/deleteUtility.d.ts +2 -3
- package/dist/utility/lmdb/deleteUtility.js +51 -16
- package/dist/utility/lmdb/deleteUtility.js.map +1 -1
- package/dist/utility/lmdb/environmentUtility.d.ts +69 -36
- package/dist/utility/lmdb/environmentUtility.js +91 -51
- package/dist/utility/lmdb/environmentUtility.js.map +1 -1
- package/dist/utility/lmdb/searchCursorFunctions.d.ts +19 -19
- package/dist/utility/lmdb/searchCursorFunctions.js +46 -14
- package/dist/utility/lmdb/searchCursorFunctions.js.map +1 -1
- package/dist/utility/lmdb/searchUtility.d.ts +142 -73
- package/dist/utility/lmdb/searchUtility.js +91 -55
- package/dist/utility/lmdb/searchUtility.js.map +1 -1
- package/dist/utility/lmdb/terms.d.ts +34 -34
- package/dist/utility/lmdb/terms.js +12 -22
- package/dist/utility/lmdb/terms.js.map +1 -1
- package/dist/utility/lmdb/writeUtility.d.ts +3 -6
- package/dist/utility/lmdb/writeUtility.js +61 -28
- package/dist/utility/lmdb/writeUtility.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +87 -103
- package/dist/utility/logging/harper_logger.js +177 -82
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/logging/logRotator.d.ts +2 -10
- package/dist/utility/logging/logRotator.js +67 -32
- package/dist/utility/logging/logRotator.js.map +1 -1
- package/dist/utility/logging/logger.js +4 -4
- package/dist/utility/logging/readLog.d.ts +1 -1
- package/dist/utility/logging/readLog.js +54 -17
- package/dist/utility/logging/readLog.js.map +1 -1
- package/dist/utility/logging/transactionLog.d.ts +2 -2
- package/dist/utility/logging/transactionLog.js +51 -16
- package/dist/utility/logging/transactionLog.js.map +1 -1
- package/dist/utility/mount_hdb.d.ts +1 -2
- package/dist/utility/mount_hdb.js +54 -17
- package/dist/utility/mount_hdb.js.map +1 -1
- package/dist/utility/npmUtilities.d.ts +1 -1
- package/dist/utility/npmUtilities.js +54 -19
- package/dist/utility/npmUtilities.js.map +1 -1
- package/dist/utility/operation_authorization.d.ts +36 -9
- package/dist/utility/operation_authorization.js +135 -86
- package/dist/utility/operation_authorization.js.map +1 -1
- package/dist/utility/packageUtils.d.ts +0 -2
- package/dist/utility/packageUtils.js +7 -17
- package/dist/utility/packageUtils.js.map +1 -1
- package/dist/utility/password.js +2 -2
- package/dist/utility/processManagement/processManagement.js +2 -2
- package/dist/utility/processManagement/servicesConfig.js +1 -1
- package/dist/utility/signalling.d.ts +2 -2
- package/dist/utility/signalling.js +51 -16
- package/dist/utility/signalling.js.map +1 -1
- package/dist/utility/watcherFallback.d.ts +36 -0
- package/dist/utility/watcherFallback.js +73 -0
- package/dist/utility/watcherFallback.js.map +1 -0
- package/dist/validation/analyticsValidator.d.ts +1 -0
- package/dist/validation/analyticsValidator.js +80 -0
- package/dist/validation/analyticsValidator.js.map +1 -0
- package/dist/validation/bulkDeleteValidator.d.ts +1 -2
- package/dist/validation/bulkDeleteValidator.js +49 -11
- package/dist/validation/bulkDeleteValidator.js.map +1 -1
- package/dist/validation/check_permissions.d.ts +1 -2
- package/dist/validation/check_permissions.js +38 -3
- package/dist/validation/check_permissions.js.map +1 -1
- package/dist/validation/common_validators.d.ts +20 -20
- package/dist/validation/common_validators.js +62 -31
- package/dist/validation/common_validators.js.map +1 -1
- package/dist/validation/configValidator.d.ts +4 -4
- package/dist/validation/configValidator.js +189 -54
- package/dist/validation/configValidator.js.map +1 -1
- package/dist/validation/deleteValidator.d.ts +1 -2
- package/dist/validation/deleteValidator.js +49 -11
- package/dist/validation/deleteValidator.js.map +1 -1
- package/dist/validation/fileLoadValidator.d.ts +4 -4
- package/dist/validation/fileLoadValidator.js +67 -32
- package/dist/validation/fileLoadValidator.js.map +1 -1
- package/dist/validation/insertValidator.d.ts +1 -2
- package/dist/validation/insertValidator.js +48 -10
- package/dist/validation/insertValidator.js.map +1 -1
- package/dist/validation/installValidator.d.ts +2 -2
- package/dist/validation/installValidator.js +47 -10
- package/dist/validation/installValidator.js.map +1 -1
- package/dist/validation/readLogValidator.d.ts +1 -2
- package/dist/validation/readLogValidator.js +60 -22
- package/dist/validation/readLogValidator.js.map +1 -1
- package/dist/validation/role_validation.d.ts +3 -3
- package/dist/validation/role_validation.js +55 -19
- package/dist/validation/role_validation.js.map +1 -1
- package/dist/validation/schemaMetadataValidator.d.ts +3 -4
- package/dist/validation/schemaMetadataValidator.js +11 -12
- package/dist/validation/schemaMetadataValidator.js.map +1 -1
- package/dist/validation/searchValidator.d.ts +1 -2
- package/dist/validation/searchValidator.js +82 -43
- package/dist/validation/searchValidator.js.map +1 -1
- package/dist/validation/statusValidator.d.ts +1 -1
- package/dist/validation/transactionLogValidator.d.ts +3 -3
- package/dist/validation/transactionLogValidator.js +52 -17
- package/dist/validation/transactionLogValidator.js.map +1 -1
- package/dist/validation/user_validation.d.ts +3 -3
- package/dist/validation/user_validation.js +38 -6
- package/dist/validation/user_validation.js.map +1 -1
- package/dist/validation/validationWrapper.d.ts +3 -3
- package/dist/validation/validationWrapper.js +4 -5
- package/dist/validation/validationWrapper.js.map +1 -1
- package/index.ts +5 -0
- package/json/systemSchema.json +65 -0
- package/launchServiceScripts/utility/checkNodeVersion.js +2 -0
- package/package.json +38 -24
- package/resources/DESIGN.md +98 -0
- package/resources/DatabaseTransaction.ts +58 -30
- package/resources/ErrorResource.ts +2 -1
- package/resources/LMDBTransaction.ts +38 -29
- package/resources/RecordEncoder.ts +41 -39
- package/resources/RequestTarget.ts +2 -0
- package/resources/Resource.ts +96 -56
- package/resources/ResourceInterface.ts +44 -21
- package/resources/Resources.ts +8 -8
- package/resources/RocksIndexStore.ts +3 -0
- package/resources/RocksTransactionLogStore.ts +13 -4
- package/resources/Table.ts +440 -223
- package/resources/analytics/metadata.ts +1 -0
- package/resources/analytics/read.ts +99 -10
- package/resources/analytics/write.ts +240 -17
- package/resources/auditStore.ts +30 -19
- package/resources/blob.ts +53 -53
- package/resources/dataLoader.ts +4 -4
- package/resources/databases.ts +208 -74
- package/resources/graphql.ts +267 -165
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +310 -65
- package/resources/indexes/vector.ts +17 -0
- package/resources/jsonSchemaTypes.ts +102 -0
- package/resources/loadEnv.ts +21 -17
- package/resources/login.ts +5 -3
- package/resources/models/Models.ts +304 -0
- package/resources/models/TestBackend.ts +83 -0
- package/resources/models/agentLoop.ts +895 -0
- package/resources/models/analyticsTable.ts +199 -0
- package/resources/models/backendHelpers.ts +116 -0
- package/resources/models/backendRegistry.ts +66 -0
- package/resources/models/bootstrap.ts +135 -0
- package/resources/models/embedHook.ts +138 -0
- package/resources/models/types.ts +296 -0
- package/resources/openApi.ts +65 -31
- package/resources/replayLogs.ts +20 -9
- package/resources/replayLogsGuards.ts +45 -0
- package/resources/roles.ts +62 -67
- package/resources/search.ts +355 -135
- package/resources/tracked.ts +18 -9
- package/resources/transaction.ts +8 -8
- package/resources/transactionBroadcast.ts +3 -3
- package/schema.graphql +7 -0
- package/security/auth.ts +35 -26
- package/security/certificateVerification/crlVerification.ts +11 -4
- package/security/{cryptoHash.js → cryptoHash.ts} +3 -8
- package/security/data_objects/{PermissionAttributeResponseObject.js → PermissionAttributeResponseObject.ts} +4 -4
- package/security/data_objects/{PermissionResponseObject.js → PermissionResponseObject.ts} +12 -11
- package/security/data_objects/{PermissionTableResponseObject.js → PermissionTableResponseObject.ts} +6 -4
- package/security/{fastifyAuth.js → fastifyAuth.ts} +93 -20
- package/security/impersonation.ts +3 -3
- package/security/jsLoader.ts +22 -8
- package/security/{keys.js → keys.ts} +113 -121
- package/security/permissionsTranslator.js +2 -2
- package/security/{role.js → role.ts} +26 -33
- package/security/tokenAuthentication.ts +34 -7
- package/security/user.ts +26 -22
- package/server/DESIGN.md +139 -0
- package/server/DurableSubscriptionsSession.ts +67 -50
- package/server/REST.ts +120 -107
- package/server/Server.ts +31 -12
- package/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/server/fastifyRoutes.ts +37 -33
- package/server/graphqlQuerying.ts +6 -5
- package/server/http.ts +517 -26
- package/server/itc/serverHandlers.js +75 -14
- package/server/jobs/{JobObject.js → JobObject.ts} +13 -6
- package/server/jobs/{jobProcess.js → jobProcess.ts} +20 -16
- package/server/jobs/{jobRunner.js → jobRunner.ts} +20 -21
- package/server/jobs/{jobs.js → jobs.ts} +41 -44
- package/server/loadRootComponents.js +1 -1
- package/server/middlewareChain.ts +270 -0
- package/server/mqtt.ts +35 -26
- package/server/nodeName.ts +3 -1
- package/server/operationsServer.ts +85 -10
- package/server/serverHelpers/Headers.ts +10 -8
- package/server/serverHelpers/JSONStream.ts +15 -5
- package/server/serverHelpers/Request.ts +370 -13
- package/server/serverHelpers/contentTypes.ts +42 -11
- package/server/serverHelpers/multipartParser.ts +152 -0
- package/server/serverHelpers/progressEmitter.ts +110 -0
- package/server/serverHelpers/serverHandlers.js +43 -7
- package/server/serverHelpers/serverUtilities.ts +40 -30
- package/server/static.ts +9 -6
- package/server/status/index.ts +2 -2
- package/server/storageReclamation.ts +39 -2
- package/server/threads/itc.js +7 -4
- package/server/threads/manageThreads.js +100 -26
- package/server/threads/socketRouter.ts +12 -275
- package/server/threads/threadServer.js +345 -105
- package/server/threads/workerProcessGuard.ts +93 -0
- package/server/throttle.ts +18 -0
- package/sqlTranslator/{SelectValidator.js → SelectValidator.ts} +41 -49
- package/sqlTranslator/{alasqlFunctionImporter.js → alasqlFunctionImporter.ts} +5 -5
- package/sqlTranslator/{deleteTranslator.js → deleteTranslator.ts} +13 -18
- package/sqlTranslator/{index.js → index.ts} +30 -33
- package/sqlTranslator/{sql_statement_bucket.js → sql_statement_bucket.ts} +49 -20
- package/static/README.md +10 -9
- package/static/defaultConfig.yaml +0 -1
- package/studio/web/assets/{index-CybLScHg.js → index-Dqr9oVhe.js} +5 -5
- package/studio/web/assets/index-Dqr9oVhe.js.map +1 -0
- package/studio/web/assets/{index.lazy-DKx5-iXF.js → index.lazy-CpKcKb7M.js} +2 -2
- package/studio/web/assets/{index.lazy-DKx5-iXF.js.map → index.lazy-CpKcKb7M.js.map} +1 -1
- package/studio/web/assets/{profile-BOjes0Wl.js → profile-C1cujdsg.js} +2 -2
- package/studio/web/assets/{profile-BOjes0Wl.js.map → profile-C1cujdsg.js.map} +1 -1
- package/studio/web/assets/{status-EWKUIrjT.js → status-CTiIIQlY.js} +2 -2
- package/studio/web/assets/{status-EWKUIrjT.js.map → status-CTiIIQlY.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/upgrade/{UpgradeObjects.js → UpgradeObjects.ts} +3 -6
- package/upgrade/directives/5-1-0.ts +89 -0
- package/upgrade/directives/{directivesController.js → directivesController.ts} +16 -16
- package/upgrade/{directivesManager.js → directivesManager.ts} +7 -11
- package/upgrade/{upgradePrompt.js → upgradePrompt.ts} +6 -54
- package/upgrade/{upgradeUtilities.js → upgradeUtilities.ts} +3 -7
- package/utility/{OperationFunctionCaller.js → OperationFunctionCaller.ts} +7 -7
- package/utility/{assignCmdEnvVariables.js → assignCmdEnvVariables.ts} +6 -8
- package/utility/{common_utils.js → common_utils.ts} +113 -139
- package/utility/environment/{environmentManager.js → environmentManager.ts} +34 -33
- package/utility/environment/systemInformation.ts +18 -4
- package/utility/errors/{commonErrors.js → commonErrors.ts} +9 -9
- package/utility/errors/{hdbError.js → hdbError.ts} +39 -45
- package/utility/expandEnvVar.ts +110 -0
- package/utility/functions/geo.js +2 -2
- package/utility/functions/sql/alaSQLExtension.js +1 -1
- package/utility/globalSchema.ts +30 -0
- package/utility/hdbTerms.ts +54 -1
- package/utility/install/checkJWTTokensExist.js +1 -1
- package/utility/install/{installer.js → installer.ts} +66 -42
- package/utility/installation.ts +2 -2
- package/utility/lmdb/{DBIDefinition.js → DBIDefinition.ts} +4 -1
- package/utility/lmdb/{DeleteRecordsResponseObject.js → DeleteRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{InsertRecordsResponseObject.js → InsertRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/OpenDBIObject.ts +57 -0
- package/utility/lmdb/{OpenEnvironmentObject.js → OpenEnvironmentObject.ts} +19 -6
- package/utility/lmdb/{UpdateRecordsResponseObject.js → UpdateRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{UpsertRecordsResponseObject.js → UpsertRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{cleanLMDBMap.js → cleanLMDBMap.ts} +5 -5
- package/utility/lmdb/{commonUtility.js → commonUtility.ts} +13 -21
- package/utility/lmdb/{deleteUtility.js → deleteUtility.ts} +8 -12
- package/utility/lmdb/{environmentUtility.js → environmentUtility.ts} +43 -52
- package/utility/lmdb/{searchCursorFunctions.js → searchCursorFunctions.ts} +12 -26
- package/utility/lmdb/{searchUtility.js → searchUtility.ts} +75 -64
- package/utility/lmdb/{terms.js → terms.ts} +10 -23
- package/utility/lmdb/{writeUtility.js → writeUtility.ts} +37 -22
- package/utility/logging/{harper_logger.js → harper_logger.ts} +137 -90
- package/utility/logging/{logRotator.js → logRotator.ts} +15 -18
- package/utility/logging/logger.ts +1 -1
- package/utility/logging/{readLog.js → readLog.ts} +19 -19
- package/utility/logging/{transactionLog.js → transactionLog.ts} +10 -14
- package/utility/{mount_hdb.js → mount_hdb.ts} +15 -16
- package/utility/{npmUtilities.js → npmUtilities.ts} +14 -17
- package/utility/{operation_authorization.js → operation_authorization.ts} +173 -124
- package/utility/packageUtils.js +7 -16
- package/utility/password.ts +1 -1
- package/utility/processManagement/processManagement.js +2 -2
- package/utility/processManagement/servicesConfig.js +1 -1
- package/utility/{signalling.js → signalling.ts} +6 -11
- package/utility/watcherFallback.ts +74 -0
- package/validation/analyticsValidator.ts +44 -0
- package/validation/{bulkDeleteValidator.js → bulkDeleteValidator.ts} +5 -5
- package/validation/{check_permissions.js → check_permissions.ts} +3 -3
- package/validation/{common_validators.js → common_validators.ts} +12 -24
- package/validation/{configValidator.js → configValidator.ts} +114 -18
- package/validation/{deleteValidator.js → deleteValidator.ts} +5 -5
- package/validation/{fileLoadValidator.js → fileLoadValidator.ts} +12 -19
- package/validation/{insertValidator.js → insertValidator.ts} +5 -5
- package/validation/{installValidator.js → installValidator.ts} +8 -8
- package/validation/{readLogValidator.js → readLogValidator.ts} +10 -10
- package/validation/{role_validation.js → role_validation.ts} +26 -32
- package/validation/{schemaMetadataValidator.js → schemaMetadataValidator.ts} +5 -11
- package/validation/{searchValidator.js → searchValidator.ts} +12 -11
- package/validation/statusValidator.ts +1 -1
- package/validation/{transactionLogValidator.js → transactionLogValidator.ts} +4 -9
- package/validation/{user_validation.js → user_validation.ts} +4 -10
- package/validation/{validationWrapper.js → validationWrapper.ts} +3 -9
- package/bin/cliOperations.js +0 -159
- package/bin/lite.js +0 -5
- package/dataLayer/harperBridge/BridgeMethods.js +0 -85
- package/studio/web/assets/index-CybLScHg.js.map +0 -1
- package/utility/globalSchema.js +0 -35
- package/utility/lmdb/OpenDBIObject.js +0 -31
|
@@ -4,9 +4,112 @@ exports.HierarchicalNavigableSmallWorld = void 0;
|
|
|
4
4
|
const vector_ts_1 = require("./vector.js");
|
|
5
5
|
const msgpackr_1 = require("msgpackr");
|
|
6
6
|
const logger_ts_1 = require("../../utility/logging/logger.js");
|
|
7
|
-
const
|
|
7
|
+
const hdbError_ts_1 = require("../../utility/errors/hdbError.js");
|
|
8
8
|
const rocksdb_js_1 = require("@harperfast/rocksdb-js");
|
|
9
9
|
const logger = (0, logger_ts_1.loggerWithTag)('HNSW');
|
|
10
|
+
// Optional int8 scalar quantization of stored vectors, enabled per-index via the
|
|
11
|
+
// schema directive: `@indexed(type: "HNSW", quantization: "int8")`. The stored
|
|
12
|
+
// graph node holds the vector as a compact int8 `bin` plus a per-vector `scale`,
|
|
13
|
+
// roughly a 5x size reduction over the float32 array and ~10x cheaper to decode
|
|
14
|
+
// (a single typed-array view instead of decoding 768 individually-tagged floats
|
|
15
|
+
// into a boxed Array). The full-precision vector still lives on the record, so
|
|
16
|
+
// only graph navigation is approximate; quantization recall loss is ~1%.
|
|
17
|
+
//
|
|
18
|
+
// Decode auto-detects the stored format (number[] = float, bin = int8), so an
|
|
19
|
+
// int8-enabled index transparently reads legacy float nodes written before the
|
|
20
|
+
// option was set.
|
|
21
|
+
/** Symmetric int8 scalar-quantize a float vector. scale = max|component| / 127. */
|
|
22
|
+
function quantizeInt8(vector) {
|
|
23
|
+
let max = 0;
|
|
24
|
+
for (let i = 0; i < vector.length; i++) {
|
|
25
|
+
const a = vector[i] < 0 ? -vector[i] : vector[i];
|
|
26
|
+
if (a > max)
|
|
27
|
+
max = a;
|
|
28
|
+
}
|
|
29
|
+
const scale = max / 127 || 1;
|
|
30
|
+
const inv = 1 / scale;
|
|
31
|
+
const q = new Int8Array(vector.length);
|
|
32
|
+
// clamp guards against a float-rounding edge landing on 128 (which Int8Array would wrap to -128)
|
|
33
|
+
for (let i = 0; i < vector.length; i++)
|
|
34
|
+
q[i] = Math.max(-127, Math.min(127, Math.round(vector[i] * inv)));
|
|
35
|
+
return { bytes: Buffer.from(q.buffer, q.byteOffset, q.byteLength), scale };
|
|
36
|
+
}
|
|
37
|
+
/** Reconstruct an approximate float array from an int8 vector + scale. */
|
|
38
|
+
function dequantizeInt8(q, scale) {
|
|
39
|
+
const out = new Array(q.length);
|
|
40
|
+
for (let i = 0; i < q.length; i++)
|
|
41
|
+
out[i] = q[i] * scale;
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
// Auto-scaled search ef, used only when an index does not explicitly configure efConstructionSearch
|
|
45
|
+
// and a query does not pass its own ef. A fixed ef makes recall decay as the graph grows (it explores
|
|
46
|
+
// a shrinking fraction of the graph), so ef grows with sqrt(node count), capped to bound search cost.
|
|
47
|
+
// Constants from a recall/latency-vs-N sweep (768-dim cosine, int8): ef≈400 holds ~0.8 recall@10 from
|
|
48
|
+
// 5K–30K, and the recall/latency tradeoff is steep (ef 800 at 30K ≈ 0.92 recall but ~2s p50), so the
|
|
49
|
+
// cap deliberately favors latency — apps wanting higher recall set efConstructionSearch or a per-query
|
|
50
|
+
// ef. Tune as graph build quality / larger-N data improves.
|
|
51
|
+
const AUTO_EF_BASE = 100;
|
|
52
|
+
const AUTO_EF_REF = 1000;
|
|
53
|
+
const AUTO_EF_MAX = 512;
|
|
54
|
+
function autoScaleEf(nodeCount) {
|
|
55
|
+
const scaled = Math.round(AUTO_EF_BASE * Math.sqrt(Math.max(1, nodeCount / AUTO_EF_REF)));
|
|
56
|
+
return Math.min(AUTO_EF_MAX, Math.max(AUTO_EF_BASE, scaled));
|
|
57
|
+
}
|
|
58
|
+
class MinHeap {
|
|
59
|
+
data = [];
|
|
60
|
+
get size() {
|
|
61
|
+
return this.data.length;
|
|
62
|
+
}
|
|
63
|
+
push(item) {
|
|
64
|
+
this.data.push(item);
|
|
65
|
+
let i = this.data.length - 1;
|
|
66
|
+
while (i > 0) {
|
|
67
|
+
const p = (i - 1) >> 1;
|
|
68
|
+
if (this.data[p].distance <= this.data[i].distance)
|
|
69
|
+
break;
|
|
70
|
+
const tmp = this.data[p];
|
|
71
|
+
this.data[p] = this.data[i];
|
|
72
|
+
this.data[i] = tmp;
|
|
73
|
+
i = p;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
pop() {
|
|
77
|
+
if (this.data.length === 0)
|
|
78
|
+
return undefined;
|
|
79
|
+
const top = this.data[0];
|
|
80
|
+
const last = this.data.pop();
|
|
81
|
+
if (this.data.length > 0) {
|
|
82
|
+
this.data[0] = last;
|
|
83
|
+
let i = 0;
|
|
84
|
+
for (;;) {
|
|
85
|
+
const l = 2 * i + 1, r = l + 1;
|
|
86
|
+
let min = i;
|
|
87
|
+
if (l < this.data.length && this.data[l].distance < this.data[min].distance)
|
|
88
|
+
min = l;
|
|
89
|
+
if (r < this.data.length && this.data[r].distance < this.data[min].distance)
|
|
90
|
+
min = r;
|
|
91
|
+
if (min === i)
|
|
92
|
+
break;
|
|
93
|
+
const tmp = this.data[min];
|
|
94
|
+
this.data[min] = this.data[i];
|
|
95
|
+
this.data[i] = tmp;
|
|
96
|
+
i = min;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return top;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function bisectInsert(arr, distance) {
|
|
103
|
+
let lo = 0, hi = arr.length;
|
|
104
|
+
while (lo < hi) {
|
|
105
|
+
const mid = (lo + hi) >> 1;
|
|
106
|
+
if (arr[mid].distance <= distance)
|
|
107
|
+
lo = mid + 1;
|
|
108
|
+
else
|
|
109
|
+
hi = mid;
|
|
110
|
+
}
|
|
111
|
+
return lo;
|
|
112
|
+
}
|
|
10
113
|
/**
|
|
11
114
|
* Implementation of a vector index for Harper, using hierarchical navigable small world graphs.
|
|
12
115
|
*/
|
|
@@ -25,6 +128,10 @@ const MAX_LEVEL = 10; // should give good high-level skip list performance up to
|
|
|
25
128
|
*/
|
|
26
129
|
class HierarchicalNavigableSmallWorld {
|
|
27
130
|
static useObjectStore = true;
|
|
131
|
+
// Index options that only affect search, not the stored graph — changing them must not trigger a
|
|
132
|
+
// reindex (databases.ts persists the new value but skips rebuilding). efConstructionSearch is the
|
|
133
|
+
// search-time candidate-list size; the build uses efConstruction/M/distance, which are structural.
|
|
134
|
+
static searchOnlyOptions = ['efConstructionSearch'];
|
|
28
135
|
indexStore;
|
|
29
136
|
M = 16; // max number of connections per layer
|
|
30
137
|
efConstruction = 100; // size of dynamic candidate list
|
|
@@ -36,6 +143,12 @@ class HierarchicalNavigableSmallWorld {
|
|
|
36
143
|
nodesVisitedCount = 0;
|
|
37
144
|
idIncrementer;
|
|
38
145
|
distance;
|
|
146
|
+
int8 = false; // store vectors as int8-quantized bins (set via the `quantization` index option)
|
|
147
|
+
efSearchConfigured = false; // whether the schema set an explicit search ef; if not, search ef auto-scales with N
|
|
148
|
+
// Caches the Int8Array-converted clone of a frozen (decoded-from-disk) int8 node, keyed by the
|
|
149
|
+
// frozen node the object store hands back. WeakMap so entries are collected when the store evicts
|
|
150
|
+
// the frozen node — without it, every cache hit on a frozen node would re-slice and re-clone.
|
|
151
|
+
convertedNodes = new WeakMap();
|
|
39
152
|
constructor(indexStore, options) {
|
|
40
153
|
this.indexStore = indexStore;
|
|
41
154
|
if (indexStore) {
|
|
@@ -43,7 +156,15 @@ class HierarchicalNavigableSmallWorld {
|
|
|
43
156
|
// (we would actually like to use float16 if it were available)
|
|
44
157
|
this.indexStore.encoder.useFloat32 = msgpackr_1.FLOAT32_OPTIONS.ALWAYS;
|
|
45
158
|
}
|
|
46
|
-
this.
|
|
159
|
+
this.int8 = options?.quantization === 'int8';
|
|
160
|
+
// Respect an explicitly-configured search ef (or efConstruction, which seeds it); otherwise auto-scale.
|
|
161
|
+
this.efSearchConfigured = options?.efConstructionSearch !== undefined || options?.efConstruction !== undefined;
|
|
162
|
+
this.distance =
|
|
163
|
+
options?.distance === 'euclidean'
|
|
164
|
+
? vector_ts_1.euclideanDistance
|
|
165
|
+
: options?.distance === 'dotProduct'
|
|
166
|
+
? vector_ts_1.dotProductDistance
|
|
167
|
+
: vector_ts_1.cosineDistance;
|
|
47
168
|
if (options) {
|
|
48
169
|
// allow all the HNSW parameters to be configured/tuned
|
|
49
170
|
if (options.M !== undefined) {
|
|
@@ -97,16 +218,32 @@ class HierarchicalNavigableSmallWorld {
|
|
|
97
218
|
if (existingVector) {
|
|
98
219
|
// If we are updating an existing entry, we need to update the entry point
|
|
99
220
|
// if the new entry is closer to the entry point than the old one
|
|
100
|
-
oldNode = { ...this.
|
|
221
|
+
oldNode = { ...this.safeGetSync(nodeId, options) };
|
|
101
222
|
}
|
|
102
223
|
else
|
|
103
224
|
oldNode = {};
|
|
104
225
|
if (vector) {
|
|
105
|
-
|
|
226
|
+
// Pre-compute 1/|vector| for cosine distance so searchLayer can skip sqrt per neighbor
|
|
227
|
+
let invMag;
|
|
228
|
+
if (this.distance === vector_ts_1.cosineDistance) {
|
|
229
|
+
let magSq = 0;
|
|
230
|
+
for (const v of vector)
|
|
231
|
+
magSq += v * v;
|
|
232
|
+
invMag = 1 / (Math.sqrt(magSq) || 1);
|
|
233
|
+
}
|
|
234
|
+
// Quantized storage form. The float `vector` is still used as the query for every
|
|
235
|
+
// searchLayer call below (asymmetric distance: float query x int8 stored); only what
|
|
236
|
+
// we PUT to the store is quantized.
|
|
237
|
+
const q = this.int8 ? quantizeInt8(vector) : undefined;
|
|
238
|
+
const storedVector = q ? q.bytes : vector;
|
|
239
|
+
const storedScale = q ? q.scale : undefined;
|
|
240
|
+
let entryPoint = entryPointId && this.safeGetSync(entryPointId, options);
|
|
106
241
|
if (entryPoint == null) {
|
|
107
242
|
const level = Math.floor(-Math.log(Math.random()) * this.mL);
|
|
108
243
|
const node = {
|
|
109
|
-
vector,
|
|
244
|
+
vector: storedVector,
|
|
245
|
+
scale: storedScale,
|
|
246
|
+
invMag,
|
|
110
247
|
level,
|
|
111
248
|
primaryKey,
|
|
112
249
|
};
|
|
@@ -201,8 +338,13 @@ class HierarchicalNavigableSmallWorld {
|
|
|
201
338
|
for (const { fromId, toId } of connectionsToBeReplaced) {
|
|
202
339
|
let from = updateNode(fromId);
|
|
203
340
|
if (!from)
|
|
204
|
-
from = updateNode(fromId, this.
|
|
205
|
-
|
|
341
|
+
from = updateNode(fromId, this.safeGetSync(fromId, options));
|
|
342
|
+
if (!from)
|
|
343
|
+
continue;
|
|
344
|
+
const fromAtLevel = from[l];
|
|
345
|
+
if (!fromAtLevel)
|
|
346
|
+
continue;
|
|
347
|
+
for (let i = 0; i < fromAtLevel.length; i++) {
|
|
206
348
|
if (from[l][i].id === toId) {
|
|
207
349
|
if (Object.isFrozen(from[l])) {
|
|
208
350
|
from[l] = from[l].slice();
|
|
@@ -248,7 +390,9 @@ class HierarchicalNavigableSmallWorld {
|
|
|
248
390
|
}
|
|
249
391
|
// Store the new element
|
|
250
392
|
this.indexStore.put(nodeId, {
|
|
251
|
-
vector,
|
|
393
|
+
vector: storedVector,
|
|
394
|
+
scale: storedScale,
|
|
395
|
+
invMag,
|
|
252
396
|
level,
|
|
253
397
|
primaryKey,
|
|
254
398
|
...connections,
|
|
@@ -301,7 +445,7 @@ class HierarchicalNavigableSmallWorld {
|
|
|
301
445
|
const oldConnections = oldNode[l];
|
|
302
446
|
for (const { id: neighborId } of oldConnections) {
|
|
303
447
|
// get and copy the neighbor node so we can modify it
|
|
304
|
-
const neighborNode = updateNode(neighborId, this.
|
|
448
|
+
const neighborNode = updateNode(neighborId, this.safeGetSync(neighborId, options));
|
|
305
449
|
if (!neighborNode)
|
|
306
450
|
continue;
|
|
307
451
|
for (let l2 = 0; l2 <= l; l2++) {
|
|
@@ -311,7 +455,10 @@ class HierarchicalNavigableSmallWorld {
|
|
|
311
455
|
});
|
|
312
456
|
if (neighborNode[l2]?.length === 0) {
|
|
313
457
|
logger.trace?.('node was left orphaned, will reindex', neighborId);
|
|
314
|
-
|
|
458
|
+
// reindex re-feeds this vector into index() as a float query, so dequantize int8 back to float
|
|
459
|
+
needsReindexing.set(neighborNode.primaryKey, neighborNode.scale !== undefined
|
|
460
|
+
? dequantizeInt8(neighborNode.vector, neighborNode.scale)
|
|
461
|
+
: neighborNode.vector);
|
|
315
462
|
}
|
|
316
463
|
}
|
|
317
464
|
}
|
|
@@ -333,14 +480,50 @@ class HierarchicalNavigableSmallWorld {
|
|
|
333
480
|
for (const [key, vector] of needsReindexing) {
|
|
334
481
|
this.index(key, vector, vector, options);
|
|
335
482
|
}
|
|
336
|
-
this.checkSymmetry(nodeId, this.
|
|
483
|
+
this.checkSymmetry(nodeId, this.safeGetSync(nodeId, options), options);
|
|
484
|
+
}
|
|
485
|
+
safeGetSync(key, options) {
|
|
486
|
+
try {
|
|
487
|
+
let node = this.indexStore.getSync(key, options);
|
|
488
|
+
// A quantized vector decodes as a bin (Uint8Array/Buffer) that is a view into the
|
|
489
|
+
// store's read buffer, which may be reused on the next getSync — so copy the bytes
|
|
490
|
+
// into a retained Int8Array (raw two's-complement reinterpret). The Int8Array guard
|
|
491
|
+
// skips re-conversion when the object store (useObjectStore) hands back an
|
|
492
|
+
// already-converted cached node. Float nodes (vector is a number[]) pass through.
|
|
493
|
+
if (node && node.vector && !Array.isArray(node.vector) && !(node.vector instanceof Int8Array)) {
|
|
494
|
+
// A node decoded from disk (a cache miss, common once the table outgrows the object
|
|
495
|
+
// cache) is frozen — the index store sets freezeData — so assigning node.vector would
|
|
496
|
+
// throw and the catch below would silently drop the node, fragmenting the graph (#1161).
|
|
497
|
+
// Clone the frozen node, memoizing the clone against the frozen node so repeated cache
|
|
498
|
+
// hits skip re-slicing/re-cloning. Mutate in place only the writable just-written object.
|
|
499
|
+
const cached = this.convertedNodes.get(node);
|
|
500
|
+
if (cached)
|
|
501
|
+
return cached;
|
|
502
|
+
const u8 = node.vector;
|
|
503
|
+
const vector = new Int8Array(u8.buffer, u8.byteOffset, u8.byteLength).slice();
|
|
504
|
+
if (Object.isFrozen(node)) {
|
|
505
|
+
const converted = { ...node, vector };
|
|
506
|
+
this.convertedNodes.set(node, converted);
|
|
507
|
+
node = converted;
|
|
508
|
+
}
|
|
509
|
+
else
|
|
510
|
+
node.vector = vector;
|
|
511
|
+
}
|
|
512
|
+
return node;
|
|
513
|
+
}
|
|
514
|
+
catch {
|
|
515
|
+
logger.warn?.('Failed to decode HNSW node, skipping', key);
|
|
516
|
+
return undefined;
|
|
517
|
+
}
|
|
337
518
|
}
|
|
338
519
|
getEntryPoint(options = {}) {
|
|
339
520
|
// Get entry point
|
|
340
521
|
const entryPointId = this.indexStore.getSync(ENTRY_POINT, options);
|
|
341
522
|
if (entryPointId === undefined)
|
|
342
523
|
return;
|
|
343
|
-
const node = this.
|
|
524
|
+
const node = this.safeGetSync(entryPointId, options);
|
|
525
|
+
if (!node)
|
|
526
|
+
return;
|
|
344
527
|
return { id: entryPointId, ...node };
|
|
345
528
|
}
|
|
346
529
|
/**
|
|
@@ -357,48 +540,90 @@ class HierarchicalNavigableSmallWorld {
|
|
|
357
540
|
* @private
|
|
358
541
|
*/
|
|
359
542
|
searchLayer(queryVector, entryPointId, entryPoint, ef, level, options = {}, distanceFunction = this.distance) {
|
|
543
|
+
// Pre-compute query magnitude for cosine; use cached invMag on stored nodes to skip sqrt per neighbor.
|
|
544
|
+
// Asymmetric distance: the query stays full-precision float; a stored neighbor may be int8
|
|
545
|
+
// (with per-vector `scaleB`) or float (`scaleB` undefined).
|
|
546
|
+
let computeDistance;
|
|
547
|
+
if (distanceFunction === vector_ts_1.cosineDistance) {
|
|
548
|
+
let magASq = 0;
|
|
549
|
+
for (const v of queryVector)
|
|
550
|
+
magASq += v * v;
|
|
551
|
+
const invMagA = 1 / (Math.sqrt(magASq) || 1);
|
|
552
|
+
computeDistance = (b, invMagB, scaleB) => {
|
|
553
|
+
let dot = 0;
|
|
554
|
+
for (let i = 0; i < b.length; i++)
|
|
555
|
+
dot += queryVector[i] * b[i];
|
|
556
|
+
if (scaleB !== undefined)
|
|
557
|
+
dot *= scaleB; // dequantize the int8 dot product
|
|
558
|
+
if (invMagB !== undefined)
|
|
559
|
+
return 1 - dot * invMagA * invMagB;
|
|
560
|
+
// Fallback when the stored node has no cached invMag (a non-cosine index queried as
|
|
561
|
+
// cosine). Compute the stored magnitude and dequantize it by scaleB so it matches the
|
|
562
|
+
// already-dequantized dot product.
|
|
563
|
+
let magBSq = 0;
|
|
564
|
+
for (let i = 0; i < b.length; i++)
|
|
565
|
+
magBSq += b[i] * b[i];
|
|
566
|
+
let magB = Math.sqrt(magBSq) || 1;
|
|
567
|
+
if (scaleB !== undefined)
|
|
568
|
+
magB *= scaleB;
|
|
569
|
+
return 1 - (dot * invMagA) / magB;
|
|
570
|
+
};
|
|
571
|
+
}
|
|
572
|
+
else if (distanceFunction === vector_ts_1.euclideanDistance) {
|
|
573
|
+
// Asymmetric squared-euclidean, dequantizing each int8 component inline (no allocation).
|
|
574
|
+
computeDistance = (b, _invMagB, scaleB) => {
|
|
575
|
+
if (scaleB === undefined)
|
|
576
|
+
return distanceFunction(queryVector, b);
|
|
577
|
+
let distanceSquared = 0;
|
|
578
|
+
for (let i = 0; i < b.length; i++) {
|
|
579
|
+
const diff = queryVector[i] - b[i] * scaleB;
|
|
580
|
+
distanceSquared += diff * diff;
|
|
581
|
+
}
|
|
582
|
+
return distanceSquared;
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
else {
|
|
586
|
+
// Negated inner product, dequantizing the int8 dot product inline (no allocation).
|
|
587
|
+
computeDistance = (b, _invMagB, scaleB) => {
|
|
588
|
+
if (scaleB === undefined)
|
|
589
|
+
return distanceFunction(queryVector, b);
|
|
590
|
+
let dot = 0;
|
|
591
|
+
for (let i = 0; i < b.length; i++)
|
|
592
|
+
dot += queryVector[i] * b[i];
|
|
593
|
+
return -(dot * scaleB);
|
|
594
|
+
};
|
|
595
|
+
}
|
|
360
596
|
const visited = new Set([entryPointId]);
|
|
361
|
-
const
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
const results = [
|
|
369
|
-
while (candidates.
|
|
370
|
-
|
|
371
|
-
candidates.sort((a, b) => a.distance - b.distance);
|
|
372
|
-
const current = candidates.shift();
|
|
373
|
-
// Get least result distance
|
|
597
|
+
const initialCandidate = {
|
|
598
|
+
id: entryPointId,
|
|
599
|
+
distance: computeDistance(entryPoint.vector, entryPoint.invMag, entryPoint.scale),
|
|
600
|
+
node: entryPoint,
|
|
601
|
+
};
|
|
602
|
+
const candidates = new MinHeap();
|
|
603
|
+
candidates.push(initialCandidate);
|
|
604
|
+
const results = [initialCandidate];
|
|
605
|
+
while (candidates.size > 0) {
|
|
606
|
+
const current = candidates.pop();
|
|
374
607
|
const furthestDistance = results[results.length - 1].distance;
|
|
375
|
-
// If current candidate is less similar than our worst result, we're done
|
|
376
608
|
if (current.distance > furthestDistance)
|
|
377
609
|
break;
|
|
378
|
-
|
|
379
|
-
const currentNode = current.node;
|
|
380
|
-
for (const { id: neighborId } of currentNode[level] || []) {
|
|
610
|
+
for (const { id: neighborId } of current.node[level] || []) {
|
|
381
611
|
if (visited.has(neighborId) || neighborId === undefined)
|
|
382
612
|
continue;
|
|
383
613
|
visited.add(neighborId);
|
|
384
|
-
const neighbor = this.
|
|
614
|
+
const neighbor = this.safeGetSync(neighborId, options);
|
|
385
615
|
if (!neighbor)
|
|
386
616
|
continue;
|
|
387
617
|
this.nodesVisitedCount++;
|
|
388
|
-
const distance =
|
|
618
|
+
const distance = computeDistance(neighbor.vector, neighbor.invMag, neighbor.scale);
|
|
389
619
|
if (distance < furthestDistance || results.length < ef) {
|
|
390
|
-
const candidate = {
|
|
391
|
-
id: neighborId,
|
|
392
|
-
distance,
|
|
393
|
-
node: neighbor,
|
|
394
|
-
};
|
|
620
|
+
const candidate = { id: neighborId, distance, node: neighbor };
|
|
395
621
|
candidates.push(candidate);
|
|
396
|
-
results.
|
|
622
|
+
results.splice(bisectInsert(results, distance), 0, candidate);
|
|
623
|
+
if (results.length > ef)
|
|
624
|
+
results.pop();
|
|
397
625
|
}
|
|
398
626
|
}
|
|
399
|
-
results.sort((a, b) => a.distance - b.distance);
|
|
400
|
-
if (results.length > ef)
|
|
401
|
-
results.splice(ef, results.length - ef);
|
|
402
627
|
}
|
|
403
628
|
results.visited = visited.size;
|
|
404
629
|
return results;
|
|
@@ -414,7 +639,7 @@ class HierarchicalNavigableSmallWorld {
|
|
|
414
639
|
* @param comparator
|
|
415
640
|
* @param context
|
|
416
641
|
*/
|
|
417
|
-
search({ target, value, descending, distance, comparator, }, context) {
|
|
642
|
+
search({ target, value, descending, distance, comparator, ef, }, context) {
|
|
418
643
|
let limit = 0; // zero is ignored, only used if set below
|
|
419
644
|
switch (comparator) {
|
|
420
645
|
case 'lt':
|
|
@@ -424,24 +649,37 @@ class HierarchicalNavigableSmallWorld {
|
|
|
424
649
|
case 'sort':
|
|
425
650
|
break;
|
|
426
651
|
default:
|
|
427
|
-
throw new
|
|
652
|
+
throw new hdbError_ts_1.ClientError(`Can not use "${comparator}" comparator with HNSW`);
|
|
428
653
|
}
|
|
429
654
|
if (descending)
|
|
430
|
-
throw new
|
|
655
|
+
throw new hdbError_ts_1.ClientError(`Can not use descending sort order with HNSW`);
|
|
431
656
|
let distanceFunction;
|
|
432
657
|
if (distance === 'cosine')
|
|
433
658
|
distanceFunction = vector_ts_1.cosineDistance;
|
|
434
659
|
else if (distance === 'euclidean')
|
|
435
660
|
distanceFunction = vector_ts_1.euclideanDistance;
|
|
661
|
+
else if (distance === 'dotProduct')
|
|
662
|
+
distanceFunction = vector_ts_1.dotProductDistance;
|
|
436
663
|
else if (distance)
|
|
437
|
-
throw new
|
|
664
|
+
throw new hdbError_ts_1.ClientError('Unknown distance function');
|
|
438
665
|
else
|
|
439
666
|
distanceFunction = this.distance;
|
|
440
667
|
if (!target)
|
|
441
|
-
throw new
|
|
668
|
+
throw new hdbError_ts_1.ClientError('A target vector must be provided for an HNSW query');
|
|
442
669
|
if (!Array.isArray(target))
|
|
443
|
-
throw new
|
|
670
|
+
throw new hdbError_ts_1.ClientError('The target vector must be an array');
|
|
444
671
|
const options = context.transaction; // should have a nested RocksDB transaction
|
|
672
|
+
// Resolve search ef: per-query ef wins; else an explicitly-configured efConstructionSearch;
|
|
673
|
+
// else auto-scale with the graph size so recall holds as the table grows.
|
|
674
|
+
let effectiveEf = this.efConstructionSearch;
|
|
675
|
+
if (ef !== undefined && ef > 0)
|
|
676
|
+
effectiveEf = ef;
|
|
677
|
+
else if (!this.efSearchConfigured) {
|
|
678
|
+
const nodeCount = this.indexStore.getKeysCount
|
|
679
|
+
? this.indexStore.getKeysCount()
|
|
680
|
+
: (this.indexStore.getStats?.()?.entryCount ?? 0);
|
|
681
|
+
effectiveEf = autoScaleEf(nodeCount);
|
|
682
|
+
}
|
|
445
683
|
let entryPoint = this.getEntryPoint(options);
|
|
446
684
|
if (!entryPoint)
|
|
447
685
|
return [];
|
|
@@ -450,7 +688,7 @@ class HierarchicalNavigableSmallWorld {
|
|
|
450
688
|
// For each level from top to bottom
|
|
451
689
|
for (let l = entryPoint.level; l >= 0; l--) {
|
|
452
690
|
// Search for closest neighbors at current level
|
|
453
|
-
results = this.searchLayer(target, entryPointId, entryPoint,
|
|
691
|
+
results = this.searchLayer(target, entryPointId, entryPoint, effectiveEf, l, options, distanceFunction);
|
|
454
692
|
if (results.length > 0) {
|
|
455
693
|
const neighbor = results[0]; // closest neighbor becomes new entry point
|
|
456
694
|
entryPoint = neighbor.node;
|
|
@@ -465,6 +703,27 @@ class HierarchicalNavigableSmallWorld {
|
|
|
465
703
|
distance: candidate.distance,
|
|
466
704
|
}));
|
|
467
705
|
}
|
|
706
|
+
/**
|
|
707
|
+
* Exact distance between a query and a record's FULL-precision vector, mirroring search()'s metric
|
|
708
|
+
* selection. Used to rerank quantized (int8) results: graph traversal navigates on approximate
|
|
709
|
+
* (quantized) distances, but the caller has the exact record vector and can restore exact ordering
|
|
710
|
+
* and $distance.
|
|
711
|
+
*/
|
|
712
|
+
exactDistance(searchCondition, recordVector) {
|
|
713
|
+
if (recordVector == null)
|
|
714
|
+
return Infinity; // missing vector sorts last
|
|
715
|
+
// distance fns require a plain Array (they guard on Array.isArray); records normally store a
|
|
716
|
+
// float[] vector, but convert defensively in case a typed array slips through.
|
|
717
|
+
const vec = Array.isArray(recordVector) ? recordVector : Array.from(recordVector);
|
|
718
|
+
const fn = searchCondition.distance === 'euclidean'
|
|
719
|
+
? vector_ts_1.euclideanDistance
|
|
720
|
+
: searchCondition.distance === 'dotProduct'
|
|
721
|
+
? vector_ts_1.dotProductDistance
|
|
722
|
+
: searchCondition.distance === 'cosine'
|
|
723
|
+
? vector_ts_1.cosineDistance
|
|
724
|
+
: this.distance;
|
|
725
|
+
return fn(searchCondition.target, vec);
|
|
726
|
+
}
|
|
468
727
|
checkSymmetry(id, node, options) {
|
|
469
728
|
if (!node)
|
|
470
729
|
return;
|
|
@@ -475,9 +734,9 @@ class HierarchicalNavigableSmallWorld {
|
|
|
475
734
|
if (connections.length === 0)
|
|
476
735
|
break;
|
|
477
736
|
for (const { id: neighbor } of connections) {
|
|
478
|
-
const neighborNode = this.
|
|
737
|
+
const neighborNode = this.safeGetSync(neighbor, options);
|
|
479
738
|
if (!neighborNode) {
|
|
480
|
-
logger.info?.('could not find neighbor node',
|
|
739
|
+
logger.info?.('could not find neighbor node', neighbor);
|
|
481
740
|
continue;
|
|
482
741
|
}
|
|
483
742
|
// verify that the connection is symmetrical
|
|
@@ -512,7 +771,7 @@ class HierarchicalNavigableSmallWorld {
|
|
|
512
771
|
node[level] = keptConnections;
|
|
513
772
|
// For removed connections, ensure there's still a path to them
|
|
514
773
|
for (const removed of removedConnections) {
|
|
515
|
-
let removedNode = updateNode(removed.id) ?? this.
|
|
774
|
+
let removedNode = updateNode(removed.id) ?? this.safeGetSync(removed.id, options);
|
|
516
775
|
if (removedNode) {
|
|
517
776
|
// Remove the reverse connection if it exists
|
|
518
777
|
if (removedNode[level]) {
|
|
@@ -540,19 +799,26 @@ class HierarchicalNavigableSmallWorld {
|
|
|
540
799
|
}
|
|
541
800
|
validateConnectivity(startLevel = 0) {
|
|
542
801
|
const entryPoint = this.getEntryPoint();
|
|
802
|
+
if (!entryPoint)
|
|
803
|
+
return;
|
|
543
804
|
const visited = new Set();
|
|
544
|
-
// BFS from entry point to ensure all nodes are reachable
|
|
805
|
+
// BFS from entry point to ensure all nodes are reachable. Asymmetric stale neighbor
|
|
806
|
+
// references can survive deletes, so a referenced node may not actually exist anymore;
|
|
807
|
+
// only count a node as visited once we confirm the underlying record is present.
|
|
545
808
|
const queue = [entryPoint.id];
|
|
546
|
-
|
|
809
|
+
const enqueued = new Set([entryPoint.id]);
|
|
547
810
|
let connections = 0;
|
|
548
811
|
while (queue.length > 0) {
|
|
549
812
|
const currentId = queue.shift();
|
|
550
|
-
const current = this.
|
|
813
|
+
const current = this.safeGetSync(currentId);
|
|
814
|
+
if (!current)
|
|
815
|
+
continue;
|
|
816
|
+
visited.add(currentId);
|
|
551
817
|
for (let level = startLevel; level <= current.level; level++) {
|
|
552
818
|
for (const { id: neighborId } of current[level] || []) {
|
|
553
819
|
connections++;
|
|
554
|
-
if (!
|
|
555
|
-
|
|
820
|
+
if (!enqueued.has(neighborId)) {
|
|
821
|
+
enqueued.add(neighborId);
|
|
556
822
|
queue.push(neighborId);
|
|
557
823
|
}
|
|
558
824
|
}
|
|
@@ -560,9 +826,6 @@ class HierarchicalNavigableSmallWorld {
|
|
|
560
826
|
}
|
|
561
827
|
// Check if all nodes are reachable
|
|
562
828
|
// This would require maintaining a separate set/count of all nodes
|
|
563
|
-
if (visited.size !== this.totalNodes) {
|
|
564
|
-
console.log('visited', visited.size, 'total', this.totalNodes);
|
|
565
|
-
}
|
|
566
829
|
return {
|
|
567
830
|
isFullyConnected: visited.size === this.totalNodes,
|
|
568
831
|
averageConnections: connections / visited.size,
|
|
@@ -607,7 +870,12 @@ class HierarchicalNavigableSmallWorld {
|
|
|
607
870
|
vectorDistances = context.vectorDistances = sortDefinition.vectorDistances = new Map();
|
|
608
871
|
let distanceFunction = this.distance;
|
|
609
872
|
if (sortDefinition.type)
|
|
610
|
-
distanceFunction =
|
|
873
|
+
distanceFunction =
|
|
874
|
+
sortDefinition.distance === 'euclidean'
|
|
875
|
+
? vector_ts_1.euclideanDistance
|
|
876
|
+
: sortDefinition.distance === 'dotProduct'
|
|
877
|
+
? vector_ts_1.dotProductDistance
|
|
878
|
+
: vector_ts_1.cosineDistance;
|
|
611
879
|
const distance = distanceFunction(sortDefinition.target, vector);
|
|
612
880
|
vectorDistances.set(entry, distance);
|
|
613
881
|
return distance;
|