@harperfast/harper-pro 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/analytics/profile.ts +4 -0
- package/core/AGENTS.md +94 -6
- package/core/DESIGN.md +36 -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 +134 -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 +17 -24
- 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 +132 -18
- package/core/components/anthropic/index.ts +547 -0
- package/core/components/bedrock/index.ts +823 -0
- package/core/components/componentLoader.ts +64 -32
- package/core/components/deployLifecycle.ts +161 -0
- package/core/components/deploymentOperations.ts +173 -0
- package/core/components/deploymentRecorder.ts +427 -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 +607 -0
- package/core/components/mcp/session.ts +151 -0
- package/core/components/mcp/sessionRegistry.ts +140 -0
- package/core/components/mcp/toolRegistry.ts +294 -0
- package/core/components/mcp/tools/application.ts +761 -0
- package/core/components/mcp/tools/operations.ts +311 -0
- package/core/components/mcp/tools/schemas/derive.ts +356 -0
- package/core/components/mcp/tools/schemas/operationDescriptions.ts +241 -0
- package/core/components/mcp/tools/schemas/operations.ts +301 -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 +217 -60
- package/core/components/operationsValidation.js +12 -4
- 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 +9087 -4345
- 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 +41 -39
- package/core/resources/RequestTarget.ts +2 -0
- package/core/resources/Resource.ts +96 -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 +13 -4
- package/core/resources/Table.ts +440 -223
- package/core/resources/analytics/metadata.ts +1 -0
- package/core/resources/analytics/read.ts +99 -10
- package/core/resources/analytics/write.ts +240 -17
- package/core/resources/auditStore.ts +30 -19
- package/core/resources/blob.ts +53 -53
- package/core/resources/dataLoader.ts +4 -4
- package/core/resources/databases.ts +208 -74
- package/core/resources/graphql.ts +267 -165
- package/core/resources/indexes/HierarchicalNavigableSmallWorld.ts +310 -65
- package/core/resources/indexes/vector.ts +17 -0
- package/core/resources/jsonSchemaTypes.ts +102 -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/openApi.ts +65 -31
- package/core/resources/replayLogs.ts +20 -9
- package/core/resources/replayLogsGuards.ts +45 -0
- package/core/resources/roles.ts +62 -67
- package/core/resources/search.ts +355 -135
- package/core/resources/tracked.ts +18 -9
- 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 +3 -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/static/defaultConfig.yaml +0 -1
- 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-1-0.ts +89 -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} +6 -54
- 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 +54 -1
- package/core/utility/install/checkJWTTokensExist.js +1 -1
- package/core/utility/install/{installer.js → installer.ts} +86 -62
- 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 +57 -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} +137 -90
- package/core/utility/logging/{logRotator.js → logRotator.ts} +15 -18
- 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 +44 -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 +123 -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 +14 -22
- package/dist/core/bin/upgrade.js.map +1 -1
- 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 +112 -12
- 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 +65 -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 +425 -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 +526 -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 +177 -0
- package/dist/core/components/mcp/toolRegistry.js.map +1 -0
- package/dist/core/components/mcp/tools/application.js +660 -0
- package/dist/core/components/mcp/tools/application.js.map +1 -0
- package/dist/core/components/mcp/tools/operations.js +331 -0
- package/dist/core/components/mcp/tools/operations.js.map +1 -0
- package/dist/core/components/mcp/tools/schemas/derive.js +291 -0
- package/dist/core/components/mcp/tools/schemas/derive.js.map +1 -0
- package/dist/core/components/mcp/tools/schemas/operationDescriptions.js +179 -0
- package/dist/core/components/mcp/tools/schemas/operationDescriptions.js.map +1 -0
- package/dist/core/components/mcp/tools/schemas/operations.js +299 -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 +205 -52
- package/dist/core/components/operations.js.map +1 -1
- package/dist/core/components/operationsValidation.js +13 -4
- package/dist/core/components/operationsValidation.js.map +1 -1
- 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 +38 -38
- package/dist/core/resources/RecordEncoder.js.map +1 -1
- package/dist/core/resources/RequestTarget.js.map +1 -1
- package/dist/core/resources/Resource.js +43 -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 +10 -3
- package/dist/core/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/core/resources/Table.js +306 -116
- 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 +69 -8
- 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 +16 -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 +175 -59
- package/dist/core/resources/databases.js.map +1 -1
- package/dist/core/resources/graphql.js +267 -173
- package/dist/core/resources/graphql.js.map +1 -1
- package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js +327 -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/jsonSchemaTypes.js +78 -0
- package/dist/core/resources/jsonSchemaTypes.js.map +1 -0
- 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/openApi.js +74 -34
- package/dist/core/resources/openApi.js.map +1 -1
- package/dist/core/resources/replayLogs.js +7 -1
- package/dist/core/resources/replayLogs.js.map +1 -1
- package/dist/core/resources/replayLogsGuards.js +47 -0
- package/dist/core/resources/replayLogsGuards.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 +23 -15
- 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 +46 -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-1-0.js +114 -0
- package/dist/core/upgrade/directives/5-1-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 +55 -60
- 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 +54 -1
- 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 +136 -73
- 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 +68 -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 +177 -82
- package/dist/core/utility/logging/harper_logger.js.map +1 -1
- package/dist/core/utility/logging/logRotator.js +67 -32
- 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 +80 -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 +171 -41
- 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 +56 -28
- package/dist/replication/replicator.js.map +1 -1
- package/dist/replication/setNode.js +24 -4
- package/dist/replication/setNode.js.map +1 -1
- package/dist/replication/subscriptionManager.js +195 -16
- 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 +9032 -4334
- package/package.json +17 -12
- package/replication/DESIGN.md +139 -0
- package/replication/knownNodes.ts +165 -44
- package/replication/replicationConnection.ts +475 -92
- package/replication/replicator.ts +54 -27
- package/replication/setNode.ts +29 -10
- package/replication/subscriptionManager.ts +227 -21
- package/security/certificate.ts +8 -4
- package/security/sshKeyOperations.ts +1 -1
- package/static/defaultConfig.yaml +1 -0
- 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/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-CybLScHg.js.map +0 -1
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Argument and environment resolution for `harper mcp`. The CLI deliberately
|
|
3
|
+
* avoids pulling in a flag-parsing dep (Harper's no-new-deps policy) — a few
|
|
4
|
+
* `--key=value` and `--key value` arguments plus a positional subcommand is
|
|
5
|
+
* the entire vocabulary.
|
|
6
|
+
*
|
|
7
|
+
* Two connection modes:
|
|
8
|
+
* - **UDS** (default): connects to the locally-running Harper instance via
|
|
9
|
+
* the operationsApi domain socket. **Only the operations profile is
|
|
10
|
+
* reachable this way** — the application profile is mounted on the
|
|
11
|
+
* application HTTP server, which doesn't expose a UDS in v1. Filesystem
|
|
12
|
+
* permissions on the operations socket are the access gate; no
|
|
13
|
+
* credentials are required or sent.
|
|
14
|
+
* - **HTTPS**: `--target https://host:port` connects over the network.
|
|
15
|
+
* Required for `--profile application`. Credential precedence
|
|
16
|
+
* (highest first):
|
|
17
|
+
* `--bearer` > `--username` + `--password` > URL-embedded user/pass
|
|
18
|
+
* > saved JWT from `~/.harperdb/credentials.json` (populated by
|
|
19
|
+
* `harper login` and looked up via `cliCredentials.normalizeTarget`).
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
export interface McpCliOptions {
|
|
23
|
+
subcommand: 'bridge' | 'print-config' | 'doctor' | 'help';
|
|
24
|
+
profile: 'operations' | 'application';
|
|
25
|
+
target?: string;
|
|
26
|
+
mountPath: string;
|
|
27
|
+
username?: string;
|
|
28
|
+
password?: string;
|
|
29
|
+
bearer?: string;
|
|
30
|
+
rejectUnauthorized: boolean;
|
|
31
|
+
client?: 'claude-desktop' | 'cursor' | 'zed';
|
|
32
|
+
help: boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function parseArgs(argv: readonly string[]): McpCliOptions {
|
|
36
|
+
const opts: McpCliOptions = {
|
|
37
|
+
subcommand: 'bridge',
|
|
38
|
+
// Operations is the safer default: the typical zero-config path
|
|
39
|
+
// (`harper mcp` / `harper mcp doctor` on the local machine, no
|
|
40
|
+
// --target) connects over the operations UDS, which only routes
|
|
41
|
+
// to the operations MCP endpoint in v1.
|
|
42
|
+
profile: 'operations',
|
|
43
|
+
mountPath: '/mcp',
|
|
44
|
+
rejectUnauthorized: true,
|
|
45
|
+
help: false,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// argv begins after `harper mcp`, i.e. process.argv.slice(3).
|
|
49
|
+
let i = 0;
|
|
50
|
+
if (argv[0] && !argv[0].startsWith('-')) {
|
|
51
|
+
const sub = argv[0];
|
|
52
|
+
if (sub === 'print-config' || sub === 'doctor' || sub === 'help') {
|
|
53
|
+
opts.subcommand = sub;
|
|
54
|
+
i = 1;
|
|
55
|
+
} else if (sub === 'bridge') {
|
|
56
|
+
opts.subcommand = 'bridge';
|
|
57
|
+
i = 1;
|
|
58
|
+
}
|
|
59
|
+
// anything else: assume it's a flag-style arg or noise; leave i=0.
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
for (; i < argv.length; i++) {
|
|
63
|
+
const arg = argv[i];
|
|
64
|
+
const eq = arg.indexOf('=');
|
|
65
|
+
const isLong = arg.startsWith('--');
|
|
66
|
+
const key = isLong ? (eq === -1 ? arg.slice(2) : arg.slice(2, eq)) : arg;
|
|
67
|
+
const valueInline = eq === -1 ? undefined : arg.slice(eq + 1);
|
|
68
|
+
const consumeNext = (): string | undefined => {
|
|
69
|
+
if (valueInline !== undefined) return valueInline;
|
|
70
|
+
const next = argv[i + 1];
|
|
71
|
+
if (next === undefined || next.startsWith('-')) return undefined;
|
|
72
|
+
i++;
|
|
73
|
+
return next;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
switch (key) {
|
|
77
|
+
case '--profile':
|
|
78
|
+
case 'profile': {
|
|
79
|
+
const v = consumeNext();
|
|
80
|
+
if (v === 'operations' || v === 'application') opts.profile = v;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case '--target':
|
|
84
|
+
case 'target':
|
|
85
|
+
opts.target = consumeNext();
|
|
86
|
+
break;
|
|
87
|
+
case '--mount-path':
|
|
88
|
+
case 'mount-path':
|
|
89
|
+
opts.mountPath = consumeNext() ?? opts.mountPath;
|
|
90
|
+
break;
|
|
91
|
+
case '--username':
|
|
92
|
+
case 'username':
|
|
93
|
+
opts.username = consumeNext();
|
|
94
|
+
break;
|
|
95
|
+
case '--password':
|
|
96
|
+
case 'password':
|
|
97
|
+
opts.password = consumeNext();
|
|
98
|
+
break;
|
|
99
|
+
case '--bearer':
|
|
100
|
+
case 'bearer':
|
|
101
|
+
opts.bearer = consumeNext();
|
|
102
|
+
break;
|
|
103
|
+
case '--insecure':
|
|
104
|
+
case 'insecure':
|
|
105
|
+
opts.rejectUnauthorized = false;
|
|
106
|
+
break;
|
|
107
|
+
case '--client':
|
|
108
|
+
case 'client': {
|
|
109
|
+
const v = consumeNext();
|
|
110
|
+
if (v === 'claude-desktop' || v === 'cursor' || v === 'zed') opts.client = v;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
case '--help':
|
|
114
|
+
case 'help':
|
|
115
|
+
case '-h':
|
|
116
|
+
opts.help = true;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return opts;
|
|
122
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emit a paste-ready config block for each supported MCP client. Output
|
|
3
|
+
* goes to stdout so the user can pipe or copy directly into their
|
|
4
|
+
* client's config file.
|
|
5
|
+
*/
|
|
6
|
+
import type { McpCliOptions } from './options.ts';
|
|
7
|
+
|
|
8
|
+
interface ConfigBlock {
|
|
9
|
+
target: string;
|
|
10
|
+
body: object;
|
|
11
|
+
notes: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function renderConfig(opts: McpCliOptions): ConfigBlock {
|
|
15
|
+
const client = opts.client ?? 'claude-desktop';
|
|
16
|
+
const args = ['mcp'];
|
|
17
|
+
// Default is 'operations'; only emit the flag when overriding to 'application'.
|
|
18
|
+
if (opts.profile !== 'operations') args.push('--profile', opts.profile);
|
|
19
|
+
if (opts.target) args.push('--target', opts.target);
|
|
20
|
+
if (opts.mountPath !== '/mcp') args.push('--mount-path', opts.mountPath);
|
|
21
|
+
if (opts.username) args.push('--username', opts.username);
|
|
22
|
+
if (opts.password) args.push('--password', opts.password);
|
|
23
|
+
if (opts.bearer) args.push('--bearer', opts.bearer);
|
|
24
|
+
if (!opts.rejectUnauthorized) args.push('--insecure');
|
|
25
|
+
|
|
26
|
+
switch (client) {
|
|
27
|
+
case 'claude-desktop': {
|
|
28
|
+
return {
|
|
29
|
+
target:
|
|
30
|
+
'~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows)',
|
|
31
|
+
body: {
|
|
32
|
+
mcpServers: {
|
|
33
|
+
harper: {
|
|
34
|
+
command: 'harper',
|
|
35
|
+
args,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
notes: [
|
|
40
|
+
'Restart Claude Desktop after editing the file.',
|
|
41
|
+
'Merge into an existing `mcpServers` block if you already have one.',
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
case 'cursor': {
|
|
46
|
+
return {
|
|
47
|
+
target: '~/.cursor/mcp.json',
|
|
48
|
+
body: {
|
|
49
|
+
mcpServers: {
|
|
50
|
+
harper: {
|
|
51
|
+
command: 'harper',
|
|
52
|
+
args,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
notes: ['Cursor reads this file at startup; restart after editing.'],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
case 'zed': {
|
|
60
|
+
return {
|
|
61
|
+
target: 'Zed settings.json',
|
|
62
|
+
body: {
|
|
63
|
+
context_servers: {
|
|
64
|
+
harper: {
|
|
65
|
+
command: {
|
|
66
|
+
path: 'harper',
|
|
67
|
+
args,
|
|
68
|
+
env: {},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
notes: ["Zed's MCP support is behind a feature flag — see the Zed docs for activation."],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
default:
|
|
77
|
+
throw new Error(`harper mcp print-config: unknown --client '${client as string}'`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export function emit(opts: McpCliOptions, stdout: NodeJS.WritableStream = process.stdout): void {
|
|
82
|
+
const block = renderConfig(opts);
|
|
83
|
+
stdout.write(`# Target file: ${block.target}\n`);
|
|
84
|
+
stdout.write(JSON.stringify(block.body, null, 2));
|
|
85
|
+
stdout.write('\n');
|
|
86
|
+
for (const note of block.notes) {
|
|
87
|
+
stdout.write(`# Note: ${note}\n`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { Readable } from 'node:stream';
|
|
3
|
+
|
|
4
|
+
interface MultipartFile {
|
|
5
|
+
name: string;
|
|
6
|
+
filename: string;
|
|
7
|
+
contentType?: string;
|
|
8
|
+
stream: Readable;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface MultipartBody {
|
|
12
|
+
boundary: string;
|
|
13
|
+
contentType: string;
|
|
14
|
+
stream: Readable;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Build a streaming multipart/form-data body for the operations API.
|
|
19
|
+
*
|
|
20
|
+
* Fields are emitted first, in the order they appear in the `fields` record, then the
|
|
21
|
+
* single (optional) file part. That ordering is required by the server-side multipart
|
|
22
|
+
* parser (`server/serverHelpers/multipartParser.ts`): dispatching fields like `operation`
|
|
23
|
+
* must arrive before the file so preValidation/auth hooks can see them, and the file
|
|
24
|
+
* always comes last so the route handler streams it into extraction.
|
|
25
|
+
*
|
|
26
|
+
* Each field value is JSON-stringified — the server parser will reverse that on values
|
|
27
|
+
* that look like JSON, otherwise leave them as raw strings.
|
|
28
|
+
*/
|
|
29
|
+
export function buildMultipartBody(fields: Record<string, unknown>, file?: MultipartFile): MultipartBody {
|
|
30
|
+
const boundary = '----HarperMultipart' + randomBytes(12).toString('hex');
|
|
31
|
+
const stream = Readable.from(generateParts(boundary, fields, file));
|
|
32
|
+
return {
|
|
33
|
+
boundary,
|
|
34
|
+
contentType: `multipart/form-data; boundary=${boundary}`,
|
|
35
|
+
stream,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function* generateParts(
|
|
40
|
+
boundary: string,
|
|
41
|
+
fields: Record<string, unknown>,
|
|
42
|
+
file: MultipartFile | undefined
|
|
43
|
+
): AsyncGenerator<Buffer> {
|
|
44
|
+
const dashBoundary = `--${boundary}`;
|
|
45
|
+
for (const [name, value] of Object.entries(fields)) {
|
|
46
|
+
if (value === undefined) continue;
|
|
47
|
+
yield Buffer.from(
|
|
48
|
+
`${dashBoundary}\r\nContent-Disposition: form-data; name="${escapeFieldName(name)}"\r\n\r\n${serializeFieldValue(value)}\r\n`
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
if (file) {
|
|
52
|
+
const contentType = file.contentType ?? 'application/octet-stream';
|
|
53
|
+
yield Buffer.from(
|
|
54
|
+
`${dashBoundary}\r\nContent-Disposition: form-data; name="${escapeFieldName(file.name)}"; filename="${escapeFieldName(file.filename)}"\r\nContent-Type: ${contentType}\r\n\r\n`
|
|
55
|
+
);
|
|
56
|
+
for await (const chunk of file.stream) {
|
|
57
|
+
yield typeof chunk === 'string' ? Buffer.from(chunk) : (chunk as Buffer);
|
|
58
|
+
}
|
|
59
|
+
yield Buffer.from('\r\n');
|
|
60
|
+
}
|
|
61
|
+
yield Buffer.from(`${dashBoundary}--\r\n`);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function serializeFieldValue(value: unknown): string {
|
|
65
|
+
if (typeof value === 'string') return value;
|
|
66
|
+
return JSON.stringify(value);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function escapeFieldName(name: string): string {
|
|
70
|
+
// Strip CR/LF and quote characters that would break the Content-Disposition header.
|
|
71
|
+
// Field/file names are caller-controlled CLI values so this is defense-in-depth, not
|
|
72
|
+
// untrusted-input sanitization.
|
|
73
|
+
return name.replace(/[\r\n"]/g, '');
|
|
74
|
+
}
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
import minimist from 'minimist';
|
|
4
|
+
import { isMainThread, parentPort } from 'worker_threads';
|
|
5
|
+
import * as hdbTerms from '../utility/hdbTerms.ts';
|
|
6
|
+
import hdbLogger from '../utility/logging/harper_logger.ts';
|
|
7
|
+
import * as processMan from '../utility/processManagement/processManagement.js';
|
|
8
|
+
import { compactOnStart } from './copyDb.ts';
|
|
9
|
+
import { restartWorkers, onMessageByType, shutdownWorkersNow } from '../server/threads/manageThreads.js';
|
|
10
|
+
import { handleHDBError, hdbErrors } from '../utility/errors/hdbError.ts';
|
|
11
11
|
const { HTTP_STATUS_CODES } = hdbErrors;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
import * as envMgr from '../utility/environment/environmentManager.ts';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
import { unlinkSync } from 'node:fs';
|
|
15
|
+
import { getThisNodeName } from '../server/nodeName.ts';
|
|
16
16
|
envMgr.initSync();
|
|
17
17
|
|
|
18
|
-
const RESTART_RESPONSE = `Restarting Harper
|
|
18
|
+
const RESTART_RESPONSE = `Restarting Harper. This may take up to ${hdbTerms.RESTART_TIMEOUT_MS / 1000} seconds.`;
|
|
19
19
|
const INVALID_SERVICE_ERR = 'Invalid service';
|
|
20
20
|
|
|
21
21
|
let calledFromCli;
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
restart,
|
|
25
|
-
restartService,
|
|
26
|
-
};
|
|
23
|
+
export { restart, restartService };
|
|
27
24
|
|
|
28
25
|
// Add ITC event listener to main thread which will be called from child that receives restart request.
|
|
29
26
|
if (isMainThread) {
|
|
@@ -35,12 +32,12 @@ if (isMainThread) {
|
|
|
35
32
|
}
|
|
36
33
|
|
|
37
34
|
/**
|
|
38
|
-
* Restart Harper
|
|
35
|
+
* Restart Harper.
|
|
39
36
|
* It will restart all the child threads and the hub and leaf server processes.
|
|
40
37
|
* @param req
|
|
41
38
|
* @returns {Promise<string>}
|
|
42
39
|
*/
|
|
43
|
-
async function restart(req) {
|
|
40
|
+
async function restart(req: any) {
|
|
44
41
|
calledFromCli = Object.keys(req).length === 0;
|
|
45
42
|
|
|
46
43
|
const cliArgs = minimist(process.argv);
|
|
@@ -51,8 +48,8 @@ async function restart(req) {
|
|
|
51
48
|
|
|
52
49
|
if (calledFromCli) {
|
|
53
50
|
const hdbPid = processMan.getHdbPid();
|
|
54
|
-
console.error(hdbPid ? 'Restarting Harper
|
|
55
|
-
require('./run
|
|
51
|
+
console.error(hdbPid ? 'Restarting Harper...' : 'Starting Harper...');
|
|
52
|
+
require('./run').launch(true);
|
|
56
53
|
return RESTART_RESPONSE;
|
|
57
54
|
}
|
|
58
55
|
|
|
@@ -69,18 +66,20 @@ async function restart(req) {
|
|
|
69
66
|
// and shut down.
|
|
70
67
|
hdbLogger.debug('Shutdown workers');
|
|
71
68
|
await shutdownWorkersNow();
|
|
69
|
+
const { closeServers } = require('../server/threads/threadServer.js');
|
|
70
|
+
await closeServers();
|
|
72
71
|
await processMan.cleanupChildrenProcesses(false);
|
|
73
72
|
// remove pid file so it doesn't trip up the launch
|
|
74
|
-
|
|
73
|
+
unlinkSync(path.join(envMgr.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), hdbTerms.HDB_PID_FILE));
|
|
75
74
|
hdbLogger.debug('Starting new process...');
|
|
76
75
|
if (process.env.HARPER_EXIT_ON_RESTART) {
|
|
77
76
|
// use this to exit the process so that it will be restarted by the
|
|
78
77
|
// PM/container/orchestrator.
|
|
79
|
-
hdbLogger.warn('Exiting Harper
|
|
78
|
+
hdbLogger.warn('Exiting Harper process to trigger a container restart');
|
|
80
79
|
process.exit(0);
|
|
81
80
|
}
|
|
82
81
|
// now launch the new process and exit this process
|
|
83
|
-
require('./run
|
|
82
|
+
require('./run').launch(true);
|
|
84
83
|
}, 50); // can't await this because it is going to do an exit(), but wait for 50ms so we give the HTTP thread a
|
|
85
84
|
// chance to return a response
|
|
86
85
|
} else {
|
|
@@ -98,7 +97,7 @@ async function restart(req) {
|
|
|
98
97
|
* @param req
|
|
99
98
|
* @returns {Promise<string>}
|
|
100
99
|
*/
|
|
101
|
-
async function restartService(req) {
|
|
100
|
+
async function restartService(req: any) {
|
|
102
101
|
let { service } = req;
|
|
103
102
|
if (hdbTerms.HDB_PROCESS_SERVICES[service] === undefined) {
|
|
104
103
|
throw handleHDBError(new Error(), INVALID_SERVICE_ERR, HTTP_STATUS_CODES.BAD_REQUEST, undefined, undefined, true);
|
|
@@ -106,14 +105,14 @@ async function restartService(req) {
|
|
|
106
105
|
processMan.expectedRestartOfChildren();
|
|
107
106
|
if (!isMainThread) {
|
|
108
107
|
if (req.replicated) {
|
|
109
|
-
server.replication.monitorNodeCAs(); // get all the CAs from the nodes we know about
|
|
108
|
+
(global as any).server.replication.monitorNodeCAs(); // get all the CAs from the nodes we know about
|
|
110
109
|
}
|
|
111
110
|
parentPort.postMessage({
|
|
112
111
|
type: hdbTerms.ITC_EVENT_TYPES.RESTART,
|
|
113
112
|
workerType: service,
|
|
114
113
|
});
|
|
115
114
|
parentPort.ref(); // don't let the parent thread exit until we're done
|
|
116
|
-
await new Promise((resolve) => {
|
|
115
|
+
await new Promise<void>((resolve) => {
|
|
117
116
|
parentPort.on('message', (msg) => {
|
|
118
117
|
if (msg.type === 'restart-complete') {
|
|
119
118
|
resolve();
|
|
@@ -125,12 +124,12 @@ async function restartService(req) {
|
|
|
125
124
|
if (req.replicated) {
|
|
126
125
|
req.replicated = false; // don't send a replicated flag to the nodes we are sending to
|
|
127
126
|
replicatedResponses = [];
|
|
128
|
-
for (let node of server.nodes) {
|
|
127
|
+
for (let node of (global as any).server.nodes) {
|
|
129
128
|
if (node.name === getThisNodeName()) continue;
|
|
130
129
|
// for now, only one at a time
|
|
131
130
|
let job_id;
|
|
132
131
|
try {
|
|
133
|
-
({ job_id } = await server.replication.sendOperationToNode(node, req));
|
|
132
|
+
({ job_id } = await (global as any).server.replication.sendOperationToNode(node, req));
|
|
134
133
|
} catch (err) {
|
|
135
134
|
// If request to node fails, add the error to the response and continue to the next node
|
|
136
135
|
replicatedResponses.push({ node: node.name, message: err.message });
|
|
@@ -144,11 +143,11 @@ async function restartService(req) {
|
|
|
144
143
|
let interval = setInterval(async () => {
|
|
145
144
|
if (retriesLeft-- <= 0) {
|
|
146
145
|
clearInterval(interval);
|
|
147
|
-
let error = new Error('Timed out waiting for restart job to complete');
|
|
146
|
+
let error: any = new Error('Timed out waiting for restart job to complete');
|
|
148
147
|
error.replicated = replicatedResponses; // report the finished restarts
|
|
149
148
|
reject(error);
|
|
150
149
|
}
|
|
151
|
-
let response = await server.replication.sendOperationToNode(node, {
|
|
150
|
+
let response = await (global as any).server.replication.sendOperationToNode(node, {
|
|
152
151
|
operation: 'get_job',
|
|
153
152
|
id: job_id,
|
|
154
153
|
});
|
|
@@ -159,7 +158,7 @@ async function restartService(req) {
|
|
|
159
158
|
}
|
|
160
159
|
if (jobResult.status === 'ERROR') {
|
|
161
160
|
clearInterval(interval);
|
|
162
|
-
let error = new Error(jobResult.message);
|
|
161
|
+
let error: any = new Error(jobResult.message);
|
|
163
162
|
error.replicated = replicatedResponses; // report the finished restarts
|
|
164
163
|
reject(error);
|
|
165
164
|
}
|
|
@@ -1,43 +1,44 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import * as env from '../utility/environment/environmentManager.ts';
|
|
4
4
|
env.initSync();
|
|
5
5
|
|
|
6
|
-
// This unused restart
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
// This unused restart import is here so that main thread loads ITC event listener defined in restart file. Do not remove.
|
|
7
|
+
import './restart.ts';
|
|
8
|
+
import * as terms from '../utility/hdbTerms.ts';
|
|
9
9
|
const { CONFIG_PARAMS } = terms;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
10
|
+
import hdbLogger from '../utility/logging/harper_logger.ts';
|
|
11
|
+
import * as fs from 'fs-extra';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import checkJwtTokens from '../utility/install/checkJWTTokensExist.js';
|
|
14
|
+
import { install } from '../utility/install/installer.ts';
|
|
15
|
+
import chalk from 'chalk';
|
|
16
|
+
import { packageJson } from '../utility/packageUtils.js';
|
|
17
|
+
import * as hdbUtils from '../utility/common_utils.ts';
|
|
18
|
+
import * as installation from '../utility/installation.ts';
|
|
19
|
+
import * as configUtils from '../config/configUtils.js';
|
|
20
|
+
import assignCMDENVVariables from '../utility/assignCmdEnvVariables.ts';
|
|
21
|
+
import * as upgrade from './upgrade.js';
|
|
22
|
+
import { compactOnStart, migrateOnStart } from './copyDb.ts';
|
|
23
|
+
import minimist from 'minimist';
|
|
24
|
+
import * as keys from '../security/keys.ts';
|
|
25
|
+
import { startHTTPThreads } from '../server/threads/socketRouter.ts';
|
|
26
|
+
import * as hdbInfoController from '../dataLayer/hdbInfoController.ts';
|
|
27
|
+
import { isReadOnlyMode } from '../resources/databases.ts';
|
|
28
|
+
import { getThisNodeName } from '../server/nodeName.ts';
|
|
29
|
+
import * as hdbTerms from '../utility/hdbTerms.ts';
|
|
30
|
+
import { getHdbPid, isProcessRunning } from '../utility/processManagement/processManagement.js';
|
|
31
|
+
import { PACKAGE_ROOT } from '../utility/packageUtils.js';
|
|
31
32
|
|
|
32
33
|
let pmUtils;
|
|
33
34
|
let cmdArgs;
|
|
34
35
|
let skipExitListeners = false;
|
|
35
36
|
|
|
36
|
-
const UPGRADE_COMPLETE_MSG = 'Upgrade complete. Starting Harper
|
|
37
|
-
const UPGRADE_ERR = 'Got an error while trying to upgrade your Harper
|
|
38
|
-
const HDB_NOT_FOUND_MSG = 'Harper
|
|
37
|
+
const UPGRADE_COMPLETE_MSG = 'Upgrade complete. Starting Harper.';
|
|
38
|
+
const UPGRADE_ERR = 'Got an error while trying to upgrade your Harper instance. Exiting Harper.';
|
|
39
|
+
const HDB_NOT_FOUND_MSG = 'Harper not found, starting install process.';
|
|
39
40
|
const INSTALL_ERR = 'There was an error during install. Exiting.';
|
|
40
|
-
const HDB_STARTED = 'Harper
|
|
41
|
+
const HDB_STARTED = 'Harper successfully started.';
|
|
41
42
|
|
|
42
43
|
function addUnhandleRejectionListener() {
|
|
43
44
|
process.on('unhandledRejection', (reason, promise) => {
|
|
@@ -74,7 +75,13 @@ function addExitListeners() {
|
|
|
74
75
|
*/
|
|
75
76
|
async function initialize(calledByInstall = false, calledByMain = false) {
|
|
76
77
|
// Check to see if HDB is installed, if it isn't we call install.
|
|
77
|
-
console.log(chalk.magenta('Starting Harper
|
|
78
|
+
console.log(chalk.magenta('Starting Harper...'));
|
|
79
|
+
|
|
80
|
+
// Display read-only mode warning early, before database initialization
|
|
81
|
+
if (isReadOnlyMode()) {
|
|
82
|
+
console.log(chalk.yellow('\n*** RUNNING IN READ-ONLY MODE ***'));
|
|
83
|
+
console.log(chalk.yellow('Database writes are disabled. Analytics collection is disabled.\n'));
|
|
84
|
+
}
|
|
78
85
|
|
|
79
86
|
addUnhandleRejectionListener();
|
|
80
87
|
|
|
@@ -101,7 +108,7 @@ async function initialize(calledByInstall = false, calledByMain = false) {
|
|
|
101
108
|
|
|
102
109
|
// If HARPER_SET_CONFIG is present, filter out any config keys that are set in it
|
|
103
110
|
// to prevent individual env vars from overriding explicit runtime configuration
|
|
104
|
-
const { filterArgsAgainstRuntimeConfig } = require('../config/harperConfigEnvVars
|
|
111
|
+
const { filterArgsAgainstRuntimeConfig } = require('../config/harperConfigEnvVars');
|
|
105
112
|
parsedArgs = filterArgsAgainstRuntimeConfig(parsedArgs);
|
|
106
113
|
|
|
107
114
|
if (!hdbUtils.isEmpty(parsedArgs) && !hdbUtils.isEmptyOrZeroLength(Object.keys(parsedArgs))) {
|
|
@@ -109,7 +116,7 @@ async function initialize(calledByInstall = false, calledByMain = false) {
|
|
|
109
116
|
}
|
|
110
117
|
}
|
|
111
118
|
|
|
112
|
-
// if this process is Harper
|
|
119
|
+
// if this process is Harper restarting, the parent could still be compacting RocksDB on exit,
|
|
113
120
|
// so we need to wait for the parent to exit
|
|
114
121
|
if (process.env.HARPER_PARENT_PROCESS_PID) {
|
|
115
122
|
const prevProcessPid = parseInt(process.env.HARPER_PARENT_PROCESS_PID);
|
|
@@ -129,22 +136,22 @@ async function initialize(calledByInstall = false, calledByMain = false) {
|
|
|
129
136
|
}
|
|
130
137
|
}
|
|
131
138
|
|
|
132
|
-
// Check to see if Harper
|
|
139
|
+
// Check to see if Harper is already running by checking for a pid file
|
|
133
140
|
// If found confirm it matches a currently running processes
|
|
134
141
|
let hdbPid = getHdbPid();
|
|
135
142
|
if (hdbPid) {
|
|
136
|
-
hdbLogger.debug('Error: Harper
|
|
137
|
-
console.error(`Error: Harper
|
|
143
|
+
hdbLogger.debug('Error: Harper is already running');
|
|
144
|
+
console.error(`Error: Harper is already running (pid: ${hdbPid})`);
|
|
138
145
|
process.exit(4);
|
|
139
146
|
}
|
|
140
147
|
|
|
141
148
|
addExitListeners();
|
|
142
149
|
|
|
143
150
|
if (calledByMain) {
|
|
144
|
-
// Write Harper
|
|
151
|
+
// Write Harper PID to file for tracking purposes
|
|
145
152
|
await fs.writeFile(path.join(env.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), hdbTerms.HDB_PID_FILE), `${process.pid}`);
|
|
146
153
|
}
|
|
147
|
-
hdbLogger.info('Harper
|
|
154
|
+
hdbLogger.info('Harper PID', process.pid);
|
|
148
155
|
|
|
149
156
|
// Check to see if an upgrade is needed based on existing hdbInfo data. If so, we need to force the user to upgrade
|
|
150
157
|
// before the server can be started.
|
|
@@ -159,7 +166,7 @@ async function initialize(calledByInstall = false, calledByMain = false) {
|
|
|
159
166
|
} catch (err) {
|
|
160
167
|
if (upgradeVers) {
|
|
161
168
|
console.error(
|
|
162
|
-
`Got an error while trying to upgrade your Harper
|
|
169
|
+
`Got an error while trying to upgrade your Harper instance to version ${upgradeVers}. Exiting Harper.`,
|
|
163
170
|
err
|
|
164
171
|
);
|
|
165
172
|
hdbLogger.error(err);
|
|
@@ -175,7 +182,7 @@ async function initialize(calledByInstall = false, calledByMain = false) {
|
|
|
175
182
|
await keys.reviewSelfSignedCert();
|
|
176
183
|
}
|
|
177
184
|
/**
|
|
178
|
-
* Starts Harper
|
|
185
|
+
* Starts Harper DB threads
|
|
179
186
|
* If the hdbBootProps file is not found, it is assumed an install needs to be performed.
|
|
180
187
|
* @param calledByInstall - If run is called by install we want to ignore any
|
|
181
188
|
* cmd/env args as they would have already been written to config on install.
|
|
@@ -211,14 +218,14 @@ async function main(calledByInstall = false) {
|
|
|
211
218
|
}
|
|
212
219
|
}
|
|
213
220
|
function started() {
|
|
214
|
-
// Console log Harper
|
|
221
|
+
// Console log Harper dog logo
|
|
215
222
|
hdbLogger.suppressLogging(() => {
|
|
216
|
-
console.log(chalk.magenta(`Harper
|
|
223
|
+
console.log(chalk.magenta(`Harper ${packageJson.version} successfully started`));
|
|
217
224
|
});
|
|
218
225
|
hdbLogger.notify(HDB_STARTED);
|
|
219
226
|
}
|
|
220
227
|
/**
|
|
221
|
-
* Launches a separate process for Harper
|
|
228
|
+
* Launches a separate process for Harper and then exits. This is an unusual practice and is anathema
|
|
222
229
|
* to the way processes are typically handled, both in terminal and for services (systemd), but this functionality
|
|
223
230
|
* is retained for legacy purposes.
|
|
224
231
|
* @returns {Promise<void>} // ha ha, it doesn't!
|
|
@@ -241,21 +248,25 @@ async function launch(exit = true) {
|
|
|
241
248
|
}
|
|
242
249
|
}
|
|
243
250
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
251
|
+
export { launch };
|
|
252
|
+
export { main };
|
|
253
|
+
export { startupLog };
|
|
247
254
|
|
|
248
255
|
/**
|
|
249
256
|
* Logs running services and relevant ports/information.
|
|
250
257
|
* Called by worker thread 1 once all servers have started
|
|
251
258
|
* @param portResolutions
|
|
252
259
|
*/
|
|
253
|
-
function startupLog(portResolutions) {
|
|
260
|
+
function startupLog(portResolutions: any) {
|
|
254
261
|
// Adds padding to a string
|
|
255
262
|
const padding = 20;
|
|
256
263
|
const pad = (param) => param.padEnd(padding);
|
|
257
264
|
let logMsg = '\n';
|
|
258
265
|
|
|
266
|
+
if (isReadOnlyMode()) {
|
|
267
|
+
logMsg += `${pad('Mode:')}${chalk.yellow('READ-ONLY')}\n`;
|
|
268
|
+
}
|
|
269
|
+
|
|
259
270
|
logMsg += `${pad('Hostname:')}${getThisNodeName()}\n`;
|
|
260
271
|
|
|
261
272
|
logMsg += `${pad('Worker Threads:')}${env.get(CONFIG_PARAMS.THREADS_COUNT)}\n`;
|