@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.10

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 (1152) hide show
  1. package/bootstrap.json +92 -8
  2. package/dist/admin/admin.controller.d.ts +52 -71
  3. package/dist/admin/admin.controller.js +117 -63
  4. package/dist/admin/admin.module.d.ts +3 -0
  5. package/dist/admin/admin.module.js +22 -0
  6. package/dist/admin/admin.schemas.d.ts +57 -0
  7. package/dist/admin/admin.schemas.js +50 -0
  8. package/dist/admin/extensions.controller.d.ts +47 -16
  9. package/dist/admin/extensions.controller.js +94 -23
  10. package/dist/admin/extensions.schemas.d.ts +7 -0
  11. package/dist/admin/extensions.schemas.js +10 -0
  12. package/dist/admin/limit-defaults.d.ts +20 -0
  13. package/dist/admin/limit-defaults.js +10 -0
  14. package/dist/admin/setup-lock.d.ts +16 -0
  15. package/dist/admin/setup-lock.js +47 -0
  16. package/dist/admin/setup.controller.d.ts +9 -9
  17. package/dist/admin/setup.controller.js +28 -26
  18. package/dist/admin/setup.service.d.ts +20 -28
  19. package/dist/admin/setup.service.js +65 -65
  20. package/dist/agents/agent-lookup.d.ts +72 -0
  21. package/dist/agents/agent-lookup.js +208 -0
  22. package/dist/agents/agent-profile.service.d.ts +31 -0
  23. package/dist/agents/agent-profile.service.js +122 -0
  24. package/dist/agents/agents.controller.d.ts +54 -169
  25. package/dist/agents/agents.controller.js +172 -37
  26. package/dist/agents/agents.module.d.ts +10 -0
  27. package/dist/agents/agents.module.js +71 -0
  28. package/dist/agents/agents.schemas.d.ts +389 -0
  29. package/dist/agents/agents.schemas.js +126 -0
  30. package/dist/agents/agents.service.d.ts +104 -76
  31. package/dist/agents/agents.service.js +509 -383
  32. package/dist/agents/definition.d.ts +133 -21
  33. package/dist/agents/definition.js +361 -41
  34. package/dist/agents/from-template.d.ts +106 -0
  35. package/dist/agents/from-template.js +680 -0
  36. package/dist/agents/from-template.service.d.ts +72 -0
  37. package/dist/agents/from-template.service.js +178 -0
  38. package/dist/agents/instruction-files.d.ts +60 -0
  39. package/dist/agents/instruction-files.js +111 -0
  40. package/dist/agents/models.controller.d.ts +44 -6
  41. package/dist/agents/models.controller.js +84 -8
  42. package/dist/agents/org-templates.d.ts +186 -0
  43. package/dist/agents/org-templates.js +868 -0
  44. package/dist/agents/pending-connector-requests.d.ts +79 -0
  45. package/dist/agents/pending-connector-requests.js +215 -0
  46. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  47. package/dist/agents/pending-connectors.controller.js +91 -0
  48. package/dist/agents/pending-connectors.service.d.ts +62 -0
  49. package/dist/agents/pending-connectors.service.js +282 -0
  50. package/dist/agents/profile.d.ts +114 -0
  51. package/dist/agents/profile.js +55 -0
  52. package/dist/agents/readiness.controller.d.ts +26 -0
  53. package/dist/agents/readiness.controller.js +56 -0
  54. package/dist/agents/templates.controller.d.ts +78 -6
  55. package/dist/agents/templates.controller.js +154 -8
  56. package/dist/agents/templates.d.ts +132 -30
  57. package/dist/agents/templates.js +500 -46
  58. package/dist/agents/templates.schemas.d.ts +20 -0
  59. package/dist/agents/templates.schemas.js +45 -0
  60. package/dist/app.d.ts +93 -0
  61. package/dist/app.js +150 -0
  62. package/dist/background/background.controller.d.ts +38 -0
  63. package/dist/background/background.controller.js +88 -0
  64. package/dist/background/background.module.d.ts +10 -0
  65. package/dist/background/background.module.js +39 -0
  66. package/dist/background/background.schemas.d.ts +10 -0
  67. package/dist/background/background.schemas.js +16 -0
  68. package/dist/background/finish.d.ts +44 -0
  69. package/dist/background/finish.js +95 -0
  70. package/dist/background/launch-lock.d.ts +15 -0
  71. package/dist/background/launch-lock.js +40 -0
  72. package/dist/background/launch.d.ts +42 -0
  73. package/dist/background/launch.js +77 -0
  74. package/dist/background/poll.job.d.ts +56 -0
  75. package/dist/background/poll.job.js +195 -0
  76. package/dist/background/render.d.ts +23 -0
  77. package/dist/background/render.js +48 -0
  78. package/dist/background/session.d.ts +48 -0
  79. package/dist/background/session.js +80 -0
  80. package/dist/background/status.d.ts +35 -0
  81. package/dist/background/status.js +57 -0
  82. package/dist/background/stop.d.ts +68 -0
  83. package/dist/background/stop.js +244 -0
  84. package/dist/background/store.d.ts +167 -0
  85. package/dist/background/store.js +361 -0
  86. package/dist/background/store.module.d.ts +6 -0
  87. package/dist/background/store.module.js +22 -0
  88. package/dist/background/tasks.service.d.ts +77 -0
  89. package/dist/background/tasks.service.js +216 -0
  90. package/dist/background/wake-rules.d.ts +66 -0
  91. package/dist/background/wake-rules.js +113 -0
  92. package/dist/background/wake.d.ts +30 -0
  93. package/dist/background/wake.js +63 -0
  94. package/dist/catalog/admin-catalog.controller.d.ts +102 -52
  95. package/dist/catalog/admin-catalog.controller.js +222 -67
  96. package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
  97. package/dist/catalog/admin-catalog.schemas.js +92 -0
  98. package/dist/catalog/catalog-content.d.ts +232 -0
  99. package/dist/catalog/catalog-content.js +367 -0
  100. package/dist/catalog/catalog-files.d.ts +41 -0
  101. package/dist/catalog/catalog-files.js +86 -0
  102. package/dist/catalog/catalog-import.module.d.ts +7 -0
  103. package/dist/catalog/catalog-import.module.js +60 -0
  104. package/dist/catalog/catalog-items.d.ts +290 -0
  105. package/dist/catalog/catalog-items.js +676 -0
  106. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  107. package/dist/catalog/catalog-scope.service.js +1124 -0
  108. package/dist/catalog/catalog.module.d.ts +12 -0
  109. package/dist/catalog/catalog.module.js +81 -0
  110. package/dist/catalog/catalog.service.d.ts +141 -206
  111. package/dist/catalog/catalog.service.js +237 -528
  112. package/dist/catalog/claude/agents.js +15 -10
  113. package/dist/catalog/cli.d.ts +14 -3
  114. package/dist/catalog/cli.js +39 -32
  115. package/dist/catalog/component-promotion.d.ts +96 -0
  116. package/dist/catalog/component-promotion.js +395 -0
  117. package/dist/catalog/component-scope.controller.d.ts +90 -0
  118. package/dist/catalog/component-scope.controller.js +234 -0
  119. package/dist/catalog/component-scope.schemas.d.ts +114 -0
  120. package/dist/catalog/component-scope.schemas.js +97 -0
  121. package/dist/catalog/component-scope.service.d.ts +327 -0
  122. package/dist/catalog/component-scope.service.js +990 -0
  123. package/dist/catalog/component-state.d.ts +188 -0
  124. package/dist/catalog/component-state.js +455 -0
  125. package/dist/catalog/git-source.d.ts +9 -1
  126. package/dist/catalog/git-source.js +29 -2
  127. package/dist/catalog/job-ids.d.ts +45 -0
  128. package/dist/catalog/job-ids.js +40 -0
  129. package/dist/catalog/jobs.d.ts +27 -0
  130. package/dist/catalog/jobs.js +70 -0
  131. package/dist/catalog/locks.d.ts +24 -0
  132. package/dist/catalog/locks.js +63 -0
  133. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  134. package/dist/catalog/marketplace-icons.d.ts +64 -0
  135. package/dist/catalog/marketplace-icons.js +131 -0
  136. package/dist/catalog/marketplaces.controller.d.ts +53 -44
  137. package/dist/catalog/marketplaces.controller.js +146 -51
  138. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  139. package/dist/catalog/marketplaces.schemas.js +53 -0
  140. package/dist/catalog/marketplaces.service.d.ts +136 -26
  141. package/dist/catalog/marketplaces.service.js +663 -281
  142. package/dist/catalog/org-catalog.controller.d.ts +115 -63
  143. package/dist/catalog/org-catalog.controller.js +207 -100
  144. package/dist/catalog/org-catalog.schemas.d.ts +88 -0
  145. package/dist/catalog/org-catalog.schemas.js +93 -0
  146. package/dist/catalog/org-catalog.service.d.ts +89 -216
  147. package/dist/catalog/org-catalog.service.js +431 -472
  148. package/dist/catalog/org-extension-switch.d.ts +41 -0
  149. package/dist/catalog/org-extension-switch.js +115 -0
  150. package/dist/catalog/org-extension.controller.d.ts +113 -0
  151. package/dist/catalog/org-extension.controller.js +271 -0
  152. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  153. package/dist/catalog/org-extension.schemas.js +22 -0
  154. package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
  155. package/dist/catalog/org-plugin-uploads.controller.js +200 -0
  156. package/dist/catalog/org-plugin-uploads.d.ts +71 -0
  157. package/dist/catalog/org-plugin-uploads.js +122 -0
  158. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  159. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  160. package/dist/catalog/owned-items.d.ts +188 -0
  161. package/dist/catalog/owned-items.js +801 -0
  162. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  163. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  164. package/dist/catalog/ownership.d.ts +172 -0
  165. package/dist/catalog/ownership.js +326 -0
  166. package/dist/catalog/platform-components.d.ts +223 -0
  167. package/dist/catalog/platform-components.js +763 -0
  168. package/dist/catalog/platform-migration.d.ts +115 -0
  169. package/dist/catalog/platform-migration.js +582 -0
  170. package/dist/catalog/plugin-import.d.ts +270 -68
  171. package/dist/catalog/plugin-import.js +1004 -277
  172. package/dist/catalog/plugin-install.d.ts +251 -65
  173. package/dist/catalog/plugin-install.js +1128 -344
  174. package/dist/catalog/plugin-package.js +14 -1
  175. package/dist/catalog/plugin-upgrade.d.ts +301 -188
  176. package/dist/catalog/plugin-upgrade.js +1256 -1068
  177. package/dist/catalog/request-rules.d.ts +65 -0
  178. package/dist/catalog/request-rules.js +217 -0
  179. package/dist/catalog/requests.service.d.ts +205 -117
  180. package/dist/catalog/requests.service.js +612 -369
  181. package/dist/catalog/reserved-names.d.ts +8 -0
  182. package/dist/catalog/reserved-names.js +42 -0
  183. package/dist/catalog/scope-orgs.d.ts +21 -0
  184. package/dist/catalog/scope-orgs.js +67 -0
  185. package/dist/catalog/scope-state.d.ts +35 -0
  186. package/dist/catalog/scope-state.js +87 -0
  187. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  188. package/dist/catalog/scope-sync-workers.js +29 -0
  189. package/dist/catalog/scope-sync.d.ts +176 -0
  190. package/dist/catalog/scope-sync.js +576 -0
  191. package/dist/catalog/scope.d.ts +42 -0
  192. package/dist/catalog/scope.js +42 -0
  193. package/dist/catalog/unshare.d.ts +22 -0
  194. package/dist/catalog/unshare.js +118 -0
  195. package/dist/channels/actions.d.ts +6 -4
  196. package/dist/channels/actions.js +11 -4
  197. package/dist/channels/cards.d.ts +33 -11
  198. package/dist/channels/cards.js +96 -24
  199. package/dist/channels/channels.module.d.ts +40 -0
  200. package/dist/channels/channels.module.js +130 -0
  201. package/dist/channels/channels.schemas.d.ts +37 -0
  202. package/dist/channels/channels.schemas.js +38 -0
  203. package/dist/channels/connections.controller.d.ts +44 -37
  204. package/dist/channels/connections.controller.js +83 -38
  205. package/dist/channels/connections.service.d.ts +101 -30
  206. package/dist/channels/connections.service.js +380 -147
  207. package/dist/channels/inbound.d.ts +44 -38
  208. package/dist/channels/inbound.js +190 -44
  209. package/dist/channels/job-ids.d.ts +10 -0
  210. package/dist/channels/job-ids.js +10 -0
  211. package/dist/channels/jobs.d.ts +85 -0
  212. package/dist/channels/jobs.js +157 -0
  213. package/dist/channels/outbound.d.ts +71 -80
  214. package/dist/channels/outbound.js +219 -201
  215. package/dist/channels/phrases.d.ts +33 -2
  216. package/dist/channels/phrases.js +29 -1
  217. package/dist/channels/supervisor.d.ts +88 -46
  218. package/dist/channels/supervisor.js +230 -132
  219. package/dist/channels/threads.d.ts +34 -8
  220. package/dist/channels/threads.js +79 -13
  221. package/dist/channels/webhook.d.ts +20 -14
  222. package/dist/channels/webhook.js +51 -20
  223. package/dist/config/docs.js +5 -1
  224. package/dist/config/load.d.ts +3 -2
  225. package/dist/config/load.js +3 -2
  226. package/dist/config/nacos-source.js +11 -2
  227. package/dist/config/schema.d.ts +51 -3
  228. package/dist/config/schema.js +269 -27
  229. package/dist/conversations/access.d.ts +31 -0
  230. package/dist/conversations/access.js +110 -0
  231. package/dist/conversations/agent-tree.d.ts +46 -0
  232. package/dist/conversations/agent-tree.js +92 -0
  233. package/dist/conversations/artifacts.d.ts +11 -11
  234. package/dist/conversations/artifacts.js +36 -10
  235. package/dist/conversations/attachments.controller.d.ts +1 -1
  236. package/dist/conversations/attachments.controller.js +8 -6
  237. package/dist/conversations/attachments.module.d.ts +7 -0
  238. package/dist/conversations/attachments.module.js +25 -0
  239. package/dist/conversations/attachments.service.d.ts +60 -22
  240. package/dist/conversations/attachments.service.js +249 -51
  241. package/dist/conversations/conversations.controller.d.ts +86 -50
  242. package/dist/conversations/conversations.controller.js +184 -103
  243. package/dist/conversations/conversations.module.d.ts +8 -0
  244. package/dist/conversations/conversations.module.js +72 -0
  245. package/dist/conversations/conversations.schemas.d.ts +52 -0
  246. package/dist/conversations/conversations.schemas.js +79 -0
  247. package/dist/conversations/conversations.service.d.ts +166 -49
  248. package/dist/conversations/conversations.service.js +383 -179
  249. package/dist/conversations/environment-status.d.ts +24 -0
  250. package/dist/conversations/environment-status.js +71 -0
  251. package/dist/conversations/event-log.d.ts +64 -27
  252. package/dist/conversations/event-log.js +167 -31
  253. package/dist/conversations/events.d.ts +252 -9
  254. package/dist/conversations/events.js +243 -32
  255. package/dist/conversations/files.d.ts +10 -10
  256. package/dist/conversations/files.js +37 -11
  257. package/dist/conversations/idem-keys.d.ts +5 -0
  258. package/dist/conversations/idem-keys.js +5 -0
  259. package/dist/conversations/job-ids.d.ts +6 -0
  260. package/dist/conversations/job-ids.js +6 -0
  261. package/dist/conversations/message-context.d.ts +79 -0
  262. package/dist/conversations/message-context.js +145 -0
  263. package/dist/conversations/outputs-read.d.ts +11 -11
  264. package/dist/conversations/outputs-read.js +31 -7
  265. package/dist/conversations/queue.d.ts +53 -58
  266. package/dist/conversations/queue.js +37 -293
  267. package/dist/conversations/queue.service.d.ts +60 -0
  268. package/dist/conversations/queue.service.js +350 -0
  269. package/dist/conversations/titles.d.ts +83 -27
  270. package/dist/conversations/titles.js +195 -70
  271. package/dist/conversations/tree.d.ts +17 -0
  272. package/dist/conversations/tree.js +42 -0
  273. package/dist/ctx/bus.js +9 -3
  274. package/dist/ctx/create-ctx.d.ts +26 -1
  275. package/dist/ctx/create-ctx.js +45 -16
  276. package/dist/ctx/lock.d.ts +7 -3
  277. package/dist/ctx/lock.js +9 -20
  278. package/dist/ctx/queue.js +3 -2
  279. package/dist/ctx/secrets.d.ts +10 -2
  280. package/dist/ctx/secrets.js +7 -3
  281. package/dist/db/kernel-schema.d.ts +550 -25
  282. package/dist/db/pool.d.ts +10 -0
  283. package/dist/db/pool.js +4 -0
  284. package/dist/devices/device-auth.controller.d.ts +42 -0
  285. package/dist/devices/device-auth.controller.js +116 -0
  286. package/dist/devices/device-auth.d.ts +119 -0
  287. package/dist/devices/device-auth.js +403 -0
  288. package/dist/devices/device-auth.module.d.ts +7 -0
  289. package/dist/devices/device-auth.module.js +25 -0
  290. package/dist/devices/device-gateway.d.ts +128 -0
  291. package/dist/devices/device-gateway.js +530 -0
  292. package/dist/devices/device-provider.d.ts +89 -0
  293. package/dist/devices/device-provider.js +151 -0
  294. package/dist/devices/device-routes.d.ts +36 -0
  295. package/dist/devices/device-routes.js +90 -0
  296. package/dist/devices/devices.module.d.ts +16 -0
  297. package/dist/devices/devices.module.js +44 -0
  298. package/dist/devices/dto.d.ts +66 -0
  299. package/dist/devices/dto.js +44 -0
  300. package/dist/devices/keys.d.ts +25 -0
  301. package/dist/devices/keys.js +25 -0
  302. package/dist/devices/machines.d.ts +118 -0
  303. package/dist/devices/machines.js +366 -0
  304. package/dist/devices/relay.d.ts +100 -0
  305. package/dist/devices/relay.js +373 -0
  306. package/dist/devices/targets.d.ts +28 -0
  307. package/dist/devices/targets.js +73 -0
  308. package/dist/environments/access.d.ts +66 -0
  309. package/dist/environments/access.js +113 -0
  310. package/dist/environments/conversation-environments.d.ts +75 -0
  311. package/dist/environments/conversation-environments.js +231 -0
  312. package/dist/environments/dto.d.ts +25 -0
  313. package/dist/environments/dto.js +12 -0
  314. package/dist/environments/environments.controller.d.ts +36 -0
  315. package/dist/environments/environments.controller.js +124 -0
  316. package/dist/environments/environments.module.d.ts +8 -0
  317. package/dist/environments/environments.module.js +31 -0
  318. package/dist/environments/environments.schemas.d.ts +3 -0
  319. package/dist/environments/environments.schemas.js +14 -0
  320. package/dist/environments/environments.service.d.ts +251 -0
  321. package/dist/environments/environments.service.js +791 -0
  322. package/dist/environments/label.d.ts +11 -0
  323. package/dist/environments/label.js +25 -0
  324. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  325. package/dist/environments/legacy-cleanup.job.js +141 -0
  326. package/dist/errors.d.ts +136 -2
  327. package/dist/errors.js +136 -2
  328. package/dist/evals/budget.d.ts +42 -21
  329. package/dist/evals/budget.js +114 -62
  330. package/dist/evals/evals.module.d.ts +31 -0
  331. package/dist/evals/evals.module.js +114 -0
  332. package/dist/evals/evals.schemas.d.ts +110 -0
  333. package/dist/evals/evals.schemas.js +107 -0
  334. package/dist/evals/jobs.d.ts +20 -0
  335. package/dist/evals/jobs.js +45 -0
  336. package/dist/evals/reconstruct.d.ts +18 -9
  337. package/dist/evals/reconstruct.js +36 -10
  338. package/dist/evals/recorded-tools.d.ts +37 -1
  339. package/dist/evals/recorded-tools.js +120 -10
  340. package/dist/evals/run-replay.d.ts +75 -10
  341. package/dist/evals/run-replay.js +218 -94
  342. package/dist/evals/runs.controller.d.ts +3 -58
  343. package/dist/evals/runs.controller.js +18 -50
  344. package/dist/evals/runs.service.d.ts +31 -52
  345. package/dist/evals/runs.service.js +281 -255
  346. package/dist/evals/sets.controller.d.ts +3 -29
  347. package/dist/evals/sets.controller.js +18 -39
  348. package/dist/evals/sets.service.d.ts +29 -13
  349. package/dist/evals/sets.service.js +262 -202
  350. package/dist/evals/snapshot.d.ts +5 -4
  351. package/dist/evals/snapshot.js +17 -4
  352. package/dist/evals/step-replay.d.ts +6 -8
  353. package/dist/evals/step-replay.js +17 -10
  354. package/dist/evals/trajectory.controller.d.ts +1 -1
  355. package/dist/evals/trajectory.controller.js +11 -7
  356. package/dist/evals/trajectory.d.ts +2 -2
  357. package/dist/evals/trajectory.js +1 -1
  358. package/dist/evals/trajectory.service.d.ts +13 -7
  359. package/dist/evals/trajectory.service.js +56 -21
  360. package/dist/evals/worker.d.ts +48 -31
  361. package/dist/evals/worker.js +229 -123
  362. package/dist/extensions/admin-ops.d.ts +133 -41
  363. package/dist/extensions/admin-ops.js +378 -172
  364. package/dist/extensions/admin-view.d.ts +82 -32
  365. package/dist/extensions/admin-view.js +284 -71
  366. package/dist/extensions/approvals.d.ts +24 -10
  367. package/dist/extensions/approvals.js +73 -46
  368. package/dist/extensions/blobs.d.ts +27 -10
  369. package/dist/extensions/blobs.js +112 -45
  370. package/dist/extensions/bootstrap.d.ts +136 -46
  371. package/dist/extensions/bootstrap.js +417 -167
  372. package/dist/extensions/cli.d.ts +32 -10
  373. package/dist/extensions/cli.js +52 -98
  374. package/dist/extensions/config-hash.d.ts +10 -0
  375. package/dist/extensions/config-hash.js +38 -0
  376. package/dist/extensions/config-issues.d.ts +19 -0
  377. package/dist/extensions/config-issues.js +48 -0
  378. package/dist/extensions/config-json-schema.d.ts +43 -7
  379. package/dist/extensions/config-json-schema.js +124 -58
  380. package/dist/extensions/deployment-config-store.d.ts +55 -0
  381. package/dist/extensions/deployment-config-store.js +133 -0
  382. package/dist/extensions/deployment-config.d.ts +146 -70
  383. package/dist/extensions/deployment-config.js +439 -246
  384. package/dist/extensions/display-name.d.ts +22 -0
  385. package/dist/extensions/display-name.js +77 -0
  386. package/dist/extensions/effective-config.d.ts +127 -0
  387. package/dist/extensions/effective-config.js +368 -0
  388. package/dist/extensions/enabled.d.ts +5 -5
  389. package/dist/extensions/extensions.module.d.ts +8 -0
  390. package/dist/extensions/extensions.module.js +96 -0
  391. package/dist/extensions/hooks.d.ts +40 -6
  392. package/dist/extensions/hooks.js +83 -17
  393. package/dist/extensions/host.d.ts +161 -80
  394. package/dist/extensions/host.js +505 -213
  395. package/dist/extensions/installs.d.ts +73 -19
  396. package/dist/extensions/installs.js +174 -37
  397. package/dist/extensions/job-ids.d.ts +6 -0
  398. package/dist/extensions/job-ids.js +6 -0
  399. package/dist/extensions/lifecycle-topics.d.ts +18 -0
  400. package/dist/extensions/lifecycle-topics.js +18 -0
  401. package/dist/extensions/lifecycle.d.ts +35 -47
  402. package/dist/extensions/lifecycle.js +103 -39
  403. package/dist/extensions/locks.d.ts +45 -0
  404. package/dist/extensions/locks.js +112 -0
  405. package/dist/extensions/migrate-lock.d.ts +3 -4
  406. package/dist/extensions/org-config.d.ts +141 -49
  407. package/dist/extensions/org-config.js +471 -243
  408. package/dist/extensions/org-levels.d.ts +37 -0
  409. package/dist/extensions/org-levels.js +71 -0
  410. package/dist/extensions/org-overrides.d.ts +151 -0
  411. package/dist/extensions/org-overrides.js +524 -0
  412. package/dist/extensions/package.d.ts +14 -1
  413. package/dist/extensions/package.js +51 -2
  414. package/dist/extensions/permission-view.d.ts +59 -6
  415. package/dist/extensions/permission-view.js +7 -5
  416. package/dist/extensions/plugin-guides.d.ts +129 -0
  417. package/dist/extensions/plugin-guides.js +283 -0
  418. package/dist/extensions/plugin-icons.d.ts +54 -0
  419. package/dist/extensions/plugin-icons.js +125 -0
  420. package/dist/extensions/plugin-items.d.ts +21 -0
  421. package/dist/extensions/plugin-items.js +42 -0
  422. package/dist/extensions/point-defaults.controller.d.ts +28 -0
  423. package/dist/extensions/point-defaults.controller.js +69 -0
  424. package/dist/extensions/point-defaults.d.ts +73 -0
  425. package/dist/extensions/point-defaults.js +236 -0
  426. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  427. package/dist/extensions/point-defaults.schemas.js +14 -0
  428. package/dist/extensions/registry.d.ts +50 -2
  429. package/dist/extensions/registry.js +91 -4
  430. package/dist/extensions/resolve.d.ts +51 -1
  431. package/dist/extensions/resolve.js +85 -3
  432. package/dist/extensions/single-provider.d.ts +92 -0
  433. package/dist/extensions/single-provider.js +180 -0
  434. package/dist/extensions/sources.d.ts +19 -10
  435. package/dist/extensions/sources.js +34 -13
  436. package/dist/extensions/state.module.d.ts +9 -0
  437. package/dist/extensions/state.module.js +38 -0
  438. package/dist/extensions/unavailable.d.ts +50 -0
  439. package/dist/extensions/unavailable.js +115 -0
  440. package/dist/files/files.module.d.ts +3 -0
  441. package/dist/files/files.module.js +22 -0
  442. package/dist/files/previewers.controller.d.ts +7 -2
  443. package/dist/files/previewers.controller.js +19 -12
  444. package/dist/files/previewers.d.ts +21 -19
  445. package/dist/files/previewers.js +114 -38
  446. package/dist/files/previewers.schemas.d.ts +10 -0
  447. package/dist/files/previewers.schemas.js +9 -0
  448. package/dist/http/adapter.d.ts +3 -0
  449. package/dist/http/adapter.js +25 -0
  450. package/dist/http/api.module.d.ts +3 -110
  451. package/dist/http/api.module.js +86 -358
  452. package/dist/http/app.d.ts +22 -17
  453. package/dist/http/app.js +83 -52
  454. package/dist/http/error-filter.module.d.ts +5 -0
  455. package/dist/http/error-filter.module.js +18 -0
  456. package/dist/http/error.filter.js +2 -2
  457. package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
  458. package/dist/http/gateway-routes.js +16 -0
  459. package/dist/http/nest-logger.d.ts +6 -5
  460. package/dist/http/nest-logger.js +24 -10
  461. package/dist/http/plugin-dispatch.d.ts +4 -1
  462. package/dist/http/plugin-dispatch.js +14 -2
  463. package/dist/identity/accounts.d.ts +130 -38
  464. package/dist/identity/accounts.js +373 -186
  465. package/dist/identity/api-tokens.d.ts +11 -7
  466. package/dist/identity/api-tokens.js +71 -44
  467. package/dist/identity/audit.d.ts +9 -5
  468. package/dist/identity/audit.js +5 -1
  469. package/dist/identity/auth.controller.d.ts +11 -10
  470. package/dist/identity/auth.controller.js +40 -30
  471. package/dist/identity/auth.guard.d.ts +16 -8
  472. package/dist/identity/auth.guard.js +41 -13
  473. package/dist/identity/binding.d.ts +9 -11
  474. package/dist/identity/binding.js +41 -13
  475. package/dist/identity/cookies.d.ts +26 -5
  476. package/dist/identity/cookies.js +58 -6
  477. package/dist/identity/external-identity-lock.d.ts +17 -0
  478. package/dist/identity/external-identity-lock.js +39 -0
  479. package/dist/identity/external.d.ts +19 -15
  480. package/dist/identity/external.js +163 -125
  481. package/dist/identity/identity.module.d.ts +6 -0
  482. package/dist/identity/identity.module.js +59 -0
  483. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  484. package/dist/identity/initial-passwords.controller.js +49 -0
  485. package/dist/identity/initial-passwords.d.ts +61 -0
  486. package/dist/identity/initial-passwords.job.d.ts +16 -0
  487. package/dist/identity/initial-passwords.job.js +46 -0
  488. package/dist/identity/initial-passwords.js +159 -0
  489. package/dist/identity/me.controller.d.ts +32 -15
  490. package/dist/identity/me.controller.js +78 -33
  491. package/dist/identity/me.schemas.d.ts +14 -0
  492. package/dist/identity/me.schemas.js +17 -0
  493. package/dist/identity/principal.d.ts +11 -3
  494. package/dist/identity/principal.js +11 -3
  495. package/dist/identity/sessions.d.ts +24 -10
  496. package/dist/identity/sessions.js +119 -42
  497. package/dist/identity/settings.d.ts +42 -23
  498. package/dist/identity/settings.js +137 -72
  499. package/dist/identity/sso.controller.d.ts +7 -7
  500. package/dist/identity/sso.controller.js +13 -9
  501. package/dist/identity/sso.d.ts +9 -12
  502. package/dist/identity/sso.js +54 -24
  503. package/dist/identity/super-admin.d.ts +20 -0
  504. package/dist/identity/super-admin.js +81 -0
  505. package/dist/inbox/inbox.module.d.ts +6 -0
  506. package/dist/inbox/inbox.module.js +26 -0
  507. package/dist/inbox/inbox.schemas.d.ts +8 -0
  508. package/dist/inbox/inbox.schemas.js +11 -0
  509. package/dist/inbox/inbox.service.d.ts +68 -11
  510. package/dist/inbox/inbox.service.js +104 -13
  511. package/dist/inbox/org-notices.d.ts +63 -0
  512. package/dist/inbox/org-notices.js +91 -0
  513. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  514. package/dist/inbox/platform-inbox.controller.js +58 -0
  515. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  516. package/dist/inbox/platform-inbox.service.js +263 -0
  517. package/dist/inbox/platform-notices.d.ts +19 -0
  518. package/dist/inbox/platform-notices.js +9 -0
  519. package/dist/index.d.ts +25 -14
  520. package/dist/index.js +20 -9
  521. package/dist/infra/cache/cache.module.d.ts +3 -0
  522. package/dist/infra/cache/cache.module.js +16 -0
  523. package/dist/infra/cache/cache.service.d.ts +21 -0
  524. package/dist/infra/cache/cache.service.js +80 -0
  525. package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
  526. package/dist/infra/cache/cacheable.decorator.js +83 -0
  527. package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
  528. package/dist/infra/cli/kernel-cli.module.js +173 -0
  529. package/dist/infra/close-within.d.ts +15 -0
  530. package/dist/infra/close-within.js +36 -0
  531. package/dist/infra/config/config.module.d.ts +13 -0
  532. package/dist/infra/config/config.module.js +39 -0
  533. package/dist/infra/config/kernel-config.service.d.ts +25 -0
  534. package/dist/infra/config/kernel-config.service.js +157 -0
  535. package/dist/infra/database/after-commit.d.ts +6 -0
  536. package/dist/infra/database/after-commit.js +9 -0
  537. package/dist/infra/database/database.module.d.ts +25 -0
  538. package/dist/infra/database/database.module.js +91 -0
  539. package/dist/infra/database/kernel-db.d.ts +22 -0
  540. package/dist/infra/database/kernel-db.js +65 -0
  541. package/dist/infra/database/transaction-host.d.ts +50 -0
  542. package/dist/infra/database/transaction-host.js +125 -0
  543. package/dist/infra/database/transactional.decorator.d.ts +15 -0
  544. package/dist/infra/database/transactional.decorator.js +27 -0
  545. package/dist/infra/database/xact-lock.d.ts +17 -0
  546. package/dist/infra/database/xact-lock.js +43 -0
  547. package/dist/infra/events/kernel-events.d.ts +121 -0
  548. package/dist/infra/events/kernel-events.js +65 -0
  549. package/dist/infra/health/health.controller.d.ts +26 -0
  550. package/dist/infra/health/health.controller.js +104 -0
  551. package/dist/infra/health/health.module.d.ts +9 -0
  552. package/dist/infra/health/health.module.js +24 -0
  553. package/dist/infra/health/health.options.d.ts +10 -0
  554. package/dist/infra/health/health.options.js +15 -0
  555. package/dist/infra/health/shutdown-state.d.ts +6 -0
  556. package/dist/infra/health/shutdown-state.js +2 -0
  557. package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
  558. package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
  559. package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
  560. package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
  561. package/dist/infra/lifecycle/process-guards.d.ts +52 -0
  562. package/dist/infra/lifecycle/process-guards.js +90 -0
  563. package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
  564. package/dist/infra/lifecycle/shutdown-signals.js +48 -0
  565. package/dist/infra/lock/key-template.d.ts +13 -0
  566. package/dist/infra/lock/key-template.js +46 -0
  567. package/dist/infra/lock/lock.module.d.ts +3 -0
  568. package/dist/infra/lock/lock.module.js +16 -0
  569. package/dist/infra/lock/lock.service.d.ts +120 -0
  570. package/dist/infra/lock/lock.service.js +343 -0
  571. package/dist/infra/lock/shared-lease.d.ts +44 -0
  572. package/dist/infra/lock/shared-lease.js +121 -0
  573. package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
  574. package/dist/infra/lock/with-lock.decorator.js +49 -0
  575. package/dist/infra/logging/logging.module.d.ts +18 -0
  576. package/dist/infra/logging/logging.module.js +52 -0
  577. package/dist/infra/queue/add-job-once.d.ts +14 -0
  578. package/dist/infra/queue/add-job-once.js +16 -0
  579. package/dist/infra/queue/configured-processor.d.ts +18 -0
  580. package/dist/infra/queue/configured-processor.js +23 -0
  581. package/dist/infra/queue/job-failure.d.ts +18 -0
  582. package/dist/infra/queue/job-failure.js +26 -0
  583. package/dist/infra/queue/queue-shutdown.d.ts +27 -0
  584. package/dist/infra/queue/queue-shutdown.js +81 -0
  585. package/dist/infra/queue/queue.module.d.ts +16 -0
  586. package/dist/infra/queue/queue.module.js +61 -0
  587. package/dist/infra/queue/redis-connection.d.ts +13 -0
  588. package/dist/infra/queue/redis-connection.js +25 -0
  589. package/dist/infra/queue/retired-schedulers.d.ts +7 -0
  590. package/dist/infra/queue/retired-schedulers.js +9 -0
  591. package/dist/infra/queue/run-job.d.ts +16 -0
  592. package/dist/infra/queue/run-job.js +19 -0
  593. package/dist/infra/redis/redis.module.d.ts +24 -0
  594. package/dist/infra/redis/redis.module.js +91 -0
  595. package/dist/infra/schedule/cron-tick.d.ts +12 -0
  596. package/dist/infra/schedule/cron-tick.js +25 -0
  597. package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
  598. package/dist/infra/schedule/locked-cron.decorator.js +53 -0
  599. package/dist/infra/schedule/locked-interval.d.ts +69 -0
  600. package/dist/infra/schedule/locked-interval.js +190 -0
  601. package/dist/infra/schedule/locked-tick.d.ts +90 -0
  602. package/dist/infra/schedule/locked-tick.js +137 -0
  603. package/dist/infra/schedule/schedule.module.d.ts +8 -0
  604. package/dist/infra/schedule/schedule.module.js +27 -0
  605. package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
  606. package/dist/infra/schedule/scheduled-runs.js +163 -0
  607. package/dist/infra/swagger/swagger.d.ts +16 -0
  608. package/dist/infra/swagger/swagger.js +31 -0
  609. package/dist/infra/throttler/credential-throttler.d.ts +35 -0
  610. package/dist/infra/throttler/credential-throttler.js +77 -0
  611. package/dist/infra/throttler/named-throttlers.d.ts +36 -0
  612. package/dist/infra/throttler/named-throttlers.js +157 -0
  613. package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
  614. package/dist/infra/throttler/redis-throttler-storage.js +130 -0
  615. package/dist/infra/throttler/throttler.guard.d.ts +23 -0
  616. package/dist/infra/throttler/throttler.guard.js +68 -0
  617. package/dist/infra/throttler/throttler.module.d.ts +15 -0
  618. package/dist/infra/throttler/throttler.module.js +53 -0
  619. package/dist/infra/tokens.d.ts +20 -0
  620. package/dist/infra/tokens.js +20 -0
  621. package/dist/infra/validation/create-zod-dto.d.ts +23 -0
  622. package/dist/infra/validation/create-zod-dto.js +35 -0
  623. package/dist/infra/validation/parse-with-zod.d.ts +7 -0
  624. package/dist/infra/validation/parse-with-zod.js +12 -0
  625. package/dist/infra/validation/validation.module.d.ts +3 -0
  626. package/dist/infra/validation/validation.module.js +16 -0
  627. package/dist/infra/validation/zod-params.d.ts +7 -0
  628. package/dist/infra/validation/zod-params.js +42 -0
  629. package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
  630. package/dist/infra/validation/zod-validation.pipe.js +31 -0
  631. package/dist/kernel.d.ts +9 -241
  632. package/dist/kernel.js +8 -1305
  633. package/dist/kernel.module.d.ts +17 -0
  634. package/dist/kernel.module.js +145 -0
  635. package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
  636. package/dist/lifecycle/kernel-lifecycle.js +465 -0
  637. package/dist/lifecycle/tokens.d.ts +3 -0
  638. package/dist/lifecycle/tokens.js +3 -0
  639. package/dist/log-config.d.ts +9 -0
  640. package/dist/log-config.js +27 -0
  641. package/dist/log-context.d.ts +34 -0
  642. package/dist/log-context.js +44 -0
  643. package/dist/log-loki.d.ts +34 -0
  644. package/dist/log-loki.js +145 -0
  645. package/dist/log.d.ts +53 -10
  646. package/dist/log.js +168 -18
  647. package/dist/models/embeddings.d.ts +82 -0
  648. package/dist/models/embeddings.js +326 -0
  649. package/dist/models/enablement.controller.d.ts +40 -0
  650. package/dist/models/enablement.controller.js +74 -0
  651. package/dist/models/enablement.d.ts +101 -0
  652. package/dist/models/enablement.js +264 -0
  653. package/dist/models/models.module.d.ts +7 -0
  654. package/dist/models/models.module.js +36 -0
  655. package/dist/models/org-models.schemas.d.ts +8 -0
  656. package/dist/models/org-models.schemas.js +22 -0
  657. package/dist/models/prices.d.ts +13 -5
  658. package/dist/models/prices.js +69 -39
  659. package/dist/models/purposes.controller.d.ts +6 -4
  660. package/dist/models/purposes.controller.js +16 -11
  661. package/dist/models/purposes.d.ts +103 -23
  662. package/dist/models/purposes.js +208 -77
  663. package/dist/net/public-address.js +3 -2
  664. package/dist/orgs/directory-sync.controller.d.ts +1 -1
  665. package/dist/orgs/directory-sync.controller.js +2 -2
  666. package/dist/orgs/directory-sync.d.ts +74 -35
  667. package/dist/orgs/directory-sync.js +243 -132
  668. package/dist/orgs/invitations.controller.d.ts +8 -8
  669. package/dist/orgs/invitations.controller.js +27 -26
  670. package/dist/orgs/invitations.service.d.ts +12 -9
  671. package/dist/orgs/invitations.service.js +130 -92
  672. package/dist/orgs/job-ids.d.ts +8 -0
  673. package/dist/orgs/job-ids.js +8 -0
  674. package/dist/orgs/members.service.d.ts +19 -12
  675. package/dist/orgs/members.service.js +161 -117
  676. package/dist/orgs/offboarding.d.ts +61 -60
  677. package/dist/orgs/offboarding.js +206 -95
  678. package/dist/orgs/org-lock.d.ts +33 -19
  679. package/dist/orgs/org-lock.js +94 -35
  680. package/dist/orgs/org.guard.d.ts +11 -1
  681. package/dist/orgs/org.guard.js +45 -34
  682. package/dist/orgs/orgs.controller.d.ts +13 -16
  683. package/dist/orgs/orgs.controller.js +29 -20
  684. package/dist/orgs/orgs.module.d.ts +6 -0
  685. package/dist/orgs/orgs.module.js +71 -0
  686. package/dist/orgs/orgs.schemas.d.ts +8 -0
  687. package/dist/orgs/orgs.schemas.js +16 -0
  688. package/dist/orgs/orgs.service.d.ts +47 -21
  689. package/dist/orgs/orgs.service.js +166 -91
  690. package/dist/orgs/roles.d.ts +1 -1
  691. package/dist/orgs/roles.js +5 -1
  692. package/dist/orgs/settings.controller.d.ts +2 -2
  693. package/dist/orgs/settings.controller.js +8 -6
  694. package/dist/orgs/settings.service.d.ts +45 -14
  695. package/dist/orgs/settings.service.js +110 -51
  696. package/dist/overrides.d.ts +63 -0
  697. package/dist/overrides.js +34 -0
  698. package/dist/platform/actor.d.ts +48 -0
  699. package/dist/platform/actor.js +100 -0
  700. package/dist/platform/agent-docs.d.ts +18 -0
  701. package/dist/platform/agent-docs.js +59 -0
  702. package/dist/platform/availability.d.ts +14 -0
  703. package/dist/platform/availability.js +43 -0
  704. package/dist/platform/errors.d.ts +28 -0
  705. package/dist/platform/errors.js +65 -0
  706. package/dist/platform/exclusions.d.ts +11 -0
  707. package/dist/platform/exclusions.js +667 -0
  708. package/dist/platform/method.d.ts +6 -0
  709. package/dist/platform/method.js +15 -0
  710. package/dist/platform/operation.d.ts +169 -0
  711. package/dist/platform/operation.js +90 -0
  712. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  713. package/dist/platform/ops/accounts.ops.js +291 -0
  714. package/dist/platform/ops/admin.ops.d.ts +36 -0
  715. package/dist/platform/ops/admin.ops.js +389 -0
  716. package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
  717. package/dist/platform/ops/agent-skills.ops.js +226 -0
  718. package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
  719. package/dist/platform/ops/agent-templates.ops.js +272 -0
  720. package/dist/platform/ops/agents.ops.d.ts +37 -0
  721. package/dist/platform/ops/agents.ops.js +717 -0
  722. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  723. package/dist/platform/ops/approvals.ops.js +116 -0
  724. package/dist/platform/ops/background.ops.d.ts +14 -0
  725. package/dist/platform/ops/background.ops.js +134 -0
  726. package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
  727. package/dist/platform/ops/catalog-admin.ops.js +599 -0
  728. package/dist/platform/ops/channels.ops.d.ts +16 -0
  729. package/dist/platform/ops/channels.ops.js +195 -0
  730. package/dist/platform/ops/components.ops.d.ts +46 -0
  731. package/dist/platform/ops/components.ops.js +853 -0
  732. package/dist/platform/ops/connectors.ops.d.ts +17 -0
  733. package/dist/platform/ops/connectors.ops.js +188 -0
  734. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  735. package/dist/platform/ops/conversations.ops.js +470 -0
  736. package/dist/platform/ops/environments.ops.d.ts +26 -0
  737. package/dist/platform/ops/environments.ops.js +311 -0
  738. package/dist/platform/ops/errors.d.ts +16 -0
  739. package/dist/platform/ops/errors.js +30 -0
  740. package/dist/platform/ops/evals.ops.d.ts +28 -0
  741. package/dist/platform/ops/evals.ops.js +783 -0
  742. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  743. package/dist/platform/ops/extensions-admin.ops.js +372 -0
  744. package/dist/platform/ops/extensions.ops.d.ts +25 -0
  745. package/dist/platform/ops/extensions.ops.js +347 -0
  746. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  747. package/dist/platform/ops/inbox.ops.js +378 -0
  748. package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
  749. package/dist/platform/ops/marketplaces.ops.js +466 -0
  750. package/dist/platform/ops/models.ops.d.ts +25 -0
  751. package/dist/platform/ops/models.ops.js +232 -0
  752. package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
  753. package/dist/platform/ops/org-plugins.ops.js +329 -0
  754. package/dist/platform/ops/org-settings.ops.d.ts +16 -0
  755. package/dist/platform/ops/org-settings.ops.js +102 -0
  756. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  757. package/dist/platform/ops/orgs.ops.js +295 -0
  758. package/dist/platform/ops/other-orgs.d.ts +20 -0
  759. package/dist/platform/ops/other-orgs.js +72 -0
  760. package/dist/platform/ops/paging.d.ts +14 -0
  761. package/dist/platform/ops/paging.js +20 -0
  762. package/dist/platform/ops/platform.ops.d.ts +28 -0
  763. package/dist/platform/ops/platform.ops.js +204 -0
  764. package/dist/platform/ops/plugins.ops.d.ts +35 -0
  765. package/dist/platform/ops/plugins.ops.js +476 -0
  766. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  767. package/dist/platform/ops/previewers.ops.js +109 -0
  768. package/dist/platform/ops/requests.ops.d.ts +14 -0
  769. package/dist/platform/ops/requests.ops.js +191 -0
  770. package/dist/platform/ops/role.d.ts +4 -0
  771. package/dist/platform/ops/role.js +10 -0
  772. package/dist/platform/ops/skills.ops.d.ts +17 -0
  773. package/dist/platform/ops/skills.ops.js +216 -0
  774. package/dist/platform/ops/summary.d.ts +10 -0
  775. package/dist/platform/ops/summary.js +18 -0
  776. package/dist/platform/ops/unavailable.d.ts +23 -0
  777. package/dist/platform/ops/unavailable.js +118 -0
  778. package/dist/platform/parity.d.ts +33 -0
  779. package/dist/platform/parity.js +272 -0
  780. package/dist/platform/platform-ops.module.d.ts +39 -0
  781. package/dist/platform/platform-ops.module.js +122 -0
  782. package/dist/platform/platform.module.d.ts +8 -0
  783. package/dist/platform/platform.module.js +25 -0
  784. package/dist/platform/registry.d.ts +30 -0
  785. package/dist/platform/registry.js +111 -0
  786. package/dist/platform/route-schemas.d.ts +18 -0
  787. package/dist/platform/route-schemas.js +63 -0
  788. package/dist/roles/gateway-role.d.ts +54 -0
  789. package/dist/roles/gateway-role.js +118 -0
  790. package/dist/roles/gateway.module.d.ts +9 -0
  791. package/dist/roles/gateway.module.js +31 -0
  792. package/dist/roles/worker-role.d.ts +65 -0
  793. package/dist/roles/worker-role.js +151 -0
  794. package/dist/roles/worker.module.d.ts +14 -0
  795. package/dist/roles/worker.module.js +106 -0
  796. package/dist/runtime/abort.js +19 -2
  797. package/dist/runtime/checkpointer.d.ts +8 -3
  798. package/dist/runtime/checkpointer.js +87 -55
  799. package/dist/runtime/context/build.d.ts +21 -13
  800. package/dist/runtime/context/build.js +106 -29
  801. package/dist/runtime/context/claude-tools.d.ts +4 -1
  802. package/dist/runtime/context/claude-tools.js +13 -12
  803. package/dist/runtime/context/compaction.js +24 -1
  804. package/dist/runtime/context/environment-paths.d.ts +40 -0
  805. package/dist/runtime/context/environment-paths.js +48 -0
  806. package/dist/runtime/context/legacy-text.d.ts +22 -0
  807. package/dist/runtime/context/legacy-text.js +37 -0
  808. package/dist/runtime/context/reminders.d.ts +2 -0
  809. package/dist/runtime/context/reminders.js +2 -0
  810. package/dist/runtime/context/run-context.d.ts +65 -0
  811. package/dist/runtime/context/run-context.js +215 -0
  812. package/dist/runtime/context/skills.d.ts +29 -11
  813. package/dist/runtime/context/skills.js +46 -32
  814. package/dist/runtime/context/tool-changes.d.ts +27 -0
  815. package/dist/runtime/context/tool-changes.js +60 -0
  816. package/dist/runtime/conversation-lock.d.ts +20 -11
  817. package/dist/runtime/conversation-lock.js +62 -72
  818. package/dist/runtime/hook-calls.d.ts +11 -4
  819. package/dist/runtime/hook-calls.js +41 -13
  820. package/dist/runtime/job-ids.d.ts +10 -0
  821. package/dist/runtime/job-ids.js +10 -0
  822. package/dist/runtime/langgraph-loop.d.ts +3 -1
  823. package/dist/runtime/langgraph-loop.js +37 -18
  824. package/dist/runtime/loop.d.ts +42 -6
  825. package/dist/runtime/loop.js +14 -0
  826. package/dist/runtime/maintenance-queue.d.ts +10 -0
  827. package/dist/runtime/maintenance-queue.js +10 -0
  828. package/dist/runtime/maintenance.d.ts +50 -74
  829. package/dist/runtime/maintenance.js +166 -136
  830. package/dist/runtime/model-call.d.ts +61 -15
  831. package/dist/runtime/model-call.js +128 -84
  832. package/dist/runtime/providers.d.ts +158 -27
  833. package/dist/runtime/providers.js +373 -63
  834. package/dist/runtime/quota.d.ts +17 -3
  835. package/dist/runtime/quota.js +27 -2
  836. package/dist/runtime/retired-schedulers.d.ts +7 -0
  837. package/dist/runtime/retired-schedulers.js +31 -0
  838. package/dist/runtime/run-context.service.d.ts +65 -0
  839. package/dist/runtime/run-context.service.js +236 -0
  840. package/dist/runtime/run-control.d.ts +43 -0
  841. package/dist/runtime/run-control.js +89 -0
  842. package/dist/runtime/run-drafts.d.ts +85 -0
  843. package/dist/runtime/run-drafts.js +230 -0
  844. package/dist/runtime/run-finish.d.ts +27 -18
  845. package/dist/runtime/run-finish.js +98 -51
  846. package/dist/runtime/run-jobs.d.ts +46 -0
  847. package/dist/runtime/run-jobs.js +91 -0
  848. package/dist/runtime/run-processors.d.ts +60 -0
  849. package/dist/runtime/run-processors.js +185 -0
  850. package/dist/runtime/run-queue.d.ts +90 -58
  851. package/dist/runtime/run-queue.js +566 -297
  852. package/dist/runtime/run-steps.d.ts +39 -0
  853. package/dist/runtime/run-steps.js +96 -0
  854. package/dist/runtime/run-worker.d.ts +134 -77
  855. package/dist/runtime/run-worker.js +412 -236
  856. package/dist/runtime/runtime.module.d.ts +10 -0
  857. package/dist/runtime/runtime.module.js +122 -0
  858. package/dist/runtime/step-log.d.ts +51 -0
  859. package/dist/runtime/step-log.js +111 -0
  860. package/dist/runtime/stream.controller.d.ts +28 -9
  861. package/dist/runtime/stream.controller.js +72 -13
  862. package/dist/runtime/stream.d.ts +27 -6
  863. package/dist/runtime/stream.js +102 -7
  864. package/dist/runtime/subagents/child.d.ts +58 -51
  865. package/dist/runtime/subagents/child.js +105 -86
  866. package/dist/runtime/subagents/definition.d.ts +32 -28
  867. package/dist/runtime/subagents/definition.js +89 -143
  868. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  869. package/dist/runtime/subagents/deliveries.js +228 -0
  870. package/dist/runtime/subagents/dispatch.d.ts +197 -27
  871. package/dist/runtime/subagents/dispatch.js +336 -270
  872. package/dist/runtime/subagents/limits.d.ts +32 -8
  873. package/dist/runtime/subagents/limits.js +44 -8
  874. package/dist/runtime/subagents/messages.d.ts +95 -0
  875. package/dist/runtime/subagents/messages.js +328 -0
  876. package/dist/runtime/subagents/org-agents.d.ts +4 -4
  877. package/dist/runtime/subagents/org-agents.js +3 -2
  878. package/dist/runtime/subagents/preamble.d.ts +4 -4
  879. package/dist/runtime/subagents/preamble.js +9 -7
  880. package/dist/runtime/subagents/progress.d.ts +10 -8
  881. package/dist/runtime/subagents/progress.js +11 -6
  882. package/dist/runtime/subagents/render.d.ts +30 -0
  883. package/dist/runtime/subagents/render.js +53 -0
  884. package/dist/runtime/subagents/roster.d.ts +27 -10
  885. package/dist/runtime/subagents/roster.js +49 -13
  886. package/dist/runtime/subagents/skill-fork.d.ts +10 -10
  887. package/dist/runtime/subagents/skill-fork.js +23 -8
  888. package/dist/runtime/subagents/status.d.ts +14 -0
  889. package/dist/runtime/subagents/status.js +23 -0
  890. package/dist/runtime/subagents/subagents.service.d.ts +43 -0
  891. package/dist/runtime/subagents/subagents.service.js +106 -0
  892. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  893. package/dist/runtime/usage-report-jobs.js +158 -0
  894. package/dist/runtime/usage-report.d.ts +121 -83
  895. package/dist/runtime/usage-report.js +355 -180
  896. package/dist/runtime/waits.d.ts +258 -81
  897. package/dist/runtime/waits.js +800 -263
  898. package/dist/sandbox/job-ids.d.ts +10 -0
  899. package/dist/sandbox/job-ids.js +10 -0
  900. package/dist/sandbox/jobs.d.ts +68 -0
  901. package/dist/sandbox/jobs.js +150 -0
  902. package/dist/sandbox/leases.d.ts +73 -82
  903. package/dist/sandbox/leases.js +162 -346
  904. package/dist/sandbox/providers.d.ts +46 -0
  905. package/dist/sandbox/providers.js +83 -0
  906. package/dist/sandbox/sandbox.module.d.ts +9 -0
  907. package/dist/sandbox/sandbox.module.js +36 -0
  908. package/dist/sandbox/sandbox.service.d.ts +359 -151
  909. package/dist/sandbox/sandbox.service.js +950 -435
  910. package/dist/sandbox/unreachable.d.ts +30 -0
  911. package/dist/sandbox/unreachable.js +108 -0
  912. package/dist/skills/catalog.d.ts +40 -26
  913. package/dist/skills/catalog.js +120 -99
  914. package/dist/skills/changes.controller.d.ts +11 -4
  915. package/dist/skills/changes.controller.js +34 -9
  916. package/dist/skills/changes.service.d.ts +31 -21
  917. package/dist/skills/changes.service.js +426 -368
  918. package/dist/skills/invocable.controller.d.ts +2 -2
  919. package/dist/skills/invocable.controller.js +10 -7
  920. package/dist/skills/invocation-keys.d.ts +1 -1
  921. package/dist/skills/invocation-keys.js +1 -1
  922. package/dist/skills/invoke.d.ts +19 -18
  923. package/dist/skills/invoke.js +68 -24
  924. package/dist/skills/package.d.ts +20 -1
  925. package/dist/skills/package.js +28 -1
  926. package/dist/skills/skills.controller.d.ts +33 -7
  927. package/dist/skills/skills.controller.js +79 -12
  928. package/dist/skills/skills.module.d.ts +6 -0
  929. package/dist/skills/skills.module.js +39 -0
  930. package/dist/skills/skills.schemas.d.ts +48 -0
  931. package/dist/skills/skills.schemas.js +61 -0
  932. package/dist/skills/skills.service.d.ts +151 -44
  933. package/dist/skills/skills.service.js +636 -204
  934. package/dist/skills/usable.d.ts +81 -0
  935. package/dist/skills/usable.js +379 -0
  936. package/dist/storage/job-ids.d.ts +6 -0
  937. package/dist/storage/job-ids.js +6 -0
  938. package/dist/storage/purge.d.ts +22 -7
  939. package/dist/storage/purge.js +55 -3
  940. package/dist/storage/storage.module.d.ts +6 -0
  941. package/dist/storage/storage.module.js +23 -0
  942. package/dist/storage/storage.service.d.ts +18 -4
  943. package/dist/storage/storage.service.js +44 -3
  944. package/dist/time-zone.d.ts +5 -0
  945. package/dist/time-zone.js +19 -0
  946. package/dist/tools/approvals.controller.d.ts +1 -1
  947. package/dist/tools/approvals.controller.js +14 -11
  948. package/dist/tools/approvals.schemas.d.ts +21 -0
  949. package/dist/tools/approvals.schemas.js +15 -0
  950. package/dist/tools/approvals.service.d.ts +53 -27
  951. package/dist/tools/approvals.service.js +365 -260
  952. package/dist/tools/breaker.d.ts +2 -2
  953. package/dist/tools/breaker.js +21 -3
  954. package/dist/tools/builtin-names.d.ts +109 -0
  955. package/dist/tools/builtin-names.js +173 -0
  956. package/dist/tools/builtins/agent.d.ts +27 -25
  957. package/dist/tools/builtins/agent.js +66 -63
  958. package/dist/tools/builtins/ask-user.d.ts +3 -3
  959. package/dist/tools/builtins/ask-user.js +3 -3
  960. package/dist/tools/builtins/builtin-tools.d.ts +41 -0
  961. package/dist/tools/builtins/builtin-tools.js +151 -0
  962. package/dist/tools/builtins/current-time.d.ts +26 -0
  963. package/dist/tools/builtins/current-time.js +99 -0
  964. package/dist/tools/builtins/handback.d.ts +28 -0
  965. package/dist/tools/builtins/handback.js +53 -0
  966. package/dist/tools/builtins/platform.d.ts +51 -0
  967. package/dist/tools/builtins/platform.js +451 -0
  968. package/dist/tools/builtins/read-tool-output.d.ts +3 -3
  969. package/dist/tools/builtins/read-tool-output.js +3 -3
  970. package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
  971. package/dist/tools/builtins/sandbox/bash.js +293 -41
  972. package/dist/tools/builtins/sandbox/common.d.ts +142 -40
  973. package/dist/tools/builtins/sandbox/common.js +227 -65
  974. package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
  975. package/dist/tools/builtins/sandbox/deliver.js +21 -18
  976. package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
  977. package/dist/tools/builtins/sandbox/edit.js +65 -51
  978. package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
  979. package/dist/tools/builtins/sandbox/file-state.js +34 -0
  980. package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
  981. package/dist/tools/builtins/sandbox/glob-match.js +1 -1
  982. package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
  983. package/dist/tools/builtins/sandbox/glob.js +19 -14
  984. package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
  985. package/dist/tools/builtins/sandbox/grep.js +155 -36
  986. package/dist/tools/builtins/sandbox/index.d.ts +9 -5
  987. package/dist/tools/builtins/sandbox/index.js +13 -5
  988. package/dist/tools/builtins/sandbox/read.d.ts +2 -2
  989. package/dist/tools/builtins/sandbox/read.js +30 -20
  990. package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
  991. package/dist/tools/builtins/sandbox/task-output.js +334 -0
  992. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  993. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  994. package/dist/tools/builtins/sandbox/write.d.ts +1 -1
  995. package/dist/tools/builtins/sandbox/write.js +52 -45
  996. package/dist/tools/builtins/send-message.d.ts +56 -0
  997. package/dist/tools/builtins/send-message.js +100 -0
  998. package/dist/tools/builtins/skill-load.d.ts +32 -21
  999. package/dist/tools/builtins/skill-load.js +125 -74
  1000. package/dist/tools/builtins/skill-write.d.ts +4 -4
  1001. package/dist/tools/builtins/skill-write.js +12 -12
  1002. package/dist/tools/builtins/tool-search.d.ts +13 -9
  1003. package/dist/tools/builtins/tool-search.js +25 -14
  1004. package/dist/tools/builtins/web/errors.d.ts +8 -0
  1005. package/dist/tools/builtins/web/errors.js +53 -0
  1006. package/dist/tools/builtins/web/extract.d.ts +62 -0
  1007. package/dist/tools/builtins/web/extract.js +271 -0
  1008. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  1009. package/dist/tools/builtins/web/fetch.js +175 -0
  1010. package/dist/tools/builtins/web/index.d.ts +13 -0
  1011. package/dist/tools/builtins/web/index.js +12 -0
  1012. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  1013. package/dist/tools/builtins/web/page-cache.js +77 -0
  1014. package/dist/tools/builtins/web/search.d.ts +25 -0
  1015. package/dist/tools/builtins/web/search.js +210 -0
  1016. package/dist/tools/builtins/web/url.d.ts +17 -0
  1017. package/dist/tools/builtins/web/url.js +43 -0
  1018. package/dist/tools/canonical-json.d.ts +6 -0
  1019. package/dist/tools/canonical-json.js +16 -0
  1020. package/dist/tools/connector-content.controller.d.ts +1 -1
  1021. package/dist/tools/connector-content.controller.js +11 -6
  1022. package/dist/tools/connector-content.d.ts +12 -15
  1023. package/dist/tools/connector-content.js +53 -18
  1024. package/dist/tools/connectors.controller.d.ts +16 -3
  1025. package/dist/tools/connectors.controller.js +34 -14
  1026. package/dist/tools/connectors.schemas.d.ts +12 -0
  1027. package/dist/tools/connectors.schemas.js +19 -0
  1028. package/dist/tools/connectors.service.d.ts +80 -18
  1029. package/dist/tools/connectors.service.js +529 -358
  1030. package/dist/tools/credentials.d.ts +20 -20
  1031. package/dist/tools/credentials.js +55 -34
  1032. package/dist/tools/display-names.d.ts +9 -0
  1033. package/dist/tools/display-names.js +24 -0
  1034. package/dist/tools/drift.d.ts +29 -41
  1035. package/dist/tools/drift.js +116 -84
  1036. package/dist/tools/elicitation.js +1 -1
  1037. package/dist/tools/extension-tools.controller.d.ts +14 -0
  1038. package/dist/tools/extension-tools.controller.js +37 -0
  1039. package/dist/tools/info.d.ts +73 -13
  1040. package/dist/tools/info.js +151 -39
  1041. package/dist/tools/job-ids.d.ts +13 -0
  1042. package/dist/tools/job-ids.js +15 -0
  1043. package/dist/tools/jobs.d.ts +24 -0
  1044. package/dist/tools/jobs.js +69 -0
  1045. package/dist/tools/legacy-data.d.ts +34 -0
  1046. package/dist/tools/legacy-data.js +76 -0
  1047. package/dist/tools/legacy-keys.d.ts +51 -0
  1048. package/dist/tools/legacy-keys.js +115 -0
  1049. package/dist/tools/naming.d.ts +1 -5
  1050. package/dist/tools/naming.js +1 -7
  1051. package/dist/tools/oauth/flow-paths.d.ts +16 -0
  1052. package/dist/tools/oauth/flow-paths.js +38 -0
  1053. package/dist/tools/oauth/flow.d.ts +30 -30
  1054. package/dist/tools/oauth/flow.js +109 -81
  1055. package/dist/tools/oauth/oauth.controller.d.ts +3 -3
  1056. package/dist/tools/oauth/oauth.controller.js +12 -9
  1057. package/dist/tools/oauth/tokens.d.ts +45 -10
  1058. package/dist/tools/oauth/tokens.js +70 -24
  1059. package/dist/tools/org-tool-switches.d.ts +88 -0
  1060. package/dist/tools/org-tool-switches.js +201 -0
  1061. package/dist/tools/outputs.d.ts +13 -4
  1062. package/dist/tools/outputs.js +48 -4
  1063. package/dist/tools/pipeline.d.ts +108 -80
  1064. package/dist/tools/pipeline.js +396 -409
  1065. package/dist/tools/policy.d.ts +4 -17
  1066. package/dist/tools/policy.js +49 -35
  1067. package/dist/tools/questions.controller.d.ts +2 -2
  1068. package/dist/tools/questions.controller.js +9 -6
  1069. package/dist/tools/questions.service.d.ts +26 -25
  1070. package/dist/tools/questions.service.js +201 -142
  1071. package/dist/tools/registry.d.ts +215 -84
  1072. package/dist/tools/registry.js +382 -264
  1073. package/dist/tools/resources.d.ts +1 -1
  1074. package/dist/tools/resources.js +1 -1
  1075. package/dist/tools/specs.d.ts +5 -4
  1076. package/dist/tools/specs.js +3 -1
  1077. package/dist/tools/tools.module.d.ts +10 -0
  1078. package/dist/tools/tools.module.js +113 -0
  1079. package/dist/tools/validate.js +1 -1
  1080. package/dist/ui/call-extension.d.ts +16 -0
  1081. package/dist/ui/call-extension.js +38 -0
  1082. package/dist/ui/embed-token.d.ts +9 -5
  1083. package/dist/ui/embed-token.js +34 -6
  1084. package/dist/ui/ui-stream.d.ts +22 -17
  1085. package/dist/ui/ui-stream.js +72 -12
  1086. package/dist/ui/ui.module.d.ts +7 -0
  1087. package/dist/ui/ui.module.js +28 -0
  1088. package/dist/ui/views.controller.d.ts +14 -12
  1089. package/dist/ui/views.controller.js +32 -25
  1090. package/dist/ui/views.d.ts +10 -57
  1091. package/dist/ui/views.js +58 -46
  1092. package/package.json +15 -3
  1093. package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
  1094. package/src/migrations/0064_account_last_org.sql +7 -0
  1095. package/src/migrations/0065_conversation_archive.sql +8 -0
  1096. package/src/migrations/0066_extension_display_name.sql +4 -0
  1097. package/src/migrations/0067_agent_profiles.sql +20 -0
  1098. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  1099. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  1100. package/src/migrations/0070_background_tasks.sql +37 -0
  1101. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  1102. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  1103. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  1104. package/src/migrations/0074_subagent_tree.sql +50 -0
  1105. package/src/migrations/0075_plugin_scope.sql +61 -0
  1106. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  1107. package/src/migrations/0077_scope_requests.sql +52 -0
  1108. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  1109. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  1110. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  1111. package/src/migrations/0081_platform_components.sql +129 -0
  1112. package/src/migrations/0082_platform_migration.sql +33 -0
  1113. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  1114. package/src/migrations/0084_org_owned_items.sql +85 -0
  1115. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  1116. package/src/migrations/0086_org_layering.sql +30 -0
  1117. package/src/migrations/0087_approval_summary.sql +6 -0
  1118. package/src/migrations/0088_environments.sql +80 -0
  1119. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  1120. package/src/migrations/0090_initial_passwords.sql +27 -0
  1121. package/src/migrations/0091_account_time_zone.sql +4 -0
  1122. package/src/migrations/0092_tools_default_on.sql +27 -0
  1123. package/src/migrations/0093_connected_environments.sql +37 -0
  1124. package/src/migrations/0094_environment_paths_idx.sql +7 -0
  1125. package/src/migrations/0095_environment_files_resets.sql +5 -0
  1126. package/src/migrations/0096_environment_demoted_default.sql +18 -0
  1127. package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
  1128. package/src/migrations/0098_single_provider_running_first.sql +41 -0
  1129. package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
  1130. package/src/migrations/0100_catalog_files.sql +13 -0
  1131. package/src/migrations/0101_marketplace_icons.sql +32 -0
  1132. package/dist/catalog/upgrade-targets.d.ts +0 -59
  1133. package/dist/catalog/upgrade-targets.js +0 -90
  1134. package/dist/conversations/sandbox-status.d.ts +0 -21
  1135. package/dist/conversations/sandbox-status.js +0 -24
  1136. package/dist/extensions/org-config.controller.d.ts +0 -24
  1137. package/dist/extensions/org-config.controller.js +0 -59
  1138. package/dist/http/gateway.module.js +0 -13
  1139. package/dist/http/health.controller.d.ts +0 -26
  1140. package/dist/http/health.controller.js +0 -79
  1141. package/dist/http/tokens.d.ts +0 -131
  1142. package/dist/http/tokens.js +0 -131
  1143. package/dist/http/zod.pipe.d.ts +0 -8
  1144. package/dist/http/zod.pipe.js +0 -14
  1145. package/dist/identity/enterprise-admin.d.ts +0 -14
  1146. package/dist/identity/enterprise-admin.js +0 -27
  1147. package/dist/identity/rate-limit.d.ts +0 -55
  1148. package/dist/identity/rate-limit.js +0 -121
  1149. package/dist/sandbox/lifecycle.d.ts +0 -21
  1150. package/dist/sandbox/lifecycle.js +0 -68
  1151. package/dist/tools/builtins/sandbox/names.d.ts +0 -7
  1152. package/dist/tools/builtins/sandbox/names.js +0 -20
@@ -1,422 +1,531 @@
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 { randomUUID } from "node:crypto";
11
+ import { Inject, Injectable } from "@nestjs/common";
2
12
  import { sql } from "kysely";
3
13
  import { ApiError } from "../errors.js";
4
14
  import { audit } from "../identity/audit.js";
5
- import { lockEnterpriseAdminsAndAuthorize } from "../identity/enterprise-admin.js";
6
- import { lockOrgAndAuthorize } from "../orgs/org-lock.js";
15
+ import { readOrgMarketplaceBrowse } from "../identity/settings.js";
16
+ import { SuperAdminLock } from "../identity/super-admin.js";
17
+ import { KernelConfigService } from "../infra/config/kernel-config.service.js";
18
+ import { KernelDb } from "../infra/database/kernel-db.js";
19
+ import { TransactionHost } from "../infra/database/transaction-host.js";
20
+ import { Transactional } from "../infra/database/transactional.decorator.js";
21
+ import { LockService } from "../infra/lock/lock.service.js";
22
+ import { WithLock } from "../infra/lock/with-lock.decorator.js";
23
+ import { OrgLock } from "../orgs/org-lock.js";
7
24
  import { roleAtLeast } from "../orgs/roles.js";
25
+ import { CatalogService } from "./catalog.service.js";
26
+ import { CatalogScopeService } from "./catalog-scope.service.js";
27
+ import { assertEntryNotDeprecated, loadMarketplaceEntry } from "./marketplaces.service.js";
28
+ import { OrgCatalogService } from "./org-catalog.service.js";
29
+ import { PluginImport } from "./plugin-import.js";
30
+ import { itemsSeenBy } from "./scope-state.js";
8
31
  /** 申请列表一次最多返回的条数。 */
9
32
  export const CATALOG_REQUESTS_LIST_MAX = 200;
10
33
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
11
34
  const requestNotFound = () => new ApiError("catalog.request_not_found", "Catalog request not found");
12
35
  const itemNotFound = () => new ApiError("catalog.item_not_found", "Catalog item not found");
13
- const itemDisabled = () => new ApiError("catalog.item_disabled", "This catalog item is disabled by the enterprise admin and cannot be newly installed");
14
- /** 在调用方事务里读条目的策略(FOR SHARE:与企业管理员改策略 / 删除互斥)。不存在或已删除 → undefined。 */
15
- async function lockItem(t, itemId) {
16
- if (!UUID_RE.test(itemId))
17
- return undefined;
18
- return t
19
- .selectFrom("catalog_items")
20
- .select(["id", "name", "policy", "deleted_at"])
21
- .where("id", "=", itemId)
22
- .forShare()
23
- .executeTakeFirst();
24
- }
25
- async function hasGrant(db, orgId, itemId) {
26
- const g = await db
27
- .selectFrom("catalog_org_grants")
28
- .select("item_id")
29
- .where("item_id", "=", itemId)
30
- .where("org_id", "=", orgId)
31
- .executeTakeFirst();
32
- return g !== undefined;
33
- }
36
+ const itemDisabled = () => new ApiError("catalog.item_disabled", "This catalog item is disabled by the super admin and cannot be requested");
37
+ const alreadyDecided = () => new ApiError("catalog.request_decided", "This request has already been decided");
38
+ const pendingExists = () => new ApiError("catalog.request_pending", "This organization already has a pending request of this kind for it");
39
+ /** A unique violation (the partial index of pending requests). */
40
+ const isUniqueViolation = (e) => typeof e === "object" && e !== null && e.code === "23505";
41
+ /** The deployment-level kinds (decided by the super admin). */
42
+ const DEPLOYMENT_KINDS = ["access", "import"];
43
+ /** The org-level kinds (decided by the org admins). */
44
+ const ORG_KINDS = ["enable", "connector_setup"];
34
45
  /**
35
- * Before an org creates a component from the catalog (enabling an extension, creating a connector
36
- * from a template, importing a skill), re-checks the item policy in the caller's transaction (C22):
37
- * deleted or disabled -> `catalog.item_disabled`; needs_approval without an enterprise admin grant
38
- * for this org -> `catalog.approval_required`; allow or granted -> passes. A dependency's
39
- * components pass `approvedBy`, the item the org is installing (spec §10: approval follows the
40
- * installed plugin only): the dependency's own item must still be live and not disabled, and the
41
- * approval is judged by `approvedBy`.
46
+ * Catalog requests under plugin scope (spec §5.1). Three kinds, one pending request per (org,
47
+ * kind, item or entry) (partial unique indexes; org-side writes run inside the org row lock):
48
+ * - `enable`: a member asks the org admins to switch on an item that is off in the org (an
49
+ * `optional` item); an org admin approving it switches the item on, as that admin;
50
+ * - `access`: an org admin asks the super admin for a `named` item shown to orgs outside its
51
+ * list; approving adds the org to the list (`CatalogScopeService.addOrg`), the scope sync then
52
+ * installs it;
53
+ * - `import`: an org admin asks for a marketplace entry not in the catalog (deployment setting
54
+ * `orgMarketplaceBrowse`); approving prepares the import and returns its staging, the request
55
+ * resolves when the super admin confirms it (scope default `named` = the requesting org);
56
+ * - `connector_setup` (ruling P4-7): one per agent (`agent_id`, `pending_keys`), asking the org
57
+ * admins to set up an agent's pending connectors; written by the agents module
58
+ * (`PendingConnectorRequests`), closed by binding (`approved`) or the agent's deletion
59
+ * (`cancelled`); here it is listed and rejected.
60
+ * A rejection stores an optional reason. Decided requests show in the requester's inbox until
61
+ * dismissed. No in-process state.
42
62
  */
43
- export async function assertItemInstallable(t, orgId, itemId, approvedBy = itemId) {
44
- if (approvedBy !== itemId) {
45
- const own = await lockItem(t, itemId);
46
- if (!own || own.deleted_at !== null || own.policy === "disabled")
47
- throw itemDisabled();
63
+ let CatalogRequestsService = class CatalogRequestsService {
64
+ kdb;
65
+ orgLock;
66
+ adminLock;
67
+ orgCatalog;
68
+ scope;
69
+ catalog;
70
+ config;
71
+ pluginImport;
72
+ txHost;
73
+ lockService;
74
+ constructor(kdb,
75
+ /** The org row and super admin locks: both join the caller's transaction. */
76
+ orgLock, adminLock, orgCatalog, scope, catalog, config, pluginImport, txHost,
77
+ /** Serializes the approvals of one `import` request (`@WithLock`). */
78
+ lockService) {
79
+ this.kdb = kdb;
80
+ this.orgLock = orgLock;
81
+ this.adminLock = adminLock;
82
+ this.orgCatalog = orgCatalog;
83
+ this.scope = scope;
84
+ this.catalog = catalog;
85
+ this.config = config;
86
+ this.pluginImport = pluginImport;
87
+ this.txHost = txHost;
88
+ this.lockService = lockService;
48
89
  }
49
- const item = await lockItem(t, approvedBy);
50
- if (!item || item.deleted_at !== null || item.policy === "disabled")
51
- throw itemDisabled();
52
- if (item.policy === "needs_approval" && !(await hasGrant(t, orgId, approvedBy))) {
53
- throw new ApiError("catalog.approval_required", "This catalog item needs enterprise admin approval before this organization can install it");
90
+ /** The kernel-schema handle of the current context (the transaction, else the pool). */
91
+ get db() {
92
+ return this.kdb.db;
54
93
  }
55
- }
56
- /**
57
- * The extensions among `plugins` whose own catalog item (the non-deleted item with the same name) is
58
- * disabled (FOR SHARE: exclusive with policy changes). A disabled item is a master switch: no path
59
- * (direct enabling, its item, another plugin) can newly enable its extension (Ruling M-5).
60
- */
61
- export async function disabledPluginItems(db, plugins) {
62
- if (plugins.length === 0)
63
- return [];
64
- const rows = await db
65
- .selectFrom("catalog_items")
66
- .select("name")
67
- .where("name", "in", [...plugins])
68
- .where("policy", "=", "disabled")
69
- .where("deleted_at", "is", null)
70
- .orderBy("name")
71
- .forShare()
72
- .execute();
73
- return [...new Set(rows.map((r) => r.name))];
74
- }
75
- /**
76
- * Throws `catalog.item_disabled` when a plugin's own catalog item is disabled (the message names
77
- * the plugin).
78
- */
79
- export function pluginItemDisabled(names) {
80
- return new ApiError("catalog.item_disabled", `The enterprise admin disabled the catalog item of extension ${names.join(", ")}; it cannot be newly enabled, not even through a plugin that bundles it`);
81
- }
82
- /**
83
- * When an org enables an extension directly (not by installing from an item, e.g.
84
- * `PUT /orgs/:orgId/extensions/:extension`), it is judged by every catalog item that brought it into the
85
- * deployment (`extension_catalog_sources`), and **the strictest wins**: any source disabled ->
86
- * `catalog.item_disabled`; otherwise any source needs_approval without a grant of that item to the
87
- * org -> `catalog.approval_required`; all allow / granted -> passes. Deleted items no longer count
88
- * as sources (an enterprise admin deleting an item withdraws its constraint). No source (not
89
- * installed through the catalog) -> not bound by catalog policy.
90
- */
91
- export async function assertPluginSourcesInstallable(t, orgId, plugin) {
92
- const rows = await t
93
- .selectFrom("extension_catalog_sources as s")
94
- .innerJoin("catalog_items as i", "i.id", "s.item_id")
95
- .select(["i.id", "i.policy"])
96
- .where("s.plugin", "=", plugin)
97
- .where("i.deleted_at", "is", null)
98
- .orderBy("i.id")
99
- .forShare("i")
100
- .execute();
101
- if (rows.some((r) => r.policy === "disabled"))
102
- throw itemDisabled();
103
- for (const r of rows) {
104
- if (r.policy === "needs_approval" && !(await hasGrant(t, orgId, r.id))) {
105
- throw new ApiError("catalog.approval_required", "A catalog item that brought this extension in needs enterprise admin approval before this organization can enable it");
94
+ /**
95
+ * A request for a catalog item (`POST /orgs/:orgId/catalog/:itemId/requests`): `enable`
96
+ * (`catalog.request`, members and up) or `access` (`catalog.decide`, org admins), checked first.
97
+ * The item as the org sees it: absent (missing, deleted, hidden, disabled for a member) ->
98
+ * `catalog.item_not_found`; disabled -> `catalog.item_disabled` for an org admin; its extension
99
+ * unable to run on the platform -> `catalog.request_invalid`; `access` needs
100
+ * `not_offered`, `enable` needs `off` (else `catalog.request_invalid`); a pending request of the
101
+ * kind -> `catalog.request_pending`. Audits `catalog.requested`.
102
+ */
103
+ async requestItem(orgId, actor, itemId, input, opts = {}) {
104
+ const action = input.kind === "access" ? "catalog.decide" : "catalog.request";
105
+ await this.authorize(orgId, actor, action);
106
+ if (!UUID_RE.test(itemId))
107
+ throw itemNotFound();
108
+ const [item] = await this.orgCatalog.list(orgId, actor, itemId);
109
+ if (!item)
110
+ throw itemNotFound();
111
+ if (item.state === "unavailable" && item.reason === "plugin_disabled")
112
+ throw itemDisabled();
113
+ if (item.state === "unavailable") {
114
+ throw new ApiError("catalog.request_invalid", `This plugin's extension cannot run on the platform now (${item.reason ?? "unavailable"}); only the super admin can fix that`);
106
115
  }
116
+ const want = input.kind === "access" ? "not_offered" : "off";
117
+ if (item.state !== want) {
118
+ throw new ApiError("catalog.request_invalid", input.kind === "access"
119
+ ? "This plugin is already offered to this organization"
120
+ : "This plugin is not off in this organization (or not one an org admin switches on)");
121
+ }
122
+ const id = await this.writeItemRequest(orgId, actor, item.name, itemId, input, opts);
123
+ return this.view(id);
107
124
  }
108
- }
109
- /**
110
- * Cancels catalog requests still pending in the caller's transaction (when the item or the org is
111
- * deleted), status `cancelled` (the decider is the actor). Each one audits
112
- * `catalog.request_cancelled` (with the reason). Returns how many were cancelled.
113
- */
114
- export async function cancelPendingRequests(t, where, actor, reason, opts = {}) {
115
- let q = t
116
- .updateTable("catalog_requests")
117
- .set({ status: "cancelled", decided_by: actor, decided_at: sql `now()` })
118
- .where("status", "=", "pending");
119
- q =
120
- "itemId" in where ? q.where("item_id", "=", where.itemId) : q.where("org_id", "=", where.orgId);
121
- const rows = await q.returning(["id", "org_id", "item_id", "stage"]).execute();
122
- for (const r of rows) {
123
- await audit(t, {
124
- actorAccountId: actor,
125
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
126
- orgId: r.org_id,
127
- action: "catalog.request_cancelled",
128
- target: r.id,
129
- detail: { itemId: r.item_id, stage: r.stage, reason },
130
- });
131
- }
132
- return rows.length;
133
- }
134
- /**
135
- * Catalog requests and approvals (C22 / F-AF). Two levels:
136
- * - a member request (stage `org`) goes to the org admins' inbox, an org admin (`catalog.decide`)
137
- * approves or rejects it; when the item is needs_approval without a grant for this org, approving
138
- * moves the request to stage `deployment` (still pending) for the enterprise admins to decide;
139
- * - an org admin installing a needs_approval item without a grant -> creates a stage `deployment`
140
- * request (or moves the existing pending one there);
141
- * - an enterprise admin approving a stage `deployment` request -> writes a grant
142
- * (`catalog_org_grants`, valid across versions), after which org admins can install.
143
- * One pending request per org and item (partial unique index; org-side writes all run inside the
144
- * org row lock, in order). No in-process state.
145
- */
146
- export class CatalogRequestsService {
147
- db;
148
- constructor(db) {
149
- this.db = db;
125
+ /** The role check alone, before any item error (a member cannot probe items by error codes). */
126
+ async authorize(orgId, actor, action) {
127
+ await this.orgLock.lockAndAuthorize(orgId, actor, action);
150
128
  }
151
- /**
152
- * A member request (`catalog.request`, re-checked inside the org row lock). Item missing /
153
- * deleted -> `catalog.item_not_found`; disabled -> org admins get `catalog.item_disabled`,
154
- * members get `catalog.item_not_found` (members do not see disabled items). An existing pending
155
- * request is returned as is (`created: false`), no new one. Audits `catalog.requested`.
156
- */
157
- async request(orgId, actor, itemId, input, opts = {}) {
158
- const r = await this.db.transaction().execute(async (t) => {
159
- const { role } = await lockOrgAndAuthorize(t, orgId, actor, "catalog.request");
160
- const item = await lockItem(t, itemId);
161
- if (!item || item.deleted_at !== null)
162
- throw itemNotFound();
163
- // 成员看不到 disabled 的条目(列表、详情、图标一致):同样答 not found,不暴露条目存在
164
- if (item.policy === "disabled") {
165
- throw roleAtLeast(role, "admin") ? itemDisabled() : itemNotFound();
166
- }
167
- const existing = await this.pendingRow(t, orgId, itemId);
168
- if (existing)
169
- return { id: existing.id, created: false };
170
- const id = randomUUID();
129
+ async writeItemRequest(orgId, actor, name, itemId, input, opts) {
130
+ const t = this.db;
131
+ await this.orgLock.lockAndAuthorize(orgId, actor, input.kind === "access" ? "catalog.decide" : "catalog.request");
132
+ const existing = await t
133
+ .selectFrom("catalog_requests")
134
+ .select("id")
135
+ .where("org_id", "=", orgId)
136
+ .where("item_id", "=", itemId)
137
+ .where("kind", "=", input.kind)
138
+ .where("status", "=", "pending")
139
+ .executeTakeFirst();
140
+ if (existing)
141
+ throw pendingExists();
142
+ const id = randomUUID();
143
+ try {
171
144
  await t
172
145
  .insertInto("catalog_requests")
173
146
  .values({
174
147
  id,
175
148
  org_id: orgId,
176
149
  item_id: itemId,
177
- version: input.version ?? null,
178
- stage: "org",
150
+ kind: input.kind,
151
+ // still written for the old NOT NULL / CHECK, never read
152
+ stage: input.kind === "enable" ? "org" : "deployment",
179
153
  requested_by: actor,
180
154
  note: input.note ?? "",
181
155
  })
182
156
  .execute();
183
- await audit(t, {
184
- actorAccountId: actor,
185
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
186
- orgId,
187
- action: "catalog.requested",
188
- target: id,
189
- detail: { itemId, name: item.name, stage: "org" },
190
- });
191
- return { id, created: true };
157
+ }
158
+ catch (e) {
159
+ if (isUniqueViolation(e))
160
+ throw pendingExists();
161
+ throw e;
162
+ }
163
+ await audit(t, {
164
+ actorAccountId: actor,
165
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
166
+ orgId,
167
+ action: "catalog.requested",
168
+ target: id,
169
+ detail: { itemId, name, kind: input.kind, ...opts.auditDetail },
192
170
  });
193
- return { request: await this.view(this.db, r.id), created: r.created };
171
+ return id;
172
+ }
173
+ /**
174
+ * An org admin asks for a marketplace entry to be imported (`POST /orgs/:orgId/
175
+ * marketplace-requests`, `catalog.decide`). The deployment setting `orgMarketplaceBrowse` off ->
176
+ * `catalog.marketplace_browse_disabled`; the marketplace or the entry / version missing ->
177
+ * `marketplace.not_found` / `marketplace.entry_not_found`; a deprecated version ->
178
+ * `marketplace.entry_deprecated`; a live item of that name ->
179
+ * `catalog.request_invalid` (ask for access instead) when the org can see or request that item
180
+ * (a hidden one is not revealed: the request is accepted); a pending request for the entry ->
181
+ * `catalog.request_pending`. Audits `catalog.requested`.
182
+ */
183
+ async requestImport(orgId, actor, input, opts = {}) {
184
+ const id = await this.writeImportRequest(orgId, actor, input, opts);
185
+ return this.view(id);
194
186
  }
195
- pendingRow(t, orgId, itemId) {
196
- return t
187
+ async writeImportRequest(orgId, actor, input, opts) {
188
+ const t = this.db;
189
+ await this.orgLock.lockAndAuthorize(orgId, actor, "catalog.decide");
190
+ if (!(await readOrgMarketplaceBrowse(t))) {
191
+ throw new ApiError("catalog.marketplace_browse_disabled", "Organizations cannot browse the marketplaces or request imports in this deployment");
192
+ }
193
+ const { entry } = await loadMarketplaceEntry(t, this.config.get(), input.marketplaceId, input.name, input.version);
194
+ assertEntryNotDeprecated(entry);
195
+ const live = await t
196
+ .selectFrom("catalog_items")
197
+ .select("id")
198
+ .where("name", "=", input.name)
199
+ .where("deleted_at", "is", null)
200
+ .executeTakeFirst();
201
+ // Only an item the org can see or request is named back to it; a hidden `named` item stays
202
+ // unknown and the request is accepted (approving it adds the org to that item's list)
203
+ if (live && (await itemsSeenBy(t, orgId, [live.id])).has(live.id)) {
204
+ throw new ApiError("catalog.request_invalid", `Plugin ${input.name} is already in the catalog; request access to it instead`);
205
+ }
206
+ const existing = await t
197
207
  .selectFrom("catalog_requests")
198
- .select(["id", "stage"])
208
+ .select("id")
199
209
  .where("org_id", "=", orgId)
200
- .where("item_id", "=", itemId)
210
+ .where("kind", "=", "import")
211
+ .where("marketplace_id", "=", input.marketplaceId)
212
+ .where("entry_name", "=", input.name)
201
213
  .where("status", "=", "pending")
202
214
  .executeTakeFirst();
203
- }
204
- /**
205
- * An org admin installing a needs_approval item without a grant: in the caller's transaction (the
206
- * caller has locked the org row and re-checked the role) creates a stage `deployment` request; an
207
- * existing pending request is moved to deployment (a member request goes to the enterprise admins
208
- * with it). Returns the request id. Audits `catalog.requested`.
209
- */
210
- async requestDeployment(t, orgId, actor, item, version, opts = {}) {
211
- const existing = await this.pendingRow(t, orgId, item.id);
212
- if (existing) {
213
- if (existing.stage === "org") {
214
- await t
215
- .updateTable("catalog_requests")
216
- .set({ stage: "deployment", org_decided_by: actor, org_decided_at: sql `now()` })
217
- .where("id", "=", existing.id)
218
- .execute();
219
- await audit(t, {
220
- actorAccountId: actor,
221
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
222
- orgId,
223
- action: "catalog.request_decided",
224
- target: existing.id,
225
- detail: { itemId: item.id, decision: "approve", stage: "org", escalated: true },
226
- });
227
- }
228
- return existing.id;
229
- }
215
+ if (existing)
216
+ throw pendingExists();
230
217
  const id = randomUUID();
231
- await t
232
- .insertInto("catalog_requests")
233
- .values({
234
- id,
235
- org_id: orgId,
236
- item_id: item.id,
237
- version,
238
- stage: "deployment",
239
- requested_by: actor,
240
- })
241
- .execute();
218
+ try {
219
+ await t
220
+ .insertInto("catalog_requests")
221
+ .values({
222
+ id,
223
+ org_id: orgId,
224
+ item_id: null,
225
+ kind: "import",
226
+ stage: "deployment",
227
+ marketplace_id: input.marketplaceId,
228
+ entry_name: input.name,
229
+ entry_version: input.version,
230
+ requested_by: actor,
231
+ note: input.note ?? "",
232
+ })
233
+ .execute();
234
+ }
235
+ catch (e) {
236
+ if (isUniqueViolation(e))
237
+ throw pendingExists();
238
+ throw e;
239
+ }
242
240
  await audit(t, {
243
241
  actorAccountId: actor,
244
242
  ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
245
243
  orgId,
246
244
  action: "catalog.requested",
247
245
  target: id,
248
- detail: { itemId: item.id, name: item.name, stage: "deployment" },
246
+ detail: {
247
+ kind: "import",
248
+ marketplaceId: input.marketplaceId,
249
+ name: input.name,
250
+ version: input.version,
251
+ ...opts.auditDetail,
252
+ },
249
253
  });
250
254
  return id;
251
255
  }
252
256
  /**
253
- * 安装成功后:本组织该条目仍 pending 的申请(成员申请 stage org,以及之前因 needs_approval 建的 stage deployment
254
- * 申请——条目之后改成 allow 再装的就不会一直挂着)标为 approved(安装者即决定人),收件箱与企业管理员列表随之清空。
255
- * 在调用方事务里执行。
257
+ * An org admin decides a member's `enable` or `connector_setup` request (`catalog.decide`). Not
258
+ * this org's request of those kinds -> `catalog.request_not_found`; decided ->
259
+ * `catalog.request_decided`. Approving an `enable` request switches the item on in the org as the
260
+ * deciding admin ({@link OrgCatalogService.setSwitch}: its errors, e.g. inputs the install
261
+ * needs, leave the request pending); the install itself resolves the request. A
262
+ * `connector_setup` request is approved only by binding its connectors (ruling P4-T6-6):
263
+ * approving it -> `catalog.request_invalid`. Rejecting stores the reason. Audits
264
+ * `catalog.request_decided`.
256
265
  */
257
- async resolveByInstall(t, orgId, itemId, actor, opts = {}) {
258
- const rows = await t
259
- .updateTable("catalog_requests")
260
- .set({ status: "approved", decided_by: actor, decided_at: sql `now()` })
266
+ async decideOrg(orgId, actor, requestId, decision, opts = {}) {
267
+ if (!UUID_RE.test(requestId))
268
+ throw requestNotFound();
269
+ if (decision.approve) {
270
+ const itemId = await this.pendingOrgRequest(orgId, actor, requestId);
271
+ await this.orgCatalog.setSwitch(orgId, actor, itemId, { enabled: true }, opts.actorTokenId);
272
+ }
273
+ await this.writeDecision(requestId, actor, decision, opts, { orgId });
274
+ return this.view(requestId);
275
+ }
276
+ /** The item of a pending `enable` request of the org (the decider re-checked). */
277
+ async pendingOrgRequest(orgId, actor, requestId) {
278
+ await this.orgLock.lockAndAuthorize(orgId, actor, "catalog.decide");
279
+ const row = await this.db
280
+ .selectFrom("catalog_requests")
281
+ .select(["item_id", "status", "kind"])
282
+ .where("id", "=", requestId)
261
283
  .where("org_id", "=", orgId)
262
- .where("item_id", "=", itemId)
263
- .where("status", "=", "pending")
264
- .returning(["id", "stage"])
265
- .execute();
266
- for (const r of rows) {
267
- await audit(t, {
268
- actorAccountId: actor,
269
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
270
- orgId,
271
- action: "catalog.request_decided",
272
- target: r.id,
273
- detail: { itemId, decision: "approve", stage: r.stage, installed: true },
274
- });
284
+ .where("kind", "in", [...ORG_KINDS])
285
+ .executeTakeFirst();
286
+ if (!row)
287
+ throw requestNotFound();
288
+ if (row.status !== "pending")
289
+ throw alreadyDecided();
290
+ if (row.kind === "connector_setup") {
291
+ throw new ApiError("catalog.request_invalid", "A connector setup request is resolved by binding the agent's connectors; reject it to refuse");
275
292
  }
293
+ if (row.item_id === null)
294
+ throw requestNotFound();
295
+ return row.item_id;
276
296
  }
277
297
  /**
278
- * An org admin decides a member request (`catalog.decide`, re-checked inside the org row lock;
279
- * the request row FOR UPDATE). Not this org's request -> `catalog.request_not_found`; already
280
- * decided or handed to the enterprise admins -> `catalog.request_decided`. On approval: item
281
- * deleted or disabled -> `catalog.item_disabled`; needs_approval without a grant -> moved to stage
282
- * deployment (still pending); otherwise approved. Audits `catalog.request_decided`.
298
+ * A super admin decides an `access` or `import` request (re-checked inside the super
299
+ * admin lock; the request row FOR UPDATE). Missing or an `enable` request ->
300
+ * `catalog.request_not_found`; decided -> `catalog.request_decided`. Approving `access`: the item
301
+ * deleted or disabled -> `catalog.item_disabled`, the org deleted -> not found; otherwise the org
302
+ * joins the item's `named` list. Approving `import` prepares the import of the entry and returns
303
+ * it; the request stays pending, linked to the staging, until that confirm commits (approving
304
+ * again prepares a new one). Audits `catalog.request_decided` (`catalog.request_import_prepared`
305
+ * for an import's approval).
283
306
  */
284
- async decideOrg(orgId, actor, requestId, decision, opts = {}) {
307
+ async decideDeployment(actor, requestId, decision, opts = {}) {
285
308
  if (!UUID_RE.test(requestId))
286
309
  throw requestNotFound();
287
- await this.db.transaction().execute(async (t) => {
288
- await lockOrgAndAuthorize(t, orgId, actor, "catalog.decide");
289
- const row = await t
290
- .selectFrom("catalog_requests")
291
- .select(["id", "item_id", "stage", "status"])
292
- .where("id", "=", requestId)
293
- .where("org_id", "=", orgId)
294
- .forUpdate()
295
- .executeTakeFirst();
296
- if (!row)
297
- throw requestNotFound();
298
- if (row.status !== "pending" || row.stage !== "org") {
299
- throw new ApiError("catalog.request_decided", row.status === "pending"
300
- ? "This request is waiting for the enterprise admin"
301
- : "This request has already been decided");
302
- }
303
- let escalated = false;
304
- if (decision === "approve") {
305
- const item = await lockItem(t, row.item_id);
306
- if (!item || item.deleted_at !== null || item.policy === "disabled")
307
- throw itemDisabled();
308
- escalated = item.policy === "needs_approval" && !(await hasGrant(t, orgId, row.item_id));
309
- }
310
- await t
311
- .updateTable("catalog_requests")
312
- .set(escalated
313
- ? { stage: "deployment", org_decided_by: actor, org_decided_at: sql `now()` }
314
- : {
315
- status: decision === "approve" ? "approved" : "rejected",
316
- decided_by: actor,
317
- decided_at: sql `now()`,
318
- })
319
- .where("id", "=", requestId)
320
- .execute();
321
- await audit(t, {
322
- actorAccountId: actor,
323
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
324
- orgId,
325
- action: "catalog.request_decided",
326
- target: requestId,
327
- detail: { itemId: row.item_id, decision, stage: "org", escalated },
310
+ const row = await this.pendingDeploymentRequest(actor, requestId);
311
+ if (decision.approve && row.kind === "import")
312
+ return this.approveImport(actor, requestId, opts);
313
+ await this.writeDecision(requestId, actor, decision, opts, { deployment: true });
314
+ return { request: await this.view(requestId) };
315
+ }
316
+ /**
317
+ * Approves an `import` request, one approval of a request at a time (across replicas): an item
318
+ * of the entry's name that holds the requested version already (one hidden from the org, which
319
+ * is why the request was accepted) -> the org joins its `named` list at once, nothing imported;
320
+ * a staging linked by an earlier approval and not expired -> that staging again; otherwise the
321
+ * import is prepared and linked. The confirm of a staging adds the org to an item that exists by
322
+ * then (`PluginImport.commit`).
323
+ */
324
+ async approveImport(actor, requestId, opts) {
325
+ const row = await this.pendingDeploymentRequest(actor, requestId);
326
+ if (row.marketplace_id === null || row.entry_name === null) {
327
+ throw new ApiError("catalog.request_invalid", "The marketplace of this request was deleted; reject it");
328
+ }
329
+ const existing = await this.db
330
+ .selectFrom("catalog_items as i")
331
+ .innerJoin("catalog_item_versions as v", "v.item_id", "i.id")
332
+ .select("i.id")
333
+ .where("i.name", "=", row.entry_name)
334
+ .where("i.deleted_at", "is", null)
335
+ .where("v.version", "=", row.entry_version ?? "")
336
+ .executeTakeFirst();
337
+ if (existing) {
338
+ await this.writeDecision(requestId, actor, { approve: true }, opts, {
339
+ deployment: true,
340
+ grantItem: existing.id,
328
341
  });
342
+ return { request: await this.view(requestId) };
343
+ }
344
+ if (row.staging_id !== null) {
345
+ const staged = await this.pluginImport.staged(row.staging_id).catch(() => undefined);
346
+ if (staged) {
347
+ return {
348
+ request: await this.view(requestId),
349
+ import: {
350
+ stagingId: staged.stagingId,
351
+ review: staged.review,
352
+ permissionsMismatch: staged.permissionsMismatch ?? null,
353
+ },
354
+ };
355
+ }
356
+ }
357
+ const prepared = await this.catalog.importFromMarketplace(actor, {
358
+ marketplaceId: row.marketplace_id,
359
+ name: row.entry_name,
360
+ ...(row.entry_version !== null && { version: row.entry_version }),
361
+ }, opts);
362
+ await this.linkStaging(actor, requestId, prepared.stagingId, opts);
363
+ return { request: await this.view(requestId), import: prepared };
364
+ }
365
+ /** A pending `access` / `import` request (the row locked; the super admin re-checked). */
366
+ async pendingDeploymentRequest(actor, requestId) {
367
+ await this.adminLock.lockAndAuthorize(actor);
368
+ const row = await this.db
369
+ .selectFrom("catalog_requests")
370
+ .select(["kind", "status", "marketplace_id", "entry_name", "entry_version", "staging_id"])
371
+ .where("id", "=", requestId)
372
+ .where("kind", "in", [...DEPLOYMENT_KINDS])
373
+ .forUpdate()
374
+ .executeTakeFirst();
375
+ if (!row)
376
+ throw requestNotFound();
377
+ if (row.status !== "pending")
378
+ throw alreadyDecided();
379
+ return row;
380
+ }
381
+ /** Links a still pending `import` request to its prepared staging. */
382
+ async linkStaging(actor, requestId, stagingId, opts) {
383
+ await this.adminLock.lockAndAuthorize(actor);
384
+ const row = await this.db
385
+ .selectFrom("catalog_requests")
386
+ .select(["org_id", "status", "entry_name"])
387
+ .where("id", "=", requestId)
388
+ .forUpdate()
389
+ .executeTakeFirstOrThrow();
390
+ if (row.status !== "pending")
391
+ throw alreadyDecided();
392
+ await this.db
393
+ .updateTable("catalog_requests")
394
+ .set({ staging_id: stagingId })
395
+ .where("id", "=", requestId)
396
+ .execute();
397
+ await audit(this.db, {
398
+ actorAccountId: actor,
399
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
400
+ orgId: row.org_id,
401
+ action: "catalog.request_import_prepared",
402
+ target: requestId,
403
+ detail: { name: row.entry_name, stagingId },
329
404
  });
330
- return this.view(this.db, requestId);
331
405
  }
332
406
  /**
333
- * An enterprise admin decides a stage deployment request (re-checked inside the enterprise admin
334
- * lock; the request row FOR UPDATE). Missing or still at the org stage ->
335
- * `catalog.request_not_found`; already decided -> `catalog.request_decided`; on approval, item
336
- * deleted or disabled -> `catalog.item_disabled`, the request's org deleted ->
337
- * `catalog.request_not_found`. Approval writes a grant to `catalog_org_grants`. Audits
338
- * `catalog.request_decided` (with orgId).
407
+ * Writes a decision (the request row FOR UPDATE): org side (`orgId`: the org admin re-checked,
408
+ * `enable` only) or deployment side (the super admin re-checked, `access` / `import`). An
409
+ * approval of an `enable` request may find it approved already by the install it triggered.
339
410
  */
340
- async decideDeployment(actor, requestId, decision, opts = {}) {
341
- if (!UUID_RE.test(requestId))
411
+ async writeDecision(requestId, actor, decision, opts, side) {
412
+ const t = this.db;
413
+ if ("orgId" in side)
414
+ await this.orgLock.lockAndAuthorize(side.orgId, actor, "catalog.decide");
415
+ else
416
+ await this.adminLock.lockAndAuthorize(actor);
417
+ let q = t
418
+ .selectFrom("catalog_requests")
419
+ .select(["id", "org_id", "item_id", "kind", "status", "decided_by"])
420
+ .where("id", "=", requestId);
421
+ q =
422
+ "orgId" in side
423
+ ? q.where("org_id", "=", side.orgId).where("kind", "in", [...ORG_KINDS])
424
+ : q.where("kind", "in", [...DEPLOYMENT_KINDS]);
425
+ const row = await q.forUpdate().executeTakeFirst();
426
+ if (!row)
342
427
  throw requestNotFound();
343
- await this.db.transaction().execute(async (t) => {
344
- await lockEnterpriseAdminsAndAuthorize(t, actor);
345
- const row = await t
346
- .selectFrom("catalog_requests")
347
- .select(["id", "org_id", "item_id", "stage", "status"])
348
- .where("id", "=", requestId)
349
- .forUpdate()
428
+ if (row.status !== "pending") {
429
+ // The switch-on of this approval already resolved it (the install approves pending requests)
430
+ if (decision.approve && row.kind === "enable" && row.status === "approved")
431
+ return;
432
+ throw alreadyDecided();
433
+ }
434
+ if (decision.approve && row.kind === "access" && row.item_id !== null) {
435
+ const item = await t
436
+ .selectFrom("catalog_items")
437
+ .select(["deleted_at", "disabled"])
438
+ .where("id", "=", row.item_id)
350
439
  .executeTakeFirst();
351
- if (row?.stage !== "deployment")
440
+ if (!item || item.deleted_at !== null || item.disabled)
441
+ throw itemDisabled();
442
+ const org = await t
443
+ .selectFrom("orgs")
444
+ .select("deleted_at")
445
+ .where("id", "=", row.org_id)
446
+ .executeTakeFirst();
447
+ if (!org || org.deleted_at !== null)
352
448
  throw requestNotFound();
353
- if (row.status !== "pending") {
354
- throw new ApiError("catalog.request_decided", "This request has already been decided");
355
- }
356
- if (decision === "approve") {
357
- const item = await lockItem(t, row.item_id);
358
- if (!item || item.deleted_at !== null || item.policy === "disabled")
359
- throw itemDisabled();
360
- const org = await t
361
- .selectFrom("orgs")
362
- .select("deleted_at")
363
- .where("id", "=", row.org_id)
364
- .executeTakeFirst();
365
- if (!org || org.deleted_at !== null)
366
- throw requestNotFound();
367
- await t
368
- .insertInto("catalog_org_grants")
369
- .values({ item_id: row.item_id, org_id: row.org_id, granted_by: actor })
370
- .onConflict((oc) => oc.columns(["item_id", "org_id"]).doNothing())
371
- .execute();
372
- }
373
- await t
374
- .updateTable("catalog_requests")
375
- .set({
376
- status: decision === "approve" ? "approved" : "rejected",
377
- decided_by: actor,
378
- decided_at: sql `now()`,
379
- })
380
- .where("id", "=", requestId)
381
- .execute();
382
- await audit(t, {
383
- actorAccountId: actor,
384
- ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
385
- orgId: row.org_id,
386
- action: "catalog.request_decided",
387
- target: requestId,
388
- detail: { itemId: row.item_id, decision, stage: "deployment" },
389
- });
449
+ await this.scope.addOrg(actor, row.item_id, row.org_id, { ...opts, requestId });
450
+ }
451
+ // An `import` request whose entry is in the catalog already: the org joins that item's list
452
+ const grantItem = "grantItem" in side ? side.grantItem : undefined;
453
+ if (decision.approve && row.kind === "import" && grantItem !== undefined) {
454
+ await this.scope.addOrg(actor, grantItem, row.org_id, { ...opts, requestId });
455
+ }
456
+ await t
457
+ .updateTable("catalog_requests")
458
+ .set({
459
+ status: decision.approve ? "approved" : "rejected",
460
+ reason: decision.approve ? null : (decision.reason ?? null),
461
+ ...(grantItem !== undefined && { item_id: grantItem }),
462
+ decided_by: actor,
463
+ decided_at: sql `now()`,
464
+ })
465
+ .where("id", "=", requestId)
466
+ .execute();
467
+ await audit(t, {
468
+ actorAccountId: actor,
469
+ ...(opts.actorTokenId !== undefined && { actorTokenId: opts.actorTokenId }),
470
+ orgId: row.org_id,
471
+ action: "catalog.request_decided",
472
+ target: requestId,
473
+ detail: {
474
+ itemId: row.item_id,
475
+ kind: row.kind,
476
+ decision: decision.approve ? "approve" : "reject",
477
+ ...(!decision.approve && decision.reason !== undefined && { reason: decision.reason }),
478
+ },
390
479
  });
391
- return this.view(this.db, requestId);
392
480
  }
393
- /** 企业管理员的申请列表(stage deployment;`status` 缺省 pending),新的在前。 */
481
+ /**
482
+ * The requester dismisses a decided request from the inbox (`POST /orgs/:orgId/
483
+ * catalog-requests/:id/dismiss`). Not the requester's decided request in this org ->
484
+ * `catalog.request_not_found`.
485
+ */
486
+ async dismiss(orgId, accountId, requestId) {
487
+ if (!UUID_RE.test(requestId))
488
+ throw requestNotFound();
489
+ const r = await this.db
490
+ .updateTable("catalog_requests")
491
+ .set({ dismissed_at: sql `now()` })
492
+ .where("id", "=", requestId)
493
+ .where("org_id", "=", orgId)
494
+ .where("requested_by", "=", accountId)
495
+ .where("status", "in", ["approved", "rejected"])
496
+ .where("dismissed_at", "is", null)
497
+ .executeTakeFirst();
498
+ if (r.numUpdatedRows === 0n)
499
+ throw requestNotFound();
500
+ }
501
+ /** 超级管理员的申请列表(`access` / `import`;`status` 缺省 pending),新的在前。 */
394
502
  async listDeployment(q = {}) {
395
- const rows = await this.baseQuery(this.db)
396
- .where("r.stage", "=", "deployment")
503
+ const rows = await this.baseQuery()
504
+ .where("r.kind", "in", [...DEPLOYMENT_KINDS])
397
505
  .where("r.status", "=", q.status ?? "pending")
398
506
  .where("o.deleted_at", "is", null)
399
507
  .orderBy("r.created_at", "desc")
400
508
  .orderBy("r.id")
401
509
  .limit(CATALOG_REQUESTS_LIST_MAX)
402
510
  .execute();
403
- return rows.map(toView);
511
+ return this.toViews(rows);
404
512
  }
405
- /** 待企业管理员处理的申请数(后台概览)。 */
513
+ /** 待超级管理员处理的申请数(后台概览)。 */
406
514
  async countPendingDeployment() {
407
515
  const r = await this.db
408
516
  .selectFrom("catalog_requests as r")
409
517
  .innerJoin("orgs as o", "o.id", "r.org_id")
410
518
  .select(sql `count(*)`.as("n"))
411
- .where("r.stage", "=", "deployment")
519
+ .where("r.kind", "in", [...DEPLOYMENT_KINDS])
412
520
  .where("r.status", "=", "pending")
413
521
  .where("o.deleted_at", "is", null)
414
522
  .executeTakeFirstOrThrow();
415
523
  return Number(r.n);
416
524
  }
417
525
  /**
418
- * 收件箱:当前用户是本组织管理员(实时读角色)时,返回待他处理的成员申请(stage org、pending),新的在前;
419
- * 否则为空。
526
+ * The inbox: when the account is an org admin of the org (the role read live), the members'
527
+ * pending `enable` requests and the pending `connector_setup` requests, newest first; otherwise
528
+ * none.
420
529
  */
421
530
  async listForOrgAdmin(orgId, accountId) {
422
531
  const m = await this.db
@@ -427,78 +536,212 @@ export class CatalogRequestsService {
427
536
  .executeTakeFirst();
428
537
  if (!m || !roleAtLeast(m.role, "admin"))
429
538
  return [];
430
- const rows = await this.baseQuery(this.db)
539
+ const rows = await this.baseQuery()
431
540
  .where("r.org_id", "=", orgId)
432
- .where("r.stage", "=", "org")
541
+ .where("r.kind", "in", [...ORG_KINDS])
433
542
  .where("r.status", "=", "pending")
434
543
  .orderBy("r.created_at", "desc")
435
544
  .orderBy("r.id")
436
545
  .limit(CATALOG_REQUESTS_LIST_MAX)
437
546
  .execute();
438
- return rows.map(toView);
547
+ // A request on an item the org can no longer see (its scope hid it since) is left out, so
548
+ // nothing reveals the item's name to the org; a setup request of a deleted agent too
549
+ const ids = [...new Set(rows.flatMap((r) => (r.item_id !== null ? [r.item_id] : [])))];
550
+ const seen = await itemsSeenBy(this.db, orgId, ids);
551
+ return this.toViews(rows.filter((r) => r.kind === "connector_setup"
552
+ ? r.agent_id !== null && r.agent_deleted_at === null
553
+ : r.item_id !== null && seen.has(r.item_id)));
439
554
  }
440
- /** 本组织各条目最新的一条申请(组织目录列表用)。 */
441
- async latestByItem(orgId) {
442
- const rows = await this.db
443
- .selectFrom("catalog_requests")
444
- .select(["id", "item_id", "stage", "status", "created_at"])
445
- .where("org_id", "=", orgId)
446
- .orderBy("created_at", "asc")
555
+ /** The inbox: the account's decided requests in the org it has not dismissed, newest first. */
556
+ async listDecidedForRequester(orgId, accountId) {
557
+ const rows = await this.baseQuery()
558
+ .where("r.org_id", "=", orgId)
559
+ .where("r.requested_by", "=", accountId)
560
+ .where("r.status", "in", ["approved", "rejected"])
561
+ .where("r.dismissed_at", "is", null)
562
+ .orderBy("r.decided_at", "desc")
563
+ .orderBy("r.id")
564
+ .limit(CATALOG_REQUESTS_LIST_MAX)
447
565
  .execute();
448
- const out = new Map();
449
- for (const r of rows)
450
- out.set(r.item_id, { id: r.id, stage: r.stage, status: r.status });
451
- return out;
566
+ return this.toViews(rows);
452
567
  }
453
- async view(db, id) {
454
- const row = await this.baseQuery(db).where("r.id", "=", id).executeTakeFirst();
568
+ /**
569
+ * The account's own requests in the org, pending and decided (dismissed ones too), newest first;
570
+ * cancelled ones are left out (the Platform tool's `requests.list-mine`).
571
+ */
572
+ async listForRequester(orgId, accountId) {
573
+ const rows = await this.baseQuery()
574
+ .where("r.org_id", "=", orgId)
575
+ .where("r.requested_by", "=", accountId)
576
+ .where("r.status", "in", ["pending", "approved", "rejected"])
577
+ .orderBy("r.created_at", "desc")
578
+ .orderBy("r.id")
579
+ .limit(CATALOG_REQUESTS_LIST_MAX)
580
+ .execute();
581
+ return this.toViews(rows);
582
+ }
583
+ async view(id) {
584
+ const row = await this.baseQuery().where("r.id", "=", id).executeTakeFirst();
455
585
  if (!row)
456
586
  throw requestNotFound();
457
- return toView(row);
587
+ return (await this.toViews([row]))[0];
458
588
  }
459
- baseQuery(db) {
460
- return db
589
+ /** The views of `rows`, with the display names of the connector templates setup requests name. */
590
+ async toViews(rows) {
591
+ const ids = new Set();
592
+ for (const r of rows) {
593
+ if (r.kind !== "connector_setup")
594
+ continue;
595
+ const def = r.agent_definition;
596
+ for (const c of def?.pendingConnectors ?? []) {
597
+ if ("template" in c.source && UUID_RE.test(c.source.template))
598
+ ids.add(c.source.template);
599
+ }
600
+ }
601
+ const names = new Map();
602
+ if (ids.size > 0) {
603
+ const found = await this.db
604
+ .selectFrom("platform_connector_templates")
605
+ .select(["id", "file"])
606
+ .where("id", "in", [...ids])
607
+ .execute();
608
+ for (const t of found) {
609
+ const dn = t.file?.displayName;
610
+ names.set(t.id, dn ?? null);
611
+ }
612
+ }
613
+ return rows.map((r) => toView(r, names));
614
+ }
615
+ baseQuery() {
616
+ return (this.db
461
617
  .selectFrom("catalog_requests as r")
462
- .innerJoin("catalog_items as i", "i.id", "r.item_id")
618
+ .leftJoin("catalog_items as i", "i.id", "r.item_id")
463
619
  .innerJoin("orgs as o", "o.id", "r.org_id")
464
620
  .leftJoin("accounts as a", "a.id", "r.requested_by")
621
+ // a connector_setup request's agent and its current version (name, pending connectors)
622
+ .leftJoin("agents as ag", "ag.id", "r.agent_id")
623
+ .leftJoin("agent_versions as av", (j) => j.onRef("av.agent_id", "=", "ag.id").onRef("av.version", "=", "ag.current_version"))
465
624
  .select([
625
+ "r.agent_id",
626
+ "r.pending_keys",
627
+ "ag.deleted_at as agent_deleted_at",
628
+ "av.definition as agent_definition",
466
629
  "r.id",
467
630
  "r.org_id",
468
631
  "o.name as org_name",
632
+ "r.kind",
469
633
  "r.item_id",
470
634
  "i.name",
471
635
  "i.display_name",
472
- "r.version",
473
- "r.stage",
636
+ "r.marketplace_id",
637
+ "r.entry_name",
638
+ "r.entry_version",
474
639
  "r.status",
475
640
  "r.note",
641
+ "r.reason",
476
642
  "r.requested_by",
477
643
  "a.display_name as requested_by_name",
478
644
  "r.decided_by",
479
645
  "r.decided_at",
480
- "r.org_decided_by",
481
- "r.org_decided_at",
646
+ "r.staging_id",
482
647
  "r.created_at",
483
- ]);
648
+ ]));
484
649
  }
650
+ };
651
+ __decorate([
652
+ Transactional()
653
+ ], CatalogRequestsService.prototype, "authorize", null);
654
+ __decorate([
655
+ Transactional()
656
+ ], CatalogRequestsService.prototype, "writeItemRequest", null);
657
+ __decorate([
658
+ Transactional()
659
+ ], CatalogRequestsService.prototype, "writeImportRequest", null);
660
+ __decorate([
661
+ Transactional()
662
+ ], CatalogRequestsService.prototype, "pendingOrgRequest", null);
663
+ __decorate([
664
+ WithLock({ key: "catalog-request-#{1}", ttl: 60_000, waitTimeout: 180_000 })
665
+ ], CatalogRequestsService.prototype, "approveImport", null);
666
+ __decorate([
667
+ Transactional()
668
+ ], CatalogRequestsService.prototype, "pendingDeploymentRequest", null);
669
+ __decorate([
670
+ Transactional()
671
+ ], CatalogRequestsService.prototype, "linkStaging", null);
672
+ __decorate([
673
+ Transactional()
674
+ ], CatalogRequestsService.prototype, "writeDecision", null);
675
+ CatalogRequestsService = __decorate([
676
+ Injectable(),
677
+ __param(0, Inject(KernelDb)),
678
+ __param(1, Inject(OrgLock)),
679
+ __param(2, Inject(SuperAdminLock)),
680
+ __param(3, Inject(OrgCatalogService)),
681
+ __param(4, Inject(CatalogScopeService)),
682
+ __param(5, Inject(CatalogService)),
683
+ __param(6, Inject(KernelConfigService)),
684
+ __param(7, Inject(PluginImport)),
685
+ __param(8, Inject(TransactionHost)),
686
+ __param(9, Inject(LockService))
687
+ ], CatalogRequestsService);
688
+ export { CatalogRequestsService };
689
+ /** The view fields of a `connector_setup` request (ruling P4-T6-5); null for other kinds. */
690
+ function setupFields(r, templateNames) {
691
+ if (r.kind !== "connector_setup" || r.agent_id === null)
692
+ return { agent: null, connectors: null };
693
+ const def = (r.agent_definition ?? null);
694
+ const pending = new Map((def?.pendingConnectors ?? []).map((c) => [c.key, c]));
695
+ const connectors = [];
696
+ for (const key of r.pending_keys ?? []) {
697
+ const c = pending.get(key);
698
+ if (c === undefined)
699
+ continue;
700
+ const src = c.source;
701
+ connectors.push({
702
+ key,
703
+ label: c.label,
704
+ kind: "template" in src ? "template" : "needs",
705
+ source: "template" in src
706
+ ? { template: { id: src.template, displayName: templateNames.get(src.template) ?? null } }
707
+ : {
708
+ needs: {
709
+ protocol: src.needs.protocol,
710
+ endpoint: src.needs.endpoint,
711
+ tools: [...src.needs.tools],
712
+ },
713
+ },
714
+ tools: c.tools !== undefined && c.tools.length > 0 ? [...c.tools] : null,
715
+ // jsonb keeps no key order: sorted
716
+ policies: Object.keys(c.policies ?? {}).sort(),
717
+ });
718
+ }
719
+ return {
720
+ agent: { id: r.agent_id, name: def?.name ?? "", deleted: r.agent_deleted_at !== null },
721
+ connectors,
722
+ };
485
723
  }
486
- function toView(r) {
724
+ function toView(r, templateNames) {
487
725
  return {
488
726
  id: r.id,
489
727
  orgId: r.org_id,
490
728
  orgName: r.org_name,
491
- item: { id: r.item_id, name: r.name, displayName: r.display_name },
492
- version: r.version,
493
- stage: r.stage,
729
+ kind: r.kind,
730
+ item: r.item_id !== null && r.name !== null
731
+ ? { id: r.item_id, name: r.name, displayName: r.display_name }
732
+ : null,
733
+ entry: r.entry_name !== null
734
+ ? { marketplaceId: r.marketplace_id, name: r.entry_name, version: r.entry_version }
735
+ : null,
736
+ ...setupFields(r, templateNames),
494
737
  status: r.status,
495
738
  note: r.note,
739
+ reason: r.reason,
496
740
  requestedBy: r.requested_by,
497
741
  requestedByName: r.requested_by_name,
498
742
  decidedBy: r.decided_by,
499
743
  decidedAt: r.decided_at?.toISOString() ?? null,
500
- orgDecidedBy: r.org_decided_by,
501
- orgDecidedAt: r.org_decided_at?.toISOString() ?? null,
744
+ stagingId: r.status === "pending" ? r.staging_id : null,
502
745
  createdAt: r.created_at.toISOString(),
503
746
  };
504
747
  }