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

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 (362) hide show
  1. package/bootstrap.json +27 -3
  2. package/dist/admin/admin.controller.d.ts +21 -74
  3. package/dist/admin/admin.controller.js +50 -50
  4. package/dist/admin/admin.schemas.d.ts +57 -0
  5. package/dist/admin/admin.schemas.js +50 -0
  6. package/dist/admin/extensions.controller.d.ts +10 -0
  7. package/dist/admin/extensions.controller.js +18 -0
  8. package/dist/admin/extensions.schemas.d.ts +7 -0
  9. package/dist/admin/extensions.schemas.js +10 -0
  10. package/dist/admin/limit-defaults.d.ts +20 -0
  11. package/dist/admin/limit-defaults.js +10 -0
  12. package/dist/agents/agent-profile.service.d.ts +7 -5
  13. package/dist/agents/agent-profile.service.js +14 -9
  14. package/dist/agents/agents.controller.d.ts +7 -287
  15. package/dist/agents/agents.controller.js +7 -67
  16. package/dist/agents/agents.schemas.d.ts +389 -0
  17. package/dist/agents/agents.schemas.js +126 -0
  18. package/dist/agents/agents.service.d.ts +16 -6
  19. package/dist/agents/agents.service.js +75 -19
  20. package/dist/agents/definition.d.ts +47 -19
  21. package/dist/agents/definition.js +119 -38
  22. package/dist/agents/from-template.d.ts +2 -2
  23. package/dist/agents/from-template.js +76 -45
  24. package/dist/agents/from-template.service.d.ts +12 -0
  25. package/dist/agents/from-template.service.js +23 -6
  26. package/dist/agents/models.controller.d.ts +33 -5
  27. package/dist/agents/models.controller.js +50 -6
  28. package/dist/agents/org-templates.d.ts +13 -3
  29. package/dist/agents/org-templates.js +69 -28
  30. package/dist/agents/pending-connector-requests.d.ts +2 -0
  31. package/dist/agents/pending-connector-requests.js +1 -1
  32. package/dist/agents/pending-connectors.controller.d.ts +1 -1
  33. package/dist/agents/pending-connectors.controller.js +2 -2
  34. package/dist/agents/pending-connectors.service.d.ts +2 -2
  35. package/dist/agents/pending-connectors.service.js +19 -19
  36. package/dist/agents/profile.d.ts +18 -0
  37. package/dist/agents/profile.js +5 -1
  38. package/dist/agents/readiness.controller.d.ts +5 -5
  39. package/dist/agents/readiness.controller.js +6 -6
  40. package/dist/agents/templates.controller.d.ts +8 -17
  41. package/dist/agents/templates.controller.js +13 -31
  42. package/dist/agents/templates.schemas.d.ts +20 -0
  43. package/dist/agents/templates.schemas.js +45 -0
  44. package/dist/background/background.controller.js +3 -2
  45. package/dist/background/background.schemas.d.ts +10 -0
  46. package/dist/background/background.schemas.js +16 -0
  47. package/dist/background/tasks.service.d.ts +1 -1
  48. package/dist/background/tasks.service.js +7 -2
  49. package/dist/catalog/admin-catalog.controller.d.ts +4 -57
  50. package/dist/catalog/admin-catalog.controller.js +8 -45
  51. package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
  52. package/dist/catalog/admin-catalog.schemas.js +92 -0
  53. package/dist/catalog/catalog-content.d.ts +12 -2
  54. package/dist/catalog/catalog-scope.service.js +8 -2
  55. package/dist/catalog/catalog.service.d.ts +2 -0
  56. package/dist/catalog/catalog.service.js +3 -0
  57. package/dist/catalog/component-scope.controller.d.ts +3 -65
  58. package/dist/catalog/component-scope.controller.js +3 -56
  59. package/dist/catalog/component-scope.schemas.d.ts +114 -0
  60. package/dist/catalog/component-scope.schemas.js +97 -0
  61. package/dist/catalog/component-scope.service.d.ts +28 -4
  62. package/dist/catalog/component-scope.service.js +55 -3
  63. package/dist/catalog/component-state.d.ts +9 -2
  64. package/dist/catalog/component-state.js +22 -13
  65. package/dist/catalog/marketplaces.controller.d.ts +5 -35
  66. package/dist/catalog/marketplaces.controller.js +6 -34
  67. package/dist/catalog/marketplaces.schemas.d.ts +48 -0
  68. package/dist/catalog/marketplaces.schemas.js +53 -0
  69. package/dist/catalog/marketplaces.service.d.ts +15 -1
  70. package/dist/catalog/marketplaces.service.js +22 -1
  71. package/dist/catalog/org-catalog.controller.d.ts +6 -62
  72. package/dist/catalog/org-catalog.controller.js +12 -66
  73. package/dist/catalog/org-catalog.schemas.d.ts +79 -0
  74. package/dist/catalog/org-catalog.schemas.js +82 -0
  75. package/dist/catalog/org-catalog.service.d.ts +9 -2
  76. package/dist/catalog/org-catalog.service.js +38 -5
  77. package/dist/catalog/org-extension.controller.d.ts +1 -12
  78. package/dist/catalog/org-extension.controller.js +1 -10
  79. package/dist/catalog/org-extension.schemas.d.ts +15 -0
  80. package/dist/catalog/org-extension.schemas.js +22 -0
  81. package/dist/catalog/org-plugin-uploads.controller.d.ts +2 -19
  82. package/dist/catalog/org-plugin-uploads.controller.js +15 -28
  83. package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
  84. package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
  85. package/dist/catalog/owned-items.d.ts +6 -2
  86. package/dist/catalog/owned-items.js +16 -4
  87. package/dist/catalog/platform-components.d.ts +2 -0
  88. package/dist/catalog/platform-components.js +2 -0
  89. package/dist/catalog/plugin-import.js +1 -0
  90. package/dist/catalog/plugin-install.js +1 -1
  91. package/dist/catalog/requests.service.d.ts +2 -1
  92. package/dist/catalog/requests.service.js +6 -2
  93. package/dist/channels/channels.schemas.d.ts +33 -0
  94. package/dist/channels/channels.schemas.js +34 -0
  95. package/dist/channels/connections.controller.d.ts +2 -29
  96. package/dist/channels/connections.controller.js +1 -23
  97. package/dist/channels/connections.service.d.ts +8 -2
  98. package/dist/channels/connections.service.js +23 -5
  99. package/dist/channels/inbound.js +4 -0
  100. package/dist/config/schema.d.ts +4 -0
  101. package/dist/config/schema.js +24 -0
  102. package/dist/conversations/conversations.controller.d.ts +16 -37
  103. package/dist/conversations/conversations.controller.js +16 -56
  104. package/dist/conversations/conversations.schemas.d.ts +52 -0
  105. package/dist/conversations/conversations.schemas.js +79 -0
  106. package/dist/conversations/conversations.service.d.ts +13 -4
  107. package/dist/conversations/conversations.service.js +32 -26
  108. package/dist/conversations/events.d.ts +80 -6
  109. package/dist/conversations/events.js +60 -5
  110. package/dist/conversations/message-context.d.ts +28 -0
  111. package/dist/conversations/message-context.js +56 -0
  112. package/dist/conversations/queue.d.ts +2 -1
  113. package/dist/conversations/queue.js +11 -2
  114. package/dist/ctx/create-ctx.d.ts +15 -1
  115. package/dist/ctx/create-ctx.js +23 -2
  116. package/dist/db/kernel-schema.d.ts +44 -0
  117. package/dist/environments/environments.schemas.d.ts +3 -0
  118. package/dist/environments/environments.schemas.js +14 -0
  119. package/dist/environments/environments.service.d.ts +16 -4
  120. package/dist/environments/environments.service.js +58 -13
  121. package/dist/errors.d.ts +6 -0
  122. package/dist/errors.js +6 -0
  123. package/dist/evals/evals.schemas.d.ts +110 -0
  124. package/dist/evals/evals.schemas.js +107 -0
  125. package/dist/evals/reconstruct.js +18 -11
  126. package/dist/evals/recorded-tools.d.ts +2 -1
  127. package/dist/evals/recorded-tools.js +11 -3
  128. package/dist/evals/run-replay.d.ts +8 -1
  129. package/dist/evals/run-replay.js +17 -2
  130. package/dist/evals/runs.controller.d.ts +2 -57
  131. package/dist/evals/runs.controller.js +1 -42
  132. package/dist/evals/runs.service.d.ts +8 -7
  133. package/dist/evals/runs.service.js +45 -30
  134. package/dist/evals/sets.controller.d.ts +2 -28
  135. package/dist/evals/sets.controller.js +1 -31
  136. package/dist/evals/sets.service.d.ts +7 -7
  137. package/dist/evals/sets.service.js +23 -17
  138. package/dist/evals/snapshot.d.ts +3 -2
  139. package/dist/evals/snapshot.js +17 -4
  140. package/dist/evals/step-replay.d.ts +2 -1
  141. package/dist/evals/step-replay.js +3 -2
  142. package/dist/extensions/admin-ops.d.ts +5 -3
  143. package/dist/extensions/admin-ops.js +17 -12
  144. package/dist/extensions/config-hash.d.ts +10 -0
  145. package/dist/extensions/config-hash.js +38 -0
  146. package/dist/extensions/deployment-config.d.ts +16 -1
  147. package/dist/extensions/deployment-config.js +83 -0
  148. package/dist/extensions/extensions.module.js +9 -12
  149. package/dist/extensions/host.d.ts +39 -12
  150. package/dist/extensions/host.js +129 -51
  151. package/dist/extensions/installs.d.ts +5 -0
  152. package/dist/extensions/installs.js +12 -0
  153. package/dist/extensions/org-config.d.ts +17 -2
  154. package/dist/extensions/org-config.js +23 -4
  155. package/dist/extensions/point-defaults.controller.d.ts +2 -8
  156. package/dist/extensions/point-defaults.controller.js +1 -3
  157. package/dist/extensions/point-defaults.d.ts +3 -1
  158. package/dist/extensions/point-defaults.js +4 -2
  159. package/dist/extensions/point-defaults.schemas.d.ts +9 -0
  160. package/dist/extensions/point-defaults.schemas.js +14 -0
  161. package/dist/extensions/state.module.d.ts +9 -0
  162. package/dist/extensions/state.module.js +38 -0
  163. package/dist/extensions/unavailable.d.ts +49 -0
  164. package/dist/extensions/unavailable.js +113 -0
  165. package/dist/files/previewers.controller.js +2 -3
  166. package/dist/files/previewers.d.ts +1 -1
  167. package/dist/files/previewers.js +4 -4
  168. package/dist/files/previewers.schemas.d.ts +10 -0
  169. package/dist/files/previewers.schemas.js +9 -0
  170. package/dist/http/api.module.js +4 -0
  171. package/dist/http/plugin-dispatch.d.ts +4 -1
  172. package/dist/http/plugin-dispatch.js +14 -2
  173. package/dist/identity/accounts.d.ts +43 -4
  174. package/dist/identity/accounts.js +74 -6
  175. package/dist/identity/auth.guard.js +10 -1
  176. package/dist/identity/cookies.d.ts +6 -0
  177. package/dist/identity/cookies.js +14 -0
  178. package/dist/identity/identity.module.js +3 -0
  179. package/dist/identity/initial-passwords.controller.d.ts +22 -0
  180. package/dist/identity/initial-passwords.controller.js +49 -0
  181. package/dist/identity/initial-passwords.d.ts +61 -0
  182. package/dist/identity/initial-passwords.job.d.ts +16 -0
  183. package/dist/identity/initial-passwords.job.js +46 -0
  184. package/dist/identity/initial-passwords.js +159 -0
  185. package/dist/identity/me.controller.d.ts +14 -0
  186. package/dist/identity/me.controller.js +39 -1
  187. package/dist/identity/principal.d.ts +8 -0
  188. package/dist/identity/principal.js +8 -0
  189. package/dist/identity/settings.d.ts +3 -1
  190. package/dist/identity/settings.js +6 -4
  191. package/dist/inbox/inbox.schemas.d.ts +8 -0
  192. package/dist/inbox/inbox.schemas.js +11 -0
  193. package/dist/inbox/platform-inbox.controller.d.ts +1 -1
  194. package/dist/inbox/platform-inbox.controller.js +2 -2
  195. package/dist/index.d.ts +4 -0
  196. package/dist/index.js +6 -0
  197. package/dist/infra/config/kernel-config.service.js +3 -0
  198. package/dist/infra/events/kernel-events.d.ts +8 -0
  199. package/dist/lifecycle/kernel-lifecycle.js +4 -0
  200. package/dist/models/embeddings.d.ts +82 -0
  201. package/dist/models/embeddings.js +326 -0
  202. package/dist/models/enablement.controller.d.ts +40 -0
  203. package/dist/models/enablement.controller.js +74 -0
  204. package/dist/models/enablement.d.ts +101 -0
  205. package/dist/models/enablement.js +264 -0
  206. package/dist/models/models.module.d.ts +5 -1
  207. package/dist/models/models.module.js +16 -4
  208. package/dist/models/org-models.schemas.d.ts +8 -0
  209. package/dist/models/org-models.schemas.js +22 -0
  210. package/dist/models/prices.d.ts +3 -1
  211. package/dist/models/prices.js +7 -5
  212. package/dist/models/purposes.d.ts +30 -6
  213. package/dist/models/purposes.js +68 -17
  214. package/dist/orgs/orgs.controller.d.ts +2 -5
  215. package/dist/orgs/orgs.controller.js +3 -6
  216. package/dist/orgs/orgs.schemas.d.ts +8 -0
  217. package/dist/orgs/orgs.schemas.js +16 -0
  218. package/dist/orgs/orgs.service.d.ts +3 -1
  219. package/dist/orgs/orgs.service.js +6 -4
  220. package/dist/orgs/settings.service.d.ts +9 -1
  221. package/dist/orgs/settings.service.js +20 -5
  222. package/dist/overrides.d.ts +4 -0
  223. package/dist/overrides.js +2 -0
  224. package/dist/platform/errors.d.ts +21 -4
  225. package/dist/platform/errors.js +45 -6
  226. package/dist/platform/exclusions.d.ts +2 -3
  227. package/dist/platform/exclusions.js +68 -831
  228. package/dist/platform/method.js +1 -1
  229. package/dist/platform/operation.d.ts +82 -5
  230. package/dist/platform/operation.js +62 -7
  231. package/dist/platform/ops/accounts.ops.d.ts +32 -0
  232. package/dist/platform/ops/accounts.ops.js +291 -0
  233. package/dist/platform/ops/admin.ops.d.ts +36 -0
  234. package/dist/platform/ops/admin.ops.js +389 -0
  235. package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
  236. package/dist/platform/ops/agent-skills.ops.js +226 -0
  237. package/dist/platform/ops/agent-templates.ops.d.ts +4 -1
  238. package/dist/platform/ops/agent-templates.ops.js +194 -14
  239. package/dist/platform/ops/agents.ops.d.ts +19 -1
  240. package/dist/platform/ops/agents.ops.js +481 -58
  241. package/dist/platform/ops/approvals.ops.d.ts +30 -0
  242. package/dist/platform/ops/approvals.ops.js +116 -0
  243. package/dist/platform/ops/background.ops.d.ts +14 -0
  244. package/dist/platform/ops/background.ops.js +134 -0
  245. package/dist/platform/ops/catalog-admin.ops.d.ts +74 -0
  246. package/dist/platform/ops/catalog-admin.ops.js +587 -0
  247. package/dist/platform/ops/channels.ops.d.ts +16 -0
  248. package/dist/platform/ops/channels.ops.js +195 -0
  249. package/dist/platform/ops/components.ops.d.ts +46 -0
  250. package/dist/platform/ops/components.ops.js +853 -0
  251. package/dist/platform/ops/connectors.ops.d.ts +4 -2
  252. package/dist/platform/ops/connectors.ops.js +68 -6
  253. package/dist/platform/ops/conversations.ops.d.ts +30 -0
  254. package/dist/platform/ops/conversations.ops.js +470 -0
  255. package/dist/platform/ops/environments.ops.d.ts +26 -0
  256. package/dist/platform/ops/environments.ops.js +289 -0
  257. package/dist/platform/ops/errors.d.ts +10 -5
  258. package/dist/platform/ops/errors.js +19 -11
  259. package/dist/platform/ops/evals.ops.d.ts +28 -0
  260. package/dist/platform/ops/evals.ops.js +783 -0
  261. package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
  262. package/dist/platform/ops/extensions-admin.ops.js +344 -0
  263. package/dist/platform/ops/extensions.ops.d.ts +7 -1
  264. package/dist/platform/ops/extensions.ops.js +248 -17
  265. package/dist/platform/ops/inbox.ops.d.ts +25 -0
  266. package/dist/platform/ops/inbox.ops.js +378 -0
  267. package/dist/platform/ops/marketplaces.ops.d.ts +7 -1
  268. package/dist/platform/ops/marketplaces.ops.js +326 -17
  269. package/dist/platform/ops/models.ops.d.ts +25 -0
  270. package/dist/platform/ops/models.ops.js +232 -0
  271. package/dist/platform/ops/org-plugins.ops.d.ts +29 -0
  272. package/dist/platform/ops/org-plugins.ops.js +329 -0
  273. package/dist/platform/ops/org-settings.ops.d.ts +16 -0
  274. package/dist/platform/ops/org-settings.ops.js +102 -0
  275. package/dist/platform/ops/orgs.ops.d.ts +28 -0
  276. package/dist/platform/ops/orgs.ops.js +295 -0
  277. package/dist/platform/ops/other-orgs.d.ts +20 -0
  278. package/dist/platform/ops/other-orgs.js +72 -0
  279. package/dist/platform/ops/platform.ops.d.ts +4 -4
  280. package/dist/platform/ops/platform.ops.js +23 -24
  281. package/dist/platform/ops/plugins.ops.d.ts +10 -8
  282. package/dist/platform/ops/plugins.ops.js +176 -77
  283. package/dist/platform/ops/previewers.ops.d.ts +14 -0
  284. package/dist/platform/ops/previewers.ops.js +109 -0
  285. package/dist/platform/ops/requests.ops.js +57 -19
  286. package/dist/platform/ops/skills.ops.d.ts +5 -1
  287. package/dist/platform/ops/skills.ops.js +129 -11
  288. package/dist/platform/ops/unavailable.d.ts +23 -0
  289. package/dist/platform/ops/unavailable.js +111 -0
  290. package/dist/platform/parity.d.ts +33 -0
  291. package/dist/platform/parity.js +272 -0
  292. package/dist/platform/platform-ops.module.d.ts +32 -0
  293. package/dist/platform/platform-ops.module.js +78 -11
  294. package/dist/platform/route-schemas.d.ts +18 -0
  295. package/dist/platform/route-schemas.js +60 -0
  296. package/dist/roles/worker.module.js +2 -0
  297. package/dist/runtime/context/build.d.ts +2 -0
  298. package/dist/runtime/context/build.js +28 -2
  299. package/dist/runtime/context/compaction.js +10 -1
  300. package/dist/runtime/context/run-context.d.ts +65 -0
  301. package/dist/runtime/context/run-context.js +215 -0
  302. package/dist/runtime/hook-calls.d.ts +8 -1
  303. package/dist/runtime/hook-calls.js +40 -9
  304. package/dist/runtime/model-call.d.ts +8 -3
  305. package/dist/runtime/model-call.js +30 -6
  306. package/dist/runtime/providers.d.ts +146 -32
  307. package/dist/runtime/providers.js +328 -67
  308. package/dist/runtime/run-context.service.d.ts +65 -0
  309. package/dist/runtime/run-context.service.js +220 -0
  310. package/dist/runtime/run-worker.d.ts +6 -1
  311. package/dist/runtime/run-worker.js +35 -10
  312. package/dist/runtime/runtime.module.js +2 -0
  313. package/dist/runtime/subagents/definition.d.ts +15 -15
  314. package/dist/runtime/subagents/definition.js +49 -118
  315. package/dist/runtime/usage-report-jobs.d.ts +88 -0
  316. package/dist/runtime/usage-report-jobs.js +158 -0
  317. package/dist/runtime/usage-report.d.ts +33 -38
  318. package/dist/runtime/usage-report.js +152 -84
  319. package/dist/skills/changes.controller.js +2 -1
  320. package/dist/skills/changes.service.d.ts +1 -1
  321. package/dist/skills/changes.service.js +4 -4
  322. package/dist/skills/invocable.controller.d.ts +1 -1
  323. package/dist/skills/invocable.controller.js +2 -2
  324. package/dist/skills/invoke.d.ts +2 -2
  325. package/dist/skills/invoke.js +8 -1
  326. package/dist/skills/skills.controller.d.ts +4 -13
  327. package/dist/skills/skills.controller.js +8 -24
  328. package/dist/skills/skills.schemas.d.ts +48 -0
  329. package/dist/skills/skills.schemas.js +61 -0
  330. package/dist/skills/skills.service.d.ts +11 -1
  331. package/dist/skills/skills.service.js +37 -14
  332. package/dist/time-zone.d.ts +5 -0
  333. package/dist/time-zone.js +19 -0
  334. package/dist/tools/approvals.controller.js +2 -3
  335. package/dist/tools/approvals.schemas.d.ts +21 -0
  336. package/dist/tools/approvals.schemas.js +15 -0
  337. package/dist/tools/builtin-names.d.ts +10 -8
  338. package/dist/tools/builtin-names.js +16 -11
  339. package/dist/tools/builtins/builtin-tools.d.ts +3 -1
  340. package/dist/tools/builtins/builtin-tools.js +15 -3
  341. package/dist/tools/builtins/current-time.d.ts +26 -0
  342. package/dist/tools/builtins/current-time.js +99 -0
  343. package/dist/tools/builtins/platform.d.ts +19 -2
  344. package/dist/tools/builtins/platform.js +105 -16
  345. package/dist/tools/connectors.controller.d.ts +1 -2
  346. package/dist/tools/connectors.controller.js +1 -4
  347. package/dist/tools/connectors.schemas.d.ts +12 -0
  348. package/dist/tools/connectors.schemas.js +19 -0
  349. package/dist/tools/connectors.service.d.ts +5 -2
  350. package/dist/tools/connectors.service.js +7 -5
  351. package/dist/tools/org-tool-switches.d.ts +16 -2
  352. package/dist/tools/org-tool-switches.js +26 -9
  353. package/dist/tools/pipeline.js +9 -1
  354. package/dist/tools/registry.d.ts +48 -51
  355. package/dist/tools/registry.js +222 -233
  356. package/package.json +3 -3
  357. package/src/migrations/0089_model_kinds_usage.sql +38 -0
  358. package/src/migrations/0090_initial_passwords.sql +27 -0
  359. package/src/migrations/0091_account_time_zone.sql +4 -0
  360. package/src/migrations/0092_tools_default_on.sql +27 -0
  361. package/dist/platform/redact-orgs.d.ts +0 -7
  362. package/dist/platform/redact-orgs.js +0 -52
@@ -10,15 +10,39 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
10
10
  import { EXTENSION_POINTS, parseExtensionPoint } from "@capybara-hq/plugin-sdk";
11
11
  import { Inject, Injectable } from "@nestjs/common";
12
12
  import { z } from "zod";
13
+ import { OrgExtensionParams, OrgExtensionToolParams, OrgToolSwitchPut, } from "../../catalog/org-extension.schemas.js";
13
14
  import { ExtensionDisplayNames } from "../../extensions/display-name.js";
14
- import { OrgExtensionConfigs, providesOf } from "../../extensions/org-config.js";
15
+ import { OrgExtensionConfigs, providesOf, } from "../../extensions/org-config.js";
16
+ import { ExtensionPointDefaults } from "../../extensions/point-defaults.js";
17
+ import { ExtensionPointDefaultBody, ExtensionPointParams, } from "../../extensions/point-defaults.schemas.js";
15
18
  import { KernelDb } from "../../infra/database/kernel-db.js";
16
19
  import { can } from "../../orgs/roles.js";
20
+ import { OrgToolSwitches } from "../../tools/org-tool-switches.js";
21
+ import { resolveNext } from "../errors.js";
17
22
  import { defineOperation } from "../operation.js";
18
23
  import { PlatformOperations } from "../registry.js";
24
+ import { precheckBy, viaAgent } from "./errors.js";
19
25
  import { Cursor, pageOf, startOf } from "./paging.js";
20
26
  import { roleOf } from "./role.js";
27
+ import { localized, named, orElse } from "./summary.js";
28
+ import { roleFor, unavailableFields } from "./unavailable.js";
21
29
  const NoInput = z.object({}).strict();
30
+ const Extension = OrgExtensionParams.shape.extension;
31
+ const Tool = OrgExtensionToolParams.shape.tool;
32
+ const SwitchConfirm = OrgToolSwitchPut.shape.confirm.unwrap();
33
+ /** The next step of an extension that needs its org config (an org admin enters it on the web). */
34
+ const NEEDS_ORG_CONFIG = {
35
+ orgAdmin: "An org admin fills in its org config on the 扩展 page, where secrets are entered.",
36
+ member: "Ask an org admin to fill in its org config on the 扩展 page.",
37
+ };
38
+ /** An extension's state in the org, as the 扩展 page shows it. */
39
+ function stateOf(v) {
40
+ if (!v.available)
41
+ return "unavailable";
42
+ if (v.needsConfig)
43
+ return "needs_config";
44
+ return v.enabled ? "on" : "off";
45
+ }
22
46
  /**
23
47
  * Extension operations of the `Platform` tool (spec §7): read only, and state only. The org config,
24
48
  * the secrets' state, the config schema and the permission list are never returned (the member
@@ -30,37 +54,242 @@ let ExtensionsOperations = class ExtensionsOperations {
30
54
  configs;
31
55
  displayNames;
32
56
  kdb;
33
- constructor(registry, configs, displayNames, kdb) {
57
+ switches;
58
+ pointDefaults;
59
+ constructor(registry, configs, displayNames, kdb, switches, pointDefaults) {
34
60
  this.registry = registry;
35
61
  this.configs = configs;
36
62
  this.displayNames = displayNames;
37
63
  this.kdb = kdb;
64
+ this.switches = switches;
65
+ this.pointDefaults = pointDefaults;
66
+ }
67
+ /** An extension's display name for a card (its plugin's), else the name, clipped. */
68
+ async nameOf(name) {
69
+ return orElse(async () => localized((await this.displayNames.many([name])).get(name), name), localized(null, name));
38
70
  }
39
71
  onModuleInit() {
40
72
  this.registry.register([
41
73
  defineOperation({
42
74
  id: "extensions.list",
43
- description: "List the extensions installed on the platform as this org sees them: whether each is enabled here, available on the platform, required, which plugin brings it and which extension points it provides. State only: configuring one is done on the web. Pages by 50: pass the returned next as params.cursor.",
75
+ description: "List the extensions installed on the platform as this org sees them, one compact row each: the state here (on, off, needs_config: the org config is missing, unavailable: it cannot run on the platform), why an unavailable one cannot be used (reason) and your next step (next), whether it is available on the platform, the extension points it provides and the plugin that brings it. State only: configuring one is done on the web. Pages by 50: pass the returned next as params.cursor.",
44
76
  input: z.object({ cursor: Cursor.optional() }).strict(),
45
77
  example: {},
46
78
  authz: { orgAction: "org.extensions.read" },
47
79
  mirrors: ["GET /api/v1/orgs/:orgId/extensions"],
80
+ extras: ["cursor"],
48
81
  confirm: "read",
49
82
  run: async (input, ctx) => {
50
- const views = await this.configs.list(ctx.orgId);
83
+ const [views, role] = await Promise.all([
84
+ this.configs.list(ctx.orgId),
85
+ roleFor(this.kdb.db, ctx),
86
+ ]);
51
87
  const names = await this.displayNames.many(views.map((v) => v.plugin));
52
- return pageOf(views.map((v) => ({
53
- plugin: v.plugin,
54
- displayName: names.get(v.plugin) ?? null,
55
- version: v.version,
56
- enabled: v.enabled,
57
- available: v.available,
58
- required: v.required,
59
- configurable: v.configurable,
60
- switchable: v.switchable,
61
- catalogItem: v.catalogItem,
62
- provides: providesOf(v),
63
- })), startOf(input.cursor), 50);
88
+ return pageOf(views.map((v) => {
89
+ const name = localized(names.get(v.plugin), v.plugin).en;
90
+ return {
91
+ id: v.plugin,
92
+ name,
93
+ state: stateOf(v),
94
+ ...(v.available
95
+ ? v.needsConfig
96
+ ? { next: resolveNext(NEEDS_ORG_CONFIG, role) }
97
+ : {}
98
+ : unavailableFields(v.reason ?? "loading", name, role)),
99
+ available: v.available,
100
+ provides: providesOf(v),
101
+ catalogItemId: v.catalogItem?.itemId ?? null,
102
+ };
103
+ }), startOf(input.cursor), 50);
104
+ },
105
+ }),
106
+ defineOperation({
107
+ id: "extensions.tools",
108
+ description: "List the tools an extension registers, each with this org's switch (on unless an org admin turned it off).",
109
+ input: z.object({ extension: Extension }).strict(),
110
+ example: { extension: "todo" },
111
+ authz: { orgAction: "org.extensions.read" },
112
+ mirrors: ["GET /api/v1/orgs/:orgId/extensions/:extension/tools"],
113
+ confirm: "read",
114
+ errors: [
115
+ {
116
+ code: "extension.not_found",
117
+ next: "The extension is not running or not visible to this org; check the name with extensions.list.",
118
+ },
119
+ ],
120
+ run: async (input, ctx) => ({
121
+ tools: await this.switches.list(ctx.orgId, input.extension),
122
+ }),
123
+ }),
124
+ defineOperation({
125
+ id: "extensions.tool-disable-preview",
126
+ description: "Preview turning one extension tool off in this org (org admins): the org's agents that have it (every agent that does not turn it off), and the confirm value extensions.set-tool-enabled needs. Show the preview to the person before turning it off.",
127
+ input: z.object({ extension: Extension, tool: Tool }).strict(),
128
+ example: { extension: "todo", tool: "add_item" },
129
+ // the web previews through the switch route itself (no confirm); writes nothing here
130
+ authz: { orgAction: "org.extensions.manage" },
131
+ mirrors: [],
132
+ confirm: "read",
133
+ errors: [
134
+ {
135
+ code: "extension.not_found",
136
+ next: "The extension is not running or not visible to this org; check the name with extensions.list.",
137
+ },
138
+ { code: "extension.tool_not_found", next: "Check the tool names with extensions.tools." },
139
+ ],
140
+ run: async (input, ctx) => {
141
+ const p = await this.switches.previewOff(ctx.orgId, input.extension, input.tool);
142
+ return p === null
143
+ ? { preview: null, next: "The tool is off in this org already." }
144
+ : { affectedAgents: p.affectedAgents, confirm: p.confirm };
145
+ },
146
+ }),
147
+ defineOperation({
148
+ id: "extensions.set-tool-enabled",
149
+ description: "Turn one extension tool on or off in this org (org admins). Turning on applies at once; turning off needs confirm: the value extensions.tool-disable-preview returned with the preview the person saw.",
150
+ input: z.discriminatedUnion("enabled", [
151
+ z.object({ extension: Extension, tool: Tool, enabled: z.literal(true) }).strict(),
152
+ z
153
+ .object({
154
+ extension: Extension,
155
+ tool: Tool,
156
+ enabled: z.literal(false),
157
+ confirm: SwitchConfirm,
158
+ })
159
+ .strict(),
160
+ ]),
161
+ example: { extension: "todo", tool: "add_item", enabled: true },
162
+ authz: { orgAction: "org.extensions.manage" },
163
+ mirrors: ["PUT /api/v1/orgs/:orgId/extensions/:extension/tools/:tool"],
164
+ confirm: "org",
165
+ errors: [
166
+ {
167
+ code: "extension.not_found",
168
+ next: "The extension is not running or not visible to this org; check the name with extensions.list.",
169
+ },
170
+ { code: "extension.tool_not_found", next: "Check the tool names with extensions.tools." },
171
+ {
172
+ code: "plugin.switch_stale",
173
+ next: "What turning it off affects changed: call extensions.tool-disable-preview again, show it, and call again with the new confirm value.",
174
+ },
175
+ ],
176
+ precheck: async (i, ctx) => {
177
+ if (i.enabled) {
178
+ let tools = [];
179
+ const r = await precheckBy(async () => {
180
+ tools = await this.switches.list(ctx.orgId, i.extension);
181
+ });
182
+ if (!r.ok)
183
+ return r;
184
+ return tools.some((t) => t.tool === i.tool)
185
+ ? { ok: true }
186
+ : {
187
+ ok: false,
188
+ code: "extension.tool_not_found",
189
+ message: `Extension ${i.extension} does not register a tool named ${i.tool}`,
190
+ };
191
+ }
192
+ let confirm = null;
193
+ const r = await precheckBy(async () => {
194
+ confirm =
195
+ (await this.switches.previewOff(ctx.orgId, i.extension, i.tool))?.confirm ?? null;
196
+ });
197
+ if (!r.ok)
198
+ return r;
199
+ return confirm === null || confirm === i.confirm
200
+ ? { ok: true }
201
+ : {
202
+ ok: false,
203
+ code: "plugin.switch_stale",
204
+ message: "What turning this tool off affects has changed since the preview",
205
+ };
206
+ },
207
+ summary: async (i, ctx) => {
208
+ const x = await this.nameOf(i.extension);
209
+ if (i.enabled) {
210
+ return {
211
+ zh: `在本组织开启扩展「${x.zh}」的工具 ${named(i.tool)}`,
212
+ en: `Turn on tool ${named(i.tool)} of extension "${x.en}" in the org`,
213
+ };
214
+ }
215
+ const p = await this.switches.previewOff(ctx.orgId, i.extension, i.tool);
216
+ const n = p?.affectedAgents.length ?? 0;
217
+ return {
218
+ zh: `在本组织关闭扩展「${x.zh}」的工具 ${named(i.tool)}:${n} 个智能体选用了它`,
219
+ en: `Turn off tool ${named(i.tool)} of extension "${x.en}" in the org: ${n} agents selected it`,
220
+ };
221
+ },
222
+ run: async (input, ctx) => this.switches.set(ctx.orgId, input.extension, input.tool, input.enabled, {
223
+ accountId: ctx.actorAccountId,
224
+ auditDetail: viaAgent("extensions.set-tool-enabled", ctx),
225
+ }, input.enabled ? undefined : input.confirm),
226
+ }),
227
+ defineOperation({
228
+ id: "extensions.point-defaults",
229
+ description: "List the extension points where this org picks a default provider (org admins), such as web search: each point's candidate extensions, the stored default and the provider a call uses now.",
230
+ input: NoInput,
231
+ example: {},
232
+ authz: { orgAction: "org.extensions.manage" },
233
+ mirrors: ["GET /api/v1/orgs/:orgId/extension-points"],
234
+ confirm: "read",
235
+ run: async (_input, ctx) => ({ points: await this.pointDefaults.list(ctx.orgId) }),
236
+ }),
237
+ defineOperation({
238
+ id: "extensions.point-availability",
239
+ description: "Whether each org-default extension point (such as web search) has a provider in this org now, without naming extensions.",
240
+ input: NoInput,
241
+ example: {},
242
+ authz: { orgAction: "agents.use" },
243
+ mirrors: ["GET /api/v1/orgs/:orgId/extension-points/available"],
244
+ confirm: "read",
245
+ run: async (_input, ctx) => ({ points: await this.pointDefaults.available(ctx.orgId) }),
246
+ }),
247
+ defineOperation({
248
+ id: "extensions.set-point-default",
249
+ description: "Choose the org's default provider of an org-default extension point (org admins): extension must be one of the point's candidates from extensions.point-defaults.",
250
+ input: z
251
+ .object({
252
+ point: ExtensionPointParams.shape.point,
253
+ extension: ExtensionPointDefaultBody.shape.extension.max(64),
254
+ })
255
+ .strict(),
256
+ example: { point: "web-search", extension: "web-search-tavily" },
257
+ authz: { orgAction: "org.extensions.manage" },
258
+ mirrors: ["PUT /api/v1/orgs/:orgId/extension-points/:point/default"],
259
+ confirm: "org",
260
+ errors: [
261
+ {
262
+ code: "validation_failed",
263
+ next: "Pick a point and one of its candidates from extensions.point-defaults; an extension must be on in the org to be a candidate.",
264
+ },
265
+ ],
266
+ precheck: async (i, ctx) => {
267
+ const p = (await this.pointDefaults.list(ctx.orgId)).find((x) => x.point === i.point);
268
+ if (p === undefined) {
269
+ return {
270
+ ok: false,
271
+ code: "validation_failed",
272
+ message: `${i.point} is not an extension point with an organization default`,
273
+ };
274
+ }
275
+ return p.candidates.includes(i.extension)
276
+ ? { ok: true }
277
+ : {
278
+ ok: false,
279
+ code: "validation_failed",
280
+ message: `Extension ${i.extension} does not provide ${i.point} or is not enabled in this organization`,
281
+ };
282
+ },
283
+ summary: async (i) => {
284
+ const x = await this.nameOf(i.extension);
285
+ return {
286
+ zh: `把本组织 ${named(i.point)} 的默认提供者设为扩展「${x.zh}」`,
287
+ en: `Set the org's default provider of ${named(i.point)} to extension "${x.en}"`,
288
+ };
289
+ },
290
+ run: async (input, ctx) => {
291
+ await this.pointDefaults.setDefault(ctx.orgId, input.point, input.extension, ctx.actorAccountId, viaAgent("extensions.set-point-default", ctx));
292
+ return { point: input.point, default: input.extension };
64
293
  },
65
294
  }),
66
295
  defineOperation({
@@ -111,6 +340,8 @@ ExtensionsOperations = __decorate([
111
340
  __param(0, Inject(PlatformOperations)),
112
341
  __param(1, Inject(OrgExtensionConfigs)),
113
342
  __param(2, Inject(ExtensionDisplayNames)),
114
- __param(3, Inject(KernelDb))
343
+ __param(3, Inject(KernelDb)),
344
+ __param(4, Inject(OrgToolSwitches)),
345
+ __param(5, Inject(ExtensionPointDefaults))
115
346
  ], ExtensionsOperations);
116
347
  export { ExtensionsOperations };
@@ -0,0 +1,25 @@
1
+ import { type OnModuleInit } from "@nestjs/common";
2
+ import { InboxService } from "../../inbox/inbox.service.js";
3
+ import { PlatformInboxService } from "../../inbox/platform-inbox.service.js";
4
+ import { KernelDb } from "../../infra/database/kernel-db.js";
5
+ import { PlatformOperations } from "../registry.js";
6
+ /**
7
+ * The inbox operations of the `Platform` tool (spec §14.1 item 2, §14.2): my inbox in this org
8
+ * (approvals waiting for me, requests for the org admins, decided requests, org notices) and the
9
+ * super admin's platform inbox, as compact rows with the summaries the inbox shows. Dismissing a
10
+ * notice is offered; deciding an approval, a request or a permission confirmation is not.
11
+ */
12
+ export declare class InboxOperations implements OnModuleInit {
13
+ private readonly registry;
14
+ private readonly inbox;
15
+ private readonly platformInbox;
16
+ private readonly kdb;
17
+ constructor(registry: PlatformOperations, inbox: InboxService, platformInbox: PlatformInboxService, kdb: KernelDb);
18
+ /** The org's open notice `id` when the actor is an org admin (else null: not found). */
19
+ private orgNotice;
20
+ /** A platform notice by id (dismissed or not), or null. */
21
+ private platformNotice;
22
+ /** Org ids that own each of `itemIds` (platform items: absent). */
23
+ private owners;
24
+ onModuleInit(): void;
25
+ }