@capybara-hq/kernel 0.1.0-rc.4 → 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 (507) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +39 -13
  3. package/dist/admin/admin.controller.js +33 -17
  4. package/dist/admin/extensions.controller.d.ts +16 -2
  5. package/dist/admin/extensions.controller.js +26 -6
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +16 -0
  13. package/dist/agents/agent-lookup.js +11 -0
  14. package/dist/agents/agents.controller.d.ts +76 -1
  15. package/dist/agents/agents.controller.js +90 -11
  16. package/dist/agents/agents.module.d.ts +4 -1
  17. package/dist/agents/agents.module.js +32 -6
  18. package/dist/agents/agents.service.d.ts +51 -22
  19. package/dist/agents/agents.service.js +172 -70
  20. package/dist/agents/definition.d.ts +49 -0
  21. package/dist/agents/definition.js +45 -0
  22. package/dist/agents/from-template.d.ts +106 -0
  23. package/dist/agents/from-template.js +649 -0
  24. package/dist/agents/from-template.service.d.ts +60 -0
  25. package/dist/agents/from-template.service.js +161 -0
  26. package/dist/agents/org-templates.d.ts +176 -0
  27. package/dist/agents/org-templates.js +827 -0
  28. package/dist/agents/pending-connector-requests.d.ts +77 -0
  29. package/dist/agents/pending-connector-requests.js +215 -0
  30. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  31. package/dist/agents/pending-connectors.controller.js +91 -0
  32. package/dist/agents/pending-connectors.service.d.ts +62 -0
  33. package/dist/agents/pending-connectors.service.js +282 -0
  34. package/dist/agents/templates.controller.d.ts +86 -5
  35. package/dist/agents/templates.controller.js +171 -7
  36. package/dist/agents/templates.d.ts +127 -23
  37. package/dist/agents/templates.js +475 -52
  38. package/dist/background/background.module.js +8 -1
  39. package/dist/background/finish.d.ts +3 -2
  40. package/dist/background/launch-lock.d.ts +4 -3
  41. package/dist/background/launch-lock.js +4 -3
  42. package/dist/background/poll.job.d.ts +9 -6
  43. package/dist/background/poll.job.js +30 -22
  44. package/dist/background/session.d.ts +13 -2
  45. package/dist/background/session.js +13 -0
  46. package/dist/background/stop.d.ts +12 -6
  47. package/dist/background/stop.js +57 -39
  48. package/dist/background/store.d.ts +18 -6
  49. package/dist/background/store.js +12 -6
  50. package/dist/background/tasks.service.d.ts +15 -5
  51. package/dist/background/tasks.service.js +42 -17
  52. package/dist/background/wake-rules.d.ts +27 -18
  53. package/dist/background/wake-rules.js +52 -22
  54. package/dist/background/wake.d.ts +13 -11
  55. package/dist/background/wake.js +20 -14
  56. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  57. package/dist/catalog/admin-catalog.controller.js +213 -42
  58. package/dist/catalog/catalog-content.d.ts +58 -32
  59. package/dist/catalog/catalog-content.js +34 -8
  60. package/dist/catalog/catalog-import.module.d.ts +7 -0
  61. package/dist/catalog/catalog-import.module.js +60 -0
  62. package/dist/catalog/catalog-items.d.ts +111 -7
  63. package/dist/catalog/catalog-items.js +279 -13
  64. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  65. package/dist/catalog/catalog-scope.service.js +1116 -0
  66. package/dist/catalog/catalog.module.d.ts +7 -9
  67. package/dist/catalog/catalog.module.js +41 -31
  68. package/dist/catalog/catalog.service.d.ts +101 -29
  69. package/dist/catalog/catalog.service.js +104 -106
  70. package/dist/catalog/cli.d.ts +11 -1
  71. package/dist/catalog/cli.js +26 -1
  72. package/dist/catalog/component-promotion.d.ts +96 -0
  73. package/dist/catalog/component-promotion.js +395 -0
  74. package/dist/catalog/component-scope.controller.d.ts +152 -0
  75. package/dist/catalog/component-scope.controller.js +287 -0
  76. package/dist/catalog/component-scope.service.d.ts +303 -0
  77. package/dist/catalog/component-scope.service.js +936 -0
  78. package/dist/catalog/component-state.d.ts +174 -0
  79. package/dist/catalog/component-state.js +437 -0
  80. package/dist/catalog/job-ids.d.ts +30 -0
  81. package/dist/catalog/job-ids.js +25 -0
  82. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  83. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  84. package/dist/catalog/marketplaces.controller.js +56 -7
  85. package/dist/catalog/marketplaces.service.d.ts +54 -14
  86. package/dist/catalog/marketplaces.service.js +71 -22
  87. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  88. package/dist/catalog/org-catalog.controller.js +181 -65
  89. package/dist/catalog/org-catalog.service.d.ts +65 -33
  90. package/dist/catalog/org-catalog.service.js +324 -157
  91. package/dist/catalog/org-extension-switch.d.ts +41 -0
  92. package/dist/catalog/org-extension-switch.js +115 -0
  93. package/dist/catalog/org-extension.controller.d.ts +119 -0
  94. package/dist/catalog/org-extension.controller.js +266 -0
  95. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  96. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  97. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  98. package/dist/catalog/org-plugin-uploads.js +116 -0
  99. package/dist/catalog/owned-items.d.ts +184 -0
  100. package/dist/catalog/owned-items.js +789 -0
  101. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  102. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  103. package/dist/catalog/ownership.d.ts +172 -0
  104. package/dist/catalog/ownership.js +326 -0
  105. package/dist/catalog/platform-components.d.ts +221 -0
  106. package/dist/catalog/platform-components.js +761 -0
  107. package/dist/catalog/platform-migration.d.ts +115 -0
  108. package/dist/catalog/platform-migration.js +582 -0
  109. package/dist/catalog/plugin-import.d.ts +178 -34
  110. package/dist/catalog/plugin-import.js +622 -82
  111. package/dist/catalog/plugin-install.d.ts +185 -41
  112. package/dist/catalog/plugin-install.js +758 -126
  113. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  114. package/dist/catalog/plugin-upgrade.js +1147 -1136
  115. package/dist/catalog/request-rules.d.ts +65 -0
  116. package/dist/catalog/request-rules.js +217 -0
  117. package/dist/catalog/requests.service.d.ts +193 -118
  118. package/dist/catalog/requests.service.js +526 -343
  119. package/dist/catalog/reserved-names.d.ts +8 -0
  120. package/dist/catalog/reserved-names.js +42 -0
  121. package/dist/catalog/scope-orgs.d.ts +21 -0
  122. package/dist/catalog/scope-orgs.js +67 -0
  123. package/dist/catalog/scope-state.d.ts +35 -0
  124. package/dist/catalog/scope-state.js +87 -0
  125. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  126. package/dist/catalog/scope-sync-workers.js +29 -0
  127. package/dist/catalog/scope-sync.d.ts +176 -0
  128. package/dist/catalog/scope-sync.js +576 -0
  129. package/dist/catalog/scope.d.ts +42 -0
  130. package/dist/catalog/scope.js +42 -0
  131. package/dist/catalog/unshare.d.ts +22 -0
  132. package/dist/catalog/unshare.js +118 -0
  133. package/dist/channels/actions.js +1 -0
  134. package/dist/channels/cards.js +20 -2
  135. package/dist/channels/channels.module.js +2 -0
  136. package/dist/channels/inbound.d.ts +9 -1
  137. package/dist/channels/inbound.js +67 -5
  138. package/dist/channels/phrases.d.ts +35 -0
  139. package/dist/channels/phrases.js +29 -0
  140. package/dist/config/docs.js +3 -1
  141. package/dist/config/schema.d.ts +6 -2
  142. package/dist/config/schema.js +46 -22
  143. package/dist/conversations/access.d.ts +6 -4
  144. package/dist/conversations/access.js +27 -5
  145. package/dist/conversations/agent-tree.d.ts +46 -0
  146. package/dist/conversations/agent-tree.js +92 -0
  147. package/dist/conversations/conversations.controller.d.ts +43 -18
  148. package/dist/conversations/conversations.controller.js +79 -38
  149. package/dist/conversations/conversations.module.d.ts +1 -1
  150. package/dist/conversations/conversations.module.js +7 -7
  151. package/dist/conversations/conversations.service.d.ts +69 -12
  152. package/dist/conversations/conversations.service.js +106 -27
  153. package/dist/conversations/environment-status.d.ts +24 -0
  154. package/dist/conversations/environment-status.js +71 -0
  155. package/dist/conversations/event-log.d.ts +20 -5
  156. package/dist/conversations/event-log.js +60 -0
  157. package/dist/conversations/events.d.ts +84 -2
  158. package/dist/conversations/events.js +91 -17
  159. package/dist/conversations/queue.service.d.ts +1 -1
  160. package/dist/conversations/queue.service.js +5 -0
  161. package/dist/conversations/titles.d.ts +5 -3
  162. package/dist/conversations/titles.js +21 -8
  163. package/dist/conversations/tree.d.ts +17 -0
  164. package/dist/conversations/tree.js +42 -0
  165. package/dist/ctx/create-ctx.d.ts +5 -0
  166. package/dist/ctx/create-ctx.js +15 -5
  167. package/dist/db/kernel-schema.d.ts +362 -18
  168. package/dist/environments/access.d.ts +41 -0
  169. package/dist/environments/access.js +77 -0
  170. package/dist/environments/conversation-environments.d.ts +61 -0
  171. package/dist/environments/conversation-environments.js +170 -0
  172. package/dist/environments/dto.d.ts +25 -0
  173. package/dist/environments/dto.js +12 -0
  174. package/dist/environments/environments.controller.d.ts +33 -0
  175. package/dist/environments/environments.controller.js +110 -0
  176. package/dist/environments/environments.module.d.ts +8 -0
  177. package/dist/environments/environments.module.js +27 -0
  178. package/dist/environments/environments.service.d.ts +153 -0
  179. package/dist/environments/environments.service.js +541 -0
  180. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  181. package/dist/environments/legacy-cleanup.job.js +141 -0
  182. package/dist/errors.d.ts +82 -2
  183. package/dist/errors.js +82 -2
  184. package/dist/evals/reconstruct.d.ts +18 -9
  185. package/dist/evals/reconstruct.js +26 -7
  186. package/dist/evals/run-replay.d.ts +4 -2
  187. package/dist/evals/run-replay.js +16 -4
  188. package/dist/evals/step-replay.d.ts +2 -5
  189. package/dist/evals/step-replay.js +1 -1
  190. package/dist/evals/trajectory.service.d.ts +8 -3
  191. package/dist/evals/trajectory.service.js +26 -14
  192. package/dist/evals/worker.d.ts +5 -5
  193. package/dist/evals/worker.js +9 -3
  194. package/dist/extensions/admin-ops.d.ts +36 -10
  195. package/dist/extensions/admin-ops.js +65 -42
  196. package/dist/extensions/admin-view.d.ts +37 -10
  197. package/dist/extensions/admin-view.js +103 -20
  198. package/dist/extensions/bootstrap.d.ts +17 -4
  199. package/dist/extensions/bootstrap.js +70 -9
  200. package/dist/extensions/cli.d.ts +12 -0
  201. package/dist/extensions/cli.js +11 -2
  202. package/dist/extensions/deployment-config.d.ts +28 -5
  203. package/dist/extensions/deployment-config.js +48 -7
  204. package/dist/extensions/effective-config.d.ts +127 -0
  205. package/dist/extensions/effective-config.js +368 -0
  206. package/dist/extensions/extensions.module.js +8 -2
  207. package/dist/extensions/hooks.d.ts +37 -4
  208. package/dist/extensions/hooks.js +82 -16
  209. package/dist/extensions/host.d.ts +19 -1
  210. package/dist/extensions/host.js +30 -7
  211. package/dist/extensions/installs.d.ts +20 -8
  212. package/dist/extensions/installs.js +37 -15
  213. package/dist/extensions/org-config.d.ts +75 -6
  214. package/dist/extensions/org-config.js +184 -32
  215. package/dist/extensions/org-levels.d.ts +37 -0
  216. package/dist/extensions/org-levels.js +71 -0
  217. package/dist/extensions/org-overrides.d.ts +151 -0
  218. package/dist/extensions/org-overrides.js +524 -0
  219. package/dist/extensions/permission-view.d.ts +16 -4
  220. package/dist/extensions/permission-view.js +4 -4
  221. package/dist/extensions/plugin-items.d.ts +21 -0
  222. package/dist/extensions/plugin-items.js +42 -0
  223. package/dist/extensions/point-defaults.d.ts +12 -5
  224. package/dist/extensions/point-defaults.js +37 -9
  225. package/dist/extensions/resolve.d.ts +5 -1
  226. package/dist/extensions/resolve.js +15 -2
  227. package/dist/files/previewers.d.ts +8 -1
  228. package/dist/files/previewers.js +35 -6
  229. package/dist/http/api.module.js +23 -3
  230. package/dist/http/app.d.ts +11 -2
  231. package/dist/http/app.js +31 -5
  232. package/dist/identity/accounts.d.ts +29 -29
  233. package/dist/identity/accounts.js +47 -47
  234. package/dist/identity/audit.d.ts +2 -1
  235. package/dist/identity/auth.guard.d.ts +13 -5
  236. package/dist/identity/auth.guard.js +26 -9
  237. package/dist/identity/identity.module.d.ts +1 -1
  238. package/dist/identity/identity.module.js +4 -4
  239. package/dist/identity/me.controller.js +1 -1
  240. package/dist/identity/principal.d.ts +3 -3
  241. package/dist/identity/principal.js +3 -3
  242. package/dist/identity/settings.d.ts +22 -11
  243. package/dist/identity/settings.js +53 -18
  244. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  245. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  246. package/dist/inbox/inbox.module.d.ts +4 -1
  247. package/dist/inbox/inbox.module.js +7 -3
  248. package/dist/inbox/inbox.service.d.ts +62 -3
  249. package/dist/inbox/inbox.service.js +74 -4
  250. package/dist/inbox/org-notices.d.ts +63 -0
  251. package/dist/inbox/org-notices.js +91 -0
  252. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  253. package/dist/inbox/platform-inbox.controller.js +58 -0
  254. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  255. package/dist/inbox/platform-inbox.service.js +263 -0
  256. package/dist/inbox/platform-notices.d.ts +19 -0
  257. package/dist/inbox/platform-notices.js +9 -0
  258. package/dist/index.d.ts +1 -1
  259. package/dist/index.js +1 -1
  260. package/dist/infra/cli/kernel-cli.module.js +9 -1
  261. package/dist/infra/config/kernel-config.service.js +21 -1
  262. package/dist/infra/database/xact-lock.d.ts +1 -1
  263. package/dist/infra/database/xact-lock.js +1 -1
  264. package/dist/infra/events/kernel-events.d.ts +11 -2
  265. package/dist/infra/queue/add-job-once.d.ts +14 -0
  266. package/dist/infra/queue/add-job-once.js +16 -0
  267. package/dist/kernel.module.js +6 -0
  268. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  269. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  270. package/dist/models/prices.d.ts +5 -5
  271. package/dist/models/prices.js +4 -4
  272. package/dist/models/purposes.controller.d.ts +6 -4
  273. package/dist/models/purposes.controller.js +13 -7
  274. package/dist/models/purposes.d.ts +20 -9
  275. package/dist/models/purposes.js +17 -8
  276. package/dist/orgs/directory-sync.d.ts +14 -5
  277. package/dist/orgs/directory-sync.js +41 -17
  278. package/dist/orgs/offboarding.d.ts +9 -7
  279. package/dist/orgs/offboarding.js +28 -17
  280. package/dist/orgs/org-lock.d.ts +5 -0
  281. package/dist/orgs/org-lock.js +13 -0
  282. package/dist/orgs/org.guard.d.ts +10 -0
  283. package/dist/orgs/org.guard.js +43 -32
  284. package/dist/orgs/orgs.module.js +3 -0
  285. package/dist/orgs/orgs.service.d.ts +20 -7
  286. package/dist/orgs/orgs.service.js +32 -12
  287. package/dist/orgs/roles.d.ts +1 -1
  288. package/dist/orgs/roles.js +5 -1
  289. package/dist/orgs/settings.controller.d.ts +1 -1
  290. package/dist/orgs/settings.service.d.ts +15 -3
  291. package/dist/orgs/settings.service.js +6 -2
  292. package/dist/overrides.d.ts +3 -0
  293. package/dist/overrides.js +2 -0
  294. package/dist/platform/actor.d.ts +48 -0
  295. package/dist/platform/actor.js +100 -0
  296. package/dist/platform/agent-docs.d.ts +18 -0
  297. package/dist/platform/agent-docs.js +59 -0
  298. package/dist/platform/availability.d.ts +14 -0
  299. package/dist/platform/availability.js +43 -0
  300. package/dist/platform/errors.d.ts +11 -0
  301. package/dist/platform/errors.js +26 -0
  302. package/dist/platform/exclusions.d.ts +12 -0
  303. package/dist/platform/exclusions.js +1387 -0
  304. package/dist/platform/method.d.ts +6 -0
  305. package/dist/platform/method.js +15 -0
  306. package/dist/platform/operation.d.ts +92 -0
  307. package/dist/platform/operation.js +35 -0
  308. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  309. package/dist/platform/ops/agent-templates.ops.js +92 -0
  310. package/dist/platform/ops/agents.ops.d.ts +19 -0
  311. package/dist/platform/ops/agents.ops.js +294 -0
  312. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  313. package/dist/platform/ops/connectors.ops.js +126 -0
  314. package/dist/platform/ops/errors.d.ts +11 -0
  315. package/dist/platform/ops/errors.js +22 -0
  316. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  317. package/dist/platform/ops/extensions.ops.js +116 -0
  318. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  319. package/dist/platform/ops/marketplaces.ops.js +157 -0
  320. package/dist/platform/ops/paging.d.ts +14 -0
  321. package/dist/platform/ops/paging.js +20 -0
  322. package/dist/platform/ops/platform.ops.d.ts +23 -0
  323. package/dist/platform/ops/platform.ops.js +158 -0
  324. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  325. package/dist/platform/ops/plugins.ops.js +377 -0
  326. package/dist/platform/ops/requests.ops.d.ts +14 -0
  327. package/dist/platform/ops/requests.ops.js +153 -0
  328. package/dist/platform/ops/role.d.ts +4 -0
  329. package/dist/platform/ops/role.js +10 -0
  330. package/dist/platform/ops/skills.ops.d.ts +13 -0
  331. package/dist/platform/ops/skills.ops.js +98 -0
  332. package/dist/platform/ops/summary.d.ts +10 -0
  333. package/dist/platform/ops/summary.js +18 -0
  334. package/dist/platform/platform-ops.module.d.ts +7 -0
  335. package/dist/platform/platform-ops.module.js +55 -0
  336. package/dist/platform/platform.module.d.ts +8 -0
  337. package/dist/platform/platform.module.js +25 -0
  338. package/dist/platform/redact-orgs.d.ts +7 -0
  339. package/dist/platform/redact-orgs.js +52 -0
  340. package/dist/platform/registry.d.ts +30 -0
  341. package/dist/platform/registry.js +111 -0
  342. package/dist/roles/worker-role.d.ts +6 -4
  343. package/dist/roles/worker-role.js +14 -7
  344. package/dist/roles/worker.module.d.ts +1 -1
  345. package/dist/roles/worker.module.js +9 -1
  346. package/dist/runtime/context/build.d.ts +6 -4
  347. package/dist/runtime/context/build.js +26 -7
  348. package/dist/runtime/context/claude-tools.d.ts +2 -1
  349. package/dist/runtime/context/claude-tools.js +5 -4
  350. package/dist/runtime/context/compaction.js +9 -0
  351. package/dist/runtime/context/reminders.d.ts +2 -0
  352. package/dist/runtime/context/reminders.js +2 -0
  353. package/dist/runtime/context/skills.js +9 -2
  354. package/dist/runtime/context/tool-changes.d.ts +27 -0
  355. package/dist/runtime/context/tool-changes.js +60 -0
  356. package/dist/runtime/hook-calls.js +2 -0
  357. package/dist/runtime/langgraph-loop.d.ts +3 -1
  358. package/dist/runtime/langgraph-loop.js +35 -17
  359. package/dist/runtime/loop.d.ts +32 -4
  360. package/dist/runtime/maintenance.d.ts +7 -4
  361. package/dist/runtime/maintenance.js +23 -8
  362. package/dist/runtime/model-call.d.ts +30 -8
  363. package/dist/runtime/model-call.js +69 -19
  364. package/dist/runtime/run-control.d.ts +11 -1
  365. package/dist/runtime/run-control.js +12 -0
  366. package/dist/runtime/run-drafts.d.ts +85 -0
  367. package/dist/runtime/run-drafts.js +230 -0
  368. package/dist/runtime/run-jobs.d.ts +3 -5
  369. package/dist/runtime/run-jobs.js +3 -7
  370. package/dist/runtime/run-queue.d.ts +37 -3
  371. package/dist/runtime/run-queue.js +188 -11
  372. package/dist/runtime/run-worker.d.ts +11 -5
  373. package/dist/runtime/run-worker.js +54 -31
  374. package/dist/runtime/runtime.module.js +3 -0
  375. package/dist/runtime/step-log.d.ts +9 -4
  376. package/dist/runtime/step-log.js +8 -5
  377. package/dist/runtime/stream.controller.d.ts +23 -1
  378. package/dist/runtime/stream.controller.js +60 -3
  379. package/dist/runtime/stream.d.ts +4 -1
  380. package/dist/runtime/stream.js +27 -3
  381. package/dist/runtime/subagents/child.d.ts +55 -7
  382. package/dist/runtime/subagents/child.js +105 -7
  383. package/dist/runtime/subagents/definition.d.ts +12 -3
  384. package/dist/runtime/subagents/definition.js +43 -29
  385. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  386. package/dist/runtime/subagents/deliveries.js +228 -0
  387. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  388. package/dist/runtime/subagents/dispatch.js +212 -141
  389. package/dist/runtime/subagents/limits.d.ts +24 -5
  390. package/dist/runtime/subagents/limits.js +40 -6
  391. package/dist/runtime/subagents/messages.d.ts +95 -0
  392. package/dist/runtime/subagents/messages.js +328 -0
  393. package/dist/runtime/subagents/preamble.d.ts +4 -4
  394. package/dist/runtime/subagents/preamble.js +9 -7
  395. package/dist/runtime/subagents/progress.d.ts +8 -6
  396. package/dist/runtime/subagents/progress.js +11 -6
  397. package/dist/runtime/subagents/render.d.ts +30 -0
  398. package/dist/runtime/subagents/render.js +53 -0
  399. package/dist/runtime/subagents/roster.d.ts +24 -7
  400. package/dist/runtime/subagents/roster.js +47 -11
  401. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  402. package/dist/runtime/subagents/skill-fork.js +8 -4
  403. package/dist/runtime/subagents/status.d.ts +14 -0
  404. package/dist/runtime/subagents/status.js +23 -0
  405. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  406. package/dist/runtime/subagents/subagents.service.js +11 -6
  407. package/dist/runtime/usage-report.js +17 -12
  408. package/dist/runtime/waits.d.ts +140 -37
  409. package/dist/runtime/waits.js +394 -106
  410. package/dist/sandbox/jobs.d.ts +40 -13
  411. package/dist/sandbox/jobs.js +57 -20
  412. package/dist/sandbox/leases.d.ts +37 -54
  413. package/dist/sandbox/leases.js +71 -115
  414. package/dist/sandbox/providers.d.ts +2 -2
  415. package/dist/sandbox/providers.js +1 -1
  416. package/dist/sandbox/sandbox.module.d.ts +3 -2
  417. package/dist/sandbox/sandbox.module.js +4 -3
  418. package/dist/sandbox/sandbox.service.d.ts +229 -134
  419. package/dist/sandbox/sandbox.service.js +630 -409
  420. package/dist/skills/catalog.d.ts +3 -2
  421. package/dist/skills/catalog.js +21 -43
  422. package/dist/skills/changes.controller.d.ts +7 -0
  423. package/dist/skills/changes.controller.js +19 -1
  424. package/dist/skills/invoke.js +8 -3
  425. package/dist/skills/package.d.ts +20 -1
  426. package/dist/skills/package.js +28 -1
  427. package/dist/skills/skills.controller.d.ts +39 -4
  428. package/dist/skills/skills.controller.js +88 -10
  429. package/dist/skills/skills.module.js +10 -1
  430. package/dist/skills/skills.service.d.ts +106 -26
  431. package/dist/skills/skills.service.js +421 -75
  432. package/dist/skills/usable.d.ts +81 -0
  433. package/dist/skills/usable.js +379 -0
  434. package/dist/tools/approvals.service.d.ts +20 -2
  435. package/dist/tools/approvals.service.js +23 -4
  436. package/dist/tools/builtin-names.d.ts +21 -5
  437. package/dist/tools/builtin-names.js +30 -5
  438. package/dist/tools/builtins/agent.d.ts +23 -21
  439. package/dist/tools/builtins/agent.js +62 -55
  440. package/dist/tools/builtins/builtin-tools.d.ts +6 -2
  441. package/dist/tools/builtins/builtin-tools.js +37 -12
  442. package/dist/tools/builtins/handback.d.ts +28 -0
  443. package/dist/tools/builtins/handback.js +53 -0
  444. package/dist/tools/builtins/platform.d.ts +34 -0
  445. package/dist/tools/builtins/platform.js +362 -0
  446. package/dist/tools/builtins/sandbox/bash.js +13 -3
  447. package/dist/tools/builtins/sandbox/common.d.ts +43 -24
  448. package/dist/tools/builtins/sandbox/common.js +80 -45
  449. package/dist/tools/builtins/sandbox/edit.js +2 -2
  450. package/dist/tools/builtins/sandbox/glob.js +2 -2
  451. package/dist/tools/builtins/sandbox/grep.js +2 -4
  452. package/dist/tools/builtins/sandbox/index.d.ts +1 -1
  453. package/dist/tools/builtins/sandbox/index.js +1 -1
  454. package/dist/tools/builtins/sandbox/read.js +1 -1
  455. package/dist/tools/builtins/sandbox/task-output.d.ts +14 -3
  456. package/dist/tools/builtins/sandbox/task-output.js +30 -5
  457. package/dist/tools/builtins/sandbox/task-stop.js +2 -1
  458. package/dist/tools/builtins/sandbox/write.js +2 -2
  459. package/dist/tools/builtins/send-message.d.ts +56 -0
  460. package/dist/tools/builtins/send-message.js +100 -0
  461. package/dist/tools/builtins/skill-load.d.ts +22 -14
  462. package/dist/tools/builtins/skill-load.js +86 -57
  463. package/dist/tools/builtins/skill-write.js +1 -1
  464. package/dist/tools/builtins/web/extract.js +5 -1
  465. package/dist/tools/builtins/web/fetch.js +1 -0
  466. package/dist/tools/builtins/web/search.js +1 -0
  467. package/dist/tools/connectors.controller.d.ts +10 -0
  468. package/dist/tools/connectors.controller.js +12 -0
  469. package/dist/tools/connectors.service.d.ts +46 -5
  470. package/dist/tools/connectors.service.js +94 -15
  471. package/dist/tools/extension-tools.controller.d.ts +14 -0
  472. package/dist/tools/extension-tools.controller.js +37 -0
  473. package/dist/tools/info.d.ts +42 -1
  474. package/dist/tools/info.js +64 -1
  475. package/dist/tools/org-tool-switches.d.ts +74 -0
  476. package/dist/tools/org-tool-switches.js +184 -0
  477. package/dist/tools/pipeline.d.ts +46 -40
  478. package/dist/tools/pipeline.js +187 -364
  479. package/dist/tools/policy.d.ts +1 -1
  480. package/dist/tools/policy.js +36 -16
  481. package/dist/tools/registry.d.ts +98 -5
  482. package/dist/tools/registry.js +87 -9
  483. package/dist/tools/tools.module.js +12 -2
  484. package/dist/ui/views.d.ts +2 -1
  485. package/dist/ui/views.js +17 -3
  486. package/package.json +3 -3
  487. package/src/migrations/0074_subagent_tree.sql +50 -0
  488. package/src/migrations/0075_plugin_scope.sql +61 -0
  489. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  490. package/src/migrations/0077_scope_requests.sql +52 -0
  491. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  492. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  493. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  494. package/src/migrations/0081_platform_components.sql +129 -0
  495. package/src/migrations/0082_platform_migration.sql +33 -0
  496. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  497. package/src/migrations/0084_org_owned_items.sql +85 -0
  498. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  499. package/src/migrations/0086_org_layering.sql +30 -0
  500. package/src/migrations/0087_approval_summary.sql +6 -0
  501. package/src/migrations/0088_environments.sql +80 -0
  502. package/dist/catalog/upgrade-targets.d.ts +0 -56
  503. package/dist/catalog/upgrade-targets.js +0 -90
  504. package/dist/conversations/sandbox-status.d.ts +0 -24
  505. package/dist/conversations/sandbox-status.js +0 -52
  506. package/dist/extensions/org-config.controller.d.ts +0 -32
  507. package/dist/extensions/org-config.controller.js +0 -70
@@ -1,4 +1,5 @@
1
1
  import type { LocalizedName } from "@capybara-hq/plugin-sdk";
2
+ import type { PluginScope } from "../catalog/scope.js";
2
3
  import { type PermissionSet } from "./permission-set.js";
3
4
  import type { ExtensionSource } from "./sources.js";
4
5
  /**
@@ -36,10 +37,10 @@ export interface PermissionItem {
36
37
  reason?: SensitiveReason;
37
38
  }
38
39
  /**
39
- * 敏感的能力(D10 + 计划扩展,F-AI):`sandbox@1` 在部署里执行任意命令、`object-store@1` 保管全部附件与插件包(D10);
40
+ * 敏感的能力(D10 + 计划扩展,F-AI):`sandbox@2` 在部署里执行任意命令、`object-store@1` 保管全部附件与插件包(D10);
40
41
  * `channel@1` 收到组织在 IM 里的对话内容(Ruling A33)、`directory@1` 能把人加进组织(并为其建账号、建身份)、
41
42
  * `identity-source@1` 决定谁能登录成哪个账号。插件提供其中任何一个时,「提供」一组标为敏感,
42
- * 后台插件列表的 `sensitive` 为真,须企业管理员批准。只影响展示,不改权限快照的键。
43
+ * 后台插件列表的 `sensitive` 为真,须超级管理员批准。只影响展示,不改权限快照的键。
43
44
  */
44
45
  export declare const SENSITIVE_EXTENSION_POINTS: readonly string[];
45
46
  /**
@@ -59,7 +60,7 @@ export type DeploymentExtensionStatus = "enabled" | "disabled" | "pending_approv
59
60
  /** The stored package is in the pre-0.1.0 format: reinstall it from a repacked tgz. */
60
61
  | "legacy_format";
61
62
  /**
62
- * 需要企业管理员处理的状态(后台概览「需要处理的插件」):待批准、待配置、失败、依赖缺失,以及副本不一致
63
+ * 需要超级管理员处理的状态(后台概览「需要处理的插件」):待批准、待配置、失败、依赖缺失,以及副本不一致
63
64
  * (`converging` 收敛中、`pending_migration` 待迁移)。
64
65
  */
65
66
  export declare function extensionNeedsAction(status: DeploymentExtensionStatus): boolean;
@@ -114,13 +115,24 @@ export interface AdminExtensionView {
114
115
  /** 有部署级配置字段。 */
115
116
  configurable: boolean;
116
117
  configValid: boolean;
118
+ /**
119
+ * Only when the platform config leaves required overridable fields empty (spec A §5.4a; the
120
+ * extension still runs): the number of orgs where it is on and that still need their own config.
121
+ */
122
+ orgsNeedingConfig?: number;
117
123
  /** 能从部署卸载(只有安装记录,必需的引导插件除外;卸载前须先停用)。 */
118
124
  removable: boolean;
119
125
  /**
120
126
  * A required bootstrap plugin (package ecosystem spec §7): enabled in every org, cannot be
121
- * disabled or uninstalled; an enterprise admin may upgrade it.
127
+ * disabled or uninstalled; a super admin may upgrade it.
122
128
  */
123
129
  required: boolean;
130
+ /** The scope of the catalog plugin the extension ships in (builtin: `all`); null without one. */
131
+ scope: PluginScope | null;
132
+ /** Orgs where the extension is enabled (a required plugin: every org). */
133
+ enabledOrgs: number;
134
+ /** Shipped with the deployment (a builtin plugin or a required bootstrap plugin). */
135
+ builtin: boolean;
124
136
  /** Where the install record came from (`bootstrap` for the bootstrap step); null for config-declared. */
125
137
  installSource: "npm" | "file" | "catalog" | "bootstrap" | null;
126
138
  /**
@@ -18,16 +18,16 @@ export function reviewHash(set, warnings = []) {
18
18
  return h.digest("hex").slice(0, 16);
19
19
  }
20
20
  /**
21
- * 敏感的能力(D10 + 计划扩展,F-AI):`sandbox@1` 在部署里执行任意命令、`object-store@1` 保管全部附件与插件包(D10);
21
+ * 敏感的能力(D10 + 计划扩展,F-AI):`sandbox@2` 在部署里执行任意命令、`object-store@1` 保管全部附件与插件包(D10);
22
22
  * `channel@1` 收到组织在 IM 里的对话内容(Ruling A33)、`directory@1` 能把人加进组织(并为其建账号、建身份)、
23
23
  * `identity-source@1` 决定谁能登录成哪个账号。插件提供其中任何一个时,「提供」一组标为敏感,
24
- * 后台插件列表的 `sensitive` 为真,须企业管理员批准。只影响展示,不改权限快照的键。
24
+ * 后台插件列表的 `sensitive` 为真,须超级管理员批准。只影响展示,不改权限快照的键。
25
25
  */
26
26
  export const SENSITIVE_EXTENSION_POINTS = [
27
27
  "channel@1",
28
28
  "directory@1",
29
29
  "identity-source@1",
30
- "sandbox@1",
30
+ "sandbox@2",
31
31
  "object-store@1",
32
32
  ];
33
33
  /** 总是敏感的类别。 */
@@ -159,7 +159,7 @@ export function permissionGroups(set) {
159
159
  });
160
160
  }
161
161
  /**
162
- * 需要企业管理员处理的状态(后台概览「需要处理的插件」):待批准、待配置、失败、依赖缺失,以及副本不一致
162
+ * 需要超级管理员处理的状态(后台概览「需要处理的插件」):待批准、待配置、失败、依赖缺失,以及副本不一致
163
163
  * (`converging` 收敛中、`pending_migration` 待迁移)。
164
164
  */
165
165
  export function extensionNeedsAction(status) {
@@ -0,0 +1,21 @@
1
+ import type { PluginScope } from "../catalog/scope.js";
2
+ import type { KernelSchemaDb } from "../db/kernel-schema.js";
3
+ /** The catalog item (the plugin) an extension ships in. */
4
+ export interface ExtensionPluginItem {
5
+ id: string;
6
+ scope: PluginScope;
7
+ builtin: boolean;
8
+ disabled: boolean;
9
+ }
10
+ /**
11
+ * The live catalog items of each extension in `names`, the one recorded on its install
12
+ * (`extension_installs.catalog_item_id`) first, then its other `extension_catalog_sources` by id.
13
+ * An extension without a live item (declared in the startup config, or its items deleted) is absent.
14
+ * `db` may be a transaction.
15
+ */
16
+ export declare function pluginItemsOf(db: KernelSchemaDb, names: readonly string[]): Promise<Map<string, ExtensionPluginItem[]>>;
17
+ /**
18
+ * Whether an item keeps its plugin on in every org (builtin only: an org may switch off an `all`
19
+ * one, layering spec §4): its switch cannot go off.
20
+ */
21
+ export declare const itemLocked: (i: ExtensionPluginItem) => boolean;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The live catalog items of each extension in `names`, the one recorded on its install
3
+ * (`extension_installs.catalog_item_id`) first, then its other `extension_catalog_sources` by id.
4
+ * An extension without a live item (declared in the startup config, or its items deleted) is absent.
5
+ * `db` may be a transaction.
6
+ */
7
+ export async function pluginItemsOf(db, names) {
8
+ const out = new Map();
9
+ if (names.length === 0)
10
+ return out;
11
+ const add = (plugin, item) => {
12
+ const list = out.get(plugin) ?? [];
13
+ if (!list.some((i) => i.id === item.id))
14
+ list.push(item);
15
+ out.set(plugin, list);
16
+ };
17
+ const own = await db
18
+ .selectFrom("extension_installs as e")
19
+ .innerJoin("catalog_items as i", "i.id", "e.catalog_item_id")
20
+ .select(["e.name as plugin", "i.id", "i.scope", "i.builtin", "i.disabled"])
21
+ .where("e.name", "in", [...names])
22
+ .where("i.deleted_at", "is", null)
23
+ .execute();
24
+ for (const r of own)
25
+ add(r.plugin, r);
26
+ const sources = await db
27
+ .selectFrom("extension_catalog_sources as s")
28
+ .innerJoin("catalog_items as i", "i.id", "s.item_id")
29
+ .select(["s.plugin", "i.id", "i.scope", "i.builtin", "i.disabled"])
30
+ .where("s.plugin", "in", [...names])
31
+ .where("i.deleted_at", "is", null)
32
+ .orderBy("i.id")
33
+ .execute();
34
+ for (const r of sources)
35
+ add(r.plugin, r);
36
+ return out;
37
+ }
38
+ /**
39
+ * Whether an item keeps its plugin on in every org (builtin only: an org may switch off an `all`
40
+ * one, layering spec §4): its switch cannot go off.
41
+ */
42
+ export const itemLocked = (i) => i.builtin;
@@ -1,14 +1,19 @@
1
1
  import { KernelDb } from "../infra/database/kernel-db.js";
2
2
  import { TransactionHost } from "../infra/database/transaction-host.js";
3
3
  import type { KernelLogger } from "../log.js";
4
+ import { EffectiveConfigs } from "./effective-config.js";
4
5
  import { OrgExtensionConfigs } from "./org-config.js";
5
6
  import { ExtensionRegistry } from "./registry.js";
6
- /** The outcome of {@link ExtensionPointDefaults.resolve}. */
7
+ /**
8
+ * The outcome of {@link ExtensionPointDefaults.resolve}: the provider with its org config and its
9
+ * effective deployment config for the org (layering spec A §6), both to pass back to it.
10
+ */
7
11
  export type PointResolution<T> = {
8
12
  ok: true;
9
13
  extension: string;
10
14
  impl: T;
11
15
  orgConfig: unknown;
16
+ config: unknown;
12
17
  } | {
13
18
  ok: false;
14
19
  reason: "none" | "ambiguous";
@@ -26,8 +31,8 @@ export interface OrgPointDefaultView {
26
31
  /**
27
32
  * The org default provider of an `org-default` extension point (web tools spec §6). Per call,
28
33
  * never cached in process: the candidates are the providers loaded on this replica that are
29
- * enabled in the org, whose org config is valid and whose `configured()` (when present) does not
30
- * return false. One candidate is used as is; several need the org's stored default
34
+ * enabled in the org, whose org config and effective deployment config for the org (layering spec
35
+ * A §6) are valid, and whose `configured()` (when present) does not return false. One candidate is used as is; several need the org's stored default
31
36
  * (`capybara.org_extension_point_defaults`), else the choice is ambiguous. A stored default that
32
37
  * is not a candidate (disabled, uninstalled, unconfigured) stays and counts again once it is one.
33
38
  */
@@ -36,11 +41,13 @@ export declare class ExtensionPointDefaults {
36
41
  readonly txHost: TransactionHost;
37
42
  private readonly registry;
38
43
  private readonly orgConfigs;
44
+ private readonly effective;
39
45
  private readonly log;
40
- constructor(kdb: KernelDb, txHost: TransactionHost, registry: Pick<ExtensionRegistry, "list">, orgConfigs: Pick<OrgExtensionConfigs, "get">, log: KernelLogger);
46
+ constructor(kdb: KernelDb, txHost: TransactionHost, registry: Pick<ExtensionRegistry, "list">, orgConfigs: Pick<OrgExtensionConfigs, "get">, effective: Pick<EffectiveConfigs, "get">, log: KernelLogger);
41
47
  /**
42
48
  * The provider of `point` (the name without the major, e.g. `web-search`) for `orgId`, with the
43
- * org's decrypted config to pass back to it. Throws when the point has no `selection`.
49
+ * org's decrypted config and the effective deployment config to pass back to it. Throws when the
50
+ * point has no `selection`.
44
51
  */
45
52
  resolve<T>(orgId: string, point: string): Promise<PointResolution<T>>;
46
53
  /** Every `org-default` point with its candidates, stored default and effective provider. */
@@ -15,6 +15,7 @@ import { KernelDb } from "../infra/database/kernel-db.js";
15
15
  import { TransactionHost } from "../infra/database/transaction-host.js";
16
16
  import { Transactional } from "../infra/database/transactional.decorator.js";
17
17
  import { KERNEL_LOGGER } from "../infra/tokens.js";
18
+ import { EffectiveConfigs } from "./effective-config.js";
18
19
  import { enabledExtensionsQuery, isExtensionEnabled } from "./enabled.js";
19
20
  import { OrgExtensionConfigs } from "./org-config.js";
20
21
  import { ExtensionRegistry } from "./registry.js";
@@ -28,8 +29,8 @@ const hasSelection = (point) => EXTENSION_POINTS[point]?.selection === "org-defa
28
29
  /**
29
30
  * The org default provider of an `org-default` extension point (web tools spec §6). Per call,
30
31
  * never cached in process: the candidates are the providers loaded on this replica that are
31
- * enabled in the org, whose org config is valid and whose `configured()` (when present) does not
32
- * return false. One candidate is used as is; several need the org's stored default
32
+ * enabled in the org, whose org config and effective deployment config for the org (layering spec
33
+ * A §6) are valid, and whose `configured()` (when present) does not return false. One candidate is used as is; several need the org's stored default
33
34
  * (`capybara.org_extension_point_defaults`), else the choice is ambiguous. A stored default that
34
35
  * is not a candidate (disabled, uninstalled, unconfigured) stays and counts again once it is one.
35
36
  */
@@ -38,17 +39,20 @@ let ExtensionPointDefaults = class ExtensionPointDefaults {
38
39
  txHost;
39
40
  registry;
40
41
  orgConfigs;
42
+ effective;
41
43
  log;
42
- constructor(kdb, txHost, registry, orgConfigs, log) {
44
+ constructor(kdb, txHost, registry, orgConfigs, effective, log) {
43
45
  this.kdb = kdb;
44
46
  this.txHost = txHost;
45
47
  this.registry = registry;
46
48
  this.orgConfigs = orgConfigs;
49
+ this.effective = effective;
47
50
  this.log = log;
48
51
  }
49
52
  /**
50
53
  * The provider of `point` (the name without the major, e.g. `web-search`) for `orgId`, with the
51
- * org's decrypted config to pass back to it. Throws when the point has no `selection`.
54
+ * org's decrypted config and the effective deployment config to pass back to it. Throws when the
55
+ * point has no `selection`.
52
56
  */
53
57
  async resolve(orgId, point) {
54
58
  if (!hasSelection(point)) {
@@ -59,7 +63,13 @@ let ExtensionPointDefaults = class ExtensionPointDefaults {
59
63
  if (!chosen.ok)
60
64
  return chosen;
61
65
  const c = chosen.candidate;
62
- return { ok: true, extension: c.extension, impl: c.impl, orgConfig: c.orgConfig };
66
+ return {
67
+ ok: true,
68
+ extension: c.extension,
69
+ impl: c.impl,
70
+ orgConfig: c.orgConfig,
71
+ config: c.config,
72
+ };
63
73
  }
64
74
  /** Every `org-default` point with its candidates, stored default and effective provider. */
65
75
  async list(orgId) {
@@ -145,11 +155,28 @@ let ExtensionPointDefaults = class ExtensionPointDefaults {
145
155
  }
146
156
  if (!cfg?.enabled)
147
157
  continue;
148
- const configured = impl.configured;
158
+ // spec A §6: an org whose effective config is not valid gets no call from this extension
159
+ let effective;
160
+ try {
161
+ effective = await this.effective.get(orgId, extension);
162
+ }
163
+ catch (err) {
164
+ this.log.warn("org default provider: provider excluded, cannot read its effective config", {
165
+ orgId,
166
+ point,
167
+ extension,
168
+ err,
169
+ });
170
+ continue;
171
+ }
172
+ if (!effective.ok)
173
+ continue;
174
+ const configured = impl
175
+ .configured;
149
176
  if (typeof configured === "function") {
150
177
  let ok;
151
178
  try {
152
- ok = configured.call(impl, cfg.config) !== false;
179
+ ok = configured.call(impl, cfg.config, effective.config) !== false;
153
180
  }
154
181
  catch (err) {
155
182
  this.log.warn("org default provider: provider excluded, configured() threw", {
@@ -163,7 +190,7 @@ let ExtensionPointDefaults = class ExtensionPointDefaults {
163
190
  if (!ok)
164
191
  continue;
165
192
  }
166
- out.push({ extension, impl, orgConfig: cfg.config });
193
+ out.push({ extension, impl, orgConfig: cfg.config, config: effective.config });
167
194
  }
168
195
  return out.sort((a, b) => (a.extension < b.extension ? -1 : a.extension > b.extension ? 1 : 0));
169
196
  }
@@ -191,7 +218,8 @@ ExtensionPointDefaults = __decorate([
191
218
  __param(1, Inject(TransactionHost)),
192
219
  __param(2, Inject(ExtensionRegistry)),
193
220
  __param(3, Inject(OrgExtensionConfigs)),
194
- __param(4, Inject(KERNEL_LOGGER))
221
+ __param(4, Inject(EffectiveConfigs)),
222
+ __param(5, Inject(KERNEL_LOGGER))
195
223
  ], ExtensionPointDefaults);
196
224
  export { ExtensionPointDefaults };
197
225
  /** Rules 2-4 of spec §6: one candidate → it; several → the stored default if a candidate. */
@@ -1,7 +1,11 @@
1
1
  import { type ExtensionManifest } from "@capybara-hq/plugin-sdk";
2
2
  /** 插件依赖解析失败(信息列出插件名与能力名)。 */
3
3
  export declare class ExtensionResolveError extends Error {
4
- constructor(message: string);
4
+ /** Error code of the failure, when it has one. */
5
+ readonly code?: string | undefined;
6
+ constructor(message: string,
7
+ /** Error code of the failure, when it has one. */
8
+ code?: string | undefined);
5
9
  }
6
10
  /**
7
11
  * 校验 sdk 范围、依赖满足度、单选能力唯一性与无环,返回按依赖拓扑排序后的列表(同层保持输入顺序)。
@@ -1,9 +1,13 @@
1
- import { EXTENSION_POINT_CARDINALITY, OBJECT_STORE_EXTENSION_POINT, parseExtensionPoint, } from "@capybara-hq/plugin-sdk";
1
+ import { EXTENSION_POINT_CARDINALITY, EXTENSION_POINTS, OBJECT_STORE_EXTENSION_POINT, parseExtensionPoint, } from "@capybara-hq/plugin-sdk";
2
2
  import semver from "semver";
3
3
  /** 插件依赖解析失败(信息列出插件名与能力名)。 */
4
4
  export class ExtensionResolveError extends Error {
5
- constructor(message) {
5
+ code;
6
+ constructor(message,
7
+ /** Error code of the failure, when it has one. */
8
+ code) {
6
9
  super(message);
10
+ this.code = code;
7
11
  this.name = "ExtensionResolveError";
8
12
  }
9
13
  }
@@ -23,6 +27,15 @@ export function resolveExtensions(manifests, sdkVersion) {
23
27
  throw new ExtensionResolveError(`plugin ${m.name}: sdk range "${m.sdk}" is not satisfied by SDK_VERSION ${sdkVersion}`);
24
28
  }
25
29
  }
30
+ for (const m of manifests) {
31
+ for (const ref of m.provides) {
32
+ const { name, major } = parseExtensionPoint(ref);
33
+ const majors = EXTENSION_POINTS[name]?.majors;
34
+ if (majors && !majors.includes(major)) {
35
+ throw new ExtensionResolveError(`Plugin ${m.name} provides ${ref}, which this kernel no longer supports; upgrade it to a version that provides ${name}@${Math.max(...majors)}.`, "extension.unsupported_extension_point");
36
+ }
37
+ }
38
+ }
26
39
  const providers = new Map();
27
40
  for (const m of manifests) {
28
41
  for (const cap of m.provides)
@@ -1,5 +1,6 @@
1
1
  import { type FilePreviewer, type Logger, type UiView } from "@capybara-hq/plugin-sdk";
2
2
  import { ConversationFiles } from "../conversations/files.js";
3
+ import { EffectiveConfigs } from "../extensions/effective-config.js";
3
4
  import { ExtensionHost } from "../extensions/host.js";
4
5
  import { KernelDb } from "../infra/database/kernel-db.js";
5
6
  import { TransactionHost } from "../infra/database/transaction-host.js";
@@ -39,7 +40,7 @@ export declare class PreviewerRegistry {
39
40
  readonly txHost: TransactionHost;
40
41
  private readonly timeoutMs;
41
42
  private readonly d;
42
- constructor(kdb: Pick<KernelDb, "db">, host: Pick<ExtensionHost, "list" | "enabledPlugins">, files: Pick<ConversationFiles, "file">, storage: Pick<StorageService, "kernel">, log: Pick<Logger, "warn">, txHost: TransactionHost, timeoutMs?: number);
43
+ constructor(kdb: Pick<KernelDb, "db">, host: Pick<ExtensionHost, "list" | "enabledPlugins">, files: Pick<ConversationFiles, "file">, storage: Pick<StorageService, "kernel">, effective: Pick<EffectiveConfigs, "get">, log: Pick<Logger, "warn">, txHost: TransactionHost, timeoutMs?: number);
43
44
  /** Every previewer loaded on this replica, in provider order (load order, then list order). */
44
45
  private loaded;
45
46
  /** The org's previewers (enabled extensions only) in its order, disabled ones included. */
@@ -65,6 +66,12 @@ export declare class PreviewerRegistry {
65
66
  private putIn;
66
67
  /** Previewers that take this file (viewer must read the conversation), in the org's order. */
67
68
  forFile(orgId: string, conversationId: string, viewer: string, fileId: string): Promise<PreviewerItem[]>;
69
+ /**
70
+ * The org's enabled previewers that take the file, each with its extension's effective config
71
+ * for the org. An extension whose effective config is not valid in the org (or cannot be read)
72
+ * previews nothing there (layering spec A §6): its previewers are left out, so the next one or a
73
+ * built-in takes the file.
74
+ */
68
75
  private accepting;
69
76
  /**
70
77
  * Renders a view previewer for one file: 404 `ui.not_found` when it does not take the file (or is
@@ -12,6 +12,7 @@ import { Inject, Injectable, Optional } from "@nestjs/common";
12
12
  import { sql } from "kysely";
13
13
  import { ConversationFiles } from "../conversations/files.js";
14
14
  import { ApiError } from "../errors.js";
15
+ import { EffectiveConfigs } from "../extensions/effective-config.js";
15
16
  import { ExtensionHost } from "../extensions/host.js";
16
17
  import { audit } from "../identity/audit.js";
17
18
  import { KernelDb } from "../infra/database/kernel-db.js";
@@ -71,7 +72,7 @@ let PreviewerRegistry = class PreviewerRegistry {
71
72
  txHost;
72
73
  timeoutMs;
73
74
  d;
74
- constructor(kdb, host, files, storage, log, txHost, timeoutMs = FILE_PREVIEW_TIMEOUT_MS) {
75
+ constructor(kdb, host, files, storage, effective, log, txHost, timeoutMs = FILE_PREVIEW_TIMEOUT_MS) {
75
76
  this.txHost = txHost;
76
77
  this.timeoutMs = timeoutMs;
77
78
  this.d = {
@@ -82,6 +83,7 @@ let PreviewerRegistry = class PreviewerRegistry {
82
83
  enabledPlugins: (orgId) => host.enabledPlugins(orgId),
83
84
  files,
84
85
  storage,
86
+ effective,
85
87
  log,
86
88
  };
87
89
  }
@@ -186,8 +188,33 @@ let PreviewerRegistry = class PreviewerRegistry {
186
188
  const file = await this.d.files.file(orgId, conversationId, viewer, fileId);
187
189
  return (await this.accepting(orgId, file)).map(item);
188
190
  }
191
+ /**
192
+ * The org's enabled previewers that take the file, each with its extension's effective config
193
+ * for the org. An extension whose effective config is not valid in the org (or cannot be read)
194
+ * previews nothing there (layering spec A §6): its previewers are left out, so the next one or a
195
+ * built-in takes the file.
196
+ */
189
197
  async accepting(orgId, file) {
190
- return (await this.ordered(orgId)).filter((l) => !l.disabled && previewerAccepts(l.previewer, file));
198
+ const taking = (await this.ordered(orgId)).filter((l) => !l.disabled && previewerAccepts(l.previewer, file));
199
+ const configs = new Map();
200
+ for (const plugin of new Set(taking.map((l) => l.plugin))) {
201
+ try {
202
+ const e = await this.d.effective.get(orgId, plugin);
203
+ configs.set(plugin, e.ok ? { config: e.config } : null);
204
+ }
205
+ catch (err) {
206
+ this.d.log.warn("file previewer left out: cannot read its effective config", {
207
+ orgId,
208
+ plugin,
209
+ err,
210
+ });
211
+ configs.set(plugin, null);
212
+ }
213
+ }
214
+ return taking.flatMap((l) => {
215
+ const c = configs.get(l.plugin);
216
+ return c ? [{ ...l, config: c.config }] : [];
217
+ });
191
218
  }
192
219
  /**
193
220
  * Renders a view previewer for one file: 404 `ui.not_found` when it does not take the file (or is
@@ -224,6 +251,7 @@ let PreviewerRegistry = class PreviewerRegistry {
224
251
  accountId: t.accountId,
225
252
  conversationId: t.conversationId,
226
253
  locale: t.locale,
254
+ config: l.config,
227
255
  signal: s,
228
256
  file: {
229
257
  id: file.id,
@@ -289,9 +317,10 @@ PreviewerRegistry = __decorate([
289
317
  __param(1, Inject(ExtensionHost)),
290
318
  __param(2, Inject(ConversationFiles)),
291
319
  __param(3, Inject(StorageService)),
292
- __param(4, Inject(KERNEL_LOGGER)),
293
- __param(5, Inject(TransactionHost)),
294
- __param(6, Optional()),
295
- __param(6, Inject(FILE_PREVIEW_TIMEOUT))
320
+ __param(4, Inject(EffectiveConfigs)),
321
+ __param(5, Inject(KERNEL_LOGGER)),
322
+ __param(6, Inject(TransactionHost)),
323
+ __param(7, Optional()),
324
+ __param(7, Inject(FILE_PREVIEW_TIMEOUT))
296
325
  ], PreviewerRegistry);
297
326
  export { PreviewerRegistry };
@@ -13,25 +13,30 @@ import { SetupController } from "../admin/setup.controller.js";
13
13
  import { AgentsController } from "../agents/agents.controller.js";
14
14
  import { AgentsModule } from "../agents/agents.module.js";
15
15
  import { ModelsController } from "../agents/models.controller.js";
16
+ import { PendingConnectorsController } from "../agents/pending-connectors.controller.js";
16
17
  import { ReadinessController } from "../agents/readiness.controller.js";
17
- import { AgentTemplatesController } from "../agents/templates.controller.js";
18
+ import { AgentSaveAsTemplateController, AgentTemplatesController, } from "../agents/templates.controller.js";
18
19
  import { BackgroundController } from "../background/background.controller.js";
19
20
  import { BackgroundModule } from "../background/background.module.js";
20
21
  import { AdminCatalogController } from "../catalog/admin-catalog.controller.js";
21
22
  import { CatalogModule } from "../catalog/catalog.module.js";
22
- import { MarketplacesController } from "../catalog/marketplaces.controller.js";
23
+ import { AdminComponentsController, OrgComponentsController, } from "../catalog/component-scope.controller.js";
24
+ import { MarketplacesController, OrgMarketplacesController, } from "../catalog/marketplaces.controller.js";
23
25
  import { AdminCatalogRequestsController, OrgCatalogController, } from "../catalog/org-catalog.controller.js";
26
+ import { OrgExtensionConfigsController, OrgExtensionOverridesController, OrgExtensionToolSwitchesController, } from "../catalog/org-extension.controller.js";
27
+ import { OrgOwnedPluginsController, OrgPluginUploadsController, } from "../catalog/org-plugin-uploads.controller.js";
24
28
  import { ChannelsModule } from "../channels/channels.module.js";
25
29
  import { ChannelConnectionsController } from "../channels/connections.controller.js";
26
30
  import { AttachmentsController } from "../conversations/attachments.controller.js";
27
31
  import { ConversationsController } from "../conversations/conversations.controller.js";
28
32
  import { ConversationsModule } from "../conversations/conversations.module.js";
33
+ import { EnvironmentsController } from "../environments/environments.controller.js";
34
+ import { EnvironmentsModule } from "../environments/environments.module.js";
29
35
  import { EvalsModule } from "../evals/evals.module.js";
30
36
  import { EvalRunsController } from "../evals/runs.controller.js";
31
37
  import { EvalSetsController } from "../evals/sets.controller.js";
32
38
  import { TrajectoryController } from "../evals/trajectory.controller.js";
33
39
  import { ExtensionsModule } from "../extensions/extensions.module.js";
34
- import { OrgExtensionConfigsController } from "../extensions/org-config.controller.js";
35
40
  import { ExtensionPointDefaultsController } from "../extensions/point-defaults.controller.js";
36
41
  import { FilesModule } from "../files/files.module.js";
37
42
  import { FilePreviewersController } from "../files/previewers.controller.js";
@@ -41,6 +46,7 @@ import { IdentityModule } from "../identity/identity.module.js";
41
46
  import { MeController } from "../identity/me.controller.js";
42
47
  import { BindController, MeIdentitiesController, SsoController, } from "../identity/sso.controller.js";
43
48
  import { InboxModule } from "../inbox/inbox.module.js";
49
+ import { PlatformInboxController } from "../inbox/platform-inbox.controller.js";
44
50
  import { ModelsModule } from "../models/models.module.js";
45
51
  import { ModelPurposesController } from "../models/purposes.controller.js";
46
52
  import { DirectorySyncController } from "../orgs/directory-sync.controller.js";
@@ -58,6 +64,7 @@ import { StorageModule } from "../storage/storage.module.js";
58
64
  import { ApprovalsController, ToolGrantsController } from "../tools/approvals.controller.js";
59
65
  import { ConnectorContentController } from "../tools/connector-content.controller.js";
60
66
  import { ConnectorsController } from "../tools/connectors.controller.js";
67
+ import { ExtensionToolsController } from "../tools/extension-tools.controller.js";
61
68
  import { OAuthCallbackController, OAuthConnectController, } from "../tools/oauth/oauth.controller.js";
62
69
  import { QuestionsController } from "../tools/questions.controller.js";
63
70
  import { ToolsModule } from "../tools/tools.module.js";
@@ -74,26 +81,35 @@ const CONTROLLERS = [
74
81
  AdminController,
75
82
  AdminExtensionsController,
76
83
  AdminCatalogController,
84
+ AdminComponentsController,
77
85
  MarketplacesController,
86
+ OrgMarketplacesController,
78
87
  OrgExtensionConfigsController,
88
+ OrgExtensionOverridesController,
89
+ OrgExtensionToolSwitchesController,
79
90
  AgentsController,
80
91
  AgentTemplatesController,
92
+ AgentSaveAsTemplateController,
93
+ PendingConnectorsController,
81
94
  ModelsController,
82
95
  ReadinessController,
83
96
  ConversationsController,
84
97
  BackgroundController,
98
+ EnvironmentsController,
85
99
  AttachmentsController,
86
100
  SkillsController,
87
101
  SkillChangesController,
88
102
  AgentSkillsController,
89
103
  InvocableSkillsController,
90
104
  InboxController,
105
+ PlatformInboxController,
91
106
  ConversationStreamController,
92
107
  ConnectorContentController,
93
108
  ConnectorsController,
94
109
  ApprovalsController,
95
110
  ToolGrantsController,
96
111
  QuestionsController,
112
+ ExtensionToolsController,
97
113
  OAuthConnectController,
98
114
  OAuthCallbackController,
99
115
  SsoController,
@@ -109,6 +125,9 @@ const CONTROLLERS = [
109
125
  EvalRunsController,
110
126
  ModelPurposesController,
111
127
  OrgCatalogController,
128
+ OrgPluginUploadsController,
129
+ OrgOwnedPluginsController,
130
+ OrgComponentsController,
112
131
  AdminCatalogRequestsController,
113
132
  ];
114
133
  /**
@@ -134,6 +153,7 @@ ApiModule = __decorate([
134
153
  AgentsModule,
135
154
  ConversationsModule,
136
155
  BackgroundModule,
156
+ EnvironmentsModule,
137
157
  RuntimeModule,
138
158
  ChannelsModule,
139
159
  EvalsModule,
@@ -45,7 +45,7 @@ export interface CreateHttpAppOptions {
45
45
  replicaId?: string | undefined;
46
46
  /**
47
47
  * The size limit for package uploads ({@link PACKAGE_UPLOAD_ROUTES}: extension packages and
48
- * enterprise catalog packages, `application/octet-stream`), i.e. `packages.maxBytes`. The route
48
+ * platform catalog packages, `application/octet-stream`), i.e. `packages.maxBytes`. The route
49
49
  * bodyLimit is one byte more: a package exactly one byte over reaches the handler and returns
50
50
  * `extension.package_too_large`; larger ones are refused by Fastify itself (413
51
51
  * `payload_too_large`).
@@ -56,11 +56,20 @@ export interface CreateHttpAppOptions {
56
56
  export declare const EXTENSION_PACKAGE_UPLOAD_ROUTE = "/api/v1/admin/extensions/packages/file";
57
57
  /** The plugin package upload route of the catalog import (Fastify route template). */
58
58
  export declare const CATALOG_UPLOAD_ROUTE = "/api/v1/admin/catalog/import/file";
59
+ /** The platform skill version upload route (a skill package zip as the raw body). */
60
+ export declare const COMPONENT_SKILL_UPLOAD_ROUTE = "/api/v1/admin/components/skill/:id/versions";
59
61
  /**
60
62
  * The upload routes that take raw bytes (`application/octet-stream`, limit `packages.maxBytes`,
61
- * the enterprise admin is authenticated before the body is read).
63
+ * the super admin is authenticated before the body is read).
62
64
  */
63
65
  export declare const PACKAGE_UPLOAD_ROUTES: ReadonlySet<string>;
66
+ /** An org admin's plugin package upload (spec §14, ruling P3-7; a tgz as the raw body). */
67
+ export declare const ORG_PLUGIN_UPLOAD_ROUTE = "/api/v1/orgs/:orgId/catalog/uploads/file";
68
+ /**
69
+ * The org routes that take raw package bytes (limit `packages.maxBytes`): before the body is read
70
+ * the caller is authenticated as a person with the org role of `catalog.upload` (ruling P3-29).
71
+ */
72
+ export declare const ORG_PACKAGE_UPLOAD_ROUTES: ReadonlySet<string>;
64
73
  /**
65
74
  * Sets up the Fastify side of the kernel's Nest application (built by `buildKernelApp` from
66
75
  * `KernelModule`, which provides the health endpoints and the API) without connecting to anything,