@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.3

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 (670) hide show
  1. package/dist/admin/admin.controller.d.ts +17 -17
  2. package/dist/admin/admin.controller.js +43 -26
  3. package/dist/admin/admin.module.d.ts +3 -0
  4. package/dist/admin/admin.module.js +22 -0
  5. package/dist/admin/extensions.controller.d.ts +14 -14
  6. package/dist/admin/extensions.controller.js +30 -17
  7. package/dist/admin/setup-lock.d.ts +16 -0
  8. package/dist/admin/setup-lock.js +47 -0
  9. package/dist/admin/setup.controller.d.ts +8 -8
  10. package/dist/admin/setup.controller.js +27 -25
  11. package/dist/admin/setup.service.d.ts +19 -27
  12. package/dist/admin/setup.service.js +61 -61
  13. package/dist/agents/agent-lookup.d.ts +53 -0
  14. package/dist/agents/agent-lookup.js +187 -0
  15. package/dist/agents/agents.controller.d.ts +1 -1
  16. package/dist/agents/agents.controller.js +14 -8
  17. package/dist/agents/agents.module.d.ts +7 -0
  18. package/dist/agents/agents.module.js +41 -0
  19. package/dist/agents/agents.service.d.ts +39 -58
  20. package/dist/agents/agents.service.js +280 -335
  21. package/dist/agents/definition.d.ts +39 -8
  22. package/dist/agents/definition.js +201 -17
  23. package/dist/agents/models.controller.d.ts +1 -1
  24. package/dist/agents/models.controller.js +2 -2
  25. package/dist/agents/templates.controller.d.ts +1 -1
  26. package/dist/agents/templates.controller.js +2 -2
  27. package/dist/agents/templates.d.ts +6 -8
  28. package/dist/agents/templates.js +39 -8
  29. package/dist/app.d.ts +93 -0
  30. package/dist/app.js +150 -0
  31. package/dist/catalog/admin-catalog.controller.d.ts +3 -3
  32. package/dist/catalog/admin-catalog.controller.js +27 -13
  33. package/dist/catalog/catalog-content.d.ts +185 -0
  34. package/dist/catalog/catalog-content.js +326 -0
  35. package/dist/catalog/catalog-items.d.ts +186 -0
  36. package/dist/catalog/catalog-items.js +410 -0
  37. package/dist/catalog/catalog.module.d.ts +14 -0
  38. package/dist/catalog/catalog.module.js +71 -0
  39. package/dist/catalog/catalog.service.d.ts +34 -188
  40. package/dist/catalog/catalog.service.js +155 -489
  41. package/dist/catalog/claude/agents.js +13 -10
  42. package/dist/catalog/cli.d.ts +3 -2
  43. package/dist/catalog/cli.js +13 -31
  44. package/dist/catalog/job-ids.d.ts +15 -0
  45. package/dist/catalog/job-ids.js +15 -0
  46. package/dist/catalog/jobs.d.ts +27 -0
  47. package/dist/catalog/jobs.js +70 -0
  48. package/dist/catalog/locks.d.ts +24 -0
  49. package/dist/catalog/locks.js +63 -0
  50. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  51. package/dist/catalog/marketplaces.controller.js +22 -11
  52. package/dist/catalog/marketplaces.service.d.ts +31 -14
  53. package/dist/catalog/marketplaces.service.js +330 -256
  54. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  55. package/dist/catalog/org-catalog.controller.js +29 -14
  56. package/dist/catalog/org-catalog.service.d.ts +32 -198
  57. package/dist/catalog/org-catalog.service.js +159 -400
  58. package/dist/catalog/plugin-import.d.ts +73 -34
  59. package/dist/catalog/plugin-import.js +356 -217
  60. package/dist/catalog/plugin-install.d.ts +83 -41
  61. package/dist/catalog/plugin-install.js +421 -269
  62. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  63. package/dist/catalog/plugin-upgrade.js +407 -282
  64. package/dist/catalog/requests.service.d.ts +27 -15
  65. package/dist/catalog/requests.service.js +201 -145
  66. package/dist/catalog/upgrade-targets.d.ts +4 -7
  67. package/dist/channels/actions.d.ts +6 -4
  68. package/dist/channels/actions.js +1 -1
  69. package/dist/channels/cards.d.ts +10 -4
  70. package/dist/channels/cards.js +16 -8
  71. package/dist/channels/channels.module.d.ts +40 -0
  72. package/dist/channels/channels.module.js +128 -0
  73. package/dist/channels/connections.controller.d.ts +1 -1
  74. package/dist/channels/connections.controller.js +11 -6
  75. package/dist/channels/connections.service.d.ts +43 -21
  76. package/dist/channels/connections.service.js +236 -131
  77. package/dist/channels/inbound.d.ts +34 -38
  78. package/dist/channels/inbound.js +107 -41
  79. package/dist/channels/job-ids.d.ts +10 -0
  80. package/dist/channels/job-ids.js +10 -0
  81. package/dist/channels/jobs.d.ts +85 -0
  82. package/dist/channels/jobs.js +157 -0
  83. package/dist/channels/outbound.d.ts +60 -82
  84. package/dist/channels/outbound.js +165 -194
  85. package/dist/channels/supervisor.d.ts +88 -46
  86. package/dist/channels/supervisor.js +230 -132
  87. package/dist/channels/threads.d.ts +29 -8
  88. package/dist/channels/threads.js +71 -13
  89. package/dist/channels/webhook.d.ts +20 -14
  90. package/dist/channels/webhook.js +51 -20
  91. package/dist/config/load.d.ts +3 -2
  92. package/dist/config/load.js +3 -2
  93. package/dist/config/nacos-source.js +11 -2
  94. package/dist/config/schema.d.ts +1 -0
  95. package/dist/config/schema.js +12 -6
  96. package/dist/conversations/access.d.ts +29 -0
  97. package/dist/conversations/access.js +86 -0
  98. package/dist/conversations/artifacts.d.ts +11 -11
  99. package/dist/conversations/artifacts.js +36 -10
  100. package/dist/conversations/attachments.controller.d.ts +1 -1
  101. package/dist/conversations/attachments.controller.js +8 -6
  102. package/dist/conversations/attachments.module.d.ts +7 -0
  103. package/dist/conversations/attachments.module.js +25 -0
  104. package/dist/conversations/attachments.service.d.ts +30 -22
  105. package/dist/conversations/attachments.service.js +119 -46
  106. package/dist/conversations/conversations.controller.d.ts +8 -7
  107. package/dist/conversations/conversations.controller.js +59 -29
  108. package/dist/conversations/conversations.module.d.ts +8 -0
  109. package/dist/conversations/conversations.module.js +69 -0
  110. package/dist/conversations/conversations.service.d.ts +40 -38
  111. package/dist/conversations/conversations.service.js +130 -140
  112. package/dist/conversations/event-log.d.ts +39 -18
  113. package/dist/conversations/event-log.js +93 -27
  114. package/dist/conversations/events.d.ts +23 -3
  115. package/dist/conversations/events.js +26 -14
  116. package/dist/conversations/files.d.ts +10 -10
  117. package/dist/conversations/files.js +37 -11
  118. package/dist/conversations/idem-keys.d.ts +5 -0
  119. package/dist/conversations/idem-keys.js +5 -0
  120. package/dist/conversations/job-ids.d.ts +6 -0
  121. package/dist/conversations/job-ids.js +6 -0
  122. package/dist/conversations/outputs-read.d.ts +11 -11
  123. package/dist/conversations/outputs-read.js +31 -7
  124. package/dist/conversations/queue.d.ts +48 -56
  125. package/dist/conversations/queue.js +13 -289
  126. package/dist/conversations/queue.service.d.ts +60 -0
  127. package/dist/conversations/queue.service.js +343 -0
  128. package/dist/conversations/sandbox-status.d.ts +13 -10
  129. package/dist/conversations/sandbox-status.js +36 -8
  130. package/dist/conversations/titles.d.ts +71 -24
  131. package/dist/conversations/titles.js +159 -63
  132. package/dist/ctx/bus.js +9 -3
  133. package/dist/ctx/create-ctx.d.ts +6 -0
  134. package/dist/ctx/create-ctx.js +7 -9
  135. package/dist/ctx/lock.d.ts +7 -3
  136. package/dist/ctx/lock.js +9 -20
  137. package/dist/ctx/secrets.d.ts +10 -2
  138. package/dist/ctx/secrets.js +7 -3
  139. package/dist/db/kernel-schema.d.ts +4 -4
  140. package/dist/db/pool.d.ts +5 -0
  141. package/dist/db/pool.js +1 -0
  142. package/dist/errors.d.ts +1 -0
  143. package/dist/errors.js +1 -0
  144. package/dist/evals/budget.d.ts +42 -21
  145. package/dist/evals/budget.js +114 -62
  146. package/dist/evals/evals.module.d.ts +31 -0
  147. package/dist/evals/evals.module.js +114 -0
  148. package/dist/evals/jobs.d.ts +20 -0
  149. package/dist/evals/jobs.js +45 -0
  150. package/dist/evals/recorded-tools.d.ts +27 -1
  151. package/dist/evals/recorded-tools.js +85 -10
  152. package/dist/evals/run-replay.d.ts +61 -8
  153. package/dist/evals/run-replay.js +159 -85
  154. package/dist/evals/runs.controller.d.ts +1 -1
  155. package/dist/evals/runs.controller.js +17 -8
  156. package/dist/evals/runs.service.d.ts +23 -45
  157. package/dist/evals/runs.service.js +245 -234
  158. package/dist/evals/sets.controller.d.ts +1 -1
  159. package/dist/evals/sets.controller.js +17 -8
  160. package/dist/evals/sets.service.d.ts +22 -6
  161. package/dist/evals/sets.service.js +248 -194
  162. package/dist/evals/snapshot.d.ts +2 -2
  163. package/dist/evals/step-replay.d.ts +2 -2
  164. package/dist/evals/step-replay.js +1 -1
  165. package/dist/evals/trajectory.controller.d.ts +1 -1
  166. package/dist/evals/trajectory.controller.js +11 -7
  167. package/dist/evals/trajectory.d.ts +2 -2
  168. package/dist/evals/trajectory.service.d.ts +5 -4
  169. package/dist/evals/trajectory.service.js +30 -7
  170. package/dist/evals/worker.d.ts +44 -27
  171. package/dist/evals/worker.js +220 -121
  172. package/dist/extensions/admin-ops.d.ts +61 -33
  173. package/dist/extensions/admin-ops.js +248 -154
  174. package/dist/extensions/admin-view.d.ts +38 -27
  175. package/dist/extensions/admin-view.js +126 -55
  176. package/dist/extensions/approvals.d.ts +12 -8
  177. package/dist/extensions/approvals.js +73 -46
  178. package/dist/extensions/blobs.d.ts +27 -10
  179. package/dist/extensions/blobs.js +111 -45
  180. package/dist/extensions/bootstrap.d.ts +58 -31
  181. package/dist/extensions/bootstrap.js +175 -121
  182. package/dist/extensions/cli.d.ts +20 -10
  183. package/dist/extensions/cli.js +41 -96
  184. package/dist/extensions/config-issues.d.ts +7 -0
  185. package/dist/extensions/config-issues.js +31 -0
  186. package/dist/extensions/deployment-config-store.d.ts +49 -0
  187. package/dist/extensions/deployment-config-store.js +133 -0
  188. package/dist/extensions/deployment-config.d.ts +58 -67
  189. package/dist/extensions/deployment-config.js +202 -230
  190. package/dist/extensions/enabled.d.ts +5 -5
  191. package/dist/extensions/extensions.module.d.ts +8 -0
  192. package/dist/extensions/extensions.module.js +77 -0
  193. package/dist/extensions/hooks.d.ts +3 -2
  194. package/dist/extensions/hooks.js +1 -1
  195. package/dist/extensions/host.d.ts +72 -68
  196. package/dist/extensions/host.js +191 -152
  197. package/dist/extensions/installs.d.ts +49 -16
  198. package/dist/extensions/installs.js +128 -32
  199. package/dist/extensions/job-ids.d.ts +6 -0
  200. package/dist/extensions/job-ids.js +6 -0
  201. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  202. package/dist/extensions/lifecycle-topics.js +18 -0
  203. package/dist/extensions/lifecycle.d.ts +35 -47
  204. package/dist/extensions/lifecycle.js +103 -39
  205. package/dist/extensions/locks.d.ts +33 -0
  206. package/dist/extensions/locks.js +86 -0
  207. package/dist/extensions/migrate-lock.d.ts +3 -4
  208. package/dist/extensions/org-config.controller.d.ts +1 -1
  209. package/dist/extensions/org-config.controller.js +8 -5
  210. package/dist/extensions/org-config.d.ts +48 -46
  211. package/dist/extensions/org-config.js +284 -226
  212. package/dist/extensions/registry.d.ts +50 -2
  213. package/dist/extensions/registry.js +89 -4
  214. package/dist/extensions/sources.d.ts +12 -8
  215. package/dist/extensions/sources.js +34 -13
  216. package/dist/files/files.module.d.ts +3 -0
  217. package/dist/files/files.module.js +22 -0
  218. package/dist/files/previewers.controller.d.ts +7 -2
  219. package/dist/files/previewers.controller.js +17 -9
  220. package/dist/files/previewers.d.ts +13 -18
  221. package/dist/files/previewers.js +83 -36
  222. package/dist/http/adapter.d.ts +3 -0
  223. package/dist/http/adapter.js +25 -0
  224. package/dist/http/api.module.d.ts +3 -110
  225. package/dist/http/api.module.js +47 -355
  226. package/dist/http/app.d.ts +11 -15
  227. package/dist/http/app.js +17 -62
  228. package/dist/http/error-filter.module.d.ts +5 -0
  229. package/dist/http/error-filter.module.js +18 -0
  230. package/dist/http/error.filter.js +2 -2
  231. package/dist/identity/accounts.d.ts +82 -29
  232. package/dist/identity/accounts.js +294 -175
  233. package/dist/identity/api-tokens.d.ts +11 -7
  234. package/dist/identity/api-tokens.js +71 -44
  235. package/dist/identity/audit.d.ts +7 -4
  236. package/dist/identity/audit.js +5 -1
  237. package/dist/identity/auth.controller.d.ts +11 -10
  238. package/dist/identity/auth.controller.js +31 -25
  239. package/dist/identity/auth.guard.d.ts +3 -3
  240. package/dist/identity/auth.guard.js +6 -4
  241. package/dist/identity/binding.d.ts +9 -11
  242. package/dist/identity/binding.js +41 -13
  243. package/dist/identity/enterprise-admin.d.ts +18 -12
  244. package/dist/identity/enterprise-admin.js +67 -13
  245. package/dist/identity/external-identity-lock.d.ts +17 -0
  246. package/dist/identity/external-identity-lock.js +39 -0
  247. package/dist/identity/external.d.ts +19 -15
  248. package/dist/identity/external.js +163 -125
  249. package/dist/identity/identity.module.d.ts +6 -0
  250. package/dist/identity/identity.module.js +56 -0
  251. package/dist/identity/me.controller.d.ts +16 -15
  252. package/dist/identity/me.controller.js +37 -31
  253. package/dist/identity/sessions.d.ts +12 -10
  254. package/dist/identity/sessions.js +74 -42
  255. package/dist/identity/settings.d.ts +20 -14
  256. package/dist/identity/settings.js +86 -58
  257. package/dist/identity/sso.controller.d.ts +7 -7
  258. package/dist/identity/sso.controller.js +13 -9
  259. package/dist/identity/sso.d.ts +9 -12
  260. package/dist/identity/sso.js +54 -24
  261. package/dist/inbox/inbox.module.d.ts +3 -0
  262. package/dist/inbox/inbox.module.js +22 -0
  263. package/dist/inbox/inbox.service.d.ts +7 -9
  264. package/dist/inbox/inbox.service.js +32 -11
  265. package/dist/index.d.ts +16 -11
  266. package/dist/index.js +9 -6
  267. package/dist/infra/cache/cache.module.d.ts +3 -0
  268. package/dist/infra/cache/cache.module.js +16 -0
  269. package/dist/infra/cache/cache.service.d.ts +21 -0
  270. package/dist/infra/cache/cache.service.js +80 -0
  271. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  272. package/dist/infra/cache/cacheable.decorator.js +83 -0
  273. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  274. package/dist/infra/cli/kernel-cli.module.js +165 -0
  275. package/dist/infra/close-within.d.ts +15 -0
  276. package/dist/infra/close-within.js +36 -0
  277. package/dist/infra/config/config.module.d.ts +13 -0
  278. package/dist/infra/config/config.module.js +39 -0
  279. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  280. package/dist/infra/config/kernel-config.service.js +126 -0
  281. package/dist/infra/database/after-commit.d.ts +6 -0
  282. package/dist/infra/database/after-commit.js +9 -0
  283. package/dist/infra/database/database.module.d.ts +25 -0
  284. package/dist/infra/database/database.module.js +90 -0
  285. package/dist/infra/database/kernel-db.d.ts +22 -0
  286. package/dist/infra/database/kernel-db.js +65 -0
  287. package/dist/infra/database/transaction-host.d.ts +50 -0
  288. package/dist/infra/database/transaction-host.js +125 -0
  289. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  290. package/dist/infra/database/transactional.decorator.js +27 -0
  291. package/dist/infra/database/xact-lock.d.ts +17 -0
  292. package/dist/infra/database/xact-lock.js +43 -0
  293. package/dist/infra/events/kernel-events.d.ts +96 -0
  294. package/dist/infra/events/kernel-events.js +65 -0
  295. package/dist/infra/health/health.controller.d.ts +26 -0
  296. package/dist/infra/health/health.controller.js +104 -0
  297. package/dist/infra/health/health.module.d.ts +9 -0
  298. package/dist/infra/health/health.module.js +24 -0
  299. package/dist/infra/health/health.options.d.ts +10 -0
  300. package/dist/infra/health/health.options.js +15 -0
  301. package/dist/infra/health/shutdown-state.d.ts +6 -0
  302. package/dist/infra/health/shutdown-state.js +2 -0
  303. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  304. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  305. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  306. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  307. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  308. package/dist/infra/lifecycle/process-guards.js +86 -0
  309. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  310. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  311. package/dist/infra/lock/key-template.d.ts +13 -0
  312. package/dist/infra/lock/key-template.js +46 -0
  313. package/dist/infra/lock/lock.module.d.ts +3 -0
  314. package/dist/infra/lock/lock.module.js +16 -0
  315. package/dist/infra/lock/lock.service.d.ts +120 -0
  316. package/dist/infra/lock/lock.service.js +343 -0
  317. package/dist/infra/lock/shared-lease.d.ts +44 -0
  318. package/dist/infra/lock/shared-lease.js +121 -0
  319. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  320. package/dist/infra/lock/with-lock.decorator.js +49 -0
  321. package/dist/infra/logging/logging.module.d.ts +16 -0
  322. package/dist/infra/logging/logging.module.js +34 -0
  323. package/dist/infra/queue/configured-processor.d.ts +18 -0
  324. package/dist/infra/queue/configured-processor.js +23 -0
  325. package/dist/infra/queue/job-failure.d.ts +18 -0
  326. package/dist/infra/queue/job-failure.js +26 -0
  327. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  328. package/dist/infra/queue/queue-shutdown.js +81 -0
  329. package/dist/infra/queue/queue.module.d.ts +16 -0
  330. package/dist/infra/queue/queue.module.js +61 -0
  331. package/dist/infra/queue/redis-connection.d.ts +7 -0
  332. package/dist/infra/queue/redis-connection.js +18 -0
  333. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  334. package/dist/infra/queue/retired-schedulers.js +9 -0
  335. package/dist/infra/queue/run-job.d.ts +16 -0
  336. package/dist/infra/queue/run-job.js +19 -0
  337. package/dist/infra/redis/redis.module.d.ts +24 -0
  338. package/dist/infra/redis/redis.module.js +87 -0
  339. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  340. package/dist/infra/schedule/cron-tick.js +25 -0
  341. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  342. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  343. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  344. package/dist/infra/schedule/locked-interval.js +190 -0
  345. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  346. package/dist/infra/schedule/locked-tick.js +137 -0
  347. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  348. package/dist/infra/schedule/schedule.module.js +27 -0
  349. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  350. package/dist/infra/schedule/scheduled-runs.js +163 -0
  351. package/dist/infra/swagger/swagger.d.ts +16 -0
  352. package/dist/infra/swagger/swagger.js +31 -0
  353. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  354. package/dist/infra/throttler/credential-throttler.js +77 -0
  355. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  356. package/dist/infra/throttler/named-throttlers.js +119 -0
  357. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  358. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  359. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  360. package/dist/infra/throttler/throttler.guard.js +68 -0
  361. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  362. package/dist/infra/throttler/throttler.module.js +53 -0
  363. package/dist/infra/tokens.d.ts +15 -0
  364. package/dist/infra/tokens.js +15 -0
  365. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  366. package/dist/infra/validation/create-zod-dto.js +35 -0
  367. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  368. package/dist/infra/validation/parse-with-zod.js +12 -0
  369. package/dist/infra/validation/validation.module.d.ts +3 -0
  370. package/dist/infra/validation/validation.module.js +16 -0
  371. package/dist/infra/validation/zod-params.d.ts +7 -0
  372. package/dist/infra/validation/zod-params.js +42 -0
  373. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  374. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  375. package/dist/kernel.d.ts +9 -244
  376. package/dist/kernel.js +8 -1305
  377. package/dist/kernel.module.d.ts +17 -0
  378. package/dist/kernel.module.js +136 -0
  379. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  380. package/dist/lifecycle/kernel-lifecycle.js +456 -0
  381. package/dist/lifecycle/tokens.d.ts +3 -0
  382. package/dist/lifecycle/tokens.js +3 -0
  383. package/dist/log-context.d.ts +2 -0
  384. package/dist/log-context.js +4 -0
  385. package/dist/models/models.module.d.ts +3 -0
  386. package/dist/models/models.module.js +24 -0
  387. package/dist/models/prices.d.ts +8 -2
  388. package/dist/models/prices.js +65 -37
  389. package/dist/models/purposes.controller.d.ts +1 -1
  390. package/dist/models/purposes.controller.js +5 -6
  391. package/dist/models/purposes.d.ts +35 -13
  392. package/dist/models/purposes.js +101 -51
  393. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  394. package/dist/orgs/directory-sync.controller.js +2 -2
  395. package/dist/orgs/directory-sync.d.ts +61 -31
  396. package/dist/orgs/directory-sync.js +212 -125
  397. package/dist/orgs/invitations.controller.d.ts +8 -8
  398. package/dist/orgs/invitations.controller.js +27 -26
  399. package/dist/orgs/invitations.service.d.ts +12 -9
  400. package/dist/orgs/invitations.service.js +130 -92
  401. package/dist/orgs/job-ids.d.ts +8 -0
  402. package/dist/orgs/job-ids.js +8 -0
  403. package/dist/orgs/members.service.d.ts +19 -12
  404. package/dist/orgs/members.service.js +161 -117
  405. package/dist/orgs/offboarding.d.ts +54 -57
  406. package/dist/orgs/offboarding.js +161 -71
  407. package/dist/orgs/org-lock.d.ts +28 -19
  408. package/dist/orgs/org-lock.js +81 -35
  409. package/dist/orgs/org.guard.d.ts +1 -1
  410. package/dist/orgs/org.guard.js +2 -2
  411. package/dist/orgs/orgs.controller.d.ts +13 -13
  412. package/dist/orgs/orgs.controller.js +29 -17
  413. package/dist/orgs/orgs.module.d.ts +6 -0
  414. package/dist/orgs/orgs.module.js +68 -0
  415. package/dist/orgs/orgs.service.d.ts +30 -19
  416. package/dist/orgs/orgs.service.js +139 -86
  417. package/dist/orgs/settings.controller.d.ts +1 -1
  418. package/dist/orgs/settings.controller.js +8 -6
  419. package/dist/orgs/settings.service.d.ts +16 -10
  420. package/dist/orgs/settings.service.js +77 -48
  421. package/dist/overrides.d.ts +56 -0
  422. package/dist/overrides.js +30 -0
  423. package/dist/roles/gateway-role.d.ts +43 -0
  424. package/dist/roles/gateway-role.js +98 -0
  425. package/dist/roles/gateway.module.d.ts +8 -0
  426. package/dist/roles/gateway.module.js +28 -0
  427. package/dist/roles/worker-role.d.ts +63 -0
  428. package/dist/roles/worker-role.js +144 -0
  429. package/dist/roles/worker.module.d.ts +14 -0
  430. package/dist/roles/worker.module.js +90 -0
  431. package/dist/runtime/abort.js +19 -2
  432. package/dist/runtime/checkpointer.d.ts +8 -3
  433. package/dist/runtime/checkpointer.js +87 -55
  434. package/dist/runtime/context/build.d.ts +6 -6
  435. package/dist/runtime/context/build.js +18 -8
  436. package/dist/runtime/context/claude-tools.d.ts +2 -1
  437. package/dist/runtime/context/claude-tools.js +9 -10
  438. package/dist/runtime/context/legacy-text.d.ts +22 -0
  439. package/dist/runtime/context/legacy-text.js +37 -0
  440. package/dist/runtime/context/skills.d.ts +29 -11
  441. package/dist/runtime/context/skills.js +37 -30
  442. package/dist/runtime/conversation-lock.d.ts +20 -11
  443. package/dist/runtime/conversation-lock.js +62 -72
  444. package/dist/runtime/hook-calls.d.ts +3 -3
  445. package/dist/runtime/hook-calls.js +1 -6
  446. package/dist/runtime/job-ids.d.ts +10 -0
  447. package/dist/runtime/job-ids.js +10 -0
  448. package/dist/runtime/langgraph-loop.js +1 -1
  449. package/dist/runtime/loop.d.ts +8 -1
  450. package/dist/runtime/loop.js +14 -0
  451. package/dist/runtime/maintenance-queue.d.ts +10 -0
  452. package/dist/runtime/maintenance-queue.js +10 -0
  453. package/dist/runtime/maintenance.d.ts +45 -74
  454. package/dist/runtime/maintenance.js +139 -137
  455. package/dist/runtime/model-call.d.ts +7 -4
  456. package/dist/runtime/model-call.js +25 -58
  457. package/dist/runtime/providers.d.ts +17 -6
  458. package/dist/runtime/providers.js +66 -25
  459. package/dist/runtime/quota.d.ts +17 -3
  460. package/dist/runtime/quota.js +27 -2
  461. package/dist/runtime/retired-schedulers.d.ts +7 -0
  462. package/dist/runtime/retired-schedulers.js +31 -0
  463. package/dist/runtime/run-control.d.ts +33 -0
  464. package/dist/runtime/run-control.js +77 -0
  465. package/dist/runtime/run-finish.d.ts +27 -18
  466. package/dist/runtime/run-finish.js +98 -51
  467. package/dist/runtime/run-jobs.d.ts +48 -0
  468. package/dist/runtime/run-jobs.js +95 -0
  469. package/dist/runtime/run-processors.d.ts +60 -0
  470. package/dist/runtime/run-processors.js +185 -0
  471. package/dist/runtime/run-queue.d.ts +32 -57
  472. package/dist/runtime/run-queue.js +291 -295
  473. package/dist/runtime/run-steps.d.ts +39 -0
  474. package/dist/runtime/run-steps.js +96 -0
  475. package/dist/runtime/run-worker.d.ts +122 -76
  476. package/dist/runtime/run-worker.js +343 -229
  477. package/dist/runtime/runtime.module.d.ts +10 -0
  478. package/dist/runtime/runtime.module.js +112 -0
  479. package/dist/runtime/step-log.d.ts +40 -0
  480. package/dist/runtime/step-log.js +94 -0
  481. package/dist/runtime/stream.controller.d.ts +5 -8
  482. package/dist/runtime/stream.controller.js +14 -12
  483. package/dist/runtime/stream.d.ts +24 -6
  484. package/dist/runtime/stream.js +78 -7
  485. package/dist/runtime/subagents/child.d.ts +3 -44
  486. package/dist/runtime/subagents/child.js +0 -79
  487. package/dist/runtime/subagents/definition.d.ts +5 -10
  488. package/dist/runtime/subagents/definition.js +13 -14
  489. package/dist/runtime/subagents/dispatch.d.ts +89 -8
  490. package/dist/runtime/subagents/dispatch.js +137 -142
  491. package/dist/runtime/subagents/limits.d.ts +9 -4
  492. package/dist/runtime/subagents/limits.js +4 -2
  493. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  494. package/dist/runtime/subagents/org-agents.js +3 -2
  495. package/dist/runtime/subagents/progress.d.ts +2 -2
  496. package/dist/runtime/subagents/roster.d.ts +4 -4
  497. package/dist/runtime/subagents/roster.js +2 -2
  498. package/dist/runtime/subagents/skill-fork.d.ts +8 -9
  499. package/dist/runtime/subagents/skill-fork.js +17 -6
  500. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  501. package/dist/runtime/subagents/subagents.service.js +101 -0
  502. package/dist/runtime/usage-report.d.ts +94 -52
  503. package/dist/runtime/usage-report.js +200 -100
  504. package/dist/runtime/waits.d.ts +127 -59
  505. package/dist/runtime/waits.js +433 -210
  506. package/dist/sandbox/job-ids.d.ts +10 -0
  507. package/dist/sandbox/job-ids.js +10 -0
  508. package/dist/sandbox/jobs.d.ts +41 -0
  509. package/dist/sandbox/jobs.js +113 -0
  510. package/dist/sandbox/leases.d.ts +39 -31
  511. package/dist/sandbox/leases.js +117 -257
  512. package/dist/sandbox/providers.d.ts +19 -0
  513. package/dist/sandbox/providers.js +38 -0
  514. package/dist/sandbox/sandbox.module.d.ts +8 -0
  515. package/dist/sandbox/sandbox.module.js +30 -0
  516. package/dist/sandbox/sandbox.service.d.ts +24 -29
  517. package/dist/sandbox/sandbox.service.js +106 -75
  518. package/dist/skills/catalog.d.ts +37 -24
  519. package/dist/skills/catalog.js +100 -57
  520. package/dist/skills/changes.controller.d.ts +4 -4
  521. package/dist/skills/changes.controller.js +15 -9
  522. package/dist/skills/changes.service.d.ts +30 -20
  523. package/dist/skills/changes.service.js +425 -367
  524. package/dist/skills/invocable.controller.d.ts +1 -1
  525. package/dist/skills/invocable.controller.js +8 -5
  526. package/dist/skills/invocation-keys.d.ts +1 -1
  527. package/dist/skills/invocation-keys.js +1 -1
  528. package/dist/skills/invoke.d.ts +17 -16
  529. package/dist/skills/invoke.js +53 -21
  530. package/dist/skills/skills.controller.d.ts +1 -1
  531. package/dist/skills/skills.controller.js +11 -6
  532. package/dist/skills/skills.module.d.ts +6 -0
  533. package/dist/skills/skills.module.js +30 -0
  534. package/dist/skills/skills.service.d.ts +47 -30
  535. package/dist/skills/skills.service.js +221 -158
  536. package/dist/storage/job-ids.d.ts +6 -0
  537. package/dist/storage/job-ids.js +6 -0
  538. package/dist/storage/purge.d.ts +22 -7
  539. package/dist/storage/purge.js +55 -3
  540. package/dist/storage/storage.module.d.ts +6 -0
  541. package/dist/storage/storage.module.js +23 -0
  542. package/dist/storage/storage.service.d.ts +18 -4
  543. package/dist/storage/storage.service.js +44 -3
  544. package/dist/tools/approvals.controller.d.ts +1 -1
  545. package/dist/tools/approvals.controller.js +12 -8
  546. package/dist/tools/approvals.service.d.ts +33 -25
  547. package/dist/tools/approvals.service.js +343 -259
  548. package/dist/tools/breaker.d.ts +2 -2
  549. package/dist/tools/breaker.js +21 -3
  550. package/dist/tools/builtin-names.d.ts +73 -0
  551. package/dist/tools/builtin-names.js +116 -0
  552. package/dist/tools/builtins/agent.d.ts +7 -7
  553. package/dist/tools/builtins/agent.js +7 -11
  554. package/dist/tools/builtins/ask-user.d.ts +3 -3
  555. package/dist/tools/builtins/ask-user.js +3 -3
  556. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  557. package/dist/tools/builtins/builtin-tools.js +80 -0
  558. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  559. package/dist/tools/builtins/read-tool-output.js +3 -3
  560. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  561. package/dist/tools/builtins/sandbox/bash.js +33 -30
  562. package/dist/tools/builtins/sandbox/common.d.ts +5 -4
  563. package/dist/tools/builtins/sandbox/common.js +2 -2
  564. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  565. package/dist/tools/builtins/sandbox/deliver.js +13 -13
  566. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  567. package/dist/tools/builtins/sandbox/edit.js +42 -31
  568. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  569. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  570. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  571. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  572. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  573. package/dist/tools/builtins/sandbox/glob.js +6 -6
  574. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  575. package/dist/tools/builtins/sandbox/grep.js +149 -32
  576. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  577. package/dist/tools/builtins/sandbox/index.js +1 -1
  578. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  579. package/dist/tools/builtins/sandbox/read.js +22 -15
  580. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  581. package/dist/tools/builtins/sandbox/write.js +38 -34
  582. package/dist/tools/builtins/skill-load.d.ts +6 -6
  583. package/dist/tools/builtins/skill-load.js +33 -17
  584. package/dist/tools/builtins/skill-write.d.ts +4 -4
  585. package/dist/tools/builtins/skill-write.js +10 -10
  586. package/dist/tools/builtins/tool-search.d.ts +13 -9
  587. package/dist/tools/builtins/tool-search.js +25 -14
  588. package/dist/tools/canonical-json.d.ts +6 -0
  589. package/dist/tools/canonical-json.js +16 -0
  590. package/dist/tools/connector-content.controller.d.ts +1 -1
  591. package/dist/tools/connector-content.controller.js +11 -6
  592. package/dist/tools/connector-content.d.ts +12 -15
  593. package/dist/tools/connector-content.js +53 -18
  594. package/dist/tools/connectors.controller.d.ts +1 -1
  595. package/dist/tools/connectors.controller.js +21 -10
  596. package/dist/tools/connectors.service.d.ts +31 -13
  597. package/dist/tools/connectors.service.js +438 -348
  598. package/dist/tools/credentials.d.ts +17 -20
  599. package/dist/tools/credentials.js +55 -34
  600. package/dist/tools/display-names.d.ts +9 -0
  601. package/dist/tools/display-names.js +24 -0
  602. package/dist/tools/drift.d.ts +29 -41
  603. package/dist/tools/drift.js +116 -84
  604. package/dist/tools/elicitation.js +1 -1
  605. package/dist/tools/info.d.ts +32 -13
  606. package/dist/tools/info.js +88 -39
  607. package/dist/tools/job-ids.d.ts +13 -0
  608. package/dist/tools/job-ids.js +15 -0
  609. package/dist/tools/jobs.d.ts +24 -0
  610. package/dist/tools/jobs.js +69 -0
  611. package/dist/tools/legacy-data.d.ts +34 -0
  612. package/dist/tools/legacy-data.js +76 -0
  613. package/dist/tools/legacy-keys.d.ts +51 -0
  614. package/dist/tools/legacy-keys.js +115 -0
  615. package/dist/tools/naming.d.ts +1 -5
  616. package/dist/tools/naming.js +1 -7
  617. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  618. package/dist/tools/oauth/flow-paths.js +38 -0
  619. package/dist/tools/oauth/flow.d.ts +30 -30
  620. package/dist/tools/oauth/flow.js +109 -81
  621. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  622. package/dist/tools/oauth/oauth.controller.js +12 -9
  623. package/dist/tools/oauth/tokens.d.ts +11 -3
  624. package/dist/tools/oauth/tokens.js +15 -14
  625. package/dist/tools/outputs.d.ts +13 -4
  626. package/dist/tools/outputs.js +48 -4
  627. package/dist/tools/pipeline.d.ts +72 -50
  628. package/dist/tools/pipeline.js +239 -100
  629. package/dist/tools/policy.d.ts +3 -16
  630. package/dist/tools/policy.js +13 -19
  631. package/dist/tools/questions.controller.d.ts +2 -2
  632. package/dist/tools/questions.controller.js +9 -6
  633. package/dist/tools/questions.service.d.ts +26 -25
  634. package/dist/tools/questions.service.js +201 -142
  635. package/dist/tools/registry.d.ts +43 -38
  636. package/dist/tools/registry.js +100 -72
  637. package/dist/tools/resources.d.ts +1 -1
  638. package/dist/tools/resources.js +1 -1
  639. package/dist/tools/specs.d.ts +5 -4
  640. package/dist/tools/specs.js +3 -1
  641. package/dist/tools/tools.module.d.ts +10 -0
  642. package/dist/tools/tools.module.js +91 -0
  643. package/dist/ui/call-extension.d.ts +16 -0
  644. package/dist/ui/call-extension.js +38 -0
  645. package/dist/ui/embed-token.d.ts +9 -5
  646. package/dist/ui/embed-token.js +34 -6
  647. package/dist/ui/ui-stream.d.ts +22 -17
  648. package/dist/ui/ui-stream.js +72 -12
  649. package/dist/ui/ui.module.d.ts +7 -0
  650. package/dist/ui/ui.module.js +28 -0
  651. package/dist/ui/views.controller.d.ts +14 -12
  652. package/dist/ui/views.controller.js +32 -25
  653. package/dist/ui/views.d.ts +9 -57
  654. package/dist/ui/views.js +43 -45
  655. package/package.json +10 -3
  656. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  657. package/dist/http/health.controller.d.ts +0 -26
  658. package/dist/http/health.controller.js +0 -79
  659. package/dist/http/tokens.d.ts +0 -131
  660. package/dist/http/tokens.js +0 -131
  661. package/dist/http/zod.pipe.d.ts +0 -8
  662. package/dist/http/zod.pipe.js +0 -14
  663. package/dist/identity/rate-limit.d.ts +0 -55
  664. package/dist/identity/rate-limit.js +0 -121
  665. package/dist/sandbox/lifecycle.d.ts +0 -21
  666. package/dist/sandbox/lifecycle.js +0 -68
  667. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  668. package/dist/tools/builtins/sandbox/names.js +0 -20
  669. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  670. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,8 +1,21 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
1
10
  import { randomBytes, randomUUID } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { sql } from "kysely";
3
13
  import { z } from "zod";
4
14
  import { ApiError } from "../errors.js";
5
- import { lockOrgAndAuthorize } from "../orgs/org-lock.js";
15
+ import { KernelDb } from "../infra/database/kernel-db.js";
16
+ import { TransactionHost } from "../infra/database/transaction-host.js";
17
+ import { Transactional } from "../infra/database/transactional.decorator.js";
18
+ import { OrgLock } from "../orgs/org-lock.js";
6
19
  import { roleAtLeast } from "../orgs/roles.js";
7
20
  import { audit } from "./audit.js";
8
21
  import { sha256Hex } from "./hash.js";
@@ -35,16 +48,20 @@ function validate(input) {
35
48
  }
36
49
  /**
37
50
  * API 令牌服务:个人令牌(`cap_pat_`,代表账号本人)与服务令牌(`cap_svc_`,属于组织、带角色)。
38
- * 库里只存 sha256;明文只在创建时返回一次。框架无关,由调用方注入 db。
51
+ * 库里只存 sha256;明文只在创建时返回一次。
39
52
  */
40
- export class ApiTokenService {
53
+ let ApiTokenService = class ApiTokenService {
41
54
  db;
42
- constructor(db) {
55
+ txHost;
56
+ orgLock;
57
+ constructor(db, txHost, orgLock) {
43
58
  this.db = db;
59
+ this.txHost = txHost;
60
+ this.orgLock = orgLock;
44
61
  }
45
62
  async createPersonal(accountId, input) {
46
63
  validate(input);
47
- return this.insertToken(this.db, "personal", {
64
+ return this.insertToken("personal", {
48
65
  account_id: accountId,
49
66
  org_id: null,
50
67
  role: null,
@@ -55,7 +72,7 @@ export class ApiTokenService {
55
72
  }
56
73
  async createService(orgId, input) {
57
74
  validate(input);
58
- return this.insertToken(this.db, "service", {
75
+ return this.insertToken("service", {
59
76
  account_id: null,
60
77
  org_id: orgId,
61
78
  role: input.role,
@@ -70,43 +87,39 @@ export class ApiTokenService {
70
87
  */
71
88
  async createServiceAs(orgId, actorAccountId, input) {
72
89
  validate(input);
73
- return this.db.transaction().execute(async (t) => {
74
- const { role } = await lockOrgAndAuthorize(t, orgId, actorAccountId, "org.tokens.manage");
75
- if (!roleAtLeast(role, input.role)) {
76
- throw new ApiError("forbidden", "Insufficient organization role");
77
- }
78
- const created = await this.insertToken(t, "service", {
79
- account_id: null,
80
- org_id: orgId,
81
- role: input.role,
82
- name: input.name,
83
- created_by: actorAccountId,
84
- expires_at: input.expiresAt ?? null,
85
- });
86
- await audit(t, {
87
- actorAccountId,
88
- orgId,
89
- action: "org.service_token.created",
90
- target: created.record.id,
91
- detail: { name: input.name, role: input.role },
92
- });
93
- return created;
90
+ const { role } = await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "org.tokens.manage");
91
+ if (!roleAtLeast(role, input.role)) {
92
+ throw new ApiError("forbidden", "Insufficient organization role");
93
+ }
94
+ const created = await this.insertToken("service", {
95
+ account_id: null,
96
+ org_id: orgId,
97
+ role: input.role,
98
+ name: input.name,
99
+ created_by: actorAccountId,
100
+ expires_at: input.expiresAt ?? null,
94
101
  });
102
+ await audit(this.db.db, {
103
+ actorAccountId,
104
+ orgId,
105
+ action: "org.service_token.created",
106
+ target: created.record.id,
107
+ detail: { name: input.name, role: input.role },
108
+ });
109
+ return created;
95
110
  }
96
111
  /**
97
112
  * 以账号身份吊销组织服务令牌并写审计(同一事务):同 createServiceAs 在组织行锁内实时复核发起人角色
98
113
  * (组织不存在 / 已删除 → `org.not_found`,无 `org.tokens.manage` → `forbidden`);不在该组织内 → `token.not_found`。
99
114
  */
100
115
  async revokeServiceAs(orgId, tokenId, actorAccountId) {
101
- await this.db.transaction().execute(async (t) => {
102
- await lockOrgAndAuthorize(t, orgId, actorAccountId, "org.tokens.manage");
103
- await this.revoke(tokenId, { orgId }, t);
104
- await audit(t, {
105
- actorAccountId,
106
- orgId,
107
- action: "org.service_token.revoked",
108
- target: tokenId,
109
- });
116
+ await this.orgLock.lockAndAuthorize(orgId, actorAccountId, "org.tokens.manage");
117
+ await this.revoke(tokenId, { orgId });
118
+ await audit(this.db.db, {
119
+ actorAccountId,
120
+ orgId,
121
+ action: "org.service_token.revoked",
122
+ target: tokenId,
110
123
  });
111
124
  }
112
125
  /** 校验令牌明文;未知、已吊销、已过期或前缀不对一律返回 null。 */
@@ -153,17 +166,18 @@ export class ApiTokenService {
153
166
  .execute();
154
167
  return rows.map(toRecord);
155
168
  }
156
- /** 吊销令牌;令牌不存在、已吊销或不在该 scope 内 → `token.not_found`。 */
157
- async revoke(id, scope, trx) {
158
- const r = await this.scoped((trx ?? this.db).updateTable("api_tokens").set({ revoked_at: sql `now()` }), scope)
169
+ /** Revokes a token (in the context's transaction when there is one); missing, revoked or out of scope → `token.not_found`. */
170
+ async revoke(id, scope) {
171
+ const r = await this.scoped(this.db.updateTable("api_tokens").set({ revoked_at: sql `now()` }), scope)
159
172
  .where("id", "=", id)
160
173
  .where("revoked_at", "is", null)
161
174
  .executeTakeFirst();
162
175
  if (r.numUpdatedRows === 0n)
163
176
  throw new ApiError("token.not_found", "Token not found");
164
177
  }
165
- async revokeAllForOrg(orgId, trx) {
166
- await (trx ?? this.db)
178
+ /** Revokes the org's service tokens (in the context's transaction when there is one). */
179
+ async revokeAllForOrg(orgId) {
180
+ await this.db
167
181
  .updateTable("api_tokens")
168
182
  .set({ revoked_at: sql `now()` })
169
183
  .where("kind", "=", "service")
@@ -185,13 +199,26 @@ export class ApiTokenService {
185
199
  ? q.where("kind", "=", "personal").where("account_id", "=", scope.accountId)
186
200
  : q.where("kind", "=", "service").where("org_id", "=", scope.orgId);
187
201
  }
188
- async insertToken(db, kind, values) {
202
+ async insertToken(kind, values) {
189
203
  const token = PREFIX[kind] + randomBytes(32).toString("base64url");
190
- const row = await db
204
+ const row = await this.db
191
205
  .insertInto("api_tokens")
192
206
  .values({ id: randomUUID(), kind, token_hash: sha256Hex(token), ...values })
193
207
  .returningAll()
194
208
  .executeTakeFirstOrThrow();
195
209
  return { token, record: toRecord(row) };
196
210
  }
197
- }
211
+ };
212
+ __decorate([
213
+ Transactional()
214
+ ], ApiTokenService.prototype, "createServiceAs", null);
215
+ __decorate([
216
+ Transactional()
217
+ ], ApiTokenService.prototype, "revokeServiceAs", null);
218
+ ApiTokenService = __decorate([
219
+ Injectable(),
220
+ __param(0, Inject(KernelDb)),
221
+ __param(1, Inject(TransactionHost)),
222
+ __param(2, Inject(OrgLock))
223
+ ], ApiTokenService);
224
+ export { ApiTokenService };
@@ -1,7 +1,10 @@
1
- import type { Transaction } from "kysely";
2
- import type { KernelDatabase, KernelDb } from "../db/kernel-schema.js";
3
- /** 写一条审计事件;`action` 用点分英文小写,如 `org.member.role_changed`。 */
4
- export declare function audit(db: KernelDb | Transaction<KernelDatabase>, e: {
1
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
2
+ /**
3
+ * Writes one audit event (`action` is dotted lower-case English, e.g. `org.member.role_changed`)
4
+ * through `db`: a service passes `this.db.db` (`KernelDb`: the context's transaction or the pool),
5
+ * so the event commits or rolls back with the write it records.
6
+ */
7
+ export declare function audit(db: KernelSchemaDb, e: {
5
8
  actorAccountId?: string;
6
9
  actorTokenId?: string;
7
10
  orgId?: string;
@@ -1,4 +1,8 @@
1
- /** 写一条审计事件;`action` 用点分英文小写,如 `org.member.role_changed`。 */
1
+ /**
2
+ * Writes one audit event (`action` is dotted lower-case English, e.g. `org.member.role_changed`)
3
+ * through `db`: a service passes `this.db.db` (`KernelDb`: the context's transaction or the pool),
4
+ * so the event commits or rolls back with the write it records.
5
+ */
2
6
  export async function audit(db, e) {
3
7
  await db
4
8
  .insertInto("audit_events")
@@ -1,10 +1,10 @@
1
1
  import type { FastifyReply, FastifyRequest } from "fastify";
2
2
  import { z } from "zod";
3
- import type { KernelConfig } from "../config/schema.js";
4
- import type { Account, AccountsService } from "./accounts.js";
5
- import type { LoginRateLimiter } from "./rate-limit.js";
6
- import type { SessionService } from "./sessions.js";
7
- declare const LoginBody: z.ZodObject<{
3
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
4
+ import { CredentialThrottler } from "../infra/throttler/credential-throttler.js";
5
+ import { type Account, AccountsService } from "./accounts.js";
6
+ import { SessionService } from "./sessions.js";
7
+ declare const LoginBodySchema: z.ZodObject<{
8
8
  login: z.ZodString;
9
9
  password: z.ZodString;
10
10
  }, z.core.$strip>;
@@ -17,14 +17,15 @@ export declare function clientMeta(req: FastifyRequest): {
17
17
  export declare class AuthController {
18
18
  private readonly accounts;
19
19
  private readonly sessions;
20
- private readonly limiter;
20
+ private readonly throttler;
21
21
  private readonly config;
22
- constructor(accounts: AccountsService, sessions: SessionService, limiter: LoginRateLimiter, config: () => KernelConfig);
22
+ constructor(accounts: AccountsService, sessions: SessionService, throttler: CredentialThrottler, config: KernelConfigService);
23
23
  /**
24
- * 登录名不存在与密码错误返回同一错误;每次尝试先按(登录名, IP)、IP、登录名三个计数原子占用限流额度,
25
- * 成功后清零登录名计数并退还 IP 额度(见 LoginRateLimiter)。
24
+ * An unknown login and a wrong password answer the same error. Every attempt first reserves one
25
+ * attempt on the (login, IP), IP and login counters atomically; success clears the login
26
+ * counters and gives the IP attempt back (`CredentialThrottler`).
26
27
  */
27
- login(body: z.infer<typeof LoginBody>, req: FastifyRequest, reply: FastifyReply): Promise<{
28
+ login(body: z.infer<typeof LoginBodySchema>, req: FastifyRequest, reply: FastifyReply): Promise<{
28
29
  account: Account;
29
30
  }>;
30
31
  /**
@@ -7,14 +7,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
- import { Body, Controller, HttpCode, Inject, Post, Req, Res } from "@nestjs/common";
10
+ import { Controller, HttpCode, Inject, Post, Req, Res } from "@nestjs/common";
11
11
  import { z } from "zod";
12
12
  import { ApiError } from "../errors.js";
13
- import { ACCOUNTS, KERNEL_CONFIG, RATE_LIMITER, SESSIONS } from "../http/tokens.js";
14
- import { ZodPipe } from "../http/zod.pipe.js";
13
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
14
+ import { CredentialThrottler } from "../infra/throttler/credential-throttler.js";
15
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
16
+ import { ZBody } from "../infra/validation/zod-params.js";
17
+ import { AccountsService } from "./accounts.js";
15
18
  import { ACCESS_COOKIE, clearSessionCookies, REFRESH_COOKIE, setSessionCookies, } from "./cookies.js";
16
19
  import { Public } from "./principal.js";
17
- const LoginBody = z.object({ login: z.string().max(256), password: z.string() });
20
+ import { SessionService } from "./sessions.js";
21
+ const LoginBodySchema = z.object({ login: z.string().max(256), password: z.string() });
22
+ class LoginBody extends createZodDto(LoginBodySchema, "LoginBody") {
23
+ }
24
+ /** The credential throttlers of a login attempt (R25: per (login, IP), per IP, per login). */
25
+ const LOGIN_THROTTLERS = ["login", "login-ip", "login-account"];
18
26
  /** 会话的客户端信息(记入 sessions 表)。`req.ip` 在 `http.trustProxy` 时取自 X-Forwarded-For。 */
19
27
  export function clientMeta(req) {
20
28
  const ua = req.headers["user-agent"];
@@ -24,42 +32,40 @@ export function clientMeta(req) {
24
32
  let AuthController = class AuthController {
25
33
  accounts;
26
34
  sessions;
27
- limiter;
35
+ throttler;
28
36
  config;
29
- constructor(accounts, sessions, limiter, config) {
37
+ constructor(accounts, sessions, throttler, config) {
30
38
  this.accounts = accounts;
31
39
  this.sessions = sessions;
32
- this.limiter = limiter;
40
+ this.throttler = throttler;
33
41
  this.config = config;
34
42
  }
35
43
  /**
36
- * 登录名不存在与密码错误返回同一错误;每次尝试先按(登录名, IP)、IP、登录名三个计数原子占用限流额度,
37
- * 成功后清零登录名计数并退还 IP 额度(见 LoginRateLimiter)。
44
+ * An unknown login and a wrong password answer the same error. Every attempt first reserves one
45
+ * attempt on the (login, IP), IP and login counters atomically; success clears the login
46
+ * counters and gives the IP attempt back (`CredentialThrottler`).
38
47
  */
39
48
  async login(body, req, reply) {
40
49
  const meta = clientMeta(req);
41
- // 校验密码之前先原子地占用一次尝试额度:并发请求也无法绕过上限
42
- const rl = await this.limiter.reserve(body.login, meta.ip);
43
- if (!rl.allowed) {
44
- reply.header("retry-after", String(rl.retryAfterSeconds));
45
- throw new ApiError("auth.rate_limited", "Too many failed login attempts; try again later");
46
- }
50
+ // reserve before checking the password, atomically: concurrent requests cannot pass the limit
51
+ await this.throttler.reserve(LOGIN_THROTTLERS, req, reply);
47
52
  let account;
48
53
  try {
49
54
  account = await this.accounts.authenticateLocal(body.login, body.password);
50
55
  }
51
56
  catch (e) {
52
- // 停用账号的密码是对的(authenticateLocal 先核对密码再看状态):不算失败尝试,退还占用的额度
57
+ // a disabled account's password is right (authenticateLocal checks it before the status):
58
+ // not a failed attempt, the reservation is given back
53
59
  if (e instanceof ApiError && e.code === "auth.account_disabled") {
54
- await this.limiter.succeeded(body.login, meta.ip);
60
+ await this.throttler.succeeded(LOGIN_THROTTLERS, req);
55
61
  }
56
62
  throw e;
57
63
  }
58
64
  if (!account)
59
65
  throw new ApiError("auth.invalid_credentials", "Invalid login or password");
60
- await this.limiter.succeeded(body.login, meta.ip);
66
+ await this.throttler.succeeded(LOGIN_THROTTLERS, req);
61
67
  const session = await this.sessions.create(account.id, meta);
62
- setSessionCookies(reply, session, this.config());
68
+ setSessionCookies(reply, session, this.config.get());
63
69
  return { account };
64
70
  }
65
71
  /**
@@ -75,7 +81,7 @@ let AuthController = class AuthController {
75
81
  const account = await this.accounts.get(session.accountId);
76
82
  if (!account)
77
83
  throw new ApiError("auth.refresh_invalid", "Refresh token is invalid");
78
- setSessionCookies(reply, session, this.config());
84
+ setSessionCookies(reply, session, this.config.get());
79
85
  return { account };
80
86
  }
81
87
  catch (e) {
@@ -102,7 +108,7 @@ __decorate([
102
108
  Post("login"),
103
109
  Public(),
104
110
  HttpCode(200),
105
- __param(0, Body(new ZodPipe(LoginBody))),
111
+ __param(0, ZBody(LoginBody)),
106
112
  __param(1, Req()),
107
113
  __param(2, Res({ passthrough: true }))
108
114
  ], AuthController.prototype, "login", null);
@@ -122,9 +128,9 @@ __decorate([
122
128
  ], AuthController.prototype, "logout", null);
123
129
  AuthController = __decorate([
124
130
  Controller("api/v1/auth"),
125
- __param(0, Inject(ACCOUNTS)),
126
- __param(1, Inject(SESSIONS)),
127
- __param(2, Inject(RATE_LIMITER)),
128
- __param(3, Inject(KERNEL_CONFIG))
131
+ __param(0, Inject(AccountsService)),
132
+ __param(1, Inject(SessionService)),
133
+ __param(2, Inject(CredentialThrottler)),
134
+ __param(3, Inject(KernelConfigService))
129
135
  ], AuthController);
130
136
  export { AuthController };
@@ -1,9 +1,9 @@
1
1
  import { type CanActivate, type ExecutionContext } from "@nestjs/common";
2
2
  import { Reflector } from "@nestjs/core";
3
3
  import type { FastifyRequest } from "fastify";
4
- import type { AccountsService } from "./accounts.js";
5
- import type { ApiTokenService } from "./api-tokens.js";
6
- import type { SessionService } from "./sessions.js";
4
+ import { AccountsService } from "./accounts.js";
5
+ import { ApiTokenService } from "./api-tokens.js";
6
+ import { SessionService } from "./sessions.js";
7
7
  /** CSRF 头:Cookie 认证的非安全请求(及所有公开路由的非安全请求)必须带 `X-Capybara-Csrf: 1`。 */
8
8
  export declare const CSRF_HEADER = "x-capybara-csrf";
9
9
  /** 解析凭据要用的服务({@link AuthGuard} 与 {@link authorizeEnterpriseAdmin} 共用)。 */
@@ -10,9 +10,11 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
10
10
  import { Inject, Injectable } from "@nestjs/common";
11
11
  import { Reflector } from "@nestjs/core";
12
12
  import { ApiError } from "../errors.js";
13
- import { ACCOUNTS, API_TOKENS, SESSIONS } from "../http/tokens.js";
13
+ import { AccountsService } from "./accounts.js";
14
+ import { ApiTokenService } from "./api-tokens.js";
14
15
  import { ACCESS_COOKIE } from "./cookies.js";
15
16
  import { ALLOW_SERVICE_KEY, ENTERPRISE_ADMIN_KEY, PUBLIC_KEY, SESSION_ONLY_KEY, } from "./principal.js";
17
+ import { SessionService } from "./sessions.js";
16
18
  /** CSRF 头:Cookie 认证的非安全请求(及所有公开路由的非安全请求)必须带 `X-Capybara-Csrf: 1`。 */
17
19
  export const CSRF_HEADER = "x-capybara-csrf";
18
20
  const SAFE_METHODS = new Set(["GET", "HEAD", "OPTIONS"]);
@@ -149,9 +151,9 @@ let AuthGuard = class AuthGuard {
149
151
  AuthGuard = __decorate([
150
152
  Injectable(),
151
153
  __param(0, Inject(Reflector)),
152
- __param(1, Inject(ACCOUNTS)),
153
- __param(2, Inject(SESSIONS)),
154
- __param(3, Inject(API_TOKENS))
154
+ __param(1, Inject(AccountsService)),
155
+ __param(2, Inject(SessionService)),
156
+ __param(3, Inject(ApiTokenService))
155
157
  ], AuthGuard);
156
158
  export { AuthGuard };
157
159
  function requireActive(account) {
@@ -1,8 +1,8 @@
1
1
  import type { ExternalIdentity } from "@capybara-hq/plugin-sdk";
2
2
  import type { Redis } from "ioredis";
3
- import type { KernelConfig } from "../config/schema.js";
4
- import type { KernelDb } from "../db/kernel-schema.js";
5
- import type { ExternalIdentities } from "./external.js";
3
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
4
+ import { KernelDb } from "../infra/database/kernel-db.js";
5
+ import { ExternalIdentities } from "./external.js";
6
6
  /** 绑定令牌的有效期(秒)。 */
7
7
  export declare const BIND_TOKEN_TTL_SECONDS = 900;
8
8
  /** 绑定确认页(网页)路径前缀:`<http.publicUrl>/bind/<token>`。 */
@@ -19,16 +19,14 @@ export interface PendingBinding {
19
19
  /**
20
20
  * IM 里识别不出的人:内核发一个一次性绑定链接,本人登录网页后确认,把该 IM 身份绑到当前账号。
21
21
  * 令牌 `cap_bind_<32 字节>`,Redis `capk:bind:<sha256>` 15 分钟、单次有效(确认时 GETDEL)。
22
- * 查看与确认时都复核发出链接的渠道连接仍可用(存在、未删除、其插件仍在该组织启用),否则 `bind.invalid`。框架无关。
22
+ * 查看与确认时都复核发出链接的渠道连接仍可用(存在、未删除、其插件仍在该组织启用),否则 `bind.invalid`。
23
23
  */
24
24
  export declare class IdentityBinding {
25
- private readonly deps;
26
- constructor(deps: {
27
- db: KernelDb;
28
- redis: Redis;
29
- config: () => KernelConfig;
30
- external: ExternalIdentities;
31
- });
25
+ private readonly db;
26
+ private readonly redis;
27
+ private readonly config;
28
+ private readonly external;
29
+ constructor(db: KernelDb, redis: Redis, config: Pick<KernelConfigService, "get">, external: ExternalIdentities);
32
30
  /** 生成绑定链接(渠道运行时在回绑定卡片时调用);需要 `http.publicUrl`。 */
33
31
  createBindToken(args: {
34
32
  connectionId: string;
@@ -1,6 +1,20 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
1
10
  import { createHash, randomBytes } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { ApiError } from "../errors.js";
3
13
  import { enabledExtensionsByOrg } from "../extensions/enabled.js";
14
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
15
+ import { KernelDb } from "../infra/database/kernel-db.js";
16
+ import { REDIS } from "../infra/tokens.js";
17
+ import { ExternalIdentities } from "./external.js";
4
18
  /** 绑定令牌的有效期(秒)。 */
5
19
  export const BIND_TOKEN_TTL_SECONDS = 900;
6
20
  /** 绑定确认页(网页)路径前缀:`<http.publicUrl>/bind/<token>`。 */
@@ -22,28 +36,34 @@ const view = (r) => ({
22
36
  /**
23
37
  * IM 里识别不出的人:内核发一个一次性绑定链接,本人登录网页后确认,把该 IM 身份绑到当前账号。
24
38
  * 令牌 `cap_bind_<32 字节>`,Redis `capk:bind:<sha256>` 15 分钟、单次有效(确认时 GETDEL)。
25
- * 查看与确认时都复核发出链接的渠道连接仍可用(存在、未删除、其插件仍在该组织启用),否则 `bind.invalid`。框架无关。
39
+ * 查看与确认时都复核发出链接的渠道连接仍可用(存在、未删除、其插件仍在该组织启用),否则 `bind.invalid`。
26
40
  */
27
- export class IdentityBinding {
28
- deps;
29
- constructor(deps) {
30
- this.deps = deps;
41
+ let IdentityBinding = class IdentityBinding {
42
+ db;
43
+ redis;
44
+ config;
45
+ external;
46
+ constructor(db, redis, config, external) {
47
+ this.db = db;
48
+ this.redis = redis;
49
+ this.config = config;
50
+ this.external = external;
31
51
  }
32
52
  /** 生成绑定链接(渠道运行时在回绑定卡片时调用);需要 `http.publicUrl`。 */
33
53
  async createBindToken(args) {
34
- const publicUrl = this.deps.config().http.publicUrl;
54
+ const publicUrl = this.config.get().http.publicUrl;
35
55
  if (!publicUrl)
36
56
  throw new Error("binding links require http.publicUrl to be configured");
37
57
  const token = TOKEN_PREFIX + randomBytes(32).toString("base64url");
38
58
  const rec = { connectionId: args.connectionId, identity: args.identity };
39
- await this.deps.redis.set(tokenKey(token), JSON.stringify(rec), "EX", BIND_TOKEN_TTL_SECONDS);
59
+ await this.redis.set(tokenKey(token), JSON.stringify(rec), "EX", BIND_TOKEN_TTL_SECONDS);
40
60
  return `${publicUrl.replace(/\/+$/, "")}${BIND_PAGE_PATH}${token}`;
41
61
  }
42
62
  /** 查看待绑定的身份(不消耗令牌);无效 / 过期 / 已用 → `bind.invalid`。 */
43
63
  async peek(token) {
44
64
  if (!TOKEN_RE.test(token))
45
65
  throw invalid();
46
- const raw = await this.deps.redis.get(tokenKey(token));
66
+ const raw = await this.redis.get(tokenKey(token));
47
67
  if (raw === null)
48
68
  throw invalid();
49
69
  const rec = JSON.parse(raw);
@@ -59,20 +79,20 @@ export class IdentityBinding {
59
79
  async bind(token, accountId) {
60
80
  if (!TOKEN_RE.test(token))
61
81
  throw invalid();
62
- const raw = await this.deps.redis.getdel(tokenKey(token));
82
+ const raw = await this.redis.getdel(tokenKey(token));
63
83
  if (raw === null)
64
84
  throw invalid();
65
85
  const rec = JSON.parse(raw);
66
86
  if (!(await this.connectionUsable(rec.connectionId)))
67
87
  throw invalid();
68
- await this.deps.external.link(accountId, rec.identity);
88
+ await this.external.link(accountId, rec.identity);
69
89
  return view(rec);
70
90
  }
71
91
  /** 渠道连接存在、未软删除,且其插件在连接所属组织启用。 */
72
92
  async connectionUsable(connectionId) {
73
- const row = await this.deps.db
93
+ const row = await this.db
74
94
  .selectFrom("channel_connections")
75
- .innerJoin(enabledExtensionsByOrg(this.deps.db).as("en"), (j) => j
95
+ .innerJoin(enabledExtensionsByOrg(this.db.db).as("en"), (j) => j
76
96
  .onRef("en.org_id", "=", "channel_connections.org_id")
77
97
  .onRef("en.plugin", "=", "channel_connections.plugin"))
78
98
  .select("channel_connections.id")
@@ -81,4 +101,12 @@ export class IdentityBinding {
81
101
  .executeTakeFirst();
82
102
  return row !== undefined;
83
103
  }
84
- }
104
+ };
105
+ IdentityBinding = __decorate([
106
+ Injectable(),
107
+ __param(0, Inject(KernelDb)),
108
+ __param(1, Inject(REDIS)),
109
+ __param(2, Inject(KernelConfigService)),
110
+ __param(3, Inject(ExternalIdentities))
111
+ ], IdentityBinding);
112
+ export { IdentityBinding };
@@ -1,14 +1,20 @@
1
- import { type Transaction } from "kysely";
2
- import type { KernelDatabase } from "../db/kernel-schema.js";
1
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
+ import { TransactionHost } from "../infra/database/transaction-host.js";
3
+ import { XactLock } from "../infra/database/xact-lock.js";
3
4
  /**
4
- * 在调用方事务内取 `capybara.enterprise_admins` 咨询锁(事务结束释放),串行化所有企业管理员写操作
5
- * (撤销 / 停用 / 新建管理员 / 改部署设置 / CLI 的 `capybara admin grant|revoke`)。只加锁、不鉴权:
6
- * 没有发起账号的调用方(CLI)用它;有发起账号的用 {@link lockEnterpriseAdminsAndAuthorize}。
5
+ * The enterprise admin lock, the one implementation of "lock, then re-check the actor":
6
+ * both methods join the caller's transaction (`mandatory`), which holds the lock until it ends.
7
7
  */
8
- export declare function lockEnterpriseAdmins(trx: Transaction<KernelDatabase>): Promise<void>;
9
- /**
10
- * 企业管理员写操作的执行期复核(spec 3.6 R5):{@link lockEnterpriseAdmins} 后在锁内实时确认发起人仍是
11
- * 活跃企业管理员,否则 `forbidden`。鉴权守卫在请求开头读到的身份可能已过期(另一个管理员刚撤销了他),
12
- * 必须在锁内重读。
13
- */
14
- export declare function lockEnterpriseAdminsAndAuthorize(trx: Transaction<KernelDatabase>, actorAccountId: string): Promise<void>;
8
+ export declare class EnterpriseAdminLock {
9
+ private readonly db;
10
+ private readonly xactLock;
11
+ readonly txHost: TransactionHost;
12
+ constructor(db: KernelDb, xactLock: XactLock, txHost: TransactionHost);
13
+ /** Only the lock (callers without an actor: the CLI, bootstrap). */
14
+ lock(): Promise<void>;
15
+ /** The lock, then {@link assertActiveEnterpriseAdmin} under it. */
16
+ lockAndAuthorize(actorAccountId: string): Promise<void>;
17
+ }
18
+ /** The one {@link EnterpriseAdminLock}: identity, models, the extensions and the catalog import it. */
19
+ export declare class EnterpriseAdminLockModule {
20
+ }