@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
@@ -0,0 +1,66 @@
1
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
2
+ /**
3
+ * The wake rules of an idle conversation (spec 2026-11-05-background-bash-design §3, generalized
4
+ * by agent map spec §5.3 to a second event kind): a finished background task or a sub-agent's
5
+ * delivery starts a run. Read by `RunQueue.ensureRun` in its transaction: every path that may start
6
+ * a run (a finish, a delivery, the end of a run, the delayed wake job, a page opening) applies the
7
+ * same rules. `BackgroundWake` is what calls `ensureRun` when a task finishes or a delivery lands.
8
+ */
9
+ /** No two wakes of one conversation start within this window. */
10
+ export declare const WAKE_WINDOW_MS = 60000;
11
+ /** The delayed job that wakes a conversation at the end of its window (`cap-kernel-maintenance`). */
12
+ export declare const BG_WAKE_JOB = "bg-wake";
13
+ /**
14
+ * Its job id: one job per conversation and window end (no `:`). `retry` > 0 is a job that fired
15
+ * before the window ended on the database's clock and scheduled itself again: a distinct id, since
16
+ * BullMQ ignores an add under the id of the job still running.
17
+ */
18
+ export declare const bgWakeJobId: (conversationId: string, windowEnd: number, retry?: number) => string;
19
+ export interface BgWakeJobData {
20
+ conversationId: string;
21
+ /** How many times this window's wake fired early (absent: none). */
22
+ retry?: number;
23
+ }
24
+ /**
25
+ * What a conversation's unconsumed wake events decide:
26
+ * - `wake`: start a run whose boundary is the event at `seq`, as `triggerAccountId`;
27
+ * - `later`: a wake started less than {@link WAKE_WINDOW_MS} ago; the window ends at `windowEnd`
28
+ * (epoch ms, the database's clock), `delayMs` from now;
29
+ * - null: nothing wakes the conversation.
30
+ */
31
+ export type WakeDecision = {
32
+ kind: "wake";
33
+ seq: number;
34
+ triggerAccountId: string;
35
+ } | {
36
+ kind: "later";
37
+ windowEnd: number;
38
+ delayMs: number;
39
+ } | null;
40
+ /**
41
+ * The wake decision for a conversation that is idle and has no unconsumed message (the caller
42
+ * checked these under the conversation's row lock): a chat conversation (`rootId` = its own id) or
43
+ * a sub-agent's (`rootId` = the root of its tree). An event wakes it when:
44
+ * - it is after `consumed` and is either
45
+ * - a `background_task_finished` of a task of this conversation (the join on `conversation_id`
46
+ * reads the task's trigger account) that is not `reported` (a tool call already told the model)
47
+ * and has no `stoppedBy` (`"person"`: that person is looking at the conversation;
48
+ * `"deletion"`: the conversation is being deleted), or
49
+ * - a `subagent_delivery` (its own `triggerAccountId`: the trigger account of the child run that
50
+ * delivered it, agent map spec §7), except the finish of a child that was stopped
51
+ * (`status: "aborted"`: a person's stop of it or of a sub-agent above it, a tree stop, the
52
+ * deletion of the root), for the same reason as a person's task stop; a tree stop thus never
53
+ * wakes the stopped ancestors through their descendants' finishes, which land after them;
54
+ * - the wake setting is on (the org's override, else `deploymentOn`);
55
+ * - the root's queue is not paused and the root is not deleted (a paused root holds the wakes of
56
+ * the whole tree, agent map spec §5.3);
57
+ * - the event's trigger account can still send to the root (`canSend`, which the caller binds to
58
+ * the root);
59
+ * - no other wake of this conversation started in the last {@link WAKE_WINDOW_MS} (else `later`).
60
+ * The boundary is the newest event whose trigger account can send.
61
+ */
62
+ export declare function wakeDecisionIn(t: KernelSchemaDb, conv: {
63
+ id: string;
64
+ orgId: string;
65
+ rootId: string;
66
+ }, consumed: number, deploymentOn: boolean, canSend: (accountId: string) => Promise<boolean>): Promise<WakeDecision>;
@@ -0,0 +1,113 @@
1
+ import { sql } from "kysely";
2
+ import { effectiveWakeOnBackgroundTask, readOrgSettings } from "../orgs/settings.service.js";
3
+ /**
4
+ * The wake rules of an idle conversation (spec 2026-11-05-background-bash-design §3, generalized
5
+ * by agent map spec §5.3 to a second event kind): a finished background task or a sub-agent's
6
+ * delivery starts a run. Read by `RunQueue.ensureRun` in its transaction: every path that may start
7
+ * a run (a finish, a delivery, the end of a run, the delayed wake job, a page opening) applies the
8
+ * same rules. `BackgroundWake` is what calls `ensureRun` when a task finishes or a delivery lands.
9
+ */
10
+ /** No two wakes of one conversation start within this window. */
11
+ export const WAKE_WINDOW_MS = 60_000;
12
+ /** The delayed job that wakes a conversation at the end of its window (`cap-kernel-maintenance`). */
13
+ export const BG_WAKE_JOB = "bg-wake";
14
+ /**
15
+ * Its job id: one job per conversation and window end (no `:`). `retry` > 0 is a job that fired
16
+ * before the window ended on the database's clock and scheduled itself again: a distinct id, since
17
+ * BullMQ ignores an add under the id of the job still running.
18
+ */
19
+ export const bgWakeJobId = (conversationId, windowEnd, retry = 0) => `bg-wake-${conversationId}-${windowEnd}${retry > 0 ? `-r${retry}` : ""}`;
20
+ /** How many unconsumed events are tried for a trigger account that can still send. */
21
+ const CANDIDATES = 20;
22
+ /** The event types whose run is a wake run (its boundary, `runs.trigger_seq`, is one of them). */
23
+ const WAKE_EVENT_TYPES = ["background_task_finished", "subagent_delivery"];
24
+ /**
25
+ * The wake decision for a conversation that is idle and has no unconsumed message (the caller
26
+ * checked these under the conversation's row lock): a chat conversation (`rootId` = its own id) or
27
+ * a sub-agent's (`rootId` = the root of its tree). An event wakes it when:
28
+ * - it is after `consumed` and is either
29
+ * - a `background_task_finished` of a task of this conversation (the join on `conversation_id`
30
+ * reads the task's trigger account) that is not `reported` (a tool call already told the model)
31
+ * and has no `stoppedBy` (`"person"`: that person is looking at the conversation;
32
+ * `"deletion"`: the conversation is being deleted), or
33
+ * - a `subagent_delivery` (its own `triggerAccountId`: the trigger account of the child run that
34
+ * delivered it, agent map spec §7), except the finish of a child that was stopped
35
+ * (`status: "aborted"`: a person's stop of it or of a sub-agent above it, a tree stop, the
36
+ * deletion of the root), for the same reason as a person's task stop; a tree stop thus never
37
+ * wakes the stopped ancestors through their descendants' finishes, which land after them;
38
+ * - the wake setting is on (the org's override, else `deploymentOn`);
39
+ * - the root's queue is not paused and the root is not deleted (a paused root holds the wakes of
40
+ * the whole tree, agent map spec §5.3);
41
+ * - the event's trigger account can still send to the root (`canSend`, which the caller binds to
42
+ * the root);
43
+ * - no other wake of this conversation started in the last {@link WAKE_WINDOW_MS} (else `later`).
44
+ * The boundary is the newest event whose trigger account can send.
45
+ */
46
+ export async function wakeDecisionIn(t, conv, consumed, deploymentOn, canSend) {
47
+ const finishes = await t
48
+ .selectFrom("conversation_events as e")
49
+ .innerJoin("background_tasks as b", (j) => j
50
+ .on(sql `b.id = e.payload ->> 'taskId'`)
51
+ .onRef("b.conversation_id", "=", "e.conversation_id"))
52
+ .select(["e.seq", "b.trigger_account_id as account"])
53
+ .where("e.conversation_id", "=", conv.id)
54
+ .where("e.type", "=", "background_task_finished")
55
+ .where("e.seq", ">", String(consumed))
56
+ .where(sql `(e.payload ->> 'reported')::boolean = false`)
57
+ .where(sql `e.payload ->> 'stoppedBy' IS NULL`)
58
+ .orderBy("e.seq", "desc")
59
+ .limit(CANDIDATES)
60
+ .execute();
61
+ const deliveries = await t
62
+ .selectFrom("conversation_events as e")
63
+ .select(["e.seq", sql `e.payload ->> 'triggerAccountId'`.as("account")])
64
+ .where("e.conversation_id", "=", conv.id)
65
+ .where("e.type", "=", "subagent_delivery")
66
+ .where("e.seq", ">", String(consumed))
67
+ .where(sql `e.payload ->> 'status' IS DISTINCT FROM 'aborted'`)
68
+ .orderBy("e.seq", "desc")
69
+ .limit(CANDIDATES)
70
+ .execute();
71
+ const candidates = [...finishes, ...deliveries]
72
+ .sort((a, b) => Number(b.seq) - Number(a.seq))
73
+ .slice(0, CANDIDATES);
74
+ if (candidates.length === 0)
75
+ return null;
76
+ const org = (await readOrgSettings(t, conv.orgId)).wakeOnBackgroundTask;
77
+ if (!effectiveWakeOnBackgroundTask(deploymentOn, org))
78
+ return null;
79
+ const root = await t
80
+ .selectFrom("conversations")
81
+ .select(["queue_paused", "deleted_at"])
82
+ .where("id", "=", conv.rootId)
83
+ .executeTakeFirst();
84
+ if (!root || root.queue_paused || root.deleted_at !== null)
85
+ return null;
86
+ let boundary;
87
+ for (const c of candidates) {
88
+ if (await canSend(c.account)) {
89
+ boundary = { seq: Number(c.seq), triggerAccountId: c.account };
90
+ break;
91
+ }
92
+ }
93
+ if (boundary === undefined)
94
+ return null;
95
+ // the window starts when the last wake run was created (PG, so every replica reads the same)
96
+ const last = await t
97
+ .selectFrom("runs as r")
98
+ .innerJoin("conversation_events as w", (j) => j.onRef("w.conversation_id", "=", "r.conversation_id").onRef("w.seq", "=", "r.trigger_seq"))
99
+ .select([
100
+ sql `floor(extract(epoch from max(r.created_at)) * 1000)::bigint`.as("started"),
101
+ sql `floor(extract(epoch from now()) * 1000)::bigint`.as("now"),
102
+ ])
103
+ .where("r.conversation_id", "=", conv.id)
104
+ .where("w.type", "in", WAKE_EVENT_TYPES)
105
+ .executeTakeFirst();
106
+ if (last?.started != null) {
107
+ const windowEnd = Number(last.started) + WAKE_WINDOW_MS;
108
+ const now = Number(last.now);
109
+ if (windowEnd > now)
110
+ return { kind: "later", windowEnd, delayMs: windowEnd - now };
111
+ }
112
+ return { kind: "wake", ...boundary };
113
+ }
@@ -0,0 +1,30 @@
1
+ import type { Logger } from "@capybara-hq/plugin-sdk";
2
+ import { type OnApplicationShutdown } from "@nestjs/common";
3
+ import { KernelEvents } from "../infra/events/kernel-events.js";
4
+ import { RunQueue } from "../runtime/run-queue.js";
5
+ /**
6
+ * Wakes an idle conversation when one of its background tasks finished (spec
7
+ * 2026-11-05-background-bash-design §3) or a sub-agent delivered to it (agent map spec §5.3).
8
+ * {@link BackgroundTaskFinisher} announces the committed finish (`background_task.finished`) and
9
+ * `SubagentDeliveries` the committed delivery (`subagent.delivered`), both in-process domain
10
+ * events emitted after the commit; {@link onFinished} asks the run queue for a run. The wake rules
11
+ * themselves (own task, not reported, the wake setting, the root's queue not paused, the trigger
12
+ * account can still send to the root, the 60 s window and its delayed `bg-wake` job) are applied
13
+ * by `RunQueue.ensureRun` in its transaction (`wakeDecisionIn`, ./wake-rules.ts), so a run's end,
14
+ * the delayed job and a page opening apply the same rules; a lost event is re-derived by the next
15
+ * of them. Provided by `RuntimeModule`.
16
+ */
17
+ export declare class BackgroundWake implements OnApplicationShutdown {
18
+ private readonly runs;
19
+ private readonly log;
20
+ /** Drops the subscriptions (the events may outlive this instance). */
21
+ private readonly unsubscribe;
22
+ constructor(runs: Pick<RunQueue, "ensureRun">, events: KernelEvents, log: Pick<Logger, "warn">);
23
+ /**
24
+ * A task of `conversationId` finished, or a sub-agent delivered to it (after the commit): starts
25
+ * a wake run when the rules allow it, or schedules one at the end of the wake window. A run in
26
+ * progress absorbs the event at its next step instead, or its end starts the wake. Never throws.
27
+ */
28
+ onFinished(conversationId: string): Promise<void>;
29
+ onApplicationShutdown(): void;
30
+ }
@@ -0,0 +1,63 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from "@nestjs/common";
11
+ import { KernelEvents } from "../infra/events/kernel-events.js";
12
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
13
+ import { RunQueue } from "../runtime/run-queue.js";
14
+ /**
15
+ * Wakes an idle conversation when one of its background tasks finished (spec
16
+ * 2026-11-05-background-bash-design §3) or a sub-agent delivered to it (agent map spec §5.3).
17
+ * {@link BackgroundTaskFinisher} announces the committed finish (`background_task.finished`) and
18
+ * `SubagentDeliveries` the committed delivery (`subagent.delivered`), both in-process domain
19
+ * events emitted after the commit; {@link onFinished} asks the run queue for a run. The wake rules
20
+ * themselves (own task, not reported, the wake setting, the root's queue not paused, the trigger
21
+ * account can still send to the root, the 60 s window and its delayed `bg-wake` job) are applied
22
+ * by `RunQueue.ensureRun` in its transaction (`wakeDecisionIn`, ./wake-rules.ts), so a run's end,
23
+ * the delayed job and a page opening apply the same rules; a lost event is re-derived by the next
24
+ * of them. Provided by `RuntimeModule`.
25
+ */
26
+ let BackgroundWake = class BackgroundWake {
27
+ runs;
28
+ log;
29
+ /** Drops the subscriptions (the events may outlive this instance). */
30
+ unsubscribe;
31
+ constructor(runs, events, log) {
32
+ this.runs = runs;
33
+ this.log = log;
34
+ this.unsubscribe = [
35
+ events.on("background_task.finished", ({ conversationId }) => this.onFinished(conversationId)),
36
+ events.on("subagent.delivered", ({ conversationId }) => this.onFinished(conversationId)),
37
+ ];
38
+ }
39
+ /**
40
+ * A task of `conversationId` finished, or a sub-agent delivered to it (after the commit): starts
41
+ * a wake run when the rules allow it, or schedules one at the end of the wake window. A run in
42
+ * progress absorbs the event at its next step instead, or its end starts the wake. Never throws.
43
+ */
44
+ async onFinished(conversationId) {
45
+ try {
46
+ await this.runs.ensureRun(conversationId);
47
+ }
48
+ catch (err) {
49
+ this.log.warn("background wake failed", { conversationId, err });
50
+ }
51
+ }
52
+ onApplicationShutdown() {
53
+ for (const off of this.unsubscribe)
54
+ off();
55
+ }
56
+ };
57
+ BackgroundWake = __decorate([
58
+ Injectable(),
59
+ __param(0, Inject(RunQueue)),
60
+ __param(1, Inject(KernelEvents)),
61
+ __param(2, Inject(KERNEL_LOGGER))
62
+ ], BackgroundWake);
63
+ export { BackgroundWake };
@@ -1,10 +1,11 @@
1
1
  import type { FastifyReply } from "fastify";
2
2
  import { z } from "zod";
3
- import type { AdminExtensionView } from "../extensions/permission-view.js";
4
3
  import { type Principal } from "../identity/principal.js";
5
4
  import { type CatalogItemDetail, type CatalogItemView, CatalogService, type PermissionsMismatch } from "./catalog.service.js";
5
+ import { CatalogScopeService, type ScopePreview } from "./catalog-scope.service.js";
6
6
  import { OrgCatalogService } from "./org-catalog.service.js";
7
7
  import { type PluginConfirmResult, PluginImport, type PluginReview } from "./plugin-import.js";
8
+ import { PlatformPluginUpdater, type PlatformUpdatePreview, type PlatformUpdateResult } from "./plugin-upgrade.js";
8
9
  declare const NpmBody: z.ZodObject<{
9
10
  package: z.ZodString;
10
11
  version: z.ZodOptional<z.ZodString>;
@@ -14,21 +15,42 @@ declare const GitBody: z.ZodObject<{
14
15
  ref: z.ZodOptional<z.ZodString>;
15
16
  path: z.ZodOptional<z.ZodString>;
16
17
  }, z.core.$strict>;
17
- declare const PolicyBody: z.ZodObject<{
18
- policy: z.ZodEnum<{
19
- allow: "allow";
20
- disabled: "disabled";
21
- needs_approval: "needs_approval";
22
- }>;
23
- }, z.core.$strip>;
24
- declare const InstallBody: z.ZodObject<{
25
- version: z.ZodString;
26
- }, z.core.$strip>;
27
18
  declare const ConfirmBody: z.ZodObject<{
28
19
  reviewHash: z.ZodString;
29
- deployExtension: z.ZodBoolean;
20
+ scope: z.ZodOptional<z.ZodEnum<{
21
+ all: "all";
22
+ named: "named";
23
+ optional: "optional";
24
+ }>>;
25
+ orgs: z.ZodOptional<z.ZodArray<z.ZodString>>;
30
26
  pinnedSuggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
- }, z.core.$strip>;
27
+ }, z.core.$strict>;
28
+ /** `{ scope, orgs? }` (a scope change) or `{ disabled: true }` (a disable), not both. */
29
+ declare const ScopePreviewBody: z.ZodObject<{
30
+ scope: z.ZodOptional<z.ZodEnum<{
31
+ all: "all";
32
+ named: "named";
33
+ optional: "optional";
34
+ }>>;
35
+ orgs: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
+ disabled: z.ZodOptional<z.ZodLiteral<true>>;
37
+ }, z.core.$strict>;
38
+ declare const ScopeBody: z.ZodObject<{
39
+ scope: z.ZodEnum<{
40
+ all: "all";
41
+ named: "named";
42
+ optional: "optional";
43
+ }>;
44
+ orgs: z.ZodOptional<z.ZodArray<z.ZodString>>;
45
+ scopeHash: z.ZodString;
46
+ }, z.core.$strict>;
47
+ declare const DisabledBody: z.ZodObject<{
48
+ disabled: z.ZodBoolean;
49
+ scopeHash: z.ZodOptional<z.ZodString>;
50
+ }, z.core.$strict>;
51
+ declare const ShownBody: z.ZodObject<{
52
+ shownToOthers: z.ZodBoolean;
53
+ }, z.core.$strict>;
32
54
  declare const ListQuery: z.ZodObject<{
33
55
  includeDeleted: z.ZodOptional<z.ZodEnum<{
34
56
  false: "false";
@@ -36,18 +58,38 @@ declare const ListQuery: z.ZodObject<{
36
58
  }>>;
37
59
  limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
38
60
  offset: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
61
+ pending: z.ZodOptional<z.ZodEnum<{
62
+ false: "false";
63
+ true: "true";
64
+ }>>;
39
65
  }, z.core.$strip>;
66
+ declare const ConfirmPermissionsBody: z.ZodObject<{
67
+ permissionsHash: z.ZodString;
68
+ }, z.core.$strict>;
69
+ /** The reason shown to the owner org in its `upload_rejected` notice (optional). */
70
+ declare const RejectBody: z.ZodObject<{
71
+ reason: z.ZodOptional<z.ZodString>;
72
+ }, z.core.$strict>;
73
+ declare const UpdatePreviewBody: z.ZodObject<{
74
+ version: z.ZodString;
75
+ }, z.core.$strict>;
76
+ declare const UpdateBody: z.ZodObject<{
77
+ version: z.ZodString;
78
+ diffHash: z.ZodString;
79
+ }, z.core.$strict>;
40
80
  /**
41
- * The enterprise catalog (`/api/v1/admin/catalog/*`, enterprise admins): plugin import (upload / npm
42
- * prepare, then confirm), the item list and detail, policy, delete, and installing an item's
43
- * extension on the deployment. Writes re-check the enterprise admin inside the service's lock and are
81
+ * The platform catalog (`/api/v1/admin/catalog/*`, super admins): plugin import (upload / npm
82
+ * prepare, then confirm, which installs the plugin's extension), the item list and detail, scope and
83
+ * disable (previewed, then confirmed with `scopeHash`), delete. Writes re-check the super admin inside the service's lock and are
44
84
  * audited.
45
85
  */
46
86
  export declare class AdminCatalogController {
47
87
  private readonly catalog;
48
88
  private readonly pluginImport;
49
89
  private readonly orgCatalog;
50
- constructor(catalog: CatalogService, pluginImport: PluginImport, orgCatalog: OrgCatalogService);
90
+ private readonly scope;
91
+ private readonly updater;
92
+ constructor(catalog: CatalogService, pluginImport: PluginImport, orgCatalog: OrgCatalogService, scope: CatalogScopeService, updater: PlatformPluginUpdater);
51
93
  /**
52
94
  * Prepares the import of an uploaded plugin (an npm-pack tgz as the raw body,
53
95
  * `application/octet-stream`, at most `packages.maxBytes`): reads and checks the whole plugin
@@ -97,11 +139,13 @@ export declare class AdminCatalogController {
97
139
  permissionsMismatch?: PermissionsMismatch;
98
140
  }>;
99
141
  /**
100
- * Confirms a staged import: approves the plugin's extension when this import installs it (writes
101
- * its snapshot) and creates the item or adds the version; with `deployExtension` it installs and
102
- * enables the plugin's own extension after the commit and returns `{ item, deploy }`, where
103
- * `deploy` says enabled / failed (+ code); a failed deploy does not make the committed import fail
104
- * (retry from the extension admin by sha256). A foreseeable failure (a downgrade to a version with
142
+ * Confirms a staged import: approves the plugin's extension when this import installs or upgrades
143
+ * it (writes its snapshot), creates the item (with `scope`, default `optional`; `orgs` only with
144
+ * `named`, each an existing org, else 400 `validation_failed`) or adds the version, installs and
145
+ * enables the plugin's own extension after the commit and enqueues the item's scope sync; returns
146
+ * `{ item, deploy }`, where `deploy` says enabled / failed (+ code), null without an extension to
147
+ * deploy; a failed deploy does not make the committed import fail (retry from the extension admin
148
+ * by sha256). An unknown field (the removed `deployExtension`) -> 400 `validation_failed`. A foreseeable failure (a downgrade to a version with
105
149
  * unrun migrations) is a 409 `extension.downgrade_unsupported` before anything is written.
106
150
  * Staging missing or expired -> 404 `plugin.staging_not_found`; `reviewHash` differs or the
107
151
  * extension on the deployment changed -> 409 `plugin.review_stale`. `pinnedSuggestions` (skill
@@ -129,15 +173,70 @@ export declare class AdminCatalogController {
129
173
  * `sendCatalogIcon`). No icon -> 404 `catalog.icon_not_found`.
130
174
  */
131
175
  icon(id: string, reply: FastifyReply): Promise<void>;
132
- /** 改策略(allow / needs_approval / disabled)。 */
133
- setPolicy(principal: Principal, id: string, body: z.infer<typeof PolicyBody>): Promise<CatalogItemView>;
134
- /** 删除条目(软删除,已安装的组件不受影响)。 */
135
- remove(principal: Principal, id: string): Promise<void>;
136
176
  /**
137
- * Installs the extension of a version of an item on the deployment (a new install starts disabled;
138
- * unapproved permissions still need approval). A version without an extension -> 409
139
- * `catalog.no_extension`.
177
+ * What a scope change (`{ scope, orgs? }`, `orgs` only with `named`) or a disable
178
+ * (`{ disabled: true }`) would take away: `{ affected: [{ orgId, orgName, agents,
179
+ * connectorsKept }], needsConfig, scopeHash }` (spec §5 rule 8; nothing written; the connectors
180
+ * stay as the orgs' own). A builtin item -> 409 `plugin.builtin`; unknown
181
+ * orgs -> 400 `validation_failed`.
182
+ */
183
+ previewScope(id: string, body: z.infer<typeof ScopePreviewBody>): Promise<ScopePreview>;
184
+ /**
185
+ * Changes the scope, confirmed with the preview's `scopeHash` (recomputed under the item row lock;
186
+ * a difference -> 409 `plugin.scope_stale`); bumps the scope version, audits
187
+ * `catalog.scope_changed` and enqueues the scope sync. Builtin -> 409 `plugin.builtin`.
188
+ */
189
+ setScope(principal: Principal, id: string, body: z.infer<typeof ScopeBody>): Promise<CatalogItemView>;
190
+ /**
191
+ * Disables the plugin on the whole deployment (`scopeHash` of the `{ disabled: true }` preview
192
+ * required; the scope sync then uninstalls it everywhere, its scope and the org switches are kept)
193
+ * or enables it again (no hash; the sync reinstalls where it is wanted). Builtin -> 409
194
+ * `plugin.builtin`; a stale hash -> 409 `plugin.scope_stale`.
195
+ */
196
+ setDisabled(principal: Principal, id: string, body: z.infer<typeof DisabledBody>): Promise<CatalogItemView>;
197
+ /**
198
+ * Confirms the item's extension permissions (the admin's 待确认; body `{ permissionsHash }` from
199
+ * the item view): approves the current permission set (snapshot source `web`) and installs and
200
+ * enables an extension that was never deployed. A changed set -> 409 `extension.approval_stale`;
201
+ * nothing to confirm -> 409 `extension.not_pending`. Returns the item. An org's upload
202
+ * (`owner.kind` org, ruling P3-10): the digest of its pending version's package; a first version
203
+ * is installed, approved, enabled and synced, a new version applied by the platform update
204
+ * (the item removed meanwhile -> 409 `catalog.item_removed`, P3-21).
140
205
  */
141
- installToDeployment(principal: Principal, id: string, body: z.infer<typeof InstallBody>): Promise<AdminExtensionView>;
206
+ confirmPermissions(principal: Principal, id: string, body: z.infer<typeof ConfirmPermissionsBody>): Promise<CatalogItemView>;
207
+ /**
208
+ * Rejects an org upload's pending version (ruling P3-10; body `{ reason? }`, told to the owner
209
+ * org in `upload_rejected`): a first version is removed (its name free again), a new version's
210
+ * pending state cleared. Nothing pending, or a platform item (pre-flight F11) -> 409
211
+ * `extension.not_pending`. 204.
212
+ */
213
+ reject(principal: Principal, id: string, body: z.infer<typeof RejectBody>): Promise<void>;
214
+ /**
215
+ * Whether orgs outside a `named` item's list see it as requestable (spec §5.1 rule 1). Hiding it
216
+ * keeps pending requests as they are; new requests from unlisted orgs are then 404. Never makes
217
+ * anything usable, so no preview and no scope sync. Audits `catalog.shown_changed`.
218
+ */
219
+ setShown(principal: Principal, id: string, body: z.infer<typeof ShownBody>): Promise<CatalogItemView>;
220
+ /**
221
+ * What updating the platform plugin to `version` would do (spec §7.1, `PlatformPluginUpdater`):
222
+ * `{ itemId, name, from, to, components: [{ kind, id, name, change: added | removed | upgrade |
223
+ * downgrade | same, from, to, updatedOnOwn, ownScope, pinnedOrgs, kept? }], extension,
224
+ * connectorOrgs: [{ orgId, connectors, needsConfig }], diffHash }`. Nothing written. The same
225
+ * version, a target the deployment's extension or a dependent plugin cannot take -> 409
226
+ * `plugin.upgrade_target_invalid`; an added skill named like one in use where the plugin is on
227
+ * -> 409 `plugin.skill_conflict`; disabled -> 403 `catalog.item_disabled`.
228
+ */
229
+ previewUpdate(id: string, body: z.infer<typeof UpdatePreviewBody>): Promise<PlatformUpdatePreview>;
230
+ /**
231
+ * Updates the platform plugin, confirmed with the preview's `diffHash` (recomputed under the item
232
+ * lock; a difference -> 409 `plugin.upgrade_stale`; another update running -> 409
233
+ * `plugin.install_in_progress`). A failure undoes everything -> 502 `plugin.upgrade_failed`.
234
+ * Audits `plugin.platform_updated`. A version an org upload waits with (or an item whose first
235
+ * version waits) -> 409 `catalog.item_pending`: confirm it in 待确认 (pre-flight F8); the
236
+ * preview answers the same.
237
+ */
238
+ update(principal: Principal, id: string, body: z.infer<typeof UpdateBody>): Promise<PlatformUpdateResult>;
239
+ /** 删除条目(软删除,已安装的组件不受影响)。 */
240
+ remove(principal: Principal, id: string): Promise<void>;
142
241
  }
143
242
  export {};