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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) 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 +179 -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 +261 -329
  21. package/dist/agents/definition.d.ts +8 -0
  22. package/dist/agents/definition.js +8 -0
  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 +20 -4
  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 +323 -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/cli.d.ts +3 -2
  42. package/dist/catalog/cli.js +13 -31
  43. package/dist/catalog/job-ids.d.ts +15 -0
  44. package/dist/catalog/job-ids.js +15 -0
  45. package/dist/catalog/jobs.d.ts +27 -0
  46. package/dist/catalog/jobs.js +70 -0
  47. package/dist/catalog/locks.d.ts +24 -0
  48. package/dist/catalog/locks.js +63 -0
  49. package/dist/catalog/marketplaces.controller.d.ts +4 -4
  50. package/dist/catalog/marketplaces.controller.js +22 -11
  51. package/dist/catalog/marketplaces.service.d.ts +30 -13
  52. package/dist/catalog/marketplaces.service.js +330 -256
  53. package/dist/catalog/org-catalog.controller.d.ts +4 -3
  54. package/dist/catalog/org-catalog.controller.js +29 -14
  55. package/dist/catalog/org-catalog.service.d.ts +32 -198
  56. package/dist/catalog/org-catalog.service.js +159 -400
  57. package/dist/catalog/plugin-import.d.ts +73 -34
  58. package/dist/catalog/plugin-import.js +356 -217
  59. package/dist/catalog/plugin-install.d.ts +83 -41
  60. package/dist/catalog/plugin-install.js +421 -269
  61. package/dist/catalog/plugin-upgrade.d.ts +59 -4
  62. package/dist/catalog/plugin-upgrade.js +407 -282
  63. package/dist/catalog/requests.service.d.ts +27 -15
  64. package/dist/catalog/requests.service.js +201 -145
  65. package/dist/catalog/upgrade-targets.d.ts +4 -7
  66. package/dist/channels/actions.d.ts +6 -4
  67. package/dist/channels/actions.js +1 -1
  68. package/dist/channels/cards.d.ts +2 -2
  69. package/dist/channels/channels.module.d.ts +40 -0
  70. package/dist/channels/channels.module.js +128 -0
  71. package/dist/channels/connections.controller.d.ts +1 -1
  72. package/dist/channels/connections.controller.js +11 -6
  73. package/dist/channels/connections.service.d.ts +43 -21
  74. package/dist/channels/connections.service.js +236 -131
  75. package/dist/channels/inbound.d.ts +34 -38
  76. package/dist/channels/inbound.js +107 -41
  77. package/dist/channels/job-ids.d.ts +10 -0
  78. package/dist/channels/job-ids.js +10 -0
  79. package/dist/channels/jobs.d.ts +85 -0
  80. package/dist/channels/jobs.js +157 -0
  81. package/dist/channels/outbound.d.ts +60 -82
  82. package/dist/channels/outbound.js +165 -194
  83. package/dist/channels/supervisor.d.ts +88 -46
  84. package/dist/channels/supervisor.js +230 -132
  85. package/dist/channels/threads.d.ts +29 -8
  86. package/dist/channels/threads.js +71 -13
  87. package/dist/channels/webhook.d.ts +20 -14
  88. package/dist/channels/webhook.js +51 -20
  89. package/dist/config/load.d.ts +3 -2
  90. package/dist/config/load.js +3 -2
  91. package/dist/config/nacos-source.js +11 -2
  92. package/dist/config/schema.d.ts +1 -0
  93. package/dist/config/schema.js +10 -4
  94. package/dist/conversations/access.d.ts +29 -0
  95. package/dist/conversations/access.js +86 -0
  96. package/dist/conversations/artifacts.d.ts +10 -10
  97. package/dist/conversations/artifacts.js +35 -9
  98. package/dist/conversations/attachments.controller.d.ts +1 -1
  99. package/dist/conversations/attachments.controller.js +8 -6
  100. package/dist/conversations/attachments.module.d.ts +7 -0
  101. package/dist/conversations/attachments.module.js +25 -0
  102. package/dist/conversations/attachments.service.d.ts +30 -22
  103. package/dist/conversations/attachments.service.js +119 -46
  104. package/dist/conversations/conversations.controller.d.ts +8 -7
  105. package/dist/conversations/conversations.controller.js +59 -29
  106. package/dist/conversations/conversations.module.d.ts +8 -0
  107. package/dist/conversations/conversations.module.js +69 -0
  108. package/dist/conversations/conversations.service.d.ts +40 -38
  109. package/dist/conversations/conversations.service.js +130 -140
  110. package/dist/conversations/event-log.d.ts +28 -18
  111. package/dist/conversations/event-log.js +74 -27
  112. package/dist/conversations/files.d.ts +10 -10
  113. package/dist/conversations/files.js +37 -11
  114. package/dist/conversations/idem-keys.d.ts +5 -0
  115. package/dist/conversations/idem-keys.js +5 -0
  116. package/dist/conversations/job-ids.d.ts +6 -0
  117. package/dist/conversations/job-ids.js +6 -0
  118. package/dist/conversations/outputs-read.d.ts +11 -11
  119. package/dist/conversations/outputs-read.js +31 -7
  120. package/dist/conversations/queue.d.ts +48 -56
  121. package/dist/conversations/queue.js +13 -289
  122. package/dist/conversations/queue.service.d.ts +60 -0
  123. package/dist/conversations/queue.service.js +343 -0
  124. package/dist/conversations/sandbox-status.d.ts +13 -10
  125. package/dist/conversations/sandbox-status.js +36 -8
  126. package/dist/conversations/titles.d.ts +71 -24
  127. package/dist/conversations/titles.js +159 -63
  128. package/dist/ctx/bus.js +9 -3
  129. package/dist/ctx/create-ctx.d.ts +6 -0
  130. package/dist/ctx/create-ctx.js +7 -9
  131. package/dist/ctx/lock.d.ts +7 -3
  132. package/dist/ctx/lock.js +9 -20
  133. package/dist/ctx/secrets.d.ts +10 -2
  134. package/dist/ctx/secrets.js +7 -3
  135. package/dist/db/kernel-schema.d.ts +2 -2
  136. package/dist/db/pool.d.ts +5 -0
  137. package/dist/db/pool.js +1 -0
  138. package/dist/errors.d.ts +1 -0
  139. package/dist/errors.js +1 -0
  140. package/dist/evals/budget.d.ts +42 -21
  141. package/dist/evals/budget.js +114 -62
  142. package/dist/evals/evals.module.d.ts +31 -0
  143. package/dist/evals/evals.module.js +114 -0
  144. package/dist/evals/jobs.d.ts +20 -0
  145. package/dist/evals/jobs.js +45 -0
  146. package/dist/evals/run-replay.d.ts +56 -8
  147. package/dist/evals/run-replay.js +140 -80
  148. package/dist/evals/runs.controller.d.ts +1 -1
  149. package/dist/evals/runs.controller.js +17 -8
  150. package/dist/evals/runs.service.d.ts +23 -45
  151. package/dist/evals/runs.service.js +245 -234
  152. package/dist/evals/sets.controller.d.ts +1 -1
  153. package/dist/evals/sets.controller.js +17 -8
  154. package/dist/evals/sets.service.d.ts +22 -6
  155. package/dist/evals/sets.service.js +248 -194
  156. package/dist/evals/snapshot.d.ts +2 -2
  157. package/dist/evals/step-replay.d.ts +2 -2
  158. package/dist/evals/step-replay.js +1 -1
  159. package/dist/evals/trajectory.controller.d.ts +1 -1
  160. package/dist/evals/trajectory.controller.js +11 -7
  161. package/dist/evals/trajectory.service.d.ts +5 -4
  162. package/dist/evals/trajectory.service.js +30 -7
  163. package/dist/evals/worker.d.ts +44 -27
  164. package/dist/evals/worker.js +220 -121
  165. package/dist/extensions/admin-ops.d.ts +61 -33
  166. package/dist/extensions/admin-ops.js +248 -154
  167. package/dist/extensions/admin-view.d.ts +38 -27
  168. package/dist/extensions/admin-view.js +126 -55
  169. package/dist/extensions/approvals.d.ts +12 -8
  170. package/dist/extensions/approvals.js +73 -46
  171. package/dist/extensions/blobs.d.ts +27 -10
  172. package/dist/extensions/blobs.js +111 -45
  173. package/dist/extensions/bootstrap.d.ts +58 -31
  174. package/dist/extensions/bootstrap.js +175 -121
  175. package/dist/extensions/cli.d.ts +20 -10
  176. package/dist/extensions/cli.js +41 -96
  177. package/dist/extensions/config-issues.d.ts +7 -0
  178. package/dist/extensions/config-issues.js +31 -0
  179. package/dist/extensions/deployment-config-store.d.ts +49 -0
  180. package/dist/extensions/deployment-config-store.js +133 -0
  181. package/dist/extensions/deployment-config.d.ts +58 -67
  182. package/dist/extensions/deployment-config.js +202 -230
  183. package/dist/extensions/enabled.d.ts +5 -5
  184. package/dist/extensions/extensions.module.d.ts +8 -0
  185. package/dist/extensions/extensions.module.js +77 -0
  186. package/dist/extensions/hooks.d.ts +3 -2
  187. package/dist/extensions/hooks.js +1 -1
  188. package/dist/extensions/host.d.ts +72 -68
  189. package/dist/extensions/host.js +191 -152
  190. package/dist/extensions/installs.d.ts +49 -16
  191. package/dist/extensions/installs.js +128 -32
  192. package/dist/extensions/job-ids.d.ts +6 -0
  193. package/dist/extensions/job-ids.js +6 -0
  194. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  195. package/dist/extensions/lifecycle-topics.js +18 -0
  196. package/dist/extensions/lifecycle.d.ts +35 -47
  197. package/dist/extensions/lifecycle.js +103 -39
  198. package/dist/extensions/locks.d.ts +33 -0
  199. package/dist/extensions/locks.js +86 -0
  200. package/dist/extensions/migrate-lock.d.ts +3 -4
  201. package/dist/extensions/org-config.controller.d.ts +1 -1
  202. package/dist/extensions/org-config.controller.js +8 -5
  203. package/dist/extensions/org-config.d.ts +48 -46
  204. package/dist/extensions/org-config.js +284 -226
  205. package/dist/extensions/registry.d.ts +50 -2
  206. package/dist/extensions/registry.js +89 -4
  207. package/dist/extensions/sources.d.ts +12 -8
  208. package/dist/extensions/sources.js +34 -13
  209. package/dist/files/files.module.d.ts +3 -0
  210. package/dist/files/files.module.js +22 -0
  211. package/dist/files/previewers.controller.d.ts +7 -2
  212. package/dist/files/previewers.controller.js +17 -9
  213. package/dist/files/previewers.d.ts +13 -18
  214. package/dist/files/previewers.js +83 -36
  215. package/dist/http/adapter.d.ts +3 -0
  216. package/dist/http/adapter.js +25 -0
  217. package/dist/http/api.module.d.ts +3 -110
  218. package/dist/http/api.module.js +47 -355
  219. package/dist/http/app.d.ts +11 -15
  220. package/dist/http/app.js +17 -62
  221. package/dist/http/error-filter.module.d.ts +5 -0
  222. package/dist/http/error-filter.module.js +18 -0
  223. package/dist/http/error.filter.js +2 -2
  224. package/dist/identity/accounts.d.ts +82 -29
  225. package/dist/identity/accounts.js +294 -175
  226. package/dist/identity/api-tokens.d.ts +11 -7
  227. package/dist/identity/api-tokens.js +71 -44
  228. package/dist/identity/audit.d.ts +7 -4
  229. package/dist/identity/audit.js +5 -1
  230. package/dist/identity/auth.controller.d.ts +11 -10
  231. package/dist/identity/auth.controller.js +31 -25
  232. package/dist/identity/auth.guard.d.ts +3 -3
  233. package/dist/identity/auth.guard.js +6 -4
  234. package/dist/identity/binding.d.ts +9 -11
  235. package/dist/identity/binding.js +41 -13
  236. package/dist/identity/enterprise-admin.d.ts +18 -12
  237. package/dist/identity/enterprise-admin.js +67 -13
  238. package/dist/identity/external-identity-lock.d.ts +17 -0
  239. package/dist/identity/external-identity-lock.js +39 -0
  240. package/dist/identity/external.d.ts +19 -15
  241. package/dist/identity/external.js +163 -125
  242. package/dist/identity/identity.module.d.ts +6 -0
  243. package/dist/identity/identity.module.js +56 -0
  244. package/dist/identity/me.controller.d.ts +16 -15
  245. package/dist/identity/me.controller.js +37 -31
  246. package/dist/identity/sessions.d.ts +12 -10
  247. package/dist/identity/sessions.js +74 -42
  248. package/dist/identity/settings.d.ts +20 -14
  249. package/dist/identity/settings.js +85 -57
  250. package/dist/identity/sso.controller.d.ts +7 -7
  251. package/dist/identity/sso.controller.js +13 -9
  252. package/dist/identity/sso.d.ts +9 -12
  253. package/dist/identity/sso.js +54 -24
  254. package/dist/inbox/inbox.module.d.ts +3 -0
  255. package/dist/inbox/inbox.module.js +22 -0
  256. package/dist/inbox/inbox.service.d.ts +7 -9
  257. package/dist/inbox/inbox.service.js +32 -11
  258. package/dist/index.d.ts +16 -11
  259. package/dist/index.js +9 -6
  260. package/dist/infra/cache/cache.module.d.ts +3 -0
  261. package/dist/infra/cache/cache.module.js +16 -0
  262. package/dist/infra/cache/cache.service.d.ts +21 -0
  263. package/dist/infra/cache/cache.service.js +80 -0
  264. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  265. package/dist/infra/cache/cacheable.decorator.js +83 -0
  266. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  267. package/dist/infra/cli/kernel-cli.module.js +165 -0
  268. package/dist/infra/close-within.d.ts +15 -0
  269. package/dist/infra/close-within.js +36 -0
  270. package/dist/infra/config/config.module.d.ts +13 -0
  271. package/dist/infra/config/config.module.js +39 -0
  272. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  273. package/dist/infra/config/kernel-config.service.js +126 -0
  274. package/dist/infra/database/after-commit.d.ts +6 -0
  275. package/dist/infra/database/after-commit.js +9 -0
  276. package/dist/infra/database/database.module.d.ts +25 -0
  277. package/dist/infra/database/database.module.js +90 -0
  278. package/dist/infra/database/kernel-db.d.ts +22 -0
  279. package/dist/infra/database/kernel-db.js +65 -0
  280. package/dist/infra/database/transaction-host.d.ts +50 -0
  281. package/dist/infra/database/transaction-host.js +125 -0
  282. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  283. package/dist/infra/database/transactional.decorator.js +27 -0
  284. package/dist/infra/database/xact-lock.d.ts +17 -0
  285. package/dist/infra/database/xact-lock.js +43 -0
  286. package/dist/infra/events/kernel-events.d.ts +96 -0
  287. package/dist/infra/events/kernel-events.js +65 -0
  288. package/dist/infra/health/health.controller.d.ts +26 -0
  289. package/dist/infra/health/health.controller.js +104 -0
  290. package/dist/infra/health/health.module.d.ts +9 -0
  291. package/dist/infra/health/health.module.js +24 -0
  292. package/dist/infra/health/health.options.d.ts +10 -0
  293. package/dist/infra/health/health.options.js +15 -0
  294. package/dist/infra/health/shutdown-state.d.ts +6 -0
  295. package/dist/infra/health/shutdown-state.js +2 -0
  296. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  297. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  298. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  299. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  300. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  301. package/dist/infra/lifecycle/process-guards.js +86 -0
  302. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  303. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  304. package/dist/infra/lock/key-template.d.ts +13 -0
  305. package/dist/infra/lock/key-template.js +46 -0
  306. package/dist/infra/lock/lock.module.d.ts +3 -0
  307. package/dist/infra/lock/lock.module.js +16 -0
  308. package/dist/infra/lock/lock.service.d.ts +120 -0
  309. package/dist/infra/lock/lock.service.js +343 -0
  310. package/dist/infra/lock/shared-lease.d.ts +44 -0
  311. package/dist/infra/lock/shared-lease.js +121 -0
  312. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  313. package/dist/infra/lock/with-lock.decorator.js +49 -0
  314. package/dist/infra/logging/logging.module.d.ts +16 -0
  315. package/dist/infra/logging/logging.module.js +34 -0
  316. package/dist/infra/queue/configured-processor.d.ts +18 -0
  317. package/dist/infra/queue/configured-processor.js +23 -0
  318. package/dist/infra/queue/job-failure.d.ts +18 -0
  319. package/dist/infra/queue/job-failure.js +26 -0
  320. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  321. package/dist/infra/queue/queue-shutdown.js +81 -0
  322. package/dist/infra/queue/queue.module.d.ts +16 -0
  323. package/dist/infra/queue/queue.module.js +61 -0
  324. package/dist/infra/queue/redis-connection.d.ts +7 -0
  325. package/dist/infra/queue/redis-connection.js +18 -0
  326. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  327. package/dist/infra/queue/retired-schedulers.js +9 -0
  328. package/dist/infra/queue/run-job.d.ts +16 -0
  329. package/dist/infra/queue/run-job.js +19 -0
  330. package/dist/infra/redis/redis.module.d.ts +24 -0
  331. package/dist/infra/redis/redis.module.js +87 -0
  332. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  333. package/dist/infra/schedule/cron-tick.js +25 -0
  334. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  335. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  336. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  337. package/dist/infra/schedule/locked-interval.js +190 -0
  338. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  339. package/dist/infra/schedule/locked-tick.js +137 -0
  340. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  341. package/dist/infra/schedule/schedule.module.js +27 -0
  342. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  343. package/dist/infra/schedule/scheduled-runs.js +163 -0
  344. package/dist/infra/swagger/swagger.d.ts +16 -0
  345. package/dist/infra/swagger/swagger.js +31 -0
  346. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  347. package/dist/infra/throttler/credential-throttler.js +77 -0
  348. package/dist/infra/throttler/named-throttlers.d.ts +31 -0
  349. package/dist/infra/throttler/named-throttlers.js +119 -0
  350. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  351. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  352. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  353. package/dist/infra/throttler/throttler.guard.js +68 -0
  354. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  355. package/dist/infra/throttler/throttler.module.js +53 -0
  356. package/dist/infra/tokens.d.ts +15 -0
  357. package/dist/infra/tokens.js +15 -0
  358. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  359. package/dist/infra/validation/create-zod-dto.js +35 -0
  360. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  361. package/dist/infra/validation/parse-with-zod.js +12 -0
  362. package/dist/infra/validation/validation.module.d.ts +3 -0
  363. package/dist/infra/validation/validation.module.js +16 -0
  364. package/dist/infra/validation/zod-params.d.ts +7 -0
  365. package/dist/infra/validation/zod-params.js +42 -0
  366. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  367. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  368. package/dist/kernel.d.ts +9 -244
  369. package/dist/kernel.js +8 -1305
  370. package/dist/kernel.module.d.ts +17 -0
  371. package/dist/kernel.module.js +136 -0
  372. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  373. package/dist/lifecycle/kernel-lifecycle.js +451 -0
  374. package/dist/lifecycle/tokens.d.ts +3 -0
  375. package/dist/lifecycle/tokens.js +3 -0
  376. package/dist/log-context.d.ts +2 -0
  377. package/dist/log-context.js +4 -0
  378. package/dist/models/models.module.d.ts +3 -0
  379. package/dist/models/models.module.js +24 -0
  380. package/dist/models/prices.d.ts +8 -2
  381. package/dist/models/prices.js +65 -37
  382. package/dist/models/purposes.controller.d.ts +1 -1
  383. package/dist/models/purposes.controller.js +5 -6
  384. package/dist/models/purposes.d.ts +35 -13
  385. package/dist/models/purposes.js +101 -51
  386. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  387. package/dist/orgs/directory-sync.controller.js +2 -2
  388. package/dist/orgs/directory-sync.d.ts +61 -31
  389. package/dist/orgs/directory-sync.js +212 -125
  390. package/dist/orgs/invitations.controller.d.ts +8 -8
  391. package/dist/orgs/invitations.controller.js +27 -26
  392. package/dist/orgs/invitations.service.d.ts +12 -9
  393. package/dist/orgs/invitations.service.js +130 -92
  394. package/dist/orgs/job-ids.d.ts +8 -0
  395. package/dist/orgs/job-ids.js +8 -0
  396. package/dist/orgs/members.service.d.ts +19 -12
  397. package/dist/orgs/members.service.js +161 -117
  398. package/dist/orgs/offboarding.d.ts +54 -57
  399. package/dist/orgs/offboarding.js +161 -71
  400. package/dist/orgs/org-lock.d.ts +28 -19
  401. package/dist/orgs/org-lock.js +81 -35
  402. package/dist/orgs/org.guard.d.ts +1 -1
  403. package/dist/orgs/org.guard.js +2 -2
  404. package/dist/orgs/orgs.controller.d.ts +13 -13
  405. package/dist/orgs/orgs.controller.js +29 -17
  406. package/dist/orgs/orgs.module.d.ts +6 -0
  407. package/dist/orgs/orgs.module.js +68 -0
  408. package/dist/orgs/orgs.service.d.ts +30 -19
  409. package/dist/orgs/orgs.service.js +139 -86
  410. package/dist/orgs/settings.controller.d.ts +1 -1
  411. package/dist/orgs/settings.controller.js +8 -6
  412. package/dist/orgs/settings.service.d.ts +14 -8
  413. package/dist/orgs/settings.service.js +75 -46
  414. package/dist/overrides.d.ts +56 -0
  415. package/dist/overrides.js +30 -0
  416. package/dist/roles/gateway-role.d.ts +43 -0
  417. package/dist/roles/gateway-role.js +98 -0
  418. package/dist/roles/gateway.module.d.ts +8 -0
  419. package/dist/roles/gateway.module.js +28 -0
  420. package/dist/roles/worker-role.d.ts +63 -0
  421. package/dist/roles/worker-role.js +144 -0
  422. package/dist/roles/worker.module.d.ts +14 -0
  423. package/dist/roles/worker.module.js +90 -0
  424. package/dist/runtime/abort.js +19 -2
  425. package/dist/runtime/checkpointer.d.ts +8 -3
  426. package/dist/runtime/checkpointer.js +87 -55
  427. package/dist/runtime/conversation-lock.d.ts +20 -11
  428. package/dist/runtime/conversation-lock.js +62 -72
  429. package/dist/runtime/hook-calls.d.ts +3 -3
  430. package/dist/runtime/hook-calls.js +1 -6
  431. package/dist/runtime/job-ids.d.ts +10 -0
  432. package/dist/runtime/job-ids.js +10 -0
  433. package/dist/runtime/langgraph-loop.js +1 -1
  434. package/dist/runtime/loop.d.ts +7 -0
  435. package/dist/runtime/loop.js +14 -0
  436. package/dist/runtime/maintenance-queue.d.ts +10 -0
  437. package/dist/runtime/maintenance-queue.js +10 -0
  438. package/dist/runtime/maintenance.d.ts +45 -74
  439. package/dist/runtime/maintenance.js +139 -137
  440. package/dist/runtime/model-call.d.ts +7 -4
  441. package/dist/runtime/model-call.js +24 -57
  442. package/dist/runtime/providers.d.ts +17 -6
  443. package/dist/runtime/providers.js +66 -25
  444. package/dist/runtime/quota.d.ts +17 -3
  445. package/dist/runtime/quota.js +27 -2
  446. package/dist/runtime/retired-schedulers.d.ts +7 -0
  447. package/dist/runtime/retired-schedulers.js +31 -0
  448. package/dist/runtime/run-control.d.ts +33 -0
  449. package/dist/runtime/run-control.js +77 -0
  450. package/dist/runtime/run-finish.d.ts +26 -17
  451. package/dist/runtime/run-finish.js +98 -51
  452. package/dist/runtime/run-jobs.d.ts +48 -0
  453. package/dist/runtime/run-jobs.js +95 -0
  454. package/dist/runtime/run-processors.d.ts +60 -0
  455. package/dist/runtime/run-processors.js +185 -0
  456. package/dist/runtime/run-queue.d.ts +32 -57
  457. package/dist/runtime/run-queue.js +291 -295
  458. package/dist/runtime/run-steps.d.ts +39 -0
  459. package/dist/runtime/run-steps.js +96 -0
  460. package/dist/runtime/run-worker.d.ts +121 -75
  461. package/dist/runtime/run-worker.js +340 -226
  462. package/dist/runtime/runtime.module.d.ts +10 -0
  463. package/dist/runtime/runtime.module.js +112 -0
  464. package/dist/runtime/step-log.d.ts +40 -0
  465. package/dist/runtime/step-log.js +94 -0
  466. package/dist/runtime/stream.controller.d.ts +5 -8
  467. package/dist/runtime/stream.controller.js +14 -12
  468. package/dist/runtime/stream.d.ts +24 -6
  469. package/dist/runtime/stream.js +78 -7
  470. package/dist/runtime/subagents/child.d.ts +3 -44
  471. package/dist/runtime/subagents/child.js +0 -79
  472. package/dist/runtime/subagents/definition.d.ts +4 -4
  473. package/dist/runtime/subagents/definition.js +2 -2
  474. package/dist/runtime/subagents/dispatch.d.ts +87 -6
  475. package/dist/runtime/subagents/dispatch.js +135 -140
  476. package/dist/runtime/subagents/limits.d.ts +9 -4
  477. package/dist/runtime/subagents/limits.js +4 -2
  478. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  479. package/dist/runtime/subagents/org-agents.js +1 -1
  480. package/dist/runtime/subagents/progress.d.ts +2 -2
  481. package/dist/runtime/subagents/roster.d.ts +3 -3
  482. package/dist/runtime/subagents/roster.js +1 -1
  483. package/dist/runtime/subagents/skill-fork.d.ts +6 -7
  484. package/dist/runtime/subagents/skill-fork.js +16 -5
  485. package/dist/runtime/subagents/subagents.service.d.ts +40 -0
  486. package/dist/runtime/subagents/subagents.service.js +101 -0
  487. package/dist/runtime/usage-report.d.ts +94 -52
  488. package/dist/runtime/usage-report.js +200 -100
  489. package/dist/runtime/waits.d.ts +125 -57
  490. package/dist/runtime/waits.js +431 -208
  491. package/dist/sandbox/job-ids.d.ts +10 -0
  492. package/dist/sandbox/job-ids.js +10 -0
  493. package/dist/sandbox/jobs.d.ts +41 -0
  494. package/dist/sandbox/jobs.js +113 -0
  495. package/dist/sandbox/leases.d.ts +39 -31
  496. package/dist/sandbox/leases.js +117 -257
  497. package/dist/sandbox/providers.d.ts +19 -0
  498. package/dist/sandbox/providers.js +38 -0
  499. package/dist/sandbox/sandbox.module.d.ts +8 -0
  500. package/dist/sandbox/sandbox.module.js +30 -0
  501. package/dist/sandbox/sandbox.service.d.ts +24 -29
  502. package/dist/sandbox/sandbox.service.js +106 -75
  503. package/dist/skills/catalog.d.ts +33 -20
  504. package/dist/skills/catalog.js +96 -53
  505. package/dist/skills/changes.controller.d.ts +4 -4
  506. package/dist/skills/changes.controller.js +15 -9
  507. package/dist/skills/changes.service.d.ts +28 -18
  508. package/dist/skills/changes.service.js +421 -364
  509. package/dist/skills/invocable.controller.d.ts +1 -1
  510. package/dist/skills/invocable.controller.js +8 -5
  511. package/dist/skills/invoke.d.ts +16 -15
  512. package/dist/skills/invoke.js +48 -17
  513. package/dist/skills/skills.controller.d.ts +1 -1
  514. package/dist/skills/skills.controller.js +11 -6
  515. package/dist/skills/skills.module.d.ts +6 -0
  516. package/dist/skills/skills.module.js +30 -0
  517. package/dist/skills/skills.service.d.ts +47 -30
  518. package/dist/skills/skills.service.js +221 -158
  519. package/dist/storage/job-ids.d.ts +6 -0
  520. package/dist/storage/job-ids.js +6 -0
  521. package/dist/storage/purge.d.ts +22 -7
  522. package/dist/storage/purge.js +55 -3
  523. package/dist/storage/storage.module.d.ts +6 -0
  524. package/dist/storage/storage.module.js +23 -0
  525. package/dist/storage/storage.service.d.ts +18 -4
  526. package/dist/storage/storage.service.js +44 -3
  527. package/dist/tools/approvals.controller.d.ts +1 -1
  528. package/dist/tools/approvals.controller.js +12 -8
  529. package/dist/tools/approvals.service.d.ts +27 -25
  530. package/dist/tools/approvals.service.js +324 -258
  531. package/dist/tools/breaker.d.ts +2 -2
  532. package/dist/tools/breaker.js +21 -3
  533. package/dist/tools/builtins/ask-user.d.ts +2 -2
  534. package/dist/tools/builtins/ask-user.js +1 -1
  535. package/dist/tools/builtins/builtin-tools.d.ts +21 -0
  536. package/dist/tools/builtins/builtin-tools.js +80 -0
  537. package/dist/tools/builtins/read-tool-output.d.ts +2 -2
  538. package/dist/tools/builtins/read-tool-output.js +1 -1
  539. package/dist/tools/builtins/sandbox/bash.js +2 -2
  540. package/dist/tools/builtins/sandbox/common.d.ts +2 -1
  541. package/dist/tools/builtins/sandbox/deliver.js +2 -2
  542. package/dist/tools/builtins/sandbox/edit.js +1 -1
  543. package/dist/tools/builtins/sandbox/glob.js +2 -2
  544. package/dist/tools/builtins/sandbox/grep.js +2 -2
  545. package/dist/tools/builtins/sandbox/read.js +1 -1
  546. package/dist/tools/builtins/sandbox/write.js +1 -1
  547. package/dist/tools/builtins/skill-load.d.ts +3 -3
  548. package/dist/tools/builtins/skill-load.js +1 -1
  549. package/dist/tools/canonical-json.d.ts +6 -0
  550. package/dist/tools/canonical-json.js +16 -0
  551. package/dist/tools/connector-content.controller.d.ts +1 -1
  552. package/dist/tools/connector-content.controller.js +11 -6
  553. package/dist/tools/connector-content.d.ts +12 -15
  554. package/dist/tools/connector-content.js +53 -18
  555. package/dist/tools/connectors.controller.d.ts +1 -1
  556. package/dist/tools/connectors.controller.js +21 -10
  557. package/dist/tools/connectors.service.d.ts +31 -13
  558. package/dist/tools/connectors.service.js +434 -344
  559. package/dist/tools/credentials.d.ts +17 -20
  560. package/dist/tools/credentials.js +55 -34
  561. package/dist/tools/drift.d.ts +29 -41
  562. package/dist/tools/drift.js +111 -79
  563. package/dist/tools/info.d.ts +12 -9
  564. package/dist/tools/info.js +33 -7
  565. package/dist/tools/job-ids.d.ts +13 -0
  566. package/dist/tools/job-ids.js +15 -0
  567. package/dist/tools/jobs.d.ts +24 -0
  568. package/dist/tools/jobs.js +69 -0
  569. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  570. package/dist/tools/oauth/flow-paths.js +38 -0
  571. package/dist/tools/oauth/flow.d.ts +30 -30
  572. package/dist/tools/oauth/flow.js +109 -81
  573. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  574. package/dist/tools/oauth/oauth.controller.js +12 -9
  575. package/dist/tools/oauth/tokens.d.ts +11 -3
  576. package/dist/tools/oauth/tokens.js +15 -14
  577. package/dist/tools/outputs.d.ts +13 -4
  578. package/dist/tools/outputs.js +47 -3
  579. package/dist/tools/pipeline.d.ts +62 -46
  580. package/dist/tools/pipeline.js +145 -64
  581. package/dist/tools/policy.d.ts +2 -2
  582. package/dist/tools/questions.controller.d.ts +1 -1
  583. package/dist/tools/questions.controller.js +8 -5
  584. package/dist/tools/questions.service.d.ts +25 -24
  585. package/dist/tools/questions.service.js +201 -142
  586. package/dist/tools/registry.d.ts +30 -20
  587. package/dist/tools/registry.js +73 -37
  588. package/dist/tools/specs.d.ts +5 -4
  589. package/dist/tools/specs.js +3 -1
  590. package/dist/tools/tools.module.d.ts +10 -0
  591. package/dist/tools/tools.module.js +91 -0
  592. package/dist/ui/call-extension.d.ts +16 -0
  593. package/dist/ui/call-extension.js +38 -0
  594. package/dist/ui/embed-token.d.ts +9 -5
  595. package/dist/ui/embed-token.js +34 -6
  596. package/dist/ui/ui-stream.d.ts +22 -17
  597. package/dist/ui/ui-stream.js +72 -12
  598. package/dist/ui/ui.module.d.ts +7 -0
  599. package/dist/ui/ui.module.js +28 -0
  600. package/dist/ui/views.controller.d.ts +14 -12
  601. package/dist/ui/views.controller.js +32 -25
  602. package/dist/ui/views.d.ts +9 -57
  603. package/dist/ui/views.js +43 -45
  604. package/package.json +9 -2
  605. package/dist/http/health.controller.d.ts +0 -26
  606. package/dist/http/health.controller.js +0 -79
  607. package/dist/http/tokens.d.ts +0 -131
  608. package/dist/http/tokens.js +0 -131
  609. package/dist/http/zod.pipe.d.ts +0 -8
  610. package/dist/http/zod.pipe.js +0 -14
  611. package/dist/identity/rate-limit.d.ts +0 -55
  612. package/dist/identity/rate-limit.js +0 -121
  613. package/dist/sandbox/lifecycle.d.ts +0 -21
  614. package/dist/sandbox/lifecycle.js +0 -68
  615. /package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
  616. /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
@@ -1,7 +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
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
1
11
  import { z } from "zod";
2
12
  import { ApiError } from "../errors.js";
3
13
  import { audit } from "../identity/audit.js";
4
- import { lockEnterpriseAdminsAndAuthorize } from "../identity/enterprise-admin.js";
14
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.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";
5
18
  /** 价格表的键。供应商名与模型 id 不含换行,拼接不会撞键。 */
6
19
  export const priceKey = (provider, model) => `${provider}\n${model}`;
7
20
  /** 一次调用的估算成本;没有价格 → null。用量的四项互不重叠(见 plugin-sdk `ModelUsage`)。 */
@@ -36,10 +49,14 @@ export const MODEL_PRICE_PUT = z.union([
36
49
  const num = (v) => Number(v);
37
50
  const numOrNull = (v) => (v === null ? null : Number(v));
38
51
  /** 模型价格(PG `model_prices`):每次读都查库,不在进程内缓存(多副本下改价立刻生效)。 */
39
- export class PricesService {
52
+ let PricesService = class PricesService {
40
53
  db;
41
- constructor(db) {
54
+ txHost;
55
+ adminLock;
56
+ constructor(db, txHost, adminLock) {
42
57
  this.db = db;
58
+ this.txHost = txHost;
59
+ this.adminLock = adminLock;
43
60
  }
44
61
  /** 全部价格,按 provider、model 排序。 */
45
62
  async list() {
@@ -78,44 +95,55 @@ export class PricesService {
78
95
  if (!check.success) {
79
96
  throw new ApiError("validation_failed", "Invalid model price", check.error.issues.map((i) => ({ path: i.path.join("."), message: i.message })));
80
97
  }
81
- const v = check.data;
82
- await this.db.transaction().execute(async (trx) => {
83
- await lockEnterpriseAdminsAndAuthorize(trx, actorAccountId);
84
- const target = `${v.provider}/${v.model}`;
85
- if ("price" in v) {
86
- await trx
87
- .deleteFrom("model_prices")
88
- .where("provider", "=", v.provider)
89
- .where("model", "=", v.model)
90
- .execute();
91
- await audit(trx, {
92
- actorAccountId,
93
- ...(actorTokenId !== undefined && { actorTokenId }),
94
- action: "model_price.deleted",
95
- target,
96
- detail: { provider: v.provider, model: v.model },
97
- });
98
- return;
99
- }
100
- const values = {
101
- input_per_mtok: v.inputPerMTok,
102
- output_per_mtok: v.outputPerMTok,
103
- cache_read_per_mtok: v.cacheReadPerMTok,
104
- cache_write_per_mtok: v.cacheWritePerMTok,
105
- updated_by: actorAccountId,
106
- };
107
- await trx
108
- .insertInto("model_prices")
109
- .values({ provider: v.provider, model: v.model, ...values })
110
- .onConflict((oc) => oc.columns(["provider", "model"]).doUpdateSet({ ...values, updated_at: new Date() }))
98
+ await this.write(check.data, actorAccountId, actorTokenId);
99
+ }
100
+ /** The write of {@link put}, under the enterprise admin lock. */
101
+ async write(v, actorAccountId, actorTokenId) {
102
+ await this.adminLock.lockAndAuthorize(actorAccountId);
103
+ const target = `${v.provider}/${v.model}`;
104
+ if ("price" in v) {
105
+ await this.db
106
+ .deleteFrom("model_prices")
107
+ .where("provider", "=", v.provider)
108
+ .where("model", "=", v.model)
111
109
  .execute();
112
- await audit(trx, {
110
+ await audit(this.db.db, {
113
111
  actorAccountId,
114
112
  ...(actorTokenId !== undefined && { actorTokenId }),
115
- action: "model_price.updated",
113
+ action: "model_price.deleted",
116
114
  target,
117
- detail: { ...v },
115
+ detail: { provider: v.provider, model: v.model },
118
116
  });
117
+ return;
118
+ }
119
+ const values = {
120
+ input_per_mtok: v.inputPerMTok,
121
+ output_per_mtok: v.outputPerMTok,
122
+ cache_read_per_mtok: v.cacheReadPerMTok,
123
+ cache_write_per_mtok: v.cacheWritePerMTok,
124
+ updated_by: actorAccountId,
125
+ };
126
+ await this.db
127
+ .insertInto("model_prices")
128
+ .values({ provider: v.provider, model: v.model, ...values })
129
+ .onConflict((oc) => oc.columns(["provider", "model"]).doUpdateSet({ ...values, updated_at: new Date() }))
130
+ .execute();
131
+ await audit(this.db.db, {
132
+ actorAccountId,
133
+ ...(actorTokenId !== undefined && { actorTokenId }),
134
+ action: "model_price.updated",
135
+ target,
136
+ detail: { ...v },
119
137
  });
120
138
  }
121
- }
139
+ };
140
+ __decorate([
141
+ Transactional()
142
+ ], PricesService.prototype, "write", null);
143
+ PricesService = __decorate([
144
+ Injectable(),
145
+ __param(0, Inject(KernelDb)),
146
+ __param(1, Inject(TransactionHost)),
147
+ __param(2, Inject(EnterpriseAdminLock))
148
+ ], PricesService);
149
+ export { PricesService };
@@ -1,6 +1,6 @@
1
1
  import { type Principal } from "../identity/principal.js";
2
2
  import { type OrgContext } from "../orgs/org.guard.js";
3
- import { type ModelPurposesService, type PurposePut, type PurposeTarget, type PurposeView } from "./purposes.js";
3
+ import { ModelPurposesService, type PurposePut, type PurposeTarget, type PurposeView } from "./purposes.js";
4
4
  /** body 的目标(参数缺省为 `{}`)。 */
5
5
  export declare const purposeTargetOf: (b: PurposePut) => PurposeTarget | null;
6
6
  /**
@@ -7,12 +7,11 @@ 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, Get, Inject, Param, Put } from "@nestjs/common";
11
- import { MODEL_PURPOSES } from "../http/tokens.js";
12
- import { ZodPipe } from "../http/zod.pipe.js";
10
+ import { Controller, Get, Inject, Param, Put } from "@nestjs/common";
13
11
  import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
12
+ import { ZBody } from "../infra/validation/zod-params.js";
14
13
  import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
15
- import { PURPOSE_PUT, } from "./purposes.js";
14
+ import { ModelPurposesService, PurposePutDto, } from "./purposes.js";
16
15
  /** body 的目标(参数缺省为 `{}`)。 */
17
16
  export const purposeTargetOf = (b) => b.target === null ? null : { model: b.target.model, params: b.target.params ?? {} };
18
17
  /**
@@ -47,10 +46,10 @@ __decorate([
47
46
  __param(0, CurrentPrincipal()),
48
47
  __param(1, CurrentOrg()),
49
48
  __param(2, Param("purpose")),
50
- __param(3, Body(new ZodPipe(PURPOSE_PUT)))
49
+ __param(3, ZBody(PurposePutDto))
51
50
  ], ModelPurposesController.prototype, "put", null);
52
51
  ModelPurposesController = __decorate([
53
52
  Controller("api/v1/orgs/:orgId/model-purposes"),
54
- __param(0, Inject(MODEL_PURPOSES))
53
+ __param(0, Inject(ModelPurposesService))
55
54
  ], ModelPurposesController);
56
55
  export { ModelPurposesController };
@@ -1,9 +1,13 @@
1
- import { type ContentBlock, type ExtensionManifest, type ModelRequest, type ModelUsage, type ParamValue, type StopReason } from "@capybara-hq/plugin-sdk";
1
+ import { type ContentBlock, type ModelRequest, type ModelUsage, type ParamValue, type StopReason } from "@capybara-hq/plugin-sdk";
2
2
  import { z } from "zod";
3
3
  import { ModelRef } from "../agents/definition.js";
4
- import type { KernelConfig } from "../config/schema.js";
5
- import type { KernelDb } from "../db/kernel-schema.js";
6
- import { type ProviderRegistry } from "../runtime/providers.js";
4
+ import { ExtensionRegistry } from "../extensions/registry.js";
5
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
6
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
7
+ import { KernelDb } from "../infra/database/kernel-db.js";
8
+ import { TransactionHost } from "../infra/database/transaction-host.js";
9
+ import { OrgLock } from "../orgs/org-lock.js";
10
+ import { ProviderRegistry } from "../runtime/providers.js";
7
11
  /**
8
12
  * 模型用途映射(C9):内核与插件按「用途」取模型,不在代码里写死模型。
9
13
  * - 用途 = 内核用途 {@link KERNEL_PURPOSES}(目前只有评委 `eval`),或已加载插件 `permissions.models` 声明的;
@@ -82,6 +86,18 @@ export declare const PURPOSE_PUT: z.ZodObject<{
82
86
  }, z.core.$strict>>;
83
87
  }, z.core.$strict>;
84
88
  export type PurposePut = z.infer<typeof PURPOSE_PUT>;
89
+ declare const PurposePutDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
90
+ target: z.ZodNullable<z.ZodObject<{
91
+ model: z.ZodObject<{
92
+ provider: z.ZodString;
93
+ model: z.ZodString;
94
+ }, z.core.$strict>;
95
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
96
+ }, z.core.$strict>>;
97
+ }, z.core.$strict>>;
98
+ /** {@link PURPOSE_PUT} as a DTO (`@ZBody(PurposePutDto)`). */
99
+ export declare class PurposePutDto extends PurposePutDto_base {
100
+ }
85
101
  /**
86
102
  * 用途请求已经发出、但没有正常收完(出错、超时、中止):`tokens` 是应计入预算的估算用量(输入估算 + 已流出字符 / 4,
87
103
  * 与评测回放一致),`cause` 是原始错误。请求发出之前的失败(未映射、模型不可用)原样抛出。
@@ -93,16 +109,19 @@ export declare class PurposeAttemptError extends Error {
93
109
  readonly model: string;
94
110
  constructor(cause: unknown, tokens: number, provider: string, model: string);
95
111
  }
96
- export interface ModelPurposesDeps {
97
- db: KernelDb;
98
- registry: Pick<ProviderRegistry, "resolve">;
99
- config: () => KernelConfig;
100
- /** 已加载插件的清单(取 `permissions.models`)。 */
101
- manifests: () => readonly ExtensionManifest[];
102
- }
112
+ /**
113
+ * The model purposes (one provider). Extension-declared purposes come from the manifests in the
114
+ * {@link ExtensionRegistry}; targets resolve through the model provider registry.
115
+ */
103
116
  export declare class ModelPurposesService {
104
- private readonly d;
105
- constructor(d: ModelPurposesDeps);
117
+ private readonly db;
118
+ private readonly extensions;
119
+ private readonly config;
120
+ private readonly providers;
121
+ readonly txHost: TransactionHost;
122
+ private readonly adminLock;
123
+ private readonly orgLock;
124
+ constructor(db: KernelDb, extensions: ExtensionRegistry, config: KernelConfigService, providers: Pick<ProviderRegistry, "resolve">, txHost: TransactionHost, adminLock: EnterpriseAdminLock, orgLock: OrgLock);
106
125
  /** 全部已声明的用途:内核的在前,其后按插件加载顺序。 */
107
126
  private declared;
108
127
  private find;
@@ -113,6 +132,8 @@ export declare class ModelPurposesService {
113
132
  /** 校验目标:模型可解析(部署范围)、参数按它的声明严格通过。 */
114
133
  private check;
115
134
  private set;
135
+ /** The mapping write of {@link set}, under the enterprise admin or org lock. */
136
+ private write;
116
137
  /** 设置(或 `null` 清除)部署默认;只有企业管理员(事务内复核)。 */
117
138
  setDefault(purpose: string, target: PurposeTarget | null, actor: string, actorTokenId?: string): Promise<PurposeView>;
118
139
  /** 设置(或 `null` 清除)组织覆盖;事务内锁组织并复核 `org.models.manage`。 */
@@ -138,3 +159,4 @@ export declare class ModelPurposesService {
138
159
  model: string;
139
160
  }>;
140
161
  }
162
+ export {};
@@ -1,14 +1,29 @@
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 { sanitizeParams, } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { z } from "zod";
3
- import { paramIssues } from "../agents/agents.service.js";
4
- import { ModelRef } from "../agents/definition.js";
13
+ import { ModelRef, paramIssues } from "../agents/definition.js";
5
14
  import { ApiError } from "../errors.js";
15
+ import { ExtensionRegistry } from "../extensions/registry.js";
6
16
  import { audit } from "../identity/audit.js";
7
- import { lockEnterpriseAdminsAndAuthorize } from "../identity/enterprise-admin.js";
8
- import { lockOrgAndAuthorize } from "../orgs/org-lock.js";
17
+ import { EnterpriseAdminLock } from "../identity/enterprise-admin.js";
18
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
19
+ import { KernelDb } from "../infra/database/kernel-db.js";
20
+ import { TransactionHost } from "../infra/database/transaction-host.js";
21
+ import { Transactional } from "../infra/database/transactional.decorator.js";
22
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
23
+ import { OrgLock } from "../orgs/org-lock.js";
9
24
  import { estimateTokens } from "../runtime/context/tokens.js";
10
25
  import { consumeModelStream } from "../runtime/model-call.js";
11
- import { ProviderListError } from "../runtime/providers.js";
26
+ import { ProviderListError, ProviderRegistry } from "../runtime/providers.js";
12
27
  /**
13
28
  * 模型用途映射(C9):内核与插件按「用途」取模型,不在代码里写死模型。
14
29
  * - 用途 = 内核用途 {@link KERNEL_PURPOSES}(目前只有评委 `eval`),或已加载插件 `permissions.models` 声明的;
@@ -54,6 +69,9 @@ export const PURPOSE_PUT = z
54
69
  .nullable(),
55
70
  })
56
71
  .strict();
72
+ /** {@link PURPOSE_PUT} as a DTO (`@ZBody(PurposePutDto)`). */
73
+ export class PurposePutDto extends createZodDto(PURPOSE_PUT, "ModelPurposePut") {
74
+ }
57
75
  /**
58
76
  * 用途请求已经发出、但没有正常收完(出错、超时、中止):`tokens` 是应计入预算的估算用量(输入估算 + 已流出字符 / 4,
59
77
  * 与评测回放一致),`cause` 是原始错误。请求发出之前的失败(未映射、模型不可用)原样抛出。
@@ -80,10 +98,26 @@ const targetOf = (r) => r === undefined
80
98
  model: { provider: r.provider, model: r.model },
81
99
  params: (r.params ?? {}),
82
100
  };
83
- export class ModelPurposesService {
84
- d;
85
- constructor(d) {
86
- this.d = d;
101
+ /**
102
+ * The model purposes (one provider). Extension-declared purposes come from the manifests in the
103
+ * {@link ExtensionRegistry}; targets resolve through the model provider registry.
104
+ */
105
+ let ModelPurposesService = class ModelPurposesService {
106
+ db;
107
+ extensions;
108
+ config;
109
+ providers;
110
+ txHost;
111
+ adminLock;
112
+ orgLock;
113
+ constructor(db, extensions, config, providers, txHost, adminLock, orgLock) {
114
+ this.db = db;
115
+ this.extensions = extensions;
116
+ this.config = config;
117
+ this.providers = providers;
118
+ this.txHost = txHost;
119
+ this.adminLock = adminLock;
120
+ this.orgLock = orgLock;
87
121
  }
88
122
  /** 全部已声明的用途:内核的在前,其后按插件加载顺序。 */
89
123
  declared() {
@@ -94,7 +128,7 @@ export class ModelPurposesService {
94
128
  declaredBy: "kernel",
95
129
  }));
96
130
  const seen = new Set(out.map((p) => p.purpose));
97
- for (const m of this.d.manifests()) {
131
+ for (const m of this.extensions.manifests()) {
98
132
  for (const p of m.permissions?.models ?? []) {
99
133
  if (seen.has(p.purpose))
100
134
  continue;
@@ -118,7 +152,7 @@ export class ModelPurposesService {
118
152
  async rows(purposes, orgId) {
119
153
  if (purposes.length === 0)
120
154
  return [];
121
- return this.d.db
155
+ return this.db
122
156
  .selectFrom("model_purpose_mappings")
123
157
  .select(["org_id", "purpose", "provider", "model", "params"])
124
158
  .where("purpose", "in", purposes)
@@ -145,7 +179,7 @@ export class ModelPurposesService {
145
179
  async check(target) {
146
180
  let info;
147
181
  try {
148
- ({ info } = await this.d.registry.resolve(target.model));
182
+ ({ info } = await this.providers.resolve(target.model));
149
183
  }
150
184
  catch (e) {
151
185
  if (e instanceof ProviderListError)
@@ -163,45 +197,47 @@ export class ModelPurposesService {
163
197
  const decl = this.find(purpose);
164
198
  if (target)
165
199
  await this.check(target);
166
- await this.d.db.transaction().execute(async (trx) => {
167
- if (orgId === null)
168
- await lockEnterpriseAdminsAndAuthorize(trx, actor);
169
- else
170
- await lockOrgAndAuthorize(trx, orgId, actor, "org.models.manage");
171
- if (target === null) {
172
- await trx
173
- .deleteFrom("model_purpose_mappings")
174
- .where("purpose", "=", purpose)
175
- .where((eb) => (orgId === null ? eb("org_id", "is", null) : eb("org_id", "=", orgId)))
176
- .execute();
177
- }
178
- else {
179
- const values = {
180
- provider: target.model.provider,
181
- model: target.model.model,
182
- params: JSON.stringify(target.params),
183
- updated_by: actor,
184
- };
185
- await trx
186
- .insertInto("model_purpose_mappings")
187
- .values({ org_id: orgId, purpose, ...values })
188
- .onConflict((oc) => oc
189
- .constraint("model_purpose_mappings_scope_key")
190
- .doUpdateSet({ ...values, updated_at: new Date() }))
191
- .execute();
192
- }
193
- await audit(trx, {
194
- actorAccountId: actor,
195
- ...(actorTokenId !== undefined && { actorTokenId }),
196
- ...(orgId !== null && { orgId }),
197
- action: "model.purpose_mapped",
198
- target: purpose,
199
- detail: { scope: orgId === null ? "deployment" : "org", target },
200
- });
201
- });
200
+ await this.write(orgId, purpose, target, actor, actorTokenId);
202
201
  const [view] = await this.views([decl], orgId ?? undefined);
203
202
  return view;
204
203
  }
204
+ /** The mapping write of {@link set}, under the enterprise admin or org lock. */
205
+ async write(orgId, purpose, target, actor, actorTokenId) {
206
+ if (orgId === null)
207
+ await this.adminLock.lockAndAuthorize(actor);
208
+ else
209
+ await this.orgLock.lockAndAuthorize(orgId, actor, "org.models.manage");
210
+ if (target === null) {
211
+ await this.db
212
+ .deleteFrom("model_purpose_mappings")
213
+ .where("purpose", "=", purpose)
214
+ .where((eb) => (orgId === null ? eb("org_id", "is", null) : eb("org_id", "=", orgId)))
215
+ .execute();
216
+ }
217
+ else {
218
+ const values = {
219
+ provider: target.model.provider,
220
+ model: target.model.model,
221
+ params: JSON.stringify(target.params),
222
+ updated_by: actor,
223
+ };
224
+ await this.db
225
+ .insertInto("model_purpose_mappings")
226
+ .values({ org_id: orgId, purpose, ...values })
227
+ .onConflict((oc) => oc
228
+ .constraint("model_purpose_mappings_scope_key")
229
+ .doUpdateSet({ ...values, updated_at: new Date() }))
230
+ .execute();
231
+ }
232
+ await audit(this.db.db, {
233
+ actorAccountId: actor,
234
+ ...(actorTokenId !== undefined && { actorTokenId }),
235
+ ...(orgId !== null && { orgId }),
236
+ action: "model.purpose_mapped",
237
+ target: purpose,
238
+ detail: { scope: orgId === null ? "deployment" : "org", target },
239
+ });
240
+ }
205
241
  /** 设置(或 `null` 清除)部署默认;只有企业管理员(事务内复核)。 */
206
242
  setDefault(purpose, target, actor, actorTokenId) {
207
243
  return this.set(null, purpose, target, actor, actorTokenId);
@@ -236,7 +272,7 @@ export class ModelPurposesService {
236
272
  throw e;
237
273
  target = opts.fallback;
238
274
  }
239
- const { provider, info } = await this.d.registry.resolve(target.model);
275
+ const { provider, info } = await this.providers.resolve(target.model);
240
276
  const request = {
241
277
  ...req,
242
278
  model: info.id,
@@ -244,7 +280,7 @@ export class ModelPurposesService {
244
280
  // 输出上限不超过目标模型自己的上限(与运行时 assembleModelRequest 一致)
245
281
  maxOutputTokens: Math.min(req.maxOutputTokens, info.maxOutputTokens),
246
282
  };
247
- const idleMs = info.streamIdleTimeoutMs ?? this.d.config().runtime.streamIdleMs;
283
+ const idleMs = info.streamIdleTimeoutMs ?? this.config.get().runtime.streamIdleMs;
248
284
  await opts.beforeSend?.(target.model, request);
249
285
  let chars = 0;
250
286
  try {
@@ -264,4 +300,18 @@ export class ModelPurposesService {
264
300
  throw new PurposeAttemptError(err, tokens, target.model.provider, target.model.model);
265
301
  }
266
302
  }
267
- }
303
+ };
304
+ __decorate([
305
+ Transactional()
306
+ ], ModelPurposesService.prototype, "write", null);
307
+ ModelPurposesService = __decorate([
308
+ Injectable(),
309
+ __param(0, Inject(KernelDb)),
310
+ __param(1, Inject(ExtensionRegistry)),
311
+ __param(2, Inject(KernelConfigService)),
312
+ __param(3, Inject(ProviderRegistry)),
313
+ __param(4, Inject(TransactionHost)),
314
+ __param(5, Inject(EnterpriseAdminLock)),
315
+ __param(6, Inject(OrgLock))
316
+ ], ModelPurposesService);
317
+ export { ModelPurposesService };
@@ -1,5 +1,5 @@
1
1
  import { type Principal } from "../identity/principal.js";
2
- import type { DirectorySync } from "./directory-sync.js";
2
+ import { DirectorySync } from "./directory-sync.js";
3
3
  import { type OrgContext } from "./org.guard.js";
4
4
  /**
5
5
  * Manual directory sync (`/api/v1/orgs/:orgId/extensions/:extension/directory/sync`): it adds and
@@ -8,8 +8,8 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
10
  import { Controller, HttpCode, Inject, Param, Post } from "@nestjs/common";
11
- import { DIRECTORY_SYNC } from "../http/tokens.js";
12
11
  import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
12
+ import { DirectorySync } from "./directory-sync.js";
13
13
  import { CurrentOrg, OrgAction } from "./org.guard.js";
14
14
  /**
15
15
  * Manual directory sync (`/api/v1/orgs/:orgId/extensions/:extension/directory/sync`): it adds and
@@ -35,6 +35,6 @@ __decorate([
35
35
  ], DirectorySyncController.prototype, "sync", null);
36
36
  DirectorySyncController = __decorate([
37
37
  Controller("api/v1/orgs/:orgId/extensions/:extension/directory"),
38
- __param(0, Inject(DIRECTORY_SYNC))
38
+ __param(0, Inject(DirectorySync))
39
39
  ], DirectorySyncController);
40
40
  export { DirectorySyncController };
@@ -1,19 +1,22 @@
1
- import { type Logger } from "@capybara-hq/plugin-sdk";
1
+ import type { Queue } from "bullmq";
2
2
  import type { Redis } from "ioredis";
3
- import type { KernelDb } from "../db/kernel-schema.js";
4
- import type { ExtensionHost } from "../extensions/host.js";
5
- import type { OrgExtensionConfigs } from "../extensions/org-config.js";
6
- import type { ExternalIdentities } from "../identity/external.js";
7
- import type { Maintenance } from "../runtime/maintenance.js";
8
- import type { Offboarding } from "./offboarding.js";
9
- /** 每小时扫描:维护队列任务名、job scheduler id(不含 `:`)与周期。 */
3
+ import { OrgExtensionConfigs } from "../extensions/org-config.js";
4
+ import { ExtensionRegistry } from "../extensions/registry.js";
5
+ import { ExternalIdentities } from "../identity/external.js";
6
+ import { KernelDb } from "../infra/database/kernel-db.js";
7
+ import { TransactionHost } from "../infra/database/transaction-host.js";
8
+ import { LockService } from "../infra/lock/lock.service.js";
9
+ import type { KernelLogger } from "../log.js";
10
+ import { Offboarding } from "./offboarding.js";
11
+ import { OrgLock } from "./org-lock.js";
12
+ /** The hourly scan: cron job name (no `:`). */
10
13
  export declare const DIRECTORY_SCAN_JOB = "directory-scan";
11
- export declare const DIRECTORY_SCAN_SCHEDULER_ID = "directory-scan-hourly";
12
- export declare const DIRECTORY_SCAN_EVERY_MS = 3600000;
13
- /** 一次 (组织, 插件) 同步的维护任务名。 */
14
+ /** The job name of one (org, extension) sync on the maintenance queue. */
14
15
  export declare const DIRECTORY_SYNC_JOB = "directory-sync";
15
- /** 同步锁的 Redis 键前缀(键为 `<前缀><orgId>:<plugin>`,带 TTL、持有期间续租)。 */
16
- export declare const DIRECTORY_SYNC_LOCK_PREFIX = "capk:directory-sync:";
16
+ /** The run lock's TTL (renewed while held); a crashed holder's lock expires within it. */
17
+ export declare const DIRECTORY_SYNC_LOCK_TTL_MS = 30000;
18
+ /** The `LockService` key of one (org, extension) sync: one sync at a time. */
19
+ export declare const directorySyncLockKey: (orgId: string, plugin: string) => string;
17
20
  /** 脏标记的保留时长(秒):锁被占时记下,持有者跑完后取走并补一轮。 */
18
21
  export declare const DIRECTORY_SYNC_DIRTY_TTL_SECONDS = 3600;
19
22
  /** 脏标记(Redis 键):同步进行中又有同步请求被锁挡掉。 */
@@ -72,26 +75,27 @@ export declare function minuteBucket(d?: Date): string;
72
75
  * `directory_changed` 按分钟桶去重;手动触发每次唯一,不会被同一小时的扫描任务吞掉。
73
76
  */
74
77
  export declare function directorySyncJobId(orgId: string, plugin: string, trigger: DirectorySyncTrigger, now?: Date): string;
75
- export interface DirectorySyncDeps {
76
- db: KernelDb;
77
- redis: Redis;
78
- host: Pick<ExtensionHost, "list">;
79
- orgExtensionConfigs: Pick<OrgExtensionConfigs, "get">;
80
- external: Pick<ExternalIdentities, "resolve">;
81
- offboarding: Pick<Offboarding, "offboard" | "afterCommit">;
82
- /** 给了就登记每小时扫描与同步任务(worker 角色执行);不给时只能直接调用 `sync`。 */
83
- maintenance?: Pick<Maintenance, "add" | "handle" | "schedule">;
84
- log: Pick<Logger, "warn" | "info">;
78
+ /** The data of a `directory-sync` job. */
79
+ export interface SyncJobData {
80
+ orgId: string;
81
+ plugin: string;
82
+ trigger: DirectorySyncTrigger;
83
+ requestedBy?: string;
84
+ requestedByToken?: string;
85
85
  }
86
86
  /**
87
87
  * 通讯录同步(`directory@1`):把企业通讯录同步为组织成员。框架无关。
88
88
  *
89
89
  * - 维护队列每小时 `directory-scan`:给每个「插件提供 `directory@1`、在该组织启用、组织级配置满足 schema」的
90
90
  * (组织, 插件) 投递一次同步(job id 按小时桶去重,多副本重复扫描只跑一次);手动与 `directory_changed` 也投递同步。
91
- * - 同一 (组织, 插件) 同时只跑一个同步(Redis 锁 `capk:directory-sync:<org>:<plugin>`,持有期间续租);
92
- * 锁被占时本任务记下脏标记 `capk:directory-sync-dirty:<org>:<plugin>`(1 小时)后结束;持有者释放锁后 GETDEL
93
- * 取走标记,有就投递一次 changed 同步(在跑的那一轮可能已经读过变化之前的页)。Ruling A32:移除阶段前 GET
94
- * (不取走)脏标记,有就本轮按不完整处理、不移除任何人(审计 `partialReason = changed_during_sync`),移除留给补跑。
91
+ * - One sync at a time per (org, extension): the `LockService` lock
92
+ * `lock:directory-sync:<org>:<plugin>`, renewed while held. A sync that finds the lock taken sets
93
+ * the dirty flag `capk:directory-sync-dirty:<org>:<plugin>` (1 hour) and ends; after releasing
94
+ * the lock the holder takes the flag with GETDEL and, if it was set, enqueues one `changed` sync
95
+ * (the running round may have read pages from before the change). Ruling A32: before the removal
96
+ * phase the holder GETs the flag (without taking it); if it is set, the round counts as
97
+ * incomplete and removes nobody (audit `partialReason = changed_during_sync`), leaving removals
98
+ * to the follow-up sync.
95
99
  * After writing the flag, a blocked sync tries the lock once more: when the holder finished in
96
100
  * between (and its GETDEL found no flag), this sync clears the flag and runs itself.
97
101
  * - Ruling A17:非手动触发的一轮,计划移除数超过 `max(5, 20% × 现有通讯录成员数)`,或列表里没有在职成员而已有
@@ -108,18 +112,32 @@ export interface DirectorySyncDeps {
108
112
  * 能力)时,扫描、`directory_changed` 与执行时的复核都静默跳过(不投递、不审计、不记警告),手动触发 409
109
113
  * `directory.not_configured`。
110
114
  * - 审计 `org.directory.synced`(计数、是否不完整)。任务执行时再核对插件与配置:已停用的插件的陈旧任务什么都不做。
115
+ *
116
+ * The hourly scan is {@link DirectoryScanJob} (a `@LockedCron`); one-off syncs are jobs on the maintenance queue (same name and
117
+ * job ids as before), consumed by `MaintenanceProcessor`.
111
118
  */
112
119
  export declare class DirectorySync {
113
- private readonly d;
114
- private readonly lock;
115
- constructor(d: DirectorySyncDeps);
120
+ private readonly db;
121
+ readonly txHost: TransactionHost;
122
+ private readonly redis;
123
+ private readonly registry;
124
+ private readonly orgConfigs;
125
+ private readonly external;
126
+ private readonly offboarding;
127
+ private readonly orgLock;
128
+ private readonly queue;
129
+ readonly lockService: LockService;
130
+ readonly log: KernelLogger;
131
+ constructor(db: KernelDb, txHost: TransactionHost, redis: Redis, registry: Pick<ExtensionRegistry, "list">, orgConfigs: Pick<OrgExtensionConfigs, "get">, external: Pick<ExternalIdentities, "resolve">, offboarding: Pick<Offboarding, "offboard" | "afterOffboard">, orgLock: OrgLock, queue: Pick<Queue, "add">, lockService: LockService, log: KernelLogger);
132
+ /** A `directory-sync` job (dispatched by `MaintenanceProcessor`). */
133
+ runSyncJob(data: SyncJobData): Promise<void>;
116
134
  /** 插件提供的 `directory@1`;未加载或不提供时 undefined。 */
117
135
  private provider;
118
136
  /** The org exists, the extension provides a directory, is enabled in the org and its org config satisfies the schema (reuses the `OrgExtensionConfigs.get` validation). */
119
137
  private eligible;
120
138
  /**
121
139
  * 投递一次 `directory_changed` 同步(按分钟桶去重);返回 job id。入站 `directory_changed` 经
122
- * {@link DirectorySyncScheduler} 调用这里。通讯录未配置(`Directory.configured` 返回 false,Ruling A28)时
140
+ * `ChannelInbound`(`directory_changed`)调用这里。通讯录未配置(`Directory.configured` 返回 false,Ruling A28)时
123
141
  * 静默不投递,返回 undefined;其他不可同步的情况照常投递,由任务执行时跳过。
124
142
  */
125
143
  enqueue(orgId: string, plugin: string, now?: Date): Promise<string | undefined>;
@@ -134,6 +152,7 @@ export declare class DirectorySync {
134
152
  request(orgId: string, plugin: string, actorAccountId: string, actorTokenId?: string): Promise<{
135
153
  jobId: string;
136
154
  }>;
155
+ private authorize;
137
156
  /**
138
157
  * 每小时扫描:给每个可同步的 (组织, 插件) 投递一次同步(job id 按小时桶),返回投递的目标。
139
158
  * 已存配置不再满足 schema 的跳过(记 warn);单个投递失败记 warn、继续其他目标。
@@ -157,10 +176,21 @@ export declare class DirectorySync {
157
176
  * 组织行锁内完成(与移出成员同一把锁、与移出时写排除串行),组织已删除 → {@link OrgGone}。
158
177
  */
159
178
  private addMember;
179
+ /** One short transaction per member, under the org row lock. */
180
+ private addMemberIn;
160
181
  /**
161
182
  * 一个离职者:独立事务内先锁组织行、再锁其成员关系行(与 `switchCurrentOrg` / 移出成员同一顺序),
162
183
  * 确认仍是本通讯录加入的,再走 `Offboarding.offboard`(吊销会话与令牌、删个人凭据、转交 agent 都在这个事务里)。
163
184
  * 最后一个 owner → 回滚并返回 `last_owner`;期间已被移除或不再是本通讯录加入的 → `gone`。
164
185
  */
165
186
  private offboardOne;
187
+ private offboardIn;
188
+ }
189
+ /** The hourly directory scan ({@link DirectorySync.scan}), once per tick across replicas; a worker-role job (`WorkerModule`). */
190
+ export declare class DirectoryScanJob {
191
+ private readonly directory;
192
+ readonly lockService: LockService;
193
+ readonly log: KernelLogger;
194
+ constructor(directory: Pick<DirectorySync, "scan">, lockService: LockService, log: KernelLogger);
195
+ run(): Promise<void>;
166
196
  }