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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/bootstrap.json +61 -5
  2. package/dist/admin/admin.controller.d.ts +47 -16
  3. package/dist/admin/admin.controller.js +44 -19
  4. package/dist/admin/extensions.controller.d.ts +24 -3
  5. package/dist/admin/extensions.controller.js +48 -8
  6. package/dist/admin/setup-lock.d.ts +1 -1
  7. package/dist/admin/setup-lock.js +1 -1
  8. package/dist/admin/setup.controller.d.ts +1 -1
  9. package/dist/admin/setup.controller.js +1 -1
  10. package/dist/admin/setup.service.d.ts +4 -4
  11. package/dist/admin/setup.service.js +8 -8
  12. package/dist/agents/agent-lookup.d.ts +19 -0
  13. package/dist/agents/agent-lookup.js +21 -0
  14. package/dist/agents/agent-profile.service.d.ts +29 -0
  15. package/dist/agents/agent-profile.service.js +117 -0
  16. package/dist/agents/agents.controller.d.ts +168 -3
  17. package/dist/agents/agents.controller.js +201 -12
  18. package/dist/agents/agents.module.d.ts +4 -1
  19. package/dist/agents/agents.module.js +36 -6
  20. package/dist/agents/agents.service.d.ts +64 -27
  21. package/dist/agents/agents.service.js +199 -74
  22. package/dist/agents/definition.d.ts +53 -0
  23. package/dist/agents/definition.js +55 -0
  24. package/dist/agents/from-template.d.ts +106 -0
  25. package/dist/agents/from-template.js +649 -0
  26. package/dist/agents/from-template.service.d.ts +60 -0
  27. package/dist/agents/from-template.service.js +161 -0
  28. package/dist/agents/instruction-files.d.ts +60 -0
  29. package/dist/agents/instruction-files.js +111 -0
  30. package/dist/agents/models.controller.d.ts +9 -3
  31. package/dist/agents/models.controller.js +19 -4
  32. package/dist/agents/org-templates.d.ts +176 -0
  33. package/dist/agents/org-templates.js +827 -0
  34. package/dist/agents/pending-connector-requests.d.ts +77 -0
  35. package/dist/agents/pending-connector-requests.js +215 -0
  36. package/dist/agents/pending-connectors.controller.d.ts +39 -0
  37. package/dist/agents/pending-connectors.controller.js +91 -0
  38. package/dist/agents/pending-connectors.service.d.ts +62 -0
  39. package/dist/agents/pending-connectors.service.js +282 -0
  40. package/dist/agents/profile.d.ts +96 -0
  41. package/dist/agents/profile.js +51 -0
  42. package/dist/agents/readiness.controller.d.ts +26 -0
  43. package/dist/agents/readiness.controller.js +56 -0
  44. package/dist/agents/templates.controller.d.ts +86 -5
  45. package/dist/agents/templates.controller.js +171 -7
  46. package/dist/agents/templates.d.ts +127 -23
  47. package/dist/agents/templates.js +476 -53
  48. package/dist/background/background.controller.d.ts +38 -0
  49. package/dist/background/background.controller.js +87 -0
  50. package/dist/background/background.module.d.ts +10 -0
  51. package/dist/background/background.module.js +39 -0
  52. package/dist/background/finish.d.ts +44 -0
  53. package/dist/background/finish.js +94 -0
  54. package/dist/background/launch-lock.d.ts +15 -0
  55. package/dist/background/launch-lock.js +40 -0
  56. package/dist/background/launch.d.ts +36 -0
  57. package/dist/background/launch.js +70 -0
  58. package/dist/background/poll.job.d.ts +56 -0
  59. package/dist/background/poll.job.js +190 -0
  60. package/dist/background/render.d.ts +23 -0
  61. package/dist/background/render.js +48 -0
  62. package/dist/background/session.d.ts +48 -0
  63. package/dist/background/session.js +79 -0
  64. package/dist/background/status.d.ts +35 -0
  65. package/dist/background/status.js +57 -0
  66. package/dist/background/stop.d.ts +68 -0
  67. package/dist/background/stop.js +243 -0
  68. package/dist/background/store.d.ts +162 -0
  69. package/dist/background/store.js +357 -0
  70. package/dist/background/store.module.d.ts +6 -0
  71. package/dist/background/store.module.js +22 -0
  72. package/dist/background/tasks.service.d.ts +77 -0
  73. package/dist/background/tasks.service.js +211 -0
  74. package/dist/background/wake-rules.d.ts +66 -0
  75. package/dist/background/wake-rules.js +113 -0
  76. package/dist/background/wake.d.ts +30 -0
  77. package/dist/background/wake.js +63 -0
  78. package/dist/catalog/admin-catalog.controller.d.ts +129 -30
  79. package/dist/catalog/admin-catalog.controller.js +213 -42
  80. package/dist/catalog/catalog-content.d.ts +58 -32
  81. package/dist/catalog/catalog-content.js +34 -8
  82. package/dist/catalog/catalog-import.module.d.ts +7 -0
  83. package/dist/catalog/catalog-import.module.js +60 -0
  84. package/dist/catalog/catalog-items.d.ts +111 -7
  85. package/dist/catalog/catalog-items.js +279 -13
  86. package/dist/catalog/catalog-scope.service.d.ts +260 -0
  87. package/dist/catalog/catalog-scope.service.js +1116 -0
  88. package/dist/catalog/catalog.module.d.ts +7 -9
  89. package/dist/catalog/catalog.module.js +41 -31
  90. package/dist/catalog/catalog.service.d.ts +101 -29
  91. package/dist/catalog/catalog.service.js +104 -106
  92. package/dist/catalog/claude/agents.js +2 -0
  93. package/dist/catalog/cli.d.ts +11 -1
  94. package/dist/catalog/cli.js +26 -1
  95. package/dist/catalog/component-promotion.d.ts +96 -0
  96. package/dist/catalog/component-promotion.js +395 -0
  97. package/dist/catalog/component-scope.controller.d.ts +152 -0
  98. package/dist/catalog/component-scope.controller.js +287 -0
  99. package/dist/catalog/component-scope.service.d.ts +303 -0
  100. package/dist/catalog/component-scope.service.js +936 -0
  101. package/dist/catalog/component-state.d.ts +174 -0
  102. package/dist/catalog/component-state.js +437 -0
  103. package/dist/catalog/job-ids.d.ts +30 -0
  104. package/dist/catalog/job-ids.js +25 -0
  105. package/dist/catalog/marketplace-fetch.d.ts +1 -1
  106. package/dist/catalog/marketplaces.controller.d.ts +22 -5
  107. package/dist/catalog/marketplaces.controller.js +56 -7
  108. package/dist/catalog/marketplaces.service.d.ts +54 -14
  109. package/dist/catalog/marketplaces.service.js +71 -22
  110. package/dist/catalog/org-catalog.controller.d.ts +125 -34
  111. package/dist/catalog/org-catalog.controller.js +181 -65
  112. package/dist/catalog/org-catalog.service.d.ts +65 -33
  113. package/dist/catalog/org-catalog.service.js +324 -157
  114. package/dist/catalog/org-extension-switch.d.ts +41 -0
  115. package/dist/catalog/org-extension-switch.js +115 -0
  116. package/dist/catalog/org-extension.controller.d.ts +119 -0
  117. package/dist/catalog/org-extension.controller.js +266 -0
  118. package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
  119. package/dist/catalog/org-plugin-uploads.controller.js +213 -0
  120. package/dist/catalog/org-plugin-uploads.d.ts +63 -0
  121. package/dist/catalog/org-plugin-uploads.js +116 -0
  122. package/dist/catalog/owned-items.d.ts +184 -0
  123. package/dist/catalog/owned-items.js +789 -0
  124. package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
  125. package/dist/catalog/owned-plugin-cleanup.js +194 -0
  126. package/dist/catalog/ownership.d.ts +172 -0
  127. package/dist/catalog/ownership.js +326 -0
  128. package/dist/catalog/platform-components.d.ts +221 -0
  129. package/dist/catalog/platform-components.js +761 -0
  130. package/dist/catalog/platform-migration.d.ts +115 -0
  131. package/dist/catalog/platform-migration.js +582 -0
  132. package/dist/catalog/plugin-import.d.ts +178 -34
  133. package/dist/catalog/plugin-import.js +623 -83
  134. package/dist/catalog/plugin-install.d.ts +185 -41
  135. package/dist/catalog/plugin-install.js +758 -126
  136. package/dist/catalog/plugin-upgrade.d.ts +260 -225
  137. package/dist/catalog/plugin-upgrade.js +1148 -1137
  138. package/dist/catalog/request-rules.d.ts +65 -0
  139. package/dist/catalog/request-rules.js +217 -0
  140. package/dist/catalog/requests.service.d.ts +193 -118
  141. package/dist/catalog/requests.service.js +526 -343
  142. package/dist/catalog/reserved-names.d.ts +8 -0
  143. package/dist/catalog/reserved-names.js +42 -0
  144. package/dist/catalog/scope-orgs.d.ts +21 -0
  145. package/dist/catalog/scope-orgs.js +67 -0
  146. package/dist/catalog/scope-state.d.ts +35 -0
  147. package/dist/catalog/scope-state.js +87 -0
  148. package/dist/catalog/scope-sync-workers.d.ts +7 -0
  149. package/dist/catalog/scope-sync-workers.js +29 -0
  150. package/dist/catalog/scope-sync.d.ts +176 -0
  151. package/dist/catalog/scope-sync.js +576 -0
  152. package/dist/catalog/scope.d.ts +42 -0
  153. package/dist/catalog/scope.js +42 -0
  154. package/dist/catalog/unshare.d.ts +22 -0
  155. package/dist/catalog/unshare.js +118 -0
  156. package/dist/channels/actions.js +1 -0
  157. package/dist/channels/cards.js +21 -3
  158. package/dist/channels/channels.module.js +2 -0
  159. package/dist/channels/connections.service.d.ts +16 -1
  160. package/dist/channels/connections.service.js +38 -4
  161. package/dist/channels/inbound.d.ts +9 -1
  162. package/dist/channels/inbound.js +67 -5
  163. package/dist/channels/phrases.d.ts +35 -0
  164. package/dist/channels/phrases.js +29 -0
  165. package/dist/channels/threads.d.ts +5 -0
  166. package/dist/channels/threads.js +8 -0
  167. package/dist/config/docs.js +3 -1
  168. package/dist/config/schema.d.ts +24 -2
  169. package/dist/config/schema.js +145 -19
  170. package/dist/conversations/access.d.ts +6 -4
  171. package/dist/conversations/access.js +29 -5
  172. package/dist/conversations/agent-tree.d.ts +46 -0
  173. package/dist/conversations/agent-tree.js +92 -0
  174. package/dist/conversations/attachments.service.d.ts +30 -0
  175. package/dist/conversations/attachments.service.js +130 -5
  176. package/dist/conversations/conversations.controller.d.ts +79 -23
  177. package/dist/conversations/conversations.controller.js +141 -50
  178. package/dist/conversations/conversations.module.d.ts +1 -1
  179. package/dist/conversations/conversations.module.js +10 -7
  180. package/dist/conversations/conversations.service.d.ts +108 -9
  181. package/dist/conversations/conversations.service.js +237 -30
  182. package/dist/conversations/environment-status.d.ts +24 -0
  183. package/dist/conversations/environment-status.js +71 -0
  184. package/dist/conversations/event-log.d.ts +21 -6
  185. package/dist/conversations/event-log.js +70 -1
  186. package/dist/conversations/events.d.ts +140 -0
  187. package/dist/conversations/events.js +142 -13
  188. package/dist/conversations/queue.d.ts +3 -1
  189. package/dist/conversations/queue.js +13 -2
  190. package/dist/conversations/queue.service.d.ts +1 -1
  191. package/dist/conversations/queue.service.js +8 -1
  192. package/dist/conversations/titles.d.ts +12 -3
  193. package/dist/conversations/titles.js +36 -8
  194. package/dist/conversations/tree.d.ts +17 -0
  195. package/dist/conversations/tree.js +42 -0
  196. package/dist/ctx/create-ctx.d.ts +5 -0
  197. package/dist/ctx/create-ctx.js +15 -5
  198. package/dist/db/kernel-schema.d.ts +420 -20
  199. package/dist/db/pool.d.ts +5 -0
  200. package/dist/db/pool.js +3 -0
  201. package/dist/environments/access.d.ts +41 -0
  202. package/dist/environments/access.js +77 -0
  203. package/dist/environments/conversation-environments.d.ts +61 -0
  204. package/dist/environments/conversation-environments.js +170 -0
  205. package/dist/environments/dto.d.ts +25 -0
  206. package/dist/environments/dto.js +12 -0
  207. package/dist/environments/environments.controller.d.ts +33 -0
  208. package/dist/environments/environments.controller.js +110 -0
  209. package/dist/environments/environments.module.d.ts +8 -0
  210. package/dist/environments/environments.module.js +27 -0
  211. package/dist/environments/environments.service.d.ts +153 -0
  212. package/dist/environments/environments.service.js +541 -0
  213. package/dist/environments/legacy-cleanup.job.d.ts +34 -0
  214. package/dist/environments/legacy-cleanup.job.js +141 -0
  215. package/dist/errors.d.ts +90 -2
  216. package/dist/errors.js +90 -2
  217. package/dist/evals/reconstruct.d.ts +18 -9
  218. package/dist/evals/reconstruct.js +26 -7
  219. package/dist/evals/run-replay.d.ts +7 -2
  220. package/dist/evals/run-replay.js +42 -7
  221. package/dist/evals/step-replay.d.ts +2 -5
  222. package/dist/evals/step-replay.js +13 -7
  223. package/dist/evals/trajectory.js +1 -1
  224. package/dist/evals/trajectory.service.d.ts +8 -3
  225. package/dist/evals/trajectory.service.js +26 -14
  226. package/dist/evals/worker.d.ts +5 -5
  227. package/dist/evals/worker.js +9 -3
  228. package/dist/extensions/admin-ops.d.ts +36 -10
  229. package/dist/extensions/admin-ops.js +67 -42
  230. package/dist/extensions/admin-view.d.ts +39 -10
  231. package/dist/extensions/admin-view.js +111 -20
  232. package/dist/extensions/blobs.js +1 -0
  233. package/dist/extensions/bootstrap.d.ts +17 -4
  234. package/dist/extensions/bootstrap.js +70 -9
  235. package/dist/extensions/cli.d.ts +12 -0
  236. package/dist/extensions/cli.js +11 -2
  237. package/dist/extensions/config-issues.d.ts +13 -1
  238. package/dist/extensions/config-issues.js +22 -5
  239. package/dist/extensions/config-json-schema.d.ts +43 -7
  240. package/dist/extensions/config-json-schema.js +124 -58
  241. package/dist/extensions/deployment-config-store.d.ts +6 -0
  242. package/dist/extensions/deployment-config.d.ts +78 -8
  243. package/dist/extensions/deployment-config.js +172 -34
  244. package/dist/extensions/display-name.d.ts +22 -0
  245. package/dist/extensions/display-name.js +77 -0
  246. package/dist/extensions/effective-config.d.ts +127 -0
  247. package/dist/extensions/effective-config.js +368 -0
  248. package/dist/extensions/extensions.module.js +14 -2
  249. package/dist/extensions/hooks.d.ts +37 -4
  250. package/dist/extensions/hooks.js +82 -16
  251. package/dist/extensions/host.d.ts +45 -2
  252. package/dist/extensions/host.js +112 -16
  253. package/dist/extensions/installs.d.ts +20 -8
  254. package/dist/extensions/installs.js +37 -15
  255. package/dist/extensions/org-config.d.ts +81 -6
  256. package/dist/extensions/org-config.js +195 -44
  257. package/dist/extensions/org-levels.d.ts +37 -0
  258. package/dist/extensions/org-levels.js +71 -0
  259. package/dist/extensions/org-overrides.d.ts +151 -0
  260. package/dist/extensions/org-overrides.js +524 -0
  261. package/dist/extensions/package.d.ts +14 -1
  262. package/dist/extensions/package.js +51 -2
  263. package/dist/extensions/permission-view.d.ts +19 -4
  264. package/dist/extensions/permission-view.js +4 -4
  265. package/dist/extensions/plugin-items.d.ts +21 -0
  266. package/dist/extensions/plugin-items.js +42 -0
  267. package/dist/extensions/point-defaults.controller.d.ts +34 -0
  268. package/dist/extensions/point-defaults.controller.js +71 -0
  269. package/dist/extensions/point-defaults.d.ts +71 -0
  270. package/dist/extensions/point-defaults.js +234 -0
  271. package/dist/extensions/registry.d.ts +1 -1
  272. package/dist/extensions/registry.js +2 -0
  273. package/dist/extensions/resolve.d.ts +5 -1
  274. package/dist/extensions/resolve.js +15 -2
  275. package/dist/files/previewers.d.ts +8 -1
  276. package/dist/files/previewers.js +35 -6
  277. package/dist/http/api.module.js +31 -3
  278. package/dist/http/app.d.ts +11 -2
  279. package/dist/http/app.js +31 -5
  280. package/dist/http/nest-logger.d.ts +6 -5
  281. package/dist/http/nest-logger.js +24 -10
  282. package/dist/identity/accounts.d.ts +29 -29
  283. package/dist/identity/accounts.js +47 -47
  284. package/dist/identity/audit.d.ts +2 -1
  285. package/dist/identity/auth.controller.js +9 -5
  286. package/dist/identity/auth.guard.d.ts +13 -5
  287. package/dist/identity/auth.guard.js +26 -9
  288. package/dist/identity/cookies.d.ts +20 -5
  289. package/dist/identity/cookies.js +44 -6
  290. package/dist/identity/identity.module.d.ts +1 -1
  291. package/dist/identity/identity.module.js +4 -4
  292. package/dist/identity/me.controller.d.ts +5 -1
  293. package/dist/identity/me.controller.js +12 -3
  294. package/dist/identity/principal.d.ts +3 -3
  295. package/dist/identity/principal.js +3 -3
  296. package/dist/identity/sessions.d.ts +12 -0
  297. package/dist/identity/sessions.js +45 -0
  298. package/dist/identity/settings.d.ts +22 -11
  299. package/dist/identity/settings.js +53 -18
  300. package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
  301. package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
  302. package/dist/inbox/inbox.module.d.ts +4 -1
  303. package/dist/inbox/inbox.module.js +7 -3
  304. package/dist/inbox/inbox.service.d.ts +62 -3
  305. package/dist/inbox/inbox.service.js +74 -4
  306. package/dist/inbox/org-notices.d.ts +63 -0
  307. package/dist/inbox/org-notices.js +91 -0
  308. package/dist/inbox/platform-inbox.controller.d.ts +23 -0
  309. package/dist/inbox/platform-inbox.controller.js +58 -0
  310. package/dist/inbox/platform-inbox.service.d.ts +151 -0
  311. package/dist/inbox/platform-inbox.service.js +263 -0
  312. package/dist/inbox/platform-notices.d.ts +19 -0
  313. package/dist/inbox/platform-notices.js +9 -0
  314. package/dist/index.d.ts +2 -2
  315. package/dist/index.js +1 -1
  316. package/dist/infra/cli/kernel-cli.module.js +9 -1
  317. package/dist/infra/config/kernel-config.service.js +27 -1
  318. package/dist/infra/database/database.module.js +1 -0
  319. package/dist/infra/database/xact-lock.d.ts +1 -1
  320. package/dist/infra/database/xact-lock.js +1 -1
  321. package/dist/infra/events/kernel-events.d.ts +19 -2
  322. package/dist/infra/lifecycle/process-guards.js +4 -0
  323. package/dist/infra/logging/logging.module.d.ts +4 -2
  324. package/dist/infra/logging/logging.module.js +24 -6
  325. package/dist/infra/queue/add-job-once.d.ts +14 -0
  326. package/dist/infra/queue/add-job-once.js +16 -0
  327. package/dist/infra/queue/redis-connection.d.ts +6 -0
  328. package/dist/infra/queue/redis-connection.js +7 -0
  329. package/dist/infra/redis/redis.module.js +6 -2
  330. package/dist/infra/tokens.d.ts +6 -1
  331. package/dist/infra/tokens.js +6 -1
  332. package/dist/kernel.module.js +6 -0
  333. package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
  334. package/dist/lifecycle/kernel-lifecycle.js +4 -4
  335. package/dist/log.d.ts +13 -1
  336. package/dist/log.js +93 -17
  337. package/dist/models/prices.d.ts +5 -5
  338. package/dist/models/prices.js +4 -4
  339. package/dist/models/purposes.controller.d.ts +6 -4
  340. package/dist/models/purposes.controller.js +13 -7
  341. package/dist/models/purposes.d.ts +43 -9
  342. package/dist/models/purposes.js +48 -18
  343. package/dist/orgs/directory-sync.d.ts +14 -5
  344. package/dist/orgs/directory-sync.js +41 -17
  345. package/dist/orgs/offboarding.d.ts +12 -8
  346. package/dist/orgs/offboarding.js +54 -33
  347. package/dist/orgs/org-lock.d.ts +5 -0
  348. package/dist/orgs/org-lock.js +13 -0
  349. package/dist/orgs/org.guard.d.ts +10 -0
  350. package/dist/orgs/org.guard.js +43 -32
  351. package/dist/orgs/orgs.module.js +3 -0
  352. package/dist/orgs/orgs.service.d.ts +20 -7
  353. package/dist/orgs/orgs.service.js +32 -12
  354. package/dist/orgs/roles.d.ts +1 -1
  355. package/dist/orgs/roles.js +5 -1
  356. package/dist/orgs/settings.controller.d.ts +1 -1
  357. package/dist/orgs/settings.service.d.ts +20 -3
  358. package/dist/orgs/settings.service.js +19 -4
  359. package/dist/overrides.d.ts +3 -0
  360. package/dist/overrides.js +2 -0
  361. package/dist/platform/actor.d.ts +48 -0
  362. package/dist/platform/actor.js +100 -0
  363. package/dist/platform/agent-docs.d.ts +18 -0
  364. package/dist/platform/agent-docs.js +59 -0
  365. package/dist/platform/availability.d.ts +14 -0
  366. package/dist/platform/availability.js +43 -0
  367. package/dist/platform/errors.d.ts +11 -0
  368. package/dist/platform/errors.js +26 -0
  369. package/dist/platform/exclusions.d.ts +12 -0
  370. package/dist/platform/exclusions.js +1387 -0
  371. package/dist/platform/method.d.ts +6 -0
  372. package/dist/platform/method.js +15 -0
  373. package/dist/platform/operation.d.ts +92 -0
  374. package/dist/platform/operation.js +35 -0
  375. package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
  376. package/dist/platform/ops/agent-templates.ops.js +92 -0
  377. package/dist/platform/ops/agents.ops.d.ts +19 -0
  378. package/dist/platform/ops/agents.ops.js +294 -0
  379. package/dist/platform/ops/connectors.ops.d.ts +15 -0
  380. package/dist/platform/ops/connectors.ops.js +126 -0
  381. package/dist/platform/ops/errors.d.ts +11 -0
  382. package/dist/platform/ops/errors.js +22 -0
  383. package/dist/platform/ops/extensions.ops.d.ts +19 -0
  384. package/dist/platform/ops/extensions.ops.js +116 -0
  385. package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
  386. package/dist/platform/ops/marketplaces.ops.js +157 -0
  387. package/dist/platform/ops/paging.d.ts +14 -0
  388. package/dist/platform/ops/paging.js +20 -0
  389. package/dist/platform/ops/platform.ops.d.ts +23 -0
  390. package/dist/platform/ops/platform.ops.js +158 -0
  391. package/dist/platform/ops/plugins.ops.d.ts +33 -0
  392. package/dist/platform/ops/plugins.ops.js +377 -0
  393. package/dist/platform/ops/requests.ops.d.ts +14 -0
  394. package/dist/platform/ops/requests.ops.js +153 -0
  395. package/dist/platform/ops/role.d.ts +4 -0
  396. package/dist/platform/ops/role.js +10 -0
  397. package/dist/platform/ops/skills.ops.d.ts +13 -0
  398. package/dist/platform/ops/skills.ops.js +98 -0
  399. package/dist/platform/ops/summary.d.ts +10 -0
  400. package/dist/platform/ops/summary.js +18 -0
  401. package/dist/platform/platform-ops.module.d.ts +7 -0
  402. package/dist/platform/platform-ops.module.js +55 -0
  403. package/dist/platform/platform.module.d.ts +8 -0
  404. package/dist/platform/platform.module.js +25 -0
  405. package/dist/platform/redact-orgs.d.ts +7 -0
  406. package/dist/platform/redact-orgs.js +52 -0
  407. package/dist/platform/registry.d.ts +30 -0
  408. package/dist/platform/registry.js +111 -0
  409. package/dist/roles/worker-role.d.ts +6 -4
  410. package/dist/roles/worker-role.js +14 -7
  411. package/dist/roles/worker.module.d.ts +1 -1
  412. package/dist/roles/worker.module.js +15 -1
  413. package/dist/runtime/context/build.d.ts +11 -7
  414. package/dist/runtime/context/build.js +46 -19
  415. package/dist/runtime/context/claude-tools.d.ts +3 -1
  416. package/dist/runtime/context/claude-tools.js +8 -6
  417. package/dist/runtime/context/compaction.js +13 -0
  418. package/dist/runtime/context/reminders.d.ts +2 -0
  419. package/dist/runtime/context/reminders.js +2 -0
  420. package/dist/runtime/context/skills.js +9 -2
  421. package/dist/runtime/context/tool-changes.d.ts +27 -0
  422. package/dist/runtime/context/tool-changes.js +60 -0
  423. package/dist/runtime/hook-calls.js +2 -0
  424. package/dist/runtime/langgraph-loop.d.ts +3 -1
  425. package/dist/runtime/langgraph-loop.js +36 -17
  426. package/dist/runtime/loop.d.ts +34 -5
  427. package/dist/runtime/maintenance.d.ts +9 -4
  428. package/dist/runtime/maintenance.js +35 -8
  429. package/dist/runtime/model-call.d.ts +46 -8
  430. package/dist/runtime/model-call.js +72 -21
  431. package/dist/runtime/providers.d.ts +6 -0
  432. package/dist/runtime/providers.js +8 -0
  433. package/dist/runtime/run-control.d.ts +11 -1
  434. package/dist/runtime/run-control.js +12 -0
  435. package/dist/runtime/run-drafts.d.ts +85 -0
  436. package/dist/runtime/run-drafts.js +230 -0
  437. package/dist/runtime/run-jobs.d.ts +3 -5
  438. package/dist/runtime/run-jobs.js +3 -7
  439. package/dist/runtime/run-queue.d.ts +59 -2
  440. package/dist/runtime/run-queue.js +311 -38
  441. package/dist/runtime/run-worker.d.ts +11 -5
  442. package/dist/runtime/run-worker.js +69 -33
  443. package/dist/runtime/runtime.module.js +11 -3
  444. package/dist/runtime/step-log.d.ts +15 -4
  445. package/dist/runtime/step-log.js +24 -7
  446. package/dist/runtime/stream.controller.d.ts +23 -1
  447. package/dist/runtime/stream.controller.js +60 -3
  448. package/dist/runtime/stream.d.ts +4 -1
  449. package/dist/runtime/stream.js +27 -3
  450. package/dist/runtime/subagents/child.d.ts +55 -7
  451. package/dist/runtime/subagents/child.js +105 -7
  452. package/dist/runtime/subagents/definition.d.ts +12 -3
  453. package/dist/runtime/subagents/definition.js +44 -28
  454. package/dist/runtime/subagents/deliveries.d.ts +71 -0
  455. package/dist/runtime/subagents/deliveries.js +228 -0
  456. package/dist/runtime/subagents/dispatch.d.ts +115 -26
  457. package/dist/runtime/subagents/dispatch.js +212 -141
  458. package/dist/runtime/subagents/limits.d.ts +24 -5
  459. package/dist/runtime/subagents/limits.js +40 -6
  460. package/dist/runtime/subagents/messages.d.ts +95 -0
  461. package/dist/runtime/subagents/messages.js +328 -0
  462. package/dist/runtime/subagents/preamble.d.ts +4 -4
  463. package/dist/runtime/subagents/preamble.js +9 -7
  464. package/dist/runtime/subagents/progress.d.ts +8 -6
  465. package/dist/runtime/subagents/progress.js +11 -6
  466. package/dist/runtime/subagents/render.d.ts +30 -0
  467. package/dist/runtime/subagents/render.js +53 -0
  468. package/dist/runtime/subagents/roster.d.ts +24 -7
  469. package/dist/runtime/subagents/roster.js +47 -11
  470. package/dist/runtime/subagents/skill-fork.d.ts +3 -2
  471. package/dist/runtime/subagents/skill-fork.js +8 -4
  472. package/dist/runtime/subagents/status.d.ts +14 -0
  473. package/dist/runtime/subagents/status.js +23 -0
  474. package/dist/runtime/subagents/subagents.service.d.ts +7 -4
  475. package/dist/runtime/subagents/subagents.service.js +11 -6
  476. package/dist/runtime/usage-report.d.ts +2 -1
  477. package/dist/runtime/usage-report.js +19 -13
  478. package/dist/runtime/waits.d.ts +145 -36
  479. package/dist/runtime/waits.js +423 -109
  480. package/dist/sandbox/jobs.d.ts +40 -13
  481. package/dist/sandbox/jobs.js +57 -20
  482. package/dist/sandbox/leases.d.ts +37 -54
  483. package/dist/sandbox/leases.js +71 -115
  484. package/dist/sandbox/providers.d.ts +2 -2
  485. package/dist/sandbox/providers.js +1 -1
  486. package/dist/sandbox/sandbox.module.d.ts +3 -2
  487. package/dist/sandbox/sandbox.module.js +10 -4
  488. package/dist/sandbox/sandbox.service.d.ts +282 -129
  489. package/dist/sandbox/sandbox.service.js +736 -381
  490. package/dist/skills/catalog.d.ts +3 -2
  491. package/dist/skills/catalog.js +21 -43
  492. package/dist/skills/changes.controller.d.ts +7 -0
  493. package/dist/skills/changes.controller.js +19 -1
  494. package/dist/skills/invoke.js +8 -3
  495. package/dist/skills/package.d.ts +20 -1
  496. package/dist/skills/package.js +28 -1
  497. package/dist/skills/skills.controller.d.ts +39 -4
  498. package/dist/skills/skills.controller.js +88 -10
  499. package/dist/skills/skills.module.js +10 -1
  500. package/dist/skills/skills.service.d.ts +106 -26
  501. package/dist/skills/skills.service.js +421 -75
  502. package/dist/skills/usable.d.ts +81 -0
  503. package/dist/skills/usable.js +379 -0
  504. package/dist/tools/approvals.service.d.ts +20 -2
  505. package/dist/tools/approvals.service.js +25 -4
  506. package/dist/tools/builtin-names.d.ts +41 -7
  507. package/dist/tools/builtin-names.js +59 -7
  508. package/dist/tools/builtins/agent.d.ts +23 -21
  509. package/dist/tools/builtins/agent.js +62 -55
  510. package/dist/tools/builtins/builtin-tools.d.ts +19 -1
  511. package/dist/tools/builtins/builtin-tools.js +59 -2
  512. package/dist/tools/builtins/handback.d.ts +28 -0
  513. package/dist/tools/builtins/handback.js +53 -0
  514. package/dist/tools/builtins/platform.d.ts +34 -0
  515. package/dist/tools/builtins/platform.js +362 -0
  516. package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
  517. package/dist/tools/builtins/sandbox/bash.js +241 -4
  518. package/dist/tools/builtins/sandbox/common.d.ts +69 -27
  519. package/dist/tools/builtins/sandbox/common.js +87 -48
  520. package/dist/tools/builtins/sandbox/deliver.js +1 -1
  521. package/dist/tools/builtins/sandbox/edit.js +2 -2
  522. package/dist/tools/builtins/sandbox/glob.js +2 -2
  523. package/dist/tools/builtins/sandbox/grep.js +2 -4
  524. package/dist/tools/builtins/sandbox/index.d.ts +3 -1
  525. package/dist/tools/builtins/sandbox/index.js +7 -1
  526. package/dist/tools/builtins/sandbox/read.js +1 -1
  527. package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
  528. package/dist/tools/builtins/sandbox/task-output.js +329 -0
  529. package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
  530. package/dist/tools/builtins/sandbox/task-stop.js +113 -0
  531. package/dist/tools/builtins/sandbox/write.js +2 -2
  532. package/dist/tools/builtins/send-message.d.ts +56 -0
  533. package/dist/tools/builtins/send-message.js +100 -0
  534. package/dist/tools/builtins/skill-load.d.ts +22 -14
  535. package/dist/tools/builtins/skill-load.js +86 -57
  536. package/dist/tools/builtins/skill-write.js +1 -1
  537. package/dist/tools/builtins/web/errors.d.ts +8 -0
  538. package/dist/tools/builtins/web/errors.js +53 -0
  539. package/dist/tools/builtins/web/extract.d.ts +62 -0
  540. package/dist/tools/builtins/web/extract.js +271 -0
  541. package/dist/tools/builtins/web/fetch.d.ts +55 -0
  542. package/dist/tools/builtins/web/fetch.js +175 -0
  543. package/dist/tools/builtins/web/index.d.ts +13 -0
  544. package/dist/tools/builtins/web/index.js +12 -0
  545. package/dist/tools/builtins/web/page-cache.d.ts +25 -0
  546. package/dist/tools/builtins/web/page-cache.js +77 -0
  547. package/dist/tools/builtins/web/search.d.ts +25 -0
  548. package/dist/tools/builtins/web/search.js +210 -0
  549. package/dist/tools/builtins/web/url.d.ts +17 -0
  550. package/dist/tools/builtins/web/url.js +43 -0
  551. package/dist/tools/connectors.controller.d.ts +10 -0
  552. package/dist/tools/connectors.controller.js +12 -0
  553. package/dist/tools/connectors.service.d.ts +46 -5
  554. package/dist/tools/connectors.service.js +94 -15
  555. package/dist/tools/extension-tools.controller.d.ts +14 -0
  556. package/dist/tools/extension-tools.controller.js +37 -0
  557. package/dist/tools/info.d.ts +42 -1
  558. package/dist/tools/info.js +64 -1
  559. package/dist/tools/oauth/flow-paths.d.ts +1 -1
  560. package/dist/tools/oauth/flow-paths.js +1 -1
  561. package/dist/tools/org-tool-switches.d.ts +74 -0
  562. package/dist/tools/org-tool-switches.js +184 -0
  563. package/dist/tools/pipeline.d.ts +46 -40
  564. package/dist/tools/pipeline.js +202 -364
  565. package/dist/tools/policy.d.ts +1 -1
  566. package/dist/tools/policy.js +36 -16
  567. package/dist/tools/registry.d.ts +120 -8
  568. package/dist/tools/registry.js +112 -19
  569. package/dist/tools/tools.module.js +24 -2
  570. package/dist/tools/validate.js +1 -1
  571. package/dist/ui/views.d.ts +2 -1
  572. package/dist/ui/views.js +17 -3
  573. package/package.json +3 -3
  574. package/src/migrations/0064_account_last_org.sql +7 -0
  575. package/src/migrations/0065_conversation_archive.sql +8 -0
  576. package/src/migrations/0066_extension_display_name.sql +4 -0
  577. package/src/migrations/0067_agent_profiles.sql +20 -0
  578. package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
  579. package/src/migrations/0069_attachments_agent_idx.sql +3 -0
  580. package/src/migrations/0070_background_tasks.sql +37 -0
  581. package/src/migrations/0071_background_tasks_reserve.sql +6 -0
  582. package/src/migrations/0072_background_tasks_stopping.sql +5 -0
  583. package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
  584. package/src/migrations/0074_subagent_tree.sql +50 -0
  585. package/src/migrations/0075_plugin_scope.sql +61 -0
  586. package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
  587. package/src/migrations/0077_scope_requests.sql +52 -0
  588. package/src/migrations/0078_scope_grant_switches.sql +18 -0
  589. package/src/migrations/0079_scope_live_install_switches.sql +19 -0
  590. package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
  591. package/src/migrations/0081_platform_components.sql +129 -0
  592. package/src/migrations/0082_platform_migration.sql +33 -0
  593. package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
  594. package/src/migrations/0084_org_owned_items.sql +85 -0
  595. package/src/migrations/0085_agent_templates_phase4.sql +45 -0
  596. package/src/migrations/0086_org_layering.sql +30 -0
  597. package/src/migrations/0087_approval_summary.sql +6 -0
  598. package/src/migrations/0088_environments.sql +80 -0
  599. package/dist/catalog/upgrade-targets.d.ts +0 -56
  600. package/dist/catalog/upgrade-targets.js +0 -90
  601. package/dist/conversations/sandbox-status.d.ts +0 -24
  602. package/dist/conversations/sandbox-status.js +0 -52
  603. package/dist/extensions/org-config.controller.d.ts +0 -24
  604. package/dist/extensions/org-config.controller.js +0 -62
@@ -0,0 +1,129 @@
1
+ -- Platform components (phase 2, plan 2026-11-06-plugin-scope-phase-2.md rulings A2-C2, E2): skills,
2
+ -- agent templates and connector templates owned by the deployment instead of an org, with their own
3
+ -- scope (follow the plugin's, or their own), an org list (named) and per-org switches. Org copies
4
+ -- link to them. Expand-only: nothing existing is changed except `agent_templates.plugin_name`
5
+ -- losing NOT NULL (a template without a plugin is the bare `<name>`).
6
+
7
+ CREATE TABLE IF NOT EXISTS platform_skills (
8
+ id text PRIMARY KEY,
9
+ catalog_item_id uuid REFERENCES catalog_items(id) ON DELETE SET NULL,
10
+ plugin_name text,
11
+ name text NOT NULL,
12
+ description text NOT NULL,
13
+ description_zh text,
14
+ current_version integer NOT NULL CHECK (current_version >= 1),
15
+ scope_mode text NOT NULL DEFAULT 'follow' CHECK (scope_mode IN ('follow', 'own')),
16
+ scope text NOT NULL DEFAULT 'optional' CHECK (scope IN ('all', 'optional', 'named')),
17
+ disabled boolean NOT NULL DEFAULT false,
18
+ shown_to_others boolean NOT NULL DEFAULT true,
19
+ scope_version integer NOT NULL DEFAULT 0,
20
+ created_at timestamptz NOT NULL DEFAULT now(),
21
+ updated_at timestamptz NOT NULL DEFAULT now(),
22
+ deleted_at timestamptz
23
+ );
24
+ CREATE UNIQUE INDEX IF NOT EXISTS platform_skills_live_name_uq
25
+ ON platform_skills ((coalesce(plugin_name, '')), name)
26
+ WHERE deleted_at IS NULL;
27
+
28
+ CREATE TABLE IF NOT EXISTS platform_skill_versions (
29
+ skill_id text NOT NULL REFERENCES platform_skills(id) ON DELETE CASCADE,
30
+ version integer NOT NULL CHECK (version >= 1),
31
+ manifest jsonb NOT NULL,
32
+ object_prefix text NOT NULL,
33
+ catalog_version text,
34
+ source_format text NOT NULL DEFAULT 'capybara' CHECK (source_format IN ('capybara', 'claude-code')),
35
+ suggest_pinned boolean NOT NULL DEFAULT false,
36
+ updated_on_own boolean NOT NULL DEFAULT false,
37
+ created_by text,
38
+ created_at timestamptz NOT NULL DEFAULT now(),
39
+ PRIMARY KEY (skill_id, version)
40
+ );
41
+
42
+ CREATE TABLE IF NOT EXISTS platform_agent_templates (
43
+ id text PRIMARY KEY,
44
+ catalog_item_id uuid REFERENCES catalog_items(id) ON DELETE SET NULL,
45
+ plugin_name text,
46
+ name text NOT NULL,
47
+ description text,
48
+ description_zh text,
49
+ current_version integer NOT NULL CHECK (current_version >= 1),
50
+ scope_mode text NOT NULL DEFAULT 'follow' CHECK (scope_mode IN ('follow', 'own')),
51
+ scope text NOT NULL DEFAULT 'optional' CHECK (scope IN ('all', 'optional', 'named')),
52
+ disabled boolean NOT NULL DEFAULT false,
53
+ shown_to_others boolean NOT NULL DEFAULT true,
54
+ scope_version integer NOT NULL DEFAULT 0,
55
+ created_at timestamptz NOT NULL DEFAULT now(),
56
+ updated_at timestamptz NOT NULL DEFAULT now(),
57
+ deleted_at timestamptz
58
+ );
59
+ CREATE UNIQUE INDEX IF NOT EXISTS platform_agent_templates_live_name_uq
60
+ ON platform_agent_templates ((coalesce(plugin_name, '')), name)
61
+ WHERE deleted_at IS NULL;
62
+
63
+ CREATE TABLE IF NOT EXISTS platform_agent_template_versions (
64
+ template_id text NOT NULL REFERENCES platform_agent_templates(id) ON DELETE CASCADE,
65
+ version integer NOT NULL CHECK (version >= 1),
66
+ definition jsonb NOT NULL,
67
+ object_prefix text,
68
+ catalog_version text,
69
+ source_format text NOT NULL DEFAULT 'capybara' CHECK (source_format IN ('capybara', 'claude-code')),
70
+ suggest_pinned boolean NOT NULL DEFAULT false,
71
+ updated_on_own boolean NOT NULL DEFAULT false,
72
+ created_by text,
73
+ created_at timestamptz NOT NULL DEFAULT now(),
74
+ PRIMARY KEY (template_id, version)
75
+ );
76
+
77
+ CREATE TABLE IF NOT EXISTS platform_connector_templates (
78
+ id text PRIMARY KEY,
79
+ catalog_item_id uuid NOT NULL REFERENCES catalog_items(id) ON DELETE CASCADE,
80
+ template_id text NOT NULL,
81
+ current_version text NOT NULL,
82
+ file jsonb NOT NULL,
83
+ scope_mode text NOT NULL DEFAULT 'follow' CHECK (scope_mode IN ('follow', 'own')),
84
+ scope text NOT NULL DEFAULT 'optional' CHECK (scope IN ('all', 'optional', 'named')),
85
+ disabled boolean NOT NULL DEFAULT false,
86
+ shown_to_others boolean NOT NULL DEFAULT true,
87
+ scope_version integer NOT NULL DEFAULT 0,
88
+ created_at timestamptz NOT NULL DEFAULT now(),
89
+ updated_at timestamptz NOT NULL DEFAULT now(),
90
+ deleted_at timestamptz
91
+ );
92
+ CREATE UNIQUE INDEX IF NOT EXISTS platform_connector_templates_live_uq
93
+ ON platform_connector_templates (catalog_item_id, template_id)
94
+ WHERE deleted_at IS NULL;
95
+
96
+ -- Scope of an own-scope component: the orgs it is offered to (named) and each org's switch.
97
+ CREATE TABLE IF NOT EXISTS component_scope_orgs (
98
+ kind text NOT NULL CHECK (kind IN ('skill', 'agent_template', 'connector_template')),
99
+ component_id text NOT NULL,
100
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
101
+ PRIMARY KEY (kind, component_id, org_id)
102
+ );
103
+ CREATE TABLE IF NOT EXISTS component_org_switches (
104
+ kind text NOT NULL CHECK (kind IN ('skill', 'agent_template', 'connector_template')),
105
+ component_id text NOT NULL,
106
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
107
+ enabled boolean NOT NULL,
108
+ updated_by text REFERENCES accounts(id) ON DELETE SET NULL,
109
+ updated_at timestamptz NOT NULL DEFAULT now(),
110
+ PRIMARY KEY (kind, component_id, org_id)
111
+ );
112
+
113
+ -- Links from the org copies (ruling B2): a pin keeps the copy on its own stored version.
114
+ ALTER TABLE skills ADD COLUMN IF NOT EXISTS platform_skill_id text
115
+ REFERENCES platform_skills(id) ON DELETE SET NULL;
116
+ ALTER TABLE skills ADD COLUMN IF NOT EXISTS pinned_version integer;
117
+ ALTER TABLE agent_templates ADD COLUMN IF NOT EXISTS platform_template_id text
118
+ REFERENCES platform_agent_templates(id) ON DELETE SET NULL;
119
+ ALTER TABLE agent_templates ADD COLUMN IF NOT EXISTS pinned_version integer;
120
+ ALTER TABLE connectors ADD COLUMN IF NOT EXISTS platform_template_id text
121
+ REFERENCES platform_connector_templates(id) ON DELETE SET NULL;
122
+
123
+ -- A template without a plugin is the bare `<name>`; the live-name index must still hold for NULLs.
124
+ ALTER TABLE agent_templates ALTER COLUMN plugin_name DROP NOT NULL;
125
+ -- capybara:allow-destructive the index is recreated in the same transaction over coalesce(plugin_name, '') so NULL plugin names stay unique; no data change
126
+ DROP INDEX IF EXISTS agent_templates_live_name_uq;
127
+ CREATE UNIQUE INDEX IF NOT EXISTS agent_templates_live_name_uq
128
+ ON agent_templates (org_id, (coalesce(plugin_name, '')), name)
129
+ WHERE deleted_at IS NULL;
@@ -0,0 +1,33 @@
1
+ -- Plugin scope phase 2, Task 5: the migration of org copies to platform components
2
+ -- (`catalog/platform-migration.ts`, the worker job `platform-components-migrate`), and the org
3
+ -- notices it writes for the org admins' inbox.
4
+
5
+ -- The catalog version the item's platform components were last written from
6
+ -- (`PlatformComponents.syncFromVersion`); null = never: the migration job writes them once. Removed
7
+ -- components are not brought back, since an item with a version here is never synced by the job.
8
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS platform_synced_version text;
9
+
10
+ -- One row per run of the job (at every worker start and once a day): when it ran and what it
11
+ -- changed; rows older than 30 days are pruned, except the first finished run, whose start is the
12
+ -- cutoff of the one-shot rename step (only org skills whose current version predates it).
13
+ CREATE TABLE IF NOT EXISTS platform_migration_runs (
14
+ id uuid PRIMARY KEY,
15
+ started_at timestamptz NOT NULL DEFAULT now(),
16
+ finished_at timestamptz,
17
+ stats jsonb NOT NULL DEFAULT '{}'::jsonb
18
+ );
19
+
20
+ -- A notice for an org's admins (inbox item kind = `kind`), until one of them dismisses it.
21
+ -- `skill_renamed`: detail `{ skillId, from, to, platformSkillId, plugin }`.
22
+ CREATE TABLE IF NOT EXISTS org_notices (
23
+ id uuid PRIMARY KEY,
24
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
25
+ kind text NOT NULL CHECK (kind IN ('skill_renamed')),
26
+ detail jsonb NOT NULL,
27
+ created_at timestamptz NOT NULL DEFAULT now(),
28
+ dismissed_at timestamptz,
29
+ dismissed_by text REFERENCES accounts(id) ON DELETE SET NULL
30
+ );
31
+ CREATE INDEX IF NOT EXISTS org_notices_open_idx
32
+ ON org_notices (org_id, created_at DESC)
33
+ WHERE dismissed_at IS NULL;
@@ -0,0 +1,15 @@
1
+ -- Plugin scope phase 2, Task 11: the plugin scope sync's open failures, for the super admin's
2
+ -- inbox (`catalog/scope-sync.ts` writes them, `inbox/platform-inbox.service.ts` reads them). One
3
+ -- row per (item, org) whose last sync attempt failed; the next sync of that pair that does not
4
+ -- fail deletes it. The audit event `plugin.scope_sync_failed` stays the history. `op`: `install`
5
+ -- (turning it on), `uninstall` (turning it off), `dependencies` (installing the dependencies a
6
+ -- platform update added to a live install).
7
+ CREATE TABLE IF NOT EXISTS plugin_scope_sync_failures (
8
+ item_id uuid NOT NULL REFERENCES catalog_items(id) ON DELETE CASCADE,
9
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
10
+ op text NOT NULL CHECK (op IN ('install', 'uninstall', 'dependencies')),
11
+ code text NOT NULL,
12
+ message text NOT NULL,
13
+ failed_at timestamptz NOT NULL DEFAULT now(),
14
+ PRIMARY KEY (item_id, org_id)
15
+ );
@@ -0,0 +1,85 @@
1
+ -- Org-owned items, sharing, pending uploads and notices (phase 3, plan
2
+ -- 2026-11-06-plugin-scope-phase-3.md Task 1; rulings P3-3, P3-5, P3-6, P3-8, F27). Expand-only:
3
+ -- every column is nullable or defaulted, and existing rows stay platform-owned (owner_org_id NULL)
4
+ -- and not shareable. The only dropped objects are the old live-name indexes and the old notice
5
+ -- kind check, replaced in the same file.
6
+
7
+ -- Owners and pending uploads of catalog items. `owner_org_id` NULL = the platform; an org's
8
+ -- upload that carries an extension waits for the super admin (`awaiting_confirmation`), with the
9
+ -- uploaded version in `pending_*` until confirmed (P3-9 to P3-13).
10
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS owner_org_id text
11
+ REFERENCES orgs(id) ON DELETE SET NULL;
12
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS shareable boolean NOT NULL DEFAULT false;
13
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS awaiting_confirmation boolean NOT NULL DEFAULT false;
14
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS pending_version text;
15
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS pending_by text
16
+ REFERENCES accounts(id) ON DELETE SET NULL;
17
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS pending_at timestamptz;
18
+ CREATE INDEX IF NOT EXISTS catalog_items_owner_idx
19
+ ON catalog_items (owner_org_id)
20
+ WHERE owner_org_id IS NOT NULL AND deleted_at IS NULL;
21
+
22
+ -- Whether a version may be used (ruling P3-52): `applied_at` is set when it was applied or
23
+ -- confirmed (a platform import is applied as it is written: the default; an org's upload writes
24
+ -- NULL until its owner applies it or the super admin confirms it), `rejected_at` when the super
25
+ -- admin rejected it. Readers serving other orgs or the generic update use only applied, not
26
+ -- rejected versions, whoever owns the item (a transfer keeps the version rows). Existing rows
27
+ -- are platform imports: applied.
28
+ ALTER TABLE catalog_item_versions ADD COLUMN IF NOT EXISTS applied_at timestamptz DEFAULT now();
29
+ ALTER TABLE catalog_item_versions ADD COLUMN IF NOT EXISTS rejected_at timestamptz;
30
+
31
+ -- Platform components: the owning org (NULL = platform), the org they were created in
32
+ -- (`origin_org_id`, no FK, immutable; F27) and the share switch (P3-3, P3-5).
33
+ ALTER TABLE platform_skills ADD COLUMN IF NOT EXISTS owner_org_id text
34
+ REFERENCES orgs(id) ON DELETE SET NULL;
35
+ ALTER TABLE platform_skills ADD COLUMN IF NOT EXISTS origin_org_id text;
36
+ ALTER TABLE platform_skills ADD COLUMN IF NOT EXISTS shareable boolean NOT NULL DEFAULT false;
37
+ ALTER TABLE platform_agent_templates ADD COLUMN IF NOT EXISTS owner_org_id text
38
+ REFERENCES orgs(id) ON DELETE SET NULL;
39
+ ALTER TABLE platform_agent_templates ADD COLUMN IF NOT EXISTS origin_org_id text;
40
+ ALTER TABLE platform_agent_templates ADD COLUMN IF NOT EXISTS shareable boolean NOT NULL DEFAULT false;
41
+ ALTER TABLE platform_connector_templates ADD COLUMN IF NOT EXISTS owner_org_id text
42
+ REFERENCES orgs(id) ON DELETE SET NULL;
43
+ ALTER TABLE platform_connector_templates ADD COLUMN IF NOT EXISTS shareable boolean NOT NULL DEFAULT false;
44
+
45
+ -- Live names are unique per origin org (P3-5); the new indexes come first, then the old ones go
46
+ -- (F27: new names, so a re-run is a true no-op).
47
+ CREATE UNIQUE INDEX IF NOT EXISTS platform_skills_live_name_origin_uq
48
+ ON platform_skills ((coalesce(plugin_name, '')), name, (coalesce(origin_org_id, '')))
49
+ WHERE deleted_at IS NULL;
50
+ CREATE UNIQUE INDEX IF NOT EXISTS platform_agent_templates_live_name_origin_uq
51
+ ON platform_agent_templates ((coalesce(plugin_name, '')), name, (coalesce(origin_org_id, '')))
52
+ WHERE deleted_at IS NULL;
53
+ -- capybara:allow-destructive replaced by platform_skills_live_name_origin_uq created above in this file; no data change
54
+ DROP INDEX IF EXISTS platform_skills_live_name_uq;
55
+ -- capybara:allow-destructive replaced by platform_agent_templates_live_name_origin_uq created above in this file; no data change
56
+ DROP INDEX IF EXISTS platform_agent_templates_live_name_uq;
57
+
58
+ -- Org copies: whether the owner shares the copy with other orgs (P3-3, P3-6).
59
+ ALTER TABLE skills ADD COLUMN IF NOT EXISTS shareable boolean NOT NULL DEFAULT false;
60
+ ALTER TABLE agent_templates ADD COLUMN IF NOT EXISTS shareable boolean NOT NULL DEFAULT false;
61
+
62
+ -- An org's upload waits in staging under its org (P3-8); deleting the org drops the staging.
63
+ ALTER TABLE plugin_import_staging ADD COLUMN IF NOT EXISTS org_id text
64
+ REFERENCES orgs(id) ON DELETE CASCADE;
65
+
66
+ -- New org notice kinds. 0082 declared the CHECK inline, so it is named org_notices_kind_check.
67
+ -- capybara:allow-destructive the check is added back with the wider kind list in the next statement; existing rows (skill_renamed) satisfy it
68
+ ALTER TABLE org_notices DROP CONSTRAINT IF EXISTS org_notices_kind_check;
69
+ ALTER TABLE org_notices ADD CONSTRAINT org_notices_kind_check
70
+ CHECK (kind IN ('skill_renamed', 'item_shared', 'shared_item_updated',
71
+ 'upload_confirmed', 'upload_rejected'));
72
+
73
+ -- A notice for the super admins (platform inbox), until one of them dismisses it.
74
+ -- `ownership_transferred`: a deleted org's shared item now belongs to the platform.
75
+ CREATE TABLE IF NOT EXISTS platform_notices (
76
+ id uuid PRIMARY KEY,
77
+ kind text NOT NULL CHECK (kind IN ('ownership_transferred')),
78
+ detail jsonb NOT NULL,
79
+ created_at timestamptz NOT NULL DEFAULT now(),
80
+ dismissed_at timestamptz,
81
+ dismissed_by text REFERENCES accounts(id) ON DELETE SET NULL
82
+ );
83
+ CREATE INDEX IF NOT EXISTS platform_notices_open_idx
84
+ ON platform_notices (created_at DESC)
85
+ WHERE dismissed_at IS NULL;
@@ -0,0 +1,45 @@
1
+ -- Agent templates, phase 4 (spec 2026-11-05-plugin-component-management-design.md §15.2: P4-7
2
+ -- connector_setup requests, P4-8 provenance). Expand-only: every new column is nullable, existing
3
+ -- rows keep their shape, and the only dropped objects are two checks replaced in this file.
4
+
5
+ -- P4-8: where an agent came from. Display data only (no FK: the template may be deleted or
6
+ -- renamed later), written when an agent is created from a template.
7
+ ALTER TABLE agents ADD COLUMN IF NOT EXISTS created_from_template_id text;
8
+ ALTER TABLE agents ADD COLUMN IF NOT EXISTS created_from_template_version int;
9
+ ALTER TABLE agents ADD COLUMN IF NOT EXISTS created_from_template_name text;
10
+
11
+ -- P4-7: a `connector_setup` request asks an org admin to set up the connectors an agent made from a
12
+ -- template needs (`pending_keys`: the template's connector keys still without an instance). It
13
+ -- names its agent and no item or marketplace entry.
14
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS agent_id text
15
+ REFERENCES agents(id) ON DELETE CASCADE;
16
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS pending_keys jsonb;
17
+
18
+ -- capybara:allow-destructive the check is added back with `connector_setup` in the next statement; existing rows (access, import, enable) satisfy it
19
+ ALTER TABLE catalog_requests DROP CONSTRAINT IF EXISTS catalog_requests_kind_check;
20
+ ALTER TABLE catalog_requests ADD CONSTRAINT catalog_requests_kind_check
21
+ CHECK (kind IN ('access', 'import', 'enable', 'connector_setup'));
22
+
23
+ -- item_id is already nullable (0077). The target check of 0077 required an item for every kind but
24
+ -- `import`; a connector_setup row needs an agent instead.
25
+ -- capybara:allow-destructive the check is added back with the connector_setup branch in the next statement; existing rows satisfy its first and third branches
26
+ ALTER TABLE catalog_requests DROP CONSTRAINT IF EXISTS catalog_requests_target_check;
27
+ ALTER TABLE catalog_requests ADD CONSTRAINT catalog_requests_target_check
28
+ CHECK (
29
+ kind = 'import' AND entry_name IS NOT NULL
30
+ OR kind = 'connector_setup' AND agent_id IS NOT NULL
31
+ AND item_id IS NULL AND entry_name IS NULL
32
+ OR kind NOT IN ('import', 'connector_setup') AND item_id IS NOT NULL
33
+ );
34
+
35
+ -- `pending_keys` is a JSON array of keys when set.
36
+ ALTER TABLE catalog_requests DROP CONSTRAINT IF EXISTS catalog_requests_pending_keys_check;
37
+ ALTER TABLE catalog_requests ADD CONSTRAINT catalog_requests_pending_keys_check
38
+ CHECK (pending_keys IS NULL OR jsonb_typeof(pending_keys) = 'array');
39
+
40
+ -- At most one pending setup request per agent (P4-7).
41
+ CREATE UNIQUE INDEX IF NOT EXISTS catalog_requests_pending_setup_uq
42
+ ON catalog_requests (agent_id) WHERE kind = 'connector_setup' AND status = 'pending';
43
+
44
+ CREATE INDEX IF NOT EXISTS catalog_requests_agent_idx
45
+ ON catalog_requests (agent_id) WHERE agent_id IS NOT NULL;
@@ -0,0 +1,30 @@
1
+ -- Platform / org layering (spec 2026-11-07-platform-org-layering-design.md). Expand-only: two new
2
+ -- tables, nothing existing changes.
3
+
4
+ -- 0086, spec §5.4 / §5.8: an org's copy of an extension's overridable deployment config fields. A
5
+ -- row is a copy; no row means the org follows the platform ("no copy" and "a copy equal to the
6
+ -- platform" stay distinct). `config` holds the copy's non-secret values; its secrets live in
7
+ -- `secrets` under the org (namespace `kernel`, key `plugin-override:<plugin>:<path>`). Rows are kept
8
+ -- when the extension is disabled or uninstalled, like `extension_org_configs`.
9
+ CREATE TABLE IF NOT EXISTS extension_org_overrides (
10
+ plugin text NOT NULL,
11
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
12
+ config jsonb NOT NULL DEFAULT '{}'::jsonb,
13
+ created_by text REFERENCES accounts(id) ON DELETE SET NULL,
14
+ created_at timestamptz NOT NULL DEFAULT now(),
15
+ updated_by text REFERENCES accounts(id) ON DELETE SET NULL,
16
+ updated_at timestamptz NOT NULL DEFAULT now(),
17
+ PRIMARY KEY (plugin, org_id)
18
+ );
19
+
20
+ -- 0086, spec §7: an org admin's switch of one tool of an extension that is on in the org. No row
21
+ -- means the tool follows the extension (on).
22
+ CREATE TABLE IF NOT EXISTS org_tool_switches (
23
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
24
+ plugin text NOT NULL,
25
+ tool text NOT NULL,
26
+ enabled boolean NOT NULL,
27
+ updated_by text REFERENCES accounts(id) ON DELETE SET NULL,
28
+ updated_at timestamptz NOT NULL DEFAULT now(),
29
+ PRIMARY KEY (org_id, plugin, tool)
30
+ );
@@ -0,0 +1,6 @@
1
+ -- Platform tool (spec 2026-11-07-platform-tool-design.md §6.2, §6.3): an approval carries the
2
+ -- kernel-rendered summary of the call ({zh, en}) and the scopes the person may choose. Expand-only:
3
+ -- both columns are nullable; null keeps today's behavior (no summary; scopes derived from the row:
4
+ -- "once" for a role escalation, else once / session / always).
5
+ ALTER TABLE approvals ADD COLUMN IF NOT EXISTS summary jsonb;
6
+ ALTER TABLE approvals ADD COLUMN IF NOT EXISTS scopes text[];
@@ -0,0 +1,80 @@
1
+ -- Environments phase 1 (spec 2026-11-07-environments-design §4.2, §10): a long-lived environment
2
+ -- is one sandbox instance plus a file system kept until the environment is deleted. This replaces
3
+ -- the per-conversation `sandboxes` table with `environment_instances`; the old table stays only
4
+ -- for the cleanup job that destroys its remaining instances. The CHECK lists of owner_kind and
5
+ -- source grow in phases 2 and 3 through new migrations.
6
+ CREATE TABLE IF NOT EXISTS capybara.environments (
7
+ id text PRIMARY KEY,
8
+ org_id text NOT NULL REFERENCES capybara.orgs(id) ON DELETE CASCADE,
9
+ owner_kind text NOT NULL CHECK (owner_kind IN ('personal')),
10
+ owner_account_id text NOT NULL REFERENCES capybara.accounts(id),
11
+ name text,
12
+ is_default boolean NOT NULL DEFAULT false,
13
+ source text NOT NULL CHECK (source IN ('cloud')),
14
+ provider text,
15
+ created_at timestamptz NOT NULL DEFAULT now(),
16
+ updated_at timestamptz NOT NULL DEFAULT now(),
17
+ deleted_at timestamptz
18
+ );
19
+ CREATE UNIQUE INDEX IF NOT EXISTS environments_default_uq
20
+ ON capybara.environments (org_id, owner_account_id)
21
+ WHERE is_default AND deleted_at IS NULL;
22
+ CREATE UNIQUE INDEX IF NOT EXISTS environments_name_uq
23
+ ON capybara.environments (org_id, owner_account_id, lower(name))
24
+ WHERE name IS NOT NULL AND deleted_at IS NULL;
25
+
26
+ -- Same columns and meaning as the old sandboxes table (0023), keyed by environment. fs_handle and
27
+ -- fs_status describe the kept file system; status 'none' means no instance exists yet.
28
+ CREATE TABLE IF NOT EXISTS capybara.environment_instances (
29
+ environment_id text PRIMARY KEY REFERENCES capybara.environments(id) ON DELETE CASCADE,
30
+ org_id text NOT NULL,
31
+ provider text,
32
+ fs_handle jsonb,
33
+ fs_status text NOT NULL DEFAULT 'none' CHECK (fs_status IN ('none', 'ready', 'lost')),
34
+ handle jsonb,
35
+ status text NOT NULL DEFAULT 'none'
36
+ CHECK (status IN ('none', 'creating', 'running', 'suspended', 'destroyed')),
37
+ last_used_at timestamptz NOT NULL DEFAULT now(),
38
+ running_since timestamptz,
39
+ created_at timestamptz NOT NULL DEFAULT now(),
40
+ suspended_at timestamptz,
41
+ destroyed_at timestamptz,
42
+ generation integer NOT NULL DEFAULT 0,
43
+ had_instance boolean NOT NULL DEFAULT false,
44
+ prev_provider text,
45
+ prev_handle jsonb,
46
+ sweep_failed_at timestamptz
47
+ );
48
+ CREATE INDEX IF NOT EXISTS environment_instances_running_idx
49
+ ON capybara.environment_instances (last_used_at)
50
+ WHERE status = 'running';
51
+ CREATE INDEX IF NOT EXISTS environment_instances_live_idx
52
+ ON capybara.environment_instances (last_used_at)
53
+ WHERE status <> 'destroyed';
54
+ CREATE INDEX IF NOT EXISTS environment_instances_org_idx
55
+ ON capybara.environment_instances (org_id);
56
+
57
+ -- The environment a member's new conversations use when they pick none.
58
+ CREATE TABLE IF NOT EXISTS capybara.environment_defaults (
59
+ org_id text NOT NULL,
60
+ account_id text NOT NULL,
61
+ environment_id text NOT NULL REFERENCES capybara.environments(id) ON DELETE CASCADE,
62
+ updated_at timestamptz NOT NULL DEFAULT now(),
63
+ PRIMARY KEY (org_id, account_id)
64
+ );
65
+
66
+ -- No cascade: a deleted environment is soft-deleted and the conversation keeps pointing at it.
67
+ ALTER TABLE capybara.conversations
68
+ ADD COLUMN IF NOT EXISTS environment_id text REFERENCES capybara.environments(id);
69
+
70
+ ALTER TABLE capybara.background_tasks ADD COLUMN IF NOT EXISTS environment_id text;
71
+ CREATE INDEX IF NOT EXISTS background_tasks_environment_running_idx
72
+ ON capybara.background_tasks (environment_id) WHERE status = 'running';
73
+
74
+ -- Tasks that ran in a per-conversation sandbox lose it with the move to environments (the
75
+ -- instances are destroyed by the cleanup job).
76
+ UPDATE capybara.background_tasks
77
+ SET status = 'lost',
78
+ lost_reason = COALESCE(lost_reason, 'sandbox_replaced_by_environment'),
79
+ finished_at = COALESCE(finished_at, now())
80
+ WHERE status = 'running';
@@ -1,56 +0,0 @@
1
- import type { KernelSchemaDb } from "../db/kernel-schema.js";
2
- import type { ExtensionRegistry } from "../extensions/registry.js";
3
- /**
4
- * Which versions an org may upgrade an installed plugin to (package ecosystem spec §10, Decision
5
- * 10, Ruling 8):
6
- * - a plugin with an extension follows the deployment: the only target is the catalog version
7
- * whose extension package (sha256) is the one installed on the deployment, the newest import on
8
- * ties (`1.0.0` and `1.0.0+sha256.x` can share an extension version with different bytes); an
9
- * extension loaded from the startup config (config, no package) is matched by its
10
- * version;
11
- * - a purely declarative plugin may move to any other imported version (an older one is a
12
- * rollback).
13
- */
14
- /** The extension the deployment runs for a plugin name. */
15
- export interface DeployedExtension {
16
- /** The installed package's sha256 (null for a config extension). */
17
- sha256: string | null;
18
- version: string;
19
- }
20
- /** A catalog version row as the target rules read it. */
21
- export interface TargetVersion {
22
- version: string;
23
- manifest: unknown;
24
- extension_sha256: string | null;
25
- imported_at: Date;
26
- }
27
- /**
28
- * The deployment's extension for plugin `name`: its install record (`extension_installs`, the
29
- * deployment's desired package; disabled on the deployment counts as none), else the extension
30
- * this replica loaded from the startup config; undefined when the deployment runs none (then no
31
- * upgrade target and no "upgrade pending").
32
- */
33
- export declare function deployedExtension(db: KernelSchemaDb, host: Pick<ExtensionRegistry, "manifests">, name: string): Promise<DeployedExtension | undefined>;
34
- /** Whether catalog version `v` carries the deployment's extension `d`. */
35
- export declare const runsDeployed: (v: TargetVersion, d: DeployedExtension) => boolean;
36
- /**
37
- * The catalog version an org install of an extension-bearing plugin may move to: the one carrying
38
- * the deployment's extension, the newest import on ties; undefined when none does.
39
- */
40
- export declare function deploymentTarget(versions: readonly TargetVersion[], d: DeployedExtension | undefined): TargetVersion | undefined;
41
- /** What an install view says about upgrades (Decision 10). */
42
- export interface UpgradeInfo {
43
- /** The version an upgrade can move to now (the highest allowed target), null when none. */
44
- upgradeAvailable: string | null;
45
- /** An extension-bearing plugin whose org version is not the one the deployment runs. */
46
- deploymentPending: boolean;
47
- }
48
- /**
49
- * The upgrade info of org installs (`itemId`, `name`, `version`), keyed by `itemId@version`; reads
50
- * the items' catalog versions and the deployment's extensions in a few queries.
51
- */
52
- export declare function upgradeInfo(db: KernelSchemaDb, host: Pick<ExtensionRegistry, "manifests">, installs: readonly {
53
- itemId: string;
54
- name: string;
55
- version: string;
56
- }[]): Promise<Map<string, UpgradeInfo>>;
@@ -1,90 +0,0 @@
1
- import { compareVersions } from "./versions.js";
2
- /**
3
- * The deployment's extension for plugin `name`: its install record (`extension_installs`, the
4
- * deployment's desired package; disabled on the deployment counts as none), else the extension
5
- * this replica loaded from the startup config; undefined when the deployment runs none (then no
6
- * upgrade target and no "upgrade pending").
7
- */
8
- export async function deployedExtension(db, host, name) {
9
- const row = await db
10
- .selectFrom("extension_installs")
11
- .select(["sha256", "version", "desired_state"])
12
- .where("name", "=", name)
13
- .executeTakeFirst();
14
- if (row) {
15
- return row.desired_state === "enabled"
16
- ? { sha256: row.sha256, version: row.version }
17
- : undefined;
18
- }
19
- const loaded = host.manifests().find((m) => m.name === name);
20
- return loaded ? { sha256: null, version: loaded.version } : undefined;
21
- }
22
- const extensionVersionOf = (v) => v.manifest.extension?.manifest.version;
23
- /** Whether catalog version `v` carries the deployment's extension `d`. */
24
- export const runsDeployed = (v, d) => d.sha256 !== null
25
- ? v.extension_sha256 === d.sha256
26
- : v.manifest.extension !== undefined && extensionVersionOf(v) === d.version;
27
- /**
28
- * The catalog version an org install of an extension-bearing plugin may move to: the one carrying
29
- * the deployment's extension, the newest import on ties; undefined when none does.
30
- */
31
- export function deploymentTarget(versions, d) {
32
- if (d === undefined)
33
- return undefined;
34
- let best;
35
- for (const v of versions) {
36
- if (!runsDeployed(v, d))
37
- continue;
38
- if (best === undefined ||
39
- v.imported_at.getTime() > best.imported_at.getTime() ||
40
- (v.imported_at.getTime() === best.imported_at.getTime() && compareVersions(v, best) > 0)) {
41
- best = v;
42
- }
43
- }
44
- return best;
45
- }
46
- /**
47
- * The upgrade info of org installs (`itemId`, `name`, `version`), keyed by `itemId@version`; reads
48
- * the items' catalog versions and the deployment's extensions in a few queries.
49
- */
50
- export async function upgradeInfo(db, host, installs) {
51
- const out = new Map();
52
- if (installs.length === 0)
53
- return out;
54
- const rows = await db
55
- .selectFrom("catalog_item_versions")
56
- .select(["item_id", "version", "manifest", "extension_sha256", "imported_at"])
57
- .where("item_id", "in", [...new Set(installs.map((i) => i.itemId))])
58
- .execute();
59
- const deployed = new Map();
60
- for (const i of installs) {
61
- const versions = rows.filter((r) => r.item_id === i.itemId);
62
- const current = versions.find((v) => v.version === i.version);
63
- if (current && current.manifest.extension !== undefined) {
64
- if (!deployed.has(i.name))
65
- deployed.set(i.name, await deployedExtension(db, host, i.name));
66
- const d = deployed.get(i.name);
67
- const target = deploymentTarget(versions, d);
68
- out.set(`${i.itemId}@${i.version}`, {
69
- upgradeAvailable: target && target.version !== i.version ? target.version : null,
70
- deploymentPending: d !== undefined && !runsDeployed(current, d),
71
- });
72
- continue;
73
- }
74
- let newest;
75
- for (const v of versions) {
76
- if (newest === undefined || compareVersions(v, newest) > 0)
77
- newest = v;
78
- }
79
- const newer = newest !== undefined &&
80
- newest.version !== i.version &&
81
- (current === undefined
82
- ? compareVersions(newest.version, i.version) > 0
83
- : compareVersions(newest, current) > 0);
84
- out.set(`${i.itemId}@${i.version}`, {
85
- upgradeAvailable: newer ? newest.version : null,
86
- deploymentPending: false,
87
- });
88
- }
89
- return out;
90
- }
@@ -1,24 +0,0 @@
1
- import { SandboxService } from "../sandbox/sandbox.service.js";
2
- import { ConversationAccess } from "./access.js";
3
- import { ConversationsService } from "./conversations.service.js";
4
- export interface SandboxStatusView {
5
- status: "running" | "suspended";
6
- lastUsedAt: string;
7
- }
8
- /**
9
- * 对话沙箱的状态(网页上下文标签,M5 T11):会话不可见 → `conversation.not_found`;
10
- * 没有可用的沙箱(未创建、已销毁、正在创建)→ `sandbox.not_found`(界面显示「未创建」)。
11
- */
12
- export declare class ConversationSandboxStatus {
13
- /** 会话可见性(与会话 SSE 流同一判定)。 */
14
- private readonly access;
15
- /** The conversation whose sandbox it works in: a sub-agent's parent, else itself. */
16
- private readonly conversations;
17
- private readonly sandbox;
18
- constructor(
19
- /** 会话可见性(与会话 SSE 流同一判定)。 */
20
- access: Pick<ConversationAccess, "isAccessible">,
21
- /** The conversation whose sandbox it works in: a sub-agent's parent, else itself. */
22
- conversations: Pick<ConversationsService, "sandboxConversationOf">, sandbox: Pick<SandboxService, "status">);
23
- get(orgId: string, conversationId: string, viewerAccountId: string): Promise<SandboxStatusView>;
24
- }
@@ -1,52 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __param = (this && this.__param) || function (paramIndex, decorator) {
8
- return function (target, key) { decorator(target, key, paramIndex); }
9
- };
10
- import { Inject, Injectable } from "@nestjs/common";
11
- import { ApiError } from "../errors.js";
12
- import { SandboxService } from "../sandbox/sandbox.service.js";
13
- import { UUID_RE } from "../ui/registry.js";
14
- import { ConversationAccess } from "./access.js";
15
- import { ConversationsService } from "./conversations.service.js";
16
- /**
17
- * 对话沙箱的状态(网页上下文标签,M5 T11):会话不可见 → `conversation.not_found`;
18
- * 没有可用的沙箱(未创建、已销毁、正在创建)→ `sandbox.not_found`(界面显示「未创建」)。
19
- */
20
- let ConversationSandboxStatus = class ConversationSandboxStatus {
21
- access;
22
- conversations;
23
- sandbox;
24
- constructor(
25
- /** 会话可见性(与会话 SSE 流同一判定)。 */
26
- access,
27
- /** The conversation whose sandbox it works in: a sub-agent's parent, else itself. */
28
- conversations, sandbox) {
29
- this.access = access;
30
- this.conversations = conversations;
31
- this.sandbox = sandbox;
32
- }
33
- async get(orgId, conversationId, viewerAccountId) {
34
- if (!UUID_RE.test(conversationId) ||
35
- !(await this.access.isAccessible(orgId, conversationId, viewerAccountId))) {
36
- throw new ApiError("conversation.not_found", "Conversation not found");
37
- }
38
- // a sub-agent works in its parent conversation's sandbox (sub-agents spec §10.1)
39
- const sandboxConv = await this.conversations.sandboxConversationOf(orgId, conversationId);
40
- const s = await this.sandbox.status(orgId, sandboxConv);
41
- if (!s)
42
- throw new ApiError("sandbox.not_found", "This conversation has no sandbox");
43
- return { status: s.status, lastUsedAt: s.lastUsedAt.toISOString() };
44
- }
45
- };
46
- ConversationSandboxStatus = __decorate([
47
- Injectable(),
48
- __param(0, Inject(ConversationAccess)),
49
- __param(1, Inject(ConversationsService)),
50
- __param(2, Inject(SandboxService))
51
- ], ConversationSandboxStatus);
52
- export { ConversationSandboxStatus };