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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -1,3 +1,5 @@
1
+ import type { LocalizedName } from "@capybara-hq/plugin-sdk";
2
+ import type { PluginScope } from "../catalog/scope.js";
1
3
  import { type PermissionSet } from "./permission-set.js";
2
4
  import type { ExtensionSource } from "./sources.js";
3
5
  /**
@@ -35,10 +37,10 @@ export interface PermissionItem {
35
37
  reason?: SensitiveReason;
36
38
  }
37
39
  /**
38
- * 敏感的能力(D10 + 计划扩展,F-AI):`sandbox@1` 在部署里执行任意命令、`object-store@1` 保管全部附件与插件包(D10);
40
+ * 敏感的能力(D10 + 计划扩展,F-AI):`sandbox@2` 在部署里执行任意命令、`object-store@1` 保管全部附件与插件包(D10);
39
41
  * `channel@1` 收到组织在 IM 里的对话内容(Ruling A33)、`directory@1` 能把人加进组织(并为其建账号、建身份)、
40
42
  * `identity-source@1` 决定谁能登录成哪个账号。插件提供其中任何一个时,「提供」一组标为敏感,
41
- * 后台插件列表的 `sensitive` 为真,须企业管理员批准。只影响展示,不改权限快照的键。
43
+ * 后台插件列表的 `sensitive` 为真,须超级管理员批准。只影响展示,不改权限快照的键。
42
44
  */
43
45
  export declare const SENSITIVE_EXTENSION_POINTS: readonly string[];
44
46
  /**
@@ -58,13 +60,15 @@ export type DeploymentExtensionStatus = "enabled" | "disabled" | "pending_approv
58
60
  /** The stored package is in the pre-0.1.0 format: reinstall it from a repacked tgz. */
59
61
  | "legacy_format";
60
62
  /**
61
- * 需要企业管理员处理的状态(后台概览「需要处理的插件」):待批准、待配置、失败、依赖缺失,以及副本不一致
63
+ * 需要超级管理员处理的状态(后台概览「需要处理的插件」):待批准、待配置、失败、依赖缺失,以及副本不一致
62
64
  * (`converging` 收敛中、`pending_migration` 待迁移)。
63
65
  */
64
66
  export declare function extensionNeedsAction(status: DeploymentExtensionStatus): boolean;
65
67
  /** One item of the admin extension list (`GET /api/v1/admin/extensions`). */
66
68
  export interface AdminExtensionView {
67
69
  name: string;
70
+ /** The plugin's display name (`ExtensionDisplayNames`); null when it has none. */
71
+ displayName: LocalizedName | null;
68
72
  version: string;
69
73
  source: ExtensionSource;
70
74
  /** 安装记录的包;配置声明为 null。 */
@@ -111,13 +115,24 @@ export interface AdminExtensionView {
111
115
  /** 有部署级配置字段。 */
112
116
  configurable: boolean;
113
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;
114
123
  /** 能从部署卸载(只有安装记录,必需的引导插件除外;卸载前须先停用)。 */
115
124
  removable: boolean;
116
125
  /**
117
126
  * A required bootstrap plugin (package ecosystem spec §7): enabled in every org, cannot be
118
- * disabled or uninstalled; an enterprise admin may upgrade it.
127
+ * disabled or uninstalled; a super admin may upgrade it.
119
128
  */
120
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;
121
136
  /** Where the install record came from (`bootstrap` for the bootstrap step); null for config-declared. */
122
137
  installSource: "npm" | "file" | "catalog" | "bootstrap" | null;
123
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;
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ import { type Principal } from "../identity/principal.js";
3
+ import { type OrgContext } from "../orgs/org.guard.js";
4
+ import { ExtensionPointDefaults, type OrgPointDefaultView } from "./point-defaults.js";
5
+ declare const PointParams: z.ZodObject<{
6
+ point: z.ZodString;
7
+ }, z.core.$strip>;
8
+ declare const DefaultBody: z.ZodObject<{
9
+ extension: z.ZodString;
10
+ }, z.core.$strict>;
11
+ /**
12
+ * The org default provider of `org-default` extension points (web tools spec §6):
13
+ * - `GET /api/v1/orgs/:orgId/extension-points` (`org.extensions.manage`) → `{ points }`: each
14
+ * point with its candidate providers, the stored default and the effective provider;
15
+ * - `PUT /api/v1/orgs/:orgId/extension-points/:point/default` `{ extension }`
16
+ * (`org.extensions.manage`) → 204;
17
+ * - `GET /api/v1/orgs/:orgId/extension-points/available` (`agents.use`) → `{ points }`: whether
18
+ * each point has a provider now, without extension names (for the agent form).
19
+ */
20
+ export declare class ExtensionPointDefaultsController {
21
+ private readonly points;
22
+ constructor(points: ExtensionPointDefaults);
23
+ list(org: OrgContext): Promise<{
24
+ points: OrgPointDefaultView[];
25
+ }>;
26
+ available(org: OrgContext): Promise<{
27
+ points: {
28
+ point: string;
29
+ available: boolean;
30
+ }[];
31
+ }>;
32
+ setDefault(principal: Principal, org: OrgContext, { point }: z.infer<typeof PointParams>, body: z.infer<typeof DefaultBody>): Promise<void>;
33
+ }
34
+ export {};
@@ -0,0 +1,71 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Controller, Get, HttpCode, Inject, Put } from "@nestjs/common";
11
+ import { z } from "zod";
12
+ import { CurrentPrincipal, requireUser } from "../identity/principal.js";
13
+ import { createZodDto } from "../infra/validation/create-zod-dto.js";
14
+ import { ZBody, ZParam } from "../infra/validation/zod-params.js";
15
+ import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
16
+ import { ExtensionPointDefaults } from "./point-defaults.js";
17
+ const PointParams = z.object({ point: z.string().min(1).max(100) });
18
+ const DefaultBody = z.object({ extension: z.string().min(1).max(214) }).strict();
19
+ class ExtensionPointParamsDto extends createZodDto(PointParams, "ExtensionPointParams") {
20
+ }
21
+ class ExtensionPointDefaultBodyDto extends createZodDto(DefaultBody, "ExtensionPointDefaultBody") {
22
+ }
23
+ /**
24
+ * The org default provider of `org-default` extension points (web tools spec §6):
25
+ * - `GET /api/v1/orgs/:orgId/extension-points` (`org.extensions.manage`) → `{ points }`: each
26
+ * point with its candidate providers, the stored default and the effective provider;
27
+ * - `PUT /api/v1/orgs/:orgId/extension-points/:point/default` `{ extension }`
28
+ * (`org.extensions.manage`) → 204;
29
+ * - `GET /api/v1/orgs/:orgId/extension-points/available` (`agents.use`) → `{ points }`: whether
30
+ * each point has a provider now, without extension names (for the agent form).
31
+ */
32
+ let ExtensionPointDefaultsController = class ExtensionPointDefaultsController {
33
+ points;
34
+ constructor(points) {
35
+ this.points = points;
36
+ }
37
+ async list(org) {
38
+ return { points: await this.points.list(org.orgId) };
39
+ }
40
+ async available(org) {
41
+ return { points: await this.points.available(org.orgId) };
42
+ }
43
+ async setDefault(principal, org, { point }, body) {
44
+ const p = requireUser(principal);
45
+ await this.points.setDefault(org.orgId, point, body.extension, p.account.id);
46
+ }
47
+ };
48
+ __decorate([
49
+ Get(),
50
+ OrgAction("org.extensions.manage"),
51
+ __param(0, CurrentOrg())
52
+ ], ExtensionPointDefaultsController.prototype, "list", null);
53
+ __decorate([
54
+ Get("available"),
55
+ OrgAction("agents.use"),
56
+ __param(0, CurrentOrg())
57
+ ], ExtensionPointDefaultsController.prototype, "available", null);
58
+ __decorate([
59
+ Put(":point/default"),
60
+ HttpCode(204),
61
+ OrgAction("org.extensions.manage"),
62
+ __param(0, CurrentPrincipal()),
63
+ __param(1, CurrentOrg()),
64
+ __param(2, ZParam(ExtensionPointParamsDto)),
65
+ __param(3, ZBody(ExtensionPointDefaultBodyDto))
66
+ ], ExtensionPointDefaultsController.prototype, "setDefault", null);
67
+ ExtensionPointDefaultsController = __decorate([
68
+ Controller("api/v1/orgs/:orgId/extension-points"),
69
+ __param(0, Inject(ExtensionPointDefaults))
70
+ ], ExtensionPointDefaultsController);
71
+ export { ExtensionPointDefaultsController };
@@ -0,0 +1,71 @@
1
+ import { KernelDb } from "../infra/database/kernel-db.js";
2
+ import { TransactionHost } from "../infra/database/transaction-host.js";
3
+ import type { KernelLogger } from "../log.js";
4
+ import { EffectiveConfigs } from "./effective-config.js";
5
+ import { OrgExtensionConfigs } from "./org-config.js";
6
+ import { ExtensionRegistry } from "./registry.js";
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
+ */
11
+ export type PointResolution<T> = {
12
+ ok: true;
13
+ extension: string;
14
+ impl: T;
15
+ orgConfig: unknown;
16
+ config: unknown;
17
+ } | {
18
+ ok: false;
19
+ reason: "none" | "ambiguous";
20
+ };
21
+ /** One `org-default` extension point of an org (the admin view). */
22
+ export interface OrgPointDefaultView {
23
+ point: string;
24
+ /** The extensions that could serve the org now, by name. */
25
+ candidates: string[];
26
+ /** The stored default, also when it is not a candidate now. */
27
+ default: string | null;
28
+ /** The extension a call would use now; null when there is none or the choice is ambiguous. */
29
+ effective: string | null;
30
+ }
31
+ /**
32
+ * The org default provider of an `org-default` extension point (web tools spec §6). Per call,
33
+ * never cached in process: the candidates are the providers loaded on this replica that are
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
36
+ * (`capybara.org_extension_point_defaults`), else the choice is ambiguous. A stored default that
37
+ * is not a candidate (disabled, uninstalled, unconfigured) stays and counts again once it is one.
38
+ */
39
+ export declare class ExtensionPointDefaults {
40
+ private readonly kdb;
41
+ readonly txHost: TransactionHost;
42
+ private readonly registry;
43
+ private readonly orgConfigs;
44
+ private readonly effective;
45
+ private readonly log;
46
+ constructor(kdb: KernelDb, txHost: TransactionHost, registry: Pick<ExtensionRegistry, "list">, orgConfigs: Pick<OrgExtensionConfigs, "get">, effective: Pick<EffectiveConfigs, "get">, log: KernelLogger);
47
+ /**
48
+ * The provider of `point` (the name without the major, e.g. `web-search`) for `orgId`, with the
49
+ * org's decrypted config and the effective deployment config to pass back to it. Throws when the
50
+ * point has no `selection`.
51
+ */
52
+ resolve<T>(orgId: string, point: string): Promise<PointResolution<T>>;
53
+ /** Every `org-default` point with its candidates, stored default and effective provider. */
54
+ list(orgId: string): Promise<OrgPointDefaultView[]>;
55
+ /** Whether each `org-default` point has a provider for the org now (no extension names). */
56
+ available(orgId: string): Promise<{
57
+ point: string;
58
+ available: boolean;
59
+ }[]>;
60
+ /**
61
+ * Stores `extension` as the org's default provider of `point`. 400 `validation_failed` unless
62
+ * the point is an `org-default` one and the extension provides it (loaded here) and is enabled
63
+ * in the org. Audited as `extension_point.default_set`.
64
+ */
65
+ setDefault(orgId: string, point: string, extension: string, actorId: string): Promise<void>;
66
+ /** The candidates of `point` in `orgId`, by extension name. */
67
+ private candidates;
68
+ private choose;
69
+ /** The org's stored defaults, point → extension. */
70
+ private storedDefaults;
71
+ }
@@ -0,0 +1,234 @@
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 { EXTENSION_POINTS } from "@capybara-hq/plugin-sdk";
11
+ import { Inject, Injectable } from "@nestjs/common";
12
+ import { ApiError } from "../errors.js";
13
+ import { audit } from "../identity/audit.js";
14
+ import { KernelDb } from "../infra/database/kernel-db.js";
15
+ import { TransactionHost } from "../infra/database/transaction-host.js";
16
+ import { Transactional } from "../infra/database/transactional.decorator.js";
17
+ import { KERNEL_LOGGER } from "../infra/tokens.js";
18
+ import { EffectiveConfigs } from "./effective-config.js";
19
+ import { enabledExtensionsQuery, isExtensionEnabled } from "./enabled.js";
20
+ import { OrgExtensionConfigs } from "./org-config.js";
21
+ import { ExtensionRegistry } from "./registry.js";
22
+ /** The extension points whose provider each org chooses (`selection: "org-default"`). */
23
+ function selectionPoints() {
24
+ return Object.entries(EXTENSION_POINTS)
25
+ .filter(([, info]) => info.selection === "org-default")
26
+ .map(([name]) => name);
27
+ }
28
+ const hasSelection = (point) => EXTENSION_POINTS[point]?.selection === "org-default";
29
+ /**
30
+ * The org default provider of an `org-default` extension point (web tools spec §6). Per call,
31
+ * never cached in process: the candidates are the providers loaded on this replica that are
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
34
+ * (`capybara.org_extension_point_defaults`), else the choice is ambiguous. A stored default that
35
+ * is not a candidate (disabled, uninstalled, unconfigured) stays and counts again once it is one.
36
+ */
37
+ let ExtensionPointDefaults = class ExtensionPointDefaults {
38
+ kdb;
39
+ txHost;
40
+ registry;
41
+ orgConfigs;
42
+ effective;
43
+ log;
44
+ constructor(kdb, txHost, registry, orgConfigs, effective, log) {
45
+ this.kdb = kdb;
46
+ this.txHost = txHost;
47
+ this.registry = registry;
48
+ this.orgConfigs = orgConfigs;
49
+ this.effective = effective;
50
+ this.log = log;
51
+ }
52
+ /**
53
+ * The provider of `point` (the name without the major, e.g. `web-search`) for `orgId`, with the
54
+ * org's decrypted config and the effective deployment config to pass back to it. Throws when the
55
+ * point has no `selection`.
56
+ */
57
+ async resolve(orgId, point) {
58
+ if (!hasSelection(point)) {
59
+ throw new Error(`extension point ${point} has no org-default selection`);
60
+ }
61
+ const candidates = await this.candidates(orgId, point);
62
+ const chosen = await this.choose(orgId, point, candidates);
63
+ if (!chosen.ok)
64
+ return chosen;
65
+ const c = chosen.candidate;
66
+ return {
67
+ ok: true,
68
+ extension: c.extension,
69
+ impl: c.impl,
70
+ orgConfig: c.orgConfig,
71
+ config: c.config,
72
+ };
73
+ }
74
+ /** Every `org-default` point with its candidates, stored default and effective provider. */
75
+ async list(orgId) {
76
+ const stored = await this.storedDefaults(orgId);
77
+ const out = [];
78
+ for (const point of selectionPoints()) {
79
+ const candidates = await this.candidates(orgId, point);
80
+ const chosen = pick(candidates, stored.get(point));
81
+ out.push({
82
+ point,
83
+ candidates: candidates.map((c) => c.extension),
84
+ default: stored.get(point) ?? null,
85
+ effective: chosen.ok ? chosen.candidate.extension : null,
86
+ });
87
+ }
88
+ return out;
89
+ }
90
+ /** Whether each `org-default` point has a provider for the org now (no extension names). */
91
+ async available(orgId) {
92
+ const out = [];
93
+ for (const point of selectionPoints()) {
94
+ out.push({ point, available: (await this.resolve(orgId, point)).ok });
95
+ }
96
+ return out;
97
+ }
98
+ /**
99
+ * Stores `extension` as the org's default provider of `point`. 400 `validation_failed` unless
100
+ * the point is an `org-default` one and the extension provides it (loaded here) and is enabled
101
+ * in the org. Audited as `extension_point.default_set`.
102
+ */
103
+ async setDefault(orgId, point, extension, actorId) {
104
+ const db = this.kdb.db;
105
+ if (!hasSelection(point)) {
106
+ throw new ApiError("validation_failed", `${point} is not an extension point with an organization default`);
107
+ }
108
+ const provides = this.registry.list(point).some((e) => e.plugin === extension);
109
+ if (!provides || !(await isExtensionEnabled(db, orgId, extension))) {
110
+ throw new ApiError("validation_failed", `Extension ${extension} does not provide ${point} or is not enabled in this organization`);
111
+ }
112
+ await db
113
+ .insertInto("org_extension_point_defaults")
114
+ .values({ org_id: orgId, point, extension, updated_by: actorId })
115
+ .onConflict((oc) => oc.columns(["org_id", "point"]).doUpdateSet({
116
+ extension,
117
+ updated_by: actorId,
118
+ updated_at: new Date(),
119
+ }))
120
+ .execute();
121
+ await audit(db, {
122
+ actorAccountId: actorId,
123
+ orgId,
124
+ action: "extension_point.default_set",
125
+ target: point,
126
+ detail: { point, extension },
127
+ });
128
+ }
129
+ /** The candidates of `point` in `orgId`, by extension name. */
130
+ async candidates(orgId, point) {
131
+ const db = this.kdb.db;
132
+ const enabled = new Set((await db
133
+ .selectFrom(enabledExtensionsQuery(db, orgId).as("en"))
134
+ .select("en.plugin")
135
+ .execute()).map((r) => r.plugin));
136
+ const providers = new Map();
137
+ for (const e of this.registry.list(point)) {
138
+ if (enabled.has(e.plugin) && !providers.has(e.plugin))
139
+ providers.set(e.plugin, e.impl);
140
+ }
141
+ const out = [];
142
+ for (const [extension, impl] of providers) {
143
+ let cfg;
144
+ try {
145
+ cfg = await this.orgConfigs.get(orgId, extension);
146
+ }
147
+ catch (err) {
148
+ this.log.warn("org default provider: provider excluded, its org config is invalid", {
149
+ orgId,
150
+ point,
151
+ extension,
152
+ err,
153
+ });
154
+ continue;
155
+ }
156
+ if (!cfg?.enabled)
157
+ continue;
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;
176
+ if (typeof configured === "function") {
177
+ let ok;
178
+ try {
179
+ ok = configured.call(impl, cfg.config, effective.config) !== false;
180
+ }
181
+ catch (err) {
182
+ this.log.warn("org default provider: provider excluded, configured() threw", {
183
+ orgId,
184
+ point,
185
+ extension,
186
+ err,
187
+ });
188
+ continue;
189
+ }
190
+ if (!ok)
191
+ continue;
192
+ }
193
+ out.push({ extension, impl, orgConfig: cfg.config, config: effective.config });
194
+ }
195
+ return out.sort((a, b) => (a.extension < b.extension ? -1 : a.extension > b.extension ? 1 : 0));
196
+ }
197
+ async choose(orgId, point, candidates) {
198
+ if (candidates.length < 2)
199
+ return pick(candidates, undefined);
200
+ return pick(candidates, (await this.storedDefaults(orgId)).get(point));
201
+ }
202
+ /** The org's stored defaults, point → extension. */
203
+ async storedDefaults(orgId) {
204
+ const rows = await this.kdb.db
205
+ .selectFrom("org_extension_point_defaults")
206
+ .select(["point", "extension"])
207
+ .where("org_id", "=", orgId)
208
+ .execute();
209
+ return new Map(rows.map((r) => [r.point, r.extension]));
210
+ }
211
+ };
212
+ __decorate([
213
+ Transactional()
214
+ ], ExtensionPointDefaults.prototype, "setDefault", null);
215
+ ExtensionPointDefaults = __decorate([
216
+ Injectable(),
217
+ __param(0, Inject(KernelDb)),
218
+ __param(1, Inject(TransactionHost)),
219
+ __param(2, Inject(ExtensionRegistry)),
220
+ __param(3, Inject(OrgExtensionConfigs)),
221
+ __param(4, Inject(EffectiveConfigs)),
222
+ __param(5, Inject(KERNEL_LOGGER))
223
+ ], ExtensionPointDefaults);
224
+ export { ExtensionPointDefaults };
225
+ /** Rules 2-4 of spec §6: one candidate → it; several → the stored default if a candidate. */
226
+ function pick(candidates, stored) {
227
+ const [only] = candidates;
228
+ if (only === undefined)
229
+ return { ok: false, reason: "none" };
230
+ if (candidates.length === 1)
231
+ return { ok: true, candidate: only };
232
+ const chosen = candidates.find((c) => c.extension === stored);
233
+ return chosen ? { ok: true, candidate: chosen } : { ok: false, reason: "ambiguous" };
234
+ }
@@ -11,7 +11,7 @@ export interface ExtensionPointEntry {
11
11
  version: string;
12
12
  /** 部署配置摘要,见 `deploymentConfigHash`。 */
13
13
  configHash: string;
14
- /** 提供方实例的在途计数(connector / sandbox / model-provider 的 `impl` 已经包成计入它的代理)。 */
14
+ /** The provider instance's in-flight tracker (a tracked point's `impl`: connector, sandbox, model-provider, web-search, web-fetch, is already a proxy counted in it). */
15
15
  inflight: InflightTracker;
16
16
  }
17
17
  /**
@@ -12,6 +12,8 @@ const TRACKED_EXTENSION_POINTS = {
12
12
  connector: { sessions: ["open"] },
13
13
  sandbox: {},
14
14
  "model-provider": {},
15
+ "web-search": {},
16
+ "web-fetch": {},
15
17
  };
16
18
  /**
17
19
  * The extension instances in effect in this process (by extension name, one each). One provider
@@ -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