@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
@@ -5,26 +5,34 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Module } from "@nestjs/common";
8
+ import { BackgroundModule } from "../background/background.module.js";
8
9
  import { ConversationAccessModule } from "../conversations/access.js";
9
10
  import { AttachmentsModule } from "../conversations/attachments.module.js";
10
11
  import { EventLogModule } from "../conversations/event-log.js";
12
+ import { EnvironmentsModule } from "../environments/environments.module.js";
11
13
  import { ExtensionsModule } from "../extensions/extensions.module.js";
12
14
  import { QueueModule } from "../infra/queue/queue.module.js";
15
+ import { ModelsModule } from "../models/models.module.js";
13
16
  import { OrgLockModule } from "../orgs/org-lock.js";
17
+ import { PlatformModule } from "../platform/platform.module.js";
14
18
  import { MAINTENANCE_QUEUE_NAME } from "../runtime/maintenance-queue.js";
19
+ import { StepLogModule } from "../runtime/step-log.js";
15
20
  import { SubagentsModule } from "../runtime/subagents/subagents.service.js";
21
+ import { UsageReportModule } from "../runtime/usage-report.js";
16
22
  import { SandboxModule } from "../sandbox/sandbox.module.js";
17
23
  import { SkillsModule } from "../skills/skills.module.js";
18
24
  import { StorageModule } from "../storage/storage.module.js";
19
25
  import { ApprovalsService } from "./approvals.service.js";
20
26
  import { Breaker } from "./breaker.js";
21
27
  import { BuiltinTools } from "./builtins/builtin-tools.js";
28
+ import { WebPages } from "./builtins/web/page-cache.js";
22
29
  import { ConnectorContent } from "./connector-content.js";
23
30
  import { ConnectorsService } from "./connectors.service.js";
24
31
  import { Credentials } from "./credentials.js";
25
32
  import { ToolDrift } from "./drift.js";
26
- import { ConversationToolInfo } from "./info.js";
33
+ import { ConversationToolInfo, OrgExtensionTools } from "./info.js";
27
34
  import { OAuthFlow } from "./oauth/flow.js";
35
+ import { OrgToolSwitches } from "./org-tool-switches.js";
28
36
  import { ToolOutputs } from "./outputs.js";
29
37
  import { ToolPipeline } from "./pipeline.js";
30
38
  import { QuestionsService } from "./questions.service.js";
@@ -50,16 +58,26 @@ ToolsModule = __decorate([
50
58
  OrgLockModule,
51
59
  // the `Agent` tool's dispatch
52
60
  SubagentsModule,
53
- // the builtin sandbox and skill tools run in the conversation's sandbox
61
+ // the builtin sandbox and skill tools run in the conversation's environment
54
62
  SandboxModule,
63
+ EnvironmentsModule,
64
+ // `Bash` with run_in_background records its task; TaskOutput / TaskStop finish and stop it
65
+ BackgroundModule,
55
66
  // the conversation page's tool metadata reads only what the viewer may see
56
67
  ConversationAccessModule,
68
+ // the WebFetch extraction call: its purpose, usage report and step writes
69
+ ModelsModule,
70
+ UsageReportModule,
71
+ StepLogModule,
72
+ // the `Platform` tool's operations, actor facts and agent docs (imports no domain module)
73
+ PlatformModule,
57
74
  QueueModule.registerQueue(MAINTENANCE_QUEUE_NAME),
58
75
  ],
59
76
  providers: [
60
77
  Credentials,
61
78
  ToolOutputs,
62
79
  BuiltinTools,
80
+ WebPages,
63
81
  ToolRegistry,
64
82
  ApprovalsService,
65
83
  QuestionsService,
@@ -70,6 +88,8 @@ ToolsModule = __decorate([
70
88
  ConnectorsService,
71
89
  OAuthFlow,
72
90
  ConversationToolInfo,
91
+ OrgExtensionTools,
92
+ OrgToolSwitches,
73
93
  ],
74
94
  exports: [
75
95
  Credentials,
@@ -85,6 +105,8 @@ ToolsModule = __decorate([
85
105
  ConnectorsService,
86
106
  OAuthFlow,
87
107
  ConversationToolInfo,
108
+ OrgExtensionTools,
109
+ OrgToolSwitches,
88
110
  ],
89
111
  })
90
112
  ], ToolsModule);
@@ -1,5 +1,5 @@
1
1
  import { Ajv2020 } from "ajv/dist/2020.js";
2
- import { canonicalJson } from "./registry.js";
2
+ import { canonicalJson } from "./canonical-json.js";
3
3
  /**
4
4
  * 编译结果缓存的上限:超过后整体丢弃(工具定义每步从库里重新读出,缓存不能无限增长)。
5
5
  * 缓存的是由定义推导出的只读数据,不是跨进程状态。
@@ -1,6 +1,7 @@
1
1
  import { type FormAnswer, type Logger, type UiActionResult, type UiContribution, type UiIcon, type UiView } from "@capybara-hq/plugin-sdk";
2
2
  import { ConversationsService } from "../conversations/conversations.service.js";
3
3
  import type { KernelSchemaDb } from "../db/kernel-schema.js";
4
+ import { EffectiveConfigs } from "../extensions/effective-config.js";
4
5
  import { ExtensionHost } from "../extensions/host.js";
5
6
  import { PreviewerRegistry } from "../files/previewers.js";
6
7
  import { KernelDb } from "../infra/database/kernel-db.js";
@@ -78,7 +79,7 @@ export declare function dropForeignOpens(view: UiView, panels: ReadonlySet<strin
78
79
  */
79
80
  export declare class UiViews {
80
81
  private readonly d;
81
- constructor(host: ExtensionHost, conversations: ConversationsService, previewers: PreviewerRegistry, db: KernelDb, log: Pick<Logger, "warn">);
82
+ constructor(host: ExtensionHost, conversations: ConversationsService, previewers: PreviewerRegistry, db: KernelDb, log: Pick<Logger, "warn">, effective: Pick<EffectiveConfigs, "get">);
82
83
  /** 该组织、该角色可见的界面贡献:插件已启用且已加载;kind view 的要求插件注册了 render;组织页面要 member 以上。 */
83
84
  contributions(orgId: string, role: OrgRole): Promise<UiContributionItem[]>;
84
85
  /**
package/dist/ui/views.js CHANGED
@@ -12,6 +12,7 @@ import { Inject, Injectable } from "@nestjs/common";
12
12
  import { sql } from "kysely";
13
13
  import { ConversationsService } from "../conversations/conversations.service.js";
14
14
  import { ApiError } from "../errors.js";
15
+ import { EffectiveConfigs, NEEDS_CONFIG_REASON } from "../extensions/effective-config.js";
15
16
  import { ExtensionHost } from "../extensions/host.js";
16
17
  import { PreviewerRegistry } from "../files/previewers.js";
17
18
  import { KernelDb } from "../infra/database/kernel-db.js";
@@ -100,9 +101,10 @@ function actionResultProblems(r) {
100
101
  */
101
102
  let UiViews = class UiViews {
102
103
  d;
103
- constructor(host, conversations, previewers, db, log) {
104
+ constructor(host, conversations, previewers, db, log, effective) {
104
105
  this.d = {
105
106
  host,
107
+ effective,
106
108
  // org config rows plus the required bootstrap plugins
107
109
  enabledPlugins: (orgId) => host.enabledPlugins(orgId),
108
110
  canAccessConversation: (orgId, id, accountId) => conversations.isAccessible(orgId, id, accountId),
@@ -223,7 +225,18 @@ let UiViews = class UiViews {
223
225
  throw notFound();
224
226
  if (!(await this.d.enabledPlugins(t.orgId)).has(t.plugin))
225
227
  throw notFound();
226
- const base = { orgId: t.orgId, accountId: t.accountId, role: t.role, locale: t.locale };
228
+ // spec A §6: the extension is not called for an org whose effective config is not valid
229
+ const effective = await this.d.effective.get(t.orgId, t.plugin);
230
+ if (!effective.ok) {
231
+ throw new ApiError("extension.needs_config", `Extension ${t.plugin} ${NEEDS_CONFIG_REASON}`);
232
+ }
233
+ const base = {
234
+ orgId: t.orgId,
235
+ accountId: t.accountId,
236
+ role: t.role,
237
+ locale: t.locale,
238
+ config: effective.config,
239
+ };
227
240
  if (!isConversationPlace(entry.contribution.place)) {
228
241
  if (t.item !== undefined || t.card !== undefined) {
229
242
  throw new ApiError("validation_failed", "item and callId are for conversation views");
@@ -299,6 +312,7 @@ UiViews = __decorate([
299
312
  __param(1, Inject(ConversationsService)),
300
313
  __param(2, Inject(PreviewerRegistry)),
301
314
  __param(3, Inject(KernelDb)),
302
- __param(4, Inject(KERNEL_LOGGER))
315
+ __param(4, Inject(KERNEL_LOGGER)),
316
+ __param(5, Inject(EffectiveConfigs))
303
317
  ], UiViews);
304
318
  export { UiViews };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capybara-hq/kernel",
3
- "version": "0.1.0-rc.3",
3
+ "version": "0.1.0-rc.5",
4
4
  "description": "Capybara kernel: config, database, plugin host and HTTP API of the Capybara agent platform",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -64,14 +64,14 @@
64
64
  "yaml": "^2.9.1",
65
65
  "yauzl": "3.4.0",
66
66
  "zod": "^4.6.7",
67
- "@capybara-hq/plugin-sdk": "^0.1.0-rc.1"
67
+ "@capybara-hq/plugin-sdk": "^0.1.0-rc.3"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@langchain/langgraph-checkpoint-validation": "^1.2.0",
71
71
  "@types/pg": "^8.23.1",
72
72
  "@types/semver": "^7.8.0",
73
73
  "@types/yauzl": "3.4.0",
74
- "@capybara-hq/testing": "0.1.0-rc.3"
74
+ "@capybara-hq/testing": "0.1.0-rc.6"
75
75
  },
76
76
  "scripts": {
77
77
  "build": "tsc -b"
@@ -0,0 +1,7 @@
1
+ -- The organization an account last chose as its current one: a new web session (login, SSO, setup,
2
+ -- an accepted invitation) starts in it while the account is still a member and the org is not
3
+ -- deleted, so people don't pick their org again at every sign-in. Written with the session's
4
+ -- current org by `PUT /me/current-org`; NULL = never chosen (a new session then starts in the only
5
+ -- org when there is exactly one). Additive: older replicas never read or write it.
6
+ ALTER TABLE capybara.accounts
7
+ ADD COLUMN IF NOT EXISTS last_org_id text REFERENCES capybara.orgs(id) ON DELETE SET NULL;
@@ -0,0 +1,8 @@
1
+ -- A person archives a conversation (hidden from the default lists, still readable and unarchived
2
+ -- by a new message) or deletes it (soft: hidden everywhere for the owner; the event log, runs and
3
+ -- trajectories stay for enterprise admins).
4
+ ALTER TABLE capybara.conversations ADD COLUMN IF NOT EXISTS archived_at timestamptz;
5
+ ALTER TABLE capybara.conversations ADD COLUMN IF NOT EXISTS deleted_at timestamptz;
6
+ CREATE INDEX IF NOT EXISTS conversations_live_idx
7
+ ON capybara.conversations (org_id, account_id, updated_at DESC)
8
+ WHERE deleted_at IS NULL AND archived_at IS NULL;
@@ -0,0 +1,4 @@
1
+ -- The plugin.json `displayName` ({ zh, en }) of an extension package, written when the package is
2
+ -- stored; NULL when the plugin has none and for packages stored before this migration (no
3
+ -- backfill: a name arrives with the next version). Additive: older replicas never read it.
4
+ ALTER TABLE capybara.extension_packages ADD COLUMN IF NOT EXISTS display_name jsonb;
@@ -0,0 +1,20 @@
1
+ -- The agent profile (avatar, description, quick actions): display data stored beside the agent,
2
+ -- outside agent_versions, so changing it creates no version. Expand-only.
3
+ -- profile_updated_at is kept at millisecond precision so a client can send it back as expectedUpdatedAt.
4
+ ALTER TABLE capybara.agents ADD COLUMN IF NOT EXISTS profile_avatar jsonb;
5
+ ALTER TABLE capybara.agents ADD COLUMN IF NOT EXISTS profile_description text NOT NULL DEFAULT '';
6
+ ALTER TABLE capybara.agents
7
+ ADD COLUMN IF NOT EXISTS profile_quick_actions jsonb NOT NULL DEFAULT '[]';
8
+ ALTER TABLE capybara.agents
9
+ ADD COLUMN IF NOT EXISTS profile_updated_at timestamptz NOT NULL
10
+ DEFAULT date_trunc('milliseconds', now());
11
+
12
+ -- A definition's avatarUrl becomes an external avatar (once: only where none is set yet).
13
+ UPDATE capybara.agents a
14
+ SET profile_avatar = jsonb_build_object('kind', 'external', 'url', v.definition->>'avatarUrl')
15
+ FROM capybara.agent_versions v
16
+ WHERE v.agent_id = a.id
17
+ AND v.version = a.current_version
18
+ AND a.profile_avatar IS NULL
19
+ AND jsonb_typeof(v.definition->'avatarUrl') = 'string'
20
+ AND v.definition->>'avatarUrl' <> '';
@@ -0,0 +1,7 @@
1
+ -- Agent avatar uploads reuse the presigned attachment flow: a new purpose 'agent-avatar' and the
2
+ -- agent whose profile uses the upload (set once on save; a used upload has no expiry).
3
+ ALTER TABLE capybara.attachments DROP CONSTRAINT IF EXISTS attachments_purpose_check;
4
+ ALTER TABLE capybara.attachments
5
+ ADD CONSTRAINT attachments_purpose_check
6
+ CHECK (purpose IN ('chat', 'skill-package', 'agent-avatar'));
7
+ ALTER TABLE capybara.attachments ADD COLUMN IF NOT EXISTS agent_id text;
@@ -0,0 +1,3 @@
1
+ -- The agent avatar lookup and the cleanup of an agent's uploads filter attachments by agent_id;
2
+ -- a partial index keeps it small, since most attachments belong to no agent.
3
+ CREATE INDEX IF NOT EXISTS attachments_agent_idx ON capybara.attachments (agent_id) WHERE agent_id IS NOT NULL;
@@ -0,0 +1,37 @@
1
+ -- Background Bash (spec 2026-11-05-background-bash-design §4.1): a command started with
2
+ -- run_in_background keeps running in the conversation's sandbox after its tool call returns. One
3
+ -- row per task; the owner is `conversation_id` (the child conversation for a sub-agent) and
4
+ -- `sandbox_conversation_id` is the root conversation that owns the sandbox. Rows go with their
5
+ -- conversations; finished rows are pruned after tools.outputRetentionDays.
6
+ CREATE TABLE IF NOT EXISTS capybara.background_tasks (
7
+ id text PRIMARY KEY,
8
+ org_id text NOT NULL,
9
+ conversation_id text NOT NULL REFERENCES capybara.conversations(id) ON DELETE CASCADE,
10
+ sandbox_conversation_id text NOT NULL REFERENCES capybara.conversations(id) ON DELETE CASCADE,
11
+ run_id text NOT NULL,
12
+ call_id text NOT NULL,
13
+ trigger_account_id text NOT NULL,
14
+ description text NOT NULL,
15
+ command text NOT NULL,
16
+ -- the session id: the pid `setsid` started; stopping and liveness go by the session
17
+ sid text NOT NULL,
18
+ -- relative to /workspace
19
+ output_path text NOT NULL,
20
+ status text NOT NULL DEFAULT 'running'
21
+ CHECK (status IN ('running', 'completed', 'failed', 'stopped', 'timed_out', 'lost')),
22
+ lost_reason text,
23
+ exit_code integer,
24
+ started_at timestamptz NOT NULL DEFAULT now(),
25
+ finished_at timestamptz,
26
+ deadline_at timestamptz NOT NULL,
27
+ -- the sandbox instance the task runs in (the handle plus created_at identify an instance)
28
+ sandbox_created_at timestamptz NOT NULL,
29
+ -- a task marked lost while its process may still exist
30
+ kill_pending boolean NOT NULL DEFAULT false,
31
+ -- the bytes TaskOutput has already returned
32
+ read_offset bigint NOT NULL DEFAULT 0
33
+ );
34
+ CREATE INDEX IF NOT EXISTS background_tasks_running_idx
35
+ ON capybara.background_tasks (sandbox_conversation_id) WHERE status = 'running';
36
+ CREATE INDEX IF NOT EXISTS background_tasks_conversation_idx
37
+ ON capybara.background_tasks (conversation_id, started_at DESC);
@@ -0,0 +1,6 @@
1
+ -- Background Bash: a launch reserves its row (status running, counted against
2
+ -- sandbox.background.maxTasks under a transaction-scoped lock) before the launch exec, and sets
3
+ -- sid and sandbox_created_at once the command started. A row without a sid is a reservation: the
4
+ -- poller skips it, and a failed launch finishes it as failed.
5
+ ALTER TABLE IF EXISTS capybara.background_tasks ALTER COLUMN sid DROP NOT NULL;
6
+ ALTER TABLE IF EXISTS capybara.background_tasks ALTER COLUMN sandbox_created_at DROP NOT NULL;
@@ -0,0 +1,5 @@
1
+ -- Background Bash: a stop claims its task before it signals the session (stopping_at), so the
2
+ -- poller, which skips a claimed task, cannot finish it meanwhile from what the signals leave
3
+ -- behind (no process, or the wrapper's exit status); the stop's own finish is then the only one.
4
+ -- A launch that finds its reservation claimed kills the command it started at once.
5
+ ALTER TABLE IF EXISTS capybara.background_tasks ADD COLUMN IF NOT EXISTS stopping_at timestamptz;
@@ -0,0 +1,11 @@
1
+ -- Web tools (spec §6): an org's default provider of an extension point with `selection:
2
+ -- "org-default"` (`point` is the name without the major, e.g. `web-search`). A row naming an
3
+ -- extension that is disabled or uninstalled stays and is ignored until it is a candidate again.
4
+ CREATE TABLE IF NOT EXISTS capybara.org_extension_point_defaults (
5
+ org_id text NOT NULL REFERENCES capybara.orgs(id) ON DELETE CASCADE,
6
+ point text NOT NULL,
7
+ extension text NOT NULL,
8
+ updated_at timestamptz NOT NULL DEFAULT now(),
9
+ updated_by text REFERENCES capybara.accounts(id) ON DELETE SET NULL,
10
+ PRIMARY KEY (org_id, point)
11
+ );
@@ -0,0 +1,50 @@
1
+ -- Agent map (spec docs/superpowers/specs/2026-11-06-agent-map-design.md §6): nested sub-agents
2
+ -- and a budget per tree.
3
+ -- - conversations.subagent_depth: levels below the root conversation (0 = a root, 1 = its child).
4
+ -- - runs.budget_run_id: the person-triggered root run whose window this run's dispatches and its
5
+ -- descendants' tokens count against; null = the run is its own budget run.
6
+ -- - subagent_dispatches.budget_run_id: the budget run the dispatch counted against (existing rows:
7
+ -- the dispatching run, which was its own budget run before nesting).
8
+ -- - subagent_dispatches.for_skill: the dispatch of a `context: fork` skill invocation (existing
9
+ -- fork dispatches are backfilled).
10
+ ALTER TABLE conversations ADD COLUMN IF NOT EXISTS subagent_depth smallint NOT NULL DEFAULT 0;
11
+
12
+ ALTER TABLE runs ADD COLUMN IF NOT EXISTS budget_run_id text;
13
+ CREATE INDEX IF NOT EXISTS runs_budget_run_idx ON runs (budget_run_id)
14
+ WHERE budget_run_id IS NOT NULL;
15
+
16
+ ALTER TABLE subagent_dispatches ADD COLUMN IF NOT EXISTS budget_run_id text;
17
+ UPDATE subagent_dispatches SET budget_run_id = parent_run_id WHERE budget_run_id IS NULL;
18
+ ALTER TABLE subagent_dispatches ALTER COLUMN budget_run_id SET NOT NULL;
19
+ ALTER TABLE subagent_dispatches ADD COLUMN IF NOT EXISTS for_skill boolean NOT NULL DEFAULT false;
20
+ -- Existing fork dispatches (phase D: call id `skill-<seq>` at step 0, `skillCallId` / `FORK_STEP`
21
+ -- in runtime/subagents/skill-fork.ts) are marked, so a fork in flight across the upgrade keeps its
22
+ -- wait and its finish is never delivered as a background child's. A second run changes nothing.
23
+ UPDATE subagent_dispatches SET for_skill = true
24
+ WHERE for_skill = false AND step = 0 AND parent_call_id ~ '^skill-[0-9]+$';
25
+ CREATE INDEX IF NOT EXISTS subagent_dispatches_budget_run_idx
26
+ ON subagent_dispatches (budget_run_id);
27
+
28
+ -- Org overrides stored in deployment_settings.subagentLimitOverrides ({orgId: {...}}): the limit
29
+ -- maxConcurrentPerRun is now maxConcurrentPerConversation (per conversation, §6). Each org entry
30
+ -- holding the old key gets the new key with its value instead; an entry that already has the new
31
+ -- key keeps it. Rows without the old key are left as they are, so a second run changes nothing.
32
+ UPDATE deployment_settings AS ds
33
+ SET value = (
34
+ SELECT jsonb_object_agg(
35
+ e.org,
36
+ CASE
37
+ WHEN jsonb_typeof(e.entry) = 'object' AND e.entry ? 'maxConcurrentPerRun'
38
+ THEN jsonb_build_object('maxConcurrentPerConversation', e.entry -> 'maxConcurrentPerRun')
39
+ || (e.entry - 'maxConcurrentPerRun')
40
+ ELSE e.entry
41
+ END
42
+ )
43
+ FROM jsonb_each(ds.value) AS e(org, entry)
44
+ )
45
+ WHERE ds.key = 'subagentLimitOverrides'
46
+ AND jsonb_typeof(ds.value) = 'object'
47
+ AND EXISTS (
48
+ SELECT 1 FROM jsonb_each(ds.value) AS e(org, entry)
49
+ WHERE jsonb_typeof(e.entry) = 'object' AND e.entry ? 'maxConcurrentPerRun'
50
+ );
@@ -0,0 +1,61 @@
1
+ -- Plugin scope (phase 1, spec 2026-11-05-plugin-component-management-design.md §5): every catalog item
2
+ -- gets a scope (all / optional / named), a builtin flag, a disabled flag, an org list (named) and
3
+ -- per-org switches. Replaces the catalog policy, grants and requests. Expand-only: `policy`,
4
+ -- `catalog_org_grants` and `catalog_requests` stay (nothing reads them after this release).
5
+ -- The backfill runs once per database (the migrator records the file); the UPDATEs below only read
6
+ -- the old columns, and the inserts are ON CONFLICT DO NOTHING.
7
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS scope text NOT NULL DEFAULT 'optional';
8
+ ALTER TABLE catalog_items DROP CONSTRAINT IF EXISTS catalog_items_scope_check;
9
+ ALTER TABLE catalog_items ADD CONSTRAINT catalog_items_scope_check
10
+ CHECK (scope IN ('all', 'optional', 'named'));
11
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS builtin boolean NOT NULL DEFAULT false;
12
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS disabled boolean NOT NULL DEFAULT false;
13
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS scope_version integer NOT NULL DEFAULT 0;
14
+
15
+ -- named scope: the orgs the item is offered to.
16
+ CREATE TABLE IF NOT EXISTS catalog_item_scope_orgs (
17
+ item_id uuid NOT NULL REFERENCES catalog_items(id) ON DELETE CASCADE,
18
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
19
+ PRIMARY KEY (item_id, org_id)
20
+ );
21
+
22
+ -- Per-org on / off switch of an item's components.
23
+ CREATE TABLE IF NOT EXISTS catalog_item_org_switches (
24
+ item_id uuid NOT NULL REFERENCES catalog_items(id) ON DELETE CASCADE,
25
+ org_id text NOT NULL REFERENCES orgs(id) ON DELETE CASCADE,
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 (item_id, org_id)
30
+ );
31
+
32
+ -- Backfill from policy / grants / installs.
33
+ UPDATE catalog_items SET disabled = true WHERE policy = 'disabled';
34
+ UPDATE catalog_items SET scope = 'named' WHERE policy = 'needs_approval';
35
+
36
+ -- Required bootstrap plugins are builtin and offered to every org.
37
+ UPDATE catalog_items SET scope = 'all', builtin = true
38
+ WHERE id IN (SELECT catalog_item_id FROM extension_installs
39
+ WHERE required AND catalog_item_id IS NOT NULL);
40
+
41
+ -- named: granted orgs and orgs that already installed it.
42
+ INSERT INTO catalog_item_scope_orgs (item_id, org_id)
43
+ SELECT g.item_id, g.org_id FROM catalog_org_grants g
44
+ JOIN catalog_items i ON i.id = g.item_id AND i.scope = 'named'
45
+ ON CONFLICT DO NOTHING;
46
+ INSERT INTO catalog_item_scope_orgs (item_id, org_id)
47
+ SELECT DISTINCT p.item_id, p.org_id FROM plugin_installs p
48
+ JOIN catalog_items i ON i.id = p.item_id AND i.scope = 'named'
49
+ WHERE p.status = 'installed'
50
+ ON CONFLICT DO NOTHING;
51
+
52
+ -- An org that installed the item keeps it on (builtin / all items need no switch).
53
+ INSERT INTO catalog_item_org_switches (item_id, org_id, enabled)
54
+ SELECT DISTINCT p.item_id, p.org_id, true FROM plugin_installs p
55
+ JOIN catalog_items i ON i.id = p.item_id AND i.scope <> 'all'
56
+ WHERE p.status = 'installed'
57
+ ON CONFLICT DO NOTHING;
58
+
59
+ -- Requests are gone: pending ones are withdrawn ('cancelled', the status the old withdraw used).
60
+ UPDATE catalog_requests SET status = 'cancelled', note = 'superseded by scope', decided_at = now()
61
+ WHERE status = 'pending';
@@ -0,0 +1,6 @@
1
+ -- Plugin scope sync (spec 2026-11-05-plugin-component-management-design.md §5): the kernel installs
2
+ -- plugins in an org as no person (the worker job that converges orgs to a plugin's scope), so a
3
+ -- skill or skill version it creates has no creator. Relaxing NOT NULL is expand-only: rows written
4
+ -- before keep their creator, and dropping NOT NULL on a nullable column is a no-op.
5
+ ALTER TABLE skills ALTER COLUMN created_by DROP NOT NULL;
6
+ ALTER TABLE skill_versions ALTER COLUMN created_by DROP NOT NULL;
@@ -0,0 +1,52 @@
1
+ -- Requests under plugin scope (phase 1, spec 2026-11-05-plugin-component-management-design.md
2
+ -- §5.1). A request has a kind: `access` (an org admin asks the enterprise admin to add the org to a
3
+ -- `named` item shown to other orgs), `import` (an org admin asks for a marketplace entry that is not
4
+ -- in the catalog yet: no item, the entry instead) or `enable` (a member asks the org admin to switch
5
+ -- an `optional` item on). Expand-only: `stage`, `version`, `org_decided_*` stay (the new code still
6
+ -- writes `stage` so the old NOT NULL and CHECK hold, and reads none of them).
7
+
8
+ -- Whether orgs outside a `named` item's list see it (as requestable). Never makes it usable.
9
+ ALTER TABLE catalog_items ADD COLUMN IF NOT EXISTS shown_to_others boolean NOT NULL DEFAULT true;
10
+
11
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS kind text NOT NULL DEFAULT 'access';
12
+ ALTER TABLE catalog_requests DROP CONSTRAINT IF EXISTS catalog_requests_kind_check;
13
+ ALTER TABLE catalog_requests ADD CONSTRAINT catalog_requests_kind_check
14
+ CHECK (kind IN ('access', 'import', 'enable'));
15
+ -- An `import` request names a marketplace entry; its item is written when the import's confirm
16
+ -- commits.
17
+ ALTER TABLE catalog_requests ALTER COLUMN item_id DROP NOT NULL;
18
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS marketplace_id text
19
+ REFERENCES marketplaces(id) ON DELETE SET NULL;
20
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS entry_name text;
21
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS entry_version text;
22
+ ALTER TABLE catalog_requests DROP CONSTRAINT IF EXISTS catalog_requests_target_check;
23
+ ALTER TABLE catalog_requests ADD CONSTRAINT catalog_requests_target_check
24
+ CHECK (kind = 'import' AND entry_name IS NOT NULL OR kind <> 'import' AND item_id IS NOT NULL);
25
+ -- The optional reason of a rejection, shown to the requester.
26
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS reason text;
27
+ -- The prepared import of an approved `import` request (it resolves when that staging is confirmed;
28
+ -- a staging that expires leaves it pending).
29
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS staging_id uuid;
30
+ CREATE INDEX IF NOT EXISTS catalog_requests_staging_idx
31
+ ON catalog_requests (staging_id) WHERE staging_id IS NOT NULL;
32
+ -- The requester dismissed the decision notice from the inbox.
33
+ ALTER TABLE catalog_requests ADD COLUMN IF NOT EXISTS dismissed_at timestamptz;
34
+
35
+ -- One pending request per (org, kind, item or entry): replaces the old (org, item) index.
36
+ DROP INDEX IF EXISTS directory_requests_pending_uq;
37
+ CREATE UNIQUE INDEX IF NOT EXISTS catalog_requests_pending_item_uq
38
+ ON catalog_requests (org_id, kind, item_id)
39
+ WHERE status = 'pending' AND item_id IS NOT NULL;
40
+ CREATE UNIQUE INDEX IF NOT EXISTS catalog_requests_pending_entry_uq
41
+ ON catalog_requests (org_id, marketplace_id, entry_name)
42
+ WHERE status = 'pending' AND kind = 'import';
43
+ CREATE INDEX IF NOT EXISTS catalog_requests_kind_idx
44
+ ON catalog_requests (kind, status, created_at);
45
+ CREATE INDEX IF NOT EXISTS catalog_requests_requester_idx
46
+ ON catalog_requests (org_id, requested_by) WHERE status IN ('approved', 'rejected');
47
+
48
+ -- Rows written before kinds: a member's request (stage org) was an `enable` one; decided requests
49
+ -- from before are not shown to their requesters as new decisions.
50
+ UPDATE catalog_requests SET kind = 'enable' WHERE stage = 'org' AND kind = 'access';
51
+ UPDATE catalog_requests SET dismissed_at = now()
52
+ WHERE status <> 'pending' AND dismissed_at IS NULL;
@@ -0,0 +1,18 @@
1
+ -- Plugin scope follow-up to 0075 (spec 2026-11-05-plugin-component-management-design.md §6
2
+ -- "Migration of what exists"): 0075 put the orgs granted a `needs_approval` item on its `named`
3
+ -- list, where a listed org without a switch row wants the plugin on. A grant only allowed an
4
+ -- install; an org that never installed it did not have it on. Such orgs get an explicit switch
5
+ -- row `enabled = false`, so the plugin stays off there until an org admin switches it on.
6
+ -- Expand-only and idempotent: inserts only, ON CONFLICT DO NOTHING (a switch row an org admin or
7
+ -- 0075 wrote wins).
8
+ INSERT INTO catalog_item_org_switches (item_id, org_id, enabled)
9
+ SELECT s.item_id, s.org_id, false
10
+ FROM catalog_item_scope_orgs s
11
+ JOIN catalog_items i ON i.id = s.item_id AND i.policy = 'needs_approval'
12
+ JOIN catalog_org_grants g ON g.item_id = s.item_id AND g.org_id = s.org_id
13
+ WHERE NOT EXISTS (
14
+ SELECT 1 FROM plugin_installs p
15
+ WHERE p.item_id = s.item_id AND p.org_id = s.org_id
16
+ AND p.status IN ('installing', 'installed', 'upgrading')
17
+ )
18
+ ON CONFLICT DO NOTHING;
@@ -0,0 +1,19 @@
1
+ -- Plugin scope follow-up to 0075 (spec 2026-11-05-plugin-component-management-design.md §6
2
+ -- "Migration of what exists"): 0075 listed and switched on only the org installs with status
3
+ -- `installed`. An install that was `installing` or `upgrading` when 0075 ran got no switch row,
4
+ -- which for an `optional` item means off, and no place on a `named` item's org list; the worker's
5
+ -- start-time scope resync would then uninstall it. Such installs get what 0075 gave installed ones:
6
+ -- the org on the named list and a switch row `enabled = true` (builtin / `all` items need none).
7
+ -- Expand-only and idempotent: inserts only, ON CONFLICT DO NOTHING (a row an org admin, 0075 or
8
+ -- 0078 wrote wins).
9
+ INSERT INTO catalog_item_scope_orgs (item_id, org_id)
10
+ SELECT DISTINCT p.item_id, p.org_id FROM plugin_installs p
11
+ JOIN catalog_items i ON i.id = p.item_id AND i.scope = 'named'
12
+ WHERE p.status IN ('installing', 'upgrading')
13
+ ON CONFLICT DO NOTHING;
14
+
15
+ INSERT INTO catalog_item_org_switches (item_id, org_id, enabled)
16
+ SELECT DISTINCT p.item_id, p.org_id, true FROM plugin_installs p
17
+ JOIN catalog_items i ON i.id = p.item_id AND i.scope <> 'all'
18
+ WHERE p.status IN ('installing', 'upgrading')
19
+ ON CONFLICT DO NOTHING;
@@ -0,0 +1,18 @@
1
+ -- The deployment-level role "enterprise admin" becomes "super admin" (plugin and component
2
+ -- management spec §13.4b): accounts.is_enterprise_admin becomes is_super_admin, and the stored
3
+ -- deployment setting orgCreation "enterprise_admin" becomes "super_admin". Historical audit rows
4
+ -- are not rewritten. No compatibility layer (release candidate).
5
+
6
+ -- capybara:allow-destructive column rename; code is renamed in the same release (release candidate, no compatibility layer)
7
+ DO $$
8
+ BEGIN
9
+ IF EXISTS (SELECT 1 FROM information_schema.columns
10
+ WHERE table_schema = 'capybara' AND table_name = 'accounts'
11
+ AND column_name = 'is_enterprise_admin') THEN
12
+ ALTER TABLE accounts RENAME COLUMN is_enterprise_admin TO is_super_admin;
13
+ END IF;
14
+ END
15
+ $$;
16
+
17
+ UPDATE deployment_settings SET value = '"super_admin"'::jsonb
18
+ WHERE key = 'orgCreation' AND value = '"enterprise_admin"'::jsonb;