@harperfast/harper-pro 5.0.25 → 5.1.0-beta.1
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/analytics/profile.ts +4 -0
- package/core/AGENTS.md +92 -6
- package/core/DESIGN.md +24 -0
- package/core/README.md +11 -10
- package/core/agent/agent.ts +203 -0
- package/core/agent/loop.ts +205 -0
- package/core/agent/operations.ts +148 -0
- package/core/agent/session.ts +187 -0
- package/core/agent/tools/fsTools.ts +276 -0
- package/core/agent/tools/httpFetchTool.ts +112 -0
- package/core/agent/tools/scheduleTool.ts +68 -0
- package/core/agent/toolset.ts +43 -0
- package/core/agent/types.ts +85 -0
- package/core/benchmarks/hnsw-search.js +157 -0
- package/core/benchmarks/ycsb/README.md +144 -0
- package/core/benchmarks/ycsb/analyze-profile.mts +120 -0
- package/core/benchmarks/ycsb/app/config.yaml +3 -0
- package/core/benchmarks/ycsb/app/schema.graphql +17 -0
- package/core/benchmarks/ycsb/harness.mts +328 -0
- package/core/benchmarks/ycsb/restClient.mts +120 -0
- package/core/benchmarks/ycsb/run-single-node.mts +97 -0
- package/core/benchmarks/ycsb/to-benchmark-json.mts +58 -0
- package/core/benchmarks/ycsb/workload.mts +499 -0
- package/core/benchmarks/ycsb/workload.test.mts +174 -0
- package/core/bin/{BinObjects.js → BinObjects.ts} +4 -5
- package/core/bin/cliCredentials.ts +133 -0
- package/core/bin/cliOperations.ts +339 -0
- package/core/bin/copyDb.ts +10 -10
- package/core/bin/deployRenderer.ts +196 -0
- package/core/bin/{harper.js → harper.ts} +48 -24
- package/core/bin/{install.js → install.ts} +3 -3
- package/core/bin/lite.ts +2 -0
- package/core/bin/login.ts +168 -0
- package/core/bin/logout.ts +11 -0
- package/core/bin/mcp/client.ts +407 -0
- package/core/bin/mcp/doctor.ts +189 -0
- package/core/bin/mcp/index.ts +80 -0
- package/core/bin/mcp/options.ts +122 -0
- package/core/bin/mcp/printConfig.ts +89 -0
- package/core/bin/multipartBuilder.ts +74 -0
- package/core/bin/{restart.js → restart.ts} +31 -32
- package/core/bin/{run.js → run.ts} +57 -46
- package/core/bin/sseConsumer.ts +126 -0
- package/core/bin/{status.js → status.ts} +10 -10
- package/core/bin/stop.ts +21 -0
- package/core/bin/upgrade.js +6 -6
- package/core/components/Application.ts +144 -18
- package/core/components/ApplicationScope.ts +2 -2
- package/core/components/ComponentV1.ts +2 -2
- package/core/components/EntryHandler.ts +159 -9
- package/core/components/OptionsWatcher.ts +75 -11
- package/core/components/Scope.ts +125 -15
- package/core/components/anthropic/index.ts +547 -0
- package/core/components/bedrock/index.ts +823 -0
- package/core/components/componentLoader.ts +63 -32
- package/core/components/deployLifecycle.ts +161 -0
- package/core/components/deploymentOperations.ts +173 -0
- package/core/components/deploymentRecorder.ts +402 -0
- package/core/components/deriveURLPath.ts +4 -4
- package/core/components/mcp/adapters/fastify.ts +87 -0
- package/core/components/mcp/adapters/harperHttp.ts +103 -0
- package/core/components/mcp/audit.ts +75 -0
- package/core/components/mcp/index.ts +134 -0
- package/core/components/mcp/jsonrpc.ts +134 -0
- package/core/components/mcp/lifecycle.ts +105 -0
- package/core/components/mcp/listChanged.ts +270 -0
- package/core/components/mcp/rateLimit.ts +217 -0
- package/core/components/mcp/resources.ts +593 -0
- package/core/components/mcp/session.ts +151 -0
- package/core/components/mcp/sessionRegistry.ts +140 -0
- package/core/components/mcp/toolRegistry.ts +292 -0
- package/core/components/mcp/tools/application.ts +603 -0
- package/core/components/mcp/tools/operations.ts +283 -0
- package/core/components/mcp/tools/schemas/derive.ts +256 -0
- package/core/components/mcp/tools/schemas/operations.ts +245 -0
- package/core/components/mcp/transport.ts +517 -0
- package/core/components/ollama/index.ts +316 -0
- package/core/components/openai/index.ts +563 -0
- package/core/components/operations.js +211 -60
- package/core/components/operationsValidation.js +3 -3
- package/core/components/packageComponent.ts +97 -29
- package/core/components/requestRestart.ts +17 -2
- package/core/components/status/crossThread.ts +14 -5
- package/core/components/status/errors.ts +1 -1
- package/core/config/RootConfigWatcher.ts +56 -2
- package/core/config/configUtils.js +29 -8
- package/core/config/harperConfigEnvVars.ts +1 -1
- package/core/dataLayer/{CreateAttributeObject.js → CreateAttributeObject.ts} +4 -3
- package/core/dataLayer/{CreateTableObject.js → CreateTableObject.ts} +2 -1
- package/core/dataLayer/{DataLayerObjects.js → DataLayerObjects.ts} +17 -9
- package/core/dataLayer/{DeleteBeforeObject.js → DeleteBeforeObject.ts} +2 -1
- package/core/dataLayer/{DeleteObject.js → DeleteObject.ts} +3 -2
- package/core/dataLayer/{DropAttributeObject.js → DropAttributeObject.ts} +2 -1
- package/core/dataLayer/{GetBackupObject.js → GetBackupObject.ts} +3 -2
- package/core/dataLayer/{InsertObject.js → InsertObject.ts} +3 -2
- package/core/dataLayer/{ReadAuditLogObject.js → ReadAuditLogObject.ts} +3 -2
- package/core/dataLayer/{SQLSearch.js → SQLSearch.ts} +97 -43
- package/core/dataLayer/{SearchByConditionsObject.js → SearchByConditionsObject.ts} +5 -6
- package/core/dataLayer/{SearchByHashObject.js → SearchByHashObject.ts} +2 -1
- package/core/dataLayer/{SearchObject.js → SearchObject.ts} +2 -1
- package/core/dataLayer/{SqlSearchObject.js → SqlSearchObject.ts} +2 -1
- package/core/dataLayer/{UpdateObject.js → UpdateObject.ts} +3 -2
- package/core/dataLayer/{UpsertObject.js → UpsertObject.ts} +3 -2
- package/core/dataLayer/{bulkLoad.js → bulkLoad.ts} +40 -49
- package/core/dataLayer/{delete.js → delete.ts} +21 -26
- package/core/dataLayer/{export.js → export.ts} +22 -26
- package/core/dataLayer/{getBackup.js → getBackup.ts} +7 -9
- package/core/dataLayer/harperBridge/BridgeMethods.ts +102 -0
- package/core/dataLayer/harperBridge/ResourceBridge.ts +27 -26
- package/core/dataLayer/harperBridge/TableSizeObject.ts +1 -0
- package/core/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/core/dataLayer/harperBridge/{harperBridge.js → harperBridge.ts} +3 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +8 -6
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +6 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +5 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +6 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +5 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +3 -2
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +10 -8
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +4 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +6 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +2 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +3 -2
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +5 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +6 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.ts +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/core/dataLayer/{hdbInfoController.js → hdbInfoController.ts} +20 -26
- package/core/dataLayer/{insert.js → insert.ts} +24 -24
- package/core/dataLayer/{readAuditLog.js → readAuditLog.ts} +8 -10
- package/core/dataLayer/{schema.js → schema.ts} +32 -44
- package/core/dataLayer/{schemaDescribe.js → schemaDescribe.ts} +23 -26
- package/core/dataLayer/{search.js → search.ts} +9 -15
- package/core/dataLayer/{transaction.js → transaction.ts} +2 -5
- package/core/dataLayer/{update.js → update.ts} +19 -22
- package/core/index.ts +5 -0
- package/core/json/systemSchema.json +65 -0
- package/core/launchServiceScripts/utility/checkNodeVersion.js +2 -0
- package/core/package-lock.json +9051 -4318
- package/core/resources/DESIGN.md +98 -0
- package/core/resources/DatabaseTransaction.ts +58 -30
- package/core/resources/ErrorResource.ts +2 -1
- package/core/resources/LMDBTransaction.ts +38 -29
- package/core/resources/RecordEncoder.ts +12 -4
- package/core/resources/RequestTarget.ts +2 -0
- package/core/resources/Resource.ts +89 -56
- package/core/resources/ResourceInterface.ts +44 -21
- package/core/resources/Resources.ts +8 -8
- package/core/resources/RocksIndexStore.ts +3 -0
- package/core/resources/RocksTransactionLogStore.ts +47 -28
- package/core/resources/Table.ts +386 -214
- package/core/resources/analytics/metadata.ts +1 -0
- package/core/resources/analytics/read.ts +24 -6
- package/core/resources/analytics/write.ts +240 -17
- package/core/resources/auditStore.ts +28 -19
- package/core/resources/blob.ts +53 -53
- package/core/resources/dataLoader.ts +4 -4
- package/core/resources/databases.ts +190 -71
- package/core/resources/graphql.ts +227 -164
- package/core/resources/indexes/HierarchicalNavigableSmallWorld.ts +294 -65
- package/core/resources/indexes/vector.ts +17 -0
- package/core/resources/loadEnv.ts +21 -17
- package/core/resources/login.ts +5 -3
- package/core/resources/models/Models.ts +304 -0
- package/core/resources/models/TestBackend.ts +83 -0
- package/core/resources/models/agentLoop.ts +895 -0
- package/core/resources/models/analyticsTable.ts +199 -0
- package/core/resources/models/backendHelpers.ts +116 -0
- package/core/resources/models/backendRegistry.ts +66 -0
- package/core/resources/models/bootstrap.ts +135 -0
- package/core/resources/models/embedHook.ts +138 -0
- package/core/resources/models/types.ts +296 -0
- package/core/resources/replayLogs.ts +15 -7
- package/core/resources/roles.ts +62 -67
- package/core/resources/search.ts +355 -135
- package/core/resources/tracked.ts +8 -8
- package/core/resources/transaction.ts +8 -8
- package/core/resources/transactionBroadcast.ts +3 -3
- package/core/security/auth.ts +35 -26
- package/core/security/certificateVerification/crlVerification.ts +11 -4
- package/core/security/{cryptoHash.js → cryptoHash.ts} +3 -8
- package/core/security/data_objects/{PermissionAttributeResponseObject.js → PermissionAttributeResponseObject.ts} +4 -4
- package/core/security/data_objects/{PermissionResponseObject.js → PermissionResponseObject.ts} +12 -11
- package/core/security/data_objects/{PermissionTableResponseObject.js → PermissionTableResponseObject.ts} +6 -4
- package/core/security/{fastifyAuth.js → fastifyAuth.ts} +93 -20
- package/core/security/impersonation.ts +3 -3
- package/core/security/jsLoader.ts +22 -8
- package/core/security/{keys.js → keys.ts} +113 -121
- package/core/security/permissionsTranslator.js +2 -2
- package/core/security/{role.js → role.ts} +26 -33
- package/core/security/tokenAuthentication.ts +34 -7
- package/core/security/user.ts +26 -22
- package/core/server/DESIGN.md +139 -0
- package/core/server/DurableSubscriptionsSession.ts +67 -50
- package/core/server/REST.ts +120 -107
- package/core/server/Server.ts +31 -12
- package/core/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/core/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/core/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/core/server/fastifyRoutes.ts +37 -33
- package/core/server/graphqlQuerying.ts +6 -5
- package/core/server/http.ts +517 -26
- package/core/server/itc/serverHandlers.js +75 -14
- package/core/server/jobs/{JobObject.js → JobObject.ts} +13 -6
- package/core/server/jobs/{jobProcess.js → jobProcess.ts} +20 -16
- package/core/server/jobs/{jobRunner.js → jobRunner.ts} +20 -21
- package/core/server/jobs/{jobs.js → jobs.ts} +41 -44
- package/core/server/loadRootComponents.js +1 -1
- package/core/server/middlewareChain.ts +270 -0
- package/core/server/mqtt.ts +35 -26
- package/core/server/nodeName.ts +2 -1
- package/core/server/operationsServer.ts +85 -10
- package/core/server/serverHelpers/Headers.ts +10 -8
- package/core/server/serverHelpers/JSONStream.ts +15 -5
- package/core/server/serverHelpers/Request.ts +370 -13
- package/core/server/serverHelpers/contentTypes.ts +42 -11
- package/core/server/serverHelpers/multipartParser.ts +152 -0
- package/core/server/serverHelpers/progressEmitter.ts +110 -0
- package/core/server/serverHelpers/serverHandlers.js +43 -7
- package/core/server/serverHelpers/serverUtilities.ts +40 -30
- package/core/server/static.ts +9 -6
- package/core/server/status/index.ts +2 -2
- package/core/server/storageReclamation.ts +39 -2
- package/core/server/threads/itc.js +7 -4
- package/core/server/threads/manageThreads.js +100 -26
- package/core/server/threads/socketRouter.ts +12 -275
- package/core/server/threads/threadServer.js +345 -105
- package/core/server/threads/workerProcessGuard.ts +93 -0
- package/core/server/throttle.ts +18 -0
- package/core/sqlTranslator/{SelectValidator.js → SelectValidator.ts} +41 -49
- package/core/sqlTranslator/{alasqlFunctionImporter.js → alasqlFunctionImporter.ts} +5 -5
- package/core/sqlTranslator/{deleteTranslator.js → deleteTranslator.ts} +13 -18
- package/core/sqlTranslator/{index.js → index.ts} +30 -33
- package/core/sqlTranslator/{sql_statement_bucket.js → sql_statement_bucket.ts} +49 -20
- package/core/static/README.md +10 -9
- package/core/system/000004.log +0 -0
- package/core/system/CURRENT +1 -0
- package/core/system/IDENTITY +1 -0
- package/core/system/LOCK +0 -0
- package/core/system/LOG +1351 -0
- package/core/system/MANIFEST-000005 +0 -0
- package/core/system/OPTIONS-000013 +607 -0
- package/core/system/OPTIONS-000015 +734 -0
- package/core/upgrade/{UpgradeObjects.js → UpgradeObjects.ts} +3 -6
- package/core/upgrade/directives/5-2-0.ts +49 -0
- package/core/upgrade/directives/{directivesController.js → directivesController.ts} +16 -16
- package/core/upgrade/{directivesManager.js → directivesManager.ts} +7 -11
- package/core/upgrade/{upgradePrompt.js → upgradePrompt.ts} +8 -14
- package/core/upgrade/{upgradeUtilities.js → upgradeUtilities.ts} +3 -7
- package/core/utility/{OperationFunctionCaller.js → OperationFunctionCaller.ts} +7 -7
- package/core/utility/{assignCmdEnvVariables.js → assignCmdEnvVariables.ts} +6 -8
- package/core/utility/{common_utils.js → common_utils.ts} +113 -139
- package/core/utility/environment/{environmentManager.js → environmentManager.ts} +34 -33
- package/core/utility/environment/systemInformation.ts +18 -4
- package/core/utility/errors/{commonErrors.js → commonErrors.ts} +9 -9
- package/core/utility/errors/{hdbError.js → hdbError.ts} +39 -45
- package/core/utility/expandEnvVar.ts +110 -0
- package/core/utility/functions/geo.js +2 -2
- package/core/utility/functions/sql/alaSQLExtension.js +1 -1
- package/core/utility/globalSchema.ts +30 -0
- package/core/utility/hdbTerms.ts +56 -0
- package/core/utility/install/checkJWTTokensExist.js +1 -1
- package/core/utility/install/{installer.js → installer.ts} +58 -59
- package/core/utility/installation.ts +2 -2
- package/core/utility/lmdb/{DBIDefinition.js → DBIDefinition.ts} +4 -1
- package/core/utility/lmdb/{DeleteRecordsResponseObject.js → DeleteRecordsResponseObject.ts} +2 -1
- package/core/utility/lmdb/{InsertRecordsResponseObject.js → InsertRecordsResponseObject.ts} +2 -1
- package/core/utility/lmdb/OpenDBIObject.ts +43 -0
- package/core/utility/lmdb/{OpenEnvironmentObject.js → OpenEnvironmentObject.ts} +19 -6
- package/core/utility/lmdb/{UpdateRecordsResponseObject.js → UpdateRecordsResponseObject.ts} +2 -1
- package/core/utility/lmdb/{UpsertRecordsResponseObject.js → UpsertRecordsResponseObject.ts} +2 -1
- package/core/utility/lmdb/{cleanLMDBMap.js → cleanLMDBMap.ts} +5 -5
- package/core/utility/lmdb/{commonUtility.js → commonUtility.ts} +13 -21
- package/core/utility/lmdb/{deleteUtility.js → deleteUtility.ts} +8 -12
- package/core/utility/lmdb/{environmentUtility.js → environmentUtility.ts} +43 -52
- package/core/utility/lmdb/{searchCursorFunctions.js → searchCursorFunctions.ts} +12 -26
- package/core/utility/lmdb/{searchUtility.js → searchUtility.ts} +75 -64
- package/core/utility/lmdb/{terms.js → terms.ts} +10 -23
- package/core/utility/lmdb/{writeUtility.js → writeUtility.ts} +37 -22
- package/core/utility/logging/{harper_logger.js → harper_logger.ts} +136 -89
- package/core/utility/logging/{logRotator.js → logRotator.ts} +13 -13
- package/core/utility/logging/logger.ts +1 -1
- package/core/utility/logging/{readLog.js → readLog.ts} +19 -19
- package/core/utility/logging/{transactionLog.js → transactionLog.ts} +10 -14
- package/core/utility/{mount_hdb.js → mount_hdb.ts} +15 -16
- package/core/utility/{npmUtilities.js → npmUtilities.ts} +14 -17
- package/core/utility/{operation_authorization.js → operation_authorization.ts} +173 -124
- package/core/utility/packageUtils.js +7 -16
- package/core/utility/password.ts +1 -1
- package/core/utility/processManagement/processManagement.js +2 -2
- package/core/utility/processManagement/servicesConfig.js +1 -1
- package/core/utility/{signalling.js → signalling.ts} +6 -11
- package/core/utility/watcherFallback.ts +74 -0
- package/core/validation/analyticsValidator.ts +43 -0
- package/core/validation/{bulkDeleteValidator.js → bulkDeleteValidator.ts} +5 -5
- package/core/validation/{check_permissions.js → check_permissions.ts} +3 -3
- package/core/validation/{common_validators.js → common_validators.ts} +12 -24
- package/core/validation/{configValidator.js → configValidator.ts} +114 -18
- package/core/validation/{deleteValidator.js → deleteValidator.ts} +5 -5
- package/core/validation/{fileLoadValidator.js → fileLoadValidator.ts} +12 -19
- package/core/validation/{insertValidator.js → insertValidator.ts} +5 -5
- package/core/validation/{installValidator.js → installValidator.ts} +8 -8
- package/core/validation/{readLogValidator.js → readLogValidator.ts} +10 -10
- package/core/validation/{role_validation.js → role_validation.ts} +26 -32
- package/core/validation/{schemaMetadataValidator.js → schemaMetadataValidator.ts} +5 -11
- package/core/validation/{searchValidator.js → searchValidator.ts} +12 -11
- package/core/validation/statusValidator.ts +1 -1
- package/core/validation/{transactionLogValidator.js → transactionLogValidator.ts} +4 -9
- package/core/validation/{user_validation.js → user_validation.ts} +4 -10
- package/core/validation/{validationWrapper.js → validationWrapper.ts} +3 -9
- package/dist/analytics/profile.js +4 -0
- package/dist/analytics/profile.js.map +1 -1
- package/dist/cloneNode/cloneNode.js +224 -12
- package/dist/cloneNode/cloneNode.js.map +1 -1
- package/dist/core/agent/agent.js +175 -0
- package/dist/core/agent/agent.js.map +1 -0
- package/dist/core/agent/loop.js +176 -0
- package/dist/core/agent/loop.js.map +1 -0
- package/dist/core/agent/operations.js +137 -0
- package/dist/core/agent/operations.js.map +1 -0
- package/dist/core/agent/session.js +182 -0
- package/dist/core/agent/session.js.map +1 -0
- package/dist/core/agent/tools/fsTools.js +286 -0
- package/dist/core/agent/tools/fsTools.js.map +1 -0
- package/dist/core/agent/tools/httpFetchTool.js +116 -0
- package/dist/core/agent/tools/httpFetchTool.js.map +1 -0
- package/dist/core/agent/tools/scheduleTool.js +54 -0
- package/dist/core/agent/tools/scheduleTool.js.map +1 -0
- package/dist/core/agent/toolset.js +33 -0
- package/dist/core/agent/toolset.js.map +1 -0
- package/dist/core/agent/types.js +10 -0
- package/dist/core/agent/types.js.map +1 -0
- package/dist/core/bin/BinObjects.js +6 -3
- package/dist/core/bin/BinObjects.js.map +1 -1
- package/dist/core/bin/cliCredentials.js +130 -0
- package/dist/core/bin/cliCredentials.js.map +1 -0
- package/dist/core/bin/cliOperations.js +254 -40
- package/dist/core/bin/cliOperations.js.map +1 -1
- package/dist/core/bin/copyDb.js +16 -16
- package/dist/core/bin/copyDb.js.map +1 -1
- package/dist/core/bin/deployRenderer.js +185 -0
- package/dist/core/bin/deployRenderer.js.map +1 -0
- package/dist/core/bin/harper.js +92 -31
- package/dist/core/bin/harper.js.map +1 -1
- package/dist/core/bin/install.js +41 -4
- package/dist/core/bin/install.js.map +1 -1
- package/dist/core/bin/lite.js +3 -4
- package/dist/core/bin/lite.js.map +1 -1
- package/dist/core/bin/login.js +158 -0
- package/dist/core/bin/login.js.map +1 -0
- package/dist/core/bin/logout.js +16 -0
- package/dist/core/bin/logout.js.map +1 -0
- package/dist/core/bin/mcp/client.js +395 -0
- package/dist/core/bin/mcp/client.js.map +1 -0
- package/dist/core/bin/mcp/doctor.js +193 -0
- package/dist/core/bin/mcp/doctor.js.map +1 -0
- package/dist/core/bin/mcp/index.js +81 -0
- package/dist/core/bin/mcp/index.js.map +1 -0
- package/dist/core/bin/mcp/options.js +113 -0
- package/dist/core/bin/mcp/options.js.map +1 -0
- package/dist/core/bin/mcp/printConfig.js +85 -0
- package/dist/core/bin/mcp/printConfig.js.map +1 -0
- package/dist/core/bin/multipartBuilder.js +55 -0
- package/dist/core/bin/multipartBuilder.js.map +1 -0
- package/dist/core/bin/restart.js +85 -48
- package/dist/core/bin/restart.js.map +1 -1
- package/dist/core/bin/run.js +123 -77
- package/dist/core/bin/run.js.map +1 -1
- package/dist/core/bin/sseConsumer.js +127 -0
- package/dist/core/bin/sseConsumer.js.map +1 -0
- package/dist/core/bin/status.js +48 -11
- package/dist/core/bin/status.js.map +1 -1
- package/dist/core/bin/stop.js +44 -7
- package/dist/core/bin/stop.js.map +1 -1
- package/dist/core/bin/upgrade.js +6 -6
- package/dist/core/components/Application.js +134 -28
- package/dist/core/components/Application.js.map +1 -1
- package/dist/core/components/ApplicationScope.js +2 -2
- package/dist/core/components/ComponentV1.js +5 -5
- package/dist/core/components/ComponentV1.js.map +1 -1
- package/dist/core/components/EntryHandler.js +153 -13
- package/dist/core/components/EntryHandler.js.map +1 -1
- package/dist/core/components/OptionsWatcher.js +72 -10
- package/dist/core/components/OptionsWatcher.js.map +1 -1
- package/dist/core/components/Scope.js +105 -9
- package/dist/core/components/Scope.js.map +1 -1
- package/dist/core/components/anthropic/index.js +428 -0
- package/dist/core/components/anthropic/index.js.map +1 -0
- package/dist/core/components/bedrock/index.js +734 -0
- package/dist/core/components/bedrock/index.js.map +1 -0
- package/dist/core/components/componentLoader.js +63 -38
- package/dist/core/components/componentLoader.js.map +1 -1
- package/dist/core/components/deployLifecycle.js +156 -0
- package/dist/core/components/deployLifecycle.js.map +1 -0
- package/dist/core/components/deploymentOperations.js +185 -0
- package/dist/core/components/deploymentOperations.js.map +1 -0
- package/dist/core/components/deploymentRecorder.js +401 -0
- package/dist/core/components/deploymentRecorder.js.map +1 -0
- package/dist/core/components/deriveURLPath.js +2 -2
- package/dist/core/components/deriveURLPath.js.map +1 -1
- package/dist/core/components/mcp/adapters/fastify.js +66 -0
- package/dist/core/components/mcp/adapters/fastify.js.map +1 -0
- package/dist/core/components/mcp/adapters/harperHttp.js +78 -0
- package/dist/core/components/mcp/adapters/harperHttp.js.map +1 -0
- package/dist/core/components/mcp/audit.js +73 -0
- package/dist/core/components/mcp/audit.js.map +1 -0
- package/dist/core/components/mcp/index.js +109 -0
- package/dist/core/components/mcp/index.js.map +1 -0
- package/dist/core/components/mcp/jsonrpc.js +93 -0
- package/dist/core/components/mcp/jsonrpc.js.map +1 -0
- package/dist/core/components/mcp/lifecycle.js +79 -0
- package/dist/core/components/mcp/lifecycle.js.map +1 -0
- package/dist/core/components/mcp/listChanged.js +257 -0
- package/dist/core/components/mcp/listChanged.js.map +1 -0
- package/dist/core/components/mcp/rateLimit.js +226 -0
- package/dist/core/components/mcp/rateLimit.js.map +1 -0
- package/dist/core/components/mcp/resources.js +515 -0
- package/dist/core/components/mcp/resources.js.map +1 -0
- package/dist/core/components/mcp/session.js +170 -0
- package/dist/core/components/mcp/session.js.map +1 -0
- package/dist/core/components/mcp/sessionRegistry.js +124 -0
- package/dist/core/components/mcp/sessionRegistry.js.map +1 -0
- package/dist/core/components/mcp/toolRegistry.js +176 -0
- package/dist/core/components/mcp/toolRegistry.js.map +1 -0
- package/dist/core/components/mcp/tools/application.js +549 -0
- package/dist/core/components/mcp/tools/application.js.map +1 -0
- package/dist/core/components/mcp/tools/operations.js +303 -0
- package/dist/core/components/mcp/tools/operations.js.map +1 -0
- package/dist/core/components/mcp/tools/schemas/derive.js +216 -0
- package/dist/core/components/mcp/tools/schemas/derive.js.map +1 -0
- package/dist/core/components/mcp/tools/schemas/operations.js +243 -0
- package/dist/core/components/mcp/tools/schemas/operations.js.map +1 -0
- package/dist/core/components/mcp/transport.js +467 -0
- package/dist/core/components/mcp/transport.js.map +1 -0
- package/dist/core/components/ollama/index.js +239 -0
- package/dist/core/components/ollama/index.js.map +1 -0
- package/dist/core/components/openai/index.js +475 -0
- package/dist/core/components/openai/index.js.map +1 -0
- package/dist/core/components/operations.js +198 -52
- package/dist/core/components/operations.js.map +1 -1
- package/dist/core/components/operationsValidation.js +3 -3
- package/dist/core/components/packageComponent.js +87 -26
- package/dist/core/components/packageComponent.js.map +1 -1
- package/dist/core/components/requestRestart.js +12 -1
- package/dist/core/components/requestRestart.js.map +1 -1
- package/dist/core/components/status/crossThread.js +12 -5
- package/dist/core/components/status/crossThread.js.map +1 -1
- package/dist/core/components/status/errors.js +7 -7
- package/dist/core/config/RootConfigWatcher.js +52 -1
- package/dist/core/config/RootConfigWatcher.js.map +1 -1
- package/dist/core/config/configUtils.js +31 -8
- package/dist/core/config/configUtils.js.map +1 -1
- package/dist/core/config/harperConfigEnvVars.js +1 -1
- package/dist/core/config/harperConfigEnvVars.js.map +1 -1
- package/dist/core/dataLayer/CreateAttributeObject.js +4 -3
- package/dist/core/dataLayer/CreateAttributeObject.js.map +1 -1
- package/dist/core/dataLayer/CreateTableObject.js +2 -1
- package/dist/core/dataLayer/CreateTableObject.js.map +1 -1
- package/dist/core/dataLayer/DataLayerObjects.js +19 -5
- package/dist/core/dataLayer/DataLayerObjects.js.map +1 -1
- package/dist/core/dataLayer/DeleteBeforeObject.js +2 -1
- package/dist/core/dataLayer/DeleteBeforeObject.js.map +1 -1
- package/dist/core/dataLayer/DeleteObject.js +4 -3
- package/dist/core/dataLayer/DeleteObject.js.map +1 -1
- package/dist/core/dataLayer/DropAttributeObject.js +2 -1
- package/dist/core/dataLayer/DropAttributeObject.js.map +1 -1
- package/dist/core/dataLayer/GetBackupObject.js +4 -3
- package/dist/core/dataLayer/GetBackupObject.js.map +1 -1
- package/dist/core/dataLayer/InsertObject.js +4 -3
- package/dist/core/dataLayer/InsertObject.js.map +1 -1
- package/dist/core/dataLayer/ReadAuditLogObject.js +4 -3
- package/dist/core/dataLayer/ReadAuditLogObject.js.map +1 -1
- package/dist/core/dataLayer/SQLSearch.js +140 -78
- package/dist/core/dataLayer/SQLSearch.js.map +1 -1
- package/dist/core/dataLayer/SearchByConditionsObject.js +5 -7
- package/dist/core/dataLayer/SearchByConditionsObject.js.map +1 -1
- package/dist/core/dataLayer/SearchByHashObject.js +2 -1
- package/dist/core/dataLayer/SearchByHashObject.js.map +1 -1
- package/dist/core/dataLayer/SearchObject.js +2 -1
- package/dist/core/dataLayer/SearchObject.js.map +1 -1
- package/dist/core/dataLayer/SqlSearchObject.js +2 -1
- package/dist/core/dataLayer/SqlSearchObject.js.map +1 -1
- package/dist/core/dataLayer/UpdateObject.js +4 -3
- package/dist/core/dataLayer/UpdateObject.js.map +1 -1
- package/dist/core/dataLayer/UpsertObject.js +4 -3
- package/dist/core/dataLayer/UpsertObject.js.map +1 -1
- package/dist/core/dataLayer/bulkLoad.js +122 -88
- package/dist/core/dataLayer/bulkLoad.js.map +1 -1
- package/dist/core/dataLayer/delete.js +74 -39
- package/dist/core/dataLayer/delete.js.map +1 -1
- package/dist/core/dataLayer/export.js +90 -55
- package/dist/core/dataLayer/export.js.map +1 -1
- package/dist/core/dataLayer/getBackup.js +43 -11
- package/dist/core/dataLayer/getBackup.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/BridgeMethods.js +41 -20
- package/dist/core/dataLayer/harperBridge/BridgeMethods.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/ResourceBridge.js +26 -25
- package/dist/core/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/TableSizeObject.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/dist/core/dataLayer/harperBridge/harperBridge.js +38 -4
- package/dist/core/dataLayer/harperBridge/harperBridge.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +7 -6
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +5 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +2 -2
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +8 -8
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +3 -3
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +2 -2
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +5 -3
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +2 -2
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/dist/core/dataLayer/hdbInfoController.js +66 -31
- package/dist/core/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/core/dataLayer/insert.js +63 -28
- package/dist/core/dataLayer/insert.js.map +1 -1
- package/dist/core/dataLayer/readAuditLog.js +45 -13
- package/dist/core/dataLayer/readAuditLog.js.map +1 -1
- package/dist/core/dataLayer/schema.js +124 -89
- package/dist/core/dataLayer/schema.js.map +1 -1
- package/dist/core/dataLayer/schemaDescribe.js +78 -41
- package/dist/core/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/core/dataLayer/search.js +12 -13
- package/dist/core/dataLayer/search.js.map +1 -1
- package/dist/core/dataLayer/transaction.js +3 -4
- package/dist/core/dataLayer/transaction.js.map +1 -1
- package/dist/core/dataLayer/update.js +53 -18
- package/dist/core/dataLayer/update.js.map +1 -1
- package/dist/core/globals.js +1 -0
- package/dist/core/globals.js.map +1 -1
- package/dist/core/index.js +4 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/json/systemSchema.json +65 -0
- package/dist/core/launchServiceScripts/utility/checkNodeVersion.js +3 -0
- package/dist/core/launchServiceScripts/utility/checkNodeVersion.js.map +1 -1
- package/dist/core/resources/DatabaseTransaction.js +39 -15
- package/dist/core/resources/DatabaseTransaction.js.map +1 -1
- package/dist/core/resources/ErrorResource.js +3 -1
- package/dist/core/resources/ErrorResource.js.map +1 -1
- package/dist/core/resources/LMDBTransaction.js +18 -7
- package/dist/core/resources/LMDBTransaction.js.map +1 -1
- package/dist/core/resources/RecordEncoder.js +5 -2
- package/dist/core/resources/RecordEncoder.js.map +1 -1
- package/dist/core/resources/RequestTarget.js.map +1 -1
- package/dist/core/resources/Resource.js +37 -10
- package/dist/core/resources/Resource.js.map +1 -1
- package/dist/core/resources/ResourceInterface.js +20 -0
- package/dist/core/resources/ResourceInterface.js.map +1 -1
- package/dist/core/resources/Resources.js +7 -6
- package/dist/core/resources/Resources.js.map +1 -1
- package/dist/core/resources/RocksIndexStore.js +3 -0
- package/dist/core/resources/RocksIndexStore.js.map +1 -1
- package/dist/core/resources/RocksTransactionLogStore.js +46 -27
- package/dist/core/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/core/resources/Table.js +267 -107
- package/dist/core/resources/Table.js.map +1 -1
- package/dist/core/resources/analytics/metadata.js +1 -0
- package/dist/core/resources/analytics/metadata.js.map +1 -1
- package/dist/core/resources/analytics/read.js +16 -5
- package/dist/core/resources/analytics/read.js.map +1 -1
- package/dist/core/resources/analytics/write.js +232 -20
- package/dist/core/resources/analytics/write.js.map +1 -1
- package/dist/core/resources/auditStore.js +13 -8
- package/dist/core/resources/auditStore.js.map +1 -1
- package/dist/core/resources/blob.js +8 -8
- package/dist/core/resources/blob.js.map +1 -1
- package/dist/core/resources/dataLoader.js +13 -13
- package/dist/core/resources/databases.js +160 -52
- package/dist/core/resources/databases.js.map +1 -1
- package/dist/core/resources/graphql.js +224 -174
- package/dist/core/resources/graphql.js.map +1 -1
- package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js +308 -59
- package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/core/resources/indexes/vector.js +14 -0
- package/dist/core/resources/indexes/vector.js.map +1 -1
- package/dist/core/resources/loadEnv.js +21 -18
- package/dist/core/resources/loadEnv.js.map +1 -1
- package/dist/core/resources/login.js +5 -4
- package/dist/core/resources/login.js.map +1 -1
- package/dist/core/resources/models/Models.js +265 -0
- package/dist/core/resources/models/Models.js.map +1 -0
- package/dist/core/resources/models/TestBackend.js +71 -0
- package/dist/core/resources/models/TestBackend.js.map +1 -0
- package/dist/core/resources/models/agentLoop.js +746 -0
- package/dist/core/resources/models/agentLoop.js.map +1 -0
- package/dist/core/resources/models/analyticsTable.js +166 -0
- package/dist/core/resources/models/analyticsTable.js.map +1 -0
- package/dist/core/resources/models/backendHelpers.js +109 -0
- package/dist/core/resources/models/backendHelpers.js.map +1 -0
- package/dist/core/resources/models/backendRegistry.js +54 -0
- package/dist/core/resources/models/backendRegistry.js.map +1 -0
- package/dist/core/resources/models/bootstrap.js +112 -0
- package/dist/core/resources/models/bootstrap.js.map +1 -0
- package/dist/core/resources/models/embedHook.js +127 -0
- package/dist/core/resources/models/embedHook.js.map +1 -0
- package/dist/core/resources/models/types.js +11 -0
- package/dist/core/resources/models/types.js.map +1 -0
- package/dist/core/resources/replayLogs.js +7 -1
- package/dist/core/resources/replayLogs.js.map +1 -1
- package/dist/core/resources/roles.js +67 -71
- package/dist/core/resources/roles.js.map +1 -1
- package/dist/core/resources/search.js +349 -140
- package/dist/core/resources/search.js.map +1 -1
- package/dist/core/resources/tracked.js +14 -14
- package/dist/core/resources/tracked.js.map +1 -1
- package/dist/core/resources/transaction.js +1 -1
- package/dist/core/resources/transaction.js.map +1 -1
- package/dist/core/resources/transactionBroadcast.js.map +1 -1
- package/dist/core/security/auth.js +34 -25
- package/dist/core/security/auth.js.map +1 -1
- package/dist/core/security/certificateVerification/crlVerification.js +7 -1
- package/dist/core/security/certificateVerification/crlVerification.js.map +1 -1
- package/dist/core/security/cryptoHash.js +37 -5
- package/dist/core/security/cryptoHash.js.map +1 -1
- package/dist/core/security/data_objects/PermissionAttributeResponseObject.js +4 -1
- package/dist/core/security/data_objects/PermissionAttributeResponseObject.js.map +1 -1
- package/dist/core/security/data_objects/PermissionResponseObject.js +15 -8
- package/dist/core/security/data_objects/PermissionResponseObject.js.map +1 -1
- package/dist/core/security/data_objects/PermissionTableResponseObject.js +6 -1
- package/dist/core/security/data_objects/PermissionTableResponseObject.js.map +1 -1
- package/dist/core/security/fastifyAuth.js +131 -22
- package/dist/core/security/fastifyAuth.js.map +1 -1
- package/dist/core/security/impersonation.js +15 -15
- package/dist/core/security/jsLoader.js +18 -5
- package/dist/core/security/jsLoader.js.map +1 -1
- package/dist/core/security/keys.js +160 -114
- package/dist/core/security/keys.js.map +1 -1
- package/dist/core/security/permissionsTranslator.js +2 -2
- package/dist/core/security/role.js +70 -35
- package/dist/core/security/role.js.map +1 -1
- package/dist/core/security/tokenAuthentication.js +57 -27
- package/dist/core/security/tokenAuthentication.js.map +1 -1
- package/dist/core/security/user.js +74 -38
- package/dist/core/security/user.js.map +1 -1
- package/dist/core/server/DurableSubscriptionsSession.js +71 -55
- package/dist/core/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/core/server/REST.js +17 -16
- package/dist/core/server/REST.js.map +1 -1
- package/dist/core/server/Server.js +1 -1
- package/dist/core/server/Server.js.map +1 -1
- package/dist/core/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/dist/core/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/dist/core/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/dist/core/server/fastifyRoutes.js +34 -30
- package/dist/core/server/fastifyRoutes.js.map +1 -1
- package/dist/core/server/graphqlQuerying.js +8 -7
- package/dist/core/server/graphqlQuerying.js.map +1 -1
- package/dist/core/server/http.js +523 -47
- package/dist/core/server/http.js.map +1 -1
- package/dist/core/server/itc/serverHandlers.js +66 -15
- package/dist/core/server/itc/serverHandlers.js.map +1 -1
- package/dist/core/server/jobs/JobObject.js +53 -7
- package/dist/core/server/jobs/JobObject.js.map +1 -1
- package/dist/core/server/jobs/jobProcess.js +64 -24
- package/dist/core/server/jobs/jobProcess.js.map +1 -1
- package/dist/core/server/jobs/jobRunner.js +68 -30
- package/dist/core/server/jobs/jobRunner.js.map +1 -1
- package/dist/core/server/jobs/jobs.js +93 -61
- package/dist/core/server/jobs/jobs.js.map +1 -1
- package/dist/core/server/loadRootComponents.js +1 -1
- package/dist/core/server/middlewareChain.js +252 -0
- package/dist/core/server/middlewareChain.js.map +1 -0
- package/dist/core/server/mqtt.js +22 -17
- package/dist/core/server/mqtt.js.map +1 -1
- package/dist/core/server/nodeName.js +44 -13
- package/dist/core/server/nodeName.js.map +1 -1
- package/dist/core/server/operationsServer.js +106 -33
- package/dist/core/server/operationsServer.js.map +1 -1
- package/dist/core/server/serverHelpers/Headers.js +2 -0
- package/dist/core/server/serverHelpers/Headers.js.map +1 -1
- package/dist/core/server/serverHelpers/JSONStream.js +12 -3
- package/dist/core/server/serverHelpers/JSONStream.js.map +1 -1
- package/dist/core/server/serverHelpers/Request.js +370 -9
- package/dist/core/server/serverHelpers/Request.js.map +1 -1
- package/dist/core/server/serverHelpers/contentTypes.js +36 -7
- package/dist/core/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/core/server/serverHelpers/multipartParser.js +142 -0
- package/dist/core/server/serverHelpers/multipartParser.js.map +1 -0
- package/dist/core/server/serverHelpers/progressEmitter.js +103 -0
- package/dist/core/server/serverHelpers/progressEmitter.js.map +1 -0
- package/dist/core/server/serverHelpers/serverHandlers.js +38 -7
- package/dist/core/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/core/server/serverHelpers/serverUtilities.js +97 -93
- package/dist/core/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/core/server/static.js +8 -5
- package/dist/core/server/static.js.map +1 -1
- package/dist/core/server/status/index.js +3 -3
- package/dist/core/server/storageReclamation.js +68 -9
- package/dist/core/server/storageReclamation.js.map +1 -1
- package/dist/core/server/threads/itc.js +7 -4
- package/dist/core/server/threads/itc.js.map +1 -1
- package/dist/core/server/threads/manageThreads.js +110 -26
- package/dist/core/server/threads/manageThreads.js.map +1 -1
- package/dist/core/server/threads/socketRouter.js +8 -271
- package/dist/core/server/threads/socketRouter.js.map +1 -1
- package/dist/core/server/threads/threadServer.js +360 -118
- package/dist/core/server/threads/threadServer.js.map +1 -1
- package/dist/core/server/threads/workerProcessGuard.js +114 -0
- package/dist/core/server/threads/workerProcessGuard.js.map +1 -0
- package/dist/core/server/throttle.js +17 -0
- package/dist/core/server/throttle.js.map +1 -1
- package/dist/core/sqlTranslator/SelectValidator.js +86 -47
- package/dist/core/sqlTranslator/SelectValidator.js.map +1 -1
- package/dist/core/sqlTranslator/alasqlFunctionImporter.js +40 -3
- package/dist/core/sqlTranslator/alasqlFunctionImporter.js.map +1 -1
- package/dist/core/sqlTranslator/deleteTranslator.js +48 -14
- package/dist/core/sqlTranslator/deleteTranslator.js.map +1 -1
- package/dist/core/sqlTranslator/index.js +69 -30
- package/dist/core/sqlTranslator/index.js.map +1 -1
- package/dist/core/sqlTranslator/sql_statement_bucket.js +55 -13
- package/dist/core/sqlTranslator/sql_statement_bucket.js.map +1 -1
- package/dist/core/upgrade/UpgradeObjects.js +37 -4
- package/dist/core/upgrade/UpgradeObjects.js.map +1 -1
- package/dist/core/upgrade/directives/5-2-0.js +77 -0
- package/dist/core/upgrade/directives/5-2-0.js.map +1 -0
- package/dist/core/upgrade/directives/directivesController.js +52 -11
- package/dist/core/upgrade/directives/directivesController.js.map +1 -1
- package/dist/core/upgrade/directivesManager.js +53 -18
- package/dist/core/upgrade/directivesManager.js.map +1 -1
- package/dist/core/upgrade/upgradePrompt.js +65 -30
- package/dist/core/upgrade/upgradePrompt.js.map +1 -1
- package/dist/core/upgrade/upgradeUtilities.js +37 -5
- package/dist/core/upgrade/upgradeUtilities.js.map +1 -1
- package/dist/core/utility/OperationFunctionCaller.js +45 -10
- package/dist/core/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/core/utility/assignCmdEnvVariables.js +8 -4
- package/dist/core/utility/assignCmdEnvVariables.js.map +1 -1
- package/dist/core/utility/common_utils.js +140 -79
- package/dist/core/utility/common_utils.js.map +1 -1
- package/dist/core/utility/environment/environmentManager.js +75 -29
- package/dist/core/utility/environment/environmentManager.js.map +1 -1
- package/dist/core/utility/environment/systemInformation.js +27 -16
- package/dist/core/utility/environment/systemInformation.js.map +1 -1
- package/dist/core/utility/errors/commonErrors.js +49 -18
- package/dist/core/utility/errors/commonErrors.js.map +1 -1
- package/dist/core/utility/errors/hdbError.js +65 -26
- package/dist/core/utility/errors/hdbError.js.map +1 -1
- package/dist/core/utility/expandEnvVar.js +113 -0
- package/dist/core/utility/expandEnvVar.js.map +1 -0
- package/dist/core/utility/functions/geo.js +2 -2
- package/dist/core/utility/functions/sql/alaSQLExtension.js +1 -1
- package/dist/core/utility/globalSchema.js +14 -11
- package/dist/core/utility/globalSchema.js.map +1 -1
- package/dist/core/utility/hdbTerms.js +56 -0
- package/dist/core/utility/hdbTerms.js.map +1 -1
- package/dist/core/utility/install/checkJWTTokensExist.js +1 -1
- package/dist/core/utility/install/installer.js +106 -70
- package/dist/core/utility/install/installer.js.map +1 -1
- package/dist/core/utility/installation.js +3 -3
- package/dist/core/utility/lmdb/DBIDefinition.js +5 -1
- package/dist/core/utility/lmdb/DBIDefinition.js.map +1 -1
- package/dist/core/utility/lmdb/DeleteRecordsResponseObject.js +2 -1
- package/dist/core/utility/lmdb/DeleteRecordsResponseObject.js.map +1 -1
- package/dist/core/utility/lmdb/InsertRecordsResponseObject.js +2 -1
- package/dist/core/utility/lmdb/InsertRecordsResponseObject.js.map +1 -1
- package/dist/core/utility/lmdb/OpenDBIObject.js +54 -6
- package/dist/core/utility/lmdb/OpenDBIObject.js.map +1 -1
- package/dist/core/utility/lmdb/OpenEnvironmentObject.js +52 -4
- package/dist/core/utility/lmdb/OpenEnvironmentObject.js.map +1 -1
- package/dist/core/utility/lmdb/UpdateRecordsResponseObject.js +2 -1
- package/dist/core/utility/lmdb/UpdateRecordsResponseObject.js.map +1 -1
- package/dist/core/utility/lmdb/UpsertRecordsResponseObject.js +2 -1
- package/dist/core/utility/lmdb/UpsertRecordsResponseObject.js.map +1 -1
- package/dist/core/utility/lmdb/cleanLMDBMap.js +44 -7
- package/dist/core/utility/lmdb/cleanLMDBMap.js.map +1 -1
- package/dist/core/utility/lmdb/commonUtility.js +46 -17
- package/dist/core/utility/lmdb/commonUtility.js.map +1 -1
- package/dist/core/utility/lmdb/deleteUtility.js +51 -16
- package/dist/core/utility/lmdb/deleteUtility.js.map +1 -1
- package/dist/core/utility/lmdb/environmentUtility.js +91 -51
- package/dist/core/utility/lmdb/environmentUtility.js.map +1 -1
- package/dist/core/utility/lmdb/searchCursorFunctions.js +46 -14
- package/dist/core/utility/lmdb/searchCursorFunctions.js.map +1 -1
- package/dist/core/utility/lmdb/searchUtility.js +91 -55
- package/dist/core/utility/lmdb/searchUtility.js.map +1 -1
- package/dist/core/utility/lmdb/terms.js +12 -22
- package/dist/core/utility/lmdb/terms.js.map +1 -1
- package/dist/core/utility/lmdb/writeUtility.js +61 -28
- package/dist/core/utility/lmdb/writeUtility.js.map +1 -1
- package/dist/core/utility/logging/harper_logger.js +176 -81
- package/dist/core/utility/logging/harper_logger.js.map +1 -1
- package/dist/core/utility/logging/logRotator.js +65 -28
- package/dist/core/utility/logging/logRotator.js.map +1 -1
- package/dist/core/utility/logging/logger.js +4 -4
- package/dist/core/utility/logging/readLog.js +54 -17
- package/dist/core/utility/logging/readLog.js.map +1 -1
- package/dist/core/utility/logging/transactionLog.js +51 -16
- package/dist/core/utility/logging/transactionLog.js.map +1 -1
- package/dist/core/utility/mount_hdb.js +54 -17
- package/dist/core/utility/mount_hdb.js.map +1 -1
- package/dist/core/utility/npmUtilities.js +54 -19
- package/dist/core/utility/npmUtilities.js.map +1 -1
- package/dist/core/utility/operation_authorization.js +135 -86
- package/dist/core/utility/operation_authorization.js.map +1 -1
- package/dist/core/utility/packageUtils.js +7 -17
- package/dist/core/utility/packageUtils.js.map +1 -1
- package/dist/core/utility/password.js +2 -2
- package/dist/core/utility/processManagement/processManagement.js +2 -2
- package/dist/core/utility/processManagement/servicesConfig.js +1 -1
- package/dist/core/utility/signalling.js +51 -16
- package/dist/core/utility/signalling.js.map +1 -1
- package/dist/core/utility/watcherFallback.js +73 -0
- package/dist/core/utility/watcherFallback.js.map +1 -0
- package/dist/core/validation/analyticsValidator.js +79 -0
- package/dist/core/validation/analyticsValidator.js.map +1 -0
- package/dist/core/validation/bulkDeleteValidator.js +49 -11
- package/dist/core/validation/bulkDeleteValidator.js.map +1 -1
- package/dist/core/validation/check_permissions.js +38 -3
- package/dist/core/validation/check_permissions.js.map +1 -1
- package/dist/core/validation/common_validators.js +62 -31
- package/dist/core/validation/common_validators.js.map +1 -1
- package/dist/core/validation/configValidator.js +189 -54
- package/dist/core/validation/configValidator.js.map +1 -1
- package/dist/core/validation/deleteValidator.js +49 -11
- package/dist/core/validation/deleteValidator.js.map +1 -1
- package/dist/core/validation/fileLoadValidator.js +67 -32
- package/dist/core/validation/fileLoadValidator.js.map +1 -1
- package/dist/core/validation/insertValidator.js +48 -10
- package/dist/core/validation/insertValidator.js.map +1 -1
- package/dist/core/validation/installValidator.js +47 -10
- package/dist/core/validation/installValidator.js.map +1 -1
- package/dist/core/validation/readLogValidator.js +60 -22
- package/dist/core/validation/readLogValidator.js.map +1 -1
- package/dist/core/validation/role_validation.js +55 -19
- package/dist/core/validation/role_validation.js.map +1 -1
- package/dist/core/validation/schemaMetadataValidator.js +11 -12
- package/dist/core/validation/schemaMetadataValidator.js.map +1 -1
- package/dist/core/validation/searchValidator.js +82 -43
- package/dist/core/validation/searchValidator.js.map +1 -1
- package/dist/core/validation/transactionLogValidator.js +52 -17
- package/dist/core/validation/transactionLogValidator.js.map +1 -1
- package/dist/core/validation/user_validation.js +38 -6
- package/dist/core/validation/user_validation.js.map +1 -1
- package/dist/core/validation/validationWrapper.js +4 -5
- package/dist/core/validation/validationWrapper.js.map +1 -1
- package/dist/licensing/usageLicensing.js +30 -21
- package/dist/licensing/usageLicensing.js.map +1 -1
- package/dist/replication/knownNodes.js +173 -39
- package/dist/replication/knownNodes.js.map +1 -1
- package/dist/replication/replicationConnection.js +441 -85
- package/dist/replication/replicationConnection.js.map +1 -1
- package/dist/replication/replicator.js +44 -26
- package/dist/replication/replicator.js.map +1 -1
- package/dist/replication/setNode.js +22 -2
- package/dist/replication/setNode.js.map +1 -1
- package/dist/replication/subscriptionManager.js +121 -9
- package/dist/replication/subscriptionManager.js.map +1 -1
- package/dist/security/certificate.js +41 -6
- package/dist/security/certificate.js.map +1 -1
- package/dist/security/sshKeyOperations.js +35 -2
- package/dist/security/sshKeyOperations.js.map +1 -1
- package/licensing/usageLicensing.ts +32 -37
- package/npm-shrinkwrap.json +8994 -4305
- package/package.json +16 -11
- package/replication/DESIGN.md +139 -0
- package/replication/knownNodes.ts +166 -43
- package/replication/replicationConnection.ts +475 -92
- package/replication/replicator.ts +42 -25
- package/replication/setNode.ts +28 -9
- package/replication/subscriptionManager.ts +138 -14
- package/security/certificate.ts +8 -4
- package/security/sshKeyOperations.ts +1 -1
- package/static/defaultConfig.yaml +1 -0
- package/studio/web/assets/{index-CmtPP0YO.js → index-COfIkCT-.js} +5 -5
- package/studio/web/assets/index-COfIkCT-.js.map +1 -0
- package/studio/web/assets/{index.lazy-C8jvGtlu.js → index.lazy-CIvl7Fj9.js} +2 -2
- package/studio/web/assets/{index.lazy-C8jvGtlu.js.map → index.lazy-CIvl7Fj9.js.map} +1 -1
- package/studio/web/assets/{profile-O0DYlJUv.js → profile-B2ZVB--r.js} +2 -2
- package/studio/web/assets/{profile-O0DYlJUv.js.map → profile-B2ZVB--r.js.map} +1 -1
- package/studio/web/assets/{status-BIlJkJby.js → status-Db6WBmhf.js} +2 -2
- package/studio/web/assets/{status-BIlJkJby.js.map → status-Db6WBmhf.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/core/bin/cliOperations.js +0 -159
- package/core/bin/lite.js +0 -5
- package/core/bin/stop.js +0 -21
- package/core/dataLayer/harperBridge/BridgeMethods.js +0 -85
- package/core/utility/globalSchema.js +0 -35
- package/core/utility/lmdb/OpenDBIObject.js +0 -31
- package/studio/web/assets/index-CmtPP0YO.js.map +0 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { Metric } from './write.ts';
|
|
2
|
-
import harperLogger from '../../utility/logging/harper_logger.
|
|
2
|
+
import harperLogger from '../../utility/logging/harper_logger.ts';
|
|
3
3
|
const { forComponent } = harperLogger;
|
|
4
4
|
import { getAnalyticsHostnameTable, stableNodeId } from './hostnames.ts';
|
|
5
5
|
import type { Condition, Conditions } from '../ResourceInterface.ts';
|
|
6
6
|
import { METRIC, type BuiltInMetricName } from './metadata.ts';
|
|
7
7
|
import { CONFIG_PARAMS } from '../../utility/hdbTerms.ts';
|
|
8
|
-
import { get as envGet } from '../../utility/environment/environmentManager.
|
|
8
|
+
import { get as envGet } from '../../utility/environment/environmentManager.ts';
|
|
9
|
+
import { validateGetAnalytics } from '../../validation/analyticsValidator.ts';
|
|
10
|
+
import { handleHDBError, hdbErrors } from '../../utility/errors/hdbError.ts';
|
|
9
11
|
|
|
10
12
|
// default to one week time window for finding custom metrics
|
|
11
13
|
const defaultCustomMetricWindow = 1000 * 60 * 60 * 24 * 7;
|
|
@@ -34,8 +36,24 @@ interface GetAnalyticsRequest {
|
|
|
34
36
|
|
|
35
37
|
type GetAnalyticsResponse = Metric[];
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Validates the `get_analytics` request and returns the analytics results.
|
|
41
|
+
* @param req
|
|
42
|
+
* @returns
|
|
43
|
+
*/
|
|
44
|
+
export async function getOp(req: GetAnalyticsRequest): Promise<GetAnalyticsResponse> {
|
|
38
45
|
log.trace?.('get_analytics request:', req);
|
|
46
|
+
const validationError = validateGetAnalytics(req);
|
|
47
|
+
if (validationError) {
|
|
48
|
+
throw handleHDBError(
|
|
49
|
+
validationError,
|
|
50
|
+
validationError.message,
|
|
51
|
+
hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST,
|
|
52
|
+
undefined,
|
|
53
|
+
undefined,
|
|
54
|
+
true
|
|
55
|
+
);
|
|
56
|
+
}
|
|
39
57
|
return get(req.metric, {
|
|
40
58
|
getAttributes: req.get_attributes,
|
|
41
59
|
startTime: req.start_time,
|
|
@@ -120,7 +138,7 @@ export async function get(metric: string, opts?: GetAnalyticsOpts): Promise<Metr
|
|
|
120
138
|
}
|
|
121
139
|
}
|
|
122
140
|
|
|
123
|
-
const request = { conditions, allowConditionsOnDynamicAttributes: true };
|
|
141
|
+
const request: any = { conditions, allowConditionsOnDynamicAttributes: true };
|
|
124
142
|
if (select.length > 0) {
|
|
125
143
|
request['select'] = select;
|
|
126
144
|
}
|
|
@@ -192,7 +210,7 @@ export async function listMetrics(
|
|
|
192
210
|
} as Condition;
|
|
193
211
|
});
|
|
194
212
|
conditions.push(...metricConditions);
|
|
195
|
-
const customMetricsSearch = {
|
|
213
|
+
const customMetricsSearch: any = {
|
|
196
214
|
select: ['metric'],
|
|
197
215
|
conditions: conditions,
|
|
198
216
|
};
|
|
@@ -226,7 +244,7 @@ export function describeMetricOp(req: DescribeMetricRequest): Promise<DescribeMe
|
|
|
226
244
|
}
|
|
227
245
|
|
|
228
246
|
export async function describeMetric(metric: string): Promise<DescribeMetricResponse> {
|
|
229
|
-
const lastEntrySearch = {
|
|
247
|
+
const lastEntrySearch: any = {
|
|
230
248
|
conditions: [{ attribute: 'metric', comparator: 'equals', value: metric }],
|
|
231
249
|
sort: {
|
|
232
250
|
attribute: 'id',
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { parentPort, threadId } from 'worker_threads';
|
|
2
2
|
import { onMessageByType } from '../../server/threads/manageThreads.js';
|
|
3
|
-
import { getDatabases, table } from '../databases.ts';
|
|
3
|
+
import { getDatabases, table, isReadOnlyMode } from '../databases.ts';
|
|
4
4
|
import type { Databases, Table, Tables } from '../databases.ts';
|
|
5
|
-
import harperLogger from '../../utility/logging/harper_logger.
|
|
5
|
+
import harperLogger from '../../utility/logging/harper_logger.ts';
|
|
6
6
|
import { stat, readdir } from 'node:fs/promises';
|
|
7
7
|
const { getLogFilePath, forComponent } = harperLogger;
|
|
8
8
|
import { dirname, join } from 'path';
|
|
9
9
|
import { open } from 'fs/promises';
|
|
10
|
-
import { getNextMonotonicTime } from '../../utility/lmdb/commonUtility.
|
|
11
|
-
import { get as envGet, getHdbBasePath, initSync } from '../../utility/environment/environmentManager.
|
|
10
|
+
import { getNextMonotonicTime } from '../../utility/lmdb/commonUtility.ts';
|
|
11
|
+
import { get as envGet, getHdbBasePath, initSync } from '../../utility/environment/environmentManager.ts';
|
|
12
12
|
import { CONFIG_PARAMS } from '../../utility/hdbTerms.ts';
|
|
13
13
|
import { server } from '../../server/Server.ts';
|
|
14
14
|
import * as fs from 'node:fs';
|
|
@@ -17,6 +17,7 @@ import { METRIC } from './metadata.ts';
|
|
|
17
17
|
import { RocksDatabase } from '@harperfast/rocksdb-js';
|
|
18
18
|
|
|
19
19
|
const log = forComponent('analytics').conditional;
|
|
20
|
+
const isBun = typeof globalThis.Bun !== 'undefined';
|
|
20
21
|
|
|
21
22
|
initSync();
|
|
22
23
|
|
|
@@ -37,8 +38,20 @@ interface Action {
|
|
|
37
38
|
|
|
38
39
|
let activeActions = new Map<string, Action>();
|
|
39
40
|
let analyticsEnabled = envGet(CONFIG_PARAMS.ANALYTICS_AGGREGATEPERIOD) > -1;
|
|
41
|
+
let analyticsReadOnlyChecked = false;
|
|
40
42
|
let sendAnalyticsTimeout: NodeJS.Timeout;
|
|
41
43
|
|
|
44
|
+
// Check read-only mode lazily to avoid circular dependency at module load time
|
|
45
|
+
function checkAnalyticsEnabled(): boolean {
|
|
46
|
+
if (!analyticsReadOnlyChecked) {
|
|
47
|
+
analyticsReadOnlyChecked = true;
|
|
48
|
+
if (isReadOnlyMode()) {
|
|
49
|
+
analyticsEnabled = false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return analyticsEnabled;
|
|
53
|
+
}
|
|
54
|
+
|
|
42
55
|
export function setAnalyticsEnabled(enabled: boolean) {
|
|
43
56
|
analyticsEnabled = enabled;
|
|
44
57
|
clearTimeout(sendAnalyticsTimeout); // reset this
|
|
@@ -47,7 +60,7 @@ export function setAnalyticsEnabled(enabled: boolean) {
|
|
|
47
60
|
|
|
48
61
|
function recordExistingAction(value: Value, action: Action) {
|
|
49
62
|
if (typeof value === 'number') {
|
|
50
|
-
let values:
|
|
63
|
+
let values: any = action.values;
|
|
51
64
|
const index = values.index++;
|
|
52
65
|
if (index >= values.length) {
|
|
53
66
|
const oldValues = values;
|
|
@@ -71,7 +84,7 @@ function recordNewAction(key: string, value: Value, metric?: string, path?: stri
|
|
|
71
84
|
if (typeof value === 'number') {
|
|
72
85
|
action.total = value;
|
|
73
86
|
action.values = new Float32Array(4);
|
|
74
|
-
action.values.index = 1;
|
|
87
|
+
(action.values as any).index = 1;
|
|
75
88
|
action.values[0] = value;
|
|
76
89
|
action.total = value;
|
|
77
90
|
} else if (typeof value === 'boolean') {
|
|
@@ -101,7 +114,7 @@ function recordNewAction(key: string, value: Value, metric?: string, path?: stri
|
|
|
101
114
|
* @param type
|
|
102
115
|
*/
|
|
103
116
|
export function recordAction(value: Value, metric: string, path?: string, method?: string, type?: string) {
|
|
104
|
-
if (!
|
|
117
|
+
if (!checkAnalyticsEnabled()) return;
|
|
105
118
|
// TODO: May want to consider nested paths, as they may yield faster hashing of (fixed) strings that hashing concatenated strings
|
|
106
119
|
let key = metric + (path ? '-' + path : '');
|
|
107
120
|
if (method !== undefined) key += '-' + method;
|
|
@@ -151,7 +164,7 @@ function sendAnalytics() {
|
|
|
151
164
|
};
|
|
152
165
|
for (const [_name, action] of activeActions) {
|
|
153
166
|
if (action.values) {
|
|
154
|
-
const values = action.values.subarray(0, action.values.index);
|
|
167
|
+
const values = action.values.subarray(0, (action.values as any).index);
|
|
155
168
|
values.sort();
|
|
156
169
|
const count = values.length;
|
|
157
170
|
// compute the stats
|
|
@@ -214,6 +227,8 @@ function sendAnalytics() {
|
|
|
214
227
|
}
|
|
215
228
|
|
|
216
229
|
export async function recordHostname() {
|
|
230
|
+
// Skip writes in read-only mode
|
|
231
|
+
if (isReadOnlyMode()) return;
|
|
217
232
|
const hostname = server.hostname;
|
|
218
233
|
log.trace?.('recordHostname server.hostname:', hostname);
|
|
219
234
|
const nodeId = stableNodeId(hostname);
|
|
@@ -224,7 +239,7 @@ export async function recordHostname() {
|
|
|
224
239
|
hostname,
|
|
225
240
|
};
|
|
226
241
|
log.trace?.(`recordHostname storing hostname: ${JSON.stringify(hostnameRecord)}`);
|
|
227
|
-
await hostnamesTable.put(hostnameRecord.id, hostnameRecord);
|
|
242
|
+
await (hostnamesTable as any).put(hostnameRecord.id, hostnameRecord);
|
|
228
243
|
}
|
|
229
244
|
|
|
230
245
|
export interface Metric {
|
|
@@ -244,6 +259,8 @@ function getHostNodeId(hostname: string) {
|
|
|
244
259
|
}
|
|
245
260
|
|
|
246
261
|
function storeMetric(table: Table, metric: Metric) {
|
|
262
|
+
// Skip writes in read-only mode
|
|
263
|
+
if (isReadOnlyMode()) return;
|
|
247
264
|
const nodeId = getHostNodeId(server.hostname);
|
|
248
265
|
const metricValue = {
|
|
249
266
|
id: [getNextMonotonicTime(), nodeId],
|
|
@@ -379,6 +396,194 @@ function storeVolumeMetrics(analyticsTable: Table, databases: Databases) {
|
|
|
379
396
|
}
|
|
380
397
|
}
|
|
381
398
|
|
|
399
|
+
// RocksDB stat names are kebab-case with a "rocksdb." prefix (e.g. "rocksdb.block.cache.hit");
|
|
400
|
+
// camelCase them to match the field shape used throughout systemInformation.
|
|
401
|
+
export function toRocksDBCamelCase(key: string): string {
|
|
402
|
+
return key.replace(/^rocksdb\./, '').replace(/[-.]([a-z])/g, (_, c: string) => c.toUpperCase());
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
// Every column family on the same physical RocksDB shares one Statistics object, so all ticker
|
|
406
|
+
// counters returned by getStats() — including memtableHit/memtableMiss — are DB-wide, not per-CF.
|
|
407
|
+
// Listing them as DB-level avoids emitting the same delta on every table row.
|
|
408
|
+
const ROCKSDB_DB_COUNTERS = [
|
|
409
|
+
'bytesRead',
|
|
410
|
+
'bytesWritten',
|
|
411
|
+
'numberKeysRead',
|
|
412
|
+
'numberKeysWritten',
|
|
413
|
+
'blockCacheHit',
|
|
414
|
+
'blockCacheMiss',
|
|
415
|
+
'blockCacheDataHit',
|
|
416
|
+
'blockCacheDataMiss',
|
|
417
|
+
'blockCacheIndexHit',
|
|
418
|
+
'blockCacheIndexMiss',
|
|
419
|
+
'blockCacheFilterHit',
|
|
420
|
+
'blockCacheFilterMiss',
|
|
421
|
+
'stallMicros',
|
|
422
|
+
'memtableHit',
|
|
423
|
+
'memtableMiss',
|
|
424
|
+
] as const;
|
|
425
|
+
// Gauges are scalar values that are not cumulative. They go up and down over time.
|
|
426
|
+
const ROCKSDB_DB_GAUGES = ['blockCacheUsage', 'blockCacheCapacity', 'numRunningFlushes'] as const;
|
|
427
|
+
const ROCKSDB_TABLE_GAUGES = ['numRunningCompactions', 'compactionPending'] as const;
|
|
428
|
+
|
|
429
|
+
const lastRocksDBDbStats = new Map<string, Record<string, number>>();
|
|
430
|
+
let lastRocksDBStatsTime = 0;
|
|
431
|
+
|
|
432
|
+
export function diffRocksDBCounter(curr: number, last: number | undefined): number {
|
|
433
|
+
// A negative delta means RocksDB itself reset the counter mid-process (e.g. an internal
|
|
434
|
+
// statistics reset). Process restarts are handled separately because the module-level
|
|
435
|
+
// last-stats maps are reinitialized, which takes the no-prior-reading path below.
|
|
436
|
+
if (last === undefined || curr < last) return curr;
|
|
437
|
+
return curr - last;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Filter a raw RocksDB stats record to numeric scalar entries, camelCasing the keys.
|
|
442
|
+
* Histogram entries (objects) are dropped — they don't fit the flat analytics row model.
|
|
443
|
+
* @param raw - The raw RocksDB stats record to normalize.
|
|
444
|
+
* @returns The normalized RocksDB stats record.
|
|
445
|
+
*/
|
|
446
|
+
export function normalizeRocksDBStats(raw: Record<string, unknown>): Record<string, number> {
|
|
447
|
+
const out: Record<string, number> = {};
|
|
448
|
+
if (!raw) return out;
|
|
449
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
450
|
+
if (typeof value === 'number') out[toRocksDBCamelCase(key)] = value;
|
|
451
|
+
}
|
|
452
|
+
return out;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* Gathers metrics for a RocksDB database.
|
|
457
|
+
* @param dbName - The name of the database.
|
|
458
|
+
* @param stats - The stats to build the metric from.
|
|
459
|
+
* @param lastStats - The last stats to diff the stats from.
|
|
460
|
+
* @param now - The current time.
|
|
461
|
+
* @param period - The period to store the metrics for.
|
|
462
|
+
*/
|
|
463
|
+
export function buildRocksDBDbMetric(
|
|
464
|
+
dbName: string,
|
|
465
|
+
stats: Record<string, number>,
|
|
466
|
+
lastStats: Record<string, number> | undefined,
|
|
467
|
+
now: number,
|
|
468
|
+
period: number | undefined
|
|
469
|
+
): Record<string, unknown> {
|
|
470
|
+
const metric: Record<string, unknown> = {
|
|
471
|
+
metric: METRIC.ROCKSDB_STATS,
|
|
472
|
+
database: dbName,
|
|
473
|
+
time: now,
|
|
474
|
+
};
|
|
475
|
+
if (period !== undefined) metric.period = period;
|
|
476
|
+
for (const field of ROCKSDB_DB_COUNTERS) {
|
|
477
|
+
metric[field] = diffRocksDBCounter(stats[field] ?? 0, lastStats?.[field]);
|
|
478
|
+
}
|
|
479
|
+
for (const field of ROCKSDB_DB_GAUGES) {
|
|
480
|
+
metric[field] = stats[field] ?? 0;
|
|
481
|
+
}
|
|
482
|
+
return metric;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* Gathers metrics for a RocksDB table. Only gauges are reported per-table; ticker counters
|
|
487
|
+
* are DB-wide (see ROCKSDB_DB_COUNTERS comment) and live on the DB-level metric.
|
|
488
|
+
* @param dbName - The name of the database.
|
|
489
|
+
* @param tableName - The name of the table.
|
|
490
|
+
* @param stats - The stats to build the metric from.
|
|
491
|
+
* @param now - The current time.
|
|
492
|
+
* @param period - The period to store the metrics for.
|
|
493
|
+
*/
|
|
494
|
+
export function buildRocksDBTableMetric(
|
|
495
|
+
dbName: string,
|
|
496
|
+
tableName: string,
|
|
497
|
+
stats: Record<string, number>,
|
|
498
|
+
now: number,
|
|
499
|
+
period: number | undefined
|
|
500
|
+
): Record<string, unknown> {
|
|
501
|
+
const metric: Record<string, unknown> = {
|
|
502
|
+
metric: METRIC.ROCKSDB_STATS,
|
|
503
|
+
database: dbName,
|
|
504
|
+
table: tableName,
|
|
505
|
+
time: now,
|
|
506
|
+
};
|
|
507
|
+
if (period !== undefined) metric.period = period;
|
|
508
|
+
for (const field of ROCKSDB_TABLE_GAUGES) {
|
|
509
|
+
metric[field] = stats[field] ?? 0;
|
|
510
|
+
}
|
|
511
|
+
return metric;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Stores the RocksDB stats metrics for the given databases.
|
|
516
|
+
* @param analyticsTable - The analytics table to store the metrics in.
|
|
517
|
+
* @param databases - The databases to store the metrics for.
|
|
518
|
+
* @param now - The current time.
|
|
519
|
+
* @param period - The period to store the metrics for.
|
|
520
|
+
*/
|
|
521
|
+
function storeRocksDBStatsMetrics(
|
|
522
|
+
analyticsTable: Table,
|
|
523
|
+
databases: Databases,
|
|
524
|
+
now: number,
|
|
525
|
+
period: number | undefined
|
|
526
|
+
) {
|
|
527
|
+
for (const [db, tables] of Object.entries(databases)) {
|
|
528
|
+
if (!tables) continue; // no tables or not loaded/initialized yet
|
|
529
|
+
const tableEntries = Object.entries(tables);
|
|
530
|
+
const [, firstTable] = tableEntries[0] ?? [];
|
|
531
|
+
if (!(firstTable?.primaryStore instanceof RocksDatabase)) continue;
|
|
532
|
+
|
|
533
|
+
let firstNormalizedStats: Record<string, number> | undefined;
|
|
534
|
+
for (const [tableName, tbl] of tableEntries) {
|
|
535
|
+
try {
|
|
536
|
+
const tableStats = normalizeRocksDBStats(tbl.primaryStore.getStats());
|
|
537
|
+
if (!firstNormalizedStats) firstNormalizedStats = tableStats;
|
|
538
|
+
const tableMetric = buildRocksDBTableMetric(db, tableName, tableStats, now, period);
|
|
539
|
+
storeMetric(analyticsTable, tableMetric);
|
|
540
|
+
} catch (error) {
|
|
541
|
+
// A table may be removed mid-collection — keep iterating siblings.
|
|
542
|
+
log.warn?.(`Error getting RocksDB stats for table ${db}.${tableName}`, error);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
if (firstNormalizedStats) {
|
|
547
|
+
// Any table's getStats() returns the same DB-wide counters; reuse the first one's.
|
|
548
|
+
const lastDbStats = lastRocksDBDbStats.get(db);
|
|
549
|
+
// Skip the first sample for a db — counters are cumulative since process start,
|
|
550
|
+
// so reporting them as a delta would produce a misleading spike.
|
|
551
|
+
if (lastDbStats !== undefined) {
|
|
552
|
+
const dbMetric = buildRocksDBDbMetric(db, firstNormalizedStats, lastDbStats, now, period);
|
|
553
|
+
storeMetric(analyticsTable, dbMetric);
|
|
554
|
+
log.trace?.(`db ${db} rocksdb stats metric: ${JSON.stringify(dbMetric)}`);
|
|
555
|
+
}
|
|
556
|
+
lastRocksDBDbStats.set(db, firstNormalizedStats);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Drop cached counter readings for databases that no longer exist, to bound memory
|
|
563
|
+
* growth across drop/recreate cycles and prevent stale baselines from producing wrong diffs.
|
|
564
|
+
* @param databases - The databases to prune the stats cache for.
|
|
565
|
+
*/
|
|
566
|
+
function pruneRocksDBStatsCache(databases: Databases) {
|
|
567
|
+
const activeDbs = new Set<string>(Object.keys(databases));
|
|
568
|
+
for (const key of lastRocksDBDbStats.keys()) {
|
|
569
|
+
if (!activeDbs.has(key)) lastRocksDBDbStats.delete(key);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* Returns a Databases view that includes the `system` database as an enumerable property.
|
|
575
|
+
* getDatabases() marks `system` non-enumerable so general consumers skip it; analytics
|
|
576
|
+
* needs to iterate over it like any other database.
|
|
577
|
+
*/
|
|
578
|
+
function getDatabasesIncludingSystem(): Databases {
|
|
579
|
+
const databases = getDatabases();
|
|
580
|
+
if (!databases.system) return databases;
|
|
581
|
+
const all: Databases = Object.create(null);
|
|
582
|
+
Object.assign(all, databases);
|
|
583
|
+
all.system = databases.system;
|
|
584
|
+
return all;
|
|
585
|
+
}
|
|
586
|
+
|
|
382
587
|
export async function getDirectorySizeAsync(dirPath: string): Promise<number> {
|
|
383
588
|
try {
|
|
384
589
|
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
@@ -425,7 +630,7 @@ async function aggregation(fromPeriod, toPeriod = 60000) {
|
|
|
425
630
|
await stat(getLogFilePath());
|
|
426
631
|
const delay = performance.now() - start;
|
|
427
632
|
if (delay > 5000) {
|
|
428
|
-
log.warn?.('Unusually high task queue latency on the main thread of ' + Math.round(
|
|
633
|
+
log.warn?.('Unusually high task queue latency on the main thread of ' + Math.round(delay) + 'ms');
|
|
429
634
|
}
|
|
430
635
|
return delay;
|
|
431
636
|
})();
|
|
@@ -565,7 +770,9 @@ async function aggregation(fromPeriod, toPeriod = 60000) {
|
|
|
565
770
|
}
|
|
566
771
|
}
|
|
567
772
|
const now = Date.now();
|
|
568
|
-
const { idle, active } =
|
|
773
|
+
const { idle, active } = (globalThis as any).Bun
|
|
774
|
+
? { idle: 0, active: 0 }
|
|
775
|
+
: (performance as any).eventLoopUtilization();
|
|
569
776
|
// don't record boring entries
|
|
570
777
|
if (hasUpdates || active * 10 > idle) {
|
|
571
778
|
const value = {
|
|
@@ -600,14 +807,21 @@ async function aggregation(fromPeriod, toPeriod = 60000) {
|
|
|
600
807
|
storeMetric(analyticsTable, cruMetric);
|
|
601
808
|
lastResourceUsage = resourceUsage;
|
|
602
809
|
|
|
810
|
+
// `system` is set as non-enumerable on the object returned by getDatabases() so most
|
|
811
|
+
// callers skip it; for analytics we want it included, so build a view where it's enumerable.
|
|
812
|
+
const databases = getDatabasesIncludingSystem();
|
|
813
|
+
|
|
603
814
|
// database-size & table-size metrics
|
|
604
|
-
const databases = getDatabases();
|
|
605
815
|
storeDBSizeMetrics(analyticsTable, databases);
|
|
606
|
-
storeDBSizeMetrics(analyticsTable, { system: databases.system });
|
|
607
816
|
|
|
608
817
|
// database storage volume metrics
|
|
609
818
|
storeVolumeMetrics(analyticsTable, databases);
|
|
610
|
-
|
|
819
|
+
|
|
820
|
+
// rocksdb engine stats (only for RocksDB-backed databases)
|
|
821
|
+
const rocksDBPeriod = lastRocksDBStatsTime ? now - lastRocksDBStatsTime : undefined;
|
|
822
|
+
storeRocksDBStatsMetrics(analyticsTable, databases, now, rocksDBPeriod);
|
|
823
|
+
pruneRocksDBStatsCache(databases);
|
|
824
|
+
lastRocksDBStatsTime = now;
|
|
611
825
|
|
|
612
826
|
// node storage metric (total HDB directory size)
|
|
613
827
|
await storeNodeStorageMetric(analyticsTable);
|
|
@@ -622,6 +836,8 @@ let lastResourceUsage: ResourceUsage = {
|
|
|
622
836
|
const rest = () => new Promise(setImmediate);
|
|
623
837
|
|
|
624
838
|
async function cleanup(AnalyticsTable, expiration) {
|
|
839
|
+
// Skip writes in read-only mode
|
|
840
|
+
if (isReadOnlyMode()) return;
|
|
625
841
|
const end = Date.now() - expiration;
|
|
626
842
|
for (const key of AnalyticsTable.primaryStore.getKeys({ start: false, end })) {
|
|
627
843
|
AnalyticsTable.primaryStore.remove(key);
|
|
@@ -694,11 +910,16 @@ function startScheduledTasks() {
|
|
|
694
910
|
nodeStorageInterval = envGet(CONFIG_PARAMS.ANALYTICS_STORAGEINTERVAL) ?? DEFAULT_STORAGE_INTERVAL;
|
|
695
911
|
const AGGREGATE_PERIOD = envGet(CONFIG_PARAMS.ANALYTICS_AGGREGATEPERIOD) * 1000;
|
|
696
912
|
if (AGGREGATE_PERIOD) {
|
|
913
|
+
// Clamp raw retention to at least one full aggregation period so raw records
|
|
914
|
+
// are never deleted before they can be rolled up.
|
|
915
|
+
const rawRetentionMs = Math.max(envGet(CONFIG_PARAMS.ANALYTICS_RAWRETENTIONMS) ?? RAW_EXPIRATION, AGGREGATE_PERIOD);
|
|
916
|
+
const aggregateRetentionMs = envGet(CONFIG_PARAMS.ANALYTICS_AGGREGATERETENTIONMS) ?? AGGREGATE_EXPIRATION;
|
|
697
917
|
setInterval(
|
|
698
918
|
async () => {
|
|
699
919
|
await aggregation(analyticsDelay, AGGREGATE_PERIOD);
|
|
700
|
-
await cleanup(getRawAnalyticsTable(),
|
|
701
|
-
|
|
920
|
+
await cleanup(getRawAnalyticsTable(), rawRetentionMs);
|
|
921
|
+
// 0 means "keep forever" — skip aggregate cleanup, matching storageInterval: 0 convention
|
|
922
|
+
if (aggregateRetentionMs) await cleanup(getAnalyticsTable(), aggregateRetentionMs);
|
|
702
923
|
},
|
|
703
924
|
Math.min(AGGREGATE_PERIOD / 2, 0x7fffffff)
|
|
704
925
|
).unref();
|
|
@@ -709,6 +930,8 @@ let totalBytesProcessed = 0;
|
|
|
709
930
|
const lastUtilizations = new Map();
|
|
710
931
|
const LOG_ANALYTICS = false; // TODO: Make this a config option if we really want this
|
|
711
932
|
function recordAnalytics(message, worker?) {
|
|
933
|
+
// Skip writes in read-only mode
|
|
934
|
+
if (isReadOnlyMode()) return;
|
|
712
935
|
const report = message.report;
|
|
713
936
|
report.threadId = worker?.threadId || threadId;
|
|
714
937
|
// Add system information stats as well
|
|
@@ -718,7 +941,7 @@ function recordAnalytics(message, worker?) {
|
|
|
718
941
|
}
|
|
719
942
|
}
|
|
720
943
|
report.totalBytesProcessed = totalBytesProcessed;
|
|
721
|
-
if (worker) {
|
|
944
|
+
if (worker && !isBun) {
|
|
722
945
|
report.metrics.push({
|
|
723
946
|
metric: METRIC.UTILIZATION,
|
|
724
947
|
...worker.performance.eventLoopUtilization(lastUtilizations.get(worker)),
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { readKey, writeKey } from 'ordered-binary';
|
|
2
|
-
import { initSync, get as envGet } from '../utility/environment/environmentManager.
|
|
3
|
-
import { AUDIT_STORE_NAME } from '../utility/lmdb/terms.
|
|
2
|
+
import { initSync, get as envGet } from '../utility/environment/environmentManager.ts';
|
|
3
|
+
import { AUDIT_STORE_NAME } from '../utility/lmdb/terms.ts';
|
|
4
4
|
import { CONFIG_PARAMS } from '../utility/hdbTerms.ts';
|
|
5
5
|
import { getWorkerIndex, getWorkerCount } from '../server/threads/manageThreads.js';
|
|
6
|
-
import { convertToMS } from '../utility/common_utils.
|
|
6
|
+
import { convertToMS } from '../utility/common_utils.ts';
|
|
7
7
|
import { PREVIOUS_TIMESTAMP_PLACEHOLDER, LAST_TIMESTAMP_PLACEHOLDER } from './RecordEncoder.ts';
|
|
8
|
-
import * as harperLogger from '../utility/logging/harper_logger.
|
|
8
|
+
import * as harperLogger from '../utility/logging/harper_logger.ts';
|
|
9
9
|
import { getRecordAtTime } from './crdt.ts';
|
|
10
10
|
import { decodeFromDatabase } from './blob.ts';
|
|
11
11
|
import { onStorageReclamation } from '../server/storageReclamation.ts';
|
|
12
12
|
import { RocksDatabase } from '@harperfast/rocksdb-js';
|
|
13
13
|
import { RocksTransactionLogStore } from './RocksTransactionLogStore.ts';
|
|
14
|
+
import { isReadOnlyMode } from './databases.ts';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* This module is responsible for the binary representation of audit records in an efficient form.
|
|
@@ -32,24 +33,29 @@ import { RocksTransactionLogStore } from './RocksTransactionLogStore.ts';
|
|
|
32
33
|
initSync();
|
|
33
34
|
|
|
34
35
|
export type AuditRecord = {
|
|
35
|
-
version
|
|
36
|
-
localTime
|
|
36
|
+
version: number;
|
|
37
|
+
localTime: number; // only to be used by LMDB (from the key)
|
|
37
38
|
type: string;
|
|
38
|
-
encodedRecord
|
|
39
|
-
extendedType
|
|
40
|
-
residencyId
|
|
41
|
-
previousResidencyId
|
|
42
|
-
expiresAt:
|
|
39
|
+
encodedRecord?: Buffer;
|
|
40
|
+
extendedType?: number;
|
|
41
|
+
residencyId?: number;
|
|
42
|
+
previousResidencyId?: number;
|
|
43
|
+
expiresAt: number | null;
|
|
43
44
|
originatingOperation: string;
|
|
44
|
-
tableId
|
|
45
|
-
recordId
|
|
46
|
-
previousVersion
|
|
45
|
+
tableId?: number;
|
|
46
|
+
recordId?: number;
|
|
47
|
+
previousVersion?: number;
|
|
47
48
|
user?: string;
|
|
48
49
|
nodeId?: number;
|
|
49
|
-
previousNodeId
|
|
50
|
-
previousAdditionalAuditRefs?: Array<{ version
|
|
51
|
-
|
|
50
|
+
previousNodeId: number;
|
|
51
|
+
previousAdditionalAuditRefs?: Array<{ version?: number; nodeId: number }>;
|
|
52
|
+
key?: any;
|
|
53
|
+
encoded?: any;
|
|
54
|
+
size: number;
|
|
55
|
+
getValue?: any;
|
|
56
|
+
getBinaryValue?: any;
|
|
52
57
|
structureVersion?: number;
|
|
58
|
+
endTxn?: boolean;
|
|
53
59
|
getBinaryRecordId?: any;
|
|
54
60
|
};
|
|
55
61
|
|
|
@@ -156,6 +162,8 @@ export function openAuditStore(rootStore) {
|
|
|
156
162
|
}
|
|
157
163
|
});
|
|
158
164
|
function scheduleAuditCleanup(newCleanupDelay?: number): Promise<void> {
|
|
165
|
+
// Skip audit cleanup/purge in read-only mode
|
|
166
|
+
if (isReadOnlyMode()) return;
|
|
159
167
|
if (auditStore instanceof RocksTransactionLogStore) {
|
|
160
168
|
auditStore.rootStore.purgeLogs({
|
|
161
169
|
before: Date.now() - auditRetention / (1 + cleanupPriority * cleanupPriority),
|
|
@@ -439,7 +447,8 @@ export function createAuditEntry(auditRecord: AuditRecord, start = 0) {
|
|
|
439
447
|
export function readAuditEntry(buffer: Uint8Array, start = 0, end = undefined): AuditRecord {
|
|
440
448
|
try {
|
|
441
449
|
const decoder =
|
|
442
|
-
buffer
|
|
450
|
+
(buffer as any).decoder ||
|
|
451
|
+
((buffer as any).decoder = new Decoder(buffer.buffer, buffer.byteOffset, buffer.byteLength));
|
|
443
452
|
decoder.position = start;
|
|
444
453
|
let previousVersion;
|
|
445
454
|
if (buffer[decoder.position] == 66) {
|
|
@@ -559,7 +568,7 @@ export function readAuditEntry(buffer: Uint8Array, start = 0, end = undefined):
|
|
|
559
568
|
expiresAt,
|
|
560
569
|
originatingOperation,
|
|
561
570
|
previousAdditionalAuditRefs,
|
|
562
|
-
};
|
|
571
|
+
} as any;
|
|
563
572
|
} catch (error) {
|
|
564
573
|
harperLogger.error('Reading audit entry error', error, buffer);
|
|
565
574
|
return createCorruptAuditSentinel(buffer, start, end);
|