@harperfast/harper 5.2.9 → 5.3.0-alpha.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.
Files changed (668) hide show
  1. package/agent/mcpTools.ts +1 -1
  2. package/agent/session.ts +25 -14
  3. package/bin/cliOperations.ts +46 -9
  4. package/bin/copyDb.ts +282 -59
  5. package/bin/deploySetup.ts +16 -5
  6. package/bin/harper.ts +1 -1
  7. package/bin/help.ts +4 -1
  8. package/bin/lite.ts +4 -1
  9. package/bin/restart.ts +59 -3
  10. package/bin/run.ts +6 -11
  11. package/bin/upgrade.js +7 -3
  12. package/bin/workloadIdentity.ts +119 -0
  13. package/components/Application.ts +2414 -242
  14. package/components/ApplicationScope.ts +8 -0
  15. package/components/EntryHandler.ts +59 -39
  16. package/components/OptionsWatcher.ts +150 -74
  17. package/components/RuntimeModuleTracker.ts +38 -7
  18. package/components/Scope.ts +37 -15
  19. package/components/awaitRestart.ts +84 -0
  20. package/components/componentLoader.ts +340 -30
  21. package/components/componentPreparationLock.ts +16 -5
  22. package/components/mcp/adapters/harperHttp.ts +4 -0
  23. package/components/mcp/listChanged.ts +4 -0
  24. package/components/mcp/toolRegistry.ts +2 -0
  25. package/components/mcp/tools/operations.ts +9 -0
  26. package/components/mcp/tools/schemas/operationDescriptions.ts +2 -2
  27. package/components/operations.js +270 -78
  28. package/components/operationsValidation.js +49 -1
  29. package/components/status/ComponentStatusRegistry.ts +59 -0
  30. package/config/RootConfigWatcher.ts +80 -34
  31. package/config/configUtils.ts +291 -34
  32. package/config/harperConfigEnvVars.ts +170 -27
  33. package/config-root.schema.json +29 -0
  34. package/dataLayer/blobBackup.ts +160 -50
  35. package/dataLayer/delete.ts +6 -1
  36. package/dataLayer/harperBridge/ResourceBridge.ts +52 -8
  37. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
  38. package/dataLayer/hdbInfoController.ts +34 -1
  39. package/dataLayer/insert.ts +44 -1
  40. package/dataLayer/rocksdbBackup.ts +53 -10
  41. package/dataLayer/schema.ts +11 -1
  42. package/dataLayer/schemaDescribe.ts +8 -1
  43. package/dist/agent/mcpTools.js +1 -1
  44. package/dist/agent/mcpTools.js.map +1 -1
  45. package/dist/agent/session.d.ts +22 -0
  46. package/dist/agent/session.js +26 -15
  47. package/dist/agent/session.js.map +1 -1
  48. package/dist/bin/cliOperations.js +48 -9
  49. package/dist/bin/cliOperations.js.map +1 -1
  50. package/dist/bin/copyDb.d.ts +12 -1
  51. package/dist/bin/copyDb.js +248 -60
  52. package/dist/bin/copyDb.js.map +1 -1
  53. package/dist/bin/deploySetup.d.ts +2 -0
  54. package/dist/bin/deploySetup.js +11 -3
  55. package/dist/bin/deploySetup.js.map +1 -1
  56. package/dist/bin/harper.js +1 -1
  57. package/dist/bin/harper.js.map +1 -1
  58. package/dist/bin/help.js +4 -1
  59. package/dist/bin/help.js.map +1 -1
  60. package/dist/bin/lite.js +4 -1
  61. package/dist/bin/lite.js.map +1 -1
  62. package/dist/bin/restart.js +54 -5
  63. package/dist/bin/restart.js.map +1 -1
  64. package/dist/bin/run.js +4 -10
  65. package/dist/bin/run.js.map +1 -1
  66. package/dist/bin/upgrade.js +4 -3
  67. package/dist/bin/upgrade.js.map +1 -1
  68. package/dist/bin/workloadIdentity.d.ts +18 -0
  69. package/dist/bin/workloadIdentity.js +100 -0
  70. package/dist/bin/workloadIdentity.js.map +1 -0
  71. package/dist/components/Application.d.ts +139 -16
  72. package/dist/components/Application.js +2215 -267
  73. package/dist/components/Application.js.map +1 -1
  74. package/dist/components/ApplicationScope.d.ts +8 -0
  75. package/dist/components/ApplicationScope.js +7 -0
  76. package/dist/components/ApplicationScope.js.map +1 -1
  77. package/dist/components/EntryHandler.js +26 -10
  78. package/dist/components/EntryHandler.js.map +1 -1
  79. package/dist/components/OptionsWatcher.d.ts +1 -0
  80. package/dist/components/OptionsWatcher.js +141 -74
  81. package/dist/components/OptionsWatcher.js.map +1 -1
  82. package/dist/components/RuntimeModuleTracker.js +40 -6
  83. package/dist/components/RuntimeModuleTracker.js.map +1 -1
  84. package/dist/components/Scope.js +38 -13
  85. package/dist/components/Scope.js.map +1 -1
  86. package/dist/components/awaitRestart.d.ts +33 -0
  87. package/dist/components/awaitRestart.js +61 -0
  88. package/dist/components/awaitRestart.js.map +1 -0
  89. package/dist/components/componentLoader.d.ts +38 -1
  90. package/dist/components/componentLoader.js +279 -22
  91. package/dist/components/componentLoader.js.map +1 -1
  92. package/dist/components/componentPreparationLock.d.ts +5 -0
  93. package/dist/components/componentPreparationLock.js +14 -6
  94. package/dist/components/componentPreparationLock.js.map +1 -1
  95. package/dist/components/mcp/adapters/harperHttp.js +4 -0
  96. package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
  97. package/dist/components/mcp/listChanged.js +5 -0
  98. package/dist/components/mcp/listChanged.js.map +1 -1
  99. package/dist/components/mcp/toolRegistry.d.ts +1 -0
  100. package/dist/components/mcp/toolRegistry.js.map +1 -1
  101. package/dist/components/mcp/tools/operations.d.ts +5 -0
  102. package/dist/components/mcp/tools/operations.js +9 -0
  103. package/dist/components/mcp/tools/operations.js.map +1 -1
  104. package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -2
  105. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  106. package/dist/components/operations.js +231 -77
  107. package/dist/components/operations.js.map +1 -1
  108. package/dist/components/operationsValidation.js +49 -1
  109. package/dist/components/operationsValidation.js.map +1 -1
  110. package/dist/components/status/ComponentStatusRegistry.d.ts +0 -4
  111. package/dist/components/status/ComponentStatusRegistry.js +63 -0
  112. package/dist/components/status/ComponentStatusRegistry.js.map +1 -1
  113. package/dist/config/RootConfigWatcher.d.ts +7 -1
  114. package/dist/config/RootConfigWatcher.js +64 -27
  115. package/dist/config/RootConfigWatcher.js.map +1 -1
  116. package/dist/config/configUtils.d.ts +9 -1
  117. package/dist/config/configUtils.js +254 -33
  118. package/dist/config/configUtils.js.map +1 -1
  119. package/dist/config/harperConfigEnvVars.d.ts +16 -0
  120. package/dist/config/harperConfigEnvVars.js +162 -25
  121. package/dist/config/harperConfigEnvVars.js.map +1 -1
  122. package/dist/dataLayer/blobBackup.d.ts +49 -20
  123. package/dist/dataLayer/blobBackup.js +139 -50
  124. package/dist/dataLayer/blobBackup.js.map +1 -1
  125. package/dist/dataLayer/delete.js +1 -1
  126. package/dist/dataLayer/delete.js.map +1 -1
  127. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +14 -1
  128. package/dist/dataLayer/harperBridge/ResourceBridge.js +51 -10
  129. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  130. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +3 -1
  131. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
  132. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -1
  133. package/dist/dataLayer/hdbInfoController.d.ts +10 -0
  134. package/dist/dataLayer/hdbInfoController.js +30 -1
  135. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  136. package/dist/dataLayer/insert.d.ts +9 -1
  137. package/dist/dataLayer/insert.js +30 -0
  138. package/dist/dataLayer/insert.js.map +1 -1
  139. package/dist/dataLayer/rocksdbBackup.d.ts +2 -2
  140. package/dist/dataLayer/rocksdbBackup.js +45 -8
  141. package/dist/dataLayer/rocksdbBackup.js.map +1 -1
  142. package/dist/dataLayer/schema.js +8 -0
  143. package/dist/dataLayer/schema.js.map +1 -1
  144. package/dist/dataLayer/schemaDescribe.js +8 -1
  145. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  146. package/dist/index.d.ts +1 -1
  147. package/dist/index.js.map +1 -1
  148. package/dist/json/systemSchema.json +52 -0
  149. package/dist/resources/DatabaseTransaction.d.ts +55 -0
  150. package/dist/resources/DatabaseTransaction.js +459 -45
  151. package/dist/resources/DatabaseTransaction.js.map +1 -1
  152. package/dist/resources/LMDBTransaction.js +22 -4
  153. package/dist/resources/LMDBTransaction.js.map +1 -1
  154. package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
  155. package/dist/resources/PrimaryRocksDatabase.js +29 -0
  156. package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
  157. package/dist/resources/RecordEncoder.d.ts +20 -0
  158. package/dist/resources/RecordEncoder.js +94 -9
  159. package/dist/resources/RecordEncoder.js.map +1 -1
  160. package/dist/resources/RequestTarget.d.ts +2 -0
  161. package/dist/resources/RequestTarget.js.map +1 -1
  162. package/dist/resources/Resource.js +20 -11
  163. package/dist/resources/Resource.js.map +1 -1
  164. package/dist/resources/ResourceInterface.d.ts +20 -1
  165. package/dist/resources/ResourceInterface.js.map +1 -1
  166. package/dist/resources/RocksIndexStore.d.ts +6 -1
  167. package/dist/resources/RocksIndexStore.js +24 -9
  168. package/dist/resources/RocksIndexStore.js.map +1 -1
  169. package/dist/resources/RocksTransactionLogStore.d.ts +14 -1
  170. package/dist/resources/RocksTransactionLogStore.js +57 -17
  171. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  172. package/dist/resources/Table.d.ts +112 -8
  173. package/dist/resources/Table.js +1073 -191
  174. package/dist/resources/Table.js.map +1 -1
  175. package/dist/resources/auditStore.d.ts +11 -2
  176. package/dist/resources/auditStore.js +325 -71
  177. package/dist/resources/auditStore.js.map +1 -1
  178. package/dist/resources/blob.d.ts +129 -9
  179. package/dist/resources/blob.js +992 -114
  180. package/dist/resources/blob.js.map +1 -1
  181. package/dist/resources/branchDatabase.d.ts +48 -0
  182. package/dist/resources/branchDatabase.js +892 -0
  183. package/dist/resources/branchDatabase.js.map +1 -0
  184. package/dist/resources/crdt.js +50 -12
  185. package/dist/resources/crdt.js.map +1 -1
  186. package/dist/resources/databases.d.ts +150 -0
  187. package/dist/resources/databases.js +1200 -239
  188. package/dist/resources/databases.js.map +1 -1
  189. package/dist/resources/defineTable.d.ts +10 -2
  190. package/dist/resources/defineTable.js +9 -1
  191. package/dist/resources/defineTable.js.map +1 -1
  192. package/dist/resources/graphql.d.ts +1 -1
  193. package/dist/resources/graphql.js +50 -15
  194. package/dist/resources/graphql.js.map +1 -1
  195. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +1 -0
  196. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +6 -2
  197. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  198. package/dist/resources/longLivedTransactions.d.ts +71 -0
  199. package/dist/resources/longLivedTransactions.js +358 -0
  200. package/dist/resources/longLivedTransactions.js.map +1 -0
  201. package/dist/resources/models/backendRegistry.d.ts +26 -0
  202. package/dist/resources/models/backendRegistry.js +60 -2
  203. package/dist/resources/models/backendRegistry.js.map +1 -1
  204. package/dist/resources/models/bootstrap.d.ts +33 -1
  205. package/dist/resources/models/bootstrap.js +416 -31
  206. package/dist/resources/models/bootstrap.js.map +1 -1
  207. package/dist/resources/recordLock.d.ts +80 -0
  208. package/dist/resources/recordLock.js +184 -0
  209. package/dist/resources/recordLock.js.map +1 -0
  210. package/dist/resources/replayLogs.d.ts +14 -1
  211. package/dist/resources/replayLogs.js +152 -24
  212. package/dist/resources/replayLogs.js.map +1 -1
  213. package/dist/resources/replayLogsGuards.d.ts +94 -7
  214. package/dist/resources/replayLogsGuards.js +111 -7
  215. package/dist/resources/replayLogsGuards.js.map +1 -1
  216. package/dist/resources/search.js +158 -6
  217. package/dist/resources/search.js.map +1 -1
  218. package/dist/resources/transactionBroadcast.d.ts +1 -1
  219. package/dist/resources/transactionBroadcast.js +2 -2
  220. package/dist/resources/transactionBroadcast.js.map +1 -1
  221. package/dist/security/auth.js +61 -30
  222. package/dist/security/auth.js.map +1 -1
  223. package/dist/security/authn/oidc/claims.d.ts +22 -0
  224. package/dist/security/authn/oidc/claims.js +71 -0
  225. package/dist/security/authn/oidc/claims.js.map +1 -0
  226. package/dist/security/authn/oidc/identityToken.d.ts +27 -0
  227. package/dist/security/authn/oidc/identityToken.js +111 -0
  228. package/dist/security/authn/oidc/identityToken.js.map +1 -0
  229. package/dist/security/authn/oidc/jwks.d.ts +25 -0
  230. package/dist/security/authn/oidc/jwks.js +261 -0
  231. package/dist/security/authn/oidc/jwks.js.map +1 -0
  232. package/dist/security/authn/oidc/providers/generic.d.ts +13 -0
  233. package/dist/security/authn/oidc/providers/generic.js +34 -0
  234. package/dist/security/authn/oidc/providers/generic.js.map +1 -0
  235. package/dist/security/authn/oidc/providers/githubActions.d.ts +11 -0
  236. package/dist/security/authn/oidc/providers/githubActions.js +129 -0
  237. package/dist/security/authn/oidc/providers/githubActions.js.map +1 -0
  238. package/dist/security/authn/oidc/providers/index.d.ts +37 -0
  239. package/dist/security/authn/oidc/providers/index.js +24 -0
  240. package/dist/security/authn/oidc/providers/index.js.map +1 -0
  241. package/dist/security/authn/oidc/tokenExchange.d.ts +12 -0
  242. package/dist/security/authn/oidc/tokenExchange.js +306 -0
  243. package/dist/security/authn/oidc/tokenExchange.js.map +1 -0
  244. package/dist/security/authn/oidc/trustPolicyOperations.d.ts +49 -0
  245. package/dist/security/authn/oidc/trustPolicyOperations.js +358 -0
  246. package/dist/security/authn/oidc/trustPolicyOperations.js.map +1 -0
  247. package/dist/security/authn/oidc/types.d.ts +38 -0
  248. package/dist/security/authn/oidc/types.js +6 -0
  249. package/dist/security/authn/oidc/types.js.map +1 -0
  250. package/dist/security/certificateVerification/index.js +40 -11
  251. package/dist/security/certificateVerification/index.js.map +1 -1
  252. package/dist/security/certificateVerification/trustedIssuers.d.ts +24 -0
  253. package/dist/security/certificateVerification/trustedIssuers.js +79 -0
  254. package/dist/security/certificateVerification/trustedIssuers.js.map +1 -0
  255. package/dist/security/certificateVerification/types.d.ts +1 -0
  256. package/dist/security/credentialProvenance.d.ts +35 -0
  257. package/dist/security/credentialProvenance.js +51 -0
  258. package/dist/security/credentialProvenance.js.map +1 -0
  259. package/dist/security/credentialRejection.d.ts +4 -0
  260. package/dist/security/credentialRejection.js +24 -0
  261. package/dist/security/credentialRejection.js.map +1 -0
  262. package/dist/security/deferredAuthentication.d.ts +36 -0
  263. package/dist/security/deferredAuthentication.js +70 -0
  264. package/dist/security/deferredAuthentication.js.map +1 -0
  265. package/dist/security/impersonation.d.ts +21 -0
  266. package/dist/security/impersonation.js +108 -9
  267. package/dist/security/impersonation.js.map +1 -1
  268. package/dist/security/jsLoader.d.ts +6 -0
  269. package/dist/security/jsLoader.js +75 -15
  270. package/dist/security/jsLoader.js.map +1 -1
  271. package/dist/security/keys.js +301 -71
  272. package/dist/security/keys.js.map +1 -1
  273. package/dist/security/operationScope.d.ts +21 -0
  274. package/dist/security/operationScope.js +36 -0
  275. package/dist/security/operationScope.js.map +1 -0
  276. package/dist/security/permissionsTranslator.js +21 -0
  277. package/dist/security/permissionsTranslator.js.map +1 -1
  278. package/dist/security/tokenAuthentication.d.ts +19 -1
  279. package/dist/security/tokenAuthentication.js +191 -10
  280. package/dist/security/tokenAuthentication.js.map +1 -1
  281. package/dist/security/user.js +4 -3
  282. package/dist/security/user.js.map +1 -1
  283. package/dist/server/DurableSubscriptionsSession.d.ts +2 -2
  284. package/dist/server/DurableSubscriptionsSession.js +67 -10
  285. package/dist/server/DurableSubscriptionsSession.js.map +1 -1
  286. package/dist/server/REST.js +73 -0
  287. package/dist/server/REST.js.map +1 -1
  288. package/dist/server/graphqlQuerying.js +4 -0
  289. package/dist/server/graphqlQuerying.js.map +1 -1
  290. package/dist/server/http.d.ts +11 -0
  291. package/dist/server/http.js +88 -15
  292. package/dist/server/http.js.map +1 -1
  293. package/dist/server/itc/serverHandlers.js +8 -1
  294. package/dist/server/itc/serverHandlers.js.map +1 -1
  295. package/dist/server/jobs/jobProcess.js +6 -2
  296. package/dist/server/jobs/jobProcess.js.map +1 -1
  297. package/dist/server/jobs/jobs.js +4 -1
  298. package/dist/server/jobs/jobs.js.map +1 -1
  299. package/dist/server/liveSubscriptionAuth.d.ts +26 -4
  300. package/dist/server/liveSubscriptionAuth.js +105 -39
  301. package/dist/server/liveSubscriptionAuth.js.map +1 -1
  302. package/dist/server/loadRootComponents.js +49 -10
  303. package/dist/server/loadRootComponents.js.map +1 -1
  304. package/dist/server/mqtt.d.ts +2 -0
  305. package/dist/server/mqtt.js +165 -30
  306. package/dist/server/mqtt.js.map +1 -1
  307. package/dist/server/nodeName.d.ts +2 -0
  308. package/dist/server/nodeName.js +107 -23
  309. package/dist/server/nodeName.js.map +1 -1
  310. package/dist/server/serverHelpers/Headers.d.ts +25 -0
  311. package/dist/server/serverHelpers/Headers.js +139 -1
  312. package/dist/server/serverHelpers/Headers.js.map +1 -1
  313. package/dist/server/serverHelpers/contentTypes.d.ts +9 -0
  314. package/dist/server/serverHelpers/contentTypes.js +32 -25
  315. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  316. package/dist/server/serverHelpers/deployValidationState.d.ts +3 -0
  317. package/dist/server/serverHelpers/deployValidationState.js +9 -19
  318. package/dist/server/serverHelpers/deployValidationState.js.map +1 -1
  319. package/dist/server/serverHelpers/operationAuthorizationState.d.ts +12 -0
  320. package/dist/server/serverHelpers/operationAuthorizationState.js +24 -2
  321. package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -1
  322. package/dist/server/serverHelpers/registeredOperations.d.ts +5 -4
  323. package/dist/server/serverHelpers/registeredOperations.js +74 -21
  324. package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
  325. package/dist/server/serverHelpers/requestSanitization.d.ts +11 -0
  326. package/dist/server/serverHelpers/requestSanitization.js +20 -0
  327. package/dist/server/serverHelpers/requestSanitization.js.map +1 -0
  328. package/dist/server/serverHelpers/serverHandlers.js +6 -3
  329. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  330. package/dist/server/serverHelpers/serverUtilities.d.ts +18 -0
  331. package/dist/server/serverHelpers/serverUtilities.js +90 -20
  332. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  333. package/dist/server/serverHelpers/sharedMessageEncoding.d.ts +67 -0
  334. package/dist/server/serverHelpers/sharedMessageEncoding.js +280 -0
  335. package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -0
  336. package/dist/server/serverHelpers/uwsServer.js +19 -1
  337. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  338. package/dist/server/static.js +24 -28
  339. package/dist/server/static.js.map +1 -1
  340. package/dist/server/storageReclamation.d.ts +12 -0
  341. package/dist/server/storageReclamation.js +26 -0
  342. package/dist/server/storageReclamation.js.map +1 -1
  343. package/dist/server/threads/itc.d.ts +7 -2
  344. package/dist/server/threads/itc.js +5 -1
  345. package/dist/server/threads/itc.js.map +1 -1
  346. package/dist/server/threads/manageThreads.d.ts +26 -3
  347. package/dist/server/threads/manageThreads.js +517 -65
  348. package/dist/server/threads/manageThreads.js.map +1 -1
  349. package/dist/server/threads/socketRouter.js +89 -26
  350. package/dist/server/threads/socketRouter.js.map +1 -1
  351. package/dist/server/threads/threadHeapMemory.d.ts +2 -0
  352. package/dist/server/threads/threadHeapMemory.js +31 -0
  353. package/dist/server/threads/threadHeapMemory.js.map +1 -0
  354. package/dist/server/threads/threadServer.js +46 -15
  355. package/dist/server/threads/threadServer.js.map +1 -1
  356. package/dist/sqlEngine/config.d.ts +1 -3
  357. package/dist/sqlEngine/config.js +19 -16
  358. package/dist/sqlEngine/config.js.map +1 -1
  359. package/dist/sqlTranslator/index.d.ts +1 -1
  360. package/dist/sqlTranslator/index.js +30 -7
  361. package/dist/sqlTranslator/index.js.map +1 -1
  362. package/dist/upgrade/directives/5-3-0.d.ts +7 -0
  363. package/dist/upgrade/directives/5-3-0.js +148 -0
  364. package/dist/upgrade/directives/5-3-0.js.map +1 -0
  365. package/dist/upgrade/directives/directivesController.js +2 -1
  366. package/dist/upgrade/directives/directivesController.js.map +1 -1
  367. package/dist/utility/OperationFunctionCaller.js +2 -1
  368. package/dist/utility/OperationFunctionCaller.js.map +1 -1
  369. package/dist/utility/common_utils.d.ts +16 -0
  370. package/dist/utility/common_utils.js +32 -6
  371. package/dist/utility/common_utils.js.map +1 -1
  372. package/dist/utility/componentNames.d.ts +8 -0
  373. package/dist/utility/componentNames.js +12 -1
  374. package/dist/utility/componentNames.js.map +1 -1
  375. package/dist/utility/environment/environmentManager.js +3 -6
  376. package/dist/utility/environment/environmentManager.js.map +1 -1
  377. package/dist/utility/environment/systemInformation.d.ts +1 -0
  378. package/dist/utility/environment/systemInformation.js +1 -0
  379. package/dist/utility/environment/systemInformation.js.map +1 -1
  380. package/dist/utility/errors/commonErrors.d.ts +2 -0
  381. package/dist/utility/errors/commonErrors.js +2 -0
  382. package/dist/utility/errors/commonErrors.js.map +1 -1
  383. package/dist/utility/errors/hdbError.d.ts +17 -0
  384. package/dist/utility/errors/hdbError.js +30 -1
  385. package/dist/utility/errors/hdbError.js.map +1 -1
  386. package/dist/utility/globalSchema.d.ts +18 -0
  387. package/dist/utility/hdbTerms.d.ts +16 -0
  388. package/dist/utility/hdbTerms.js +18 -2
  389. package/dist/utility/hdbTerms.js.map +1 -1
  390. package/dist/utility/logging/harper_logger.d.ts +2 -0
  391. package/dist/utility/logging/harper_logger.js +91 -14
  392. package/dist/utility/logging/harper_logger.js.map +1 -1
  393. package/dist/utility/logging/logRotator.js +76 -49
  394. package/dist/utility/logging/logRotator.js.map +1 -1
  395. package/dist/utility/nodeIdentity.d.ts +9 -0
  396. package/dist/utility/nodeIdentity.js +58 -0
  397. package/dist/utility/nodeIdentity.js.map +1 -0
  398. package/dist/utility/npmUtilities.js +9 -7
  399. package/dist/utility/npmUtilities.js.map +1 -1
  400. package/dist/utility/operationPermissions.d.ts +3 -1
  401. package/dist/utility/operationPermissions.js +16 -1
  402. package/dist/utility/operationPermissions.js.map +1 -1
  403. package/dist/utility/operation_authorization.d.ts +10 -7
  404. package/dist/utility/operation_authorization.js +212 -41
  405. package/dist/utility/operation_authorization.js.map +1 -1
  406. package/dist/utility/watchPath.d.ts +29 -0
  407. package/dist/utility/watchPath.js +68 -0
  408. package/dist/utility/watchPath.js.map +1 -0
  409. package/dist/utility/watcherFallback.d.ts +86 -0
  410. package/dist/utility/watcherFallback.js +278 -1
  411. package/dist/utility/watcherFallback.js.map +1 -1
  412. package/dist/validation/configValidator.d.ts +12 -0
  413. package/dist/validation/configValidator.js +199 -72
  414. package/dist/validation/configValidator.js.map +1 -1
  415. package/dist/validation/installValidator.js +12 -0
  416. package/dist/validation/installValidator.js.map +1 -1
  417. package/dist/validation/validationWrapper.d.ts +11 -0
  418. package/dist/validation/validationWrapper.js +16 -3
  419. package/dist/validation/validationWrapper.js.map +1 -1
  420. package/index.ts +2 -0
  421. package/json/systemSchema.json +52 -0
  422. package/npm-shrinkwrap.json +196 -194
  423. package/package.json +7 -6
  424. package/resources/DESIGN.md +114 -52
  425. package/resources/DatabaseTransaction.ts +521 -43
  426. package/resources/LMDBTransaction.ts +26 -4
  427. package/resources/PrimaryRocksDatabase.ts +28 -1
  428. package/resources/RecordEncoder.ts +103 -8
  429. package/resources/RequestTarget.ts +2 -0
  430. package/resources/Resource.ts +17 -9
  431. package/resources/ResourceInterface.ts +23 -0
  432. package/resources/RocksIndexStore.ts +30 -9
  433. package/resources/RocksTransactionLogStore.ts +78 -21
  434. package/resources/Table.ts +1110 -159
  435. package/resources/auditStore.ts +331 -73
  436. package/resources/blob.ts +1029 -110
  437. package/resources/branchDatabase.ts +941 -0
  438. package/resources/crdt.ts +76 -12
  439. package/resources/databases.ts +1310 -252
  440. package/resources/defineTable.ts +18 -2
  441. package/resources/graphql.ts +70 -16
  442. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +6 -2
  443. package/resources/longLivedTransactions.ts +360 -0
  444. package/resources/models/backendRegistry.ts +84 -2
  445. package/resources/models/bootstrap.ts +473 -28
  446. package/resources/recordLock.ts +253 -0
  447. package/resources/replayLogs.ts +147 -26
  448. package/resources/replayLogsGuards.ts +171 -8
  449. package/resources/search.ts +154 -7
  450. package/resources/transactionBroadcast.ts +3 -3
  451. package/security/auth.ts +68 -29
  452. package/security/authn/oidc/claims.ts +72 -0
  453. package/security/authn/oidc/identityToken.ts +129 -0
  454. package/security/authn/oidc/jwks.ts +260 -0
  455. package/security/authn/oidc/providers/generic.ts +40 -0
  456. package/security/authn/oidc/providers/githubActions.ts +137 -0
  457. package/security/authn/oidc/providers/index.ts +52 -0
  458. package/security/authn/oidc/tokenExchange.ts +300 -0
  459. package/security/authn/oidc/trustPolicyOperations.ts +343 -0
  460. package/security/authn/oidc/types.ts +41 -0
  461. package/security/certificateVerification/index.ts +54 -13
  462. package/security/certificateVerification/trustedIssuers.ts +76 -0
  463. package/security/certificateVerification/types.ts +1 -0
  464. package/security/credentialProvenance.ts +47 -0
  465. package/security/credentialRejection.ts +22 -0
  466. package/security/deferredAuthentication.ts +71 -0
  467. package/security/impersonation.ts +117 -12
  468. package/security/jsLoader.ts +81 -18
  469. package/security/keys.ts +298 -72
  470. package/security/operationScope.ts +33 -0
  471. package/security/permissionsTranslator.js +23 -0
  472. package/security/tokenAuthentication.ts +233 -12
  473. package/security/user.ts +4 -3
  474. package/server/DESIGN.md +183 -16
  475. package/server/DurableSubscriptionsSession.ts +71 -11
  476. package/server/REST.ts +79 -1
  477. package/server/graphqlQuerying.ts +4 -0
  478. package/server/http.ts +99 -18
  479. package/server/itc/serverHandlers.js +8 -1
  480. package/server/jobs/jobProcess.ts +8 -2
  481. package/server/jobs/jobs.ts +4 -1
  482. package/server/liveSubscriptionAuth.ts +129 -46
  483. package/server/loadRootComponents.js +50 -8
  484. package/server/mqtt.ts +179 -38
  485. package/server/nodeName.ts +103 -21
  486. package/server/serverHelpers/Headers.ts +131 -0
  487. package/server/serverHelpers/contentTypes.ts +29 -21
  488. package/server/serverHelpers/deployValidationState.ts +24 -13
  489. package/server/serverHelpers/operationAuthorizationState.ts +34 -3
  490. package/server/serverHelpers/registeredOperations.ts +79 -22
  491. package/server/serverHelpers/requestSanitization.ts +15 -0
  492. package/server/serverHelpers/serverHandlers.js +6 -3
  493. package/server/serverHelpers/serverUtilities.ts +104 -31
  494. package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
  495. package/server/serverHelpers/uwsServer.ts +17 -2
  496. package/server/static.ts +23 -29
  497. package/server/storageReclamation.ts +23 -0
  498. package/server/threads/itc.js +11 -1
  499. package/server/threads/manageThreads.js +526 -56
  500. package/server/threads/socketRouter.ts +81 -26
  501. package/server/threads/threadHeapMemory.ts +26 -0
  502. package/server/threads/threadServer.js +43 -15
  503. package/sqlTranslator/index.ts +31 -8
  504. package/studio/web/assets/Chat-BnCBegQz.js +2267 -0
  505. package/studio/web/assets/FloatingChat-CoDW1ySS.js +23 -0
  506. package/studio/web/assets/{abnfDiagram-VCTEODGH-C0_BAZyO.js → abnfDiagram-VCTEODGH-B0BebmD2.js} +1 -1
  507. package/studio/web/assets/{alertDialog-DIHt7Z0r.js → alertDialog-CQyAJJhl.js} +1 -1
  508. package/studio/web/assets/{apiToken-c3Rd-w6g.js → apiToken-Bwk5BLXW.js} +1 -1
  509. package/studio/web/assets/applications-DHxGi7JH.js +296 -0
  510. package/studio/web/assets/architecture-7GRP2DOG-LB-MLAAb.js +1 -0
  511. package/studio/web/assets/{architectureDiagram-5GKGNRK7-BWzrASgm.js → architectureDiagram-5GKGNRK7-7SW3GD-K.js} +1 -1
  512. package/studio/web/assets/authStore-C3Nfubqr.js +3 -0
  513. package/studio/web/assets/{blockDiagram-NRAW4CY4-BdJX9Khj.js → blockDiagram-I7D4REHJ-BqguiadH.js} +2 -2
  514. package/studio/web/assets/{button-DhiX-njv.js → button-BIsUKRZq.js} +2 -2
  515. package/studio/web/assets/{c4Diagram-UCG6FXSJ-CI6MzGmQ.js → c4Diagram-7LVT6UL2-LBNf8t_X.js} +1 -1
  516. package/studio/web/assets/channel-yictG-U-.js +1 -0
  517. package/studio/web/assets/{chevron-up-Df2c8uoU.js → chevron-up-DtKGqDn3.js} +1 -1
  518. package/studio/web/assets/{chunk-TEH6E4GO-P87k5mNi.js → chunk-4HAMMTFA-DWtTut21.js} +1 -1
  519. package/studio/web/assets/{chunk-75Z2AOVW-BT8tVmks.js → chunk-75Z2AOVW-QGQD6th2.js} +1 -1
  520. package/studio/web/assets/{chunk-DU6HZSFF-9kAOOmI6.js → chunk-DU6HZSFF-Chq20Ba5.js} +1 -1
  521. package/studio/web/assets/{chunk-F27PBJKO-BW7ao8AY.js → chunk-F27PBJKO-BVA5EPhV.js} +1 -1
  522. package/studio/web/assets/{chunk-GMAD6QVW-BNyXpoQO.js → chunk-GMAD6QVW-BeS7S07A.js} +1 -1
  523. package/studio/web/assets/{chunk-OBVCFTLP-D4wWOqDQ.js → chunk-GVQU2GXP-sbwVIQ8i.js} +1 -1
  524. package/studio/web/assets/{chunk-G27WJ6UU-COyLMcgK.js → chunk-IMKFNOWR-Bnh3tAVd.js} +1 -1
  525. package/studio/web/assets/{chunk-JQ64N6SF-Cyz1IeLf.js → chunk-L3NEJ4N5-COfUyKII.js} +1 -1
  526. package/studio/web/assets/chunk-OSK3NFVY-ByciRftO.js +10 -0
  527. package/studio/web/assets/{chunk-P2QGCYS3-DmIFY4d7.js → chunk-P2QGCYS3-CP1VhG_c.js} +1 -1
  528. package/studio/web/assets/{chunk-POPQ4Y6H-BPrvMyKz.js → chunk-POPQ4Y6H-ClWhhkwW.js} +1 -1
  529. package/studio/web/assets/{chunk-PWAF6VOD-2zB6IW9i.js → chunk-PWAF6VOD-1z1THyS5.js} +1 -1
  530. package/studio/web/assets/{chunk-RHFEMEQ7-2FgyI8YU.js → chunk-SHT3W25Y-LpQkMsah.js} +2 -2
  531. package/studio/web/assets/{chunk-SVP7TREG-FwtbH2QC.js → chunk-SVP7TREG-jtdAHw0S.js} +1 -1
  532. package/studio/web/assets/{chunk-LCL6LL3I-HOzK_ppE.js → chunk-TICWLB2K-VOwzetX-.js} +1 -1
  533. package/studio/web/assets/classDiagram-ZZMXUADV-VaEwSy_g.js +1 -0
  534. package/studio/web/assets/classDiagram-v2-VYDZK3BY-VaEwSy_g.js +1 -0
  535. package/studio/web/assets/{createLucideIcon-BKGPfjm2.js → createLucideIcon-CzW9508A.js} +1 -1
  536. package/studio/web/assets/{cssMode-CEN2mzSA.js → cssMode-s0cWI-_M.js} +1 -1
  537. package/studio/web/assets/{cynefin-OW5HDTMX-BRkpLFQV.js → cynefin-OW5HDTMX-BbdbCvub.js} +1 -1
  538. package/studio/web/assets/{cynefinDiagram-5FMLGOSQ-CHT1DaX6.js → cynefinDiagram-5FMLGOSQ-TP-aIqbt.js} +1 -1
  539. package/studio/web/assets/{dagre-3AP2YEHR-DpUXBh63.js → dagre-GXQ25YYZ-DShnGpGo.js} +1 -1
  540. package/studio/web/assets/{diagram-S7CK7UJ4-BuymVFZT.js → diagram-S7CK7UJ4-aoCVTtcy.js} +1 -1
  541. package/studio/web/assets/{diagram-UQ7AKVKN-CyP148RM.js → diagram-UQ7AKVKN-DglXtQ6x.js} +1 -1
  542. package/studio/web/assets/{diagram-VSXAHHWV-CoCAg3M9.js → diagram-VSXAHHWV-fhEdmkwM.js} +1 -1
  543. package/studio/web/assets/{diagram-VX7I27RA-BpOqCFca.js → diagram-VX7I27RA-DccVJet6.js} +1 -1
  544. package/studio/web/assets/{diagram-Z3DM3KII-Bfpw7Vbj.js → diagram-Z3DM3KII-D-RyJJb7.js} +1 -1
  545. package/studio/web/assets/{dialog-CBf0Mr1d.js → dialog-Cn2uWgD4.js} +1 -1
  546. package/studio/web/assets/{dist-lkA3O3eM.js → dist-DP8UjMB_.js} +1 -1
  547. package/studio/web/assets/{download-BtTOBem-.js → download-B5T5r7ss.js} +1 -1
  548. package/studio/web/assets/{ebnfDiagram-PWID7BFC-DS_6aWqL.js → ebnfDiagram-PWID7BFC-DJGpIpz_.js} +1 -1
  549. package/studio/web/assets/{editor-D8oDeCTL.js → editor-DNcRHK54.js} +1 -1
  550. package/studio/web/assets/{erDiagram-SSCWMZ5O-DJNk6Fgw.js → erDiagram-RLTQ6QDP-CIfNlgkC.js} +1 -1
  551. package/studio/web/assets/eventmodeling-NTZA5JFV-CLxnp2CR.js +1 -0
  552. package/studio/web/assets/flowDiagram-HODETNUW-BIbhmz9f.js +1 -0
  553. package/studio/web/assets/{ganttDiagram-EL5Y4UJY-2pOExxMY.js → ganttDiagram-EL5Y4UJY-BxToTzzD.js} +1 -1
  554. package/studio/web/assets/{getAnalytics-D4LKGeVy.js → getAnalytics-GHK8ORfM.js} +1 -1
  555. package/studio/web/assets/{gitGraph-4MIJSDKK-CH5ZxwzF.js → gitGraph-4MIJSDKK-D2s2w8lE.js} +1 -1
  556. package/studio/web/assets/{gitGraphDiagram-WWUBYQGX-DVIsIhbO.js → gitGraphDiagram-WWUBYQGX-Dwntd4-x.js} +1 -1
  557. package/studio/web/assets/{html-u3vOg7LJ.js → html-Bdssedlg.js} +1 -1
  558. package/studio/web/assets/{htmlMode-DyO31v-P.js → htmlMode-CoDlJ3fw.js} +1 -1
  559. package/studio/web/assets/{index-Cxj2_wsl.css → index-7RMEgVG1.css} +1 -1
  560. package/studio/web/assets/index-D6sxmFLR.js +824 -0
  561. package/studio/web/assets/index.lazy-tmU5BS8s.js +2 -0
  562. package/studio/web/assets/{info-A6RAGUB7-CPQfTnaG.js → info-A6RAGUB7-DYjkvb0C.js} +1 -1
  563. package/studio/web/assets/{infoDiagram-RXCK75RN-DlwLYlwm.js → infoDiagram-27XIBGKW-Bnp1FJE5.js} +1 -1
  564. package/studio/web/assets/{ishikawaDiagram-5VMMS53U-BRXRp29U.js → ishikawaDiagram-5VMMS53U-D9Xh2r6X.js} +1 -1
  565. package/studio/web/assets/{javascript-CUvxOyTC.js → javascript-B8meVSTH.js} +1 -1
  566. package/studio/web/assets/{journeyDiagram-EYS64GPL-B0ou8k0n.js → journeyDiagram-3NMN7TZE-CokIi6ll.js} +2 -2
  567. package/studio/web/assets/{jsonMode-f_IwbF3D.js → jsonMode-DpIPd35T.js} +1 -1
  568. package/studio/web/assets/{kanban-definition-3QL26DDD-uYg7iYzp.js → kanban-definition-UXKFOSKX-CukSFJfX.js} +1 -1
  569. package/studio/web/assets/{languageServices-DXtZ6rEF.js → languageServices-C_5FMJzQ.js} +1 -1
  570. package/studio/web/assets/{lspLanguageFeatures-B4pCF1zO.js → lspLanguageFeatures-BIzNBzPK.js} +1 -1
  571. package/studio/web/assets/{mermaid-parser.core-Ck-fC8b7.js → mermaid-parser.core-BlEsOWNO.js} +3 -3
  572. package/studio/web/assets/{mermaid.core-CP8aNNYm.js → mermaid.core-BlkGaMIH.js} +5 -5
  573. package/studio/web/assets/{mindmap-definition-FBJOCRG2-CgTZ-rit.js → mindmap-definition-YA3MSWOX-IprMc_0j.js} +1 -1
  574. package/studio/web/assets/{notifications-D3tIQ4sg.js → notifications-CQf18QKb.js} +1 -1
  575. package/studio/web/assets/notifications-CvZivSbh.js +1 -0
  576. package/studio/web/assets/{packet-AYTQ26CC-DEyoPtPb.js → packet-AYTQ26CC-Bi3V04Zi.js} +1 -1
  577. package/studio/web/assets/{pegDiagram-XKGWAZYB-DrD-7sD9.js → pegDiagram-XKGWAZYB-BNuPDLZY.js} +1 -1
  578. package/studio/web/assets/{pie-WAS4IAKB-wjj-EI1d.js → pie-WAS4IAKB-_6DoDbng.js} +1 -1
  579. package/studio/web/assets/{pieDiagram-E7YTZNPT-GntqDCzv.js → pieDiagram-E7YTZNPT-DqNb6Ht2.js} +1 -1
  580. package/studio/web/assets/{profile-DZWU7MgT.js → profile-DdOwtntb.js} +1 -1
  581. package/studio/web/assets/{quadrantDiagram-AXDQQJYC-0UeqXQGd.js → quadrantDiagram-AXDQQJYC-BGH9E2YR.js} +1 -1
  582. package/studio/web/assets/{radar-RG4KPBEZ-DFSA5h7k.js → radar-RG4KPBEZ-DDdVczcL.js} +1 -1
  583. package/studio/web/assets/{railroad-74A4TZTK-CaOUG9wR.js → railroad-74A4TZTK-BJUP4Jds.js} +1 -1
  584. package/studio/web/assets/railroad-abnf-HS5TGJTU-Bm3L1L0h.js +1 -0
  585. package/studio/web/assets/railroad-ebnf-LZEXJU2U-CKzLGlkw.js +1 -0
  586. package/studio/web/assets/railroad-peg-WCYAUIDC-S8xLjslx.js +1 -0
  587. package/studio/web/assets/{railroadDiagram-O6MQD6OU-yHUELZaV.js → railroadDiagram-O6MQD6OU-DGTPh2KZ.js} +1 -1
  588. package/studio/web/assets/{regions-CkyurXzE.js → regions-n69fwagr.js} +1 -1
  589. package/studio/web/assets/{register-BUyhWjBO.js → register-PfWTCXWB.js} +3 -3
  590. package/studio/web/assets/{requirementDiagram-EFPCY7ZU-DNEGFjuW.js → requirementDiagram-BXWQKSXE-BJnO6uLz.js} +1 -1
  591. package/studio/web/assets/{sankeyDiagram-P5KCCOFB-DpyAmSVR.js → sankeyDiagram-P5KCCOFB-0vSOdymH.js} +1 -1
  592. package/studio/web/assets/{sequenceDiagram-WJ2MYXX4-TyaT7xNk.js → sequenceDiagram-WJ2MYXX4-hETizDWE.js} +1 -1
  593. package/studio/web/assets/{setComponentFile-CeyKSZAa.js → setComponentFile-Bg6O7X0S.js} +1 -1
  594. package/studio/web/assets/{setup-D2kn7cAA.js → setup-CUx_aUDl.js} +2 -2
  595. package/studio/web/assets/{stateDiagram-HBIQ2CUA-CeEdTArZ.js → stateDiagram-D77RDMKH-CdYQ_KtC.js} +1 -1
  596. package/studio/web/assets/stateDiagram-v2-MP3YSRHH-CdKuzQMT.js +1 -0
  597. package/studio/web/assets/status-D7BVKqX9.js +61 -0
  598. package/studio/web/assets/{swimlanes-XN3QIQJK-B54FmF46.js → swimlanes-42K2YHIH-B8cHIpU4.js} +1 -1
  599. package/studio/web/assets/swimlanesDiagram-VR7AAH4N-DmOSJwaH.js +8 -0
  600. package/studio/web/assets/{tabs-B_G5zscN.js → tabs-BrHu7gJi.js} +1 -1
  601. package/studio/web/assets/{timeline-definition-24CTP7MA-D-a9ujbo.js → timeline-definition-24CTP7MA-BJWYSXqF.js} +1 -1
  602. package/studio/web/assets/{toggleHighContrast-C0UW6rI2.js → toggleHighContrast-DBSyXzMr.js} +1 -1
  603. package/studio/web/assets/{treeView-Q6P3EWNA-CrW_6JnS.js → treeView-Q6P3EWNA-qxe_v6CQ.js} +1 -1
  604. package/studio/web/assets/{treemap-WGGIJYW6-BxyYLdP_.js → treemap-WGGIJYW6-dDo97XXF.js} +1 -1
  605. package/studio/web/assets/{tsMode-DBC0zmDx.js → tsMode-BByKCjBS.js} +1 -1
  606. package/studio/web/assets/{typescript-DApRQir3.js → typescript-DDLnLpw9.js} +1 -1
  607. package/studio/web/assets/{useEntityRestURL-DB6JStU1.js → useEntityRestURL-31CHGaHk.js} +1 -1
  608. package/studio/web/assets/{useLocalStorage-Dtj1QS8_.js → useLocalStorage-BqMR3D8_.js} +1 -1
  609. package/studio/web/assets/vendor-core-c2JRRJpV.js +58 -0
  610. package/studio/web/assets/vendor-datadog-CLUcJXOo.js +6 -0
  611. package/studio/web/assets/{vendor-react-Dyj4O3HE.js → vendor-react-CJV_K1u4.js} +1 -1
  612. package/studio/web/assets/vendor-tanstack-DxzraizX.js +1 -0
  613. package/studio/web/assets/{vendor-ui-vhu-UHhF.js → vendor-ui-BUjK0h8a.js} +2 -2
  614. package/studio/web/assets/{vennDiagram-4TSXK5OY-Cy7s7Mpy.js → vennDiagram-4TSXK5OY-A3i-lCdl.js} +1 -1
  615. package/studio/web/assets/{wardley-WFR3VGLG-BeBL35g2.js → wardley-WFR3VGLG-B0ik-_6g.js} +1 -1
  616. package/studio/web/assets/{wardleyDiagram-VM6X3IG4-BylmIGSg.js → wardleyDiagram-VM6X3IG4-CjrkKWUR.js} +1 -1
  617. package/studio/web/assets/{workers-C0bFIedw.js → workers-pR3jRY9D.js} +1 -1
  618. package/studio/web/assets/x-DIzaLEdK.js +1 -0
  619. package/studio/web/assets/{xml-HWd01lU-.js → xml-2iRnMhQO.js} +1 -1
  620. package/studio/web/assets/{xychartDiagram-S5SC5T6Z-CoKALMXr.js → xychartDiagram-S5SC5T6Z-Biok4GYV.js} +1 -1
  621. package/studio/web/assets/{yaml-CIH0Nt-h.js → yaml-Bf92gJpd.js} +1 -1
  622. package/studio/web/index.html +14 -14
  623. package/upgrade/directives/5-3-0.ts +132 -0
  624. package/upgrade/directives/directivesController.ts +2 -1
  625. package/utility/OperationFunctionCaller.ts +2 -1
  626. package/utility/common_utils.ts +30 -5
  627. package/utility/componentNames.ts +12 -0
  628. package/utility/environment/environmentManager.ts +3 -7
  629. package/utility/environment/systemInformation.ts +7 -0
  630. package/utility/errors/commonErrors.ts +4 -0
  631. package/utility/errors/hdbError.ts +29 -0
  632. package/utility/hdbTerms.ts +17 -0
  633. package/utility/logging/harper_logger.ts +87 -14
  634. package/utility/logging/logRotator.ts +72 -45
  635. package/utility/nodeIdentity.ts +45 -0
  636. package/utility/npmUtilities.ts +10 -8
  637. package/utility/operationPermissions.ts +18 -1
  638. package/utility/operation_authorization.ts +231 -42
  639. package/utility/watchPath.ts +63 -0
  640. package/utility/watcherFallback.ts +270 -0
  641. package/validation/configValidator.ts +209 -72
  642. package/validation/installValidator.ts +15 -0
  643. package/validation/validationWrapper.ts +18 -4
  644. package/studio/web/assets/Chat-JpO8EtUu.js +0 -2067
  645. package/studio/web/assets/FloatingChat-Bcj3xSZu.js +0 -23
  646. package/studio/web/assets/applications-ByqLRKyZ.js +0 -296
  647. package/studio/web/assets/architecture-7GRP2DOG-DNdx5tEU.js +0 -1
  648. package/studio/web/assets/authStore-qKmCZcaf.js +0 -3
  649. package/studio/web/assets/channel-DtCV8PTL.js +0 -1
  650. package/studio/web/assets/chunk-R7TYR2AO-Irip67yr.js +0 -10
  651. package/studio/web/assets/classDiagram-DTDB5LWJ-DbO_dCNE.js +0 -1
  652. package/studio/web/assets/classDiagram-v2-JRS7N3AN-DbO_dCNE.js +0 -1
  653. package/studio/web/assets/eventmodeling-NTZA5JFV-5jbe4A5P.js +0 -1
  654. package/studio/web/assets/flowDiagram-A5DVABFB-Dp9Ezlow.js +0 -1
  655. package/studio/web/assets/index-aSt5tY-L.js +0 -824
  656. package/studio/web/assets/index.lazy-B9jiPwT8.js +0 -2
  657. package/studio/web/assets/notifications-CUoYgU98.js +0 -1
  658. package/studio/web/assets/railroad-abnf-HS5TGJTU-Bc0Qi0WH.js +0 -1
  659. package/studio/web/assets/railroad-ebnf-LZEXJU2U-G8rVVZ2C.js +0 -1
  660. package/studio/web/assets/railroad-peg-WCYAUIDC-CrehKBhC.js +0 -1
  661. package/studio/web/assets/stateDiagram-v2-4QOOHH4V-D4tuw9Su.js +0 -1
  662. package/studio/web/assets/status-D7Xn5ePA.js +0 -61
  663. package/studio/web/assets/swimlanesDiagram-VK2B7HYN-XOhmNEvq.js +0 -8
  664. package/studio/web/assets/vendor-core-RCcadM3e.js +0 -73
  665. package/studio/web/assets/vendor-datadog-BRv-mOv1.js +0 -6
  666. package/studio/web/assets/vendor-tanstack-BiFWSB3W.js +0 -1
  667. package/studio/web/assets/x-B9o9hsep.js +0 -1
  668. /package/studio/web/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canonicalizeWatchPath = canonicalizeWatchPath;
4
+ exports.resolveWatchTarget = resolveWatchTarget;
5
+ exports._resetForTests = _resetForTests;
6
+ const node_fs_1 = require("node:fs");
7
+ const node_path_1 = require("node:path");
8
+ const harper_logger_ts_1 = require("./logging/harper_logger.js");
9
+ const watchPathLogger = (0, harper_logger_ts_1.loggerWithTag)('watcher');
10
+ let canonicalizationWarned = false;
11
+ /**
12
+ * Canonicalize an absolute path before it is handed to a native file watch (`fs.watch`, directly or
13
+ * through chokidar).
14
+ *
15
+ * libuv's Windows fs-event callback rebuilds each event's absolute path, expands it with
16
+ * `GetLongPathNameW`, and then asserts the expansion still starts with the directory it stored when
17
+ * the watch was armed. An 8.3 short directory (`C:\Users\RUNNER~1\...`) never survives that
18
+ * comparison, and the assertion aborts the process rather than failing the watch, so a short path
19
+ * reaching a native watch takes down the whole server (harper#2234).
20
+ *
21
+ * Every Windows path is resolved rather than only the ones that look short: `GetLongPathNameW`'s
22
+ * documentation is explicit that a short name need not contain a tilde, and NTFS allows an
23
+ * explicitly assigned one, so any spelling test would leave the abort reachable. `realpathSync` is
24
+ * not a substitute for the `.native` variant — it resolves symlinks but leaves 8.3 names intact.
25
+ *
26
+ * Returns `undefined` when the long form cannot be established, because a path we cannot prove is
27
+ * expanded is exactly the one that must never reach a native watch.
28
+ */
29
+ function canonicalizeWatchPath(watchPath, platform = process.platform) {
30
+ if (platform !== 'win32')
31
+ return watchPath;
32
+ try {
33
+ return node_fs_1.realpathSync.native(watchPath);
34
+ }
35
+ catch (error) {
36
+ if (!error || typeof error !== 'object' || !('code' in error) || error.code !== 'ENOENT')
37
+ return undefined;
38
+ // libuv stores only the parent directory of a file target and compares only that prefix, so a
39
+ // leaf that does not exist yet — a config file whose watcher is armed during the install window
40
+ // — still yields a watch path that cannot trip the assertion.
41
+ try {
42
+ return (0, node_path_1.join)(node_fs_1.realpathSync.native((0, node_path_1.dirname)(watchPath)), (0, node_path_1.basename)(watchPath));
43
+ }
44
+ catch {
45
+ return undefined;
46
+ }
47
+ }
48
+ }
49
+ /**
50
+ * Watch target for a chokidar/`fs.watch` call: the canonical path, or the original path with
51
+ * `mustPoll`, which callers turn into their polling options. Polling stats the file instead of
52
+ * arming a native watch, so it cannot reach the abort.
53
+ */
54
+ function resolveWatchTarget(watchPath) {
55
+ const canonical = canonicalizeWatchPath(watchPath);
56
+ if (canonical !== undefined)
57
+ return { path: canonical, mustPoll: false };
58
+ if (!canonicalizationWarned) {
59
+ canonicalizationWarned = true;
60
+ watchPathLogger.warn?.(`Could not resolve the long-path form of ${watchPath}. Falling back to polling-based watching for ` +
61
+ 'affected watchers, because handing a Windows 8.3 short path to a native watch aborts the process.');
62
+ }
63
+ return { path: watchPath, mustPoll: true };
64
+ }
65
+ function _resetForTests() {
66
+ canonicalizationWarned = false;
67
+ }
68
+ //# sourceMappingURL=watchPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchPath.js","sourceRoot":"","sources":["../../utility/watchPath.ts"],"names":[],"mappings":";;AAyBA,sDAeC;AAOD,gDAWC;AAED,wCAEC;AA9DD,qCAAuC;AACvC,yCAAoD;AACpD,iEAA2D;AAE3D,MAAM,eAAe,GAAG,IAAA,gCAAa,EAAC,SAAS,CAAC,CAAC;AACjD,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,qBAAqB,CAAC,SAAiB,EAAE,WAAmB,OAAO,CAAC,QAAQ;IAC3F,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,CAAC;QACJ,OAAO,sBAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC3G,8FAA8F;QAC9F,gGAAgG;QAChG,8DAA8D;QAC9D,IAAI,CAAC;YACJ,OAAO,IAAA,gBAAI,EAAC,sBAAY,CAAC,MAAM,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAC,EAAE,IAAA,oBAAQ,EAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,SAAiB;IACnD,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACzE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7B,sBAAsB,GAAG,IAAI,CAAC;QAC9B,eAAe,CAAC,IAAI,EAAE,CACrB,2CAA2C,SAAS,+CAA+C;YAClG,mGAAmG,CACpG,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,SAAgB,cAAc;IAC7B,sBAAsB,GAAG,KAAK,CAAC;AAChC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type ChokidarOptions, type FSWatcher } from 'chokidar';
1
2
  /**
2
3
  * Returns `true` if the chokidar error indicates the OS-level watcher pool is
3
4
  * exhausted (inotify watches on Linux, open file descriptors on macOS/Linux).
@@ -34,3 +35,88 @@ export declare const DIRECTORY_POLLING_FALLBACK_OPTIONS: {
34
35
  */
35
36
  export declare function warnWatcherFallback(watchedPath: string): void;
36
37
  export declare function _resetForTests(): void;
38
+ /**
39
+ * Returns `true` for the asynchronous "the watched path went away" error raised
40
+ * by Node's `fs.FSWatcher` — on Windows, `EPERM: operation not permitted, watch`
41
+ * (errno -4048) when a watched directory is removed or swapped out. Unlike
42
+ * {@link isWatcherExhaustionError} there is nothing to degrade to: polling a
43
+ * path that no longer exists only burns CPU.
44
+ *
45
+ * All three conditions are load-bearing, because whatever this claims is
46
+ * swallowed process-wide:
47
+ *
48
+ * - `syscall === 'watch'` is only ever set by fs watch handles.
49
+ * - `EPERM` only. An async `ENOENT` from a watch handle has never been
50
+ * observed, whereas a *synchronous* one is the ordinary "watch a path that
51
+ * isn't there" misconfiguration, which must stay fatal.
52
+ * - no `path`. Node populates `path` on the error it throws out of
53
+ * `fs.watch()` and leaves it absent on the one it delivers to the handle,
54
+ * so without this a raw `fs.watch(missingPath)` reaching the guard would be
55
+ * mistaken for a benign lost watch and swallowed.
56
+ */
57
+ export declare function isLostNativeWatchError(error: unknown): boolean;
58
+ /**
59
+ * If `error` is a lost native watch error, mark it handled, log it, and report
60
+ * that it has been claimed. Exported so the per-watcher error routes can give it
61
+ * the same benign treatment on the day chokidar does deliver it to the wrapper
62
+ * (its polling and `persistent: true` branches already would).
63
+ */
64
+ export declare function claimLostNativeWatchError(error: unknown): boolean;
65
+ /**
66
+ * Idempotently install the process-level listener that supplies the 'error'
67
+ * handler chokidar omits for non-persistent watchers. Called by
68
+ * {@link guardedWatch} so no watcher call site can forget it.
69
+ */
70
+ export declare function installLostNativeWatchGuard(): void;
71
+ /**
72
+ * `chokidar.watch()` with the lost-native-watch guard installed. Every Harper
73
+ * chokidar watcher must go through this — a raw `chokidar.watch(..., { persistent: false })`
74
+ * can take down the thread the first time its path is deleted.
75
+ */
76
+ export declare function guardedWatch(paths: string | string[], options?: ChokidarOptions): FSWatcher;
77
+ export declare function _lostNativeWatchCountForTests(): number;
78
+ export declare class PartialReadRetry {
79
+ #private;
80
+ constructor(filePath: string);
81
+ /** False once the budget is spent, so the caller can fall back to its own error handling. */
82
+ schedule(reread: () => void): boolean;
83
+ /** A usable read arrived, so any re-read still armed for the previous one would duplicate it. */
84
+ settled(): void;
85
+ /**
86
+ * The budget is spent. Distinct from `settled()` in that the report stands — the file has not
87
+ * recovered, and it is shared with every other watcher of it. The budget itself is restored,
88
+ * because the next event may be the repair, and that repair can be observed mid-write too.
89
+ * Returns whether this give-up was the one reported.
90
+ */
91
+ gaveUp(error?: unknown): boolean;
92
+ /** Terminal: the watcher is closing, so nothing may re-arm the re-read or report on it. */
93
+ cancel(): void;
94
+ }
95
+ /**
96
+ * ENOENT is excluded not because it cannot be transient, but because it already has an answer:
97
+ * `OptionsWatcher` routes it to `remove` (env-only fallback at boot, then removal), and
98
+ * `RootConfigWatcher` keeps its last config rather than tearing down core features on a file
99
+ * that may just be mid-replace. Re-reading would only delay a decision already made.
100
+ */
101
+ export declare function isPartialReadError(error: unknown): boolean;
102
+ /**
103
+ * A watcher that exhausts its re-read budget serves stale config from then on, so the give-up
104
+ * has to be visible — otherwise the only symptom is a config change that silently did nothing.
105
+ * Warned once per file: every root-config scope watches the same one and would otherwise report
106
+ * a single bad file once each, on every event.
107
+ */
108
+ export declare function warnPartialReadGaveUp(filePath: string, error?: unknown): boolean;
109
+ /**
110
+ * The kind and position of a failed config read, never its content: a YAML parse error's message
111
+ * quotes the offending source lines, and these files hold credentials.
112
+ */
113
+ export declare function describeReadFailure(error: unknown): string;
114
+ /** Test-only: whether a give-up warning for this file is currently suppressed as a duplicate. */
115
+ export declare function isPartialReadWarned(filePath: string): boolean;
116
+ /** Test-only: forget that this file was reported, so a suite can start from a known state. */
117
+ export declare function clearPartialReadWarning(filePath: string): void;
118
+ /**
119
+ * A listener that throws while applying new config is a bug in that listener, not evidence the
120
+ * file was half-written — the watcher's own state is already updated, so it keeps going.
121
+ */
122
+ export declare function warnWatcherListenerError(filePath: string, error: unknown): void;
@@ -5,15 +5,31 @@
5
5
  // (EMFILE), native chokidar watchers emit an error and stop firing change
6
6
  // events. Polling-based watching doesn't consume inotify handles or per-watcher
7
7
  // file descriptors, so we fall back to it once and warn — see harper#488.
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
8
11
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DIRECTORY_POLLING_FALLBACK_OPTIONS = exports.POLLING_FALLBACK_OPTIONS = void 0;
12
+ exports.PartialReadRetry = exports.DIRECTORY_POLLING_FALLBACK_OPTIONS = exports.POLLING_FALLBACK_OPTIONS = void 0;
10
13
  exports.isWatcherExhaustionError = isWatcherExhaustionError;
11
14
  exports.warnWatcherFallback = warnWatcherFallback;
12
15
  exports._resetForTests = _resetForTests;
16
+ exports.isLostNativeWatchError = isLostNativeWatchError;
17
+ exports.claimLostNativeWatchError = claimLostNativeWatchError;
18
+ exports.installLostNativeWatchGuard = installLostNativeWatchGuard;
19
+ exports.guardedWatch = guardedWatch;
20
+ exports._lostNativeWatchCountForTests = _lostNativeWatchCountForTests;
21
+ exports.isPartialReadError = isPartialReadError;
22
+ exports.warnPartialReadGaveUp = warnPartialReadGaveUp;
23
+ exports.describeReadFailure = describeReadFailure;
24
+ exports.isPartialReadWarned = isPartialReadWarned;
25
+ exports.clearPartialReadWarning = clearPartialReadWarning;
26
+ exports.warnWatcherListenerError = warnWatcherListenerError;
27
+ const chokidar_1 = __importDefault(require("chokidar"));
13
28
  const harper_logger_ts_1 = require("./logging/harper_logger.js");
14
29
  // One-time process-wide warning so a thundering herd of failing watchers doesn't
15
30
  // produce hundreds of identical log lines.
16
31
  let exhaustionWarned = false;
32
+ const partialReadWarned = new Set();
17
33
  const fallbackLogger = (0, harper_logger_ts_1.loggerWithTag)('watcher');
18
34
  /**
19
35
  * Returns `true` if the chokidar error indicates the OS-level watcher pool is
@@ -69,5 +85,266 @@ function warnWatcherFallback(watchedPath) {
69
85
  // Test-only hook to reset the one-time warning gate between cases.
70
86
  function _resetForTests() {
71
87
  exhaustionWarned = false;
88
+ lostNativeWatchCount = 0;
89
+ lostNativeWatchWarnThreshold = 1;
90
+ // Also drop the process listener, so a case that installed the guard can't leave one
91
+ // attached to the test runner's process for every case that follows.
92
+ process.removeListener('uncaughtException', handleUncaughtException);
93
+ lostNativeWatchGuardInstalled = false;
94
+ }
95
+ // ---------------------------------------------------------------------------
96
+ // Lost native watch (predominantly Windows)
97
+ // ---------------------------------------------------------------------------
98
+ //
99
+ // Every Harper watcher runs `persistent: false`, which is the one chokidar
100
+ // branch that never attaches an 'error' listener to the underlying Node
101
+ // `fs.FSWatcher` (chokidar `handler.js`, `setFsWatchListener`; still so at
102
+ // 5.0.0). Its `errHandler` covers only a synchronous throw out of `fs.watch()`
103
+ // — the ENOSPC/EMFILE route above. An asynchronous failure is emitted on a
104
+ // handle with no listener, so Node makes it an uncaughtException without it
105
+ // ever reaching chokidar; `.on('error')` on the wrapper we hold cannot see it.
106
+ // The process is therefore the only place it is observable, which is what
107
+ // `installLostNativeWatchGuard()` uses.
108
+ /**
109
+ * Returns `true` for the asynchronous "the watched path went away" error raised
110
+ * by Node's `fs.FSWatcher` — on Windows, `EPERM: operation not permitted, watch`
111
+ * (errno -4048) when a watched directory is removed or swapped out. Unlike
112
+ * {@link isWatcherExhaustionError} there is nothing to degrade to: polling a
113
+ * path that no longer exists only burns CPU.
114
+ *
115
+ * All three conditions are load-bearing, because whatever this claims is
116
+ * swallowed process-wide:
117
+ *
118
+ * - `syscall === 'watch'` is only ever set by fs watch handles.
119
+ * - `EPERM` only. An async `ENOENT` from a watch handle has never been
120
+ * observed, whereas a *synchronous* one is the ordinary "watch a path that
121
+ * isn't there" misconfiguration, which must stay fatal.
122
+ * - no `path`. Node populates `path` on the error it throws out of
123
+ * `fs.watch()` and leaves it absent on the one it delivers to the handle,
124
+ * so without this a raw `fs.watch(missingPath)` reaching the guard would be
125
+ * mistaken for a benign lost watch and swallowed.
126
+ */
127
+ function isLostNativeWatchError(error) {
128
+ if (typeof error !== 'object' || error === null)
129
+ return false;
130
+ const { code, syscall, path } = error;
131
+ return syscall === 'watch' && code === 'EPERM' && path == null;
132
+ }
133
+ let lostNativeWatchCount = 0;
134
+ let lostNativeWatchWarnThreshold = 1;
135
+ /**
136
+ * If `error` is a lost native watch error, mark it handled, log it, and report
137
+ * that it has been claimed. Exported so the per-watcher error routes can give it
138
+ * the same benign treatment on the day chokidar does deliver it to the wrapper
139
+ * (its polling and `persistent: true` branches already would).
140
+ */
141
+ function claimLostNativeWatchError(error) {
142
+ if (!isLostNativeWatchError(error))
143
+ return false;
144
+ const claimed = error;
145
+ // Counting one instance twice would trip the warn threshold early.
146
+ if (claimed.isHandled)
147
+ return true;
148
+ lostNativeWatchCount++;
149
+ // The claim is the classification above; the bookkeeping that follows must not be able to
150
+ // undo it. A frozen error (`isHandled` unassignable) or a throwing logger would otherwise
151
+ // make a failure just classified as benign fatal — here, or in a caller's 'error' route.
152
+ try {
153
+ fallbackLogger.trace?.(`Lost native file watch handle (occurrence ${lostNativeWatchCount}):`, error);
154
+ // A subsystem that has silently stopped being watched is what an operator needs to see, and
155
+ // the default level is `warn`, so trace alone would hide every occurrence after the first.
156
+ // Warning at each decade keeps a delete storm bounded without ever going fully silent.
157
+ if (lostNativeWatchCount >= lostNativeWatchWarnThreshold) {
158
+ lostNativeWatchWarnThreshold *= 10;
159
+ fallbackLogger.warn?.(`A native file watch handle failed asynchronously (EPERM, syscall=watch) and was suppressed to ` +
160
+ `keep the thread alive; occurrence ${lostNativeWatchCount}. Node reports no path for this error, ` +
161
+ `so it cannot be attributed to a specific watcher — whatever was watching that path has stopped ` +
162
+ `reporting changes until it is re-established. On Windows this is usually a watched directory ` +
163
+ `being deleted or replaced (a component redeploy, a package install, a test teardown). If file ` +
164
+ `changes stop being picked up somewhere, this is why. Subsequent occurrences log at trace, with ` +
165
+ `a warning at each tenfold increase.`);
166
+ }
167
+ // Last: threadServer.js and socketRouter.ts skip errors already marked handled, so failing
168
+ // to mark one costs only a duplicate log line.
169
+ claimed.isHandled = true;
170
+ }
171
+ catch {
172
+ // Marked or not, logged or not, the error stays claimed.
173
+ }
174
+ return true;
175
+ }
176
+ let lostNativeWatchGuardInstalled = false;
177
+ function handleUncaughtException(error) {
178
+ let claimed = false;
179
+ try {
180
+ claimed = claimLostNativeWatchError(error);
181
+ }
182
+ catch {
183
+ // Classification is all that can still throw (a property getter that does), and a throw
184
+ // from inside an 'uncaughtException' listener would replace Node's report with it and
185
+ // exit 7. An error that cannot be classified is not ours to claim.
186
+ claimed = false;
187
+ }
188
+ if (claimed)
189
+ return;
190
+ // Node suppresses its default fatal handling as soon as *any* 'uncaughtException' listener
191
+ // exists, so being the only listener would turn unrelated crashes into silent hangs.
192
+ if (process.listenerCount('uncaughtException') > 1)
193
+ return;
194
+ process.removeListener('uncaughtException', handleUncaughtException);
195
+ // A process that somehow survives re-arms on its next guardedWatch() rather than running
196
+ // unguarded thereafter.
197
+ lostNativeWatchGuardInstalled = false;
198
+ // nextTick, not a throw from inside the handler: that keeps Node's report and exit code 1.
199
+ process.nextTick(() => {
200
+ throw error;
201
+ });
202
+ }
203
+ /**
204
+ * Idempotently install the process-level listener that supplies the 'error'
205
+ * handler chokidar omits for non-persistent watchers. Called by
206
+ * {@link guardedWatch} so no watcher call site can forget it.
207
+ */
208
+ function installLostNativeWatchGuard() {
209
+ if (lostNativeWatchGuardInstalled)
210
+ return;
211
+ lostNativeWatchGuardInstalled = true;
212
+ // prepend, not append: threadServer.js already has an 'uncaughtException'
213
+ // listener, and the `isHandled` mark above only suppresses its log line if
214
+ // this guard runs first.
215
+ process.prependListener('uncaughtException', handleUncaughtException);
216
+ }
217
+ /**
218
+ * `chokidar.watch()` with the lost-native-watch guard installed. Every Harper
219
+ * chokidar watcher must go through this — a raw `chokidar.watch(..., { persistent: false })`
220
+ * can take down the thread the first time its path is deleted.
221
+ */
222
+ function guardedWatch(paths, options) {
223
+ installLostNativeWatchGuard();
224
+ // Deliberately a property access on the default export rather than a named `watch` import:
225
+ // unitTests/server/threads/watchDirFallback.test.js drives the reopen-on-exhaustion chain by
226
+ // swapping `chokidar.default.watch`, and a named import binds past that seam.
227
+ return chokidar_1.default.watch(paths, options);
228
+ }
229
+ // Test-only: number of lost native watch errors claimed so far.
230
+ function _lostNativeWatchCountForTests() {
231
+ return lostNativeWatchCount;
232
+ }
233
+ /**
234
+ * A config file replaced in place (truncate, then write) can be read back empty or
235
+ * half-written, and chokidar may emit nothing further for that write — so a watcher that
236
+ * simply drops the unusable read would serve stale config until something else touched the
237
+ * file. Re-read on a later turn instead, bounded so a genuinely empty or corrupt file cannot
238
+ * spin. Callers read synchronously, so the descriptor still never outlives a single turn.
239
+ */
240
+ const PARTIAL_READ_REREAD_DELAY_MS = 20;
241
+ const PARTIAL_READ_MAX_REREADS = 10;
242
+ class PartialReadRetry {
243
+ #filePath;
244
+ #timer;
245
+ #remaining = PARTIAL_READ_MAX_REREADS;
246
+ #closed = false;
247
+ constructor(filePath) {
248
+ this.#filePath = filePath;
249
+ }
250
+ /** False once the budget is spent, so the caller can fall back to its own error handling. */
251
+ schedule(reread) {
252
+ if (this.#closed)
253
+ return false;
254
+ if (this.#timer)
255
+ return true;
256
+ if (this.#remaining <= 0)
257
+ return false;
258
+ this.#remaining--;
259
+ this.#timer = setTimeout(() => {
260
+ this.#timer = undefined;
261
+ reread();
262
+ }, PARTIAL_READ_REREAD_DELAY_MS);
263
+ this.#timer.unref?.();
264
+ return true;
265
+ }
266
+ /** A usable read arrived, so any re-read still armed for the previous one would duplicate it. */
267
+ settled() {
268
+ if (this.#timer)
269
+ clearTimeout(this.#timer);
270
+ this.#timer = undefined;
271
+ this.#remaining = PARTIAL_READ_MAX_REREADS;
272
+ // The file recovered, so the next time it breaks is a new incident and has to be reported
273
+ // again rather than silenced by the warning it emitted weeks ago.
274
+ partialReadWarned.delete(this.#filePath);
275
+ }
276
+ /**
277
+ * The budget is spent. Distinct from `settled()` in that the report stands — the file has not
278
+ * recovered, and it is shared with every other watcher of it. The budget itself is restored,
279
+ * because the next event may be the repair, and that repair can be observed mid-write too.
280
+ * Returns whether this give-up was the one reported.
281
+ */
282
+ gaveUp(error) {
283
+ if (this.#closed)
284
+ return false;
285
+ this.#remaining = PARTIAL_READ_MAX_REREADS;
286
+ return warnPartialReadGaveUp(this.#filePath, error);
287
+ }
288
+ /** Terminal: the watcher is closing, so nothing may re-arm the re-read or report on it. */
289
+ cancel() {
290
+ if (this.#timer)
291
+ clearTimeout(this.#timer);
292
+ this.#timer = undefined;
293
+ this.#closed = true;
294
+ }
295
+ }
296
+ exports.PartialReadRetry = PartialReadRetry;
297
+ /**
298
+ * ENOENT is excluded not because it cannot be transient, but because it already has an answer:
299
+ * `OptionsWatcher` routes it to `remove` (env-only fallback at boot, then removal), and
300
+ * `RootConfigWatcher` keeps its last config rather than tearing down core features on a file
301
+ * that may just be mid-replace. Re-reading would only delay a decision already made.
302
+ */
303
+ function isPartialReadError(error) {
304
+ return !(typeof error === 'object' && error !== null && error.code === 'ENOENT');
305
+ }
306
+ /**
307
+ * A watcher that exhausts its re-read budget serves stale config from then on, so the give-up
308
+ * has to be visible — otherwise the only symptom is a config change that silently did nothing.
309
+ * Warned once per file: every root-config scope watches the same one and would otherwise report
310
+ * a single bad file once each, on every event.
311
+ */
312
+ function warnPartialReadGaveUp(filePath, error) {
313
+ if (partialReadWarned.has(filePath))
314
+ return false;
315
+ partialReadWarned.add(filePath);
316
+ // The cause matters to whoever has to fix it: a file that never parses is a typo to correct,
317
+ // while one that reads empty is a writer that never finished. Report the kind and position
318
+ // only — a YAML parse error's message quotes the offending source, and this file holds
319
+ // credentials.
320
+ const cause = error ? `: ${describeReadFailure(error)}` : ' that were empty or incomplete';
321
+ fallbackLogger.warn(`Gave up re-reading ${filePath} after ${PARTIAL_READ_MAX_REREADS} unusable reads${cause}`);
322
+ return true;
323
+ }
324
+ /**
325
+ * The kind and position of a failed config read, never its content: a YAML parse error's message
326
+ * quotes the offending source lines, and these files hold credentials.
327
+ */
328
+ function describeReadFailure(error) {
329
+ if (typeof error !== 'object' || error === null)
330
+ return 'unusable';
331
+ const { name, code, linePos } = error;
332
+ const at = linePos?.[0] ? ` at line ${linePos[0].line}, column ${linePos[0].col}` : '';
333
+ return `${code ?? name ?? 'unusable'}${at}`;
334
+ }
335
+ /** Test-only: whether a give-up warning for this file is currently suppressed as a duplicate. */
336
+ function isPartialReadWarned(filePath) {
337
+ return partialReadWarned.has(filePath);
338
+ }
339
+ /** Test-only: forget that this file was reported, so a suite can start from a known state. */
340
+ function clearPartialReadWarning(filePath) {
341
+ partialReadWarned.delete(filePath);
342
+ }
343
+ /**
344
+ * A listener that throws while applying new config is a bug in that listener, not evidence the
345
+ * file was half-written — the watcher's own state is already updated, so it keeps going.
346
+ */
347
+ function warnWatcherListenerError(filePath, error) {
348
+ fallbackLogger.warn(`Error applying a configuration change from ${filePath}`, error);
72
349
  }
73
350
  //# sourceMappingURL=watcherFallback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watcherFallback.js","sourceRoot":"","sources":["../../utility/watcherFallback.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,EAAE;AACF,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAChF,0EAA0E;;;AAc1E,4DAIC;AAiCD,kDAYC;AAGD,wCAEC;AAlED,iEAA2D;AAE3D,iFAAiF;AACjF,2CAA2C;AAC3C,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,MAAM,cAAc,GAAG,IAAA,gCAAa,EAAC,SAAS,CAAC,CAAC;AAEhD;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,KAAc;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,IAAI,GAAI,KAA2B,CAAC,IAAI,CAAC;IAC/C,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAAG;IACvC,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,cAAc,EAAE,IAAI;CACX,CAAC;AAEX;;;;;GAKG;AACU,QAAA,kCAAkC,GAAG;IACjD,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,cAAc,EAAE,IAAI;CACX,CAAC;AAEX;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,WAAmB;IACtD,IAAI,gBAAgB;QAAE,OAAO;IAC7B,gBAAgB,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,IAAI,EAAE,CACpB,8CAA8C,WAAW,IAAI;QAC5D,iEAAiE;QACjE,6EAA6E;QAC7E,4CAA4C;QAC5C,+DAA+D;QAC/D,sDAAsD;QACtD,kEAAkE,CACnE,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,SAAgB,cAAc;IAC7B,gBAAgB,GAAG,KAAK,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"watcherFallback.js","sourceRoot":"","sources":["../../utility/watcherFallback.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,17 @@
1
1
  import Joi from 'joi';
2
+ /**
3
+ * What `deploy_component` writes into a root-config entry, plus the deployment-level keys
4
+ * componentLoader reads off it — the shape of a `sql` application deployed before the name was
5
+ * reserved. Closed to new keys: nothing new may take this shape.
6
+ */
7
+ export declare const LEGACY_SQL_APPLICATION_KEYS: string[];
8
+ export declare function isLegacySqlApplicationEntry(value: unknown): boolean;
2
9
  export declare const routeConstraints: Joi.AlternativesSchema<any>;
10
+ /**
11
+ * Validate a `models:` block on its own — the hot-reload path applies a watched file's block
12
+ * without the full boot validation, and must enforce the same schema boot does.
13
+ */
14
+ export declare function validateModelsBlock(models: any): Joi.ValidationResult<any>;
3
15
  export declare function configValidator(configJson: any, skipFsValidation?: boolean): Joi.ValidationResult<any>;
4
16
  export declare const UDS_PATH_MAX_BYTES: number;
5
17
  /**