@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
|
@@ -1,11 +1,113 @@
|
|
|
1
|
-
import { cosineDistance, euclideanDistance } from './vector.ts';
|
|
1
|
+
import { cosineDistance, euclideanDistance, dotProductDistance } from './vector.ts';
|
|
2
2
|
import { FLOAT32_OPTIONS } from 'msgpackr';
|
|
3
3
|
import { loggerWithTag } from '../../utility/logging/logger.ts';
|
|
4
|
-
import { ClientError } from '../../utility/errors/hdbError.
|
|
4
|
+
import { ClientError } from '../../utility/errors/hdbError.ts';
|
|
5
5
|
import type { Id } from '../../resources/ResourceInterface.ts';
|
|
6
6
|
import { RocksDatabase } from '@harperfast/rocksdb-js';
|
|
7
7
|
|
|
8
8
|
const logger = loggerWithTag('HNSW');
|
|
9
|
+
|
|
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
|
+
|
|
22
|
+
/** Symmetric int8 scalar-quantize a float vector. scale = max|component| / 127. */
|
|
23
|
+
function quantizeInt8(vector: number[]): { bytes: Buffer; scale: number } {
|
|
24
|
+
let max = 0;
|
|
25
|
+
for (let i = 0; i < vector.length; i++) {
|
|
26
|
+
const a = vector[i] < 0 ? -vector[i] : vector[i];
|
|
27
|
+
if (a > max) 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++) q[i] = Math.max(-127, Math.min(127, Math.round(vector[i] * inv)));
|
|
34
|
+
return { bytes: Buffer.from(q.buffer, q.byteOffset, q.byteLength), scale };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Reconstruct an approximate float array from an int8 vector + scale. */
|
|
38
|
+
function dequantizeInt8(q: Int8Array, scale: number): number[] {
|
|
39
|
+
const out = new Array(q.length);
|
|
40
|
+
for (let i = 0; i < q.length; i++) out[i] = q[i] * scale;
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
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: number): number {
|
|
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
|
+
|
|
59
|
+
class MinHeap {
|
|
60
|
+
private data: Candidate[] = [];
|
|
61
|
+
get size() {
|
|
62
|
+
return this.data.length;
|
|
63
|
+
}
|
|
64
|
+
push(item: Candidate) {
|
|
65
|
+
this.data.push(item);
|
|
66
|
+
let i = this.data.length - 1;
|
|
67
|
+
while (i > 0) {
|
|
68
|
+
const p = (i - 1) >> 1;
|
|
69
|
+
if (this.data[p].distance <= this.data[i].distance) 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(): Candidate | undefined {
|
|
77
|
+
if (this.data.length === 0) return undefined;
|
|
78
|
+
const top = this.data[0];
|
|
79
|
+
const last = this.data.pop()!;
|
|
80
|
+
if (this.data.length > 0) {
|
|
81
|
+
this.data[0] = last;
|
|
82
|
+
let i = 0;
|
|
83
|
+
for (;;) {
|
|
84
|
+
const l = 2 * i + 1,
|
|
85
|
+
r = l + 1;
|
|
86
|
+
let min = i;
|
|
87
|
+
if (l < this.data.length && this.data[l].distance < this.data[min].distance) min = l;
|
|
88
|
+
if (r < this.data.length && this.data[r].distance < this.data[min].distance) min = r;
|
|
89
|
+
if (min === i) break;
|
|
90
|
+
const tmp = this.data[min];
|
|
91
|
+
this.data[min] = this.data[i];
|
|
92
|
+
this.data[i] = tmp;
|
|
93
|
+
i = min;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return top;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function bisectInsert(arr: Candidate[], distance: number): number {
|
|
101
|
+
let lo = 0,
|
|
102
|
+
hi = arr.length;
|
|
103
|
+
while (lo < hi) {
|
|
104
|
+
const mid = (lo + hi) >> 1;
|
|
105
|
+
if (arr[mid].distance <= distance) lo = mid + 1;
|
|
106
|
+
else hi = mid;
|
|
107
|
+
}
|
|
108
|
+
return lo;
|
|
109
|
+
}
|
|
110
|
+
|
|
9
111
|
/**
|
|
10
112
|
* Implementation of a vector index for Harper, using hierarchical navigable small world graphs.
|
|
11
113
|
*/
|
|
@@ -17,7 +119,9 @@ type Connection = {
|
|
|
17
119
|
distance: number;
|
|
18
120
|
};
|
|
19
121
|
type Node = {
|
|
20
|
-
vector: number[];
|
|
122
|
+
vector: number[] | Int8Array; // float nodes: number[]; quantized nodes: Int8Array (decoded from a bin)
|
|
123
|
+
scale?: number; // int8 dequantization scale; undefined on float nodes
|
|
124
|
+
invMag?: number; // cached 1/|vector| for cosine distance; undefined on legacy nodes
|
|
21
125
|
level?: number;
|
|
22
126
|
primaryKey: string;
|
|
23
127
|
[level: number]: Connection[];
|
|
@@ -34,6 +138,10 @@ type Node = {
|
|
|
34
138
|
*/
|
|
35
139
|
export class HierarchicalNavigableSmallWorld {
|
|
36
140
|
static useObjectStore = true;
|
|
141
|
+
// Index options that only affect search, not the stored graph — changing them must not trigger a
|
|
142
|
+
// reindex (databases.ts persists the new value but skips rebuilding). efConstructionSearch is the
|
|
143
|
+
// search-time candidate-list size; the build uses efConstruction/M/distance, which are structural.
|
|
144
|
+
static searchOnlyOptions = ['efConstructionSearch'];
|
|
37
145
|
indexStore: any;
|
|
38
146
|
M: number = 16; // max number of connections per layer
|
|
39
147
|
efConstruction: number = 100; // size of dynamic candidate list
|
|
@@ -46,6 +154,12 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
46
154
|
|
|
47
155
|
idIncrementer: BigInt64Array | undefined;
|
|
48
156
|
distance: (a: number[], b: number[]) => number;
|
|
157
|
+
int8 = false; // store vectors as int8-quantized bins (set via the `quantization` index option)
|
|
158
|
+
efSearchConfigured = false; // whether the schema set an explicit search ef; if not, search ef auto-scales with N
|
|
159
|
+
// Caches the Int8Array-converted clone of a frozen (decoded-from-disk) int8 node, keyed by the
|
|
160
|
+
// frozen node the object store hands back. WeakMap so entries are collected when the store evicts
|
|
161
|
+
// the frozen node — without it, every cache hit on a frozen node would re-slice and re-clone.
|
|
162
|
+
private convertedNodes = new WeakMap<object, any>();
|
|
49
163
|
constructor(indexStore: any, options: any) {
|
|
50
164
|
this.indexStore = indexStore;
|
|
51
165
|
if (indexStore) {
|
|
@@ -53,7 +167,15 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
53
167
|
// (we would actually like to use float16 if it were available)
|
|
54
168
|
this.indexStore.encoder.useFloat32 = FLOAT32_OPTIONS.ALWAYS;
|
|
55
169
|
}
|
|
56
|
-
this.
|
|
170
|
+
this.int8 = options?.quantization === 'int8';
|
|
171
|
+
// Respect an explicitly-configured search ef (or efConstruction, which seeds it); otherwise auto-scale.
|
|
172
|
+
this.efSearchConfigured = options?.efConstructionSearch !== undefined || options?.efConstruction !== undefined;
|
|
173
|
+
this.distance =
|
|
174
|
+
options?.distance === 'euclidean'
|
|
175
|
+
? euclideanDistance
|
|
176
|
+
: options?.distance === 'dotProduct'
|
|
177
|
+
? dotProductDistance
|
|
178
|
+
: cosineDistance;
|
|
57
179
|
if (options) {
|
|
58
180
|
// allow all the HNSW parameters to be configured/tuned
|
|
59
181
|
if (options.M !== undefined) {
|
|
@@ -105,14 +227,29 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
105
227
|
if (existingVector) {
|
|
106
228
|
// If we are updating an existing entry, we need to update the entry point
|
|
107
229
|
// if the new entry is closer to the entry point than the old one
|
|
108
|
-
oldNode = { ...this.
|
|
230
|
+
oldNode = { ...this.safeGetSync(nodeId, options) };
|
|
109
231
|
} else oldNode = {} as Node;
|
|
110
232
|
if (vector) {
|
|
111
|
-
|
|
233
|
+
// Pre-compute 1/|vector| for cosine distance so searchLayer can skip sqrt per neighbor
|
|
234
|
+
let invMag: number | undefined;
|
|
235
|
+
if (this.distance === cosineDistance) {
|
|
236
|
+
let magSq = 0;
|
|
237
|
+
for (const v of vector) magSq += v * v;
|
|
238
|
+
invMag = 1 / (Math.sqrt(magSq) || 1);
|
|
239
|
+
}
|
|
240
|
+
// Quantized storage form. The float `vector` is still used as the query for every
|
|
241
|
+
// searchLayer call below (asymmetric distance: float query x int8 stored); only what
|
|
242
|
+
// we PUT to the store is quantized.
|
|
243
|
+
const q = this.int8 ? quantizeInt8(vector) : undefined;
|
|
244
|
+
const storedVector: number[] | Buffer = q ? q.bytes : vector;
|
|
245
|
+
const storedScale = q ? q.scale : undefined;
|
|
246
|
+
let entryPoint = entryPointId && this.safeGetSync(entryPointId, options);
|
|
112
247
|
if (entryPoint == null) {
|
|
113
248
|
const level = Math.floor(-Math.log(Math.random()) * this.mL);
|
|
114
249
|
const node = {
|
|
115
|
-
vector,
|
|
250
|
+
vector: storedVector,
|
|
251
|
+
scale: storedScale,
|
|
252
|
+
invMag,
|
|
116
253
|
level,
|
|
117
254
|
primaryKey,
|
|
118
255
|
};
|
|
@@ -214,8 +351,11 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
214
351
|
|
|
215
352
|
for (const { fromId, toId } of connectionsToBeReplaced) {
|
|
216
353
|
let from = updateNode(fromId);
|
|
217
|
-
if (!from) from = updateNode(fromId, this.
|
|
218
|
-
|
|
354
|
+
if (!from) from = updateNode(fromId, this.safeGetSync(fromId, options));
|
|
355
|
+
if (!from) continue;
|
|
356
|
+
const fromAtLevel = from[l];
|
|
357
|
+
if (!fromAtLevel) continue;
|
|
358
|
+
for (let i = 0; i < fromAtLevel.length; i++) {
|
|
219
359
|
if (from[l][i].id === toId) {
|
|
220
360
|
if (Object.isFrozen(from[l])) {
|
|
221
361
|
from[l] = from[l].slice();
|
|
@@ -264,7 +404,9 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
264
404
|
this.indexStore.put(
|
|
265
405
|
nodeId,
|
|
266
406
|
{
|
|
267
|
-
vector,
|
|
407
|
+
vector: storedVector,
|
|
408
|
+
scale: storedScale,
|
|
409
|
+
invMag,
|
|
268
410
|
level,
|
|
269
411
|
primaryKey,
|
|
270
412
|
...connections,
|
|
@@ -315,7 +457,7 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
315
457
|
const oldConnections = oldNode[l];
|
|
316
458
|
for (const { id: neighborId } of oldConnections) {
|
|
317
459
|
// get and copy the neighbor node so we can modify it
|
|
318
|
-
const neighborNode = updateNode(neighborId, this.
|
|
460
|
+
const neighborNode = updateNode(neighborId, this.safeGetSync(neighborId, options));
|
|
319
461
|
if (!neighborNode) continue;
|
|
320
462
|
for (let l2 = 0; l2 <= l; l2++) {
|
|
321
463
|
// remove the connection to this node from the neighbor node
|
|
@@ -324,7 +466,13 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
324
466
|
});
|
|
325
467
|
if (neighborNode[l2]?.length === 0) {
|
|
326
468
|
logger.trace?.('node was left orphaned, will reindex', neighborId);
|
|
327
|
-
|
|
469
|
+
// reindex re-feeds this vector into index() as a float query, so dequantize int8 back to float
|
|
470
|
+
needsReindexing.set(
|
|
471
|
+
neighborNode.primaryKey,
|
|
472
|
+
neighborNode.scale !== undefined
|
|
473
|
+
? dequantizeInt8(neighborNode.vector as Int8Array, neighborNode.scale)
|
|
474
|
+
: neighborNode.vector
|
|
475
|
+
);
|
|
328
476
|
}
|
|
329
477
|
}
|
|
330
478
|
}
|
|
@@ -346,14 +494,46 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
346
494
|
for (const [key, vector] of needsReindexing) {
|
|
347
495
|
this.index(key, vector, vector, options);
|
|
348
496
|
}
|
|
349
|
-
this.checkSymmetry(nodeId, this.
|
|
497
|
+
this.checkSymmetry(nodeId, this.safeGetSync(nodeId, options), options);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
private safeGetSync(key: any, options?: any): any {
|
|
501
|
+
try {
|
|
502
|
+
let node = this.indexStore.getSync(key, options);
|
|
503
|
+
// A quantized vector decodes as a bin (Uint8Array/Buffer) that is a view into the
|
|
504
|
+
// store's read buffer, which may be reused on the next getSync — so copy the bytes
|
|
505
|
+
// into a retained Int8Array (raw two's-complement reinterpret). The Int8Array guard
|
|
506
|
+
// skips re-conversion when the object store (useObjectStore) hands back an
|
|
507
|
+
// already-converted cached node. Float nodes (vector is a number[]) pass through.
|
|
508
|
+
if (node && node.vector && !Array.isArray(node.vector) && !(node.vector instanceof Int8Array)) {
|
|
509
|
+
// A node decoded from disk (a cache miss, common once the table outgrows the object
|
|
510
|
+
// cache) is frozen — the index store sets freezeData — so assigning node.vector would
|
|
511
|
+
// throw and the catch below would silently drop the node, fragmenting the graph (#1161).
|
|
512
|
+
// Clone the frozen node, memoizing the clone against the frozen node so repeated cache
|
|
513
|
+
// hits skip re-slicing/re-cloning. Mutate in place only the writable just-written object.
|
|
514
|
+
const cached = this.convertedNodes.get(node);
|
|
515
|
+
if (cached) return cached;
|
|
516
|
+
const u8 = node.vector as Uint8Array;
|
|
517
|
+
const vector = new Int8Array(u8.buffer, u8.byteOffset, u8.byteLength).slice();
|
|
518
|
+
if (Object.isFrozen(node)) {
|
|
519
|
+
const converted = { ...node, vector };
|
|
520
|
+
this.convertedNodes.set(node, converted);
|
|
521
|
+
node = converted;
|
|
522
|
+
} else node.vector = vector;
|
|
523
|
+
}
|
|
524
|
+
return node;
|
|
525
|
+
} catch {
|
|
526
|
+
logger.warn?.('Failed to decode HNSW node, skipping', key);
|
|
527
|
+
return undefined;
|
|
528
|
+
}
|
|
350
529
|
}
|
|
351
530
|
|
|
352
531
|
private getEntryPoint(options: { transaction?: any } = {}) {
|
|
353
532
|
// Get entry point
|
|
354
533
|
const entryPointId = this.indexStore.getSync(ENTRY_POINT, options);
|
|
355
534
|
if (entryPointId === undefined) return;
|
|
356
|
-
const node = this.
|
|
535
|
+
const node = this.safeGetSync(entryPointId, options);
|
|
536
|
+
if (!node) return;
|
|
357
537
|
return { id: entryPointId, ...node };
|
|
358
538
|
}
|
|
359
539
|
|
|
@@ -379,50 +559,82 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
379
559
|
options: { transaction?: any } = {},
|
|
380
560
|
distanceFunction = this.distance
|
|
381
561
|
): SearchResults {
|
|
562
|
+
// Pre-compute query magnitude for cosine; use cached invMag on stored nodes to skip sqrt per neighbor.
|
|
563
|
+
// Asymmetric distance: the query stays full-precision float; a stored neighbor may be int8
|
|
564
|
+
// (with per-vector `scaleB`) or float (`scaleB` undefined).
|
|
565
|
+
let computeDistance: (b: number[] | Int8Array, invMagB?: number, scaleB?: number) => number;
|
|
566
|
+
if (distanceFunction === cosineDistance) {
|
|
567
|
+
let magASq = 0;
|
|
568
|
+
for (const v of queryVector) magASq += v * v;
|
|
569
|
+
const invMagA = 1 / (Math.sqrt(magASq) || 1);
|
|
570
|
+
computeDistance = (b: number[] | Int8Array, invMagB?: number, scaleB?: number) => {
|
|
571
|
+
let dot = 0;
|
|
572
|
+
for (let i = 0; i < b.length; i++) dot += queryVector[i] * (b[i] as number);
|
|
573
|
+
if (scaleB !== undefined) dot *= scaleB; // dequantize the int8 dot product
|
|
574
|
+
if (invMagB !== undefined) return 1 - dot * invMagA * invMagB;
|
|
575
|
+
// Fallback when the stored node has no cached invMag (a non-cosine index queried as
|
|
576
|
+
// cosine). Compute the stored magnitude and dequantize it by scaleB so it matches the
|
|
577
|
+
// already-dequantized dot product.
|
|
578
|
+
let magBSq = 0;
|
|
579
|
+
for (let i = 0; i < b.length; i++) magBSq += (b[i] as number) * (b[i] as number);
|
|
580
|
+
let magB = Math.sqrt(magBSq) || 1;
|
|
581
|
+
if (scaleB !== undefined) magB *= scaleB;
|
|
582
|
+
return 1 - (dot * invMagA) / magB;
|
|
583
|
+
};
|
|
584
|
+
} else if (distanceFunction === euclideanDistance) {
|
|
585
|
+
// Asymmetric squared-euclidean, dequantizing each int8 component inline (no allocation).
|
|
586
|
+
computeDistance = (b: number[] | Int8Array, _invMagB?: number, scaleB?: number) => {
|
|
587
|
+
if (scaleB === undefined) return distanceFunction(queryVector, b as number[]);
|
|
588
|
+
let distanceSquared = 0;
|
|
589
|
+
for (let i = 0; i < b.length; i++) {
|
|
590
|
+
const diff = queryVector[i] - (b[i] as number) * scaleB;
|
|
591
|
+
distanceSquared += diff * diff;
|
|
592
|
+
}
|
|
593
|
+
return distanceSquared;
|
|
594
|
+
};
|
|
595
|
+
} else {
|
|
596
|
+
// Negated inner product, dequantizing the int8 dot product inline (no allocation).
|
|
597
|
+
computeDistance = (b: number[] | Int8Array, _invMagB?: number, scaleB?: number) => {
|
|
598
|
+
if (scaleB === undefined) return distanceFunction(queryVector, b as number[]);
|
|
599
|
+
let dot = 0;
|
|
600
|
+
for (let i = 0; i < b.length; i++) dot += queryVector[i] * (b[i] as number);
|
|
601
|
+
return -(dot * scaleB);
|
|
602
|
+
};
|
|
603
|
+
}
|
|
604
|
+
|
|
382
605
|
const visited = new Set([entryPointId]);
|
|
383
|
-
const
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
const current = candidates.shift();
|
|
396
|
-
|
|
397
|
-
// Get least result distance
|
|
606
|
+
const initialCandidate: Candidate = {
|
|
607
|
+
id: entryPointId,
|
|
608
|
+
distance: computeDistance(entryPoint.vector, entryPoint.invMag, entryPoint.scale),
|
|
609
|
+
node: entryPoint,
|
|
610
|
+
};
|
|
611
|
+
|
|
612
|
+
const candidates = new MinHeap();
|
|
613
|
+
candidates.push(initialCandidate);
|
|
614
|
+
const results = [initialCandidate] as SearchResults;
|
|
615
|
+
|
|
616
|
+
while (candidates.size > 0) {
|
|
617
|
+
const current = candidates.pop()!;
|
|
398
618
|
const furthestDistance = results[results.length - 1].distance;
|
|
399
619
|
|
|
400
|
-
// If current candidate is less similar than our worst result, we're done
|
|
401
620
|
if (current.distance > furthestDistance) break;
|
|
402
621
|
|
|
403
|
-
|
|
404
|
-
const currentNode = current.node;
|
|
405
|
-
for (const { id: neighborId } of currentNode[level] || []) {
|
|
622
|
+
for (const { id: neighborId } of current.node[level] || []) {
|
|
406
623
|
if (visited.has(neighborId) || neighborId === undefined) continue;
|
|
407
624
|
visited.add(neighborId);
|
|
408
625
|
|
|
409
|
-
const neighbor = this.
|
|
626
|
+
const neighbor = this.safeGetSync(neighborId, options);
|
|
410
627
|
if (!neighbor) continue;
|
|
411
628
|
this.nodesVisitedCount++;
|
|
412
|
-
const distance =
|
|
629
|
+
const distance = computeDistance(neighbor.vector, neighbor.invMag, neighbor.scale);
|
|
413
630
|
|
|
414
631
|
if (distance < furthestDistance || results.length < ef) {
|
|
415
|
-
const candidate = {
|
|
416
|
-
id: neighborId,
|
|
417
|
-
distance,
|
|
418
|
-
node: neighbor,
|
|
419
|
-
};
|
|
632
|
+
const candidate: Candidate = { id: neighborId, distance, node: neighbor };
|
|
420
633
|
candidates.push(candidate);
|
|
421
|
-
results.
|
|
634
|
+
results.splice(bisectInsert(results, distance), 0, candidate);
|
|
635
|
+
if (results.length > ef) results.pop();
|
|
422
636
|
}
|
|
423
637
|
}
|
|
424
|
-
results.sort((a, b) => a.distance - b.distance);
|
|
425
|
-
if (results.length > ef) results.splice(ef, results.length - ef);
|
|
426
638
|
}
|
|
427
639
|
results.visited = visited.size;
|
|
428
640
|
return results;
|
|
@@ -446,12 +658,14 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
446
658
|
descending,
|
|
447
659
|
distance,
|
|
448
660
|
comparator,
|
|
661
|
+
ef,
|
|
449
662
|
}: {
|
|
450
663
|
target: number[];
|
|
451
664
|
value: number;
|
|
452
665
|
descending: boolean;
|
|
453
666
|
distance: string;
|
|
454
667
|
comparator: string;
|
|
668
|
+
ef?: number;
|
|
455
669
|
},
|
|
456
670
|
context: any
|
|
457
671
|
) {
|
|
@@ -470,12 +684,23 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
470
684
|
let distanceFunction: (a: number[], b: number[]) => number;
|
|
471
685
|
if (distance === 'cosine') distanceFunction = cosineDistance;
|
|
472
686
|
else if (distance === 'euclidean') distanceFunction = euclideanDistance;
|
|
687
|
+
else if (distance === 'dotProduct') distanceFunction = dotProductDistance;
|
|
473
688
|
else if (distance) throw new ClientError('Unknown distance function');
|
|
474
689
|
else distanceFunction = this.distance;
|
|
475
690
|
if (!target) throw new ClientError('A target vector must be provided for an HNSW query');
|
|
476
691
|
if (!Array.isArray(target)) throw new ClientError('The target vector must be an array');
|
|
477
692
|
|
|
478
693
|
const options = context.transaction; // should have a nested RocksDB transaction
|
|
694
|
+
// Resolve search ef: per-query ef wins; else an explicitly-configured efConstructionSearch;
|
|
695
|
+
// else auto-scale with the graph size so recall holds as the table grows.
|
|
696
|
+
let effectiveEf = this.efConstructionSearch;
|
|
697
|
+
if (ef !== undefined && ef > 0) effectiveEf = ef;
|
|
698
|
+
else if (!this.efSearchConfigured) {
|
|
699
|
+
const nodeCount = this.indexStore.getKeysCount
|
|
700
|
+
? this.indexStore.getKeysCount()
|
|
701
|
+
: (this.indexStore.getStats?.()?.entryCount ?? 0);
|
|
702
|
+
effectiveEf = autoScaleEf(nodeCount);
|
|
703
|
+
}
|
|
479
704
|
let entryPoint = this.getEntryPoint(options);
|
|
480
705
|
if (!entryPoint) return [];
|
|
481
706
|
let entryPointId = entryPoint.id;
|
|
@@ -483,15 +708,7 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
483
708
|
// For each level from top to bottom
|
|
484
709
|
for (let l = entryPoint.level; l >= 0; l--) {
|
|
485
710
|
// Search for closest neighbors at current level
|
|
486
|
-
results = this.searchLayer(
|
|
487
|
-
target,
|
|
488
|
-
entryPointId,
|
|
489
|
-
entryPoint,
|
|
490
|
-
this.efConstructionSearch,
|
|
491
|
-
l,
|
|
492
|
-
options,
|
|
493
|
-
distanceFunction
|
|
494
|
-
);
|
|
711
|
+
results = this.searchLayer(target, entryPointId, entryPoint, effectiveEf, l, options, distanceFunction);
|
|
495
712
|
|
|
496
713
|
if (results.length > 0) {
|
|
497
714
|
const neighbor = results[0]; // closest neighbor becomes new entry point
|
|
@@ -506,6 +723,27 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
506
723
|
distance: candidate.distance,
|
|
507
724
|
}));
|
|
508
725
|
}
|
|
726
|
+
/**
|
|
727
|
+
* Exact distance between a query and a record's FULL-precision vector, mirroring search()'s metric
|
|
728
|
+
* selection. Used to rerank quantized (int8) results: graph traversal navigates on approximate
|
|
729
|
+
* (quantized) distances, but the caller has the exact record vector and can restore exact ordering
|
|
730
|
+
* and $distance.
|
|
731
|
+
*/
|
|
732
|
+
exactDistance(searchCondition: { target: number[]; distance?: string }, recordVector: number[] | Int8Array): number {
|
|
733
|
+
if (recordVector == null) return Infinity; // missing vector sorts last
|
|
734
|
+
// distance fns require a plain Array (they guard on Array.isArray); records normally store a
|
|
735
|
+
// float[] vector, but convert defensively in case a typed array slips through.
|
|
736
|
+
const vec = Array.isArray(recordVector) ? recordVector : Array.from(recordVector);
|
|
737
|
+
const fn =
|
|
738
|
+
searchCondition.distance === 'euclidean'
|
|
739
|
+
? euclideanDistance
|
|
740
|
+
: searchCondition.distance === 'dotProduct'
|
|
741
|
+
? dotProductDistance
|
|
742
|
+
: searchCondition.distance === 'cosine'
|
|
743
|
+
? cosineDistance
|
|
744
|
+
: this.distance;
|
|
745
|
+
return fn(searchCondition.target, vec);
|
|
746
|
+
}
|
|
509
747
|
private checkSymmetry(id, node, options) {
|
|
510
748
|
if (!node) return;
|
|
511
749
|
let l = 0;
|
|
@@ -514,9 +752,9 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
514
752
|
// verify that the level is not empty, otherwise this means we have an orphaned node
|
|
515
753
|
if (connections.length === 0) break;
|
|
516
754
|
for (const { id: neighbor } of connections) {
|
|
517
|
-
const neighborNode = this.
|
|
755
|
+
const neighborNode = this.safeGetSync(neighbor, options);
|
|
518
756
|
if (!neighborNode) {
|
|
519
|
-
logger.info?.('could not find neighbor node',
|
|
757
|
+
logger.info?.('could not find neighbor node', neighbor);
|
|
520
758
|
continue;
|
|
521
759
|
}
|
|
522
760
|
// verify that the connection is symmetrical
|
|
@@ -562,7 +800,7 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
562
800
|
node[level] = keptConnections;
|
|
563
801
|
// For removed connections, ensure there's still a path to them
|
|
564
802
|
for (const removed of removedConnections) {
|
|
565
|
-
let removedNode = updateNode(removed.id) ?? this.
|
|
803
|
+
let removedNode = updateNode(removed.id) ?? this.safeGetSync(removed.id, options);
|
|
566
804
|
if (removedNode) {
|
|
567
805
|
// Remove the reverse connection if it exists
|
|
568
806
|
if (removedNode[level]) {
|
|
@@ -589,22 +827,27 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
589
827
|
}
|
|
590
828
|
validateConnectivity(startLevel: number = 0) {
|
|
591
829
|
const entryPoint = this.getEntryPoint();
|
|
830
|
+
if (!entryPoint) return;
|
|
592
831
|
const visited = new Set<number>();
|
|
593
832
|
|
|
594
|
-
// BFS from entry point to ensure all nodes are reachable
|
|
595
|
-
|
|
596
|
-
visited.
|
|
833
|
+
// BFS from entry point to ensure all nodes are reachable. Asymmetric stale neighbor
|
|
834
|
+
// references can survive deletes, so a referenced node may not actually exist anymore;
|
|
835
|
+
// only count a node as visited once we confirm the underlying record is present.
|
|
836
|
+
const queue: number[] = [entryPoint.id];
|
|
837
|
+
const enqueued = new Set<number>([entryPoint.id]);
|
|
597
838
|
let connections = 0;
|
|
598
839
|
|
|
599
840
|
while (queue.length > 0) {
|
|
600
841
|
const currentId = queue.shift()!;
|
|
601
|
-
const current = this.
|
|
842
|
+
const current = this.safeGetSync(currentId);
|
|
843
|
+
if (!current) continue;
|
|
844
|
+
visited.add(currentId);
|
|
602
845
|
|
|
603
846
|
for (let level = startLevel; level <= current.level; level++) {
|
|
604
847
|
for (const { id: neighborId } of current[level] || []) {
|
|
605
848
|
connections++;
|
|
606
|
-
if (!
|
|
607
|
-
|
|
849
|
+
if (!enqueued.has(neighborId)) {
|
|
850
|
+
enqueued.add(neighborId);
|
|
608
851
|
queue.push(neighborId);
|
|
609
852
|
}
|
|
610
853
|
}
|
|
@@ -613,9 +856,6 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
613
856
|
|
|
614
857
|
// Check if all nodes are reachable
|
|
615
858
|
// This would require maintaining a separate set/count of all nodes
|
|
616
|
-
if (visited.size !== this.totalNodes) {
|
|
617
|
-
console.log('visited', visited.size, 'total', this.totalNodes);
|
|
618
|
-
}
|
|
619
859
|
return {
|
|
620
860
|
isFullyConnected: visited.size === this.totalNodes,
|
|
621
861
|
averageConnections: connections / visited.size,
|
|
@@ -661,7 +901,12 @@ export class HierarchicalNavigableSmallWorld {
|
|
|
661
901
|
|
|
662
902
|
let distanceFunction = this.distance;
|
|
663
903
|
if (sortDefinition.type)
|
|
664
|
-
distanceFunction =
|
|
904
|
+
distanceFunction =
|
|
905
|
+
sortDefinition.distance === 'euclidean'
|
|
906
|
+
? euclideanDistance
|
|
907
|
+
: sortDefinition.distance === 'dotProduct'
|
|
908
|
+
? dotProductDistance
|
|
909
|
+
: cosineDistance;
|
|
665
910
|
const distance = distanceFunction(sortDefinition.target, vector);
|
|
666
911
|
vectorDistances.set(entry, distance);
|
|
667
912
|
return distance;
|
|
@@ -36,3 +36,20 @@ export function cosineDistance(a: number[], b: number[]): number {
|
|
|
36
36
|
|
|
37
37
|
return 1 - dotProduct / (magnitudeA * magnitudeB || 1);
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
export function dotProductDistance(a: number[], b: number[]): number {
|
|
41
|
+
if (!Array.isArray(a) || !Array.isArray(b)) {
|
|
42
|
+
throw new Error('Inner product comparison requires an array');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let dotProduct = 0;
|
|
46
|
+
const length = Math.max(a.length, b.length);
|
|
47
|
+
|
|
48
|
+
for (let i = 0; i < length; i++) {
|
|
49
|
+
const va = a[i] || 0;
|
|
50
|
+
const vb = b[i] || 0;
|
|
51
|
+
dotProduct += va * vb;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return -dotProduct;
|
|
55
|
+
}
|