@harperfast/harper 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/README.md +11 -10
- package/agent/agent.ts +203 -0
- package/agent/loop.ts +205 -0
- package/agent/operations.ts +148 -0
- package/agent/session.ts +187 -0
- package/agent/tools/fsTools.ts +276 -0
- package/agent/tools/httpFetchTool.ts +112 -0
- package/agent/tools/scheduleTool.ts +68 -0
- package/agent/toolset.ts +43 -0
- package/agent/types.ts +85 -0
- package/bin/{BinObjects.js → BinObjects.ts} +4 -5
- package/bin/cliCredentials.ts +133 -0
- package/bin/cliOperations.ts +339 -0
- package/bin/copyDb.ts +10 -10
- package/bin/deployRenderer.ts +196 -0
- package/bin/{harper.js → harper.ts} +43 -19
- package/bin/{install.js → install.ts} +3 -3
- package/bin/lite.ts +2 -0
- package/bin/login.ts +168 -0
- package/bin/logout.ts +11 -0
- package/bin/mcp/client.ts +407 -0
- package/bin/mcp/doctor.ts +189 -0
- package/bin/mcp/index.ts +80 -0
- package/bin/mcp/options.ts +122 -0
- package/bin/mcp/printConfig.ts +89 -0
- package/bin/multipartBuilder.ts +74 -0
- package/bin/{restart.js → restart.ts} +27 -28
- package/bin/{run.js → run.ts} +41 -30
- package/bin/sseConsumer.ts +126 -0
- package/bin/{status.js → status.ts} +10 -10
- package/bin/{stop.js → stop.ts} +5 -5
- package/bin/upgrade.js +6 -6
- package/components/Application.ts +144 -18
- package/components/ApplicationScope.ts +2 -2
- package/components/ComponentV1.ts +2 -2
- package/components/EntryHandler.ts +159 -9
- package/components/OptionsWatcher.ts +75 -11
- package/components/Scope.ts +125 -15
- package/components/anthropic/index.ts +547 -0
- package/components/bedrock/index.ts +823 -0
- package/components/componentLoader.ts +63 -32
- package/components/deployLifecycle.ts +161 -0
- package/components/deploymentOperations.ts +173 -0
- package/components/deploymentRecorder.ts +402 -0
- package/components/deriveURLPath.ts +4 -4
- package/components/mcp/adapters/fastify.ts +87 -0
- package/components/mcp/adapters/harperHttp.ts +103 -0
- package/components/mcp/audit.ts +75 -0
- package/components/mcp/index.ts +134 -0
- package/components/mcp/jsonrpc.ts +134 -0
- package/components/mcp/lifecycle.ts +105 -0
- package/components/mcp/listChanged.ts +270 -0
- package/components/mcp/rateLimit.ts +217 -0
- package/components/mcp/resources.ts +593 -0
- package/components/mcp/session.ts +151 -0
- package/components/mcp/sessionRegistry.ts +140 -0
- package/components/mcp/toolRegistry.ts +292 -0
- package/components/mcp/tools/application.ts +603 -0
- package/components/mcp/tools/operations.ts +283 -0
- package/components/mcp/tools/schemas/derive.ts +256 -0
- package/components/mcp/tools/schemas/operations.ts +245 -0
- package/components/mcp/transport.ts +517 -0
- package/components/ollama/index.ts +316 -0
- package/components/openai/index.ts +563 -0
- package/components/operations.js +211 -60
- package/components/operationsValidation.js +3 -3
- package/components/packageComponent.ts +97 -29
- package/components/requestRestart.ts +17 -2
- package/components/status/crossThread.ts +14 -5
- package/components/status/errors.ts +1 -1
- package/config/RootConfigWatcher.ts +56 -2
- package/config/configUtils.js +29 -8
- package/config/harperConfigEnvVars.ts +1 -1
- package/config-root.schema.json +74 -0
- package/dataLayer/{CreateAttributeObject.js → CreateAttributeObject.ts} +4 -3
- package/dataLayer/{CreateTableObject.js → CreateTableObject.ts} +2 -1
- package/dataLayer/{DataLayerObjects.js → DataLayerObjects.ts} +17 -9
- package/dataLayer/{DeleteBeforeObject.js → DeleteBeforeObject.ts} +2 -1
- package/dataLayer/{DeleteObject.js → DeleteObject.ts} +3 -2
- package/dataLayer/{DropAttributeObject.js → DropAttributeObject.ts} +2 -1
- package/dataLayer/{GetBackupObject.js → GetBackupObject.ts} +3 -2
- package/dataLayer/{InsertObject.js → InsertObject.ts} +3 -2
- package/dataLayer/{ReadAuditLogObject.js → ReadAuditLogObject.ts} +3 -2
- package/dataLayer/{SQLSearch.js → SQLSearch.ts} +97 -43
- package/dataLayer/{SearchByConditionsObject.js → SearchByConditionsObject.ts} +5 -6
- package/dataLayer/{SearchByHashObject.js → SearchByHashObject.ts} +2 -1
- package/dataLayer/{SearchObject.js → SearchObject.ts} +2 -1
- package/dataLayer/{SqlSearchObject.js → SqlSearchObject.ts} +2 -1
- package/dataLayer/{UpdateObject.js → UpdateObject.ts} +3 -2
- package/dataLayer/{UpsertObject.js → UpsertObject.ts} +3 -2
- package/dataLayer/{bulkLoad.js → bulkLoad.ts} +40 -49
- package/dataLayer/{delete.js → delete.ts} +21 -26
- package/dataLayer/{export.js → export.ts} +22 -26
- package/dataLayer/{getBackup.js → getBackup.ts} +7 -9
- package/dataLayer/harperBridge/BridgeMethods.ts +102 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +27 -26
- package/dataLayer/harperBridge/TableSizeObject.ts +1 -0
- package/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/dataLayer/harperBridge/{harperBridge.js → harperBridge.ts} +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +8 -6
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +6 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +6 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +3 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +10 -8
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +4 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +6 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +2 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +3 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +6 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.ts +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/dataLayer/{hdbInfoController.js → hdbInfoController.ts} +20 -26
- package/dataLayer/{insert.js → insert.ts} +24 -24
- package/dataLayer/{readAuditLog.js → readAuditLog.ts} +8 -10
- package/dataLayer/{schema.js → schema.ts} +32 -44
- package/dataLayer/{schemaDescribe.js → schemaDescribe.ts} +23 -26
- package/dataLayer/{search.js → search.ts} +9 -15
- package/dataLayer/{transaction.js → transaction.ts} +2 -5
- package/dataLayer/{update.js → update.ts} +19 -22
- package/dist/agent/agent.d.ts +35 -0
- package/dist/agent/agent.js +175 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/loop.d.ts +34 -0
- package/dist/agent/loop.js +176 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/operations.d.ts +17 -0
- package/dist/agent/operations.js +137 -0
- package/dist/agent/operations.js.map +1 -0
- package/dist/agent/session.d.ts +36 -0
- package/dist/agent/session.js +182 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/agent/tools/fsTools.d.ts +19 -0
- package/dist/agent/tools/fsTools.js +286 -0
- package/dist/agent/tools/fsTools.js.map +1 -0
- package/dist/agent/tools/httpFetchTool.d.ts +9 -0
- package/dist/agent/tools/httpFetchTool.js +116 -0
- package/dist/agent/tools/httpFetchTool.js.map +1 -0
- package/dist/agent/tools/scheduleTool.d.ts +22 -0
- package/dist/agent/tools/scheduleTool.js +54 -0
- package/dist/agent/tools/scheduleTool.js.map +1 -0
- package/dist/agent/toolset.d.ts +24 -0
- package/dist/agent/toolset.js +33 -0
- package/dist/agent/toolset.js.map +1 -0
- package/dist/agent/types.d.ts +75 -0
- package/dist/agent/types.js +10 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/bin/BinObjects.d.ts +2 -2
- package/dist/bin/BinObjects.js +6 -3
- package/dist/bin/BinObjects.js.map +1 -1
- package/dist/bin/cliCredentials.d.ts +27 -0
- package/dist/bin/cliCredentials.js +130 -0
- package/dist/bin/cliCredentials.js.map +1 -0
- package/dist/bin/cliOperations.d.ts +7 -7
- package/dist/bin/cliOperations.js +251 -37
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/copyDb.js +16 -16
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/deployRenderer.d.ts +47 -0
- package/dist/bin/deployRenderer.js +185 -0
- package/dist/bin/deployRenderer.js.map +1 -0
- package/dist/bin/harper.d.ts +2 -1
- package/dist/bin/harper.js +87 -26
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/install.d.ts +1 -1
- package/dist/bin/install.js +41 -4
- package/dist/bin/install.js.map +1 -1
- package/dist/bin/lite.js +3 -4
- package/dist/bin/lite.js.map +1 -1
- package/dist/bin/login.d.ts +4 -0
- package/dist/bin/login.js +158 -0
- package/dist/bin/login.js.map +1 -0
- package/dist/bin/logout.d.ts +4 -0
- package/dist/bin/logout.js +16 -0
- package/dist/bin/logout.js.map +1 -0
- package/dist/bin/mcp/client.d.ts +34 -0
- package/dist/bin/mcp/client.js +395 -0
- package/dist/bin/mcp/client.js.map +1 -0
- package/dist/bin/mcp/doctor.d.ts +11 -0
- package/dist/bin/mcp/doctor.js +193 -0
- package/dist/bin/mcp/doctor.js.map +1 -0
- package/dist/bin/mcp/index.d.ts +10 -0
- package/dist/bin/mcp/index.js +81 -0
- package/dist/bin/mcp/index.js.map +1 -0
- package/dist/bin/mcp/options.d.ts +33 -0
- package/dist/bin/mcp/options.js +113 -0
- package/dist/bin/mcp/options.js.map +1 -0
- package/dist/bin/mcp/printConfig.d.ts +14 -0
- package/dist/bin/mcp/printConfig.js +85 -0
- package/dist/bin/mcp/printConfig.js.map +1 -0
- package/dist/bin/multipartBuilder.d.ts +26 -0
- package/dist/bin/multipartBuilder.js +55 -0
- package/dist/bin/multipartBuilder.js.map +1 -0
- package/dist/bin/restart.d.ts +3 -2
- package/dist/bin/restart.js +82 -45
- package/dist/bin/restart.js.map +1 -1
- package/dist/bin/run.d.ts +13 -9
- package/dist/bin/run.js +111 -65
- package/dist/bin/run.js.map +1 -1
- package/dist/bin/sseConsumer.d.ts +24 -0
- package/dist/bin/sseConsumer.js +127 -0
- package/dist/bin/sseConsumer.js.map +1 -0
- package/dist/bin/status.d.ts +1 -1
- package/dist/bin/status.js +48 -11
- package/dist/bin/status.js.map +1 -1
- package/dist/bin/stop.d.ts +1 -1
- package/dist/bin/stop.js +43 -6
- package/dist/bin/stop.js.map +1 -1
- package/dist/bin/upgrade.js +6 -6
- package/dist/components/Application.d.ts +29 -17
- package/dist/components/Application.js +134 -28
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.js +2 -2
- package/dist/components/ComponentV1.d.ts +1 -1
- package/dist/components/ComponentV1.js +5 -5
- package/dist/components/ComponentV1.js.map +1 -1
- package/dist/components/EntryHandler.d.ts +26 -3
- package/dist/components/EntryHandler.js +153 -13
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/OptionsWatcher.d.ts +7 -2
- package/dist/components/OptionsWatcher.js +72 -10
- package/dist/components/OptionsWatcher.js.map +1 -1
- package/dist/components/Scope.d.ts +11 -6
- package/dist/components/Scope.js +105 -9
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/anthropic/index.d.ts +40 -0
- package/dist/components/anthropic/index.js +428 -0
- package/dist/components/anthropic/index.js.map +1 -0
- package/dist/components/bedrock/index.d.ts +79 -0
- package/dist/components/bedrock/index.js +734 -0
- package/dist/components/bedrock/index.js.map +1 -0
- package/dist/components/componentLoader.d.ts +29 -0
- package/dist/components/componentLoader.js +63 -38
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/deployLifecycle.d.ts +39 -0
- package/dist/components/deployLifecycle.js +156 -0
- package/dist/components/deployLifecycle.js.map +1 -0
- package/dist/components/deploymentOperations.d.ts +19 -0
- package/dist/components/deploymentOperations.js +185 -0
- package/dist/components/deploymentOperations.js.map +1 -0
- package/dist/components/deploymentRecorder.d.ts +81 -0
- package/dist/components/deploymentRecorder.js +401 -0
- package/dist/components/deploymentRecorder.js.map +1 -0
- package/dist/components/deriveURLPath.d.ts +2 -2
- package/dist/components/deriveURLPath.js +2 -2
- package/dist/components/deriveURLPath.js.map +1 -1
- package/dist/components/mcp/adapters/fastify.d.ts +35 -0
- package/dist/components/mcp/adapters/fastify.js +66 -0
- package/dist/components/mcp/adapters/fastify.js.map +1 -0
- package/dist/components/mcp/adapters/harperHttp.d.ts +38 -0
- package/dist/components/mcp/adapters/harperHttp.js +78 -0
- package/dist/components/mcp/adapters/harperHttp.js.map +1 -0
- package/dist/components/mcp/audit.d.ts +27 -0
- package/dist/components/mcp/audit.js +73 -0
- package/dist/components/mcp/audit.js.map +1 -0
- package/dist/components/mcp/index.d.ts +47 -0
- package/dist/components/mcp/index.js +109 -0
- package/dist/components/mcp/index.js.map +1 -0
- package/dist/components/mcp/jsonrpc.d.ts +71 -0
- package/dist/components/mcp/jsonrpc.js +93 -0
- package/dist/components/mcp/jsonrpc.js.map +1 -0
- package/dist/components/mcp/lifecycle.d.ts +69 -0
- package/dist/components/mcp/lifecycle.js +79 -0
- package/dist/components/mcp/lifecycle.js.map +1 -0
- package/dist/components/mcp/listChanged.d.ts +24 -0
- package/dist/components/mcp/listChanged.js +257 -0
- package/dist/components/mcp/listChanged.js.map +1 -0
- package/dist/components/mcp/rateLimit.d.ts +25 -0
- package/dist/components/mcp/rateLimit.js +226 -0
- package/dist/components/mcp/rateLimit.js.map +1 -0
- package/dist/components/mcp/resources.d.ts +90 -0
- package/dist/components/mcp/resources.js +515 -0
- package/dist/components/mcp/resources.js.map +1 -0
- package/dist/components/mcp/session.d.ts +36 -0
- package/dist/components/mcp/session.js +170 -0
- package/dist/components/mcp/session.js.map +1 -0
- package/dist/components/mcp/sessionRegistry.d.ts +63 -0
- package/dist/components/mcp/sessionRegistry.js +124 -0
- package/dist/components/mcp/sessionRegistry.js.map +1 -0
- package/dist/components/mcp/toolRegistry.d.ts +150 -0
- package/dist/components/mcp/toolRegistry.js +176 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -0
- package/dist/components/mcp/tools/application.d.ts +58 -0
- package/dist/components/mcp/tools/application.js +549 -0
- package/dist/components/mcp/tools/application.js.map +1 -0
- package/dist/components/mcp/tools/operations.d.ts +23 -0
- package/dist/components/mcp/tools/operations.js +303 -0
- package/dist/components/mcp/tools/operations.js.map +1 -0
- package/dist/components/mcp/tools/schemas/derive.d.ts +36 -0
- package/dist/components/mcp/tools/schemas/derive.js +216 -0
- package/dist/components/mcp/tools/schemas/derive.js.map +1 -0
- package/dist/components/mcp/tools/schemas/operations.d.ts +27 -0
- package/dist/components/mcp/tools/schemas/operations.js +243 -0
- package/dist/components/mcp/tools/schemas/operations.js.map +1 -0
- package/dist/components/mcp/transport.d.ts +38 -0
- package/dist/components/mcp/transport.js +467 -0
- package/dist/components/mcp/transport.js.map +1 -0
- package/dist/components/ollama/index.d.ts +46 -0
- package/dist/components/ollama/index.js +239 -0
- package/dist/components/ollama/index.js.map +1 -0
- package/dist/components/openai/index.d.ts +51 -0
- package/dist/components/openai/index.js +475 -0
- package/dist/components/openai/index.js.map +1 -0
- package/dist/components/operations.d.ts +6 -6
- package/dist/components/operations.js +198 -52
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.d.ts +2 -2
- package/dist/components/operationsValidation.js +3 -3
- package/dist/components/packageComponent.d.ts +28 -6
- package/dist/components/packageComponent.js +87 -26
- package/dist/components/packageComponent.js.map +1 -1
- package/dist/components/requestRestart.d.ts +1 -0
- package/dist/components/requestRestart.js +12 -1
- package/dist/components/requestRestart.js.map +1 -1
- package/dist/components/status/crossThread.d.ts +5 -1
- package/dist/components/status/crossThread.js +12 -5
- package/dist/components/status/crossThread.js.map +1 -1
- package/dist/components/status/errors.js +7 -7
- package/dist/config/RootConfigWatcher.d.ts +3 -0
- package/dist/config/RootConfigWatcher.js +52 -1
- package/dist/config/RootConfigWatcher.js.map +1 -1
- package/dist/config/configUtils.js +31 -8
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.js +1 -1
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/CreateAttributeObject.d.ts +3 -7
- package/dist/dataLayer/CreateAttributeObject.js +4 -3
- package/dist/dataLayer/CreateAttributeObject.js.map +1 -1
- package/dist/dataLayer/CreateTableObject.d.ts +2 -4
- package/dist/dataLayer/CreateTableObject.js +2 -1
- package/dist/dataLayer/CreateTableObject.js.map +1 -1
- package/dist/dataLayer/DataLayerObjects.d.ts +17 -16
- package/dist/dataLayer/DataLayerObjects.js +19 -5
- package/dist/dataLayer/DataLayerObjects.js.map +1 -1
- package/dist/dataLayer/DeleteBeforeObject.d.ts +3 -5
- package/dist/dataLayer/DeleteBeforeObject.js +2 -1
- package/dist/dataLayer/DeleteBeforeObject.js.map +1 -1
- package/dist/dataLayer/DeleteObject.d.ts +3 -7
- package/dist/dataLayer/DeleteObject.js +4 -3
- package/dist/dataLayer/DeleteObject.js.map +1 -1
- package/dist/dataLayer/DropAttributeObject.d.ts +2 -4
- package/dist/dataLayer/DropAttributeObject.js +2 -1
- package/dist/dataLayer/DropAttributeObject.js.map +1 -1
- package/dist/dataLayer/GetBackupObject.d.ts +3 -5
- package/dist/dataLayer/GetBackupObject.js +4 -3
- package/dist/dataLayer/GetBackupObject.js.map +1 -1
- package/dist/dataLayer/InsertObject.d.ts +3 -8
- package/dist/dataLayer/InsertObject.js +4 -3
- package/dist/dataLayer/InsertObject.js.map +1 -1
- package/dist/dataLayer/ReadAuditLogObject.d.ts +3 -7
- package/dist/dataLayer/ReadAuditLogObject.js +4 -3
- package/dist/dataLayer/ReadAuditLogObject.js.map +1 -1
- package/dist/dataLayer/SQLSearch.d.ts +68 -38
- package/dist/dataLayer/SQLSearch.js +140 -78
- package/dist/dataLayer/SQLSearch.js.map +1 -1
- package/dist/dataLayer/SearchByConditionsObject.d.ts +10 -58
- package/dist/dataLayer/SearchByConditionsObject.js +5 -7
- package/dist/dataLayer/SearchByConditionsObject.js.map +1 -1
- package/dist/dataLayer/SearchByHashObject.d.ts +3 -6
- package/dist/dataLayer/SearchByHashObject.js +2 -1
- package/dist/dataLayer/SearchByHashObject.js.map +1 -1
- package/dist/dataLayer/SearchObject.d.ts +3 -12
- package/dist/dataLayer/SearchObject.js +2 -1
- package/dist/dataLayer/SearchObject.js.map +1 -1
- package/dist/dataLayer/SqlSearchObject.d.ts +2 -4
- package/dist/dataLayer/SqlSearchObject.js +2 -1
- package/dist/dataLayer/SqlSearchObject.js.map +1 -1
- package/dist/dataLayer/UpdateObject.d.ts +3 -7
- package/dist/dataLayer/UpdateObject.js +4 -3
- package/dist/dataLayer/UpdateObject.js.map +1 -1
- package/dist/dataLayer/UpsertObject.d.ts +3 -7
- package/dist/dataLayer/UpsertObject.js +4 -3
- package/dist/dataLayer/UpsertObject.js.map +1 -1
- package/dist/dataLayer/bulkLoad.d.ts +4 -4
- package/dist/dataLayer/bulkLoad.js +122 -88
- package/dist/dataLayer/bulkLoad.js.map +1 -1
- package/dist/dataLayer/delete.d.ts +10 -11
- package/dist/dataLayer/delete.js +74 -39
- package/dist/dataLayer/delete.js.map +1 -1
- package/dist/dataLayer/export.d.ts +8 -8
- package/dist/dataLayer/export.js +90 -55
- package/dist/dataLayer/export.js.map +1 -1
- package/dist/dataLayer/getBackup.d.ts +4 -3
- package/dist/dataLayer/getBackup.js +43 -11
- package/dist/dataLayer/getBackup.js.map +1 -1
- package/dist/dataLayer/harperBridge/BridgeMethods.d.ts +39 -21
- package/dist/dataLayer/harperBridge/BridgeMethods.js +41 -20
- package/dist/dataLayer/harperBridge/BridgeMethods.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +2 -2
- package/dist/dataLayer/harperBridge/ResourceBridge.js +26 -25
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/TableSizeObject.d.ts +1 -0
- package/dist/dataLayer/harperBridge/TableSizeObject.js.map +1 -1
- package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.d.ts +4 -4
- package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/dist/dataLayer/harperBridge/harperBridge.d.ts +2 -3
- package/dist/dataLayer/harperBridge/harperBridge.js +38 -4
- package/dist/dataLayer/harperBridge/harperBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +7 -6
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +5 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +8 -8
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.d.ts +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +5 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/dist/dataLayer/hdbInfoController.d.ts +4 -8
- package/dist/dataLayer/hdbInfoController.js +66 -31
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/insert.d.ts +14 -26
- package/dist/dataLayer/insert.js +63 -28
- package/dist/dataLayer/insert.js.map +1 -1
- package/dist/dataLayer/readAuditLog.d.ts +1 -3
- package/dist/dataLayer/readAuditLog.js +45 -13
- package/dist/dataLayer/readAuditLog.js.map +1 -1
- package/dist/dataLayer/schema.d.ts +10 -10
- package/dist/dataLayer/schema.js +124 -89
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.d.ts +4 -4
- package/dist/dataLayer/schemaDescribe.js +78 -41
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/dataLayer/search.d.ts +4 -4
- package/dist/dataLayer/search.js +12 -13
- package/dist/dataLayer/search.js.map +1 -1
- package/dist/dataLayer/transaction.d.ts +1 -1
- package/dist/dataLayer/transaction.js +3 -4
- package/dist/dataLayer/transaction.js.map +1 -1
- package/dist/dataLayer/update.d.ts +2 -8
- package/dist/dataLayer/update.js +53 -18
- package/dist/dataLayer/update.js.map +1 -1
- package/dist/globals.d.ts +1 -1
- package/dist/globals.js +1 -0
- package/dist/globals.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +65 -0
- package/dist/launchServiceScripts/launchHarperDB.d.ts +1 -0
- package/dist/launchServiceScripts/launchHarperDB.js +3 -0
- package/dist/launchServiceScripts/launchHarperDB.js.map +1 -0
- package/dist/launchServiceScripts/utility/checkNodeVersion.js +3 -0
- package/dist/launchServiceScripts/utility/checkNodeVersion.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +14 -6
- package/dist/resources/DatabaseTransaction.js +39 -15
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/ErrorResource.d.ts +1 -1
- package/dist/resources/ErrorResource.js +3 -1
- package/dist/resources/ErrorResource.js.map +1 -1
- package/dist/resources/LMDBTransaction.d.ts +10 -13
- package/dist/resources/LMDBTransaction.js +18 -7
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/RecordEncoder.d.ts +7 -1
- package/dist/resources/RecordEncoder.js +5 -2
- package/dist/resources/RecordEncoder.js.map +1 -1
- package/dist/resources/RequestTarget.d.ts +1 -0
- package/dist/resources/RequestTarget.js.map +1 -1
- package/dist/resources/Resource.d.ts +9 -5
- package/dist/resources/Resource.js +37 -10
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +24 -5
- package/dist/resources/ResourceInterface.js +20 -0
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Resources.d.ts +3 -4
- package/dist/resources/Resources.js +7 -6
- package/dist/resources/Resources.js.map +1 -1
- package/dist/resources/RocksIndexStore.js +3 -0
- package/dist/resources/RocksIndexStore.js.map +1 -1
- package/dist/resources/RocksTransactionLogStore.d.ts +1 -1
- package/dist/resources/RocksTransactionLogStore.js +46 -27
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.d.ts +59 -329
- package/dist/resources/Table.js +267 -107
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/metadata.d.ts +1 -0
- package/dist/resources/analytics/metadata.js +1 -0
- package/dist/resources/analytics/metadata.js.map +1 -1
- package/dist/resources/analytics/read.d.ts +5 -0
- package/dist/resources/analytics/read.js +16 -5
- package/dist/resources/analytics/read.js.map +1 -1
- package/dist/resources/analytics/write.d.ts +28 -0
- package/dist/resources/analytics/write.js +232 -20
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.d.ts +18 -13
- package/dist/resources/auditStore.js +13 -8
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +16 -27
- package/dist/resources/blob.js +8 -8
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/dataLoader.d.ts +1 -1
- package/dist/resources/dataLoader.js +13 -13
- package/dist/resources/databases.d.ts +13 -0
- package/dist/resources/databases.js +160 -52
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/graphql.d.ts +1 -7
- package/dist/resources/graphql.js +224 -174
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +16 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +308 -59
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/indexes/vector.d.ts +1 -0
- package/dist/resources/indexes/vector.js +14 -0
- package/dist/resources/indexes/vector.js.map +1 -1
- package/dist/resources/loadEnv.d.ts +2 -5
- package/dist/resources/loadEnv.js +21 -18
- package/dist/resources/loadEnv.js.map +1 -1
- package/dist/resources/login.d.ts +2 -3
- package/dist/resources/login.js +5 -4
- package/dist/resources/login.js.map +1 -1
- package/dist/resources/models/Models.d.ts +45 -0
- package/dist/resources/models/Models.js +265 -0
- package/dist/resources/models/Models.js.map +1 -0
- package/dist/resources/models/TestBackend.d.ts +15 -0
- package/dist/resources/models/TestBackend.js +71 -0
- package/dist/resources/models/TestBackend.js.map +1 -0
- package/dist/resources/models/agentLoop.d.ts +125 -0
- package/dist/resources/models/agentLoop.js +746 -0
- package/dist/resources/models/agentLoop.js.map +1 -0
- package/dist/resources/models/analyticsTable.d.ts +65 -0
- package/dist/resources/models/analyticsTable.js +166 -0
- package/dist/resources/models/analyticsTable.js.map +1 -0
- package/dist/resources/models/backendHelpers.d.ts +57 -0
- package/dist/resources/models/backendHelpers.js +109 -0
- package/dist/resources/models/backendHelpers.js.map +1 -0
- package/dist/resources/models/backendRegistry.d.ts +36 -0
- package/dist/resources/models/backendRegistry.js +54 -0
- package/dist/resources/models/backendRegistry.js.map +1 -0
- package/dist/resources/models/bootstrap.d.ts +24 -0
- package/dist/resources/models/bootstrap.js +112 -0
- package/dist/resources/models/bootstrap.js.map +1 -0
- package/dist/resources/models/embedHook.d.ts +33 -0
- package/dist/resources/models/embedHook.js +127 -0
- package/dist/resources/models/embedHook.js.map +1 -0
- package/dist/resources/models/types.d.ts +301 -0
- package/dist/resources/models/types.js +11 -0
- package/dist/resources/models/types.js.map +1 -0
- package/dist/resources/replayLogs.js +7 -1
- package/dist/resources/replayLogs.js.map +1 -1
- package/dist/resources/roles.d.ts +1 -7
- package/dist/resources/roles.js +67 -71
- package/dist/resources/roles.js.map +1 -1
- package/dist/resources/search.d.ts +18 -1
- package/dist/resources/search.js +349 -140
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/tracked.d.ts +1 -1
- package/dist/resources/tracked.js +14 -14
- package/dist/resources/tracked.js.map +1 -1
- package/dist/resources/transaction.d.ts +1 -1
- package/dist/resources/transaction.js +1 -1
- package/dist/resources/transaction.js.map +1 -1
- package/dist/resources/transactionBroadcast.d.ts +1 -1
- package/dist/resources/transactionBroadcast.js.map +1 -1
- package/dist/security/auth.d.ts +1 -5
- package/dist/security/auth.js +34 -25
- package/dist/security/auth.js.map +1 -1
- package/dist/security/certificateVerification/crlVerification.js +7 -1
- package/dist/security/certificateVerification/crlVerification.js.map +1 -1
- package/dist/security/cryptoHash.d.ts +2 -2
- package/dist/security/cryptoHash.js +37 -5
- package/dist/security/cryptoHash.js.map +1 -1
- package/dist/security/data_objects/PermissionAttributeResponseObject.d.ts +3 -4
- package/dist/security/data_objects/PermissionAttributeResponseObject.js +4 -1
- package/dist/security/data_objects/PermissionAttributeResponseObject.js.map +1 -1
- package/dist/security/data_objects/PermissionResponseObject.d.ts +9 -9
- package/dist/security/data_objects/PermissionResponseObject.js +15 -8
- package/dist/security/data_objects/PermissionResponseObject.js.map +1 -1
- package/dist/security/data_objects/PermissionTableResponseObject.d.ts +5 -6
- package/dist/security/data_objects/PermissionTableResponseObject.js +6 -1
- package/dist/security/data_objects/PermissionTableResponseObject.js.map +1 -1
- package/dist/security/fastifyAuth.d.ts +2 -2
- package/dist/security/fastifyAuth.js +131 -22
- package/dist/security/fastifyAuth.js.map +1 -1
- package/dist/security/impersonation.js +15 -15
- package/dist/security/jsLoader.js +18 -5
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/keys.d.ts +45 -48
- package/dist/security/keys.js +160 -114
- package/dist/security/keys.js.map +1 -1
- package/dist/security/permissionsTranslator.js +2 -2
- package/dist/security/role.d.ts +5 -5
- package/dist/security/role.js +70 -35
- package/dist/security/role.js.map +1 -1
- package/dist/security/tokenAuthentication.d.ts +13 -0
- package/dist/security/tokenAuthentication.js +57 -27
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.js +74 -38
- package/dist/security/user.js.map +1 -1
- package/dist/server/DurableSubscriptionsSession.d.ts +4 -2
- package/dist/server/DurableSubscriptionsSession.js +71 -55
- package/dist/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/server/REST.d.ts +1 -8
- package/dist/server/REST.js +17 -16
- package/dist/server/REST.js.map +1 -1
- package/dist/server/Server.d.ts +23 -4
- package/dist/server/Server.js +1 -1
- package/dist/server/Server.js.map +1 -1
- package/dist/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/dist/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/dist/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/dist/server/fastifyRoutes.d.ts +1 -4
- package/dist/server/fastifyRoutes.js +34 -30
- package/dist/server/fastifyRoutes.js.map +1 -1
- package/dist/server/graphqlQuerying.d.ts +1 -1
- package/dist/server/graphqlQuerying.js +8 -7
- package/dist/server/graphqlQuerying.js.map +1 -1
- package/dist/server/http.d.ts +9 -4
- package/dist/server/http.js +523 -47
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +66 -15
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/JobObject.d.ts +3 -3
- package/dist/server/jobs/JobObject.js +53 -7
- package/dist/server/jobs/JobObject.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +64 -24
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobRunner.d.ts +7 -6
- package/dist/server/jobs/jobRunner.js +68 -30
- package/dist/server/jobs/jobRunner.js.map +1 -1
- package/dist/server/jobs/jobs.d.ts +18 -7
- package/dist/server/jobs/jobs.js +93 -61
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/loadRootComponents.js +1 -1
- package/dist/server/middlewareChain.d.ts +80 -0
- package/dist/server/middlewareChain.js +252 -0
- package/dist/server/middlewareChain.js.map +1 -0
- package/dist/server/mqtt.d.ts +1 -8
- package/dist/server/mqtt.js +22 -17
- package/dist/server/mqtt.js.map +1 -1
- package/dist/server/nodeName.js +44 -13
- package/dist/server/nodeName.js.map +1 -1
- package/dist/server/operationsServer.d.ts +2 -2
- package/dist/server/operationsServer.js +106 -33
- package/dist/server/operationsServer.js.map +1 -1
- package/dist/server/serverHelpers/Headers.d.ts +4 -4
- package/dist/server/serverHelpers/Headers.js +2 -0
- package/dist/server/serverHelpers/Headers.js.map +1 -1
- package/dist/server/serverHelpers/JSONStream.d.ts +7 -1
- package/dist/server/serverHelpers/JSONStream.js +12 -3
- package/dist/server/serverHelpers/JSONStream.js.map +1 -1
- package/dist/server/serverHelpers/Request.d.ts +106 -8
- package/dist/server/serverHelpers/Request.js +370 -9
- package/dist/server/serverHelpers/Request.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.d.ts +1 -1
- package/dist/server/serverHelpers/contentTypes.js +36 -7
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/multipartParser.d.ts +21 -0
- package/dist/server/serverHelpers/multipartParser.js +142 -0
- package/dist/server/serverHelpers/multipartParser.js.map +1 -0
- package/dist/server/serverHelpers/progressEmitter.d.ts +25 -0
- package/dist/server/serverHelpers/progressEmitter.js +103 -0
- package/dist/server/serverHelpers/progressEmitter.js.map +1 -0
- package/dist/server/serverHelpers/serverHandlers.d.ts +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +38 -7
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +4 -2
- package/dist/server/serverHelpers/serverUtilities.js +97 -93
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/static.js +8 -5
- package/dist/server/static.js.map +1 -1
- package/dist/server/status/index.js +3 -3
- package/dist/server/storageReclamation.d.ts +10 -0
- package/dist/server/storageReclamation.js +68 -9
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/itc.js +7 -4
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +1 -1
- package/dist/server/threads/manageThreads.js +110 -26
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.d.ts +0 -1
- package/dist/server/threads/socketRouter.js +8 -271
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadServer.d.ts +1 -0
- package/dist/server/threads/threadServer.js +360 -118
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/server/threads/workerProcessGuard.d.ts +42 -0
- package/dist/server/threads/workerProcessGuard.js +114 -0
- package/dist/server/threads/workerProcessGuard.js.map +1 -0
- package/dist/server/throttle.js +17 -0
- package/dist/server/throttle.js.map +1 -1
- package/dist/sqlTranslator/SelectValidator.d.ts +21 -24
- package/dist/sqlTranslator/SelectValidator.js +86 -47
- package/dist/sqlTranslator/SelectValidator.js.map +1 -1
- package/dist/sqlTranslator/alasqlFunctionImporter.d.ts +6 -2
- package/dist/sqlTranslator/alasqlFunctionImporter.js +40 -3
- package/dist/sqlTranslator/alasqlFunctionImporter.js.map +1 -1
- package/dist/sqlTranslator/deleteTranslator.d.ts +4 -7
- package/dist/sqlTranslator/deleteTranslator.js +48 -14
- package/dist/sqlTranslator/deleteTranslator.js.map +1 -1
- package/dist/sqlTranslator/index.d.ts +10 -9
- package/dist/sqlTranslator/index.js +69 -30
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/sqlTranslator/sql_statement_bucket.d.ts +10 -10
- package/dist/sqlTranslator/sql_statement_bucket.js +55 -13
- package/dist/sqlTranslator/sql_statement_bucket.js.map +1 -1
- package/dist/upgrade/UpgradeObjects.d.ts +2 -3
- package/dist/upgrade/UpgradeObjects.js +37 -4
- package/dist/upgrade/UpgradeObjects.js.map +1 -1
- package/dist/upgrade/directives/5-2-0.d.ts +6 -0
- package/dist/upgrade/directives/5-2-0.js +77 -0
- package/dist/upgrade/directives/5-2-0.js.map +1 -0
- package/dist/upgrade/directives/directivesController.d.ts +10 -10
- package/dist/upgrade/directives/directivesController.js +52 -11
- package/dist/upgrade/directives/directivesController.js.map +1 -1
- package/dist/upgrade/directivesManager.d.ts +1 -1
- package/dist/upgrade/directivesManager.js +53 -18
- package/dist/upgrade/directivesManager.js.map +1 -1
- package/dist/upgrade/upgradePrompt.d.ts +3 -3
- package/dist/upgrade/upgradePrompt.js +65 -30
- package/dist/upgrade/upgradePrompt.js.map +1 -1
- package/dist/upgrade/upgradeUtilities.d.ts +1 -1
- package/dist/upgrade/upgradeUtilities.js +37 -5
- package/dist/upgrade/upgradeUtilities.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.d.ts +1 -1
- package/dist/utility/OperationFunctionCaller.js +45 -10
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/assignCmdEnvVariables.d.ts +1 -2
- package/dist/utility/assignCmdEnvVariables.js +8 -4
- package/dist/utility/assignCmdEnvVariables.js.map +1 -1
- package/dist/utility/common_utils.d.ts +80 -77
- package/dist/utility/common_utils.js +140 -79
- package/dist/utility/common_utils.js.map +1 -1
- package/dist/utility/environment/environmentManager.d.ts +12 -11
- package/dist/utility/environment/environmentManager.js +75 -29
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/environment/systemInformation.d.ts +4 -0
- package/dist/utility/environment/systemInformation.js +27 -16
- package/dist/utility/environment/systemInformation.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +192 -168
- package/dist/utility/errors/commonErrors.js +49 -18
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +37 -51
- package/dist/utility/errors/hdbError.js +65 -26
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/expandEnvVar.d.ts +61 -0
- package/dist/utility/expandEnvVar.js +113 -0
- package/dist/utility/expandEnvVar.js.map +1 -0
- package/dist/utility/functions/geo.js +2 -2
- package/dist/utility/functions/sql/alaSQLExtension.js +1 -1
- package/dist/utility/globalSchema.d.ts +13 -4
- package/dist/utility/globalSchema.js +14 -11
- package/dist/utility/globalSchema.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +56 -0
- package/dist/utility/hdbTerms.js +56 -0
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/install/checkJWTTokensExist.js +1 -1
- package/dist/utility/install/installer.d.ts +9 -12
- package/dist/utility/install/installer.js +87 -51
- package/dist/utility/install/installer.js.map +1 -1
- package/dist/utility/installation.js +3 -3
- package/dist/utility/lmdb/DBIDefinition.d.ts +4 -4
- package/dist/utility/lmdb/DBIDefinition.js +5 -1
- package/dist/utility/lmdb/DBIDefinition.js.map +1 -1
- package/dist/utility/lmdb/DeleteRecordsResponseObject.d.ts +3 -6
- package/dist/utility/lmdb/DeleteRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/DeleteRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/InsertRecordsResponseObject.d.ts +3 -5
- package/dist/utility/lmdb/InsertRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/InsertRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/OpenDBIObject.d.ts +11 -15
- package/dist/utility/lmdb/OpenDBIObject.js +54 -6
- package/dist/utility/lmdb/OpenDBIObject.js.map +1 -1
- package/dist/utility/lmdb/OpenEnvironmentObject.d.ts +5 -8
- package/dist/utility/lmdb/OpenEnvironmentObject.js +52 -4
- package/dist/utility/lmdb/OpenEnvironmentObject.js.map +1 -1
- package/dist/utility/lmdb/UpdateRecordsResponseObject.d.ts +3 -6
- package/dist/utility/lmdb/UpdateRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/UpdateRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/UpsertRecordsResponseObject.d.ts +3 -5
- package/dist/utility/lmdb/UpsertRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/UpsertRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/cleanLMDBMap.d.ts +1 -1
- package/dist/utility/lmdb/cleanLMDBMap.js +44 -7
- package/dist/utility/lmdb/cleanLMDBMap.js.map +1 -1
- package/dist/utility/lmdb/commonUtility.d.ts +8 -9
- package/dist/utility/lmdb/commonUtility.js +46 -17
- package/dist/utility/lmdb/commonUtility.js.map +1 -1
- package/dist/utility/lmdb/deleteUtility.d.ts +2 -3
- package/dist/utility/lmdb/deleteUtility.js +51 -16
- package/dist/utility/lmdb/deleteUtility.js.map +1 -1
- package/dist/utility/lmdb/environmentUtility.d.ts +69 -36
- package/dist/utility/lmdb/environmentUtility.js +91 -51
- package/dist/utility/lmdb/environmentUtility.js.map +1 -1
- package/dist/utility/lmdb/searchCursorFunctions.d.ts +19 -19
- package/dist/utility/lmdb/searchCursorFunctions.js +46 -14
- package/dist/utility/lmdb/searchCursorFunctions.js.map +1 -1
- package/dist/utility/lmdb/searchUtility.d.ts +142 -73
- package/dist/utility/lmdb/searchUtility.js +91 -55
- package/dist/utility/lmdb/searchUtility.js.map +1 -1
- package/dist/utility/lmdb/terms.d.ts +34 -34
- package/dist/utility/lmdb/terms.js +12 -22
- package/dist/utility/lmdb/terms.js.map +1 -1
- package/dist/utility/lmdb/writeUtility.d.ts +3 -6
- package/dist/utility/lmdb/writeUtility.js +61 -28
- package/dist/utility/lmdb/writeUtility.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +87 -103
- package/dist/utility/logging/harper_logger.js +176 -81
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/logging/logRotator.d.ts +2 -10
- package/dist/utility/logging/logRotator.js +65 -28
- package/dist/utility/logging/logRotator.js.map +1 -1
- package/dist/utility/logging/logger.js +4 -4
- package/dist/utility/logging/readLog.d.ts +1 -1
- package/dist/utility/logging/readLog.js +54 -17
- package/dist/utility/logging/readLog.js.map +1 -1
- package/dist/utility/logging/transactionLog.d.ts +2 -2
- package/dist/utility/logging/transactionLog.js +51 -16
- package/dist/utility/logging/transactionLog.js.map +1 -1
- package/dist/utility/mount_hdb.d.ts +1 -2
- package/dist/utility/mount_hdb.js +54 -17
- package/dist/utility/mount_hdb.js.map +1 -1
- package/dist/utility/npmUtilities.d.ts +1 -1
- package/dist/utility/npmUtilities.js +54 -19
- package/dist/utility/npmUtilities.js.map +1 -1
- package/dist/utility/operation_authorization.d.ts +36 -9
- package/dist/utility/operation_authorization.js +135 -86
- package/dist/utility/operation_authorization.js.map +1 -1
- package/dist/utility/packageUtils.d.ts +0 -2
- package/dist/utility/packageUtils.js +7 -17
- package/dist/utility/packageUtils.js.map +1 -1
- package/dist/utility/password.js +2 -2
- package/dist/utility/processManagement/processManagement.js +2 -2
- package/dist/utility/processManagement/servicesConfig.js +1 -1
- package/dist/utility/signalling.d.ts +2 -2
- package/dist/utility/signalling.js +51 -16
- package/dist/utility/signalling.js.map +1 -1
- package/dist/utility/watcherFallback.d.ts +36 -0
- package/dist/utility/watcherFallback.js +73 -0
- package/dist/utility/watcherFallback.js.map +1 -0
- package/dist/validation/analyticsValidator.d.ts +1 -0
- package/dist/validation/analyticsValidator.js +79 -0
- package/dist/validation/analyticsValidator.js.map +1 -0
- package/dist/validation/bulkDeleteValidator.d.ts +1 -2
- package/dist/validation/bulkDeleteValidator.js +49 -11
- package/dist/validation/bulkDeleteValidator.js.map +1 -1
- package/dist/validation/check_permissions.d.ts +1 -2
- package/dist/validation/check_permissions.js +38 -3
- package/dist/validation/check_permissions.js.map +1 -1
- package/dist/validation/common_validators.d.ts +20 -20
- package/dist/validation/common_validators.js +62 -31
- package/dist/validation/common_validators.js.map +1 -1
- package/dist/validation/configValidator.d.ts +4 -4
- package/dist/validation/configValidator.js +189 -54
- package/dist/validation/configValidator.js.map +1 -1
- package/dist/validation/deleteValidator.d.ts +1 -2
- package/dist/validation/deleteValidator.js +49 -11
- package/dist/validation/deleteValidator.js.map +1 -1
- package/dist/validation/fileLoadValidator.d.ts +4 -4
- package/dist/validation/fileLoadValidator.js +67 -32
- package/dist/validation/fileLoadValidator.js.map +1 -1
- package/dist/validation/insertValidator.d.ts +1 -2
- package/dist/validation/insertValidator.js +48 -10
- package/dist/validation/insertValidator.js.map +1 -1
- package/dist/validation/installValidator.d.ts +2 -2
- package/dist/validation/installValidator.js +47 -10
- package/dist/validation/installValidator.js.map +1 -1
- package/dist/validation/readLogValidator.d.ts +1 -2
- package/dist/validation/readLogValidator.js +60 -22
- package/dist/validation/readLogValidator.js.map +1 -1
- package/dist/validation/role_validation.d.ts +3 -3
- package/dist/validation/role_validation.js +55 -19
- package/dist/validation/role_validation.js.map +1 -1
- package/dist/validation/schemaMetadataValidator.d.ts +3 -4
- package/dist/validation/schemaMetadataValidator.js +11 -12
- package/dist/validation/schemaMetadataValidator.js.map +1 -1
- package/dist/validation/searchValidator.d.ts +1 -2
- package/dist/validation/searchValidator.js +82 -43
- package/dist/validation/searchValidator.js.map +1 -1
- package/dist/validation/statusValidator.d.ts +1 -1
- package/dist/validation/transactionLogValidator.d.ts +3 -3
- package/dist/validation/transactionLogValidator.js +52 -17
- package/dist/validation/transactionLogValidator.js.map +1 -1
- package/dist/validation/user_validation.d.ts +3 -3
- package/dist/validation/user_validation.js +38 -6
- package/dist/validation/user_validation.js.map +1 -1
- package/dist/validation/validationWrapper.d.ts +3 -3
- package/dist/validation/validationWrapper.js +4 -5
- package/dist/validation/validationWrapper.js.map +1 -1
- package/index.ts +5 -0
- package/json/systemSchema.json +65 -0
- package/launchServiceScripts/utility/checkNodeVersion.js +2 -0
- package/package.json +37 -22
- package/resources/DESIGN.md +98 -0
- package/resources/DatabaseTransaction.ts +58 -30
- package/resources/ErrorResource.ts +2 -1
- package/resources/LMDBTransaction.ts +38 -29
- package/resources/RecordEncoder.ts +12 -4
- package/resources/RequestTarget.ts +2 -0
- package/resources/Resource.ts +89 -56
- package/resources/ResourceInterface.ts +44 -21
- package/resources/Resources.ts +8 -8
- package/resources/RocksIndexStore.ts +3 -0
- package/resources/RocksTransactionLogStore.ts +47 -28
- package/resources/Table.ts +386 -214
- package/resources/analytics/metadata.ts +1 -0
- package/resources/analytics/read.ts +24 -6
- package/resources/analytics/write.ts +240 -17
- package/resources/auditStore.ts +28 -19
- package/resources/blob.ts +53 -53
- package/resources/dataLoader.ts +4 -4
- package/resources/databases.ts +190 -71
- package/resources/graphql.ts +227 -164
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +294 -65
- package/resources/indexes/vector.ts +17 -0
- package/resources/loadEnv.ts +21 -17
- package/resources/login.ts +5 -3
- package/resources/models/Models.ts +304 -0
- package/resources/models/TestBackend.ts +83 -0
- package/resources/models/agentLoop.ts +895 -0
- package/resources/models/analyticsTable.ts +199 -0
- package/resources/models/backendHelpers.ts +116 -0
- package/resources/models/backendRegistry.ts +66 -0
- package/resources/models/bootstrap.ts +135 -0
- package/resources/models/embedHook.ts +138 -0
- package/resources/models/types.ts +296 -0
- package/resources/replayLogs.ts +15 -7
- package/resources/roles.ts +62 -67
- package/resources/search.ts +355 -135
- package/resources/tracked.ts +8 -8
- package/resources/transaction.ts +8 -8
- package/resources/transactionBroadcast.ts +3 -3
- package/security/auth.ts +35 -26
- package/security/certificateVerification/crlVerification.ts +11 -4
- package/security/{cryptoHash.js → cryptoHash.ts} +3 -8
- package/security/data_objects/{PermissionAttributeResponseObject.js → PermissionAttributeResponseObject.ts} +4 -4
- package/security/data_objects/{PermissionResponseObject.js → PermissionResponseObject.ts} +12 -11
- package/security/data_objects/{PermissionTableResponseObject.js → PermissionTableResponseObject.ts} +6 -4
- package/security/{fastifyAuth.js → fastifyAuth.ts} +93 -20
- package/security/impersonation.ts +3 -3
- package/security/jsLoader.ts +22 -8
- package/security/{keys.js → keys.ts} +113 -121
- package/security/permissionsTranslator.js +2 -2
- package/security/{role.js → role.ts} +26 -33
- package/security/tokenAuthentication.ts +34 -7
- package/security/user.ts +26 -22
- package/server/DESIGN.md +139 -0
- package/server/DurableSubscriptionsSession.ts +67 -50
- package/server/REST.ts +120 -107
- package/server/Server.ts +31 -12
- package/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/server/fastifyRoutes.ts +37 -33
- package/server/graphqlQuerying.ts +6 -5
- package/server/http.ts +517 -26
- package/server/itc/serverHandlers.js +75 -14
- package/server/jobs/{JobObject.js → JobObject.ts} +13 -6
- package/server/jobs/{jobProcess.js → jobProcess.ts} +20 -16
- package/server/jobs/{jobRunner.js → jobRunner.ts} +20 -21
- package/server/jobs/{jobs.js → jobs.ts} +41 -44
- package/server/loadRootComponents.js +1 -1
- package/server/middlewareChain.ts +270 -0
- package/server/mqtt.ts +35 -26
- package/server/nodeName.ts +2 -1
- package/server/operationsServer.ts +85 -10
- package/server/serverHelpers/Headers.ts +10 -8
- package/server/serverHelpers/JSONStream.ts +15 -5
- package/server/serverHelpers/Request.ts +370 -13
- package/server/serverHelpers/contentTypes.ts +42 -11
- package/server/serverHelpers/multipartParser.ts +152 -0
- package/server/serverHelpers/progressEmitter.ts +110 -0
- package/server/serverHelpers/serverHandlers.js +43 -7
- package/server/serverHelpers/serverUtilities.ts +40 -30
- package/server/static.ts +9 -6
- package/server/status/index.ts +2 -2
- package/server/storageReclamation.ts +39 -2
- package/server/threads/itc.js +7 -4
- package/server/threads/manageThreads.js +100 -26
- package/server/threads/socketRouter.ts +12 -275
- package/server/threads/threadServer.js +345 -105
- package/server/threads/workerProcessGuard.ts +93 -0
- package/server/throttle.ts +18 -0
- package/sqlTranslator/{SelectValidator.js → SelectValidator.ts} +41 -49
- package/sqlTranslator/{alasqlFunctionImporter.js → alasqlFunctionImporter.ts} +5 -5
- package/sqlTranslator/{deleteTranslator.js → deleteTranslator.ts} +13 -18
- package/sqlTranslator/{index.js → index.ts} +30 -33
- package/sqlTranslator/{sql_statement_bucket.js → sql_statement_bucket.ts} +49 -20
- package/static/README.md +10 -9
- package/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/upgrade/{UpgradeObjects.js → UpgradeObjects.ts} +3 -6
- package/upgrade/directives/5-2-0.ts +49 -0
- package/upgrade/directives/{directivesController.js → directivesController.ts} +16 -16
- package/upgrade/{directivesManager.js → directivesManager.ts} +7 -11
- package/upgrade/{upgradePrompt.js → upgradePrompt.ts} +8 -14
- package/upgrade/{upgradeUtilities.js → upgradeUtilities.ts} +3 -7
- package/utility/{OperationFunctionCaller.js → OperationFunctionCaller.ts} +7 -7
- package/utility/{assignCmdEnvVariables.js → assignCmdEnvVariables.ts} +6 -8
- package/utility/{common_utils.js → common_utils.ts} +113 -139
- package/utility/environment/{environmentManager.js → environmentManager.ts} +34 -33
- package/utility/environment/systemInformation.ts +18 -4
- package/utility/errors/{commonErrors.js → commonErrors.ts} +9 -9
- package/utility/errors/{hdbError.js → hdbError.ts} +39 -45
- package/utility/expandEnvVar.ts +110 -0
- package/utility/functions/geo.js +2 -2
- package/utility/functions/sql/alaSQLExtension.js +1 -1
- package/utility/globalSchema.ts +30 -0
- package/utility/hdbTerms.ts +56 -0
- package/utility/install/checkJWTTokensExist.js +1 -1
- package/utility/install/{installer.js → installer.ts} +38 -39
- package/utility/installation.ts +2 -2
- package/utility/lmdb/{DBIDefinition.js → DBIDefinition.ts} +4 -1
- package/utility/lmdb/{DeleteRecordsResponseObject.js → DeleteRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{InsertRecordsResponseObject.js → InsertRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/OpenDBIObject.ts +43 -0
- package/utility/lmdb/{OpenEnvironmentObject.js → OpenEnvironmentObject.ts} +19 -6
- package/utility/lmdb/{UpdateRecordsResponseObject.js → UpdateRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{UpsertRecordsResponseObject.js → UpsertRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{cleanLMDBMap.js → cleanLMDBMap.ts} +5 -5
- package/utility/lmdb/{commonUtility.js → commonUtility.ts} +13 -21
- package/utility/lmdb/{deleteUtility.js → deleteUtility.ts} +8 -12
- package/utility/lmdb/{environmentUtility.js → environmentUtility.ts} +43 -52
- package/utility/lmdb/{searchCursorFunctions.js → searchCursorFunctions.ts} +12 -26
- package/utility/lmdb/{searchUtility.js → searchUtility.ts} +75 -64
- package/utility/lmdb/{terms.js → terms.ts} +10 -23
- package/utility/lmdb/{writeUtility.js → writeUtility.ts} +37 -22
- package/utility/logging/{harper_logger.js → harper_logger.ts} +136 -89
- package/utility/logging/{logRotator.js → logRotator.ts} +13 -13
- package/utility/logging/logger.ts +1 -1
- package/utility/logging/{readLog.js → readLog.ts} +19 -19
- package/utility/logging/{transactionLog.js → transactionLog.ts} +10 -14
- package/utility/{mount_hdb.js → mount_hdb.ts} +15 -16
- package/utility/{npmUtilities.js → npmUtilities.ts} +14 -17
- package/utility/{operation_authorization.js → operation_authorization.ts} +173 -124
- package/utility/packageUtils.js +7 -16
- package/utility/password.ts +1 -1
- package/utility/processManagement/processManagement.js +2 -2
- package/utility/processManagement/servicesConfig.js +1 -1
- package/utility/{signalling.js → signalling.ts} +6 -11
- package/utility/watcherFallback.ts +74 -0
- package/validation/analyticsValidator.ts +43 -0
- package/validation/{bulkDeleteValidator.js → bulkDeleteValidator.ts} +5 -5
- package/validation/{check_permissions.js → check_permissions.ts} +3 -3
- package/validation/{common_validators.js → common_validators.ts} +12 -24
- package/validation/{configValidator.js → configValidator.ts} +114 -18
- package/validation/{deleteValidator.js → deleteValidator.ts} +5 -5
- package/validation/{fileLoadValidator.js → fileLoadValidator.ts} +12 -19
- package/validation/{insertValidator.js → insertValidator.ts} +5 -5
- package/validation/{installValidator.js → installValidator.ts} +8 -8
- package/validation/{readLogValidator.js → readLogValidator.ts} +10 -10
- package/validation/{role_validation.js → role_validation.ts} +26 -32
- package/validation/{schemaMetadataValidator.js → schemaMetadataValidator.ts} +5 -11
- package/validation/{searchValidator.js → searchValidator.ts} +12 -11
- package/validation/statusValidator.ts +1 -1
- package/validation/{transactionLogValidator.js → transactionLogValidator.ts} +4 -9
- package/validation/{user_validation.js → user_validation.ts} +4 -10
- package/validation/{validationWrapper.js → validationWrapper.ts} +3 -9
- package/bin/cliOperations.js +0 -159
- package/bin/lite.js +0 -5
- package/dataLayer/harperBridge/BridgeMethods.js +0 -85
- package/studio/web/assets/index-CmtPP0YO.js.map +0 -1
- package/utility/globalSchema.js +0 -35
- package/utility/lmdb/OpenDBIObject.js +0 -31
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// DeploymentRecorder — lifecycle owner for one row in system.hdb_deployment.
|
|
4
|
+
//
|
|
5
|
+
// Creates the pending row at deploy start, persists the upload payload into the row's
|
|
6
|
+
// payload_blob (with sha256 + size), and writes the terminal status at the end.
|
|
7
|
+
// Subscribes to a ProgressEmitter so phase transitions and install lines land in
|
|
8
|
+
// event_log as they happen — making the deploy observable by Studio polling
|
|
9
|
+
// get_deployment without an attached CLI. The persisted payload_blob will also serve
|
|
10
|
+
// as the rollback source when that operation lands.
|
|
11
|
+
|
|
12
|
+
import { randomUUID } from 'node:crypto';
|
|
13
|
+
import { createHash, Hash } from 'node:crypto';
|
|
14
|
+
import type { Readable } from 'node:stream';
|
|
15
|
+
import { databases } from '../resources/databases.ts';
|
|
16
|
+
import { createBlob } from '../resources/blob.ts';
|
|
17
|
+
import * as terms from '../utility/hdbTerms.ts';
|
|
18
|
+
import { ClientError } from '../utility/errors/hdbError.ts';
|
|
19
|
+
import { hostname } from 'node:os';
|
|
20
|
+
import { ProgressEmitter } from '../server/serverHelpers/progressEmitter.ts';
|
|
21
|
+
|
|
22
|
+
// Bound the event_log so a pathologically chatty install can't grow a row without limit.
|
|
23
|
+
// 200 entries comfortably covers a real deploy with headroom (phase events plus install
|
|
24
|
+
// line summaries). When we exceed the cap, drop the middle rather than the front — the
|
|
25
|
+
// lifecycle spine (prepare → load → replicate → success) is the most valuable context
|
|
26
|
+
// for debugging, and naive front-truncation loses it under a chatty `npm install`.
|
|
27
|
+
const EVENT_LOG_MAX = 200;
|
|
28
|
+
const EVENT_LOG_HEAD_KEEP = 20;
|
|
29
|
+
|
|
30
|
+
// In-memory registry of live emitters, keyed by deployment_id. Populated for the lifetime
|
|
31
|
+
// of an in-progress deploy on the origin node; get_deployment SSE looks here to tail live
|
|
32
|
+
// events after replaying event_log. Per-node, not replicated — peers don't see another
|
|
33
|
+
// node's in-progress emitters. Cross-node tailing is a later concern.
|
|
34
|
+
const activeEmitters = new Map<string, ProgressEmitter>();
|
|
35
|
+
|
|
36
|
+
export function getActiveEmitter(deploymentId: string): ProgressEmitter | undefined {
|
|
37
|
+
return activeEmitters.get(deploymentId);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Interim cap: ingestPayload currently buffers the entire payload in memory before
|
|
41
|
+
// computing the hash and persisting. This cap prevents an OOM on accidentally-huge
|
|
42
|
+
// uploads. A follow-up will swap this for a true streaming-hash + blob-source pattern
|
|
43
|
+
// that lifts the limit back to whatever the replication path supports.
|
|
44
|
+
const PAYLOAD_BUFFER_CAP_BYTES = 200 * 1024 * 1024;
|
|
45
|
+
|
|
46
|
+
type DeploymentStatus =
|
|
47
|
+
| 'pending'
|
|
48
|
+
| 'extracting'
|
|
49
|
+
| 'installing'
|
|
50
|
+
| 'loading'
|
|
51
|
+
| 'replicating'
|
|
52
|
+
| 'restarting'
|
|
53
|
+
| 'success'
|
|
54
|
+
| 'failed'
|
|
55
|
+
| 'rolled_back';
|
|
56
|
+
|
|
57
|
+
interface CreateOptions {
|
|
58
|
+
project?: string;
|
|
59
|
+
package_identifier?: string;
|
|
60
|
+
user?: string;
|
|
61
|
+
restart_mode?: 'immediate' | 'rolling' | null;
|
|
62
|
+
rollback_of?: string | null;
|
|
63
|
+
emitter?: ProgressEmitter;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export class DeploymentRecorder {
|
|
67
|
+
readonly deploymentId: string;
|
|
68
|
+
private readonly record: Record<string, any>;
|
|
69
|
+
private hash: Hash | null = null;
|
|
70
|
+
private byteCount = 0;
|
|
71
|
+
private finished = false;
|
|
72
|
+
private unsubscribe: (() => void) | null = null;
|
|
73
|
+
private pendingPut: Promise<void> | null = null;
|
|
74
|
+
private dirty = false;
|
|
75
|
+
|
|
76
|
+
private constructor(deploymentId: string, initial: Record<string, any>) {
|
|
77
|
+
this.deploymentId = deploymentId;
|
|
78
|
+
this.record = initial;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
static async create(options: CreateOptions): Promise<DeploymentRecorder> {
|
|
82
|
+
const deploymentId = randomUUID();
|
|
83
|
+
const startedAt = Date.now();
|
|
84
|
+
const record: Record<string, any> = {
|
|
85
|
+
deployment_id: deploymentId,
|
|
86
|
+
project: options.project ?? null,
|
|
87
|
+
package_identifier: options.package_identifier ?? null,
|
|
88
|
+
payload_hash: null,
|
|
89
|
+
payload_size: null,
|
|
90
|
+
payload_blob: null,
|
|
91
|
+
status: 'pending' as DeploymentStatus,
|
|
92
|
+
phase: 'pending',
|
|
93
|
+
event_log: [],
|
|
94
|
+
peer_results: [],
|
|
95
|
+
origin_node: hostname(),
|
|
96
|
+
restart_mode: options.restart_mode ?? null,
|
|
97
|
+
started_at: startedAt,
|
|
98
|
+
completed_at: null,
|
|
99
|
+
user: options.user ?? null,
|
|
100
|
+
rollback_of: options.rollback_of ?? null,
|
|
101
|
+
error: null,
|
|
102
|
+
};
|
|
103
|
+
const recorder = new DeploymentRecorder(deploymentId, record);
|
|
104
|
+
await recorder.put();
|
|
105
|
+
if (options.emitter) {
|
|
106
|
+
recorder.subscribeTo(options.emitter);
|
|
107
|
+
activeEmitters.set(deploymentId, options.emitter);
|
|
108
|
+
}
|
|
109
|
+
return recorder;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Subscribe to a ProgressEmitter. Each event is appended (bounded) to event_log; phase
|
|
114
|
+
* events also update the row's `status` and `phase` fields. Writes coalesce: a put is
|
|
115
|
+
* always pending after the first event in a burst, so chatty install output collapses
|
|
116
|
+
* to one row update per ~100ms instead of one per line.
|
|
117
|
+
*/
|
|
118
|
+
private subscribeTo(emitter: ProgressEmitter): void {
|
|
119
|
+
this.unsubscribe = emitter.subscribe((event) => {
|
|
120
|
+
this.appendEvent(event.event, event.data);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
private appendEvent(event: string, data: unknown): void {
|
|
125
|
+
if (this.finished) return;
|
|
126
|
+
const log = this.record.event_log as Array<Record<string, unknown>>;
|
|
127
|
+
log.push({ t: Date.now(), event, data });
|
|
128
|
+
// Keep the head (lifecycle spine) and tail (most-recent activity); drop the middle.
|
|
129
|
+
if (log.length > EVENT_LOG_MAX) {
|
|
130
|
+
const tailKeep = EVENT_LOG_MAX - EVENT_LOG_HEAD_KEEP - 1; // -1 for the truncation marker
|
|
131
|
+
const removedCount = log.length - EVENT_LOG_HEAD_KEEP - tailKeep;
|
|
132
|
+
log.splice(EVENT_LOG_HEAD_KEEP, log.length - EVENT_LOG_HEAD_KEEP - tailKeep, {
|
|
133
|
+
t: Date.now(),
|
|
134
|
+
event: 'truncated',
|
|
135
|
+
data: { dropped_events: removedCount },
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// Phase events drive the canonical status/phase fields used by list_deployments.
|
|
139
|
+
if (event === 'phase' && data && typeof data === 'object') {
|
|
140
|
+
const p = data as { phase?: string; status?: string };
|
|
141
|
+
if (p.phase) this.record.phase = p.phase;
|
|
142
|
+
if (p.status === 'start') {
|
|
143
|
+
const mapped = startStatusFor(p.phase);
|
|
144
|
+
if (mapped) this.record.status = mapped;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
this.scheduleFlush();
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Coalesce writes: at most one in-flight put at a time. While a put is running, mark
|
|
151
|
+
// the record dirty; the chained continuation issues a follow-up put once the prior one
|
|
152
|
+
// settles. This keeps event_log writes O(1) puts per burst rather than O(N) per event.
|
|
153
|
+
private scheduleFlush(): void {
|
|
154
|
+
if (this.pendingPut) {
|
|
155
|
+
this.dirty = true;
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.pendingPut = this.put().finally(() => {
|
|
159
|
+
this.pendingPut = null;
|
|
160
|
+
if (this.dirty) {
|
|
161
|
+
this.dirty = false;
|
|
162
|
+
this.scheduleFlush();
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Drain a payload source (Buffer or Readable) into the row's payload_blob attribute,
|
|
169
|
+
* computing sha256 and byte count alongside. After this resolves the row has been
|
|
170
|
+
* committed once with the final hash and size, and `this.row.payload_blob.stream()`
|
|
171
|
+
* yields a fresh Readable that callers can pass to extraction.
|
|
172
|
+
*
|
|
173
|
+
* Buffers the payload in memory (subject to PAYLOAD_BUFFER_CAP_BYTES) so the
|
|
174
|
+
* hash/size are known synchronously before we commit and so the blob's `saveBlob`
|
|
175
|
+
* lifecycle doesn't race with our digest() call. A streaming variant is a planned
|
|
176
|
+
* follow-up that uses the unused `hash`/`byteCount` instance fields below.
|
|
177
|
+
*/
|
|
178
|
+
async ingestPayload(source: Readable | Buffer | string): Promise<void> {
|
|
179
|
+
const hash = createHash('sha256');
|
|
180
|
+
let byteCount = 0;
|
|
181
|
+
let buffer: Buffer;
|
|
182
|
+
if (Buffer.isBuffer(source)) {
|
|
183
|
+
buffer = source;
|
|
184
|
+
} else if (typeof source === 'string') {
|
|
185
|
+
// Legacy CBOR/JSON path: payload arrives as a base64-encoded string.
|
|
186
|
+
buffer = Buffer.from(source, 'base64');
|
|
187
|
+
} else {
|
|
188
|
+
const chunks: Buffer[] = [];
|
|
189
|
+
let collected = 0;
|
|
190
|
+
for await (const chunk of source as AsyncIterable<Buffer | string>) {
|
|
191
|
+
const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as any);
|
|
192
|
+
collected += buf.length;
|
|
193
|
+
if (collected > PAYLOAD_BUFFER_CAP_BYTES) {
|
|
194
|
+
(source as Readable).destroy?.();
|
|
195
|
+
throw new ClientError(
|
|
196
|
+
`Deploy payload exceeds the ${PAYLOAD_BUFFER_CAP_BYTES} byte buffer cap. ` +
|
|
197
|
+
`Use a package identifier (npm:/file:/git:) for larger components.`
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
chunks.push(buf);
|
|
201
|
+
}
|
|
202
|
+
buffer = Buffer.concat(chunks);
|
|
203
|
+
}
|
|
204
|
+
if (buffer.length > PAYLOAD_BUFFER_CAP_BYTES) {
|
|
205
|
+
throw new ClientError(
|
|
206
|
+
`Deploy payload (${buffer.length} bytes) exceeds the ${PAYLOAD_BUFFER_CAP_BYTES} byte buffer cap. ` +
|
|
207
|
+
`Use a package identifier (npm:/file:/git:) for larger components.`
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
hash.update(buffer);
|
|
211
|
+
byteCount = buffer.length;
|
|
212
|
+
this.record.payload_blob = createBlob(buffer, { type: 'application/gzip' });
|
|
213
|
+
this.record.payload_hash = hash.digest('hex');
|
|
214
|
+
this.record.payload_size = byteCount;
|
|
215
|
+
// Touch the unused private fields so the type system stays happy when a streaming
|
|
216
|
+
// variant lands that uses them.
|
|
217
|
+
this.hash = hash;
|
|
218
|
+
this.byteCount = byteCount;
|
|
219
|
+
await this.put();
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
async transitionPhase(phase: string, status?: DeploymentStatus): Promise<void> {
|
|
223
|
+
this.record.phase = phase;
|
|
224
|
+
if (status) this.record.status = status;
|
|
225
|
+
await this.put();
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Upsert a single peer outcome by node name. Called per-peer as each replication
|
|
230
|
+
* target settles, so the row reflects in-flight progress rather than only the
|
|
231
|
+
* final aggregate. Routes through `scheduleFlush()` so the write coalesces with
|
|
232
|
+
* the emitter-driven puts and the latest in-memory state always wins.
|
|
233
|
+
*
|
|
234
|
+
* Tolerates unknown shapes — anything we can't interpret becomes a plain
|
|
235
|
+
* stringified entry so the audit trail at least records that a peer was contacted.
|
|
236
|
+
*/
|
|
237
|
+
recordPeer(result: unknown): void {
|
|
238
|
+
if (this.finished) return;
|
|
239
|
+
const normalized = normalizePeerResult(result);
|
|
240
|
+
// Defensive: rows freshly created via create() always have peer_results=[], but if
|
|
241
|
+
// a replicated row was loaded back where the attribute is absent or null we want
|
|
242
|
+
// to initialize lazily rather than throw on `.findIndex`.
|
|
243
|
+
if (!Array.isArray(this.record.peer_results)) this.record.peer_results = [];
|
|
244
|
+
const list = this.record.peer_results as Array<Record<string, unknown>>;
|
|
245
|
+
// Upsert by node name when present; otherwise append (we can't dedupe without an id).
|
|
246
|
+
const nodeName = normalized.node;
|
|
247
|
+
const idx = nodeName ? list.findIndex((entry) => entry.node === nodeName) : -1;
|
|
248
|
+
if (idx >= 0) {
|
|
249
|
+
list[idx] = normalized;
|
|
250
|
+
} else {
|
|
251
|
+
list.push(normalized);
|
|
252
|
+
}
|
|
253
|
+
this.scheduleFlush();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Bulk-record a final aggregate of peer outcomes. Equivalent to calling recordPeer()
|
|
258
|
+
* for each entry. Useful for replication layers that surface results all-at-once
|
|
259
|
+
* via Promise.allSettled rather than via a per-peer callback.
|
|
260
|
+
*/
|
|
261
|
+
recordPeers(results: unknown): void {
|
|
262
|
+
if (this.finished) return;
|
|
263
|
+
if (!Array.isArray(results)) return;
|
|
264
|
+
for (const result of results) this.recordPeer(result);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
async finish(status: 'success' | 'failed' | 'rolled_back', error?: unknown): Promise<void> {
|
|
268
|
+
if (this.finished) return;
|
|
269
|
+
// Send a terminal sentinel through the emitter (if any) BEFORE we unsubscribe and
|
|
270
|
+
// remove it from the registry, so any SSE tail subscribers can resolve their wait
|
|
271
|
+
// even on a code path that doesn't emit an explicit `error` event.
|
|
272
|
+
const emitter = activeEmitters.get(this.deploymentId);
|
|
273
|
+
emitter?.emit('_recorder_finished', { status });
|
|
274
|
+
this.finished = true;
|
|
275
|
+
this.unsubscribe?.();
|
|
276
|
+
this.unsubscribe = null;
|
|
277
|
+
activeEmitters.delete(this.deploymentId);
|
|
278
|
+
// Drain the ENTIRE coalesced-flush chain before mutating + persisting the terminal
|
|
279
|
+
// state. Just awaiting `this.pendingPut` once isn't enough: its `.finally` may
|
|
280
|
+
// re-schedule another put (when `dirty` was set during the in-flight put), and
|
|
281
|
+
// that re-scheduled put captures a pre-mutation snapshot of the record. Without
|
|
282
|
+
// this loop, the re-scheduled put can complete AFTER our terminal put and
|
|
283
|
+
// overwrite status=success with stale state.
|
|
284
|
+
while (this.pendingPut) {
|
|
285
|
+
try {
|
|
286
|
+
await this.pendingPut;
|
|
287
|
+
} catch {
|
|
288
|
+
/* the next put surfaces the error */
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
this.record.status = status;
|
|
292
|
+
this.record.completed_at = Date.now();
|
|
293
|
+
if (error) {
|
|
294
|
+
const e = error as { message?: string; code?: string | number; stack?: string };
|
|
295
|
+
this.record.error = {
|
|
296
|
+
message: e?.message ?? String(error),
|
|
297
|
+
code: e?.code,
|
|
298
|
+
phase: this.record.phase,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
await this.put();
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
get row(): Record<string, any> {
|
|
305
|
+
return this.record;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
private async put(): Promise<void> {
|
|
309
|
+
const table = (databases as any).system?.[terms.SYSTEM_TABLE_NAMES.DEPLOYMENT_TABLE_NAME];
|
|
310
|
+
if (!table) {
|
|
311
|
+
// Table missing means the upgrade directive hasn't run yet (or the table got dropped).
|
|
312
|
+
// We tolerate this — tracking is observability; the deploy itself must still succeed.
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
await table.put(this.record);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Peer-side helper — wait for the hdb_deployment row to arrive via table replication,
|
|
321
|
+
* then return it. The row is committed on origin before `replicateOperation` is
|
|
322
|
+
* called, so peers normally find it immediately; this polling loop is for the rare
|
|
323
|
+
* case where the operation arrives faster than the table-replication channel.
|
|
324
|
+
*
|
|
325
|
+
* The payload_blob's chunks may still be in flight after the row arrives — that's
|
|
326
|
+
* fine, the Blob's `stream()` / `bytes()` API blocks on incomplete writes
|
|
327
|
+
* (resources/blob.ts).
|
|
328
|
+
*/
|
|
329
|
+
export async function awaitDeploymentRow(
|
|
330
|
+
deploymentId: string,
|
|
331
|
+
options: { timeoutMs?: number; pollIntervalMs?: number; initialPollIntervalMs?: number } = {}
|
|
332
|
+
): Promise<Record<string, any>> {
|
|
333
|
+
const timeoutMs = options.timeoutMs ?? 30_000;
|
|
334
|
+
const maxIntervalMs = options.pollIntervalMs ?? 100;
|
|
335
|
+
// Start fast (5ms) so the common case — replication has already caught up — sees no
|
|
336
|
+
// human-noticeable latency, then back off exponentially up to maxIntervalMs for the
|
|
337
|
+
// rare case where the row is genuinely still replicating.
|
|
338
|
+
let intervalMs = options.initialPollIntervalMs ?? 5;
|
|
339
|
+
const table = (databases as any).system?.[terms.SYSTEM_TABLE_NAMES.DEPLOYMENT_TABLE_NAME];
|
|
340
|
+
if (!table) {
|
|
341
|
+
throw new Error(
|
|
342
|
+
`Deployment tracking is not initialized on this node (system.${terms.SYSTEM_TABLE_NAMES.DEPLOYMENT_TABLE_NAME} missing).`
|
|
343
|
+
);
|
|
344
|
+
}
|
|
345
|
+
const deadline = Date.now() + timeoutMs;
|
|
346
|
+
let lastError: unknown;
|
|
347
|
+
while (Date.now() < deadline) {
|
|
348
|
+
try {
|
|
349
|
+
const row = await table.get(deploymentId);
|
|
350
|
+
if (row && row.payload_blob != null) return row;
|
|
351
|
+
} catch (err) {
|
|
352
|
+
lastError = err;
|
|
353
|
+
}
|
|
354
|
+
await new Promise<void>((resolve) => setTimeout(resolve, intervalMs));
|
|
355
|
+
intervalMs = Math.min(intervalMs * 2, maxIntervalMs);
|
|
356
|
+
}
|
|
357
|
+
throw new Error(
|
|
358
|
+
`Timed out after ${timeoutMs}ms waiting for hdb_deployment row '${deploymentId}' to replicate` +
|
|
359
|
+
(lastError ? ` (last error: ${(lastError as Error).message ?? lastError})` : '')
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
function normalizePeerResult(raw: unknown): Record<string, unknown> {
|
|
364
|
+
if (!raw || typeof raw !== 'object') {
|
|
365
|
+
// Replication layer returned a primitive — preserve as a stringified marker so the
|
|
366
|
+
// audit row at least records that something came back from a peer.
|
|
367
|
+
return { node: null, status: 'unknown', raw: String(raw) };
|
|
368
|
+
}
|
|
369
|
+
const r = raw as Record<string, unknown>;
|
|
370
|
+
const err = r.error;
|
|
371
|
+
const hasError =
|
|
372
|
+
err != null && (typeof err === 'string' ? err.length > 0 : typeof err === 'object' || typeof err === 'number');
|
|
373
|
+
return {
|
|
374
|
+
node: r.node ?? r.name ?? r.hostname ?? null,
|
|
375
|
+
status: hasError ? 'failed' : (r.status ?? 'success'),
|
|
376
|
+
error: hasError
|
|
377
|
+
? {
|
|
378
|
+
message: typeof err === 'object' ? ((err as any).message ?? String(err)) : String(err),
|
|
379
|
+
code: typeof err === 'object' ? (err as any).code : undefined,
|
|
380
|
+
}
|
|
381
|
+
: null,
|
|
382
|
+
started_at: r.started_at ?? null,
|
|
383
|
+
completed_at: r.completed_at ?? null,
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
function startStatusFor(phase: string | undefined): DeploymentStatus | null {
|
|
388
|
+
switch (phase) {
|
|
389
|
+
case 'extract':
|
|
390
|
+
return 'extracting';
|
|
391
|
+
case 'install':
|
|
392
|
+
return 'installing';
|
|
393
|
+
case 'load':
|
|
394
|
+
return 'loading';
|
|
395
|
+
case 'replicate':
|
|
396
|
+
return 'replicating';
|
|
397
|
+
case 'restart':
|
|
398
|
+
return 'restarting';
|
|
399
|
+
default:
|
|
400
|
+
return null;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import type { ComponentV1 } from './ComponentV1.js';
|
|
1
|
+
import type { Component } from './Component.ts';
|
|
2
|
+
import type { ComponentV1 } from './ComponentV1.ts';
|
|
4
3
|
|
|
5
4
|
function pathStartsWithBase(base: string, path: string) {
|
|
6
5
|
const re = new RegExp(`^${base}(/|$)`);
|
|
@@ -8,6 +7,7 @@ function pathStartsWithBase(base: string, path: string) {
|
|
|
8
7
|
}
|
|
9
8
|
|
|
10
9
|
export function deriveURLPath(component: Component | ComponentV1, path: string, type: 'file' | 'directory'): string {
|
|
10
|
+
path = path.replace(/\\/g, '/'); // converting from potential windows path to URL paths
|
|
11
11
|
if (path.startsWith('./')) {
|
|
12
12
|
path = path.slice(2); // remove leading './'
|
|
13
13
|
}
|
|
@@ -53,5 +53,5 @@ export function deriveURLPath(component: Component | ComponentV1, path: string,
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
return
|
|
56
|
+
return component.baseURLPath + path; // note, do NOT use join here, this is not a file system path, this is a URL path
|
|
57
57
|
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fastify adapter for the MCP transport core (operations port, #614).
|
|
3
|
+
*
|
|
4
|
+
* Maps Fastify's `(request, reply)` ↔ the transport's normalized
|
|
5
|
+
* Request/Response shape. The route is registered with the
|
|
6
|
+
* `authAndEnsureUserOnRequest` preValidation hook, so the authenticated
|
|
7
|
+
* user lands on `request.hdb_user` before this handler runs.
|
|
8
|
+
*
|
|
9
|
+
* Fastify auto-parses JSON request bodies; we re-stringify so the core's
|
|
10
|
+
* `parseMessage` sees the raw envelope it expects. The round-trip is
|
|
11
|
+
* cheap for the small JSON-RPC frames in the MCP wire format and keeps
|
|
12
|
+
* the core framework-agnostic.
|
|
13
|
+
*/
|
|
14
|
+
import { handleMcpRequest, type McpProfile, type NormRequest } from '../transport.ts';
|
|
15
|
+
|
|
16
|
+
interface FastifyLikeRequest {
|
|
17
|
+
method: string;
|
|
18
|
+
headers: Record<string, string | string[] | undefined>;
|
|
19
|
+
body: unknown;
|
|
20
|
+
/**
|
|
21
|
+
* `authAndEnsureUserOnRequest` sets the full user (incl. role + permission
|
|
22
|
+
* tree) on `req.hdb_user`. Used for session binding (`username`) and
|
|
23
|
+
* forwarded as the transport's `userObject` for resource/tool RBAC.
|
|
24
|
+
*/
|
|
25
|
+
hdb_user?: { username?: string; role?: unknown } | null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface FastifyLikeReply {
|
|
29
|
+
code: (status: number) => FastifyLikeReply;
|
|
30
|
+
header: (name: string, value: string) => FastifyLikeReply;
|
|
31
|
+
send: (body?: unknown) => unknown;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function createFastifyHandler(profile: McpProfile) {
|
|
35
|
+
return async function mcpFastifyHandler(request: FastifyLikeRequest, reply: FastifyLikeReply): Promise<void> {
|
|
36
|
+
const norm: NormRequest = {
|
|
37
|
+
method: request.method,
|
|
38
|
+
headers: normalizeHeaders(request.headers),
|
|
39
|
+
// Fastify has already parsed the JSON body into an object via its
|
|
40
|
+
// preParsing pipeline. Pass it through directly — the transport
|
|
41
|
+
// core's parseMessage accepts both strings and parsed values, so we
|
|
42
|
+
// avoid an unnecessary stringify/re-parse round trip on the hot path.
|
|
43
|
+
body: request.body,
|
|
44
|
+
user: request.hdb_user?.username ?? '',
|
|
45
|
+
userObject: (request.hdb_user ?? undefined) as NormRequest['userObject'],
|
|
46
|
+
profile,
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const res = await handleMcpRequest(norm);
|
|
50
|
+
|
|
51
|
+
reply.code(res.status);
|
|
52
|
+
for (const [name, value] of Object.entries(res.headers)) {
|
|
53
|
+
reply.header(name, value);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (res.jsonBody !== undefined) {
|
|
57
|
+
if (!res.headers['Content-Type'] && !res.headers['content-type']) {
|
|
58
|
+
reply.header('Content-Type', 'application/json');
|
|
59
|
+
}
|
|
60
|
+
reply.send(res.jsonBody);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (res.sseIterable !== undefined) {
|
|
65
|
+
// Reserved for #619 (server-push GET stream). Fastify will iterate
|
|
66
|
+
// the async iterable and write SSE frames via the contentTypes
|
|
67
|
+
// serializer at `server/serverHelpers/contentTypes.ts:128-162`.
|
|
68
|
+
if (!res.headers['Content-Type'] && !res.headers['content-type']) {
|
|
69
|
+
reply.header('Content-Type', 'text/event-stream');
|
|
70
|
+
}
|
|
71
|
+
reply.header('Cache-Control', 'no-store');
|
|
72
|
+
reply.send(res.sseIterable);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// 202/204/4xx with empty body.
|
|
77
|
+
reply.send();
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function normalizeHeaders(headers: Record<string, string | string[] | undefined>): Record<string, string | undefined> {
|
|
82
|
+
const out: Record<string, string | undefined> = {};
|
|
83
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
84
|
+
out[name.toLowerCase()] = Array.isArray(value) ? value[0] : value;
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harper-HTTP adapter for the MCP transport core (application port, #614).
|
|
3
|
+
*
|
|
4
|
+
* Maps Harper's HTTP handler signature `(request, nextHandler) => { status,
|
|
5
|
+
* headers, body }` to/from the transport's normalized Request/Response.
|
|
6
|
+
* Auth runs upstream via `{ after: 'authentication' }` on the registration,
|
|
7
|
+
* so `request.user` is already populated when this handler fires.
|
|
8
|
+
*
|
|
9
|
+
* SSE responses (reserved for #619) are returned as `{ body: iterable,
|
|
10
|
+
* headers: { 'content-type': 'text/event-stream' } }`. Harper's serializer
|
|
11
|
+
* at `server/serverHelpers/contentTypes.ts:128-162` picks the SSE writer
|
|
12
|
+
* automatically and pipes the iterable to the wire.
|
|
13
|
+
*/
|
|
14
|
+
import { handleMcpRequest, type McpProfile, type NormRequest, type NormResponse } from '../transport.ts';
|
|
15
|
+
|
|
16
|
+
interface HarperHttpRequest {
|
|
17
|
+
method: string;
|
|
18
|
+
headers: Iterable<[string, string | string[]]> & { get?: (name: string) => string | undefined };
|
|
19
|
+
body?: AsyncIterable<Buffer | string>;
|
|
20
|
+
/**
|
|
21
|
+
* Full user object as Harper's auth pipeline attaches it (includes role +
|
|
22
|
+
* permission tree). Transport reads `username` for session binding and
|
|
23
|
+
* forwards the full object as `userObject` for resource/tool RBAC.
|
|
24
|
+
*/
|
|
25
|
+
user?: { username?: string; role?: unknown };
|
|
26
|
+
isWebSocket?: boolean;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface HarperHttpResponse {
|
|
30
|
+
status: number;
|
|
31
|
+
headers: Record<string, string>;
|
|
32
|
+
body?: unknown;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function createHarperHttpHandler(profile: McpProfile) {
|
|
36
|
+
return async function mcpHarperHttpHandler(
|
|
37
|
+
request: HarperHttpRequest,
|
|
38
|
+
nextHandler: (req: HarperHttpRequest) => unknown
|
|
39
|
+
): Promise<HarperHttpResponse | unknown> {
|
|
40
|
+
// WebSocket upgrades aren't ours — let the next handler take it.
|
|
41
|
+
if (request.isWebSocket) return nextHandler(request);
|
|
42
|
+
|
|
43
|
+
const norm: NormRequest = {
|
|
44
|
+
method: request.method,
|
|
45
|
+
headers: normalizeHeaders(request.headers),
|
|
46
|
+
body: await readBody(request.body),
|
|
47
|
+
user: request.user?.username ?? '',
|
|
48
|
+
userObject: request.user as NormRequest['userObject'],
|
|
49
|
+
profile,
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const res = await handleMcpRequest(norm);
|
|
53
|
+
return toHarperResponse(res);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function normalizeHeaders(headers: HarperHttpRequest['headers']): Record<string, string | undefined> {
|
|
58
|
+
const out: Record<string, string | undefined> = {};
|
|
59
|
+
for (const [name, value] of headers) {
|
|
60
|
+
out[name.toLowerCase()] = Array.isArray(value) ? value[0] : value;
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async function readBody(body: AsyncIterable<Buffer | string> | undefined): Promise<string> {
|
|
66
|
+
if (!body) return '';
|
|
67
|
+
const chunks: Buffer[] = [];
|
|
68
|
+
for await (const chunk of body) {
|
|
69
|
+
chunks.push(typeof chunk === 'string' ? Buffer.from(chunk, 'utf8') : chunk);
|
|
70
|
+
}
|
|
71
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function toHarperResponse(res: NormResponse): HarperHttpResponse {
|
|
75
|
+
const headers = { ...res.headers };
|
|
76
|
+
|
|
77
|
+
if (res.jsonBody !== undefined) {
|
|
78
|
+
if (!headers['Content-Type'] && !headers['content-type']) {
|
|
79
|
+
headers['Content-Type'] = 'application/json';
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
status: res.status,
|
|
83
|
+
headers,
|
|
84
|
+
body: JSON.stringify(res.jsonBody),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (res.sseIterable !== undefined) {
|
|
89
|
+
if (!headers['Content-Type'] && !headers['content-type']) {
|
|
90
|
+
headers['Content-Type'] = 'text/event-stream';
|
|
91
|
+
}
|
|
92
|
+
if (!headers['Cache-Control'] && !headers['cache-control']) {
|
|
93
|
+
headers['Cache-Control'] = 'no-store';
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
status: res.status,
|
|
97
|
+
headers,
|
|
98
|
+
body: res.sseIterable,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return { status: res.status, headers };
|
|
103
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-`tools/call` audit logging. Emits a structured info-level log entry
|
|
3
|
+
* for every tool invocation so operators can replay who-did-what after the
|
|
4
|
+
* fact. The shape mirrors what Harper's existing operations audit captures
|
|
5
|
+
* (operation, user, status, duration) plus MCP-specific identity
|
|
6
|
+
* (session id, profile, tool name).
|
|
7
|
+
*
|
|
8
|
+
* Argument summarization runs through a redaction step that drops anything
|
|
9
|
+
* that looks like a credential (key/secret/password). Operators who need
|
|
10
|
+
* stricter PII handling configure `mcp.audit.argumentRedactor` to a custom
|
|
11
|
+
* function via a future component-author hook (v1.1).
|
|
12
|
+
*/
|
|
13
|
+
import harperLogger from '../../utility/logging/harper_logger.ts';
|
|
14
|
+
|
|
15
|
+
export interface AuditEntry {
|
|
16
|
+
timestamp: string;
|
|
17
|
+
profile: 'operations' | 'application';
|
|
18
|
+
sessionId: string;
|
|
19
|
+
tool: string;
|
|
20
|
+
user: string;
|
|
21
|
+
args: object;
|
|
22
|
+
status: 'ok' | 'isError' | 'rate_limited' | 'protocol_error';
|
|
23
|
+
durationMs: number;
|
|
24
|
+
errorMessage?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const REDACTION_PATTERN = /(secret|password|token|api[-_]?key|credentials?|auth)/i;
|
|
28
|
+
const REDACTION_PLACEHOLDER = '[redacted]';
|
|
29
|
+
const MAX_REDACTION_DEPTH = 10;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Recursively walk an object and replace values for keys matching the
|
|
33
|
+
* redaction pattern. Bounded depth so a pathological cyclic input doesn't
|
|
34
|
+
* stall the audit emit; on overflow the entire sub-object is redacted so
|
|
35
|
+
* a credential buried below the depth limit cannot leak. Returns a shallow
|
|
36
|
+
* clone — the caller's payload is never mutated.
|
|
37
|
+
*/
|
|
38
|
+
export function redactArgs(value: unknown, depth = 0): unknown {
|
|
39
|
+
if (value === null || typeof value !== 'object') return value;
|
|
40
|
+
if (depth > MAX_REDACTION_DEPTH) return REDACTION_PLACEHOLDER;
|
|
41
|
+
if (Array.isArray(value)) {
|
|
42
|
+
return value.map((v) => redactArgs(v, depth + 1));
|
|
43
|
+
}
|
|
44
|
+
const out: Record<string, unknown> = {};
|
|
45
|
+
for (const [k, v] of Object.entries(value)) {
|
|
46
|
+
if (REDACTION_PATTERN.test(k)) {
|
|
47
|
+
out[k] = REDACTION_PLACEHOLDER;
|
|
48
|
+
} else {
|
|
49
|
+
out[k] = redactArgs(v, depth + 1);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Mask a session id for logging — first 8 chars, suffix elided. */
|
|
56
|
+
export function maskSessionId(id: string): string {
|
|
57
|
+
if (typeof id !== 'string' || id.length <= 8) return id;
|
|
58
|
+
return `${id.slice(0, 8)}…`;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Emit a single audit entry. Writes to the structured log channel as INFO
|
|
63
|
+
* so it's captured by Harper's standard log rotation; downstream tooling
|
|
64
|
+
* can filter on `category: 'mcp.audit'`.
|
|
65
|
+
*/
|
|
66
|
+
export function emitAuditEntry(entry: AuditEntry): void {
|
|
67
|
+
try {
|
|
68
|
+
const masked = { ...entry, sessionId: maskSessionId(entry.sessionId), args: redactArgs(entry.args) };
|
|
69
|
+
harperLogger.info({ category: 'mcp.audit', ...masked });
|
|
70
|
+
} catch (err) {
|
|
71
|
+
// Audit emission must never break a tool call. If logging itself fails
|
|
72
|
+
// (logger disposed, disk full, whatever), trace-log the loss and move on.
|
|
73
|
+
harperLogger.trace(`MCP audit emit failed: ${(err as Error).message}`);
|
|
74
|
+
}
|
|
75
|
+
}
|