@harperfast/harper 5.2.0 → 5.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/copyDb.ts +40 -11
- package/bin/harper.ts +20 -51
- package/bin/help.ts +216 -0
- package/components/Application.ts +236 -46
- package/components/ApplicationScope.ts +26 -0
- package/components/EntryHandler.ts +410 -105
- package/components/RuntimeModuleTracker.ts +189 -0
- package/components/Scope.ts +68 -24
- package/components/componentLoader.ts +70 -16
- package/components/deployLifecycle.ts +119 -33
- package/components/deploymentRecorder.ts +102 -11
- package/components/mcp/tools/operations.ts +6 -0
- package/components/operations.js +8 -6
- package/config/configUtils.ts +78 -20
- package/config/harperConfigEnvVars.ts +114 -17
- package/config-root.schema.json +10 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +26 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
- package/dataLayer/hdbInfoController.ts +8 -0
- package/dataLayer/schemaDescribe.ts +2 -1
- package/dist/bin/copyDb.js +33 -9
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/harper.d.ts +6 -0
- package/dist/bin/harper.js +18 -50
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/help.d.ts +8 -0
- package/dist/bin/help.js +192 -0
- package/dist/bin/help.js.map +1 -0
- package/dist/components/Application.d.ts +16 -1
- package/dist/components/Application.js +210 -38
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.d.ts +7 -0
- package/dist/components/ApplicationScope.js +22 -0
- package/dist/components/ApplicationScope.js.map +1 -1
- package/dist/components/EntryHandler.d.ts +4 -4
- package/dist/components/EntryHandler.js +386 -95
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/RuntimeModuleTracker.d.ts +11 -0
- package/dist/components/RuntimeModuleTracker.js +189 -0
- package/dist/components/RuntimeModuleTracker.js.map +1 -0
- package/dist/components/Scope.d.ts +1 -0
- package/dist/components/Scope.js +69 -22
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/componentLoader.js +69 -10
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/deployLifecycle.d.ts +6 -2
- package/dist/components/deployLifecycle.js +109 -31
- package/dist/components/deployLifecycle.js.map +1 -1
- package/dist/components/deploymentRecorder.d.ts +6 -0
- package/dist/components/deploymentRecorder.js +94 -12
- package/dist/components/deploymentRecorder.js.map +1 -1
- package/dist/components/mcp/tools/operations.js +6 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/operations.js +8 -6
- package/dist/components/operations.js.map +1 -1
- package/dist/config/configUtils.d.ts +6 -0
- package/dist/config/configUtils.js +78 -18
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.js +108 -16
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +12 -5
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
- package/dist/dataLayer/hdbInfoController.js +4 -0
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +2 -1
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +57 -0
- package/dist/resources/DatabaseTransaction.js +284 -104
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +8 -2
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Resources.js +22 -4
- package/dist/resources/Resources.js.map +1 -1
- package/dist/resources/Table.d.ts +8 -6
- package/dist/resources/Table.js +158 -31
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/write.js +6 -6
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.js +27 -1
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +0 -1
- package/dist/resources/blob.js +15 -7
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/databases.d.ts +22 -5
- package/dist/resources/databases.js +118 -9
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +15 -2
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +128 -39
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/jsResource.d.ts +4 -26
- package/dist/resources/jsResource.js +5 -59
- package/dist/resources/jsResource.js.map +1 -1
- package/dist/resources/models/Models.d.ts +11 -1
- package/dist/resources/models/Models.js +10 -1
- package/dist/resources/models/Models.js.map +1 -1
- package/dist/resources/models/backendRegistry.d.ts +9 -0
- package/dist/resources/models/backendRegistry.js +10 -0
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/openaiStream.d.ts +16 -1
- package/dist/resources/models/openaiStream.js +113 -21
- package/dist/resources/models/openaiStream.js.map +1 -1
- package/dist/resources/models/v1/chatCompletions.d.ts +54 -0
- package/dist/resources/models/v1/chatCompletions.js +115 -0
- package/dist/resources/models/v1/chatCompletions.js.map +1 -0
- package/dist/resources/models/v1/embeddings.d.ts +11 -0
- package/dist/resources/models/v1/embeddings.js +71 -0
- package/dist/resources/models/v1/embeddings.js.map +1 -0
- package/dist/resources/models/v1/errors.d.ts +54 -0
- package/dist/resources/models/v1/errors.js +130 -0
- package/dist/resources/models/v1/errors.js.map +1 -0
- package/dist/resources/models/v1/index.d.ts +36 -0
- package/dist/resources/models/v1/index.js +75 -0
- package/dist/resources/models/v1/index.js.map +1 -0
- package/dist/resources/models/v1/models.d.ts +26 -0
- package/dist/resources/models/v1/models.js +44 -0
- package/dist/resources/models/v1/models.js.map +1 -0
- package/dist/resources/models/v1/translation.d.ts +133 -0
- package/dist/resources/models/v1/translation.js +298 -0
- package/dist/resources/models/v1/translation.js.map +1 -0
- package/dist/resources/roles.d.ts +1 -1
- package/dist/resources/roles.js +54 -7
- package/dist/resources/roles.js.map +1 -1
- package/dist/resources/search.d.ts +1 -1
- package/dist/resources/search.js +7 -3
- package/dist/resources/search.js.map +1 -1
- package/dist/security/jsLoader.js +84 -33
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/role.js +4 -0
- package/dist/security/role.js.map +1 -1
- package/dist/security/superUserGuard.d.ts +7 -0
- package/dist/security/superUserGuard.js +23 -0
- package/dist/security/superUserGuard.js.map +1 -0
- package/dist/security/tokenAuthentication.d.ts +0 -1
- package/dist/security/tokenAuthentication.js +6 -2
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.d.ts +6 -1
- package/dist/security/user.js +23 -1
- package/dist/security/user.js.map +1 -1
- package/dist/server/http.d.ts +23 -2
- package/dist/server/http.js +99 -12
- package/dist/server/http.js.map +1 -1
- package/dist/server/operationsServer.d.ts +0 -2
- package/dist/server/operationsServer.js.map +1 -1
- package/dist/server/serverHelpers/multipartParser.js +9 -0
- package/dist/server/serverHelpers/multipartParser.js.map +1 -1
- package/dist/server/serverHelpers/operationAuthorizationState.d.ts +2 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js +13 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -0
- package/dist/server/serverHelpers/registeredOperations.d.ts +3 -2
- package/dist/server/serverHelpers/registeredOperations.js +14 -13
- package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +19 -3
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +1 -1
- package/dist/server/serverHelpers/serverUtilities.js +10 -7
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/static.js +57 -18
- package/dist/server/static.js.map +1 -1
- package/dist/server/storageReclamation.d.ts +17 -0
- package/dist/server/storageReclamation.js +90 -6
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/manageThreads.js +8 -0
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.js +20 -0
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadServer.js +12 -0
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/sqlEngine/diff/differential.js +7 -3
- package/dist/sqlEngine/diff/differential.js.map +1 -1
- package/dist/sqlEngine/parser/normalizer.js +37 -9
- package/dist/sqlEngine/parser/normalizer.js.map +1 -1
- package/dist/sqlTranslator/index.js +6 -1
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/upgrade/upgradePrompt.d.ts +2 -2
- package/dist/upgrade/upgradePrompt.js +22 -3
- package/dist/upgrade/upgradePrompt.js.map +1 -1
- package/dist/utility/environment/environmentManager.d.ts +11 -0
- package/dist/utility/environment/environmentManager.js +154 -0
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +1 -0
- package/dist/utility/errors/commonErrors.js +1 -0
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +2 -0
- package/dist/utility/hdbTerms.js +2 -0
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/install/installer.js +32 -0
- package/dist/utility/install/installer.js.map +1 -1
- package/dist/utility/lmdb/environmentUtility.js +2 -1
- package/dist/utility/lmdb/environmentUtility.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +7 -0
- package/dist/utility/logging/harper_logger.js +57 -24
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/npm-shrinkwrap.json +208 -198
- package/package.json +10 -8
- package/resources/DESIGN.md +1 -0
- package/resources/DatabaseTransaction.ts +313 -102
- package/resources/ResourceInterface.ts +8 -2
- package/resources/Resources.ts +22 -4
- package/resources/Table.ts +398 -259
- package/resources/analytics/write.ts +22 -20
- package/resources/auditStore.ts +32 -1
- package/resources/blob.ts +15 -8
- package/resources/databases.ts +123 -12
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +119 -45
- package/resources/jsResource.ts +5 -62
- package/resources/models/Models.ts +14 -1
- package/resources/models/backendRegistry.ts +10 -0
- package/resources/models/openaiStream.ts +131 -19
- package/resources/models/v1/chatCompletions.ts +128 -0
- package/resources/models/v1/embeddings.ts +70 -0
- package/resources/models/v1/errors.ts +141 -0
- package/resources/models/v1/index.ts +72 -0
- package/resources/models/v1/models.ts +53 -0
- package/resources/models/v1/translation.ts +362 -0
- package/resources/roles.ts +67 -7
- package/resources/search.ts +8 -3
- package/security/jsLoader.ts +84 -30
- package/security/role.ts +7 -0
- package/security/superUserGuard.ts +20 -0
- package/security/tokenAuthentication.ts +6 -3
- package/security/user.ts +26 -1
- package/server/DESIGN.md +45 -34
- package/server/http.ts +100 -13
- package/server/operationsServer.ts +0 -2
- package/server/serverHelpers/multipartParser.ts +9 -0
- package/server/serverHelpers/operationAuthorizationState.ts +11 -0
- package/server/serverHelpers/registeredOperations.ts +19 -15
- package/server/serverHelpers/serverHandlers.js +20 -3
- package/server/serverHelpers/serverUtilities.ts +10 -7
- package/server/static.ts +75 -20
- package/server/storageReclamation.ts +104 -8
- package/server/threads/manageThreads.js +8 -0
- package/server/threads/socketRouter.ts +20 -0
- package/server/threads/threadServer.js +11 -0
- package/sqlTranslator/index.ts +6 -1
- package/static/defaultConfig.yaml +2 -0
- package/studio/web/assets/{Chat-DoVWScmq.js → Chat-BMUjPklt.js} +5 -5
- package/studio/web/assets/{Chat-DoVWScmq.js.map → Chat-BMUjPklt.js.map} +1 -1
- package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js → FloatingChat-Cbghuxe5.js} +5 -5
- package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js.map → FloatingChat-Cbghuxe5.js.map} +1 -1
- package/studio/web/assets/{apiToken-BUI_04o7.js → apiToken-CkgTQAqc.js} +2 -2
- package/studio/web/assets/{apiToken-BUI_04o7.js.map → apiToken-CkgTQAqc.js.map} +1 -1
- package/studio/web/assets/{applications-D03NA7wW.js → applications-WvF4NOTN.js} +13 -13
- package/studio/web/assets/applications-WvF4NOTN.js.map +1 -0
- package/studio/web/assets/chevron-right-anDJCGlp.js +2 -0
- package/studio/web/assets/chevron-right-anDJCGlp.js.map +1 -0
- package/studio/web/assets/index-CDeqVx71.css +1 -0
- package/studio/web/assets/index-Sevt3MVx.js +819 -0
- package/studio/web/assets/index-Sevt3MVx.js.map +1 -0
- package/studio/web/assets/index.lazy-Dg5YYPGg.js +14 -0
- package/studio/web/assets/{index.lazy-Dx3MpyDC.js.map → index.lazy-Dg5YYPGg.js.map} +1 -1
- package/studio/web/assets/{jsonMode-Cjj7dtlr.js → jsonMode-CBSEleE7.js} +2 -2
- package/studio/web/assets/{jsonMode-Cjj7dtlr.js.map → jsonMode-CBSEleE7.js.map} +1 -1
- package/studio/web/assets/languageServices-gxedeeTo.js +2 -0
- package/studio/web/assets/languageServices-gxedeeTo.js.map +1 -0
- package/studio/web/assets/{notifications-0edoFTsb.js → notifications-Ap84YyQp.js} +2 -2
- package/studio/web/assets/{notifications-0edoFTsb.js.map → notifications-Ap84YyQp.js.map} +1 -1
- package/studio/web/assets/notifications-vehqyOLM.js +2 -0
- package/studio/web/assets/{notifications-CwKhipK7.js.map → notifications-vehqyOLM.js.map} +1 -1
- package/studio/web/assets/{pollUnlessForbidden-HHdQZW1N.js → pollUnlessForbidden-BhzefVRn.js} +2 -2
- package/studio/web/assets/pollUnlessForbidden-BhzefVRn.js.map +1 -0
- package/studio/web/assets/{profile-DUfEPQtx.js → profile-DzDpRLHY.js} +2 -2
- package/studio/web/assets/{profile-DUfEPQtx.js.map → profile-DzDpRLHY.js.map} +1 -1
- package/studio/web/assets/queryClient-CgtkoiCY.js +2 -0
- package/studio/web/assets/queryClient-CgtkoiCY.js.map +1 -0
- package/studio/web/assets/regions-DpJ8s7iN.js +2 -0
- package/studio/web/assets/regions-DpJ8s7iN.js.map +1 -0
- package/studio/web/assets/register-BDy01-q3.js +3 -0
- package/studio/web/assets/register-BDy01-q3.js.map +1 -0
- package/studio/web/assets/register-CQHRwNP4.js +3 -0
- package/studio/web/assets/register-CQHRwNP4.js.map +1 -0
- package/studio/web/assets/{setComponentFile-DMPo4UjC.js → setComponentFile-D0aPcI3W.js} +2 -2
- package/studio/web/assets/{setComponentFile-DMPo4UjC.js.map → setComponentFile-D0aPcI3W.js.map} +1 -1
- package/studio/web/assets/setup-I15FAF9H.js +3 -0
- package/studio/web/assets/{setup-B56Oz1_u.js.map → setup-I15FAF9H.js.map} +1 -1
- package/studio/web/assets/status-BF1eJshJ.js +62 -0
- package/studio/web/assets/status-BF1eJshJ.js.map +1 -0
- package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js → swagger-ui-react-DwSPXXhl.js} +2 -2
- package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js.map → swagger-ui-react-DwSPXXhl.js.map} +1 -1
- package/studio/web/assets/{textarea-DhLMZ3PA.js → table-DpOjNQHt.js} +2 -10
- package/studio/web/assets/table-DpOjNQHt.js.map +1 -0
- package/studio/web/assets/{tsMode-CrHCRjTK.js → tsMode-Bu51A-VG.js} +2 -2
- package/studio/web/assets/{tsMode-CrHCRjTK.js.map → tsMode-Bu51A-VG.js.map} +1 -1
- package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js → useEntityRestURL-DrV1zMrN.js} +2 -2
- package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js.map → useEntityRestURL-DrV1zMrN.js.map} +1 -1
- package/studio/web/index.html +6 -7
- package/upgrade/upgradePrompt.ts +22 -3
- package/utility/environment/environmentManager.ts +152 -0
- package/utility/errors/commonErrors.ts +2 -0
- package/utility/hdbTerms.ts +2 -0
- package/utility/install/installer.ts +37 -0
- package/utility/lmdb/environmentUtility.ts +2 -1
- package/utility/logging/harper_logger.ts +57 -26
- package/studio/web/assets/applications-D03NA7wW.js.map +0 -1
- package/studio/web/assets/index-Bh_CNAHr.js +0 -809
- package/studio/web/assets/index-Bh_CNAHr.js.map +0 -1
- package/studio/web/assets/index-C8Mv9kHV.css +0 -1
- package/studio/web/assets/index.lazy-Dx3MpyDC.js +0 -14
- package/studio/web/assets/notifications-CwKhipK7.js +0 -2
- package/studio/web/assets/pollUnlessForbidden-HHdQZW1N.js.map +0 -1
- package/studio/web/assets/queryClient-CbA8wM7J.js +0 -2
- package/studio/web/assets/queryClient-CbA8wM7J.js.map +0 -1
- package/studio/web/assets/setup-B56Oz1_u.js +0 -3
- package/studio/web/assets/status-BAod7p3o.js +0 -62
- package/studio/web/assets/status-BAod7p3o.js.map +0 -1
- package/studio/web/assets/textarea-DhLMZ3PA.js.map +0 -1
package/dist/bin/harper.js
CHANGED
|
@@ -38,11 +38,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
};
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
exports.formatCliError = formatCliError;
|
|
41
|
+
exports.wantsTopLevelHelp = wantsTopLevelHelp;
|
|
41
42
|
exports.harper = harper;
|
|
42
43
|
const fs = __importStar(require("node:fs"));
|
|
43
44
|
const path = __importStar(require("node:path"));
|
|
44
45
|
const harper_logger_ts_1 = __importDefault(require("../utility/logging/harper_logger.js"));
|
|
45
46
|
const cliOperations = __importStar(require("./cliOperations.js"));
|
|
47
|
+
const help_ts_1 = require("./help.js");
|
|
46
48
|
const packageUtils_js_1 = require("../utility/packageUtils.js");
|
|
47
49
|
const checkNodeVersion_js_1 = __importDefault(require("../launchServiceScripts/utility/checkNodeVersion.js"));
|
|
48
50
|
const hdbTerms = __importStar(require("../utility/hdbTerms.js"));
|
|
@@ -50,54 +52,6 @@ const { SERVICE_ACTIONS_ENUM, OPERATIONS_ENUM } = hdbTerms;
|
|
|
50
52
|
if (typeof process.setSourceMapsEnabled === 'function') {
|
|
51
53
|
process.setSourceMapsEnabled(true); // this is necessary for source maps to work, at least on the main thread.
|
|
52
54
|
}
|
|
53
|
-
const HELP = `
|
|
54
|
-
Usage: harperdb [command]
|
|
55
|
-
|
|
56
|
-
With no command, harper will simply run Harper (in the foreground)
|
|
57
|
-
|
|
58
|
-
Documentation: https://docs.harperdb.io/
|
|
59
|
-
|
|
60
|
-
By default, the CLI also supports certain Operation APIs. Specify the operation name and any required parameters, and omit the 'operation' command.
|
|
61
|
-
|
|
62
|
-
Commands:
|
|
63
|
-
agent [message] - Chat with the built-in agent (interactive, or one-shot with a message; alias: chat)
|
|
64
|
-
copy-db <source> <target> - Copies a database from source path to target path
|
|
65
|
-
dev <path> - Run the application in dev mode with debugging, foreground logging, no auth
|
|
66
|
-
install - Install harperdb
|
|
67
|
-
<api-operation> <param>=<value> - Run an API operation and return result to the CLI, not all operations are supported
|
|
68
|
-
To authenticate as a different user than the one being operated on
|
|
69
|
-
(e.g. add_user/alter_user), set HARPER_CLI_USERNAME/HARPER_CLI_PASSWORD
|
|
70
|
-
or run 'harper login'. The equivalent auth_username=<value>
|
|
71
|
-
auth_password=<value> args also work, but a password passed as an
|
|
72
|
-
argument is exposed in shell history, process listings and CI logs.
|
|
73
|
-
A saved login token always outranks username=/password=, so a
|
|
74
|
-
stale token that fails to refresh will 401 rather than falling
|
|
75
|
-
back to them — run 'harper logout' or pass auth_username=/
|
|
76
|
-
auth_password= to override it.
|
|
77
|
-
login [target] [username] - Login to a remote or local Harper instance
|
|
78
|
-
--for-ci prints the CI/CD credentials (target + long-lived
|
|
79
|
-
refresh token) to stdout in dotenv format, and everything else
|
|
80
|
-
to stderr, so it pipes without the token hitting your screen:
|
|
81
|
-
harper login --for-ci | gh secret set --env-file -
|
|
82
|
-
Log in as a user dedicated to that one CI consumer: Harper
|
|
83
|
-
stores a single refresh token per user, so this revokes any
|
|
84
|
-
refresh token that user already holds — another runner, another
|
|
85
|
-
machine, or an earlier 'harper login' will 401 on its next
|
|
86
|
-
refresh. Two consumers cannot share a user.
|
|
87
|
-
logout [target] - Logout from Harper and clear saved JWT
|
|
88
|
-
mcp [subcommand] - MCP stdio bridge / print-config / doctor (see 'harper mcp help')
|
|
89
|
-
register - Register harperdb
|
|
90
|
-
renew-certs - Generate a new set of self-signed certificates
|
|
91
|
-
restart - Restart the harperdb background process
|
|
92
|
-
run <path> - Run the application in the specified path
|
|
93
|
-
start - Starts a separate background process for harperdb and CLI will exit
|
|
94
|
-
status - Print the status of Harper
|
|
95
|
-
stop - Stop the harperdb background process
|
|
96
|
-
help - Display this output
|
|
97
|
-
upgrade - Upgrade harperdb
|
|
98
|
-
version - Print the version
|
|
99
|
-
deploy - Deploy the application locally or remotely with target=<remote url>
|
|
100
|
-
`;
|
|
101
55
|
/**
|
|
102
56
|
* Format a CLI error for the terminal. Expected, user-facing errors (a `ClientError` from an
|
|
103
57
|
* operation — bad args, not found, a locked backup repo — which carry a numeric `statusCode`) get
|
|
@@ -110,6 +64,17 @@ function formatCliError(error) {
|
|
|
110
64
|
return `${message}\n${error.stack}`;
|
|
111
65
|
return message;
|
|
112
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Whether a `-h`/`--help` anywhere in `argv` should print the top-level help. Returns false for the
|
|
69
|
+
* subcommands that own their own `--help` — mcp and agent/chat parse `process.argv.slice(3)`
|
|
70
|
+
* themselves downstream — so `harper mcp --help` reaches the mcp handler instead of this help.
|
|
71
|
+
*/
|
|
72
|
+
function wantsTopLevelHelp(argv, service) {
|
|
73
|
+
const delegatesHelp = service === SERVICE_ACTIONS_ENUM.MCP ||
|
|
74
|
+
service === SERVICE_ACTIONS_ENUM.AGENT ||
|
|
75
|
+
service === SERVICE_ACTIONS_ENUM.CHAT;
|
|
76
|
+
return !delegatesHelp && (argv.includes('-h') || argv.includes('--help'));
|
|
77
|
+
}
|
|
113
78
|
async function harper() {
|
|
114
79
|
let nodeResults = (0, checkNodeVersion_js_1.default)();
|
|
115
80
|
if (nodeResults) {
|
|
@@ -124,12 +89,15 @@ async function harper() {
|
|
|
124
89
|
}
|
|
125
90
|
}
|
|
126
91
|
let service;
|
|
127
|
-
if (process.argv
|
|
92
|
+
if (process.argv?.[2] && !process.argv[2].startsWith('-')) {
|
|
128
93
|
service = process.argv[2].toLowerCase();
|
|
129
94
|
}
|
|
95
|
+
if (wantsTopLevelHelp(process.argv, service)) {
|
|
96
|
+
return (0, help_ts_1.help)();
|
|
97
|
+
}
|
|
130
98
|
switch (service) {
|
|
131
99
|
case SERVICE_ACTIONS_ENUM.HELP:
|
|
132
|
-
return
|
|
100
|
+
return (0, help_ts_1.help)();
|
|
133
101
|
case SERVICE_ACTIONS_ENUM.START:
|
|
134
102
|
return require('./run').launch();
|
|
135
103
|
case SERVICE_ACTIONS_ENUM.INSTALL:
|
package/dist/bin/harper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harper.js","sourceRoot":"","sources":["../../bin/harper.ts"],"names":[],"mappings":";AACA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"harper.js","sourceRoot":"","sources":["../../bin/harper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `harper help` / `harper -h` output, kept as structured data so {@link help} can render it to
|
|
3
|
+
* the current terminal width (capped at 120 columns) at call time. Content lives separately from
|
|
4
|
+
* layout: editing the text can't break the wrapping, command names stay column-aligned across
|
|
5
|
+
* sections, and the CI/CD sample stays a verbatim, copy-pasteable line at any width.
|
|
6
|
+
*/
|
|
7
|
+
/** Render the CLI help, wrapped to the terminal width (capped at 120, and 120 when not a TTY). */
|
|
8
|
+
export declare function help(): string;
|
package/dist/bin/help.js
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The `harper help` / `harper -h` output, kept as structured data so {@link help} can render it to
|
|
4
|
+
* the current terminal width (capped at 120 columns) at call time. Content lives separately from
|
|
5
|
+
* layout: editing the text can't break the wrapping, command names stay column-aligned across
|
|
6
|
+
* sections, and the CI/CD sample stays a verbatim, copy-pasteable line at any width.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.help = help;
|
|
10
|
+
const MAX_WIDTH = 120;
|
|
11
|
+
const INDENT = 2; // leading spaces for command names and detail blocks
|
|
12
|
+
const DASH = ' - '; // separator between a command name and its description
|
|
13
|
+
// Minimum description width for the two-column command layout. On terminals too narrow for it
|
|
14
|
+
// (width < descCol + this), command rows stack the name above an indented description instead of
|
|
15
|
+
// overflowing. Set to the widest word in any command description so two-column never overflows.
|
|
16
|
+
const MIN_DESC_WIDTH = 20;
|
|
17
|
+
const SECTIONS = [
|
|
18
|
+
{ blocks: [{ text: 'Usage: harperdb [command]' }] },
|
|
19
|
+
{ blocks: [{ text: 'With no command, harper will simply run Harper (in the foreground)' }] },
|
|
20
|
+
{ blocks: [{ text: 'Documentation: https://docs.harperdb.io/' }] },
|
|
21
|
+
{
|
|
22
|
+
blocks: [
|
|
23
|
+
{
|
|
24
|
+
text: [
|
|
25
|
+
'By default, the CLI also supports certain Operation APIs. Specify the operation name and any required',
|
|
26
|
+
"parameters, and omit the 'operation' command.",
|
|
27
|
+
].join(' '),
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{ blocks: [{ text: 'Commands:' }] },
|
|
32
|
+
{
|
|
33
|
+
heading: 'Server',
|
|
34
|
+
blocks: [
|
|
35
|
+
{
|
|
36
|
+
commands: [
|
|
37
|
+
['start', 'Starts a separate background process for harperdb and CLI will exit'],
|
|
38
|
+
['stop', 'Stop the harperdb background process'],
|
|
39
|
+
['restart', 'Restart the harperdb background process'],
|
|
40
|
+
['status', 'Print the status of Harper'],
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
heading: 'Applications',
|
|
47
|
+
blocks: [
|
|
48
|
+
{
|
|
49
|
+
commands: [
|
|
50
|
+
['run <path>', 'Run the application in the specified path'],
|
|
51
|
+
['dev <path>', 'Run the application in dev mode with debugging, foreground logging, no auth'],
|
|
52
|
+
['deploy', 'Deploy the application locally or remotely with target=<remote url>'],
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
heading: 'Install & maintenance',
|
|
59
|
+
blocks: [
|
|
60
|
+
{
|
|
61
|
+
commands: [
|
|
62
|
+
['install', 'Install harperdb'],
|
|
63
|
+
['upgrade', 'Upgrade harperdb'],
|
|
64
|
+
['register', 'Register harperdb'],
|
|
65
|
+
['renew-certs', 'Generate a new set of self-signed certificates'],
|
|
66
|
+
['copy-db <source> <target>', 'Copies a database from source path to target path'],
|
|
67
|
+
['version', 'Print the version'],
|
|
68
|
+
['help', 'Display this output'],
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
heading: 'Accounts',
|
|
75
|
+
blocks: [
|
|
76
|
+
{ pre: 'login [target] [username]', indent: INDENT },
|
|
77
|
+
{
|
|
78
|
+
text: [
|
|
79
|
+
'Login to a remote or local Harper instance. --for-ci prints the CI/CD credentials (target +',
|
|
80
|
+
'long-lived refresh token) to stdout in dotenv format, and everything else to stderr, so it pipes',
|
|
81
|
+
'without the token hitting your screen:',
|
|
82
|
+
].join(' '),
|
|
83
|
+
indent: 4,
|
|
84
|
+
},
|
|
85
|
+
{ pre: 'harper login --for-ci | gh secret set --env-file -', indent: 6 },
|
|
86
|
+
{
|
|
87
|
+
text: [
|
|
88
|
+
'Log in as a user dedicated to that one CI consumer: Harper stores a single refresh token per user, so',
|
|
89
|
+
'this revokes any refresh token that user already holds — another runner, another machine, or an earlier',
|
|
90
|
+
"'harper login' will 401 on its next refresh. Two consumers cannot share a user.",
|
|
91
|
+
].join(' '),
|
|
92
|
+
indent: 4,
|
|
93
|
+
},
|
|
94
|
+
{ commands: [['logout [target]', 'Logout from Harper and clear saved JWT']] },
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
heading: 'Assistants',
|
|
99
|
+
blocks: [
|
|
100
|
+
{
|
|
101
|
+
commands: [
|
|
102
|
+
['agent [message]', 'Chat with the built-in agent (interactive, or one-shot with a message; alias: chat)'],
|
|
103
|
+
['mcp [subcommand]', "MCP stdio bridge / print-config / doctor (see 'harper mcp help')"],
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
heading: 'Operations API',
|
|
110
|
+
blocks: [
|
|
111
|
+
{ pre: '<api-operation> <param>=<value>', indent: INDENT },
|
|
112
|
+
{
|
|
113
|
+
text: [
|
|
114
|
+
'Run an API operation and return the result to the CLI (not all operations are supported). See the full',
|
|
115
|
+
'list of operations at: https://docs.harperdb.io/reference/v5/operations-api/operations',
|
|
116
|
+
].join(' '),
|
|
117
|
+
indent: 4,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
text: [
|
|
121
|
+
'To authenticate as a different user than the one being operated on (e.g. add_user/alter_user), set',
|
|
122
|
+
"HARPER_CLI_USERNAME/HARPER_CLI_PASSWORD or run 'harper login'. The equivalent auth_username=<value>",
|
|
123
|
+
'auth_password=<value> args also work, but a password passed as an argument is exposed in shell',
|
|
124
|
+
'history, process listings and CI logs. A saved login token always outranks username=/password=, so a',
|
|
125
|
+
"stale token that fails to refresh will 401 rather than falling back to them — run 'harper logout' or",
|
|
126
|
+
'pass auth_username=/auth_password= to override it.',
|
|
127
|
+
].join(' '),
|
|
128
|
+
indent: 4,
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
const pad = (count) => ' '.repeat(count);
|
|
134
|
+
/** Greedy word wrap. Never splits a token, so URLs and flags survive intact (they overflow). */
|
|
135
|
+
function wrap(text, width) {
|
|
136
|
+
const words = text.split(/\s+/).filter(Boolean);
|
|
137
|
+
if (words.length === 0)
|
|
138
|
+
return [];
|
|
139
|
+
const lines = [];
|
|
140
|
+
let line = words[0];
|
|
141
|
+
for (let i = 1; i < words.length; i++) {
|
|
142
|
+
if (line.length + 1 + words[i].length > width) {
|
|
143
|
+
lines.push(line);
|
|
144
|
+
line = words[i];
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
line += ' ' + words[i];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
lines.push(line);
|
|
151
|
+
return lines;
|
|
152
|
+
}
|
|
153
|
+
function renderBlock(block, width, nameWidth, descCol) {
|
|
154
|
+
if ('commands' in block) {
|
|
155
|
+
// Two columns when the terminal leaves a readable description column; otherwise stack the name
|
|
156
|
+
// above an indented description so narrow terminals don't overflow the command rows.
|
|
157
|
+
const twoColumn = width - descCol >= MIN_DESC_WIDTH;
|
|
158
|
+
return block.commands.flatMap(([name, description]) => {
|
|
159
|
+
if (twoColumn) {
|
|
160
|
+
const wrapped = wrap(description, width - descCol);
|
|
161
|
+
const head = pad(INDENT) + name.padEnd(nameWidth) + DASH;
|
|
162
|
+
return [head + (wrapped[0] ?? ''), ...wrapped.slice(1).map((line) => pad(descCol) + line)];
|
|
163
|
+
}
|
|
164
|
+
const detail = INDENT * 2;
|
|
165
|
+
return [pad(INDENT) + name, ...wrap(description, Math.max(1, width - detail)).map((line) => pad(detail) + line)];
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
if ('pre' in block)
|
|
169
|
+
return [pad(block.indent ?? 0) + block.pre];
|
|
170
|
+
const indent = block.indent ?? 0;
|
|
171
|
+
return wrap(block.text, Math.max(1, width - indent)).map((line) => pad(indent) + line);
|
|
172
|
+
}
|
|
173
|
+
/** Render the CLI help, wrapped to the terminal width (capped at 120, and 120 when not a TTY). */
|
|
174
|
+
function help() {
|
|
175
|
+
const width = Math.min(process.stdout.columns || MAX_WIDTH, MAX_WIDTH);
|
|
176
|
+
// One shared description column across every command list so names line up between sections,
|
|
177
|
+
// driven by the longest command name.
|
|
178
|
+
const names = SECTIONS.flatMap((section) => section.blocks.flatMap((block) => ('commands' in block ? block.commands.map(([name]) => name) : [])));
|
|
179
|
+
const nameWidth = Math.max(...names.map((name) => name.length));
|
|
180
|
+
const descCol = INDENT + nameWidth + DASH.length;
|
|
181
|
+
const lines = [];
|
|
182
|
+
for (const section of SECTIONS) {
|
|
183
|
+
if (lines.length)
|
|
184
|
+
lines.push(''); // blank line between sections
|
|
185
|
+
if (section.heading)
|
|
186
|
+
lines.push(section.heading);
|
|
187
|
+
for (const block of section.blocks)
|
|
188
|
+
lines.push(...renderBlock(block, width, nameWidth, descCol));
|
|
189
|
+
}
|
|
190
|
+
return '\n' + lines.join('\n') + '\n';
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../bin/help.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,20 @@ interface GitReference {
|
|
|
58
58
|
*/
|
|
59
59
|
export declare function parseGitReference(packageIdentifier: string): GitReference | null;
|
|
60
60
|
export declare const ASIDE_STAGING_DIR = ".deploy-aside";
|
|
61
|
+
type ExtractionTransaction = {
|
|
62
|
+
commit(): Promise<void>;
|
|
63
|
+
rollback(): Promise<void>;
|
|
64
|
+
};
|
|
61
65
|
export declare const GIT_CREDENTIAL_HELPER_PATH: string;
|
|
66
|
+
type InstalledPackageMetadata = {
|
|
67
|
+
files: Map<string, Buffer>;
|
|
68
|
+
readable: boolean;
|
|
69
|
+
hasLockfile: boolean;
|
|
70
|
+
hasInstallableDependencies: boolean;
|
|
71
|
+
};
|
|
72
|
+
export declare function readInstalledPackageMetadata(directory: string): Promise<InstalledPackageMetadata>;
|
|
73
|
+
export declare function installedPackageMetadataEqual(previous: InstalledPackageMetadata, current: InstalledPackageMetadata): boolean;
|
|
74
|
+
export declare function installedRuntimeChanged(previous: InstalledPackageMetadata, current: InstalledPackageMetadata, installationIsOpaque: boolean): boolean;
|
|
62
75
|
/**
|
|
63
76
|
* Extract an application given payload (content of the application) or package (npm-compatible identifier to the application).
|
|
64
77
|
*
|
|
@@ -69,7 +82,7 @@ export declare const GIT_CREDENTIAL_HELPER_PATH: string;
|
|
|
69
82
|
* This method may be called from any Harper thread. Same-component calls are serialized across
|
|
70
83
|
* threads by the preparation lock below.
|
|
71
84
|
*/
|
|
72
|
-
export declare function extractApplication(application: Application): Promise<
|
|
85
|
+
export declare function extractApplication(application: Application, deferCommit?: boolean): Promise<ExtractionTransaction | undefined>;
|
|
73
86
|
/**
|
|
74
87
|
* Install an application to its relative `application.dirPath` using either a
|
|
75
88
|
* configured `application.install` command, a derived package manager from the
|
|
@@ -119,6 +132,8 @@ export declare class Application {
|
|
|
119
132
|
gitCredentials?: ResolvedGitCredential[];
|
|
120
133
|
npmUserconfigPath?: string;
|
|
121
134
|
isNewComponent: boolean;
|
|
135
|
+
packageMetadataChanged: boolean;
|
|
136
|
+
installationIsOpaque: boolean;
|
|
122
137
|
constructor({ name, payload, packageIdentifier, install, onInstallLine, credentials }: ApplicationOptions);
|
|
123
138
|
writeTransientNpmrc(): Promise<void>;
|
|
124
139
|
get gitCredentialEnv(): Record<string, string> | undefined;
|