harper 5.1.20 → 5.2.0-alpha.5

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 (395) hide show
  1. package/agent/operations.ts +13 -16
  2. package/components/Application.ts +188 -7
  3. package/components/ApplicationScope.ts +3 -0
  4. package/components/Scope.ts +12 -0
  5. package/components/anthropic/index.ts +9 -2
  6. package/components/bedrock/index.ts +25 -2
  7. package/components/componentLoader.ts +56 -7
  8. package/components/componentSecrets.ts +451 -0
  9. package/components/deploymentRecorder.ts +7 -1
  10. package/components/mcp/adapters/fastify.ts +3 -0
  11. package/components/mcp/adapters/harperHttp.ts +3 -0
  12. package/components/mcp/audit.ts +21 -6
  13. package/components/mcp/customResourceRegistry.ts +17 -38
  14. package/components/mcp/listChanged.ts +37 -20
  15. package/components/mcp/quota.ts +145 -0
  16. package/components/mcp/rateLimit.ts +152 -14
  17. package/components/mcp/resources.ts +2 -4
  18. package/components/mcp/toolRegistry.ts +73 -4
  19. package/components/mcp/tools/application.ts +77 -8
  20. package/components/mcp/tools/operations.ts +106 -36
  21. package/components/mcp/tools/schemas/operationDescriptions.ts +4 -4
  22. package/components/mcp/tools/schemas/operations.ts +5 -0
  23. package/components/mcp/transport.ts +55 -4
  24. package/components/ollama/index.ts +6 -2
  25. package/components/openai/index.ts +9 -2
  26. package/components/operations.js +204 -10
  27. package/components/operationsValidation.js +173 -0
  28. package/components/secretOperations.ts +498 -0
  29. package/config/configUtils.ts +25 -1
  30. package/config-app.schema.json +81 -0
  31. package/config-root.schema.json +8 -1
  32. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -3
  33. package/dataLayer/readAuditLog.ts +14 -0
  34. package/dataLayer/schemaDescribe.ts +1 -0
  35. package/dist/agent/operations.d.ts +7 -4
  36. package/dist/agent/operations.js +13 -15
  37. package/dist/agent/operations.js.map +1 -1
  38. package/dist/components/Application.d.ts +25 -2
  39. package/dist/components/Application.js +166 -7
  40. package/dist/components/Application.js.map +1 -1
  41. package/dist/components/ApplicationScope.d.ts +2 -0
  42. package/dist/components/ApplicationScope.js +3 -0
  43. package/dist/components/ApplicationScope.js.map +1 -1
  44. package/dist/components/Scope.d.ts +8 -0
  45. package/dist/components/Scope.js +11 -0
  46. package/dist/components/Scope.js.map +1 -1
  47. package/dist/components/anthropic/index.d.ts +4 -1
  48. package/dist/components/anthropic/index.js +4 -2
  49. package/dist/components/anthropic/index.js.map +1 -1
  50. package/dist/components/bedrock/index.d.ts +4 -1
  51. package/dist/components/bedrock/index.js +22 -2
  52. package/dist/components/bedrock/index.js.map +1 -1
  53. package/dist/components/componentLoader.d.ts +2 -0
  54. package/dist/components/componentLoader.js +52 -10
  55. package/dist/components/componentLoader.js.map +1 -1
  56. package/dist/components/componentSecrets.d.ts +63 -0
  57. package/dist/components/componentSecrets.js +405 -0
  58. package/dist/components/componentSecrets.js.map +1 -0
  59. package/dist/components/deploymentRecorder.d.ts +3 -0
  60. package/dist/components/deploymentRecorder.js +4 -3
  61. package/dist/components/deploymentRecorder.js.map +1 -1
  62. package/dist/components/mcp/adapters/fastify.d.ts +2 -0
  63. package/dist/components/mcp/adapters/fastify.js +1 -0
  64. package/dist/components/mcp/adapters/fastify.js.map +1 -1
  65. package/dist/components/mcp/adapters/harperHttp.d.ts +2 -0
  66. package/dist/components/mcp/adapters/harperHttp.js +1 -0
  67. package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
  68. package/dist/components/mcp/audit.d.ts +2 -2
  69. package/dist/components/mcp/audit.js +20 -5
  70. package/dist/components/mcp/audit.js.map +1 -1
  71. package/dist/components/mcp/customResourceRegistry.d.ts +5 -12
  72. package/dist/components/mcp/customResourceRegistry.js +15 -30
  73. package/dist/components/mcp/customResourceRegistry.js.map +1 -1
  74. package/dist/components/mcp/listChanged.d.ts +7 -2
  75. package/dist/components/mcp/listChanged.js +28 -0
  76. package/dist/components/mcp/listChanged.js.map +1 -1
  77. package/dist/components/mcp/quota.d.ts +31 -0
  78. package/dist/components/mcp/quota.js +155 -0
  79. package/dist/components/mcp/quota.js.map +1 -0
  80. package/dist/components/mcp/rateLimit.d.ts +19 -3
  81. package/dist/components/mcp/rateLimit.js +129 -13
  82. package/dist/components/mcp/rateLimit.js.map +1 -1
  83. package/dist/components/mcp/resources.js.map +1 -1
  84. package/dist/components/mcp/toolRegistry.d.ts +39 -1
  85. package/dist/components/mcp/toolRegistry.js +60 -5
  86. package/dist/components/mcp/toolRegistry.js.map +1 -1
  87. package/dist/components/mcp/tools/application.d.ts +8 -1
  88. package/dist/components/mcp/tools/application.js +65 -5
  89. package/dist/components/mcp/tools/application.js.map +1 -1
  90. package/dist/components/mcp/tools/operations.d.ts +15 -3
  91. package/dist/components/mcp/tools/operations.js +99 -38
  92. package/dist/components/mcp/tools/operations.js.map +1 -1
  93. package/dist/components/mcp/tools/schemas/operationDescriptions.js +4 -4
  94. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  95. package/dist/components/mcp/tools/schemas/operations.js +4 -0
  96. package/dist/components/mcp/tools/schemas/operations.js.map +1 -1
  97. package/dist/components/mcp/transport.d.ts +6 -0
  98. package/dist/components/mcp/transport.js +47 -3
  99. package/dist/components/mcp/transport.js.map +1 -1
  100. package/dist/components/ollama/index.d.ts +4 -1
  101. package/dist/components/ollama/index.js +4 -2
  102. package/dist/components/ollama/index.js.map +1 -1
  103. package/dist/components/openai/index.d.ts +4 -1
  104. package/dist/components/openai/index.js +4 -2
  105. package/dist/components/openai/index.js.map +1 -1
  106. package/dist/components/operations.d.ts +39 -0
  107. package/dist/components/operations.js +194 -2
  108. package/dist/components/operations.js.map +1 -1
  109. package/dist/components/operationsValidation.d.ts +38 -0
  110. package/dist/components/operationsValidation.js +155 -0
  111. package/dist/components/operationsValidation.js.map +1 -1
  112. package/dist/components/secretOperations.d.ts +113 -0
  113. package/dist/components/secretOperations.js +475 -0
  114. package/dist/components/secretOperations.js.map +1 -0
  115. package/dist/config/configUtils.d.ts +4 -1
  116. package/dist/config/configUtils.js +18 -1
  117. package/dist/config/configUtils.js.map +1 -1
  118. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -3
  119. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
  120. package/dist/dataLayer/readAuditLog.js +11 -0
  121. package/dist/dataLayer/readAuditLog.js.map +1 -1
  122. package/dist/dataLayer/schemaDescribe.js +2 -0
  123. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  124. package/dist/globals.d.ts +1 -1
  125. package/dist/globals.js +1 -0
  126. package/dist/globals.js.map +1 -1
  127. package/dist/index.d.ts +3 -0
  128. package/dist/index.js +1 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/json/systemSchema.json +38 -0
  131. package/dist/resources/DatabaseTransaction.d.ts +31 -3
  132. package/dist/resources/DatabaseTransaction.js +190 -29
  133. package/dist/resources/DatabaseTransaction.js.map +1 -1
  134. package/dist/resources/LMDBTransaction.d.ts +1 -1
  135. package/dist/resources/LMDBTransaction.js +43 -5
  136. package/dist/resources/LMDBTransaction.js.map +1 -1
  137. package/dist/resources/PrimaryRocksDatabase.d.ts +51 -0
  138. package/dist/resources/PrimaryRocksDatabase.js +194 -0
  139. package/dist/resources/PrimaryRocksDatabase.js.map +1 -0
  140. package/dist/resources/RecordEncoder.d.ts +1 -0
  141. package/dist/resources/RecordEncoder.js +81 -75
  142. package/dist/resources/RecordEncoder.js.map +1 -1
  143. package/dist/resources/RequestTarget.d.ts +19 -0
  144. package/dist/resources/RequestTarget.js.map +1 -1
  145. package/dist/resources/Resource.d.ts +0 -1
  146. package/dist/resources/Resource.js +103 -16
  147. package/dist/resources/Resource.js.map +1 -1
  148. package/dist/resources/ResourceInterface.d.ts +6 -2
  149. package/dist/resources/ResourceInterface.js.map +1 -1
  150. package/dist/resources/Resources.js.map +1 -1
  151. package/dist/resources/Table.d.ts +6 -4
  152. package/dist/resources/Table.js +247 -24
  153. package/dist/resources/Table.js.map +1 -1
  154. package/dist/resources/analytics/read.js +25 -28
  155. package/dist/resources/analytics/read.js.map +1 -1
  156. package/dist/resources/blob.js +165 -22
  157. package/dist/resources/blob.js.map +1 -1
  158. package/dist/resources/crdt.d.ts +2 -0
  159. package/dist/resources/crdt.js +45 -36
  160. package/dist/resources/crdt.js.map +1 -1
  161. package/dist/resources/databases.d.ts +1 -0
  162. package/dist/resources/databases.js +134 -7
  163. package/dist/resources/databases.js.map +1 -1
  164. package/dist/resources/graphql.js +8 -0
  165. package/dist/resources/graphql.js.map +1 -1
  166. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +35 -5
  167. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +239 -14
  168. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  169. package/dist/resources/jsResource.js +6 -0
  170. package/dist/resources/jsResource.js.map +1 -1
  171. package/dist/resources/loadEnv.js +30 -3
  172. package/dist/resources/loadEnv.js.map +1 -1
  173. package/dist/resources/login.js +2 -2
  174. package/dist/resources/login.js.map +1 -1
  175. package/dist/resources/models/Models.js +14 -3
  176. package/dist/resources/models/Models.js.map +1 -1
  177. package/dist/resources/models/embedHook.js +10 -2
  178. package/dist/resources/models/embedHook.js.map +1 -1
  179. package/dist/resources/models/openaiStream.d.ts +56 -0
  180. package/dist/resources/models/openaiStream.js +94 -0
  181. package/dist/resources/models/openaiStream.js.map +1 -0
  182. package/dist/resources/replayLogs.js +4 -3
  183. package/dist/resources/replayLogs.js.map +1 -1
  184. package/dist/resources/search.d.ts +1 -1
  185. package/dist/resources/search.js +104 -11
  186. package/dist/resources/search.js.map +1 -1
  187. package/dist/resources/secretDecryptor.d.ts +54 -0
  188. package/dist/resources/secretDecryptor.js +131 -0
  189. package/dist/resources/secretDecryptor.js.map +1 -0
  190. package/dist/resources/tracked.js +15 -5
  191. package/dist/resources/tracked.js.map +1 -1
  192. package/dist/security/auth.js +71 -8
  193. package/dist/security/auth.js.map +1 -1
  194. package/dist/security/jsLoader.js +11 -0
  195. package/dist/security/jsLoader.js.map +1 -1
  196. package/dist/security/tokenAuthentication.d.ts +9 -1
  197. package/dist/security/tokenAuthentication.js +31 -1
  198. package/dist/security/tokenAuthentication.js.map +1 -1
  199. package/dist/server/DurableSubscriptionsSession.d.ts +1 -1
  200. package/dist/server/DurableSubscriptionsSession.js +8 -4
  201. package/dist/server/DurableSubscriptionsSession.js.map +1 -1
  202. package/dist/server/REST.js +28 -9
  203. package/dist/server/REST.js.map +1 -1
  204. package/dist/server/fastifyRoutes.js +11 -1
  205. package/dist/server/fastifyRoutes.js.map +1 -1
  206. package/dist/server/graphqlQuerying.js +4 -3
  207. package/dist/server/graphqlQuerying.js.map +1 -1
  208. package/dist/server/http.d.ts +40 -2
  209. package/dist/server/http.js +560 -77
  210. package/dist/server/http.js.map +1 -1
  211. package/dist/server/itc/serverHandlers.js +64 -0
  212. package/dist/server/itc/serverHandlers.js.map +1 -1
  213. package/dist/server/liveSubscriptionAuth.d.ts +12 -0
  214. package/dist/server/liveSubscriptionAuth.js +140 -0
  215. package/dist/server/liveSubscriptionAuth.js.map +1 -0
  216. package/dist/server/loadRootComponents.js +2 -1
  217. package/dist/server/loadRootComponents.js.map +1 -1
  218. package/dist/server/middlewareChain.d.ts +44 -1
  219. package/dist/server/middlewareChain.js +86 -10
  220. package/dist/server/middlewareChain.js.map +1 -1
  221. package/dist/server/mqtt.js +2 -1
  222. package/dist/server/mqtt.js.map +1 -1
  223. package/dist/server/operationsServer.js +1 -1
  224. package/dist/server/operationsServer.js.map +1 -1
  225. package/dist/server/serverHelpers/Headers.d.ts +9 -0
  226. package/dist/server/serverHelpers/Headers.js +22 -0
  227. package/dist/server/serverHelpers/Headers.js.map +1 -1
  228. package/dist/server/serverHelpers/JSONStream.js +3 -3
  229. package/dist/server/serverHelpers/JSONStream.js.map +1 -1
  230. package/dist/server/serverHelpers/Request.d.ts +52 -1
  231. package/dist/server/serverHelpers/Request.js +122 -1
  232. package/dist/server/serverHelpers/Request.js.map +1 -1
  233. package/dist/server/serverHelpers/contentTypes.js +3 -8
  234. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  235. package/dist/server/serverHelpers/progressEmitter.d.ts +19 -0
  236. package/dist/server/serverHelpers/progressEmitter.js +52 -4
  237. package/dist/server/serverHelpers/progressEmitter.js.map +1 -1
  238. package/dist/server/serverHelpers/registeredOperations.d.ts +40 -0
  239. package/dist/server/serverHelpers/registeredOperations.js +286 -0
  240. package/dist/server/serverHelpers/registeredOperations.js.map +1 -0
  241. package/dist/server/serverHelpers/serverHandlers.js +11 -5
  242. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  243. package/dist/server/serverHelpers/serverUtilities.d.ts +1 -0
  244. package/dist/server/serverHelpers/serverUtilities.js +67 -5
  245. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  246. package/dist/server/serverHelpers/uwsServer.d.ts +80 -0
  247. package/dist/server/serverHelpers/uwsServer.js +433 -0
  248. package/dist/server/serverHelpers/uwsServer.js.map +1 -0
  249. package/dist/server/static.d.ts +0 -15
  250. package/dist/server/static.js +161 -2
  251. package/dist/server/static.js.map +1 -1
  252. package/dist/server/status/index.d.ts +4 -1
  253. package/dist/server/status/index.js +64 -4
  254. package/dist/server/status/index.js.map +1 -1
  255. package/dist/server/threads/manageThreads.d.ts +10 -0
  256. package/dist/server/threads/manageThreads.js +107 -4
  257. package/dist/server/threads/manageThreads.js.map +1 -1
  258. package/dist/server/threads/socketRouter.js +5 -1
  259. package/dist/server/threads/socketRouter.js.map +1 -1
  260. package/dist/server/threads/threadServer.js +92 -14
  261. package/dist/server/threads/threadServer.js.map +1 -1
  262. package/dist/upgrade/directives/5-2-0.d.ts +7 -0
  263. package/dist/upgrade/directives/5-2-0.js +108 -0
  264. package/dist/upgrade/directives/5-2-0.js.map +1 -0
  265. package/dist/upgrade/directives/directivesController.js +2 -1
  266. package/dist/upgrade/directives/directivesController.js.map +1 -1
  267. package/dist/utility/common_utils.js +5 -0
  268. package/dist/utility/common_utils.js.map +1 -1
  269. package/dist/utility/envFile.d.ts +41 -0
  270. package/dist/utility/envFile.js +221 -0
  271. package/dist/utility/envFile.js.map +1 -0
  272. package/dist/utility/globalSchema.d.ts +9 -0
  273. package/dist/utility/hdbTerms.d.ts +25 -0
  274. package/dist/utility/hdbTerms.js +31 -0
  275. package/dist/utility/hdbTerms.js.map +1 -1
  276. package/dist/utility/logging/harper_logger.d.ts +21 -0
  277. package/dist/utility/logging/harper_logger.js +160 -8
  278. package/dist/utility/logging/harper_logger.js.map +1 -1
  279. package/dist/utility/logging/logRotator.js +29 -17
  280. package/dist/utility/logging/logRotator.js.map +1 -1
  281. package/dist/utility/logging/readLog.d.ts +1 -1
  282. package/dist/utility/logging/readLog.js +305 -2
  283. package/dist/utility/logging/readLog.js.map +1 -1
  284. package/dist/utility/operationPermissions.d.ts +18 -0
  285. package/dist/utility/operationPermissions.js +35 -1
  286. package/dist/utility/operationPermissions.js.map +1 -1
  287. package/dist/utility/operation_authorization.d.ts +17 -0
  288. package/dist/utility/operation_authorization.js +38 -0
  289. package/dist/utility/operation_authorization.js.map +1 -1
  290. package/dist/utility/secretEnvelope.d.ts +30 -0
  291. package/dist/utility/secretEnvelope.js +94 -0
  292. package/dist/utility/secretEnvelope.js.map +1 -0
  293. package/dist/utility/signalling.d.ts +7 -0
  294. package/dist/utility/signalling.js +16 -0
  295. package/dist/utility/signalling.js.map +1 -1
  296. package/dist/validation/configValidator.js +70 -24
  297. package/dist/validation/configValidator.js.map +1 -1
  298. package/index.ts +4 -0
  299. package/json/systemSchema.json +38 -0
  300. package/npm-shrinkwrap.json +15066 -9347
  301. package/package.json +13 -8
  302. package/resources/DESIGN.md +15 -12
  303. package/resources/DatabaseTransaction.ts +206 -37
  304. package/resources/LMDBTransaction.ts +43 -9
  305. package/resources/PrimaryRocksDatabase.ts +201 -0
  306. package/resources/RecordEncoder.ts +81 -69
  307. package/resources/RequestTarget.ts +21 -0
  308. package/resources/Resource.ts +109 -25
  309. package/resources/ResourceInterface.ts +6 -2
  310. package/resources/Resources.ts +1 -3
  311. package/resources/Table.ts +238 -29
  312. package/resources/analytics/read.ts +25 -30
  313. package/resources/blob.ts +159 -23
  314. package/resources/crdt.ts +37 -31
  315. package/resources/databases.ts +143 -6
  316. package/resources/graphql.ts +8 -0
  317. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +251 -17
  318. package/resources/jsResource.ts +6 -0
  319. package/resources/loadEnv.ts +34 -3
  320. package/resources/login.ts +2 -2
  321. package/resources/models/Models.ts +19 -3
  322. package/resources/models/embedHook.ts +13 -2
  323. package/resources/models/openaiStream.ts +133 -0
  324. package/resources/replayLogs.ts +4 -3
  325. package/resources/search.ts +113 -11
  326. package/resources/secretDecryptor.ts +159 -0
  327. package/resources/tracked.ts +24 -17
  328. package/security/auth.ts +70 -10
  329. package/security/jsLoader.ts +12 -0
  330. package/security/tokenAuthentication.ts +42 -1
  331. package/server/DESIGN.md +10 -0
  332. package/server/DurableSubscriptionsSession.ts +8 -4
  333. package/server/REST.ts +26 -9
  334. package/server/fastifyRoutes.ts +10 -1
  335. package/server/graphqlQuerying.ts +4 -3
  336. package/server/http.ts +563 -77
  337. package/server/itc/serverHandlers.js +70 -0
  338. package/server/liveSubscriptionAuth.ts +152 -0
  339. package/server/loadRootComponents.js +2 -1
  340. package/server/middlewareChain.ts +107 -17
  341. package/server/mqtt.ts +2 -1
  342. package/server/operationsServer.ts +2 -2
  343. package/server/serverHelpers/Headers.ts +24 -0
  344. package/server/serverHelpers/JSONStream.ts +3 -3
  345. package/server/serverHelpers/Request.ts +127 -0
  346. package/server/serverHelpers/contentTypes.ts +3 -8
  347. package/server/serverHelpers/progressEmitter.ts +55 -5
  348. package/server/serverHelpers/registeredOperations.ts +259 -0
  349. package/server/serverHelpers/serverHandlers.js +11 -5
  350. package/server/serverHelpers/serverUtilities.ts +88 -5
  351. package/server/serverHelpers/uwsServer.ts +488 -0
  352. package/server/static.ts +180 -2
  353. package/server/status/index.ts +72 -4
  354. package/server/threads/manageThreads.js +102 -4
  355. package/server/threads/socketRouter.ts +5 -1
  356. package/server/threads/threadServer.js +93 -10
  357. package/studio/web/assets/{Chat-SdD1EZca.js → Chat-Cv_2paZE.js} +2 -2
  358. package/studio/web/assets/{Chat-SdD1EZca.js.map → Chat-Cv_2paZE.js.map} +1 -1
  359. package/studio/web/assets/{FloatingChat-GMq6tHK9.js → FloatingChat-CPyPIcVR.js} +4 -4
  360. package/studio/web/assets/{FloatingChat-GMq6tHK9.js.map → FloatingChat-CPyPIcVR.js.map} +1 -1
  361. package/studio/web/assets/{applications-B5hhv7uA.js → applications-C0jT2vdZ.js} +2 -2
  362. package/studio/web/assets/{applications-B5hhv7uA.js.map → applications-C0jT2vdZ.js.map} +1 -1
  363. package/studio/web/assets/{index-VFcpNWgq.js → index-D_GKOkhn.js} +6 -6
  364. package/studio/web/assets/index-D_GKOkhn.js.map +1 -0
  365. package/studio/web/assets/{index.lazy-DgcJojIA.js → index.lazy-CAmCIA65.js} +4 -4
  366. package/studio/web/assets/{index.lazy-DgcJojIA.js.map → index.lazy-CAmCIA65.js.map} +1 -1
  367. package/studio/web/assets/{profile-BqN-8vzm.js → profile-CaF-4aZe.js} +2 -2
  368. package/studio/web/assets/{profile-BqN-8vzm.js.map → profile-CaF-4aZe.js.map} +1 -1
  369. package/studio/web/assets/{setComponentFile-CHFvFq9u.js → setComponentFile-DLW1DHCt.js} +2 -2
  370. package/studio/web/assets/{setComponentFile-CHFvFq9u.js.map → setComponentFile-DLW1DHCt.js.map} +1 -1
  371. package/studio/web/assets/{setup-CQ3vWJSr.js → setup-TGCErIhq.js} +2 -2
  372. package/studio/web/assets/{setup-CQ3vWJSr.js.map → setup-TGCErIhq.js.map} +1 -1
  373. package/studio/web/assets/{status-BsW5fjuh.js → status-DG0Maoao.js} +2 -2
  374. package/studio/web/assets/{status-BsW5fjuh.js.map → status-DG0Maoao.js.map} +1 -1
  375. package/studio/web/assets/{swagger-ui-react-DITdeB9-.js → swagger-ui-react-8T4SgQ1m.js} +2 -2
  376. package/studio/web/assets/{swagger-ui-react-DITdeB9-.js.map → swagger-ui-react-8T4SgQ1m.js.map} +1 -1
  377. package/studio/web/assets/{tsMode-Dyph-OUs.js → tsMode-DJ6Sl24Q.js} +2 -2
  378. package/studio/web/assets/{tsMode-Dyph-OUs.js.map → tsMode-DJ6Sl24Q.js.map} +1 -1
  379. package/studio/web/assets/{useEntityRestURL-D0QTUqex.js → useEntityRestURL-JO2mfWTQ.js} +2 -2
  380. package/studio/web/assets/{useEntityRestURL-D0QTUqex.js.map → useEntityRestURL-JO2mfWTQ.js.map} +1 -1
  381. package/studio/web/index.html +1 -1
  382. package/upgrade/directives/5-2-0.ts +82 -0
  383. package/upgrade/directives/directivesController.ts +2 -1
  384. package/utility/common_utils.ts +5 -0
  385. package/utility/envFile.ts +218 -0
  386. package/utility/hdbTerms.ts +31 -0
  387. package/utility/logging/harper_logger.ts +156 -8
  388. package/utility/logging/logRotator.ts +24 -14
  389. package/utility/logging/readLog.ts +323 -2
  390. package/utility/operationPermissions.ts +35 -1
  391. package/utility/operation_authorization.ts +74 -1
  392. package/utility/secretEnvelope.ts +113 -0
  393. package/utility/signalling.ts +15 -0
  394. package/validation/configValidator.ts +78 -25
  395. package/studio/web/assets/index-VFcpNWgq.js.map +0 -1
@@ -45,6 +45,7 @@ const events_1 = require("events");
45
45
  const configUtils_ts_1 = require("../../config/configUtils.js");
46
46
  const hdbError_ts_1 = require("../errors/hdbError.js");
47
47
  const Server_ts_1 = require("../../server/Server.js");
48
+ const string_decoder_1 = require("string_decoder");
48
49
  const DEFAULT_READ_LOG_LIMIT = 1000;
49
50
  const ESTIMATED_AVERAGE_ENTRY_SIZE = 200;
50
51
  exports.default = readLog;
@@ -59,8 +60,10 @@ async function readLog(request) {
59
60
  if (validation) {
60
61
  throw (0, hdbError_ts_1.handleHDBError)(validation, validation.message, hdbError_ts_1.hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST, undefined, undefined, true);
61
62
  }
62
- // start pulling logs from the other nodes now so it can be done in parallel
63
- let whenReplicatedResponse = Server_ts_1.server.replication.replicateOperation(request);
63
+ // Start pulling logs from the other nodes now so it can be done in parallel. A live SSE
64
+ // tail (below) is local-only and never fans out, so skip replication on that path — the
65
+ // buffered read still aggregates the cluster for point-in-time queries.
66
+ let whenReplicatedResponse = isStreamingRequest(request) ? undefined : Server_ts_1.server.replication.replicateOperation(request);
64
67
  const logPath = (0, configUtils_ts_1.getConfigPath)(hdbTerms.HDB_SETTINGS_NAMES.LOG_PATH_KEY);
65
68
  const rawLogName = request.log_name === undefined ? hdbTerms.LOG_NAMES.HDB : request.log_name;
66
69
  const logName = path.extname(rawLogName) === '.log' ? rawLogName : `${rawLogName}.log`;
@@ -80,6 +83,24 @@ async function readLog(request) {
80
83
  const start = request.start === undefined ? 0 : request.start;
81
84
  const max = start + limit;
82
85
  const filter = request.filter;
86
+ // SSE mode: the server attached a ProgressEmitter as `request.progress` (see
87
+ // serverHandlers.js) because the client sent `Accept: text/event-stream`. Instead of a
88
+ // one-shot array, stream the recent backlog and then tail new lines live until the client
89
+ // disconnects. Scoped to this node's log file; the buffered path above is what aggregates
90
+ // the cluster for point-in-time reads.
91
+ if (isStreamingRequest(request)) {
92
+ return streamLogTail(request.progress, {
93
+ readLogPath,
94
+ level,
95
+ levelDefined,
96
+ from,
97
+ fromDefined,
98
+ to,
99
+ toDefined,
100
+ limit,
101
+ filter,
102
+ });
103
+ }
83
104
  let fileStart = 0;
84
105
  if (order === 'desc' && !from && !to) {
85
106
  fileStart = Math.max(fs.statSync(readLogPath).size - (max + 5) * ESTIMATED_AVERAGE_ENTRY_SIZE, 0);
@@ -369,4 +390,286 @@ function insertAscending(value, result) {
369
390
  }
370
391
  result.splice(low, 0, value);
371
392
  }
393
+ // The marker that begins every log line — `TIMESTAMP [thread] [level]...: ` — matching the
394
+ // buffered reader's regex so the two paths parse identically.
395
+ const LOG_ENTRY_MARKER = /(?:^|\n)(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:[\d.]+Z) \[(.+?)]: /g;
396
+ // How often a live tail polls the log file for appended bytes. fs.watchFile is stat-poll
397
+ // based, which is far more robust across platforms and log rotation than fs.watch's rename
398
+ // events; sub-second latency is plenty for a human watching logs.
399
+ const TAIL_POLL_INTERVAL_MS = 250;
400
+ // Cap the live-tail backlog regardless of a caller-supplied `limit`, so an unbounded `limit`
401
+ // can neither seek-read a huge slice into memory nor drive an O(n·limit) eviction on connect.
402
+ // Deeper history is the buffered read_log's job; the tail is about what happens next.
403
+ const MAX_SSE_BACKLOG_ENTRIES = 1000;
404
+ // A transient delta-read failure is retried this many times (with this delay) before the tail
405
+ // gives up and emits a terminal error so the client can fall back to polling.
406
+ const TAIL_READ_MAX_RETRIES = 3;
407
+ const TAIL_READ_RETRY_MS = 250;
408
+ function isStreamingRequest(request) {
409
+ return !!request.progress && typeof request.progress.emit === 'function';
410
+ }
411
+ function makeLogEntry(timestamp, tagsString, message) {
412
+ const tags = tagsString.split('] [');
413
+ const thread = tags[0];
414
+ const level = tags[1];
415
+ tags.splice(0, 2);
416
+ return { timestamp, thread, level, tags, message };
417
+ }
418
+ function matchesLogFilters(entry, params) {
419
+ const { level, levelDefined, from, fromDefined, to, toDefined, filter } = params;
420
+ if (filter !== undefined) {
421
+ const hit = ['timestamp', 'thread', 'level', 'tags', 'message'].some((attr) => {
422
+ const value = entry[attr];
423
+ if (Array.isArray(value))
424
+ return value.some((v) => v.includes(filter));
425
+ return typeof value === 'string' && value.includes(filter);
426
+ });
427
+ if (!hit)
428
+ return false;
429
+ }
430
+ if (levelDefined && entry.level !== level)
431
+ return false;
432
+ if (fromDefined || toDefined) {
433
+ const when = new Date(entry.timestamp);
434
+ if (fromDefined && when < from)
435
+ return false;
436
+ if (toDefined && when > to)
437
+ return false;
438
+ }
439
+ return true;
440
+ }
441
+ // Stateful incremental parser: fed appended chunks over time, it emits an entry only once the
442
+ // next marker delimits its (possibly multi-line) message. It never force-emits a pending
443
+ // entry — the same instance spans the backlog read and the live tail (see streamLogTail), so a
444
+ // line torn across the snapshot boundary stays pending and is completed by the tail's next
445
+ // read rather than emitted truncated with its continuation dropped. `reset()` clears state on
446
+ // log rotation.
447
+ function createIncrementalLogParser(onEntry) {
448
+ let remaining = '';
449
+ let pending;
450
+ // One RegExp per parser instance. Each push runs `exec` to completion (until null), which
451
+ // resets lastIndex to 0; we also reset it explicitly at the top of push for robustness.
452
+ const reader = new RegExp(LOG_ENTRY_MARKER);
453
+ return {
454
+ push(text) {
455
+ const data = remaining + text;
456
+ reader.lastIndex = 0;
457
+ let lastPosition = 0;
458
+ let parsed;
459
+ while ((parsed = reader.exec(data))) {
460
+ if (pending) {
461
+ onEntry(makeLogEntry(pending.timestamp, pending.tagsString, data.slice(lastPosition, parsed.index)));
462
+ }
463
+ const [intro, timestamp, tagsString] = parsed;
464
+ pending = { timestamp, tagsString };
465
+ lastPosition = parsed.index + intro.length;
466
+ }
467
+ remaining = data.slice(lastPosition);
468
+ },
469
+ reset() {
470
+ pending = undefined;
471
+ remaining = '';
472
+ },
473
+ };
474
+ }
475
+ /**
476
+ * Stream the local log over SSE: replay the recent (bounded) backlog, then tail newly-appended
477
+ * lines until the client disconnects (the emitter's `signal` aborts) — or, if reads fail past
478
+ * retry, emit a terminal `error` so the client falls back to polling instead of watching a
479
+ * silently-stalled "live" stream. Resolves when the tail ends so the SSE wrapper can close.
480
+ *
481
+ * A single parser and decoder span both the backlog read and the live tail with no flush at
482
+ * the seam, so a line (or multi-byte character) torn across the snapshot boundary stays pending
483
+ * and is completed by the tail's next read — never emitted truncated with its continuation
484
+ * dropped. (A consequence: the newest backlog line is delivered once the following line
485
+ * delimits it, matching how the tail delimits every entry.)
486
+ */
487
+ function streamLogTail(progress, params) {
488
+ const { readLogPath, limit } = params;
489
+ const signal = progress.signal;
490
+ const emit = (entry) => progress.emit('log', entry);
491
+ // The tail never shows more backlog than this, whatever `limit` asks for (see the constant).
492
+ const backlogLimit = Math.min(limit, MAX_SSE_BACKLOG_ENTRIES);
493
+ return new Promise((resolve) => {
494
+ if (signal?.aborted)
495
+ return resolve();
496
+ let offset = 0;
497
+ let pumping = false;
498
+ let pumpQueued = false;
499
+ let watching = false;
500
+ let finished = false;
501
+ let readFailures = 0;
502
+ // While replaying the backlog, matching entries are collected here (capped) rather than
503
+ // emitted; once the boundary is passed `backlogPhase` flips and entries emit live.
504
+ let backlogPhase = true;
505
+ const backlogEntries = [];
506
+ // One decoder + one parser for the whole session (backlog + tail): a multi-byte char (or a
507
+ // line) split across the boundary is held/pending and finished by the next read, not
508
+ // flushed as U+FFFD or truncated. Reset together only on rotation.
509
+ let decoder = new string_decoder_1.StringDecoder('utf8');
510
+ const parser = createIncrementalLogParser((entry) => {
511
+ if (!matchesLogFilters(entry, params))
512
+ return;
513
+ if (backlogPhase) {
514
+ backlogEntries.push(entry);
515
+ if (backlogEntries.length > backlogLimit)
516
+ backlogEntries.shift();
517
+ }
518
+ else {
519
+ emit(entry);
520
+ }
521
+ });
522
+ function finish() {
523
+ if (finished)
524
+ return;
525
+ finished = true;
526
+ if (watching)
527
+ fs.unwatchFile(readLogPath, onChange);
528
+ resolve();
529
+ }
530
+ // Wait `ms`, or resolve early on disconnect so a retry delay never outlives the connection.
531
+ const abortableDelay = (ms) => new Promise((res) => {
532
+ if (signal?.aborted)
533
+ return res();
534
+ const timer = setTimeout(() => {
535
+ signal?.removeEventListener('abort', onAbort);
536
+ res();
537
+ }, ms);
538
+ timer.unref?.();
539
+ const onAbort = () => {
540
+ clearTimeout(timer);
541
+ res();
542
+ };
543
+ signal?.addEventListener('abort', onAbort, { once: true });
544
+ });
545
+ // Stream [offset, end] inclusive through the session decoder + shared parser, decoding and
546
+ // pushing each fs chunk as it arrives (never materializing the whole delta) and advancing
547
+ // `offset` per chunk, so peak memory is one chunk and a mid-range error simply resumes from
548
+ // where it stopped. Yields to backpressure between chunks. Returns false if the read errored.
549
+ async function drainTo(end) {
550
+ const rs = fs.createReadStream(readLogPath, { start: offset, end });
551
+ try {
552
+ for await (const chunk of rs) {
553
+ if (signal?.aborted) {
554
+ rs.destroy();
555
+ return true;
556
+ }
557
+ parser.push(decoder.write(chunk));
558
+ offset += chunk.length;
559
+ if (progress.paused)
560
+ await progress.whenWritable();
561
+ }
562
+ return true;
563
+ }
564
+ catch (err) {
565
+ harper_logger_ts_1.default.warn(`read_log SSE tail: failed reading ${readLogPath} near offset ${offset}: ${err?.message ?? err}`);
566
+ return false;
567
+ }
568
+ }
569
+ // Single-flight pump: drain all appended bytes into the parser. A change arriving while a
570
+ // pump runs sets `pumpQueued` so the loop runs once more, rather than being missed in the
571
+ // window between "caught up" and clearing `pumping`.
572
+ async function pump() {
573
+ if (pumping) {
574
+ pumpQueued = true;
575
+ return;
576
+ }
577
+ pumping = true;
578
+ try {
579
+ do {
580
+ pumpQueued = false;
581
+ while (!signal?.aborted) {
582
+ let size;
583
+ try {
584
+ size = (await fs.promises.stat(readLogPath)).size;
585
+ }
586
+ catch {
587
+ break;
588
+ }
589
+ if (size < offset) {
590
+ // Truncation or rotation: restart from the new file and reset decode/parse state.
591
+ offset = 0;
592
+ decoder = new string_decoder_1.StringDecoder('utf8');
593
+ parser.reset();
594
+ }
595
+ if (size <= offset)
596
+ break;
597
+ if (progress.paused) {
598
+ await progress.whenWritable();
599
+ continue;
600
+ }
601
+ const ok = await drainTo(size - 1);
602
+ if (signal?.aborted)
603
+ break;
604
+ if (!ok) {
605
+ if (++readFailures > TAIL_READ_MAX_RETRIES) {
606
+ // Don't leave the client staring at a silently-stalled "live" stream: a
607
+ // terminal error is its cue to fall back to polling.
608
+ progress.emit('error', {
609
+ message: `read_log live tail could not read ${readLogPath} after ${TAIL_READ_MAX_RETRIES} retries`,
610
+ code: 'READ_LOG_TAIL_READ_ERROR',
611
+ });
612
+ finish();
613
+ return;
614
+ }
615
+ await abortableDelay(TAIL_READ_RETRY_MS);
616
+ continue; // resume from the advanced offset
617
+ }
618
+ readFailures = 0;
619
+ }
620
+ } while (pumpQueued && !signal?.aborted);
621
+ }
622
+ finally {
623
+ pumping = false;
624
+ }
625
+ }
626
+ function onChange() {
627
+ void pump();
628
+ }
629
+ const startTail = () => {
630
+ // `offset` is already the backlog boundary, so the tail picks up strictly from there.
631
+ // Without a disconnect signal we can't safely tail forever; degrade to backlog-only so
632
+ // the client polls instead.
633
+ if (!signal || signal.aborted)
634
+ return finish();
635
+ fs.watchFile(readLogPath, { interval: TAIL_POLL_INTERVAL_MS }, onChange);
636
+ watching = true;
637
+ signal.addEventListener('abort', finish, { once: true });
638
+ // Catch anything appended between the backlog snapshot and arming the watcher.
639
+ void pump();
640
+ };
641
+ // Replay the backlog through the shared parser/decoder, then tail from the same boundary.
642
+ (async () => {
643
+ let startSize = 0;
644
+ try {
645
+ startSize = fs.statSync(readLogPath).size;
646
+ }
647
+ catch {
648
+ startSize = 0;
649
+ }
650
+ if (startSize > 0) {
651
+ // Bound the backlog read to roughly the last `backlogLimit` entries so a large log
652
+ // file can't be seek-read into memory all at once (mirrors the buffered path). A
653
+ // partial first line the seek lands in is dropped by the parser, as in that path.
654
+ offset = Math.max(startSize - (backlogLimit + 5) * ESTIMATED_AVERAGE_ENTRY_SIZE, 0);
655
+ await drainTo(startSize - 1); // collects into backlogEntries; read errors are logged, best-effort
656
+ }
657
+ // Hand off to the live tail: flip to emit mode and deliver the collected backlog. The
658
+ // parser's pending entry (the newest, possibly boundary-torn line) is deliberately left
659
+ // pending — the tail finishes it — so nothing is emitted truncated.
660
+ backlogPhase = false;
661
+ for (const entry of backlogEntries) {
662
+ if (signal?.aborted)
663
+ break;
664
+ emit(entry);
665
+ if (progress.paused)
666
+ await progress.whenWritable();
667
+ }
668
+ startTail();
669
+ })().catch((err) => {
670
+ harper_logger_ts_1.default.warn(`read_log SSE tail: backlog replay failed for ${readLogPath}: ${err?.message ?? err}`);
671
+ startTail();
672
+ });
673
+ });
674
+ }
372
675
  //# sourceMappingURL=readLog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"readLog.js","sourceRoot":"","sources":["../../../utility/logging/readLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readLog.js","sourceRoot":"","sources":["../../../utility/logging/readLog.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,yDAA2C;AAC3C,0EAA2C;AAC3C,+FAA6D;AAC7D,2CAA6B;AAC7B,6CAA+B;AAC/B,mCAA8B;AAC9B,gEAA4D;AAC5D,uDAAkE;AAClE,sDAAgD;AAChD,mDAA+C;AAE/C,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC,kBAAe,OAAO,CAAC;AAEvB;;;;;GAKG;AACH,KAAK,UAAU,OAAO,CAAC,OAAY;IAClC,MAAM,UAAU,GAAG,IAAA,6BAAS,EAAC,OAAO,CAAC,CAAC;IACtC,IAAI,UAAU,EAAE,CAAC;QAChB,MAAM,IAAA,4BAAc,EACnB,UAAU,EACV,UAAU,CAAC,OAAO,EAClB,uBAAS,CAAC,iBAAiB,CAAC,WAAW,EACvC,SAAS,EACT,SAAS,EACT,IAAI,CACJ,CAAC;IACH,CAAC;IACD,wFAAwF;IACxF,wFAAwF;IACxF,wEAAwE;IACxE,IAAI,sBAAsB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEtH,MAAM,OAAO,GAAG,IAAA,8BAAa,EAAC,QAAQ,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC9F,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,MAAM,CAAC;IACvF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhD,wDAAwD;IACxD,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7D,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;IACjD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC;IAC3C,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACnF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9B,6EAA6E;IAC7E,uFAAuF;IACvF,0FAA0F;IAC1F,0FAA0F;IAC1F,uCAAuC;IACvC,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE;YACtC,WAAW;YACX,KAAK;YACL,YAAY;YACZ,IAAI;YACJ,WAAW;YACX,EAAE;YACF,SAAS;YACT,KAAK;YACL,MAAM;SACN,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACtC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,4BAA4B,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,kBAAkB,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAClF,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,0BAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,eAAe,CAAC;IACpB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QACzC,IAAI,MAAM,GAAG,6DAA6D,CAAC;QAC3E,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;QAC9B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,MAAM,CAAC;QACX,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACxC,IAAI,kBAAkB,CAAC,SAAS;gBAAE,MAAM;YACxC,IAAI,eAAe,EAAE,CAAC;gBACrB,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpE,YAAY,CAAC,eAAe,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC;YAC5C,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClB,eAAe,GAAG;gBACjB,SAAS;gBACT,MAAM;gBACN,KAAK;gBACL,IAAI;gBACJ,OAAO,EAAE,EAAE;aACX,CAAC;YACF,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5C,CAAC;QACD,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACjC,IAAI,kBAAkB,CAAC,SAAS;YAAE,OAAO;QACzC,IAAI,eAAe,EAAE,CAAC;YACrB,eAAe,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;YAC3C,YAAY,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC,CAAC,CAAC;IACH,kBAAkB,CAAC,MAAM,EAAE,CAAC;IAC5B,SAAS,YAAY,CAAC,IAAS;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IACC,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvD,CAAC;gBACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,EACD,CAAC;gBACF,KAAK,GAAG,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC,KAAK;gBAAE,OAAO;QACpB,CAAC;QAED,yGAAyG;QACzG,cAAc,EAAE,CAAC;QACjB,IAAI,cAAc,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/B,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC3B,YAAY,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,QAAQ,CAAC;QACb,IAAI,MAAM,CAAC;QACX,QAAQ,IAAI,EAAE,CAAC;YACd,KAAK,YAAY,IAAI,WAAW,IAAI,SAAS;gBAC5C,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEtB,iIAAiI;gBACjI,uCAAuC;gBACvC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAC;gBAC/F,oGAAoG;qBAC/F,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;oBAC3E,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC;oBACR,iFAAiF;oBACjF,IAAI,KAAK,KAAK,GAAG;wBAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;gBAED,wEAAwE;gBACxE,MAAM;YACP,KAAK,YAAY,IAAI,WAAW;gBAC/B,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE1B,2HAA2H;gBAC3H,uCAAuC;gBACvC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAC;gBAC1E,oHAAoH;qBAC/G,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;oBACtD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC;oBACR,iFAAiF;oBACjF,IAAI,KAAK,KAAK,GAAG;wBAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;gBAED,gEAAgE;gBAChE,MAAM;YACP,KAAK,YAAY,IAAI,SAAS;gBAC7B,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEtB,yHAAyH;gBACzH,uCAAuC;gBACvC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAC;gBACxE,kHAAkH;qBAC7G,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;oBACpD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC;oBACR,iFAAiF;oBACjF,IAAI,KAAK,KAAK,GAAG;wBAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;gBAED,gEAAgE;gBAChE,MAAM;YACP,KAAK,WAAW,IAAI,SAAS;gBAC5B,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEtB,8FAA8F;gBAC9F,uCAAuC;gBACvC,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAC;gBACvE,oGAAoG;qBAC/F,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;oBACnD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC;oBACR,iFAAiF;oBACjF,IAAI,KAAK,KAAK,GAAG;wBAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;gBAED,wEAAwE;gBACxE,MAAM;YACP,KAAK,YAAY;gBAChB,uEAAuE;gBACvE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAC;gBACnD,0FAA0F;qBACrF,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;oBAC/B,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC;oBACR,iFAAiF;oBACjF,IAAI,KAAK,KAAK,GAAG;wBAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;gBAED,sEAAsE;gBACtE,MAAM;YACP,KAAK,WAAW;gBACf,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE1B,wFAAwF;gBACxF,uCAAuC;gBACvC,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAC;gBAClD,sGAAsG;qBACjG,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;oBAChD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC;oBACR,iFAAiF;oBACjF,IAAI,KAAK,KAAK,GAAG;wBAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;gBAED,gEAAgE;gBAChE,MAAM;YACP,KAAK,SAAS;gBACb,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEtB,sFAAsF;gBACtF,uCAAuC;gBACvC,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAC;gBAChD,oGAAoG;qBAC/F,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;oBAC9C,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC;oBACR,iFAAiF;oBACjF,IAAI,KAAK,KAAK,GAAG;wBAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;gBAED,gEAAgE;gBAChE,MAAM;YACP;gBACC,mEAAmE;gBACnE,IAAI,KAAK,GAAG,KAAK;oBAAE,KAAK,EAAE,CAAC;gBAC3B,+CAA+C;qBAC1C,CAAC;oBACL,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC;oBACR,iFAAiF;oBACjF,IAAI,KAAK,KAAK,GAAG;wBAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;QACH,CAAC;IACF,CAAC;IAED,MAAM,IAAA,aAAI,EAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,kBAAkB,GAAG,MAAM,sBAAsB,CAAC;IACtD,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC;QACnC,+EAA+E;QAC/E,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,kBAAM,CAAC,QAAQ,CAAC;QAC7B,CAAC;QACD,8CAA8C;QAC9C,KAAK,IAAI,UAAU,IAAK,kBAA0B,CAAC,UAAU,EAAE,CAAC;YAC/D,IAAI,IAAI,GAAI,UAAkB,CAAC,IAAI,CAAC;YACpC,IAAK,UAAkB,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7C,qDAAqD;gBACrD,gBAAgB,CACf;oBACC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,KAAK,EAAE,OAAO;oBACd,IAAI;oBACJ,OAAO,EAAE,0BAA0B,UAAU,CAAC,MAAM,EAAE;iBACtD,EACD,KAAK,EACL,MAAM,CACN,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,KAAK,IAAI,IAAI,IAAK,UAAkB,CAAC,OAAO,EAAE,CAAC;oBAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACjB,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACvC,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,IAAS,EAAE,KAAyB,EAAE,MAAa;IAC5E,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACtB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5B,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAU,EAAE,MAAa;IAClD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QACnB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO;YAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;YACxD,IAAI,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAU,EAAE,MAAa;IACjD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QACnB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO;YAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;YACxD,IAAI,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAsBD,2FAA2F;AAC3F,8DAA8D;AAC9D,MAAM,gBAAgB,GAAG,6DAA6D,CAAC;AACvF,yFAAyF;AACzF,2FAA2F;AAC3F,kEAAkE;AAClE,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,6FAA6F;AAC7F,8FAA8F;AAC9F,sFAAsF;AACtF,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,8FAA8F;AAC9F,8EAA8E;AAC9E,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,SAAS,kBAAkB,CAAC,OAAY;IACvC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,UAAkB,EAAE,OAAe;IAC3E,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe,EAAE,MAAwB;IACnE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACjF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACxF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;IACxB,CAAC;IACD,IAAI,YAAY,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,WAAW,IAAI,IAAI,GAAI,IAAa;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,SAAS,IAAI,IAAI,GAAI,EAAW;YAAE,OAAO,KAAK,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,8FAA8F;AAC9F,yFAAyF;AACzF,+FAA+F;AAC/F,2FAA2F;AAC3F,8FAA8F;AAC9F,gBAAgB;AAChB,SAAS,0BAA0B,CAAC,OAAkC;IACrE,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAA8D,CAAC;IACnE,0FAA0F;IAC1F,wFAAwF;IACxF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC5C,OAAO;QACN,IAAI,CAAC,IAAY;YAChB,MAAM,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;YAC9B,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;YACrB,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,MAAM,CAAC;YACX,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACrC,IAAI,OAAO,EAAE,CAAC;oBACb,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtG,CAAC;gBACD,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC;gBAC9C,OAAO,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;gBACpC,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5C,CAAC;YACD,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QACD,KAAK;YACJ,OAAO,GAAG,SAAS,CAAC;YACpB,SAAS,GAAG,EAAE,CAAC;QAChB,CAAC;KACD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,QAAa,EAAE,MAAwB;IAC7D,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACtC,MAAM,MAAM,GAA4B,QAAQ,CAAC,MAAM,CAAC;IACxD,MAAM,IAAI,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9D,6FAA6F;IAC7F,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAE9D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACpC,IAAI,MAAM,EAAE,OAAO;YAAE,OAAO,OAAO,EAAE,CAAC;QAEtC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,wFAAwF;QACxF,mFAAmF;QACnF,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,MAAM,cAAc,GAAe,EAAE,CAAC;QACtC,2FAA2F;QAC3F,qFAAqF;QACrF,mEAAmE;QACnE,IAAI,OAAO,GAAG,IAAI,8BAAa,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,0BAA0B,CAAC,CAAC,KAAK,EAAE,EAAE;YACnD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC;gBAAE,OAAO;YAC9C,IAAI,YAAY,EAAE,CAAC;gBAClB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,cAAc,CAAC,MAAM,GAAG,YAAY;oBAAE,cAAc,CAAC,KAAK,EAAE,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,KAAK,CAAC,CAAC;YACb,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,SAAS,MAAM;YACd,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,QAAQ;gBAAE,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO,EAAE,CAAC;QACX,CAAC;QAED,4FAA4F;QAC5F,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE,CACrC,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO,GAAG,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,GAAG,EAAE,CAAC;YACP,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,GAAG,EAAE;gBACpB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,GAAG,EAAE,CAAC;YACP,CAAC,CAAC;YACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEJ,2FAA2F;QAC3F,0FAA0F;QAC1F,4FAA4F;QAC5F,8FAA8F;QAC9F,KAAK,UAAU,OAAO,CAAC,GAAW;YACjC,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC;gBACJ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,EAAE,CAAC;oBAC9B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;wBACrB,EAAE,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC;oBAC5C,MAAM,IAAK,KAAgB,CAAC,MAAM,CAAC;oBACnC,IAAI,QAAQ,CAAC,MAAM;wBAAE,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;gBACpD,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBACnB,0BAAS,CAAC,IAAI,CACb,qCAAqC,WAAW,gBAAgB,MAAM,KAAK,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAChG,CAAC;gBACF,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;QAED,0FAA0F;QAC1F,0FAA0F;QAC1F,qDAAqD;QACrD,KAAK,UAAU,IAAI;YAClB,IAAI,OAAO,EAAE,CAAC;gBACb,UAAU,GAAG,IAAI,CAAC;gBAClB,OAAO;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC;gBACJ,GAAG,CAAC;oBACH,UAAU,GAAG,KAAK,CAAC;oBACnB,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;wBACzB,IAAI,IAAY,CAAC;wBACjB,IAAI,CAAC;4BACJ,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;wBACnD,CAAC;wBAAC,MAAM,CAAC;4BACR,MAAM;wBACP,CAAC;wBACD,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;4BACnB,kFAAkF;4BAClF,MAAM,GAAG,CAAC,CAAC;4BACX,OAAO,GAAG,IAAI,8BAAa,CAAC,MAAM,CAAC,CAAC;4BACpC,MAAM,CAAC,KAAK,EAAE,CAAC;wBAChB,CAAC;wBACD,IAAI,IAAI,IAAI,MAAM;4BAAE,MAAM;wBAC1B,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;4BACrB,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;4BAC9B,SAAS;wBACV,CAAC;wBACD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;wBACnC,IAAI,MAAM,EAAE,OAAO;4BAAE,MAAM;wBAC3B,IAAI,CAAC,EAAE,EAAE,CAAC;4BACT,IAAI,EAAE,YAAY,GAAG,qBAAqB,EAAE,CAAC;gCAC5C,wEAAwE;gCACxE,qDAAqD;gCACrD,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE;oCACtB,OAAO,EAAE,qCAAqC,WAAW,UAAU,qBAAqB,UAAU;oCAClG,IAAI,EAAE,0BAA0B;iCAChC,CAAC,CAAC;gCACH,MAAM,EAAE,CAAC;gCACT,OAAO;4BACR,CAAC;4BACD,MAAM,cAAc,CAAC,kBAAkB,CAAC,CAAC;4BACzC,SAAS,CAAC,kCAAkC;wBAC7C,CAAC;wBACD,YAAY,GAAG,CAAC,CAAC;oBAClB,CAAC;gBACF,CAAC,QAAQ,UAAU,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;YAC1C,CAAC;oBAAS,CAAC;gBACV,OAAO,GAAG,KAAK,CAAC;YACjB,CAAC;QACF,CAAC;QAED,SAAS,QAAQ;YAChB,KAAK,IAAI,EAAE,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,EAAE;YACtB,sFAAsF;YACtF,uFAAuF;YACvF,4BAA4B;YAC5B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,MAAM,EAAE,CAAC;YAC/C,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAAE,QAAQ,CAAC,CAAC;YACzE,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,+EAA+E;YAC/E,KAAK,IAAI,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,0FAA0F;QAC1F,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC;gBACJ,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS,GAAG,CAAC,CAAC;YACf,CAAC;YACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBACnB,mFAAmF;gBACnF,iFAAiF;gBACjF,kFAAkF;gBAClF,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,4BAA4B,EAAE,CAAC,CAAC,CAAC;gBACpF,MAAM,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,oEAAoE;YACnG,CAAC;YACD,sFAAsF;YACtF,wFAAwF;YACxF,oEAAoE;YACpE,YAAY,GAAG,KAAK,CAAC;YACrB,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACpC,IAAI,MAAM,EAAE,OAAO;oBAAE,MAAM;gBAC3B,IAAI,CAAC,KAAK,CAAC,CAAC;gBACZ,IAAI,QAAQ,CAAC,MAAM;oBAAE,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;YACpD,CAAC;YACD,SAAS,EAAE,CAAC;QACb,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,0BAAS,CAAC,IAAI,CAAC,gDAAgD,WAAW,KAAK,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;YACtG,SAAS,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -23,7 +23,25 @@ export declare const OPERATION_PERMISSION_GROUPS: {
23
23
  * or admin reads (get_configuration, logs). Add those explicitly when needed.
24
24
  */
25
25
  readonly standard_user: readonly ["search", "search_by_conditions", "search_by_hash", "search_by_id", "search_by_value", "sql", "describe_all", "describe_schema", "describe_database", "describe_table", "user_info", "get_job", "get_analytics", "list_metrics", "describe_metric", "insert", "update", "upsert", "delete", "csv_data_load", "csv_file_load", "csv_url_load", "import_from_s3"];
26
+ /**
27
+ * Drive the built-in agent (#626): send prompts, read/list sessions, and approve/cancel
28
+ * runs. Grants a scoped, non-super_user "delegation" role access to the agent without full
29
+ * super_user (all agent ops are super_user by default). Deliberately EXCLUDES set_agent_config
30
+ * — changing the agent's model/approval policy stays an operator (super_user) action.
31
+ */
32
+ readonly agent: readonly ["agent_prompt", "get_agent_session", "list_agent_sessions", "cancel_agent_run", "approve_agent_action"];
26
33
  };
34
+ /**
35
+ * Mark a dynamically-registered operation name as a valid target for role `operations` grants.
36
+ * Called by registerOperationPermission so a component op declaring a permission can actually be
37
+ * granted (not just enforced). Enum-backed op names are already valid; this covers custom names.
38
+ */
39
+ export declare function registerGrantableOperation(name: string): void;
40
+ /**
41
+ * Remove a dynamically-registered grantable operation name. Mirrors registerGrantableOperation;
42
+ * primarily for tests that register throwaway ops and must not leak them into the global set.
43
+ */
44
+ export declare function unregisterGrantableOperation(name: string): void;
27
45
  /**
28
46
  * Validates that every entry in an operations array is a known operation name or group name.
29
47
  * Returns the first invalid entry, or null if all entries are valid.
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OPERATION_PERMISSION_GROUPS = void 0;
4
+ exports.registerGrantableOperation = registerGrantableOperation;
5
+ exports.unregisterGrantableOperation = unregisterGrantableOperation;
4
6
  exports.validateOperations = validateOperations;
5
7
  exports.expandOperationsPerms = expandOperationsPerms;
6
8
  const hdbTerms_ts_1 = require("./hdbTerms.js");
@@ -80,16 +82,48 @@ exports.OPERATION_PERMISSION_GROUPS = {
80
82
  hdbTerms_ts_1.OPERATIONS_ENUM.CSV_URL_LOAD,
81
83
  hdbTerms_ts_1.OPERATIONS_ENUM.IMPORT_FROM_S3,
82
84
  ],
85
+ /**
86
+ * Drive the built-in agent (#626): send prompts, read/list sessions, and approve/cancel
87
+ * runs. Grants a scoped, non-super_user "delegation" role access to the agent without full
88
+ * super_user (all agent ops are super_user by default). Deliberately EXCLUDES set_agent_config
89
+ * — changing the agent's model/approval policy stays an operator (super_user) action.
90
+ */
91
+ agent: [
92
+ hdbTerms_ts_1.OPERATIONS_ENUM.AGENT_PROMPT,
93
+ hdbTerms_ts_1.OPERATIONS_ENUM.GET_AGENT_SESSION,
94
+ hdbTerms_ts_1.OPERATIONS_ENUM.LIST_AGENT_SESSIONS,
95
+ hdbTerms_ts_1.OPERATIONS_ENUM.CANCEL_AGENT_RUN,
96
+ hdbTerms_ts_1.OPERATIONS_ENUM.APPROVE_AGENT_ACTION,
97
+ ],
83
98
  };
84
99
  const validOps = new Set(Object.values(hdbTerms_ts_1.OPERATIONS_ENUM));
85
100
  const validGroups = new Set(Object.keys(exports.OPERATION_PERMISSION_GROUPS));
101
+ // Operations registered dynamically at runtime (server.registerOperation with a declared
102
+ // permission) whose names may fall outside OPERATIONS_ENUM. Tracked so they're grantable in a
103
+ // role's `operations` allowlist (add_role/alter_role/impersonation validate against this set too).
104
+ const dynamicallyRegisteredOps = new Set();
105
+ /**
106
+ * Mark a dynamically-registered operation name as a valid target for role `operations` grants.
107
+ * Called by registerOperationPermission so a component op declaring a permission can actually be
108
+ * granted (not just enforced). Enum-backed op names are already valid; this covers custom names.
109
+ */
110
+ function registerGrantableOperation(name) {
111
+ dynamicallyRegisteredOps.add(name);
112
+ }
113
+ /**
114
+ * Remove a dynamically-registered grantable operation name. Mirrors registerGrantableOperation;
115
+ * primarily for tests that register throwaway ops and must not leak them into the global set.
116
+ */
117
+ function unregisterGrantableOperation(name) {
118
+ dynamicallyRegisteredOps.delete(name);
119
+ }
86
120
  /**
87
121
  * Validates that every entry in an operations array is a known operation name or group name.
88
122
  * Returns the first invalid entry, or null if all entries are valid.
89
123
  */
90
124
  function validateOperations(operations) {
91
125
  for (const op of operations) {
92
- if (typeof op !== 'string' || (!validOps.has(op) && !validGroups.has(op))) {
126
+ if (typeof op !== 'string' || (!validOps.has(op) && !validGroups.has(op) && !dynamicallyRegisteredOps.has(op))) {
93
127
  return String(op);
94
128
  }
95
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"operationPermissions.js","sourceRoot":"","sources":["../../utility/operationPermissions.ts"],"names":[],"mappings":";;;AAuFA,gDAOC;AAMD,sDAWC;AA/GD,+CAAgD;AAEhD;;;GAGG;AACU,QAAA,2BAA2B,GAAG;IAC1C;;;;;OAKG;IACH,SAAS,EAAE;QACV,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,SAAS;QACzB,6BAAe,CAAC,OAAO;QACvB,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;KAC/B;IACD;;;;;OAKG;IACH,UAAU,EAAE;QACX,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,QAAQ;QACxB,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,mBAAmB;QACnC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,kBAAkB;KAClC;IACD;;;;OAIG;IACH,aAAa,EAAE;QACd,oBAAoB;QACpB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,SAAS;QACzB,6BAAe,CAAC,OAAO;QACvB,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,oBAAoB;QACpB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,YAAY;QACZ,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,cAAc;KAC9B;CACQ,CAAC;AAEX,MAAM,QAAQ,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,6BAAe,CAAC,CAAC,CAAC;AACtE,MAAM,WAAW,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mCAA2B,CAAC,CAAC,CAAC;AAEnF;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,UAA8B;IAChE,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3E,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,UAA6B;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,mCAA2B,CAAC,IAAgD,CAAC,CAAC;QAC5F,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,MAAM,EAAE,IAAI,KAAK;gBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"operationPermissions.js","sourceRoot":"","sources":["../../utility/operationPermissions.ts"],"names":[],"mappings":";;;AAyGA,gEAEC;AAMD,oEAEC;AAMD,gDAOC;AAMD,sDAWC;AAjJD,+CAAgD;AAEhD;;;GAGG;AACU,QAAA,2BAA2B,GAAG;IAC1C;;;;;OAKG;IACH,SAAS,EAAE;QACV,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,SAAS;QACzB,6BAAe,CAAC,OAAO;QACvB,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;KAC/B;IACD;;;;;OAKG;IACH,UAAU,EAAE;QACX,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,QAAQ;QACxB,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,mBAAmB;QACnC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,kBAAkB;KAClC;IACD;;;;OAIG;IACH,aAAa,EAAE;QACd,oBAAoB;QACpB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,SAAS;QACzB,6BAAe,CAAC,OAAO;QACvB,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,oBAAoB;QACpB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,YAAY;QACZ,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,cAAc;KAC9B;IACD;;;;;OAKG;IACH,KAAK,EAAE;QACN,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,mBAAmB;QACnC,6BAAe,CAAC,gBAAgB;QAChC,6BAAe,CAAC,oBAAoB;KACpC;CACQ,CAAC;AAEX,MAAM,QAAQ,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,6BAAe,CAAC,CAAC,CAAC;AACtE,MAAM,WAAW,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mCAA2B,CAAC,CAAC,CAAC;AACnF,yFAAyF;AACzF,8FAA8F;AAC9F,mGAAmG;AACnG,MAAM,wBAAwB,GAAgB,IAAI,GAAG,EAAE,CAAC;AAExD;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,IAAY;IACtD,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAgB,4BAA4B,CAAC,IAAY;IACxD,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,UAA8B;IAChE,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChH,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,UAA6B;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,mCAA2B,CAAC,IAAgD,CAAC,CAAC;QAC5F,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,MAAM,EAAE,IAAI,KAAK;gBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC"}
@@ -1,3 +1,20 @@
1
+ /**
2
+ * Register an authorization entry for a dynamically-registered operation (via
3
+ * server.registerOperation), so it flows through verifyPerms and the role `operations`
4
+ * allowlist exactly like a built-in op — instead of hand-rolling an inline super_user check.
5
+ * Keyed by the snake_case API operation name (which registerOperation also forces onto the
6
+ * handler's `.name`, the key verifyPerms looks up). SU-only by default.
7
+ */
8
+ export declare function registerOperationPermission(apiName: string, { requiresSu, perms }?: {
9
+ requiresSu?: boolean;
10
+ perms?: string[];
11
+ }): void;
12
+ /**
13
+ * Remove an authorization entry registered via registerOperationPermission (both the verifyPerms
14
+ * entry and the grantable-op mark). Mirrors registerOperationPermission; primarily for tests that
15
+ * register throwaway ops and must not leak them into the process-global registries.
16
+ */
17
+ export declare function unregisterOperationPermission(apiName: string): void;
1
18
  /**
2
19
  * Verifies permissions and restrictions for a SQL operation based on the user's assigned role.
3
20
  * @param ast - The SQL statement in Syntax Tree form.
@@ -36,6 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.registerOperationPermission = registerOperationPermission;
40
+ exports.unregisterOperationPermission = unregisterOperationPermission;
39
41
  exports.verifyPermsAST = verifyPermsAST;
40
42
  exports.verifyPerms = verifyPerms;
41
43
  exports.hasPermissions = hasPermissions;
@@ -83,6 +85,7 @@ const PermissionResponseObject_ts_1 = __importDefault(require("../security/data_
83
85
  const hdbError_ts_1 = require("../utility/errors/hdbError.js");
84
86
  const regDeprecated = __importStar(require("../resources/registrationDeprecated.js"));
85
87
  const deploymentOperations = __importStar(require("../components/deploymentOperations.js"));
88
+ const secretOperations = __importStar(require("../components/secretOperations.js"));
86
89
  const requiredPermissions = new Map();
87
90
  const DELETE_PERM = 'delete';
88
91
  const INSERT_PERM = 'insert';
@@ -142,6 +145,28 @@ class permission {
142
145
  this.api_name = apiName;
143
146
  }
144
147
  }
148
+ /**
149
+ * Register an authorization entry for a dynamically-registered operation (via
150
+ * server.registerOperation), so it flows through verifyPerms and the role `operations`
151
+ * allowlist exactly like a built-in op — instead of hand-rolling an inline super_user check.
152
+ * Keyed by the snake_case API operation name (which registerOperation also forces onto the
153
+ * handler's `.name`, the key verifyPerms looks up). SU-only by default.
154
+ */
155
+ function registerOperationPermission(apiName, { requiresSu = false, perms = [] } = {}) {
156
+ requiredPermissions.set(apiName, new permission(requiresSu, perms, apiName));
157
+ // Also make the op grantable in a role's `operations` allowlist (validateOperations), so a
158
+ // declared permission can be both enforced AND granted — not just enforced.
159
+ (0, operationPermissions_ts_1.registerGrantableOperation)(apiName);
160
+ }
161
+ /**
162
+ * Remove an authorization entry registered via registerOperationPermission (both the verifyPerms
163
+ * entry and the grantable-op mark). Mirrors registerOperationPermission; primarily for tests that
164
+ * register throwaway ops and must not leak them into the process-global registries.
165
+ */
166
+ function unregisterOperationPermission(apiName) {
167
+ requiredPermissions.delete(apiName);
168
+ (0, operationPermissions_ts_1.unregisterGrantableOperation)(apiName);
169
+ }
145
170
  requiredPermissions.set(write.insert.name, new permission(false, [INSERT_PERM], terms.OPERATIONS_ENUM.INSERT));
146
171
  requiredPermissions.set(write.update.name, new permission(false, [UPDATE_PERM], terms.OPERATIONS_ENUM.UPDATE));
147
172
  requiredPermissions.set(write.upsert.name, new permission(false, [INSERT_PERM, UPDATE_PERM], terms.OPERATIONS_ENUM.UPSERT));
@@ -197,6 +222,9 @@ requiredPermissions.set(functionsOperations.getCustomFunctions.name, new permiss
197
222
  requiredPermissions.set(functionsOperations.getComponents.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_COMPONENTS));
198
223
  requiredPermissions.set(functionsOperations.getComponentFile.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_COMPONENT_FILE));
199
224
  requiredPermissions.set(functionsOperations.setComponentFile.name, new permission(true, []));
225
+ requiredPermissions.set(functionsOperations.getEnvKeys.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_ENV_KEYS));
226
+ requiredPermissions.set(functionsOperations.setEnvValue.name, new permission(true, [], terms.OPERATIONS_ENUM.SET_ENV_VALUE));
227
+ requiredPermissions.set(functionsOperations.deleteEnvValue.name, new permission(true, [], terms.OPERATIONS_ENUM.DELETE_ENV_VALUE));
200
228
  requiredPermissions.set(functionsOperations.dropComponent.name, new permission(true, []));
201
229
  requiredPermissions.set(functionsOperations.getCustomFunction.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_CUSTOM_FUNCTION));
202
230
  requiredPermissions.set(functionsOperations.setCustomFunction.name, new permission(true, []));
@@ -207,6 +235,14 @@ requiredPermissions.set(functionsOperations.packageComponent.name, new permissio
207
235
  requiredPermissions.set(functionsOperations.deployComponent.name, new permission(true, []));
208
236
  requiredPermissions.set(deploymentOperations.handleListDeployments.name, new permission(true, [], terms.OPERATIONS_ENUM.LIST_DEPLOYMENTS));
209
237
  requiredPermissions.set(deploymentOperations.handleGetDeployment.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_DEPLOYMENT));
238
+ // Secrets-store operations. All SU-only; the handlers ALSO enforce super_user directly, so these
239
+ // cannot be delegated through a role's `operations` allowlist (gate-2 bypass below).
240
+ requiredPermissions.set(secretOperations.setSecret.name, new permission(true, [], terms.OPERATIONS_ENUM.SET_SECRET));
241
+ requiredPermissions.set(secretOperations.grantSecret.name, new permission(true, [], terms.OPERATIONS_ENUM.GRANT_SECRET));
242
+ requiredPermissions.set(secretOperations.revokeSecret.name, new permission(true, [], terms.OPERATIONS_ENUM.REVOKE_SECRET));
243
+ requiredPermissions.set(secretOperations.listSecrets.name, new permission(true, [], terms.OPERATIONS_ENUM.LIST_SECRETS));
244
+ requiredPermissions.set(secretOperations.deleteSecret.name, new permission(true, [], terms.OPERATIONS_ENUM.DELETE_SECRET));
245
+ requiredPermissions.set(secretOperations.getSecretsPublicKey.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_SECRETS_PUBLIC_KEY));
210
246
  //Below are functions that are currently open to all roles
211
247
  requiredPermissions.set(regDeprecated.getRegistrationInfo.name, new permission(false, []));
212
248
  requiredPermissions.set(user.userInfo.name, new permission(false, [], terms.OPERATIONS_ENUM.USER_INFO));
@@ -231,6 +267,8 @@ module.exports = {
231
267
  verifyPerms,
232
268
  verifyPermsAST,
233
269
  verifyBulkLoadAttributePerms,
270
+ registerOperationPermission,
271
+ unregisterOperationPermission,
234
272
  };
235
273
  /**
236
274
  * Verifies permissions and restrictions for a SQL operation based on the user's assigned role.