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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  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 +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -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;
@@ -0,0 +1,63 @@
1
+ import { type OwnedRef, type Owner } from "../catalog/ownership.js";
2
+ import type { KernelSchemaDb, OrgNoticeKind } from "../db/kernel-schema.js";
3
+ export type { OrgNoticeKind };
4
+ /** The `detail` of each notice kind except `skill_renamed` (written by the platform migration). */
5
+ export interface OrgNoticeDetails {
6
+ /** An org was added to the item's list, or its scope widened (`all_orgs`). */
7
+ /** `displayName`: a plugin's display name, which the inbox names it by (null otherwise). */
8
+ item_shared: {
9
+ ref: OwnedRef;
10
+ name: string;
11
+ displayName: LocalizedName;
12
+ org: {
13
+ id: string;
14
+ name: string;
15
+ } | "all_orgs";
16
+ };
17
+ /** A shared org-owned item changed version, for the orgs it is on in. */
18
+ shared_item_updated: {
19
+ ref: OwnedRef;
20
+ name: string;
21
+ displayName: LocalizedName;
22
+ from: string;
23
+ to: string;
24
+ owner: Owner;
25
+ };
26
+ /** `displayName`: the plugin's display name, which the inbox names it by (null without one). */
27
+ upload_confirmed: {
28
+ itemId: string;
29
+ name: string;
30
+ displayName: LocalizedName;
31
+ version: string;
32
+ };
33
+ upload_rejected: {
34
+ itemId: string;
35
+ name: string;
36
+ displayName: LocalizedName;
37
+ version: string;
38
+ reason: string | null;
39
+ };
40
+ }
41
+ type LocalizedName = {
42
+ zh: string;
43
+ en: string;
44
+ } | null;
45
+ /** A catalog item's display name for an upload notice (null without one, or for an unknown id). */
46
+ export declare function itemDisplayName(db: KernelSchemaDb, itemId: string): Promise<LocalizedName>;
47
+ /** Writes an org notice in the caller's transaction. */
48
+ export declare function addOrgNotice<K extends keyof OrgNoticeDetails>(db: KernelSchemaDb, orgId: string, kind: K, detail: OrgNoticeDetails[K]): Promise<void>;
49
+ /**
50
+ * Tells the owner org that its item was shared (`item_shared`): with each org of `orgs` (the owner
51
+ * itself is skipped), or with `all_orgs`. A platform-owned item writes nothing.
52
+ */
53
+ export declare function notifyItemShared(db: KernelSchemaDb, ownerOrgId: string | null, ref: OwnedRef, name: string, orgs: readonly string[] | "all_orgs"): Promise<void>;
54
+ /**
55
+ * Tells every live org the org-owned item is on in, except its owner (P3-18, {@link orgsUsing}),
56
+ * that it changed version (`shared_item_updated`); returns how many orgs were told. A platform-owned
57
+ * or missing item tells nobody.
58
+ */
59
+ export declare function notifySharedUpdate(db: KernelSchemaDb, ref: OwnedRef, change: {
60
+ name: string;
61
+ from: string;
62
+ to: string;
63
+ }): Promise<number>;
@@ -0,0 +1,91 @@
1
+ // Org notices (`org_notices`, plugin scope phase 3, spec §14, ruling P3-22): what an org's admins
2
+ // are told about shared items and uploads, until one of them dismisses it. The writers run in the
3
+ // caller's transaction, so a notice exists exactly when its change does.
4
+ import { randomUUID } from "node:crypto";
5
+ import { orgsUsing, ownerOf, ownersOf } from "../catalog/ownership.js";
6
+ /** An owned ref's display name: a plugin's (skills and agent templates have none). */
7
+ const refDisplayName = (db, ref) => ref.kind === "plugin" ? itemDisplayName(db, ref.id) : Promise.resolve(null);
8
+ /** A catalog item's display name for an upload notice (null without one, or for an unknown id). */
9
+ export async function itemDisplayName(db, itemId) {
10
+ const row = await db
11
+ .selectFrom("catalog_items")
12
+ .select("display_name")
13
+ .where("id", "=", itemId)
14
+ .executeTakeFirst();
15
+ return row?.display_name ?? null;
16
+ }
17
+ /** Writes an org notice in the caller's transaction. */
18
+ export async function addOrgNotice(db, orgId, kind, detail) {
19
+ await db
20
+ .insertInto("org_notices")
21
+ .values({ id: randomUUID(), org_id: orgId, kind, detail: JSON.stringify(detail) })
22
+ .execute();
23
+ }
24
+ const OWNER_TABLE = {
25
+ plugin: "catalog_items",
26
+ skill: "platform_skills",
27
+ agent_template: "platform_agent_templates",
28
+ };
29
+ /**
30
+ * Tells the owner org that its item was shared (`item_shared`): with each org of `orgs` (the owner
31
+ * itself is skipped), or with `all_orgs`. A platform-owned item writes nothing.
32
+ */
33
+ export async function notifyItemShared(db, ownerOrgId, ref, name, orgs) {
34
+ if (ownerOrgId === null)
35
+ return;
36
+ const displayName = await refDisplayName(db, ref);
37
+ if (orgs === "all_orgs") {
38
+ await addOrgNotice(db, ownerOrgId, "item_shared", {
39
+ ref,
40
+ name,
41
+ displayName,
42
+ org: "all_orgs",
43
+ });
44
+ return;
45
+ }
46
+ const targets = [...new Set(orgs)].filter((o) => o !== ownerOrgId);
47
+ if (targets.length === 0)
48
+ return;
49
+ const rows = await db
50
+ .selectFrom("orgs")
51
+ .select(["id", "name"])
52
+ .where("id", "in", targets)
53
+ .execute();
54
+ const names = new Map(rows.map((r) => [r.id, r.name]));
55
+ for (const id of targets) {
56
+ await addOrgNotice(db, ownerOrgId, "item_shared", {
57
+ ref,
58
+ name,
59
+ displayName,
60
+ org: { id, name: names.get(id) ?? id },
61
+ });
62
+ }
63
+ }
64
+ /**
65
+ * Tells every live org the org-owned item is on in, except its owner (P3-18, {@link orgsUsing}),
66
+ * that it changed version (`shared_item_updated`); returns how many orgs were told. A platform-owned
67
+ * or missing item tells nobody.
68
+ */
69
+ export async function notifySharedUpdate(db, ref, change) {
70
+ const row = await db
71
+ .selectFrom(OWNER_TABLE[ref.kind])
72
+ .select("owner_org_id")
73
+ .where("id", "=", ref.id)
74
+ .executeTakeFirst();
75
+ if (!row || row.owner_org_id === null)
76
+ return 0;
77
+ const owner = ownerOf(row.owner_org_id, await ownersOf(db, [row.owner_org_id]));
78
+ const using = await orgsUsing(db, ref, { except: row.owner_org_id });
79
+ const displayName = await refDisplayName(db, ref);
80
+ for (const o of using) {
81
+ await addOrgNotice(db, o.id, "shared_item_updated", {
82
+ ref,
83
+ name: change.name,
84
+ displayName,
85
+ from: change.from,
86
+ to: change.to,
87
+ owner,
88
+ });
89
+ }
90
+ return using.length;
91
+ }
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ import { type Principal } from "../identity/principal.js";
3
+ import { PlatformInboxService, type PlatformInboxView } from "./platform-inbox.service.js";
4
+ declare const NoticeParamsSchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ }, z.core.$strip>;
7
+ /**
8
+ * The super admin's inbox (`GET /api/v1/admin/inbox`): the platform's requests, permission
9
+ * confirmations, scope sync failures and the migration run that needs a look, newest first, at
10
+ * most 100 (`truncated`: more, `total`: how many in all), and `GET /api/v1/admin/inbox/count`
11
+ * (`{ total }`, the sidebar's count). Super admins only (web session or personal token).
12
+ */
13
+ export declare class PlatformInboxController {
14
+ private readonly inbox;
15
+ constructor(inbox: PlatformInboxService);
16
+ list(): Promise<PlatformInboxView>;
17
+ count(): Promise<{
18
+ total: number;
19
+ }>;
20
+ /** A super admin dismisses a platform notice (`ownership_transferred`) for every super admin. */
21
+ dismissNotice(principal: Principal, params: z.infer<typeof NoticeParamsSchema>): Promise<void>;
22
+ }
23
+ export {};
@@ -0,0 +1,58 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Controller, Get, HttpCode, Inject, Post } from "@nestjs/common";
11
+ import { z } from "zod";
12
+ import { CurrentPrincipal, requireUser, SuperAdmin, } from "../identity/principal.js";
13
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
14
+ import { ZParam } from "../infra/validation/zod-params.js";
15
+ import { PlatformInboxService } from "./platform-inbox.service.js";
16
+ const NoticeParamsSchema = z.object({ id: z.string().min(1).max(100) });
17
+ class NoticeParams extends createZodDto(NoticeParamsSchema, "PlatformInboxNoticeParams") {
18
+ }
19
+ /**
20
+ * The super admin's inbox (`GET /api/v1/admin/inbox`): the platform's requests, permission
21
+ * confirmations, scope sync failures and the migration run that needs a look, newest first, at
22
+ * most 100 (`truncated`: more, `total`: how many in all), and `GET /api/v1/admin/inbox/count`
23
+ * (`{ total }`, the sidebar's count). Super admins only (web session or personal token).
24
+ */
25
+ let PlatformInboxController = class PlatformInboxController {
26
+ inbox;
27
+ constructor(inbox) {
28
+ this.inbox = inbox;
29
+ }
30
+ list() {
31
+ return this.inbox.list();
32
+ }
33
+ async count() {
34
+ return { total: await this.inbox.count() };
35
+ }
36
+ /** A super admin dismisses a platform notice (`ownership_transferred`) for every super admin. */
37
+ async dismissNotice(principal, params) {
38
+ await this.inbox.dismissNotice(requireUser(principal).account.id, params.id);
39
+ }
40
+ };
41
+ __decorate([
42
+ Get()
43
+ ], PlatformInboxController.prototype, "list", null);
44
+ __decorate([
45
+ Get("count")
46
+ ], PlatformInboxController.prototype, "count", null);
47
+ __decorate([
48
+ Post("notices/:id/dismiss"),
49
+ HttpCode(204),
50
+ __param(0, CurrentPrincipal()),
51
+ __param(1, ZParam(NoticeParams))
52
+ ], PlatformInboxController.prototype, "dismissNotice", null);
53
+ PlatformInboxController = __decorate([
54
+ Controller("api/v1/admin/inbox"),
55
+ SuperAdmin(),
56
+ __param(0, Inject(PlatformInboxService))
57
+ ], PlatformInboxController);
58
+ export { PlatformInboxController };
@@ -0,0 +1,151 @@
1
+ import type { LocalizedName } from "@capybara-hq/plugin-sdk";
2
+ import { type CatalogItemView, CatalogService } from "../catalog/catalog.service.js";
3
+ import { CatalogRequestsService, type CatalogRequestView } from "../catalog/requests.service.js";
4
+ import type { ScopeSyncOp } from "../db/kernel-schema.js";
5
+ import { KernelDb } from "../infra/database/kernel-db.js";
6
+ import type { PlatformNoticeDetails } from "./platform-notices.js";
7
+ /** The most items one platform inbox read returns. */
8
+ export declare const PLATFORM_INBOX_MAX_ITEMS = 100;
9
+ /** The most open scope sync failures one read takes. */
10
+ export declare const SCOPE_SYNC_FAILURES_LIST_MAX = 200;
11
+ /**
12
+ * A platform components migration run unfinished this long after its start is stuck (its worker
13
+ * stopped mid-run; a run takes seconds, and the next one starts at the next worker start or day).
14
+ */
15
+ export declare const MIGRATION_RUN_STUCK_MS: number;
16
+ /**
17
+ * An open failure of the plugin scope sync: its last attempt to install the plugin in the org, to
18
+ * uninstall it, or to install the dependencies a platform update added (`dependencies`) failed,
19
+ * and the org still differs from the scope in that direction.
20
+ */
21
+ export interface ScopeSyncFailureView {
22
+ item: {
23
+ id: string;
24
+ name: string;
25
+ displayName: LocalizedName | null;
26
+ };
27
+ org: {
28
+ id: string;
29
+ name: string;
30
+ };
31
+ op: ScopeSyncOp;
32
+ /** The error code (`internal` for an unexpected error) and its message. */
33
+ code: string;
34
+ message: string;
35
+ failedAt: string;
36
+ }
37
+ /**
38
+ * The latest platform components migration run (`platform_migration_runs`) when it needs a look:
39
+ * finished with catalog items whose components could not be written (`itemsFailed`,
40
+ * `<name>@<version>`), or `stuck` (unfinished {@link MIGRATION_RUN_STUCK_MS} after its start).
41
+ */
42
+ export interface MigrationRunView {
43
+ id: string;
44
+ startedAt: string;
45
+ finishedAt: string | null;
46
+ stuck: boolean;
47
+ itemsFailed: string[];
48
+ }
49
+ /**
50
+ * One item of the super admin's inbox (by `type`). Nothing is decided in the inbox: each item is
51
+ * acted on where it lives (the web links to it).
52
+ * - `catalog_request`: an org's pending request to the platform (`access`: use a plugin shown to
53
+ * it; `import`: bring in a marketplace entry), as `GET /admin/catalog/requests` lists them;
54
+ * - `permission_confirmation`: a platform plugin whose extension permissions wait for a super
55
+ * admin's confirmation (`GET /admin/catalog/items?pending=true`), `id` = the item's;
56
+ * - `org_upload_pending`: an org-owned plugin whose uploaded version (with an extension) waits for
57
+ * the super admin in 待确认 (ruling P3-22; confirmed or rejected there), `id` = the item's;
58
+ * - `scope_sync_failed`: an open scope sync failure, `id` = `<itemId>/<orgId>`;
59
+ * - `platform_migration`: the latest migration run, failed items or stuck, `id` = the run's;
60
+ * - `ownership_transferred`: a deleted org's shared item now belongs to the platform, until a
61
+ * super admin dismisses it (`POST admin/inbox/notices/:id/dismiss`).
62
+ */
63
+ export type PlatformInboxItem = {
64
+ type: "catalog_request";
65
+ id: string;
66
+ createdAt: string;
67
+ request: CatalogRequestView;
68
+ } | {
69
+ type: "permission_confirmation";
70
+ id: string;
71
+ createdAt: string;
72
+ item: CatalogItemView;
73
+ } | {
74
+ type: "org_upload_pending";
75
+ id: string;
76
+ createdAt: string;
77
+ item: CatalogItemView;
78
+ } | {
79
+ type: "scope_sync_failed";
80
+ id: string;
81
+ createdAt: string;
82
+ failure: ScopeSyncFailureView;
83
+ } | {
84
+ type: "platform_migration";
85
+ id: string;
86
+ createdAt: string;
87
+ run: MigrationRunView;
88
+ } | {
89
+ type: "ownership_transferred";
90
+ id: string;
91
+ createdAt: string;
92
+ notice: PlatformNoticeView;
93
+ };
94
+ /** An open platform notice (`platform_notices`, kind `ownership_transferred`). */
95
+ export interface PlatformNoticeView {
96
+ id: string;
97
+ kind: "ownership_transferred";
98
+ createdAt: string;
99
+ detail: PlatformNoticeDetails["ownership_transferred"];
100
+ }
101
+ /**
102
+ * `GET /admin/inbox`: newest first, at most {@link PLATFORM_INBOX_MAX_ITEMS}; `truncated`: more;
103
+ * `total`: how many items wait in all (also `GET /admin/inbox/count`).
104
+ */
105
+ export interface PlatformInboxView {
106
+ items: PlatformInboxItem[];
107
+ truncated: boolean;
108
+ total: number;
109
+ }
110
+ /**
111
+ * The super admin's inbox (plugin scope spec §5.1 rule 5, §13.5): what waits on the platform,
112
+ * gathered from the sources the admin pages read (the 待确认 tab's requests and permission
113
+ * confirmations), plus the scope sync's open failures and the platform components migration's
114
+ * latest run. Stateless, read live from PG.
115
+ */
116
+ export declare class PlatformInboxService {
117
+ private readonly requests;
118
+ private readonly catalog;
119
+ private readonly kdb;
120
+ constructor(requests: Pick<CatalogRequestsService, "listDeployment" | "countPendingDeployment">, catalog: Pick<CatalogService, "list">, kdb: KernelDb);
121
+ list(): Promise<PlatformInboxView>;
122
+ /**
123
+ * How many items wait (the sidebar's count): the same sources, counted where they can be (the
124
+ * requests and the failures; the permission confirmations are the catalog's pending list).
125
+ */
126
+ count(): Promise<number>;
127
+ private countNotices;
128
+ /** The open platform notices, newest first, at most {@link PLATFORM_INBOX_MAX_ITEMS}. */
129
+ private notices;
130
+ /**
131
+ * A super admin dismisses a platform notice (for every super admin). Dismissing one already
132
+ * dismissed is fine; no notice with that id -> `inbox.notice_not_found`.
133
+ */
134
+ dismissNotice(accountId: string, id: string): Promise<void>;
135
+ /**
136
+ * The open failures still worth a look, joined to their item and org: of a live item and org,
137
+ * and the pair still differs in the failed direction (a person may have converged it meanwhile):
138
+ * an install failure while the org has no live install of the item; an uninstall or dependencies
139
+ * failure while it has one.
140
+ */
141
+ private failureRows;
142
+ private countScopeSyncFailures;
143
+ /** The open scope sync failures ({@link failureRows}), newest first. */
144
+ private scopeSyncFailures;
145
+ /**
146
+ * The latest migration run when it needs a look (see {@link MigrationRunView}); null when it
147
+ * finished without failed items, is still running, or there was none. An earlier run's failure
148
+ * is not shown: each run tries every unwritten item again.
149
+ */
150
+ private migrationRun;
151
+ }