@capybara-hq/kernel 0.1.0-rc.4 → 0.1.0-rc.6

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 (534) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +51 -14
  3. package/dist/admin/admin.controller.js +60 -19
  4. package/dist/admin/extensions.controller.d.ts +16 -2
  5. package/dist/admin/extensions.controller.js +26 -6
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +16 -0
  13. package/dist/agents/agent-lookup.js +11 -0
  14. package/dist/agents/agents.controller.d.ts +76 -1
  15. package/dist/agents/agents.controller.js +90 -11
  16. package/dist/agents/agents.module.d.ts +4 -1
  17. package/dist/agents/agents.module.js +32 -6
  18. package/dist/agents/agents.service.d.ts +54 -23
  19. package/dist/agents/agents.service.js +180 -76
  20. package/dist/agents/definition.d.ts +49 -0
  21. package/dist/agents/definition.js +45 -0
  22. package/dist/agents/from-template.d.ts +106 -0
  23. package/dist/agents/from-template.js +649 -0
  24. package/dist/agents/from-template.service.d.ts +60 -0
  25. package/dist/agents/from-template.service.js +161 -0
  26. package/dist/agents/models.controller.d.ts +34 -5
  27. package/dist/agents/models.controller.js +50 -6
  28. package/dist/agents/org-templates.d.ts +176 -0
  29. package/dist/agents/org-templates.js +827 -0
  30. package/dist/agents/pending-connector-requests.d.ts +77 -0
  31. package/dist/agents/pending-connector-requests.js +215 -0
  32. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  33. package/dist/agents/pending-connectors.controller.js +91 -0
  34. package/dist/agents/pending-connectors.service.d.ts +62 -0
  35. package/dist/agents/pending-connectors.service.js +282 -0
  36. package/dist/agents/readiness.controller.d.ts +5 -5
  37. package/dist/agents/readiness.controller.js +6 -6
  38. package/dist/agents/templates.controller.d.ts +86 -5
  39. package/dist/agents/templates.controller.js +171 -7
  40. package/dist/agents/templates.d.ts +127 -23
  41. package/dist/agents/templates.js +475 -52
  42. package/dist/background/background.module.js +8 -1
  43. package/dist/background/finish.d.ts +3 -2
  44. package/dist/background/launch-lock.d.ts +4 -3
  45. package/dist/background/launch-lock.js +4 -3
  46. package/dist/background/poll.job.d.ts +9 -6
  47. package/dist/background/poll.job.js +30 -22
  48. package/dist/background/session.d.ts +13 -2
  49. package/dist/background/session.js +13 -0
  50. package/dist/background/stop.d.ts +12 -6
  51. package/dist/background/stop.js +57 -39
  52. package/dist/background/store.d.ts +18 -6
  53. package/dist/background/store.js +12 -6
  54. package/dist/background/tasks.service.d.ts +15 -5
  55. package/dist/background/tasks.service.js +42 -17
  56. package/dist/background/wake-rules.d.ts +27 -18
  57. package/dist/background/wake-rules.js +52 -22
  58. package/dist/background/wake.d.ts +13 -11
  59. package/dist/background/wake.js +20 -14
  60. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  61. package/dist/catalog/admin-catalog.controller.js +213 -42
  62. package/dist/catalog/catalog-content.d.ts +58 -32
  63. package/dist/catalog/catalog-content.js +34 -8
  64. package/dist/catalog/catalog-import.module.d.ts +7 -0
  65. package/dist/catalog/catalog-import.module.js +60 -0
  66. package/dist/catalog/catalog-items.d.ts +111 -7
  67. package/dist/catalog/catalog-items.js +279 -13
  68. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  69. package/dist/catalog/catalog-scope.service.js +1116 -0
  70. package/dist/catalog/catalog.module.d.ts +7 -9
  71. package/dist/catalog/catalog.module.js +41 -31
  72. package/dist/catalog/catalog.service.d.ts +101 -29
  73. package/dist/catalog/catalog.service.js +104 -106
  74. package/dist/catalog/cli.d.ts +11 -1
  75. package/dist/catalog/cli.js +26 -1
  76. package/dist/catalog/component-promotion.d.ts +96 -0
  77. package/dist/catalog/component-promotion.js +395 -0
  78. package/dist/catalog/component-scope.controller.d.ts +152 -0
  79. package/dist/catalog/component-scope.controller.js +287 -0
  80. package/dist/catalog/component-scope.service.d.ts +303 -0
  81. package/dist/catalog/component-scope.service.js +936 -0
  82. package/dist/catalog/component-state.d.ts +174 -0
  83. package/dist/catalog/component-state.js +437 -0
  84. package/dist/catalog/job-ids.d.ts +30 -0
  85. package/dist/catalog/job-ids.js +25 -0
  86. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  87. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  88. package/dist/catalog/marketplaces.controller.js +56 -7
  89. package/dist/catalog/marketplaces.service.d.ts +54 -14
  90. package/dist/catalog/marketplaces.service.js +71 -22
  91. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  92. package/dist/catalog/org-catalog.controller.js +181 -65
  93. package/dist/catalog/org-catalog.service.d.ts +65 -33
  94. package/dist/catalog/org-catalog.service.js +324 -157
  95. package/dist/catalog/org-extension-switch.d.ts +41 -0
  96. package/dist/catalog/org-extension-switch.js +115 -0
  97. package/dist/catalog/org-extension.controller.d.ts +119 -0
  98. package/dist/catalog/org-extension.controller.js +266 -0
  99. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  100. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  101. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  102. package/dist/catalog/org-plugin-uploads.js +116 -0
  103. package/dist/catalog/owned-items.d.ts +184 -0
  104. package/dist/catalog/owned-items.js +789 -0
  105. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  106. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  107. package/dist/catalog/ownership.d.ts +172 -0
  108. package/dist/catalog/ownership.js +326 -0
  109. package/dist/catalog/platform-components.d.ts +221 -0
  110. package/dist/catalog/platform-components.js +761 -0
  111. package/dist/catalog/platform-migration.d.ts +115 -0
  112. package/dist/catalog/platform-migration.js +582 -0
  113. package/dist/catalog/plugin-import.d.ts +178 -34
  114. package/dist/catalog/plugin-import.js +622 -82
  115. package/dist/catalog/plugin-install.d.ts +185 -41
  116. package/dist/catalog/plugin-install.js +758 -126
  117. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  118. package/dist/catalog/plugin-upgrade.js +1147 -1136
  119. package/dist/catalog/request-rules.d.ts +65 -0
  120. package/dist/catalog/request-rules.js +217 -0
  121. package/dist/catalog/requests.service.d.ts +193 -118
  122. package/dist/catalog/requests.service.js +526 -343
  123. package/dist/catalog/reserved-names.d.ts +8 -0
  124. package/dist/catalog/reserved-names.js +42 -0
  125. package/dist/catalog/scope-orgs.d.ts +21 -0
  126. package/dist/catalog/scope-orgs.js +67 -0
  127. package/dist/catalog/scope-state.d.ts +35 -0
  128. package/dist/catalog/scope-state.js +87 -0
  129. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  130. package/dist/catalog/scope-sync-workers.js +29 -0
  131. package/dist/catalog/scope-sync.d.ts +176 -0
  132. package/dist/catalog/scope-sync.js +576 -0
  133. package/dist/catalog/scope.d.ts +42 -0
  134. package/dist/catalog/scope.js +42 -0
  135. package/dist/catalog/unshare.d.ts +22 -0
  136. package/dist/catalog/unshare.js +118 -0
  137. package/dist/channels/actions.js +1 -0
  138. package/dist/channels/cards.js +20 -2
  139. package/dist/channels/channels.module.js +2 -0
  140. package/dist/channels/inbound.d.ts +9 -1
  141. package/dist/channels/inbound.js +67 -5
  142. package/dist/channels/phrases.d.ts +35 -0
  143. package/dist/channels/phrases.js +29 -0
  144. package/dist/config/docs.js +3 -1
  145. package/dist/config/schema.d.ts +10 -2
  146. package/dist/config/schema.js +70 -22
  147. package/dist/conversations/access.d.ts +6 -4
  148. package/dist/conversations/access.js +27 -5
  149. package/dist/conversations/agent-tree.d.ts +46 -0
  150. package/dist/conversations/agent-tree.js +92 -0
  151. package/dist/conversations/conversations.controller.d.ts +43 -18
  152. package/dist/conversations/conversations.controller.js +79 -38
  153. package/dist/conversations/conversations.module.d.ts +1 -1
  154. package/dist/conversations/conversations.module.js +7 -7
  155. package/dist/conversations/conversations.service.d.ts +73 -15
  156. package/dist/conversations/conversations.service.js +115 -35
  157. package/dist/conversations/environment-status.d.ts +24 -0
  158. package/dist/conversations/environment-status.js +71 -0
  159. package/dist/conversations/event-log.d.ts +20 -5
  160. package/dist/conversations/event-log.js +60 -0
  161. package/dist/conversations/events.d.ts +84 -2
  162. package/dist/conversations/events.js +91 -17
  163. package/dist/conversations/queue.service.d.ts +1 -1
  164. package/dist/conversations/queue.service.js +5 -0
  165. package/dist/conversations/titles.d.ts +5 -3
  166. package/dist/conversations/titles.js +21 -8
  167. package/dist/conversations/tree.d.ts +17 -0
  168. package/dist/conversations/tree.js +42 -0
  169. package/dist/ctx/create-ctx.d.ts +20 -1
  170. package/dist/ctx/create-ctx.js +38 -7
  171. package/dist/db/kernel-schema.d.ts +386 -18
  172. package/dist/environments/access.d.ts +41 -0
  173. package/dist/environments/access.js +77 -0
  174. package/dist/environments/conversation-environments.d.ts +61 -0
  175. package/dist/environments/conversation-environments.js +170 -0
  176. package/dist/environments/dto.d.ts +25 -0
  177. package/dist/environments/dto.js +12 -0
  178. package/dist/environments/environments.controller.d.ts +33 -0
  179. package/dist/environments/environments.controller.js +110 -0
  180. package/dist/environments/environments.module.d.ts +8 -0
  181. package/dist/environments/environments.module.js +27 -0
  182. package/dist/environments/environments.service.d.ts +153 -0
  183. package/dist/environments/environments.service.js +541 -0
  184. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  185. package/dist/environments/legacy-cleanup.job.js +141 -0
  186. package/dist/errors.d.ts +85 -2
  187. package/dist/errors.js +85 -2
  188. package/dist/evals/reconstruct.d.ts +18 -9
  189. package/dist/evals/reconstruct.js +26 -7
  190. package/dist/evals/run-replay.d.ts +4 -2
  191. package/dist/evals/run-replay.js +20 -6
  192. package/dist/evals/runs.service.d.ts +2 -1
  193. package/dist/evals/runs.service.js +13 -12
  194. package/dist/evals/step-replay.d.ts +4 -6
  195. package/dist/evals/step-replay.js +4 -3
  196. package/dist/evals/trajectory.service.d.ts +8 -3
  197. package/dist/evals/trajectory.service.js +26 -14
  198. package/dist/evals/worker.d.ts +5 -5
  199. package/dist/evals/worker.js +9 -3
  200. package/dist/extensions/admin-ops.d.ts +36 -10
  201. package/dist/extensions/admin-ops.js +65 -42
  202. package/dist/extensions/admin-view.d.ts +37 -10
  203. package/dist/extensions/admin-view.js +103 -20
  204. package/dist/extensions/bootstrap.d.ts +17 -4
  205. package/dist/extensions/bootstrap.js +70 -9
  206. package/dist/extensions/cli.d.ts +12 -0
  207. package/dist/extensions/cli.js +11 -2
  208. package/dist/extensions/config-hash.d.ts +10 -0
  209. package/dist/extensions/config-hash.js +38 -0
  210. package/dist/extensions/deployment-config.d.ts +28 -5
  211. package/dist/extensions/deployment-config.js +48 -7
  212. package/dist/extensions/effective-config.d.ts +127 -0
  213. package/dist/extensions/effective-config.js +368 -0
  214. package/dist/extensions/extensions.module.js +11 -11
  215. package/dist/extensions/hooks.d.ts +37 -4
  216. package/dist/extensions/hooks.js +82 -16
  217. package/dist/extensions/host.d.ts +24 -10
  218. package/dist/extensions/host.js +49 -54
  219. package/dist/extensions/installs.d.ts +20 -8
  220. package/dist/extensions/installs.js +37 -15
  221. package/dist/extensions/org-config.d.ts +75 -6
  222. package/dist/extensions/org-config.js +184 -32
  223. package/dist/extensions/org-levels.d.ts +37 -0
  224. package/dist/extensions/org-levels.js +71 -0
  225. package/dist/extensions/org-overrides.d.ts +151 -0
  226. package/dist/extensions/org-overrides.js +524 -0
  227. package/dist/extensions/permission-view.d.ts +16 -4
  228. package/dist/extensions/permission-view.js +4 -4
  229. package/dist/extensions/plugin-items.d.ts +21 -0
  230. package/dist/extensions/plugin-items.js +42 -0
  231. package/dist/extensions/point-defaults.d.ts +12 -5
  232. package/dist/extensions/point-defaults.js +37 -9
  233. package/dist/extensions/resolve.d.ts +5 -1
  234. package/dist/extensions/resolve.js +15 -2
  235. package/dist/extensions/state.module.d.ts +9 -0
  236. package/dist/extensions/state.module.js +38 -0
  237. package/dist/files/previewers.d.ts +8 -1
  238. package/dist/files/previewers.js +35 -6
  239. package/dist/http/api.module.js +25 -3
  240. package/dist/http/app.d.ts +11 -2
  241. package/dist/http/app.js +31 -5
  242. package/dist/http/plugin-dispatch.d.ts +4 -1
  243. package/dist/http/plugin-dispatch.js +14 -2
  244. package/dist/identity/accounts.d.ts +29 -29
  245. package/dist/identity/accounts.js +47 -47
  246. package/dist/identity/audit.d.ts +2 -1
  247. package/dist/identity/auth.guard.d.ts +13 -5
  248. package/dist/identity/auth.guard.js +26 -9
  249. package/dist/identity/identity.module.d.ts +1 -1
  250. package/dist/identity/identity.module.js +4 -4
  251. package/dist/identity/me.controller.js +1 -1
  252. package/dist/identity/principal.d.ts +3 -3
  253. package/dist/identity/principal.js +3 -3
  254. package/dist/identity/settings.d.ts +22 -11
  255. package/dist/identity/settings.js +53 -18
  256. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  257. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  258. package/dist/inbox/inbox.module.d.ts +4 -1
  259. package/dist/inbox/inbox.module.js +7 -3
  260. package/dist/inbox/inbox.service.d.ts +62 -3
  261. package/dist/inbox/inbox.service.js +74 -4
  262. package/dist/inbox/org-notices.d.ts +63 -0
  263. package/dist/inbox/org-notices.js +91 -0
  264. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  265. package/dist/inbox/platform-inbox.controller.js +58 -0
  266. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  267. package/dist/inbox/platform-inbox.service.js +263 -0
  268. package/dist/inbox/platform-notices.d.ts +19 -0
  269. package/dist/inbox/platform-notices.js +9 -0
  270. package/dist/index.d.ts +1 -1
  271. package/dist/index.js +1 -1
  272. package/dist/infra/cli/kernel-cli.module.js +9 -1
  273. package/dist/infra/config/kernel-config.service.js +24 -1
  274. package/dist/infra/database/xact-lock.d.ts +1 -1
  275. package/dist/infra/database/xact-lock.js +1 -1
  276. package/dist/infra/events/kernel-events.d.ts +19 -2
  277. package/dist/infra/queue/add-job-once.d.ts +14 -0
  278. package/dist/infra/queue/add-job-once.js +16 -0
  279. package/dist/kernel.module.js +6 -0
  280. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  281. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  282. package/dist/models/embeddings.d.ts +82 -0
  283. package/dist/models/embeddings.js +326 -0
  284. package/dist/models/enablement.controller.d.ts +40 -0
  285. package/dist/models/enablement.controller.js +74 -0
  286. package/dist/models/enablement.d.ts +99 -0
  287. package/dist/models/enablement.js +263 -0
  288. package/dist/models/models.module.d.ts +5 -1
  289. package/dist/models/models.module.js +16 -4
  290. package/dist/models/prices.d.ts +5 -5
  291. package/dist/models/prices.js +4 -4
  292. package/dist/models/purposes.controller.d.ts +6 -4
  293. package/dist/models/purposes.controller.js +13 -7
  294. package/dist/models/purposes.d.ts +37 -12
  295. package/dist/models/purposes.js +63 -17
  296. package/dist/orgs/directory-sync.d.ts +14 -5
  297. package/dist/orgs/directory-sync.js +41 -17
  298. package/dist/orgs/offboarding.d.ts +9 -7
  299. package/dist/orgs/offboarding.js +28 -17
  300. package/dist/orgs/org-lock.d.ts +5 -0
  301. package/dist/orgs/org-lock.js +13 -0
  302. package/dist/orgs/org.guard.d.ts +10 -0
  303. package/dist/orgs/org.guard.js +43 -32
  304. package/dist/orgs/orgs.module.js +3 -0
  305. package/dist/orgs/orgs.service.d.ts +20 -7
  306. package/dist/orgs/orgs.service.js +32 -12
  307. package/dist/orgs/roles.d.ts +1 -1
  308. package/dist/orgs/roles.js +5 -1
  309. package/dist/orgs/settings.controller.d.ts +1 -1
  310. package/dist/orgs/settings.service.d.ts +15 -3
  311. package/dist/orgs/settings.service.js +6 -2
  312. package/dist/overrides.d.ts +3 -0
  313. package/dist/overrides.js +2 -0
  314. package/dist/platform/actor.d.ts +48 -0
  315. package/dist/platform/actor.js +100 -0
  316. package/dist/platform/agent-docs.d.ts +18 -0
  317. package/dist/platform/agent-docs.js +59 -0
  318. package/dist/platform/availability.d.ts +14 -0
  319. package/dist/platform/availability.js +43 -0
  320. package/dist/platform/errors.d.ts +11 -0
  321. package/dist/platform/errors.js +26 -0
  322. package/dist/platform/exclusions.d.ts +12 -0
  323. package/dist/platform/exclusions.js +1405 -0
  324. package/dist/platform/method.d.ts +6 -0
  325. package/dist/platform/method.js +15 -0
  326. package/dist/platform/operation.d.ts +92 -0
  327. package/dist/platform/operation.js +35 -0
  328. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  329. package/dist/platform/ops/agent-templates.ops.js +92 -0
  330. package/dist/platform/ops/agents.ops.d.ts +19 -0
  331. package/dist/platform/ops/agents.ops.js +294 -0
  332. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  333. package/dist/platform/ops/connectors.ops.js +126 -0
  334. package/dist/platform/ops/errors.d.ts +11 -0
  335. package/dist/platform/ops/errors.js +22 -0
  336. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  337. package/dist/platform/ops/extensions.ops.js +116 -0
  338. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  339. package/dist/platform/ops/marketplaces.ops.js +157 -0
  340. package/dist/platform/ops/paging.d.ts +14 -0
  341. package/dist/platform/ops/paging.js +20 -0
  342. package/dist/platform/ops/platform.ops.d.ts +23 -0
  343. package/dist/platform/ops/platform.ops.js +158 -0
  344. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  345. package/dist/platform/ops/plugins.ops.js +377 -0
  346. package/dist/platform/ops/requests.ops.d.ts +14 -0
  347. package/dist/platform/ops/requests.ops.js +153 -0
  348. package/dist/platform/ops/role.d.ts +4 -0
  349. package/dist/platform/ops/role.js +10 -0
  350. package/dist/platform/ops/skills.ops.d.ts +13 -0
  351. package/dist/platform/ops/skills.ops.js +98 -0
  352. package/dist/platform/ops/summary.d.ts +10 -0
  353. package/dist/platform/ops/summary.js +18 -0
  354. package/dist/platform/platform-ops.module.d.ts +7 -0
  355. package/dist/platform/platform-ops.module.js +55 -0
  356. package/dist/platform/platform.module.d.ts +8 -0
  357. package/dist/platform/platform.module.js +25 -0
  358. package/dist/platform/redact-orgs.d.ts +7 -0
  359. package/dist/platform/redact-orgs.js +52 -0
  360. package/dist/platform/registry.d.ts +30 -0
  361. package/dist/platform/registry.js +111 -0
  362. package/dist/roles/worker-role.d.ts +6 -4
  363. package/dist/roles/worker-role.js +14 -7
  364. package/dist/roles/worker.module.d.ts +1 -1
  365. package/dist/roles/worker.module.js +9 -1
  366. package/dist/runtime/context/build.d.ts +6 -4
  367. package/dist/runtime/context/build.js +26 -7
  368. package/dist/runtime/context/claude-tools.d.ts +2 -1
  369. package/dist/runtime/context/claude-tools.js +5 -4
  370. package/dist/runtime/context/compaction.js +9 -0
  371. package/dist/runtime/context/reminders.d.ts +2 -0
  372. package/dist/runtime/context/reminders.js +2 -0
  373. package/dist/runtime/context/skills.js +9 -2
  374. package/dist/runtime/context/tool-changes.d.ts +27 -0
  375. package/dist/runtime/context/tool-changes.js +60 -0
  376. package/dist/runtime/hook-calls.d.ts +8 -1
  377. package/dist/runtime/hook-calls.js +40 -7
  378. package/dist/runtime/langgraph-loop.d.ts +3 -1
  379. package/dist/runtime/langgraph-loop.js +35 -17
  380. package/dist/runtime/loop.d.ts +32 -4
  381. package/dist/runtime/maintenance.d.ts +7 -4
  382. package/dist/runtime/maintenance.js +23 -8
  383. package/dist/runtime/model-call.d.ts +38 -11
  384. package/dist/runtime/model-call.js +97 -24
  385. package/dist/runtime/providers.d.ts +146 -32
  386. package/dist/runtime/providers.js +321 -67
  387. package/dist/runtime/run-control.d.ts +11 -1
  388. package/dist/runtime/run-control.js +12 -0
  389. package/dist/runtime/run-drafts.d.ts +85 -0
  390. package/dist/runtime/run-drafts.js +230 -0
  391. package/dist/runtime/run-jobs.d.ts +3 -5
  392. package/dist/runtime/run-jobs.js +3 -7
  393. package/dist/runtime/run-queue.d.ts +37 -3
  394. package/dist/runtime/run-queue.js +188 -11
  395. package/dist/runtime/run-worker.d.ts +12 -6
  396. package/dist/runtime/run-worker.js +58 -35
  397. package/dist/runtime/runtime.module.js +3 -0
  398. package/dist/runtime/step-log.d.ts +9 -4
  399. package/dist/runtime/step-log.js +8 -5
  400. package/dist/runtime/stream.controller.d.ts +23 -1
  401. package/dist/runtime/stream.controller.js +60 -3
  402. package/dist/runtime/stream.d.ts +4 -1
  403. package/dist/runtime/stream.js +27 -3
  404. package/dist/runtime/subagents/child.d.ts +55 -7
  405. package/dist/runtime/subagents/child.js +105 -7
  406. package/dist/runtime/subagents/definition.d.ts +12 -3
  407. package/dist/runtime/subagents/definition.js +46 -32
  408. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  409. package/dist/runtime/subagents/deliveries.js +228 -0
  410. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  411. package/dist/runtime/subagents/dispatch.js +212 -141
  412. package/dist/runtime/subagents/limits.d.ts +24 -5
  413. package/dist/runtime/subagents/limits.js +40 -6
  414. package/dist/runtime/subagents/messages.d.ts +95 -0
  415. package/dist/runtime/subagents/messages.js +328 -0
  416. package/dist/runtime/subagents/preamble.d.ts +4 -4
  417. package/dist/runtime/subagents/preamble.js +9 -7
  418. package/dist/runtime/subagents/progress.d.ts +8 -6
  419. package/dist/runtime/subagents/progress.js +11 -6
  420. package/dist/runtime/subagents/render.d.ts +30 -0
  421. package/dist/runtime/subagents/render.js +53 -0
  422. package/dist/runtime/subagents/roster.d.ts +24 -7
  423. package/dist/runtime/subagents/roster.js +47 -11
  424. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  425. package/dist/runtime/subagents/skill-fork.js +8 -4
  426. package/dist/runtime/subagents/status.d.ts +14 -0
  427. package/dist/runtime/subagents/status.js +23 -0
  428. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  429. package/dist/runtime/subagents/subagents.service.js +11 -6
  430. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  431. package/dist/runtime/usage-report-jobs.js +158 -0
  432. package/dist/runtime/usage-report.d.ts +33 -38
  433. package/dist/runtime/usage-report.js +169 -96
  434. package/dist/runtime/waits.d.ts +140 -37
  435. package/dist/runtime/waits.js +394 -106
  436. package/dist/sandbox/jobs.d.ts +40 -13
  437. package/dist/sandbox/jobs.js +57 -20
  438. package/dist/sandbox/leases.d.ts +37 -54
  439. package/dist/sandbox/leases.js +71 -115
  440. package/dist/sandbox/providers.d.ts +2 -2
  441. package/dist/sandbox/providers.js +1 -1
  442. package/dist/sandbox/sandbox.module.d.ts +3 -2
  443. package/dist/sandbox/sandbox.module.js +4 -3
  444. package/dist/sandbox/sandbox.service.d.ts +229 -134
  445. package/dist/sandbox/sandbox.service.js +630 -409
  446. package/dist/skills/catalog.d.ts +3 -2
  447. package/dist/skills/catalog.js +21 -43
  448. package/dist/skills/changes.controller.d.ts +7 -0
  449. package/dist/skills/changes.controller.js +19 -1
  450. package/dist/skills/invoke.js +8 -3
  451. package/dist/skills/package.d.ts +20 -1
  452. package/dist/skills/package.js +28 -1
  453. package/dist/skills/skills.controller.d.ts +39 -4
  454. package/dist/skills/skills.controller.js +88 -10
  455. package/dist/skills/skills.module.js +10 -1
  456. package/dist/skills/skills.service.d.ts +106 -26
  457. package/dist/skills/skills.service.js +421 -75
  458. package/dist/skills/usable.d.ts +81 -0
  459. package/dist/skills/usable.js +379 -0
  460. package/dist/tools/approvals.service.d.ts +20 -2
  461. package/dist/tools/approvals.service.js +23 -4
  462. package/dist/tools/builtin-names.d.ts +21 -5
  463. package/dist/tools/builtin-names.js +30 -5
  464. package/dist/tools/builtins/agent.d.ts +23 -21
  465. package/dist/tools/builtins/agent.js +62 -55
  466. package/dist/tools/builtins/builtin-tools.d.ts +6 -2
  467. package/dist/tools/builtins/builtin-tools.js +37 -12
  468. package/dist/tools/builtins/handback.d.ts +28 -0
  469. package/dist/tools/builtins/handback.js +53 -0
  470. package/dist/tools/builtins/platform.d.ts +34 -0
  471. package/dist/tools/builtins/platform.js +362 -0
  472. package/dist/tools/builtins/sandbox/bash.js +13 -3
  473. package/dist/tools/builtins/sandbox/common.d.ts +43 -24
  474. package/dist/tools/builtins/sandbox/common.js +80 -45
  475. package/dist/tools/builtins/sandbox/edit.js +2 -2
  476. package/dist/tools/builtins/sandbox/glob.js +2 -2
  477. package/dist/tools/builtins/sandbox/grep.js +2 -4
  478. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  479. package/dist/tools/builtins/sandbox/index.js +1 -1
  480. package/dist/tools/builtins/sandbox/read.js +1 -1
  481. package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
  482. package/dist/tools/builtins/sandbox/task-output.js +30 -5
  483. package/dist/tools/builtins/sandbox/task-stop.js +2 -1
  484. package/dist/tools/builtins/sandbox/write.js +2 -2
  485. package/dist/tools/builtins/send-message.d.ts +56 -0
  486. package/dist/tools/builtins/send-message.js +100 -0
  487. package/dist/tools/builtins/skill-load.d.ts +22 -14
  488. package/dist/tools/builtins/skill-load.js +86 -57
  489. package/dist/tools/builtins/skill-write.js +1 -1
  490. package/dist/tools/builtins/web/extract.js +5 -1
  491. package/dist/tools/builtins/web/fetch.js +1 -0
  492. package/dist/tools/builtins/web/search.js +1 -0
  493. package/dist/tools/connectors.controller.d.ts +10 -0
  494. package/dist/tools/connectors.controller.js +12 -0
  495. package/dist/tools/connectors.service.d.ts +46 -5
  496. package/dist/tools/connectors.service.js +94 -15
  497. package/dist/tools/extension-tools.controller.d.ts +14 -0
  498. package/dist/tools/extension-tools.controller.js +37 -0
  499. package/dist/tools/info.d.ts +42 -1
  500. package/dist/tools/info.js +64 -1
  501. package/dist/tools/org-tool-switches.d.ts +74 -0
  502. package/dist/tools/org-tool-switches.js +184 -0
  503. package/dist/tools/pipeline.d.ts +46 -40
  504. package/dist/tools/pipeline.js +193 -364
  505. package/dist/tools/policy.d.ts +1 -1
  506. package/dist/tools/policy.js +36 -16
  507. package/dist/tools/registry.d.ts +98 -5
  508. package/dist/tools/registry.js +87 -9
  509. package/dist/tools/tools.module.js +12 -2
  510. package/dist/ui/views.d.ts +2 -1
  511. package/dist/ui/views.js +17 -3
  512. package/package.json +3 -3
  513. package/src/migrations/0074_subagent_tree.sql +50 -0
  514. package/src/migrations/0075_plugin_scope.sql +61 -0
  515. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  516. package/src/migrations/0077_scope_requests.sql +52 -0
  517. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  518. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  519. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  520. package/src/migrations/0081_platform_components.sql +129 -0
  521. package/src/migrations/0082_platform_migration.sql +33 -0
  522. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  523. package/src/migrations/0084_org_owned_items.sql +85 -0
  524. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  525. package/src/migrations/0086_org_layering.sql +30 -0
  526. package/src/migrations/0087_approval_summary.sql +6 -0
  527. package/src/migrations/0088_environments.sql +80 -0
  528. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  529. package/dist/catalog/upgrade-targets.d.ts +0 -56
  530. package/dist/catalog/upgrade-targets.js +0 -90
  531. package/dist/conversations/sandbox-status.d.ts +0 -24
  532. package/dist/conversations/sandbox-status.js +0 -52
  533. package/dist/extensions/org-config.controller.d.ts +0 -32
  534. package/dist/extensions/org-config.controller.js +0 -70
@@ -3,7 +3,7 @@ import type { KernelSchemaDb } from "../db/kernel-schema.js";
3
3
  import { KernelDb } from "../infra/database/kernel-db.js";
4
4
  import { TransactionHost } from "../infra/database/transaction-host.js";
5
5
  import type { KernelLogger } from "../log.js";
6
- import { EnterpriseAdminLock } from "./enterprise-admin.js";
6
+ import { SuperAdminLock } from "./super-admin.js";
7
7
  /** 沙箱 cpu(核)与内存(MB)覆盖的范围(C19)。 */
8
8
  export declare const SANDBOX_CPU_RANGE: {
9
9
  readonly min: 0.25;
@@ -20,11 +20,13 @@ export declare const SANDBOX_LIMIT_OVERRIDE: z.ZodObject<{
20
20
  }, z.core.$strict>;
21
21
  export type SandboxLimitOverride = z.infer<typeof SANDBOX_LIMIT_OVERRIDE>;
22
22
  /**
23
- * One organization's sub-agent limits (sub-agents spec §8.2): any of the three `subagents.*`
24
- * values, within the same bounds; the ones not given use the deployment's config.
23
+ * One organization's sub-agent limits (sub-agents spec §8.2, agent map spec §6): any of the
24
+ * `subagents.*` values, within the same bounds (0 for dispatches or tokens: no limit); the ones not
25
+ * given use the deployment's config.
25
26
  */
26
27
  export declare const SUBAGENT_LIMIT_OVERRIDE: z.ZodObject<{
27
- maxConcurrentPerRun: z.ZodOptional<z.ZodNumber>;
28
+ maxDepth: z.ZodOptional<z.ZodNumber>;
29
+ maxConcurrentPerConversation: z.ZodOptional<z.ZodNumber>;
28
30
  maxDispatchesPerRun: z.ZodOptional<z.ZodNumber>;
29
31
  maxTokensPerRun: z.ZodOptional<z.ZodNumber>;
30
32
  }, z.core.$strict>;
@@ -32,7 +34,7 @@ export type SubagentLimitOverride = z.infer<typeof SUBAGENT_LIMIT_OVERRIDE>;
32
34
  export declare const DEPLOYMENT_SETTINGS: z.ZodObject<{
33
35
  orgCreation: z.ZodDefault<z.ZodEnum<{
34
36
  anyone: "anyone";
35
- enterprise_admin: "enterprise_admin";
37
+ super_admin: "super_admin";
36
38
  }>>;
37
39
  runConcurrencyOverrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
38
40
  priceCurrency: z.ZodDefault<z.ZodString>;
@@ -41,7 +43,8 @@ export declare const DEPLOYMENT_SETTINGS: z.ZodObject<{
41
43
  memoryMb: z.ZodOptional<z.ZodNumber>;
42
44
  }, z.core.$strict>>>;
43
45
  subagentLimitOverrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
44
- maxConcurrentPerRun: z.ZodOptional<z.ZodNumber>;
46
+ maxDepth: z.ZodOptional<z.ZodNumber>;
47
+ maxConcurrentPerConversation: z.ZodOptional<z.ZodNumber>;
45
48
  maxDispatchesPerRun: z.ZodOptional<z.ZodNumber>;
46
49
  maxTokensPerRun: z.ZodOptional<z.ZodNumber>;
47
50
  }, z.core.$strict>>>;
@@ -53,6 +56,7 @@ export declare const DEPLOYMENT_SETTINGS: z.ZodObject<{
53
56
  allow: "allow";
54
57
  deny: "deny";
55
58
  }>>;
59
+ orgMarketplaceBrowse: z.ZodDefault<z.ZodBoolean>;
56
60
  }, z.core.$strip>;
57
61
  export type DeploymentSettings = z.infer<typeof DEPLOYMENT_SETTINGS>;
58
62
  /**
@@ -66,7 +70,7 @@ export type DeploymentSettings = z.infer<typeof DEPLOYMENT_SETTINGS>;
66
70
  export declare const DEPLOYMENT_SETTINGS_PATCH: z.ZodObject<{
67
71
  orgCreation: z.ZodOptional<z.ZodEnum<{
68
72
  anyone: "anyone";
69
- enterprise_admin: "enterprise_admin";
73
+ super_admin: "super_admin";
70
74
  }>>;
71
75
  runConcurrencyOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNullable<z.ZodNumber>>>;
72
76
  priceCurrency: z.ZodOptional<z.ZodString>;
@@ -75,7 +79,8 @@ export declare const DEPLOYMENT_SETTINGS_PATCH: z.ZodObject<{
75
79
  memoryMb: z.ZodOptional<z.ZodNumber>;
76
80
  }, z.core.$strict>>>>;
77
81
  subagentLimitOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNullable<z.ZodObject<{
78
- maxConcurrentPerRun: z.ZodOptional<z.ZodNumber>;
82
+ maxDepth: z.ZodOptional<z.ZodNumber>;
83
+ maxConcurrentPerConversation: z.ZodOptional<z.ZodNumber>;
79
84
  maxDispatchesPerRun: z.ZodOptional<z.ZodNumber>;
80
85
  maxTokensPerRun: z.ZodOptional<z.ZodNumber>;
81
86
  }, z.core.$strict>>>>;
@@ -87,6 +92,7 @@ export declare const DEPLOYMENT_SETTINGS_PATCH: z.ZodObject<{
87
92
  allow: "allow";
88
93
  deny: "deny";
89
94
  }>>;
95
+ orgMarketplaceBrowse: z.ZodOptional<z.ZodBoolean>;
90
96
  }, z.core.$strict>;
91
97
  export type DeploymentSettingsPatch = z.infer<typeof DEPLOYMENT_SETTINGS_PATCH>;
92
98
  /**
@@ -102,18 +108,23 @@ export declare function readSandboxLimitOverride(db: KernelSchemaDb, orgId: stri
102
108
  export declare function readSubagentLimitOverride(db: KernelSchemaDb, orgId: string): Promise<SubagentLimitOverride | undefined>;
103
109
  /**
104
110
  * When orgs may not create their own connectors / skills (deployment setting `customConnectors` /
105
- * `customSkills` is `deny`, C22) throws `catalog.custom_disabled`: install from the enterprise
111
+ * `customSkills` is `deny`, C22) throws `catalog.custom_disabled`: install from the platform
106
112
  * catalog only. Reads PG live every time (can read in the caller's transaction); an invalid stored
107
113
  * value counts as allow.
108
114
  */
109
115
  export declare function assertCustomAllowed(db: KernelSchemaDb, key: "customConnectors" | "customSkills"): Promise<void>;
116
+ /**
117
+ * The deployment setting `orgMarketplaceBrowse`, read live from PG (in the caller's transaction
118
+ * when there is one); missing or invalid -> the default, true.
119
+ */
120
+ export declare function readOrgMarketplaceBrowse(db: KernelSchemaDb): Promise<boolean>;
110
121
  /** Deployment settings: one row per key, defaults for missing keys. */
111
122
  export declare class SettingsService {
112
123
  private readonly db;
113
124
  readonly txHost: TransactionHost;
114
125
  private readonly adminLock;
115
126
  private readonly log;
116
- constructor(db: KernelDb, txHost: TransactionHost, adminLock: EnterpriseAdminLock, log: Pick<KernelLogger, "warn">);
127
+ constructor(db: KernelDb, txHost: TransactionHost, adminLock: SuperAdminLock, log: Pick<KernelLogger, "warn">);
117
128
  /**
118
129
  * Reads every setting, in the context's transaction when there is one (a caller holding a
119
130
  * transaction connection does not take a second one from the pool). Each key is validated on
@@ -121,7 +132,7 @@ export declare class SettingsService {
121
132
  * valid keys apply; unknown keys (written by a newer version) are ignored.
122
133
  */
123
134
  get(): Promise<DeploymentSettings>;
124
- /** Updates settings under the enterprise admin lock, re-checking the actor (else `forbidden`). */
135
+ /** Updates settings under the super admin lock, re-checking the actor (else `forbidden`). */
125
136
  update(patch: DeploymentSettingsPatch, actorAccountId: string, actorTokenId?: string): Promise<DeploymentSettings>;
126
137
  private write;
127
138
  }
@@ -15,7 +15,7 @@ import { TransactionHost } from "../infra/database/transaction-host.js";
15
15
  import { Transactional } from "../infra/database/transactional.decorator.js";
16
16
  import { KERNEL_LOGGER } from "../infra/tokens.js";
17
17
  import { audit } from "./audit.js";
18
- import { EnterpriseAdminLock } from "./enterprise-admin.js";
18
+ import { SuperAdminLock } from "./super-admin.js";
19
19
  /** 币种代码:ISO 4217 的三位大写字母(如 USD、CNY)。 */
20
20
  const CurrencyCode = z.string().regex(/^[A-Z]{3}$/, "must be a 3-letter ISO 4217 currency code");
21
21
  /** 沙箱 cpu(核)与内存(MB)覆盖的范围(C19)。 */
@@ -37,23 +37,34 @@ export const SANDBOX_LIMIT_OVERRIDE = z
37
37
  message: "give cpu, memoryMb or both",
38
38
  });
39
39
  /**
40
- * One organization's sub-agent limits (sub-agents spec §8.2): any of the three `subagents.*`
41
- * values, within the same bounds; the ones not given use the deployment's config.
40
+ * One organization's sub-agent limits (sub-agents spec §8.2, agent map spec §6): any of the
41
+ * `subagents.*` values, within the same bounds (0 for dispatches or tokens: no limit); the ones not
42
+ * given use the deployment's config.
42
43
  */
43
44
  export const SUBAGENT_LIMIT_OVERRIDE = z
44
45
  .object({
45
- maxConcurrentPerRun: z.number().int().min(1).max(20).optional(),
46
- maxDispatchesPerRun: z.number().int().min(1).max(500).optional(),
47
- maxTokensPerRun: z.number().int().min(10_000).optional(),
46
+ maxDepth: z.number().int().min(1).max(5).optional(),
47
+ maxConcurrentPerConversation: z.number().int().min(1).max(20).optional(),
48
+ maxDispatchesPerRun: z
49
+ .number()
50
+ .int()
51
+ .max(500)
52
+ .refine((n) => n === 0 || n >= 1, "0 (no limit) or 1 to 500")
53
+ .optional(),
54
+ maxTokensPerRun: z
55
+ .number()
56
+ .int()
57
+ .refine((n) => n === 0 || n >= 10_000, "0 (no limit) or at least 10,000")
58
+ .optional(),
48
59
  })
49
60
  .strict()
50
61
  .refine((o) => Object.values(o).some((v) => v !== undefined), {
51
- message: "give maxConcurrentPerRun, maxDispatchesPerRun or maxTokensPerRun",
62
+ message: "give maxDepth, maxConcurrentPerConversation, maxDispatchesPerRun or maxTokensPerRun",
52
63
  });
53
- /** 组织能否自建连接器 / 技能(C22):`deny` 时只能从企业目录安装(T26 执行)。 */
64
+ /** 组织能否自建连接器 / 技能(C22):`deny` 时只能从平台目录安装(T26 执行)。 */
54
65
  const CustomPolicy = z.enum(["allow", "deny"]);
55
66
  export const DEPLOYMENT_SETTINGS = z.object({
56
- orgCreation: z.enum(["anyone", "enterprise_admin"]).default("anyone"),
67
+ orgCreation: z.enum(["anyone", "super_admin"]).default("anyone"),
57
68
  /** 按组织覆盖运行并发上限(orgId → 上限);未列出的组织用 `runtime.orgConcurrency`。 */
58
69
  runConcurrencyOverrides: z.record(z.string().min(1), z.number().int().positive()).default({}),
59
70
  /** 模型价格表(`model_prices`)的币种;只用于显示估算成本,不做换算。 */
@@ -65,13 +76,18 @@ export const DEPLOYMENT_SETTINGS = z.object({
65
76
  * not given, use `subagents.*`. Read live on every dispatch and tool resolution.
66
77
  */
67
78
  subagentLimitOverrides: z.record(z.string().min(1), SUBAGENT_LIMIT_OVERRIDE).default({}),
68
- /** 组织能否自建连接器(不经企业目录)。 */
79
+ /** 组织能否自建连接器(不经平台目录)。 */
69
80
  customConnectors: CustomPolicy.default("allow"),
70
81
  /**
71
- * 组织能否自建技能(不经企业目录):deny 时组织管理员不能上传技能包。agent 自写技能(`SkillWrite`,私有 agent 的
82
+ * 组织能否自建技能(不经平台目录):deny 时组织管理员不能上传技能包。agent 自写技能(`SkillWrite`,私有 agent 的
72
83
  * agent 级技能与共享 agent 经负责人审批的变更)不受此开关约束——那是 agent 定义的一部分,由 R3 / R4 把关。
73
84
  */
74
85
  customSkills: CustomPolicy.default("allow"),
86
+ /**
87
+ * Org admins may browse the marketplaces read-only and ask for an entry to be imported (plugin
88
+ * scope spec §5.1 rule 3). false hides the browse route and refuses those requests.
89
+ */
90
+ orgMarketplaceBrowse: z.boolean().default(true),
75
91
  });
76
92
  const DEFAULTS = DEPLOYMENT_SETTINGS.parse({});
77
93
  /**
@@ -84,7 +100,7 @@ const DEFAULTS = DEPLOYMENT_SETTINGS.parse({});
84
100
  */
85
101
  export const DEPLOYMENT_SETTINGS_PATCH = z
86
102
  .object({
87
- orgCreation: z.enum(["anyone", "enterprise_admin"]).optional(),
103
+ orgCreation: z.enum(["anyone", "super_admin"]).optional(),
88
104
  runConcurrencyOverrides: z
89
105
  .record(z.string().min(1), z.number().int().positive().nullable())
90
106
  .optional(),
@@ -97,6 +113,7 @@ export const DEPLOYMENT_SETTINGS_PATCH = z
97
113
  .optional(),
98
114
  customConnectors: CustomPolicy.optional(),
99
115
  customSkills: CustomPolicy.optional(),
116
+ orgMarketplaceBrowse: z.boolean().optional(),
100
117
  })
101
118
  .strict();
102
119
  /**
@@ -140,7 +157,7 @@ export async function readSubagentLimitOverride(db, orgId) {
140
157
  }
141
158
  /**
142
159
  * When orgs may not create their own connectors / skills (deployment setting `customConnectors` /
143
- * `customSkills` is `deny`, C22) throws `catalog.custom_disabled`: install from the enterprise
160
+ * `customSkills` is `deny`, C22) throws `catalog.custom_disabled`: install from the platform
144
161
  * catalog only. Reads PG live every time (can read in the caller's transaction); an invalid stored
145
162
  * value counts as allow.
146
163
  */
@@ -155,10 +172,25 @@ export async function assertCustomAllowed(db, key) {
155
172
  const parsed = CustomPolicy.safeParse(row.value);
156
173
  if (parsed.success && parsed.data === "deny") {
157
174
  throw new ApiError("catalog.custom_disabled", key === "customConnectors"
158
- ? "Custom connectors are disabled in this deployment; install connectors from the enterprise catalog"
159
- : "Custom skills are disabled in this deployment; install skills from the enterprise catalog");
175
+ ? "Custom connectors are disabled in this deployment; install connectors from the platform catalog"
176
+ : "Custom skills are disabled in this deployment; install skills from the platform catalog");
160
177
  }
161
178
  }
179
+ /**
180
+ * The deployment setting `orgMarketplaceBrowse`, read live from PG (in the caller's transaction
181
+ * when there is one); missing or invalid -> the default, true.
182
+ */
183
+ export async function readOrgMarketplaceBrowse(db) {
184
+ const row = await db
185
+ .selectFrom("deployment_settings")
186
+ .select("value")
187
+ .where("key", "=", "orgMarketplaceBrowse")
188
+ .executeTakeFirst();
189
+ if (!row)
190
+ return true;
191
+ const parsed = z.boolean().safeParse(row.value);
192
+ return parsed.success ? parsed.data : true;
193
+ }
162
194
  /** 按组织合并覆盖:值为 null 删除该组织,其余整项替换;未列出的组织不变。 */
163
195
  function mergeByOrg(current, patch) {
164
196
  const merged = { ...current };
@@ -208,7 +240,7 @@ let SettingsService = class SettingsService {
208
240
  }
209
241
  return out;
210
242
  }
211
- /** Updates settings under the enterprise admin lock, re-checking the actor (else `forbidden`). */
243
+ /** Updates settings under the super admin lock, re-checking the actor (else `forbidden`). */
212
244
  async update(patch, actorAccountId, actorTokenId) {
213
245
  const check = DEPLOYMENT_SETTINGS_PATCH.safeParse(patch);
214
246
  if (!check.success) {
@@ -219,7 +251,7 @@ let SettingsService = class SettingsService {
219
251
  }
220
252
  async write(patch, actorAccountId, actorTokenId) {
221
253
  await this.adminLock.lockAndAuthorize(actorAccountId);
222
- // The enterprise admin lock serializes every settings write: the current overrides are read
254
+ // The super admin lock serializes every settings write: the current overrides are read
223
255
  // and merged under it, so no concurrent change is lost
224
256
  const next = {};
225
257
  if (patch.orgCreation !== undefined)
@@ -230,6 +262,9 @@ let SettingsService = class SettingsService {
230
262
  next.customConnectors = patch.customConnectors;
231
263
  if (patch.customSkills !== undefined)
232
264
  next.customSkills = patch.customSkills;
265
+ if (patch.orgMarketplaceBrowse !== undefined) {
266
+ next.orgMarketplaceBrowse = patch.orgMarketplaceBrowse;
267
+ }
233
268
  const { runConcurrencyOverrides: runPatch, sandboxLimitOverrides: sandboxPatch, subagentLimitOverrides: subagentPatch, } = patch;
234
269
  if (runPatch !== undefined || sandboxPatch !== undefined || subagentPatch !== undefined) {
235
270
  const current = await this.get();
@@ -270,7 +305,7 @@ SettingsService = __decorate([
270
305
  Injectable(),
271
306
  __param(0, Inject(KernelDb)),
272
307
  __param(1, Inject(TransactionHost)),
273
- __param(2, Inject(EnterpriseAdminLock)),
308
+ __param(2, Inject(SuperAdminLock)),
274
309
  __param(3, Inject(KERNEL_LOGGER))
275
310
  ], SettingsService);
276
311
  export { SettingsService };
@@ -2,19 +2,19 @@ import { KernelDb } from "../infra/database/kernel-db.js";
2
2
  import { TransactionHost } from "../infra/database/transaction-host.js";
3
3
  import { XactLock } from "../infra/database/xact-lock.js";
4
4
  /**
5
- * The enterprise admin lock, the one implementation of "lock, then re-check the actor":
5
+ * The super admin lock, the one implementation of "lock, then re-check the actor":
6
6
  * both methods join the caller's transaction (`mandatory`), which holds the lock until it ends.
7
7
  */
8
- export declare class EnterpriseAdminLock {
8
+ export declare class SuperAdminLock {
9
9
  private readonly db;
10
10
  private readonly xactLock;
11
11
  readonly txHost: TransactionHost;
12
12
  constructor(db: KernelDb, xactLock: XactLock, txHost: TransactionHost);
13
13
  /** Only the lock (callers without an actor: the CLI, bootstrap). */
14
14
  lock(): Promise<void>;
15
- /** The lock, then {@link assertActiveEnterpriseAdmin} under it. */
15
+ /** The lock, then {@link assertActiveSuperAdmin} under it. */
16
16
  lockAndAuthorize(actorAccountId: string): Promise<void>;
17
17
  }
18
- /** The one {@link EnterpriseAdminLock}: identity, models, the extensions and the catalog import it. */
19
- export declare class EnterpriseAdminLockModule {
18
+ /** The one {@link SuperAdminLock}: identity, models, the extensions and the catalog import it. */
19
+ export declare class SuperAdminLockModule {
20
20
  }
@@ -15,32 +15,32 @@ import { Transactional } from "../infra/database/transactional.decorator.js";
15
15
  import { XactLock } from "../infra/database/xact-lock.js";
16
16
  /**
17
17
  * The transaction-scoped lock (`XactLock`, `pg_advisory_xact_lock`) that serializes every
18
- * enterprise admin write: revoke / disable / create an admin, deployment settings, prices,
18
+ * super admin write: revoke / disable / create an admin, deployment settings, prices,
19
19
  * purposes, the catalog and extension admin writes, the CLI's `capybara admin grant|revoke`.
20
20
  */
21
- const ENTERPRISE_ADMINS_LOCK = "capybara.enterprise_admins";
21
+ const SUPER_ADMINS_LOCK = "capybara.super_admins";
22
22
  /**
23
- * The run-time re-check of an enterprise admin write (spec 3.6 R5), under
24
- * {@link ENTERPRISE_ADMINS_LOCK}: the actor must still be an active enterprise admin, else
23
+ * The run-time re-check of a super admin write (spec 3.6 R5), under
24
+ * {@link SUPER_ADMINS_LOCK}: the actor must still be an active super admin, else
25
25
  * `forbidden`. The identity the auth guard read at the start of the request may be stale (another
26
26
  * admin just revoked it), so it is re-read under the lock.
27
27
  */
28
- async function assertActiveEnterpriseAdmin(db, actorAccountId) {
28
+ async function assertActiveSuperAdmin(db, actorAccountId) {
29
29
  const actor = await db
30
30
  .selectFrom("accounts")
31
31
  .select("id")
32
32
  .where("id", "=", actorAccountId)
33
- .where("is_enterprise_admin", "=", true)
33
+ .where("is_super_admin", "=", true)
34
34
  .where("status", "=", "active")
35
35
  .executeTakeFirst();
36
36
  if (!actor)
37
- throw new ApiError("forbidden", "Enterprise admin required");
37
+ throw new ApiError("forbidden", "Super admin required");
38
38
  }
39
39
  /**
40
- * The enterprise admin lock, the one implementation of "lock, then re-check the actor":
40
+ * The super admin lock, the one implementation of "lock, then re-check the actor":
41
41
  * both methods join the caller's transaction (`mandatory`), which holds the lock until it ends.
42
42
  */
43
- let EnterpriseAdminLock = class EnterpriseAdminLock {
43
+ let SuperAdminLock = class SuperAdminLock {
44
44
  db;
45
45
  xactLock;
46
46
  txHost;
@@ -51,31 +51,31 @@ let EnterpriseAdminLock = class EnterpriseAdminLock {
51
51
  }
52
52
  /** Only the lock (callers without an actor: the CLI, bootstrap). */
53
53
  async lock() {
54
- await this.xactLock.lock(ENTERPRISE_ADMINS_LOCK);
54
+ await this.xactLock.lock(SUPER_ADMINS_LOCK);
55
55
  }
56
- /** The lock, then {@link assertActiveEnterpriseAdmin} under it. */
56
+ /** The lock, then {@link assertActiveSuperAdmin} under it. */
57
57
  async lockAndAuthorize(actorAccountId) {
58
- await this.xactLock.lock(ENTERPRISE_ADMINS_LOCK);
59
- await assertActiveEnterpriseAdmin(this.db.db, actorAccountId);
58
+ await this.xactLock.lock(SUPER_ADMINS_LOCK);
59
+ await assertActiveSuperAdmin(this.db.db, actorAccountId);
60
60
  }
61
61
  };
62
62
  __decorate([
63
63
  Transactional({ propagation: "mandatory" })
64
- ], EnterpriseAdminLock.prototype, "lock", null);
64
+ ], SuperAdminLock.prototype, "lock", null);
65
65
  __decorate([
66
66
  Transactional({ propagation: "mandatory" })
67
- ], EnterpriseAdminLock.prototype, "lockAndAuthorize", null);
68
- EnterpriseAdminLock = __decorate([
67
+ ], SuperAdminLock.prototype, "lockAndAuthorize", null);
68
+ SuperAdminLock = __decorate([
69
69
  Injectable(),
70
70
  __param(0, Inject(KernelDb)),
71
71
  __param(1, Inject(XactLock)),
72
72
  __param(2, Inject(TransactionHost))
73
- ], EnterpriseAdminLock);
74
- export { EnterpriseAdminLock };
75
- /** The one {@link EnterpriseAdminLock}: identity, models, the extensions and the catalog import it. */
76
- let EnterpriseAdminLockModule = class EnterpriseAdminLockModule {
73
+ ], SuperAdminLock);
74
+ export { SuperAdminLock };
75
+ /** The one {@link SuperAdminLock}: identity, models, the extensions and the catalog import it. */
76
+ let SuperAdminLockModule = class SuperAdminLockModule {
77
77
  };
78
- EnterpriseAdminLockModule = __decorate([
79
- Module({ providers: [EnterpriseAdminLock], exports: [EnterpriseAdminLock] })
80
- ], EnterpriseAdminLockModule);
81
- export { EnterpriseAdminLockModule };
78
+ SuperAdminLockModule = __decorate([
79
+ Module({ providers: [SuperAdminLock], exports: [SuperAdminLock] })
80
+ ], SuperAdminLockModule);
81
+ export { SuperAdminLockModule };
@@ -1,3 +1,6 @@
1
- /** The inbox: pending tool approvals, skill changes and catalog requests, read live from PG. */
1
+ /**
2
+ * The inboxes, read live from PG: an org member's (pending tool approvals, skill changes, catalog
3
+ * requests, org notices) and the super admin's (`PlatformInboxService`).
4
+ */
2
5
  export declare class InboxModule {
3
6
  }
@@ -9,14 +9,18 @@ import { CatalogModule } from "../catalog/catalog.module.js";
9
9
  import { SkillsModule } from "../skills/skills.module.js";
10
10
  import { ToolsModule } from "../tools/tools.module.js";
11
11
  import { InboxService } from "./inbox.service.js";
12
- /** The inbox: pending tool approvals, skill changes and catalog requests, read live from PG. */
12
+ import { PlatformInboxService } from "./platform-inbox.service.js";
13
+ /**
14
+ * The inboxes, read live from PG: an org member's (pending tool approvals, skill changes, catalog
15
+ * requests, org notices) and the super admin's (`PlatformInboxService`).
16
+ */
13
17
  let InboxModule = class InboxModule {
14
18
  };
15
19
  InboxModule = __decorate([
16
20
  Module({
17
21
  imports: [ToolsModule, SkillsModule, CatalogModule],
18
- providers: [InboxService],
19
- exports: [InboxService],
22
+ providers: [InboxService, PlatformInboxService],
23
+ exports: [InboxService, PlatformInboxService],
20
24
  })
21
25
  ], InboxModule);
22
26
  export { InboxModule };
@@ -1,14 +1,52 @@
1
1
  import { CatalogRequestsService, type CatalogRequestView } from "../catalog/requests.service.js";
2
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
3
  import { SkillChangesService, type SkillChangeView } from "../skills/changes.service.js";
3
4
  import { ApprovalsService, type ApprovalView } from "../tools/approvals.service.js";
5
+ import type { OrgNoticeDetails } from "./org-notices.js";
6
+ /** The most open org notices one inbox read returns. */
7
+ export declare const ORG_NOTICES_LIST_MAX = 100;
8
+ /** The skill the platform components migration renamed (`skill_renamed`). */
9
+ export interface SkillRenamedDetail {
10
+ skillId: string;
11
+ from: string;
12
+ to: string;
13
+ platformSkillId: string;
14
+ plugin: string | null;
15
+ }
16
+ /**
17
+ * A notice for the org's admins (`org_notices`), shown until one of them dismisses it; `kind`
18
+ * picks the detail field that is set:
19
+ * - `skill_renamed` (`skillRenamed`): the platform components migration renamed an org skill whose
20
+ * name a platform skill on in the org has; agents keep it, by id;
21
+ * - `item_shared`, `shared_item_updated`, `upload_confirmed`, `upload_rejected` (`detail`): the
22
+ * shapes of {@link OrgNoticeDetails} (plugin scope phase 3, P3-22).
23
+ */
24
+ export type OrgNoticeView = {
25
+ id: string;
26
+ createdAt: string;
27
+ } & ({
28
+ kind: "skill_renamed";
29
+ skillRenamed: SkillRenamedDetail;
30
+ } | {
31
+ [K in keyof OrgNoticeDetails]: {
32
+ kind: K;
33
+ detail: OrgNoticeDetails[K];
34
+ };
35
+ }[keyof OrgNoticeDetails]);
4
36
  /** 收件箱一次最多返回的事项数。 */
5
37
  export declare const INBOX_MAX_ITEMS = 100;
6
38
  /**
7
39
  * 收件箱里的一项(按 `type` 区分,形状稳定):
8
40
  * - `tool_approval`:当前用户能处理的待处理工具调用审批(与 `GET /approvals?status=pending` 同一视图);
9
41
  * - `skill_change`:当前用户作为 agent 负责人能决定的待处理技能变更(M5 T15,R4);
10
- * - `catalog_request`: pending catalog requests from members, when the current user is an org
11
- * admin (M6 T26, C22).
42
+ * - `catalog_request`: pending `enable` requests from members and pending `connector_setup`
43
+ * requests (`request.kind`; `request.agent` and `request.connectors` set, `item` null; ruling
44
+ * P4-T6-5), when the current user is an org admin (M6 T26, C22; plugin scope spec §5.1);
45
+ * - `catalog_request_decided`: the current user's own requests in this org that were approved or
46
+ * rejected (with the reason), until dismissed (`POST catalog-requests/:id/dismiss`);
47
+ * - the org notices (`skill_renamed`, `item_shared`, `shared_item_updated`, `upload_confirmed`,
48
+ * `upload_rejected`; `type` = the notice's kind): for org admins, until one dismisses it
49
+ * (`POST inbox/notices/:id/dismiss`).
12
50
  */
13
51
  export type InboxItem = {
14
52
  type: "tool_approval";
@@ -25,6 +63,17 @@ export type InboxItem = {
25
63
  id: string;
26
64
  createdAt: string;
27
65
  request: CatalogRequestView;
66
+ } | {
67
+ type: "catalog_request_decided";
68
+ id: string;
69
+ /** When it was decided. */
70
+ createdAt: string;
71
+ request: CatalogRequestView;
72
+ } | {
73
+ type: OrgNoticeView["kind"];
74
+ id: string;
75
+ createdAt: string;
76
+ notice: OrgNoticeView;
28
77
  };
29
78
  /** `GET /inbox` 的结果:新的在前,最多 {@link INBOX_MAX_ITEMS} 项;`truncated` 为 true 表示还有更多。 */
30
79
  export interface InboxView {
@@ -35,7 +84,17 @@ export interface InboxView {
35
84
  export declare class InboxService {
36
85
  private readonly approvals;
37
86
  private readonly skillChanges;
87
+ private readonly kdb;
38
88
  private readonly catalogRequests;
39
- constructor(approvals: Pick<ApprovalsService, "list">, skillChanges: Pick<SkillChangesService, "listPending">, catalogRequests: Pick<CatalogRequestsService, "listForOrgAdmin">);
89
+ constructor(approvals: Pick<ApprovalsService, "list">, skillChanges: Pick<SkillChangesService, "listPending">, kdb: KernelDb, catalogRequests: Pick<CatalogRequestsService, "listForOrgAdmin" | "listDecidedForRequester">);
40
90
  list(orgId: string, accountId: string): Promise<InboxView>;
91
+ /** The org's open notices when the account is an org admin (else none), newest first. */
92
+ private notices;
93
+ /**
94
+ * An org admin dismisses an open notice (`POST /orgs/:orgId/inbox/notices/:id/dismiss`); for
95
+ * every admin of the org. Not an admin, or no open notice of the org with that id ->
96
+ * `inbox.notice_not_found`.
97
+ */
98
+ dismissNotice(orgId: string, accountId: string, id: string): Promise<void>;
99
+ private isAdmin;
41
100
  }
@@ -8,26 +8,36 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
8
  return function (target, key) { decorator(target, key, paramIndex); }
9
9
  };
10
10
  import { Inject, Injectable } from "@nestjs/common";
11
+ import { sql } from "kysely";
11
12
  import { CATALOG_REQUESTS_LIST_MAX, CatalogRequestsService, } from "../catalog/requests.service.js";
13
+ import { ApiError } from "../errors.js";
14
+ import { KernelDb } from "../infra/database/kernel-db.js";
15
+ import { roleAtLeast } from "../orgs/roles.js";
12
16
  import { SKILL_CHANGES_LIST_MAX, SkillChangesService, } from "../skills/changes.service.js";
13
17
  import { APPROVALS_LIST_MAX, ApprovalsService, } from "../tools/approvals.service.js";
18
+ /** The most open org notices one inbox read returns. */
19
+ export const ORG_NOTICES_LIST_MAX = 100;
14
20
  /** 收件箱一次最多返回的事项数。 */
15
21
  export const INBOX_MAX_ITEMS = 100;
16
22
  /** 收件箱(计划取舍 C6):按类型汇总各来源的待处理事项。无状态,每次实时读 PG。 */
17
23
  let InboxService = class InboxService {
18
24
  approvals;
19
25
  skillChanges;
26
+ kdb;
20
27
  catalogRequests;
21
- constructor(approvals, skillChanges, catalogRequests) {
28
+ constructor(approvals, skillChanges, kdb, catalogRequests) {
22
29
  this.approvals = approvals;
23
30
  this.skillChanges = skillChanges;
31
+ this.kdb = kdb;
24
32
  this.catalogRequests = catalogRequests;
25
33
  }
26
34
  async list(orgId, accountId) {
27
- const [approvals, changes, requests] = await Promise.all([
35
+ const [approvals, changes, requests, decided, notices] = await Promise.all([
28
36
  this.approvals.list(orgId, accountId, "pending"),
29
37
  this.skillChanges.listPending(orgId, accountId),
30
38
  this.catalogRequests.listForOrgAdmin(orgId, accountId),
39
+ this.catalogRequests.listDecidedForRequester(orgId, accountId),
40
+ this.notices(orgId, accountId),
31
41
  ]);
32
42
  const all = [
33
43
  ...approvals.map((a) => ({
@@ -48,6 +58,13 @@ let InboxService = class InboxService {
48
58
  createdAt: r.createdAt,
49
59
  request: r,
50
60
  })),
61
+ ...decided.map((r) => ({
62
+ type: "catalog_request_decided",
63
+ id: r.id,
64
+ createdAt: r.decidedAt ?? r.createdAt,
65
+ request: r,
66
+ })),
67
+ ...notices.map((n) => ({ type: n.kind, id: n.id, createdAt: n.createdAt, notice: n })),
51
68
  ];
52
69
  // 新的在前;同一时刻按 id 定序(结果稳定)
53
70
  all.sort((a, b) => a.createdAt !== b.createdAt
@@ -62,17 +79,70 @@ let InboxService = class InboxService {
62
79
  // 各来源自己也有上限:某个来源取满了也算还有更多
63
80
  const full = approvals.length >= APPROVALS_LIST_MAX ||
64
81
  changes.length >= SKILL_CHANGES_LIST_MAX ||
65
- requests.length >= CATALOG_REQUESTS_LIST_MAX;
82
+ requests.length >= CATALOG_REQUESTS_LIST_MAX ||
83
+ decided.length >= CATALOG_REQUESTS_LIST_MAX ||
84
+ notices.length >= ORG_NOTICES_LIST_MAX;
66
85
  return {
67
86
  items: all.slice(0, INBOX_MAX_ITEMS),
68
87
  truncated: full || all.length > INBOX_MAX_ITEMS,
69
88
  };
70
89
  }
90
+ /** The org's open notices when the account is an org admin (else none), newest first. */
91
+ async notices(orgId, accountId) {
92
+ if (!(await this.isAdmin(orgId, accountId)))
93
+ return [];
94
+ const rows = await this.kdb.db
95
+ .selectFrom("org_notices")
96
+ .select(["id", "kind", "detail", "created_at"])
97
+ .where("org_id", "=", orgId)
98
+ .where("dismissed_at", "is", null)
99
+ .orderBy("created_at", "desc")
100
+ .orderBy("id")
101
+ .limit(ORG_NOTICES_LIST_MAX)
102
+ .execute();
103
+ return rows.map((r) => {
104
+ const base = { id: r.id, createdAt: r.created_at.toISOString() };
105
+ if (r.kind === "skill_renamed") {
106
+ return { ...base, kind: r.kind, skillRenamed: r.detail };
107
+ }
108
+ return { ...base, kind: r.kind, detail: r.detail };
109
+ });
110
+ }
111
+ /**
112
+ * An org admin dismisses an open notice (`POST /orgs/:orgId/inbox/notices/:id/dismiss`); for
113
+ * every admin of the org. Not an admin, or no open notice of the org with that id ->
114
+ * `inbox.notice_not_found`.
115
+ */
116
+ async dismissNotice(orgId, accountId, id) {
117
+ const notFound = new ApiError("inbox.notice_not_found", "Notice not found");
118
+ if (!UUID_RE.test(id) || !(await this.isAdmin(orgId, accountId)))
119
+ throw notFound;
120
+ const r = await this.kdb.db
121
+ .updateTable("org_notices")
122
+ .set({ dismissed_at: sql `now()`, dismissed_by: accountId })
123
+ .where("id", "=", id)
124
+ .where("org_id", "=", orgId)
125
+ .where("dismissed_at", "is", null)
126
+ .executeTakeFirst();
127
+ if (r.numUpdatedRows === 0n)
128
+ throw notFound;
129
+ }
130
+ async isAdmin(orgId, accountId) {
131
+ const m = await this.kdb.db
132
+ .selectFrom("memberships")
133
+ .select("role")
134
+ .where("org_id", "=", orgId)
135
+ .where("account_id", "=", accountId)
136
+ .executeTakeFirst();
137
+ return m !== undefined && roleAtLeast(m.role, "admin");
138
+ }
71
139
  };
72
140
  InboxService = __decorate([
73
141
  Injectable(),
74
142
  __param(0, Inject(ApprovalsService)),
75
143
  __param(1, Inject(SkillChangesService)),
76
- __param(2, Inject(CatalogRequestsService))
144
+ __param(2, Inject(KernelDb)),
145
+ __param(3, Inject(CatalogRequestsService))
77
146
  ], InboxService);
78
147
  export { InboxService };
148
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;