@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.
Files changed (308) hide show
  1. package/bin/copyDb.ts +40 -11
  2. package/bin/harper.ts +20 -51
  3. package/bin/help.ts +216 -0
  4. package/components/Application.ts +236 -46
  5. package/components/ApplicationScope.ts +26 -0
  6. package/components/EntryHandler.ts +410 -105
  7. package/components/RuntimeModuleTracker.ts +189 -0
  8. package/components/Scope.ts +68 -24
  9. package/components/componentLoader.ts +70 -16
  10. package/components/deployLifecycle.ts +119 -33
  11. package/components/deploymentRecorder.ts +102 -11
  12. package/components/mcp/tools/operations.ts +6 -0
  13. package/components/operations.js +8 -6
  14. package/config/configUtils.ts +78 -20
  15. package/config/harperConfigEnvVars.ts +114 -17
  16. package/config-root.schema.json +10 -0
  17. package/dataLayer/harperBridge/ResourceBridge.ts +26 -5
  18. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
  19. package/dataLayer/hdbInfoController.ts +8 -0
  20. package/dataLayer/schemaDescribe.ts +2 -1
  21. package/dist/bin/copyDb.js +33 -9
  22. package/dist/bin/copyDb.js.map +1 -1
  23. package/dist/bin/harper.d.ts +6 -0
  24. package/dist/bin/harper.js +18 -50
  25. package/dist/bin/harper.js.map +1 -1
  26. package/dist/bin/help.d.ts +8 -0
  27. package/dist/bin/help.js +192 -0
  28. package/dist/bin/help.js.map +1 -0
  29. package/dist/components/Application.d.ts +16 -1
  30. package/dist/components/Application.js +210 -38
  31. package/dist/components/Application.js.map +1 -1
  32. package/dist/components/ApplicationScope.d.ts +7 -0
  33. package/dist/components/ApplicationScope.js +22 -0
  34. package/dist/components/ApplicationScope.js.map +1 -1
  35. package/dist/components/EntryHandler.d.ts +4 -4
  36. package/dist/components/EntryHandler.js +386 -95
  37. package/dist/components/EntryHandler.js.map +1 -1
  38. package/dist/components/RuntimeModuleTracker.d.ts +11 -0
  39. package/dist/components/RuntimeModuleTracker.js +189 -0
  40. package/dist/components/RuntimeModuleTracker.js.map +1 -0
  41. package/dist/components/Scope.d.ts +1 -0
  42. package/dist/components/Scope.js +69 -22
  43. package/dist/components/Scope.js.map +1 -1
  44. package/dist/components/componentLoader.js +69 -10
  45. package/dist/components/componentLoader.js.map +1 -1
  46. package/dist/components/deployLifecycle.d.ts +6 -2
  47. package/dist/components/deployLifecycle.js +109 -31
  48. package/dist/components/deployLifecycle.js.map +1 -1
  49. package/dist/components/deploymentRecorder.d.ts +6 -0
  50. package/dist/components/deploymentRecorder.js +94 -12
  51. package/dist/components/deploymentRecorder.js.map +1 -1
  52. package/dist/components/mcp/tools/operations.js +6 -0
  53. package/dist/components/mcp/tools/operations.js.map +1 -1
  54. package/dist/components/operations.js +8 -6
  55. package/dist/components/operations.js.map +1 -1
  56. package/dist/config/configUtils.d.ts +6 -0
  57. package/dist/config/configUtils.js +78 -18
  58. package/dist/config/configUtils.js.map +1 -1
  59. package/dist/config/harperConfigEnvVars.js +108 -16
  60. package/dist/config/harperConfigEnvVars.js.map +1 -1
  61. package/dist/dataLayer/harperBridge/ResourceBridge.js +12 -5
  62. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  63. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
  64. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
  65. package/dist/dataLayer/hdbInfoController.js +4 -0
  66. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  67. package/dist/dataLayer/schemaDescribe.js +2 -1
  68. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  69. package/dist/resources/DatabaseTransaction.d.ts +57 -0
  70. package/dist/resources/DatabaseTransaction.js +284 -104
  71. package/dist/resources/DatabaseTransaction.js.map +1 -1
  72. package/dist/resources/ResourceInterface.d.ts +8 -2
  73. package/dist/resources/ResourceInterface.js.map +1 -1
  74. package/dist/resources/Resources.js +22 -4
  75. package/dist/resources/Resources.js.map +1 -1
  76. package/dist/resources/Table.d.ts +8 -6
  77. package/dist/resources/Table.js +158 -31
  78. package/dist/resources/Table.js.map +1 -1
  79. package/dist/resources/analytics/write.js +6 -6
  80. package/dist/resources/analytics/write.js.map +1 -1
  81. package/dist/resources/auditStore.js +27 -1
  82. package/dist/resources/auditStore.js.map +1 -1
  83. package/dist/resources/blob.d.ts +0 -1
  84. package/dist/resources/blob.js +15 -7
  85. package/dist/resources/blob.js.map +1 -1
  86. package/dist/resources/databases.d.ts +22 -5
  87. package/dist/resources/databases.js +118 -9
  88. package/dist/resources/databases.js.map +1 -1
  89. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +15 -2
  90. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +128 -39
  91. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  92. package/dist/resources/jsResource.d.ts +4 -26
  93. package/dist/resources/jsResource.js +5 -59
  94. package/dist/resources/jsResource.js.map +1 -1
  95. package/dist/resources/models/Models.d.ts +11 -1
  96. package/dist/resources/models/Models.js +10 -1
  97. package/dist/resources/models/Models.js.map +1 -1
  98. package/dist/resources/models/backendRegistry.d.ts +9 -0
  99. package/dist/resources/models/backendRegistry.js +10 -0
  100. package/dist/resources/models/backendRegistry.js.map +1 -1
  101. package/dist/resources/models/openaiStream.d.ts +16 -1
  102. package/dist/resources/models/openaiStream.js +113 -21
  103. package/dist/resources/models/openaiStream.js.map +1 -1
  104. package/dist/resources/models/v1/chatCompletions.d.ts +54 -0
  105. package/dist/resources/models/v1/chatCompletions.js +115 -0
  106. package/dist/resources/models/v1/chatCompletions.js.map +1 -0
  107. package/dist/resources/models/v1/embeddings.d.ts +11 -0
  108. package/dist/resources/models/v1/embeddings.js +71 -0
  109. package/dist/resources/models/v1/embeddings.js.map +1 -0
  110. package/dist/resources/models/v1/errors.d.ts +54 -0
  111. package/dist/resources/models/v1/errors.js +130 -0
  112. package/dist/resources/models/v1/errors.js.map +1 -0
  113. package/dist/resources/models/v1/index.d.ts +36 -0
  114. package/dist/resources/models/v1/index.js +75 -0
  115. package/dist/resources/models/v1/index.js.map +1 -0
  116. package/dist/resources/models/v1/models.d.ts +26 -0
  117. package/dist/resources/models/v1/models.js +44 -0
  118. package/dist/resources/models/v1/models.js.map +1 -0
  119. package/dist/resources/models/v1/translation.d.ts +133 -0
  120. package/dist/resources/models/v1/translation.js +298 -0
  121. package/dist/resources/models/v1/translation.js.map +1 -0
  122. package/dist/resources/roles.d.ts +1 -1
  123. package/dist/resources/roles.js +54 -7
  124. package/dist/resources/roles.js.map +1 -1
  125. package/dist/resources/search.d.ts +1 -1
  126. package/dist/resources/search.js +7 -3
  127. package/dist/resources/search.js.map +1 -1
  128. package/dist/security/jsLoader.js +84 -33
  129. package/dist/security/jsLoader.js.map +1 -1
  130. package/dist/security/role.js +4 -0
  131. package/dist/security/role.js.map +1 -1
  132. package/dist/security/superUserGuard.d.ts +7 -0
  133. package/dist/security/superUserGuard.js +23 -0
  134. package/dist/security/superUserGuard.js.map +1 -0
  135. package/dist/security/tokenAuthentication.d.ts +0 -1
  136. package/dist/security/tokenAuthentication.js +6 -2
  137. package/dist/security/tokenAuthentication.js.map +1 -1
  138. package/dist/security/user.d.ts +6 -1
  139. package/dist/security/user.js +23 -1
  140. package/dist/security/user.js.map +1 -1
  141. package/dist/server/http.d.ts +23 -2
  142. package/dist/server/http.js +99 -12
  143. package/dist/server/http.js.map +1 -1
  144. package/dist/server/operationsServer.d.ts +0 -2
  145. package/dist/server/operationsServer.js.map +1 -1
  146. package/dist/server/serverHelpers/multipartParser.js +9 -0
  147. package/dist/server/serverHelpers/multipartParser.js.map +1 -1
  148. package/dist/server/serverHelpers/operationAuthorizationState.d.ts +2 -0
  149. package/dist/server/serverHelpers/operationAuthorizationState.js +13 -0
  150. package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -0
  151. package/dist/server/serverHelpers/registeredOperations.d.ts +3 -2
  152. package/dist/server/serverHelpers/registeredOperations.js +14 -13
  153. package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
  154. package/dist/server/serverHelpers/serverHandlers.js +19 -3
  155. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  156. package/dist/server/serverHelpers/serverUtilities.d.ts +1 -1
  157. package/dist/server/serverHelpers/serverUtilities.js +10 -7
  158. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  159. package/dist/server/static.js +57 -18
  160. package/dist/server/static.js.map +1 -1
  161. package/dist/server/storageReclamation.d.ts +17 -0
  162. package/dist/server/storageReclamation.js +90 -6
  163. package/dist/server/storageReclamation.js.map +1 -1
  164. package/dist/server/threads/manageThreads.js +8 -0
  165. package/dist/server/threads/manageThreads.js.map +1 -1
  166. package/dist/server/threads/socketRouter.js +20 -0
  167. package/dist/server/threads/socketRouter.js.map +1 -1
  168. package/dist/server/threads/threadServer.js +12 -0
  169. package/dist/server/threads/threadServer.js.map +1 -1
  170. package/dist/sqlEngine/diff/differential.js +7 -3
  171. package/dist/sqlEngine/diff/differential.js.map +1 -1
  172. package/dist/sqlEngine/parser/normalizer.js +37 -9
  173. package/dist/sqlEngine/parser/normalizer.js.map +1 -1
  174. package/dist/sqlTranslator/index.js +6 -1
  175. package/dist/sqlTranslator/index.js.map +1 -1
  176. package/dist/upgrade/upgradePrompt.d.ts +2 -2
  177. package/dist/upgrade/upgradePrompt.js +22 -3
  178. package/dist/upgrade/upgradePrompt.js.map +1 -1
  179. package/dist/utility/environment/environmentManager.d.ts +11 -0
  180. package/dist/utility/environment/environmentManager.js +154 -0
  181. package/dist/utility/environment/environmentManager.js.map +1 -1
  182. package/dist/utility/errors/commonErrors.d.ts +1 -0
  183. package/dist/utility/errors/commonErrors.js +1 -0
  184. package/dist/utility/errors/commonErrors.js.map +1 -1
  185. package/dist/utility/hdbTerms.d.ts +2 -0
  186. package/dist/utility/hdbTerms.js +2 -0
  187. package/dist/utility/hdbTerms.js.map +1 -1
  188. package/dist/utility/install/installer.js +32 -0
  189. package/dist/utility/install/installer.js.map +1 -1
  190. package/dist/utility/lmdb/environmentUtility.js +2 -1
  191. package/dist/utility/lmdb/environmentUtility.js.map +1 -1
  192. package/dist/utility/logging/harper_logger.d.ts +7 -0
  193. package/dist/utility/logging/harper_logger.js +57 -24
  194. package/dist/utility/logging/harper_logger.js.map +1 -1
  195. package/npm-shrinkwrap.json +208 -198
  196. package/package.json +10 -8
  197. package/resources/DESIGN.md +1 -0
  198. package/resources/DatabaseTransaction.ts +313 -102
  199. package/resources/ResourceInterface.ts +8 -2
  200. package/resources/Resources.ts +22 -4
  201. package/resources/Table.ts +398 -259
  202. package/resources/analytics/write.ts +22 -20
  203. package/resources/auditStore.ts +32 -1
  204. package/resources/blob.ts +15 -8
  205. package/resources/databases.ts +123 -12
  206. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +119 -45
  207. package/resources/jsResource.ts +5 -62
  208. package/resources/models/Models.ts +14 -1
  209. package/resources/models/backendRegistry.ts +10 -0
  210. package/resources/models/openaiStream.ts +131 -19
  211. package/resources/models/v1/chatCompletions.ts +128 -0
  212. package/resources/models/v1/embeddings.ts +70 -0
  213. package/resources/models/v1/errors.ts +141 -0
  214. package/resources/models/v1/index.ts +72 -0
  215. package/resources/models/v1/models.ts +53 -0
  216. package/resources/models/v1/translation.ts +362 -0
  217. package/resources/roles.ts +67 -7
  218. package/resources/search.ts +8 -3
  219. package/security/jsLoader.ts +84 -30
  220. package/security/role.ts +7 -0
  221. package/security/superUserGuard.ts +20 -0
  222. package/security/tokenAuthentication.ts +6 -3
  223. package/security/user.ts +26 -1
  224. package/server/DESIGN.md +45 -34
  225. package/server/http.ts +100 -13
  226. package/server/operationsServer.ts +0 -2
  227. package/server/serverHelpers/multipartParser.ts +9 -0
  228. package/server/serverHelpers/operationAuthorizationState.ts +11 -0
  229. package/server/serverHelpers/registeredOperations.ts +19 -15
  230. package/server/serverHelpers/serverHandlers.js +20 -3
  231. package/server/serverHelpers/serverUtilities.ts +10 -7
  232. package/server/static.ts +75 -20
  233. package/server/storageReclamation.ts +104 -8
  234. package/server/threads/manageThreads.js +8 -0
  235. package/server/threads/socketRouter.ts +20 -0
  236. package/server/threads/threadServer.js +11 -0
  237. package/sqlTranslator/index.ts +6 -1
  238. package/static/defaultConfig.yaml +2 -0
  239. package/studio/web/assets/{Chat-DoVWScmq.js → Chat-BMUjPklt.js} +5 -5
  240. package/studio/web/assets/{Chat-DoVWScmq.js.map → Chat-BMUjPklt.js.map} +1 -1
  241. package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js → FloatingChat-Cbghuxe5.js} +5 -5
  242. package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js.map → FloatingChat-Cbghuxe5.js.map} +1 -1
  243. package/studio/web/assets/{apiToken-BUI_04o7.js → apiToken-CkgTQAqc.js} +2 -2
  244. package/studio/web/assets/{apiToken-BUI_04o7.js.map → apiToken-CkgTQAqc.js.map} +1 -1
  245. package/studio/web/assets/{applications-D03NA7wW.js → applications-WvF4NOTN.js} +13 -13
  246. package/studio/web/assets/applications-WvF4NOTN.js.map +1 -0
  247. package/studio/web/assets/chevron-right-anDJCGlp.js +2 -0
  248. package/studio/web/assets/chevron-right-anDJCGlp.js.map +1 -0
  249. package/studio/web/assets/index-CDeqVx71.css +1 -0
  250. package/studio/web/assets/index-Sevt3MVx.js +819 -0
  251. package/studio/web/assets/index-Sevt3MVx.js.map +1 -0
  252. package/studio/web/assets/index.lazy-Dg5YYPGg.js +14 -0
  253. package/studio/web/assets/{index.lazy-Dx3MpyDC.js.map → index.lazy-Dg5YYPGg.js.map} +1 -1
  254. package/studio/web/assets/{jsonMode-Cjj7dtlr.js → jsonMode-CBSEleE7.js} +2 -2
  255. package/studio/web/assets/{jsonMode-Cjj7dtlr.js.map → jsonMode-CBSEleE7.js.map} +1 -1
  256. package/studio/web/assets/languageServices-gxedeeTo.js +2 -0
  257. package/studio/web/assets/languageServices-gxedeeTo.js.map +1 -0
  258. package/studio/web/assets/{notifications-0edoFTsb.js → notifications-Ap84YyQp.js} +2 -2
  259. package/studio/web/assets/{notifications-0edoFTsb.js.map → notifications-Ap84YyQp.js.map} +1 -1
  260. package/studio/web/assets/notifications-vehqyOLM.js +2 -0
  261. package/studio/web/assets/{notifications-CwKhipK7.js.map → notifications-vehqyOLM.js.map} +1 -1
  262. package/studio/web/assets/{pollUnlessForbidden-HHdQZW1N.js → pollUnlessForbidden-BhzefVRn.js} +2 -2
  263. package/studio/web/assets/pollUnlessForbidden-BhzefVRn.js.map +1 -0
  264. package/studio/web/assets/{profile-DUfEPQtx.js → profile-DzDpRLHY.js} +2 -2
  265. package/studio/web/assets/{profile-DUfEPQtx.js.map → profile-DzDpRLHY.js.map} +1 -1
  266. package/studio/web/assets/queryClient-CgtkoiCY.js +2 -0
  267. package/studio/web/assets/queryClient-CgtkoiCY.js.map +1 -0
  268. package/studio/web/assets/regions-DpJ8s7iN.js +2 -0
  269. package/studio/web/assets/regions-DpJ8s7iN.js.map +1 -0
  270. package/studio/web/assets/register-BDy01-q3.js +3 -0
  271. package/studio/web/assets/register-BDy01-q3.js.map +1 -0
  272. package/studio/web/assets/register-CQHRwNP4.js +3 -0
  273. package/studio/web/assets/register-CQHRwNP4.js.map +1 -0
  274. package/studio/web/assets/{setComponentFile-DMPo4UjC.js → setComponentFile-D0aPcI3W.js} +2 -2
  275. package/studio/web/assets/{setComponentFile-DMPo4UjC.js.map → setComponentFile-D0aPcI3W.js.map} +1 -1
  276. package/studio/web/assets/setup-I15FAF9H.js +3 -0
  277. package/studio/web/assets/{setup-B56Oz1_u.js.map → setup-I15FAF9H.js.map} +1 -1
  278. package/studio/web/assets/status-BF1eJshJ.js +62 -0
  279. package/studio/web/assets/status-BF1eJshJ.js.map +1 -0
  280. package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js → swagger-ui-react-DwSPXXhl.js} +2 -2
  281. package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js.map → swagger-ui-react-DwSPXXhl.js.map} +1 -1
  282. package/studio/web/assets/{textarea-DhLMZ3PA.js → table-DpOjNQHt.js} +2 -10
  283. package/studio/web/assets/table-DpOjNQHt.js.map +1 -0
  284. package/studio/web/assets/{tsMode-CrHCRjTK.js → tsMode-Bu51A-VG.js} +2 -2
  285. package/studio/web/assets/{tsMode-CrHCRjTK.js.map → tsMode-Bu51A-VG.js.map} +1 -1
  286. package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js → useEntityRestURL-DrV1zMrN.js} +2 -2
  287. package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js.map → useEntityRestURL-DrV1zMrN.js.map} +1 -1
  288. package/studio/web/index.html +6 -7
  289. package/upgrade/upgradePrompt.ts +22 -3
  290. package/utility/environment/environmentManager.ts +152 -0
  291. package/utility/errors/commonErrors.ts +2 -0
  292. package/utility/hdbTerms.ts +2 -0
  293. package/utility/install/installer.ts +37 -0
  294. package/utility/lmdb/environmentUtility.ts +2 -1
  295. package/utility/logging/harper_logger.ts +57 -26
  296. package/studio/web/assets/applications-D03NA7wW.js.map +0 -1
  297. package/studio/web/assets/index-Bh_CNAHr.js +0 -809
  298. package/studio/web/assets/index-Bh_CNAHr.js.map +0 -1
  299. package/studio/web/assets/index-C8Mv9kHV.css +0 -1
  300. package/studio/web/assets/index.lazy-Dx3MpyDC.js +0 -14
  301. package/studio/web/assets/notifications-CwKhipK7.js +0 -2
  302. package/studio/web/assets/pollUnlessForbidden-HHdQZW1N.js.map +0 -1
  303. package/studio/web/assets/queryClient-CbA8wM7J.js +0 -2
  304. package/studio/web/assets/queryClient-CbA8wM7J.js.map +0 -1
  305. package/studio/web/assets/setup-B56Oz1_u.js +0 -3
  306. package/studio/web/assets/status-BAod7p3o.js +0 -62
  307. package/studio/web/assets/status-BAod7p3o.js.map +0 -1
  308. package/studio/web/assets/textarea-DhLMZ3PA.js.map +0 -1
@@ -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 && process.argv[2] && !process.argv[2].startsWith('-')) {
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 HELP;
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:
@@ -1 +1 @@
1
- {"version":3,"file":"harper.js","sourceRoot":"","sources":["../../bin/harper.ts"],"names":[],"mappings":"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"}
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;
@@ -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<void>;
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;